From ca9afe74d1308acc75df9b7c64cda187f258534a Mon Sep 17 00:00:00 2001 From: pmenon Date: Mon, 27 Jan 2020 08:45:40 -0500 Subject: [PATCH] Add files via upload --- scripts/gcs/Desktop/_notes/dwsync.xml | 1 + ...erialimagery_vertical_hamptoncourt_1_0.jpg | Bin 0 -> 406492 bytes scripts/gcs/Desktop/website/MTSSFINAL.zip | Bin 0 -> 138861 bytes scripts/gcs/Desktop/website/_notes/dwsync.xml | 1 + ...erialimagery_vertical_hamptoncourt_1_0.jpg | Bin 0 -> 406492 bytes scripts/gcs/Desktop/website/index.html | 189 + scripts/gcs/Desktop/website/indexold.html | 375 ++ scripts/gcs/Desktop/website/indexold.php | 3 + scripts/gcs/Desktop/website/main.css | 86 + scripts/gcs/Desktop/website/main.js | 1 + .../node_modules/cropperjs/CHANGELOG.md | 308 ++ .../website/node_modules/cropperjs/LICENSE | 21 + .../website/node_modules/cropperjs/README.md | 1060 +++++ .../node_modules/cropperjs/_notes/dwsync.xml | 1 + .../cropperjs/dist/_notes/dwsync.xml | 1 + .../cropperjs/dist/cropper.common.js | 3560 ++++++++++++++++ .../node_modules/cropperjs/dist/cropper.css | 304 ++ .../cropperjs/dist/cropper.esm.js | 3558 ++++++++++++++++ .../node_modules/cropperjs/dist/cropper.js | 3566 +++++++++++++++++ .../cropperjs/dist/cropper.min.css | 9 + .../cropperjs/dist/cropper.min.js | 10 + .../node_modules/cropperjs/package.json | 164 + .../cropperjs/src/_notes/dwsync.xml | 1 + .../cropperjs/src/css/_notes/dwsync.xml | 1 + .../cropperjs/src/css/cropper.css | 195 + .../cropperjs/src/css/cropper.scss | 286 ++ .../cropperjs/src/images/_notes/dwsync.xml | 1 + .../node_modules/cropperjs/src/images/bg.png | Bin 0 -> 168 bytes .../node_modules/cropperjs/src/index.css | 195 + .../node_modules/cropperjs/src/index.js | 3 + .../node_modules/cropperjs/src/index.scss | 1 + .../cropperjs/src/js/_notes/dwsync.xml | 1 + .../node_modules/cropperjs/src/js/change.js | 491 +++ .../cropperjs/src/js/constants.js | 68 + .../node_modules/cropperjs/src/js/cropper.js | 448 +++ .../node_modules/cropperjs/src/js/defaults.js | 100 + .../node_modules/cropperjs/src/js/events.js | 116 + .../node_modules/cropperjs/src/js/handlers.js | 229 ++ .../node_modules/cropperjs/src/js/methods.js | 834 ++++ .../node_modules/cropperjs/src/js/preview.js | 148 + .../node_modules/cropperjs/src/js/render.js | 496 +++ .../node_modules/cropperjs/src/js/template.js | 27 + .../cropperjs/src/js/utilities.js | 962 +++++ .../cropperjs/types/_notes/dwsync.xml | 1 + .../node_modules/cropperjs/types/index.d.ts | 164 + scripts/gcs/Desktop/website/package-lock.json | 11 + scripts/gcs/Desktop/website/upload.php | 8 + 47 files changed, 18005 insertions(+) create mode 100644 scripts/gcs/Desktop/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/getmapping_aerialimagery_vertical_hamptoncourt_1_0.jpg create mode 100644 scripts/gcs/Desktop/website/MTSSFINAL.zip create mode 100644 scripts/gcs/Desktop/website/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/getmapping_aerialimagery_vertical_hamptoncourt_1_0.jpg create mode 100644 scripts/gcs/Desktop/website/index.html create mode 100644 scripts/gcs/Desktop/website/indexold.html create mode 100644 scripts/gcs/Desktop/website/indexold.php create mode 100644 scripts/gcs/Desktop/website/main.css create mode 100644 scripts/gcs/Desktop/website/main.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/CHANGELOG.md create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/LICENSE create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/README.md create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/dist/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.common.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.css create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.esm.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.css create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/package.json create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.css create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.scss create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/images/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/images/bg.png create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.css create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.scss create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/change.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/constants.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/cropper.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/defaults.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/events.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/handlers.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/methods.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/preview.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/render.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/template.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/utilities.js create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/types/_notes/dwsync.xml create mode 100644 scripts/gcs/Desktop/website/node_modules/cropperjs/types/index.d.ts create mode 100644 scripts/gcs/Desktop/website/package-lock.json create mode 100644 scripts/gcs/Desktop/website/upload.php diff --git a/scripts/gcs/Desktop/_notes/dwsync.xml b/scripts/gcs/Desktop/_notes/dwsync.xml new file mode 100644 index 00000000..4b70e638 --- /dev/null +++ b/scripts/gcs/Desktop/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/getmapping_aerialimagery_vertical_hamptoncourt_1_0.jpg b/scripts/gcs/Desktop/getmapping_aerialimagery_vertical_hamptoncourt_1_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83e2da745388d71d3450bbe25f715b97d86de862 GIT binary patch literal 406492 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¨n5evs^005Gdu9EnhlSJn5R)4FeoXbf5=HSZ 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%0A0?xs4-oD20Z|u@1k_r4#c_qshUHWZ{v{um& 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�kqaZ3A})hCm1UiUDev~iJr}tOVWnk3L?WrnNTYYYv`P&NeeGO%VmiG?R(&>95u`W^uO(bYy?-s^ zAR2cb0x=q~D5f zgw88ecq8p{L@E(1WmA&IRkkLP-6F?7j2ul5t;a^_P|@1n*uu%PUz&jn&a+|<{JTA+Ak8SK62Ki(|i z-Mq<<{6)yoUN-(%AXq=^-yc=mEq95~g~TEI#3~jzi(}y{(NIH&RSgg3sc{ryithcp z$^XPnXKG$f6wI`)l3Wrz#k}h_&kY#SGPTeAn5lgF_!?cfyg>5KBOSR@5D3@TD0m^t z{>?f(d%mOd=4UXSLMvpYpX`O2$baPl`A{Od149Y=yQ55Z(Q-NVF3v0f`Fsidz7hAg zun)z#2uDGW*3h7{%68<)ve1*=F`81$@$8kiMd6lbh>Jhov`5IUmgKrRc*~BIcjd*tWSw zGaZ4u1WS)JTYh>f;uV1Mdr$7}Gb~f_al@d-Zev{Q2uE(;O^#$$2`!A?b#{bjECp5Z z3yUjd3HK--3ALX^;&c=f1G}|!cu2--DT#)=8UmAu2!pTL95xs~mC^~@z%I{NPuRlPGr;@=Y*Ox>oi+@a z=L^HPtT$$8Z0F@%d1)Pp&kU+2j?ZMh;Oy!7p=B!O=P^uPO>oZr$0 z7+Cec8{pE;{ye?hFN`$5>_R4Fs6SBjo5Rr=-g3|~ipa)E7oMA*#n(~4F*&Sms9U`E zMEk5LcEP`C#slfnqCF+9^@{)4cZVi#{WWVHAjOeG0MGMT=dZ#S@ltNS!MWQl+>Ee``TiwU`LC` zjzL*d69o!w$Rw9WlE?y;_6Y!N`E45Oe^@>)2Qb5#-#sKhx7to%3H*>$c!JAUxEH8? zPX$M}NNp@zY7sMA6e8?0;@Ae_fxB%LZ3^U?U}d=77;%@7ByS!v^r6o{UJ`f``g40! zC~s9ykp)D6OfNQ43#Y6UPgEUPIye)5Pp$!aM9WqHa4DNo%g3ax3YzHH@?$lhc?@eE z+A1-4{N!|ujH?Y)hr1=aJJ);&1ycC@E_h`+D1x|$s!Rk(roT+Aj1N-Kuv+dx%p^-` zZzROnK~0p4#8_~sbYPi}6(}p#9hb}}AQ(Es$m9RLqSlndKSHz?Wm+Y!axCJ~|s-Qn9RC)WM}9mt%??!V0Jw6ERbLxRBN8>QDpORU!_l9EfD|O4`ZZ z1GR&fr!)W0k6m!Z9p~<&qB!dSQh(a+COUUqN*OH8D)bUdEM!+Fm*XG{-3s|UP$#ih z*KHoQ$u1QACAavfoN>Ou|4kT_-jyuP{K;SAtzq!YR^ff2+N+nKHZ2ZXF8AfGQ&a7J zq2{9VxlE+}W1`$zG?~!2TVR4n@SiRJ-=+P&8(mL)*!}8umrCZkE3K7Ct(hexzH5Nq zBDv?BSJQ&Ss8i@~{X}Y^k7UG?yz@<7NsfK_nU8tj3^^UcIMHrR-}8xjmDG?0=(*%= z=w*ft!=63b#RXOz%2@yxPVr^mPH8&T;T;j>yh>tQ%^9@FYSyP1a}Ympv`x2G?Rt2{ zdsVkF8|VScR(9PUe;(9XW?f;hesVETikK0D+pJ;YpOLai;~KQKxBvV)&7E$ZEcYiEGWr)fC?$N7Z=s z*=?7QC0j)}%tqDXCT=QZxf7uRwhXj+b7ZDYOMQuuUD5~lp8iEcd947N|0YYpgROau zz^*cp?LnoKDmixd?EOPbRU6I6T z;dvQ?hN6e7RnL19{KQR1Y5sM*C}^hw^illbKngFMz(O+#s!BSf#g@;S3+h_UZcqVz z^Hsc}sg8ksYHVTfope9)!zzxj0fS++55^ENK{Xwbb1bxSp6)=0nJVBmua8zGn|aID zn%m^ZbY!LYic4#Ig7`s$;U7Azhx2fMS@T1C^6qJt2(H~A2w8>&P3s=a6=atMbt)Ms zR|>j|3wA=knmLJ$GC0OrQpO7;MN*7X$>g=9f9SP*nyftyGC$xiU*RPxOm8AuE>Z^8TxMcUaWL zum%_R{Of27_JLxE?;rm9=kF-WxrofX+z~dW%gX>r@gG6o4E2ZrjA?wGGJc&#d&TC8O{NLa=gslI1eLTOpeJ<%MA@ZVoalr*NizE|Tmtw_2f*iBP-lvAvhBTSU><%?goD)G^h(#+YhrJ*HfB=j-Wg01Fh ziL8f8!=@28?mq!4qB8!ww$gSwH*_kn;+`W@#r@j{AoNA}e*rHTIjXe4kw5tIHtj2r zZA5bkPYhJpSJ|Fs?!^j_%3`&fH)EG>n{e^#bIK|2XDMvwaFJHZDe-ay)}w|SD;H$c za*A!WpY^ITX-PY6?CCrr6XWEdvuB0GLS^XUL>G7xg$(zTh>+j{8Gsr7g?%}14T?9O z?0Bx)3#w~9DjK13aOWq^38~ezR~?-{$WCFMFw4``^zc+AY!wn*@f6E4}}vsS;{H{YXm6tJ(3Yz>P5IyAGer9gh|T? zeK3U;ctNUw+orY@V+6uY&U6@!a3J~raIlJ#h;|*9P2tulyrarR9<4(8=SaY+MoYFZ zo1VJpz0fEAu}#GS?>KJNhdLpmc)qxaJFq%#%pjz6Y@UEFT#WHT9kyOwnLO#zH=c+- z!oe-q2h*aZ0S;f%TBkH6FP4%Itx>Fx$8}y{=7BU*qIW4mt}?p=S&^!@jhbW zSR4G;@z&(vEo_%uUKa+kpZu5wERQbq55;PfrIy*}B68kBkhGO6XpnMGZOrv)#gRua zn%#B`g2|$i+?XR(MQHn2bOq8vnj`iu#4aW?n&P!*T0#}& zwQer=B`odoP>iC9zOdKM=8oJHE!FmDUfP(L$%bMHDvEfWNVwcgIVNVlL1&MBlv&n8 zllAtraW?2Kil~LnHRo}MoHOmkG+*78depzmIDKa&PMZ1N(QcQk#DT5b^6Yo2yuB8M z>VuwXM_F_0%~bno7}z>%eHc|Y02fyk8+@vlilT;Yas;_59|{HK>XZ=pTdnZ2p~3x- zJ2)Rwu6T5KsNQINBN+!mIsunOY+h2bs^Td$0i45Me(}zk`exM25}(>##D&|Y4lFiq z`|;%X*Yx4L(ls-TM6_EhJi5uJdO(RmY6Os=6v*yV+kT)#7R5F9?i8*Cs&^RJEqu%G z(=ld%zILMF*>GU((fG#dC8BW%xUW5N#B%035sDBz(&zmsA!o9~;-l@_pL*c{xp(N5 zHDZ1QP?>h`vLuF>V$Yq+{rlLil8@H#%rp@=i(36M9fE=6fyRYV)E=~sDFrTND*y^% zrHof;x_~$3Uoh4q`P4<13-T(Ya31e4X*i>ve{H3VOJ~*>;Z9xir0Y@`&!F-gW0PKL zrFLPgylX96HkTclQmYhw1Cp27Jc-q)K8U#}?snDp!BUXKB>Q4kJzxSjKr08+xDios zf;nmFUh<3sL3>5jyck&bKRe`9*bSJ0R=!!(H%0KWW^#>UBlqL=%5Z_ovUi~&2A4^U zPjqklPQqSQ;aU!CV~g_uDexOD-jih|%41AWdEwAA-TZnivL}B`(s^^Uy)Oo>-tU|4 zZAzIJAUa(_jrCC!nS*PK{zf^Ta!! z7HdpT4;+d_ChhdUjo=k>9~%^R<0#lnr*pX^AB39M7&#;jOEyzC{h7{UI5Elj2EAyr zzmPuN(pfFn0r|ev=W558m=W3LO-mb9F3c9`DCRnsWCm3gt7B30Qjo`3Ahw+U8k%%~ zsaN}~bwWj_RL2|7q!|s7I{UvqChL23QsvWLZ%N(U`?uKH)d>cr{VSz&E*I>5*LWD5 z5+NpPJ@9gZ(HQtqnR81f$-_ze?*%OjROK9393>r!BI7#cHLA%gkRRx!$4XY`< z@&sl*7VD^}96pl^>8z>1+Wk*k zbG_cy58mEO>wvAfiUfRMzcmn^@S1V}#Y8|>*hA0Z(SRQcf=VEZU!_-nBa+M8{se9m zUypeW2a4Cx)R3Ch$bCXA{YB*rJ^Ck{py(N@Jkx4hb#>2Cb@WGBOItD(M?@ZUu&Mu_ z87YgswqUJyDh>V*YLM$F9tO5#l{FPe_IY?jv!cUG*mxZ{{aw4(=&~p@q4$f$lN`!J zSLhU?i3&|}1-8EUv%F0MEV7pb;$`6E0C4^43435Gjiff z1^RH|jYa7BUqRrpI$H6Y2{=K+-N~@f2bluVFI8(srvN+0fz@qWAJ28?) zu&8orv`fH(Y@2VN@dLfgnx~c(e?>gzQOHKL}9RMyzTuYP_R$kJ(h!AqUmz(by<58 ze?39_sia-eAIaK}d4kD_fE!-0_*R)BZ$XEwUK5tDa*dqpX4g8V)b@ivlqH0ikF$3=3}~cXqZ+Uf0|ORoNsU{&T|I z00#lV2U!G_lX*OmPvI5Dqg3T;tf~i76S@CgqsjYmBiqvKFEe8c>lxDVj~P3Ba3wNE z88L*M^{n6gc_0bK7>GeF#Hy(RQ(%BvQH=_YP^I#{__)E`u zg6XU#XqS%tS7NyFj(wxq!Z?oxt^x{^2K}c?`L@e;q~L@lVGl#^mli~8CPe{VHi62n zeMbM*=s#2-7W5%AB%1XcqM_?k$BOrI|GXUkVP|4 z8*OPgqNl;plZge;>8y%1H?IIudqL^{*`_LT5ZXes;2(xU%)|A3bU9RY^<}H?TcUZL znQlKvcQ>97i6wC0ul^Gr6<$BEpsS1J)xUrVKjhx=zus{h=ezW)7} zpXQ6RPYEIXG{Vj?oGN##$*qVnoX^09CwkS+F3~pt!CZmKdb5HjDg!QCgU!; zv;YoDVAVqrA|gS=4Xu*XFF|nC7Cul(~>Qhg!J?XMNh}b z4vMH|YXX2>4FdA=`ncBG_Kh0@wervfUSJmrlgD8H=VfMdUMEWanD_VNeT863E$@LF^lq&2G;zI;y}@P>qJ-eapFEqt5pH8XDvX(#1B#tf zw?)YEHU@v#U)d0*o+^>K*D2wbW;U=@)NEXjhk++q75*NF4GU0S zx+2#9AwY_cMiF~ShidgPNvxa!MQb(HxcM$#&Rqb2#{%c*LHW|KBPzNQrVZ|Mf~!TX zPK|@%~UbKQ4l+3N*d@yanL{Wv;re-~PV^lc@s=dGX4GS7gKMCMV=>ZAdhm6O58zJFiBsRCA`*`w z^l&X!@yw582J@d5t`*=Vbbua}t#}42m>S>eVDZWlel=T9;T}OGve3FRMYRkw*JK?j z!=uMFf)Q^2aXl?=!{(1%qS{eU$MEFnx**_Ou^+@7&}N?2)~p+0){%?E(rlOGCeo{ zh*h9Oiec%HnMUn*UJ|c+)L7?oU@Rn1yg&mnor_^7k3k#DKv}PTAd-vqCaUIc;O5Fe zMbS&>4M}OiD-prStNW^apN3EyW^MrUILeg9j(yF|$UV$j)4yaVxaV%V+qX@*!kA|& zM~ne^Dv%}Jc6>L`Ne_9^40J(D)jUwCsGF%19$D`7R5b0Pv%pjR6P z_PVl9vG4DD(nXtC<}DJhXOz;P<&oIfJaLahI70t<(x@OAuBkLAJrbg`AS!!BB&&xX zlWe)0cw)o?k8J{kO&rd!*zL$FxOVZDGR})vopKRpfhdB?^5AJ7MjAD7=E?9nXar9~ ziikZFr`$f)d)zA-C>m`dF{I^g{$4Os5%Nz1f@lA=%ibHPS{8gn8wIk-m3z)&8Pyqplijy4*h#Ez!C) zO?=ag;w57l#ImDWQHexV?7E&VS3=f9Kg>JZ4y19@W|Z^s3t20Vk?4%j=N9}sz{SE8 zd#mFFw8hJ-_$Bjja26L-DjqK^WWK-2?Blh|QL?%&fq4bPP{xP_2@Mn%!hb&^(Cs}l z;PtPP_x0JxR4*gJ4~@X`;aH!Uqu@iAha!?THJc@j%}Fdg`ZX~9lcRbUhnPvOvl#-^ z^H{r~6|hEECnu3_EKeO58UK1x`ae5O8@QGL?DRISr=wXbYlLNu_v8ViaMZfxcAHgXwvlw1 z<@yrYip>OLMNS&Tr{h4^$Q(|!XU*rHj86b9y6ln1C&5>hHR*mm9KP zKFNC4vh!XoKinw}kG^w)a4cQ!kdpaKW=PUzCfk961S8y}EU#NTwDZ;(z?t5dTyBi(|rowuw1fn!TkLWzRq{NzG9 z7z7LXTk1NdkpsPS1|_&p9cnxpF58A3yk}OIzOFm|vjP0A7jxn_01e>f^EJXP^p*#0 zsyaZ?dp_R(k6*q$vwgjL4q^#LbL}uYV6|Q;4rO3w25`R+ueUfL4Ydr;UslWBK;trb zfA_3za#kqv$Bn@IL!p&k;T+}$MErD{E}&d@hD<5uuXQ2%D57U%4BC1m>mTTK z4$j}aHwaFB_D_X<+_Zo4e){nKnl-Gpx&#f3FyFcE1vhO>B-fg@vfaF#wz<_&8Cu2D6rH^4FlMa2Zti^rXk875js0N zzyk{#4t405Ve#G%?+mQZ><^5;>;NZzJn!6$KXNTmI800KiDKS7?(DqIDtxIh*_js} zzKum4aOx!agPT3?f2)ISXIa2`<6^@LMs<%zicp3rADgAZHOAI-DFi2oQpKu9U$b$( zNJ73xO8`p0PHHY7_&~Bb?&5ocJOV8r076H?iOBlK3YO}8rHZ6ae z&d5l0id{yzhwv)MgW`wW6WaPAy?QozdAaz`*k>T*fO<KBqr!kv8*Whrm*c+ggV z%Z{=vh4KzJ!Dx)H23vNK_)Bg%uJ6mX_y$MNTQPsN$uOo_lFp0SMV;Yfvf@%~e_YAm_a)H!%9 z+Kz(rZ=>z{w80m zyhphhDNU;k64WrqXvYnl+`cNu5ap?Q{I0*LJ8SZuuGLESXl`f-ZEn}St(?sl*rB@h z4a_PnEuMDS#UEE9QR&#~o-l-H6}XBT6C`dKcjEj6w4%V^X#I%3fVk(#_dkgOMBSor z3_zXe_A>G+e@^+dXy#07zdFzQo!hsF| zHG_(eZm#d)@n5fAOE;j9+omX9)w8pkZ#z<|$d>aHxx;?VLqL6#c^PX zA!e)r9?-KG?oyI-withg#y{#@rK}6^%Vg0WJ$R%`?0;Pgi3ShZZg`o-!teKYb^Vhh zI0}}}%}>Zq@0G91dbIi@_L}cGA6&0b03(Md;#`RD5H5QKwqKlwKj+3Q8NpyNL+v!C z`85C%k-4ooo~e-<7b{5iI;r&#Wo-6EkfBRZXY)}VH=gIWtBqOf1dalE!7NC~NMhgY zp~40iew)lTpOO6To_VKHoOutKl=8b{{^=oLJVr64m@b_WFA-SCNPb8BRElG#xrbupo!QClucX^kENda zlTN2Px4zvW;!r1%S&hi^6)C+YxpL4%)`4MYh1W^eYy}&ZAQ;r@rF&UMPIL2LJncuzB|XOS<z|K`u1iFxW zO}}N9xXr#q(Me}d*TS=nc9sv+e5c7wn7Y)Dj6Fc!Uf|4r#8FhL>CAl-_BjP&!sL}+&zjoeeKry}r3H_1qum??xba`Jtn8Tu2Y5;La4D~IFA{J$tWhagdupi8%H z+qQk%wr$(CZTq%u+qP}n=G^zsW@a-HQ?;sXEi$Sy&-o6sg$CqNJ0p@@tAoZzFIAq# z)M_ceZ6bDXk6a7Fi>;U6?n{iAhg4hvLmlzF%SVok+m3e=Idw_5co1FX<9MW@J&RaC zkxKTjavk$oT<()C^{NMJmpni0xRSt0F{v9(cJavkQQ!>6VE>|~Gk^Ayx%eyjWW zHhUI2+~{{TVEZQ-uh1 z>uR#0n?q;)BSU9?Dxp zjbZm+n`ST;i^4m;KUY!4T-@39zkiFL!z3@m#Pj`nnttAB=l(lXS>h8{+gQP;u1sg0 zoaMf~Cav$Rw0YRFPhGvg6f_pq_2PcoQHDI9u(Kup;uYFI$oUP z;!5$VUVM(5tn&OPXQ38cIThLg@!(+NM)9bX+G0IOKr=b>sVcvhn1NYajQDd3 zf8H9+%7vJtd}CSzF4a&);7(7{c$slIY&gkXBdYZzV3ilI()Lm$vL2B|p8g zkQ44-KK;xL#iplu?4w>t%GJZ|n51I5Zx2N6%s)duM4Bv@aeZ#AF1 zjNnIp*S(3ho`YW#}LEafPDlrXNN6YiRtF&&qD1CH=pGVUwns}wFn7lB*Xcbp6 zU>^9W%KCYdDrWBhpp?bI3pgm6q$vLKj1$h#Tb)erHerZerLl@9P~-3yxx@k##jqTc z+;~8Y*~LjxP>+h9Zjv$|SILBGtoo+x2*ifz)Pl?E1y#leTd;Sp!M5wANp77=$K`vY80%|zb= z4>|J<=B+iEVS7CjnJZ-FugFq`JH19XcW+)@PZi-@+Y^d#ZxaRtMsW6%;Z;C{OE2hu zeD%YM?6;@+1<~9ZxFzc{*%clT&$x&Y`p}VKM)HgAyccZx?nn(dOk&sE6q(A4*ugjH zJxA$V-8}8SCnHP3UPcV%$q^6cdgr7Yr|vRywOUZsy6(Fa)xLGl*J7gV6PK8oc8r5`GYfa0$xwxF{4MWc zp%HZj7LV+!Mg($aIivGfDmU^9*HC-iYBxgJOZYJ{ZWeIfe={-?q#698$l|wrHts=Q*?V2c~nx|;{ zsG$99k6uQLMa3oSONP~rR&^+5(9W9%T4%^9i+{&m&<3WOVtmV$|9q=I?W}zr=kQZI zV=PrS$>vvV)Ft}K%{~+t6R{lr6Rd@d>?4f=NDVsu9^$vW-dAsi-hXVYBnsE1wO|0* z`}GK6PJT(4B!I6wn>gu%j>7y-L3I&ps{aI}}*FH&Rkp~<%9q^*yDu1oiH@j1%1tt7^Bdc8)46O z45!i>!mk&P?F>WxTqsvaSM1tlSUPW5>dM}00cSG}R~7h>wjKQ_e1gop9(KwJ>9kvgT z_2hWcAT!Q=Y=dNrqAXWIm7?4WTdHc=$TVIe;OmG*LH&#36IQhk(N@xd57#`xC1 ziAB63o3LFklvC`E2$^~^O(s;|hG}-gjKtS)Ib%G}Omci{4MEG;(%cmm<$Z72;ALYw zNoS6pY?}*(A9HgP<+jI9{ng=yjn#a)=!?MC{JYeCa6V1B0}%c_+9yN7?o$GzEzUG6 zykcQO!&|1vGqp^eO2c@la{m&=`qAzq{M4m0Kw|cK|8WJXhBy|8=bpYS3a=rpt?5e# zCkSNXFf%iX4&Ec%jddZ=AH@mL{)$)L2y5D8idP<_s{{WvA$>d4Bgb6}!?KKp1I9;j zL9z6>W%JJDU3#FkbnB;n4!FU43!I9kZbNiPThykX2HEi3@6Lk4YLiLOa@SGAcY!zM z>1RNor>}C4lkI@xjhyc~YxW{`-7VJMDjdM058z}bm}c$_IsaSr@4_qz^f)P`)rTGp zne_4DV6Vs)6YQ>|fi51hBEAio6v3hBm%P+6qWR66jGQ{S>QR;3# zw0kfwFrl0|#Clh%YmRR}m2Hbc_0H%*qxHn?vdJuahx57wO)rbM$|JWu6c?eb4Dcuo4xiZHs`lxXxr=qa5${=>TrOXny2&5EYzQrQC!l}0}?rUMA>$c zguG;&aRnJ}91BGFU_)IL8VvnfTv4kaKPWvx9uRcc5m?Wpxa$>F9NOP zW2h_yDOl}udSjY!#JnWNliMghtk1W_qO7s5S4$`~YSAEn|Ei-4%EmqOQ!jLYM_z8@ zwQaQQ0yDdT_`iEGK({Kvw=QDXmd3Q@aJA+5qPXzMet(sPaFke9Huu+yhw|QAs?3)f z|NZQcXymF*P3>TNdsD5Jm?sNf^bvw)7x*e!g9WUwV(qrL4(x%dbr7XTA3Lst^PFYBUHKuguKf* zy~tgI|1{NB*V)Z9K96TG7$hEdg}v73Ss48ne+L(o0Ed!Urpo~7w)f9jm9CxTMVc%( zY?I<|Nr+WNzeMqj_2hSWFTz+S+!FY)UKlvf^515meRI4 zM~C8cduJ&PC@^!}3<@smYdepgU#8vBR@<>)C>MJ-UkoqG#CSgb2c`25+DF|oArF27X(73MO}1T|&}}x#jHdX--sdaG<(&~Fp zB7vZVDY~Fs_Bc7!an&2}G>i9b$$dmvAJd~3hM}OssNBxf8qo^OMp$^4{nrVS=Y0RO zaz6jnG-qGUo|E;)JUDmw3-=YMxl+a!nFpNjd(M$*4BStCAaji^pRi-549X;)=fR4Z z$$C+dT^+Nf>eQ*)7_6cs*oXSLVXudiHC|U{aD9-5%oGN)y&<_XYqbR>iIh_?8n&jP zDRzC-H}k+K8!h2Z&WXor+>*Ie(v#^CM(ta!iuPBR0<*_utCtTIgjYn=*MfWRJJZ?w zzhQ*#>C$(Zms1wM`C|V9aJYT7{XL@wYh18j1?OKY+xtFOJs_> zkO}W~JPBY6S%_lF>^goPXyaOHuSF||lPmRC~cj2j#I6BY_5^yK-Q6kAR^6E%|3lbx-G0e7p7&$i>4~stu?d!6m~|qiT6dQRtSX?*kn+3tC87uE+V0;Pf4H7ShUm zzKEj@ShKdY3od69Ph{|t2X<{+4Mkui-a@pe&J|c5nsaF}*tss};&(;9{9(*<8?DE{ z8F_43Q?x~G2rIUdXzAt>RhA}aHYny)N_fQo zlizlfO|ZZv4Igpg0!;0yoApX)y?DJ<9hB;8ZZ+?NQJcqPDxjV|L3ODt6RTW}B8 zr4z6>jcLPO06bNouKW?a_G|`5CRI>&%go2j+w&ErUiqgv_P;`%9zU8V-NnOmFIDtq zYmmXAvA^yl!k0%ORHjXeaUbsh`{4pzP;qO1EB8)Aa^VnNEEY3@X$r4J2DM|f?u-5> zG5g;@Axz`j2ErcAoqv|J5CN&q;Uh;(jOsRu;BD5vHF*0IW=9y z>^U{pwCfZy^5{eonvl!mIyzXs;l>;s>CZcuj68gCtY=6yVxph2kAdL=%`*z^*0b&= z@~oAB8acoh;aPxmj~AuWXs$3^6|yCxL6R5bIvB`UJFATsbihaJxbe`|ZVa8owQGiz zllDHTFlHIj1uG;*o45SIS>Uw;xfmk}(-m~gvlN-LN&#G#89m(B(JFS+r!m*w zJs>pZtKKkE0lbvrEarCFOp@?iRZVV}9koI9g+&gcEnACNF5}jgQ!=-Z_*Di_zZ0t> zu^uB-#mhEYWge2ROJt16#);^ zkV(TQ1GfO2f>eK(Sq_`YQWgRiNbo1$7K4-qVsDTvHUU<+6(#Bu8MaT|j?{>e@OQ?9 z9T_Jeq4q4r$nMQ0k8&!}R@?WU)4M%y0=jJf-Kl(u4ah58E)8nA_|fHvF3B$;u{nb2 z{xzFCsb;CrK)zo!0;nwH7SF~nF2COsrO!nPMXeq>II>zPFGt)5CcN^}sl^?xRnDPiqA-b-9=p#Uz+WWoeykp zr<1f8GM^JRm&5R)r*x~E-YxDGUe8Shh{}X9eHG8o;`;ienpk%ubGn|Zi~-OFB3R(cnJZaM~#1xj9cN5n|?;tnboi&+Fl2BXW8$hIhGEzpoVWb~T4+rn+)PrG$e} z5&3ZCwqU0AQBnhwJK?WvgP-&xB-eT@*!VMw<1C}3*@KL)&pV3G*gyK|cX`C}k|Vs> z5vm74G9p#P4VCOuEHn=?uSJ5O$}u^aX{(Te&N#S4z? zvE@i#_H!W}Kss%H+X!6NNujOE6*~KwqC(`Ii@HcClrWl2Bw>k&tbGRtEYXOgLE&dK!%kRB-n>L`n)OOmAp(`9(?GAEBm>;Vurj!=rphACfNOY|zwxwlO0nJ8<2%D#P~ zP+^z9M*s%r){D7&+ST)lDxciMxx2P>1rukx5TFEiuOng2^IP69CC&1utEU4XbOPVz z$DrX6NaNGlv}hkxt8v+q-f5o$s(#_C`-B6kYL+jkdsgEDOFkk%iQ}EhC2qMKhF0nd zH;#jx95)bSE<_inX%JXM%oH45}@rPuI|O1seh0h(4wQZV`4#UKR0c0R4))^;a?<+ymN&E z8>|IQF%3TINoPl~3fcz{-FcQir8(r#!J6G+f5;(`5D301ms9-+r>o~U`j@{!d)z=i zAPB41K;h4}4e*Wv$#PO|T?Qlx56+abiQt%3&JY`{IH68oFHk8u$_ZN|+o*A#*4fZ^ zgVcU>ZD=9%FuG* zqkic95u#UT_U9d#=t4byX9lL`!vIC!a9C!MQ0Xuz;$^LhwD3yN&q;1AKY$54hAIAp z(H)E+k9V9Ko0K(=G*amo8d6VFov&Ran_MceW7Jsh%Pfd{5eB!lW?zpEpT&n{Ads(8b&372pL0St#$Vi@vXc* z%}9|@_bj+;fOZ2>XUl}8ufW{|vQ&+5AH%Ue*V@v4Qrgo~&9tA)sQ=QtI@IPUDz6Lg zf+MLBrzu595hC*anHXBeDk2wD&iT1x>At=sV*m45*ccQt75%httBxZ=&6Gsh zYf4qw;iL|H1Y$Ze&vR79uLv}Jq$p$1sRtKJhDX!jgMK8&>d1XxXH#5g=-JY(}Vl%Pm5NVn$*qK34G{ z{dIMO059PFHn5_2hlDO2HXtvqXYRzwc+uU^)QZD(HZ!k>o~sbFwiQY*D#GHdqk5TA zVb2(w%t{YLF{}SLAvudOf7S@S3Wz7#j|adZ=#WSJ>Pm~pDf6w`eT8Y(&LQ=pStNxjAy7@F8MGxH10V$tjl zyU4A)-iXKmhL^Ue$vd`lTn9cc2mz3)6s%UU4P>z`k09#r%JhQmhVpLyk9Q$6sS^fp zyt7|F(3fo%z2Nq4q6r9tz(jp*hW$S2e8=nO0qPUVH>_X&`L_Pz&NJ0^B01CP)9Z=e z!M@&e#4%nl4`_#ST?s=G(yc%F;8>RJG{H6_MAbc4Y@AfbW(hRmso=%FC8sgt5am*E zR@0VJwT7aF6k;*eacw$^x2x3tG!tJ(!X$@kB64b+lyF?(>bf~QlD9#)d3Q#`sRdxF zTZ-=eX8YFH?iEFhta?r&yWzy=C=(Nqpv+q^xZ_QHy+Mm4VeE12PL&jmT+xZNiolt_7$FibU`?Jpn?HLY}AUKmuejMV8!xK#85|;)jeO>PH?Y$ysVD5 z3eynjurXW79TV6?*`6e`?piJtkGc#{tW#nO_bSBM`E?xZ5zXU#$&|HnNN@sHb zI$y?L&tFu+U11u6fvYGQ<`k~Rm8;CR6w62N6CPAMEiB_A-udpab9{mce@Tt#`o)`>Ot=_s@ zA7%A+6N3&x3yAg;#1aBI$Y`oa_FMYo5Hi0ntu&U&9~%L}Cs>KtY63}S5@o)i_Ov2j z+Rqf*LFXaQJf4`Xw2D?Ap{>g?2$aAnXML1UJov^NJ)}T77nH^?C?}kNuh*in_hH=O zid*tJkut`Be)3G0FST82r+gq>A9Fd^7X7N zEF^{wkgMivJyw+9Lcv@)L4B!nXoJB=d_)o&&Txl^u{e`c)z$$@1g01JUKLn4=zhqB zg8*kDLPrjGu74dRhH8d`O9W-IPSXruMn643Ems-Vn$E$B$ai-7;k`z^c5lQ^{GC)4 zF1;{9B7b}YO>FHMmEk+=ZpCziVmca0dUWQ^` zzM*0*iq-0FH!fy`iRtu918y|)dxt=tH#ihMzmBL2=-#@%WX}^ zbkyE5GXKLWmZMrKuQrqIwU`A_Agu3UJ8y$K7{)ANH8*aCyN`8z>g-OHye23O#*?J~RPs5u?;WJq| zKxjs1ViM6GtYAi6e31)*Or1OV2VMRXfbuxj-3Xc4(4FZV&lr9B{mTt36pw*&s4I^H+w?$T+so18f!y(t3g zPH|&@Dlf9Hi}f(StS)aGL98A3d8q;?plf&5FcYpLtwOH9>0qki-8xS%xzs|N;x)KA ze~1RE-rgLS1OM}f>%zPvsqD0t`zuy?UBcfr$bgNK`{K{2tYeOf+AsjNP8%KAqQT0v z?Ru8oWXr1`;D4;*G7Zmlc69)N@=QPgc`0BJ6aa{Sdyh~P8sPs}jQ{_vVkajRbr^tW z;Ut~loIc!FKoo!!H4Uc&4g}xX+Bs!Q>T#M8FhPi!Ngzm0(+tcp4UZ%ngD8wiQb>sP z%-^0wc<-!WNzkqBkB>_s8;S3qYXEO>Vo7iO`IEo^m&$dUT*>^w_E~3@oPUmknmjYE zF{_PqZtB8_2+L3_H0d=kjGvL&O2e^3eG=6G2N1$*(=m~FLg*?UXoWsp z5VBVIzG1QljL1GZLa`2z3+j#b0vEg{r*7ik%xc|R74yNE6BQEIDk3^ z5wg*t#em84koc((U4u6v0?UVW)RxE~l2!48e-BMkl=k>T)J~Pdds4%(u`q-h3QS9#y-#;T%WWm&EAQvw{>46%x4hVxvv@ zGiopoyP|=R9ju1rzJj@#&G6f7a|xO=uysa=Q)A3mfK2o#cv#UbRQN#>2 zt1mWG*qTTh%yy2ACQ)@9YXu?56nEM%rAzH&+6$yLBiG5{$PQ@YGw)N5&rcdN@;ot> zeHRAW2JPdZAIEXx|E{$Zxyke*rW7noICDE3fZd{EB;Ix)X$D>so8wQ#7I zu=A=?x4n@|?yacOF*Oq!6Ti@@Ge&-$X(tQT<$8N6^dd@_1lFP4!>>2Fz3v(?@7Z9M zU)}!TY%aaJq~4eTnU>)(N^#uWx1?Gf|{Q9Mi4Ito@&Wv<7I{ki==*y4N zv8ESpr@(BB-<1vs_3r)@fYaUzRKCtxT5YUqUl~$Ngh>=iS*Wd>Ghgum zl8DUog1qkFBws<6=(rOb+Qne9ZNCS3V^zC;8vA+c^eDBJ@e;%GS$pY!n8NMr-l->(RyeP4!$Ea}a>g7szd;Q#1Bqs20j^Bf7*zNj}(;L&;;inkBtJUk7nk$Cv~ zU)e?ESn!7c1pr_``hOwf8UDY^uI2w!-T#XX-|eM`)0)We)ypT6m84^OWzfbk?m)06 zrH|AY)emlO9eWtY!VK%oa4*bu&oc>#j+aB3Z0h zPLd)y34gOIg-5b^=*TiLvaMHfv~BrXd6O3JuCZEZ>ErRvLrrH(ZZY3G6?r3~t0z0t z;nBWT%G9e2gyxW3xar{Qph0d$U8zSKGoq1#>e4_fNxCbA0^pVo+t@S#HeQ5bd|1>o zm3Z1YI?ixwCXymy%x#fV4P0QCs)|Qn&BLYZ(e-n7|B+_3z1%$di-Iuudeb~ZF48+Q zNo1h|Gui08CNZ<a^)4&Tl{@1biPG<;M(b#`$8WsO~a1hXXlS7 z;wi_`?)vvUeu+wR4qTX_@spp;aUdCEOG7LMecmY zEGTUEeH%_ITFYVq#bptFh4cbQrJUmZ-x7=b>dbvaslZP`aYMG6$12O^^EaYO?g;() zGDXzC(4j3m#fK#5xGfEYKkumk9YTzEmr@B2clr591mGIW_@~5IP=P*4y(-qM8QWFq z+K}tq$U@G{iF6~=9#p~P@|sU?9=?nU$Do5OD0Qy;I$YVt(1Ep8@>#@fc&9FTcYqZM zHN!bt)7Yv%t5>OhqnO+HW`f5yLZ?mYyF`VTNEHZ1x=+42uX^??Ld-DY+;c`SS%}uL zYDl2zRZv(8>qFM|?`HCV_q9@Ef3*SCT1O6_T2f-0yDAZr1xKhEmy?q|G&oUIh~v-B zm6Syat{lcCg+vw5I+*tu4_a`0IInA3&>UqFsR%){ijFJ=&Q^{S(%B-T=+3|) z!!90Sr&9_{&<)E_U7l6Vy(LH)&%L#E6(Rr%fwu`MVX4Zu1*3<(=qr!P2YPb9d|M5|Ie6XMzptE2Uk`6wXKCxz(Ofvs^&-KdLqLf>LK&=pp5k^G zgaTJ$bb-HSTViGPaIS9fU*Y7u_+DP(y0LVVJqS6Ly~rgSv9yIhwPwA<=v(54L@Y*V zZAm64$I)DMi`P1ueY(8r{5qOj!Q%yaS(J=tUiSN;Lx!fkeD8==?Nxdvx4QiBaCpMH zb|)StrY~)91t!tD1#3N%9j;AraJzVX!8lX08vX3WIYk)6R#n_n6nZKeAXdvK)pR{3 z)Q&5y4(Kmlr61kA>@Ls5866A&ODcUeTb+NM6GKS#X(c)->l?kAp0{=F$aO8_)fjZa zY{$(yxw*T)-P{%XN)1rfBOse-CfwYw{R%Y3O&3Rp`QlaPq0&AXW_M3ETB+P} zbo-NroPXsER^#VYci&Mkt@j5QH@w2XFlwERM;F12_SS%_h_t~axom9iDy(ZTLI_YW z0Spm^^yA>#;o?yfC_1w(&A54OdUbC8f-(d(8t7Gh_`2|mhfzt_D57e{TFtxYN2z~8 z=xBr7i&q$#*AZe#AVCZ_INXbZW||$>6NU*&00@|byw#gpSh>6*r9Jv6>j^zP_$0?Id$$Y zH|oNZ=U-0JU~^@>SOXF7dHAO6v($?9KW?9PFCHeLcQ5{W&wm2uJyt#uY5kZa>&R#P z1IM~CFMz^%@jdDG#%Jz}qp1Jzt$$v=E`J{Qq;%KT?4qxK9(;7CqwEIN^@88@fJ61D z@6;*ewYYnirh{#K0=px7Y6P<}y5Y;j0cUR~02+m0LMgYuv2=YL%sbe~1JSv(Ir z(!I++ivZqRwU&v#b6}I0wYD7-Rb@LfRfXU(m(eFFi{F`qX0Z=2AVmoe5v3lPhdaX} z4=4N8`E@mS(t{i<-@wV%SW#1B3;3ILZ{z3o6X=3M6t{Wq+I4SngT*FtLQEvEDfrXL zXOxi#Ac)7mKn4n)I3={wMcb*Urteqg7*{9pKInsUArXCysOLmqD9#+7;#RgjbZLSCHEq15B(OvdQ6uMZPtcWB{qmTxfOoxyT~%A z0QrMCNQ?$2SV?l;E-&U_Ek7m@lEqNxE~uS!j{#$c<1PW`MFQlbLYs1^9gbLRG|r2% z8QKLr1!edwPp2wzE4oBF5#EG?F6lwI<{8opYYMif&)b1g3CHivCM|+$4r74#6A1{v zaG`i-PVrGOVB3{`G#3W}(c4I++VnRd65SZ?!MCEwAD!G^{r*y_-j(=(Uz9E+7PBDt zoBCSv(gf=yORiM8w(q&142in`KB7BQ_5x`Qc5+)Qk(U!MWNI!R z38C)wLf^Phag4SJYc8Ne8DqLl(7@SV4efyzkZ?);)xqCTo;B2Pz4MlUeM7uHTh6K# zfs75U5(IrqF@8lIf{e2ihGbd+jEt~4bKY@59WK)7Ef*M36Qt;nTxA5IJ22XwoCr;^ zVoi$KV7SN+O1#`gt)o&V#|)C)+goji=kH34s8dKJzMv~Wzk`PZW6^r7X-8vK&x~*< zn*DS5;wKPYU|GAlEBUj_4myywdy-+ynd{M#yZn{7&^B&5{{=(ugjHd8&4VGfO_-X# z+L?zYIp3staHF$jCcNBv0FdQEf=KZD{%N^kB{j8nLiFWNQH}nbX_II{gg|s=earod?TDg8@J?EK!hYkY5^&HFUyI;@nZsZQQ~eewa4 zvlC!+TnKs8_@I6Jr305HlHwwOV9WMEl3kie35XFNFe!fx#5oH8TiU8_%)&qjU?V?a z&=;6Ir`0^4RGL$oJG&5MX16H-kKE@vj6TEg0Z%6h7&0)uDx^q|*~dQnFyL9`vhB)7>n)KxlVZy z>yg9Pk*eo47m{B_$0hnbuSITs(%OrqvVH`u z&N+<`3sRswg*5A<=8aNu8%=M-#iGlc(D+9Vmf?^S*Fq=lH=@e;*^GgVWo}l^BV|G6s7a>7zutrQq_@W`94_vwk8K?- z-+vH_xA4t_`mt{R%2Z~b$HR7dLbsn;2Jw5Z`G}QXO~D!|H0k)@X46xFClvi%`JOCF z=|6XO@;X(Vi9GfzVp2d8Qc5Ocdt^m>#ocA~?)(=H2*(@xj*@>`~n4=a} z@8~tH8?5YxJp!xH7uH0Ws`4i8!aI#88f-=BCcrSv!ftkcgs2~I*C&x{=l)00A}5P) z6De_Uo{i5ET{6>8eWwjpUg!U!+z`Vf%K)zYxPkMT*0+*HL)Mv_t(a(nc|mAYhG^q8 zu*V>+2nlSu&4j}=VT%GO$n9GU{EDqfrG_Wbh!!H##F~Pk*?k0`$RCYvDToI<-zJWt z<=ZPDHZL^3DM>%G6^_;sslT@xx;gL5Z_=Tgzs|QUV#7Lvb1d%ekKC%KKUaXHUHm|X zzSBHX1_nP+_~023H17Z1g&1o!Sb#Bb)0UAk0MnP_@nUDitFkFs~cl)Bko~)Lr+8H>HpsJ5QN}-wrL#t}x7*3?|))lTADLr#4y>qylB9(%-gw%VF5hrcC; z%+MnMq3}doi=wov*;q|#6zR%%0uWJzcx8<3#lIlTl*R&0d$eviW`gc$hPW;4N)}1g zd=X^jg{E12tmiCRCE|lG z>%SLGfNA`#{nfN8%Tk<{#P$Bo7wU0O?Rip5PhabdU%lq12bFbV`96c@I)Iu{4yEG4 zu6-txqi3>wLREQGjb#}hG*BMzkDbrWgF?i5+V8)R0{2DQal-@KB*X(*J>-8V9Lh%} z|0MxYya&Yz_Ni4XGqhL7+v;kS&xArLmvn03vp%duA&CsbU$HUXKw_7} zF;k5a@o;whx_jF*^614AWNnC>|RP#~fofue@8Fkqak(@+vJKMj;MaRg6t6(jhg zO3P3*k!}Gj@;pT9c`}&K+lI8qwqc!9+M`{mlUgx1zN!l3j0zA7*yy~~o4q>I8ZKR< z6dx3kX=ww9P))SzN((@krRwsBXlrt~=xa&ta-uL{BE17`%GWc+#ffpq4(>_wOQNCa z!ewAZpTEejhY{I?OT{BKfLjFZD1FTQ0D~^78fAF6Z-{1Cd!9l@eX<&NG_7U=hC%!Q zc#ueHzGyV)2bFO6QaWhk)=WWVasM^zp6=@hCjpn3R3N{&s<&XPBiToHzIdZV zsy2+Htc$HwA~nu1J0{eEPpNU`z)-r1A2QWwJhwN{IpH>-Q+JUW@j^-g;hZis!3LQh zF>wGc<+m|po^&qXHd4BP-OSF##KMIYGg(80W<`P(v!7NaGnF}C4h+(f4tTZtf#-dF zj7;U{@y{Y#6uE@+NxgEuftvHsCekR)&UN)^_n-S;;wMd;ZizJCPm8;jZO_K$r`gu) zW9Z4IKX|1gpm>hbcoLD~lAi?$gV#+1!&9~E8lEjna^nW28dpzHWvZ<1FL6|%hShn& zZ}T?}@(;TFA^fsmL*nqVakz$gzV#hX!yATLPYb#pIWdSyc6>ka39~1s_+_Bx7%i{h z*g%111^UFT2y7E%3RpD;7y*=P#@4hSq(j&M?w7ZpTI&kaP(#WZxYX4T!0I^s0I$~eu4)m`TKQSkdNsV#7`dOaao>#BU9K`XApVSpGl?jfL7e4)eg9))R%PE^Z%Ebtk)_mUY=QbknP zcu}ZeExQ}@CJ}d-Sh4qK{(S7-a@lLO{H1kO2M^zGu$?BP-T4!-OyH}A|D#+LUND<@ z%k}zX$Jui(r;eNE0XhLURqCrra{4ZlNXB>hIl(u0tO?Z`0N2_@vsoB&Mj3Ra!xkLs zQaiExu+MOvdKh*5PrB*R#6$79{7`vi{m!@Oc8)j#q0T!s)9643p)-;5O#2B*nZm{>jEjj~5GmJr6Tp?6(!4T7UpuJ|&!4(I-2KlkEYWX%~lr%X7% zuw#c-V$iT>;034J3*StqAw#=3hPPK#wfVz#X}JEHZAgTacmw+n0F8OVT*bz`l9CK2 zeGwAzX1yiNJrR?P9KsJwenyoU*mjxJ{pN)RCx ztP1_Hf;P}r>$z&7fo>~J3Od(Wf9U3B?!rJeU zs;E4m&kIT6HOV5jf5+5Jgfo%2VK~Llx>?9sm&Q$3#H??SPrKbuZ4#fbhu5XC7W(iY z&! zPPy`0Vf12e^N%|DIUv|P(Z>5gm+a#{SIbD*Qsemg`dm*Mj30{ifOeoW8u3ksR$`tJ zjY2kSfl&fta~U`S+Ib*yuN-qC(XZV#(tUCG4rQGeTn6&i1n4@&?5qJW@Bk0R{VK~W z$=iNE(vxD6%dj^UXeMy5{K5$7RaKV(b3VW~+|1W-+Xmi1%Cpd#dc$CUc@02Vstd(# zh~D^M5h<{J%tF)^>oUa#QdH>jwGrqZ_@e59{GiUihM+G8gq*2}yLRkY)}!n*EFJs= zug>hQvXpX4gTd_p4$jR_9ra;QlW&J_+s=>0d+G5?)^B6a*OQ$ce$(pT7GEqLbNbVj zK$blKAV5LsA;9x@sB%PFHca^IT(i7K4@)tt++n?}VSWTs%|I$T+CWp79IC`lH3l?I zwoPjZLUR`pAZ2Ojq~ycY3n0hyn=}lj6oM6;@X3Y>hgW4G9!Cd=PWmnq{tY zG=)o$p{!PHZ^6{lc`(MA@v4*0mj^9J3zl*^EoiVRlb2lBh`o~)UGvRGt+oy1&W)t? zia(IbUI(gC3A$x*6_bukIN>ws#2-BPYK8?ok~$3xLZsv+iAm=v*&Hd^!Bhev zg<cNeX9zkH3{ySF2mmqb@<3uo0CNl&x?_>&UHU$~wjD zWX_72{CVk!U&#)W+Ov|y*2*o_`CEdyVa$tH>K4Mpf8^|(5fV}bEoCy9U{_b1@d0Fo zS<2>N)ngW5vfi_0Jp4e*e0ec2;jO47aJu7 zTo_wMton6Sq)X~pX;6A%(0T8n{&Ixatq6uR8tN}Y@7h+^2a?MQw2thuv@iFLxJa>l z12+8(qj}P=K{NZw9L}DTIZG2$kz*8FL;c}CJZeFotLWUU9-5Zj!uu^-P z5nv3iq_%|A4HyX~ZW4yo(vA=MixNt9mUgUOWvEZICv`stBpK_tOkk6gM>0_0g?ZBo z8b4Zvg4u>HgTh!x^4&t}lV2Uds>y^Y1%%F{O2$m!A1l*HfQHnYt9~qyN_jqXrqr03 z(&Zf)zS1n37-Dh6g<&DA$x*Lxe_R{QbmBHb(o6Becug5O-LNSM2LYl0vbYl-jWX#G&9BK;hj+Ie&MAoKuw_u@GkO zFopFQY~qmwAiWWhbbVm$LW*QP=S}Wk1HExZf3^~z@Z*zOA^`n= zQFe~qnMK>WjcrwIS8S_d+qUgW#kOtRwr$&fV>>5%pZoE)+uEH!V$C(j=udyVLBlNm z-pnWmbb>54H#Zp?s_b5o{V=W-%6EEkB(G1tPMSHmr6bCxeC?LlcY{Lr!gtS~?|}h5 z3CL>JyLQm28A|QtAQPj-I@M>$42ci7=UmgqE%;7tTOI>2 z?~r_E{YHuaps|@&kmP=CF@C&-!C{0^ggR&coo#apm39u5BD`iLx!n0^!gV$9#G~?P zmrvX$UwAQ89m_~6?x*Te7c^_k8X;0bIhiQbQ>otl;&>N?REjLq`7bw|hXq9}WMM`BrB$3m559JmRe@`aiOhNVB)FL!`TPw)71!kA&YdQCbk zjy?h9H5#Z-N;Bcd#soT)eGyNjiipLyUs!g~YNG)Joj}m_sOx(N> zaCFr>Owky!FMkeEmnYdIJbbReiS^7(z1ff9Y;XTh=KCY-%VQFfLCD4<;eKUr3@h(h zNzj7JYbf|@Wy_x|crVAnCKr~+34+wr+u+jE`_ks``WklnJ6)wO0A#|&s@7Gu2f;4u z+!}t$N_~m7HAv$;OlLsC*lAgSeX%!Ls+;xk***l_Tkn&1UQHx7r$%P{UHl^nnD3|Y4DA>a8Cj&ZI9`; zwE_h$7q)-=#!`ibQ>P(DqC~4c$fbQ?2Xud^SOsUEjF^Nzvv?d#wF0z%JkU9O3~}+O zS)oY1sm+FkYVK_lnX&|D$I6#HYMB_AMzc9Yy>>^S$q@rtX_&3331bBUSJ@twmJb+E z^|)wlC-R7BPGAAwdY4-Xy!BHLiuZdaLQb`9L80AoNWQ$YK$SBR#$-J|k9=1voML`5 z3F}NoYOaE*)!T+SavlFkL9&CzSLsMSyjAA<@gn60sEo%=GGyh zsk!&uksKcSBulZ_7IFGqUV0+Qvm{iC!q=7hSc(qj8MtFWbnE3eg0tM_MWA-g;?a7>F!U}6`ckf;M@JSPM7xGluIvPTbTG2IEpX)=fv9JYF- zvYRC^)Bl?37jD@)#n}-^lijr;$}`$Zvm#(~~Xb zLQ2m^!!M8|Ymw9w-^=4!niA;QT`MW1sXz&+mtqq4@q6M>dZ`qr{}lSh-80djk5p~m z;>xGgpELdfdTy#P`&p?7_qZsu;~?|UL^zE!!^R2avo1#kK&&!-S|O%`$^}ag@xObNeP6Zq&|p1lkw{eGf`AC z#f-LpuwF@t*{waLQQqK_x{8j~FFN67HS7&sOQq3y9I<-#b?+`00UUpcl0?10r;{-uML<15~+w}+9V!4fJ4X7pJ$1%{DmE&{!PQM*tlUo4P}$00J4 zv{f_#m8N?=f1pWGseBBp8DkP-ih>!EJY58#)eoLZwDYN}TBla|+BF{haW)4U);^9Ex#$_sI9E{0KH>g zY1Jk{13ecQRN0|o1-sbaqub?Cyo{9?56BZerN2!RaAmDQv$0A0HnA4)Ft3)f{T`#aIEw!?JfpUM@g~E_26G&R{6{8Uln@ zGBJG>dM$7Ys?rv8EB22827R_KcNz3Ow^u}3LEAluiR-V9AxRqEgfzjh&@=sLt#yq? zipFvDFRjaUr>eva_4Un1B#9HKH@~+(y~Um*v_=Y8JEG~cxM;{R74bUdLJ>ax;^vdh zjSJ4|tC$G7lvlFbz$J? z#CETh0fbYfAs{z`^)OcnR@pQVr^%GWLiO$KrV->mHBRC7FfL!1whOh~Iz^wY=2^N> z_mF17B^PCL0x=GTvnd0K8-DC1?ZhL%{=68roHBo|2QyOc zSl-m2U#cNKknxJ%`(XY}#dp~bvxr&6b5(t4MX4N$t?yw0F6!l-CMvZ=t_vGKq@86J z>Xo)>!c+h7oL5S?A$v6%Quxf%kQ-K>VpMq|?;#tP`2n-(E~qaf6@{%F7HT(96`KI@H^R zmW%(KY{>yogiu8MoPpk*%6+F`u#$X0)%vGOtiobMNoQHc|JmZ7KCE3$%i86Lh{6vN zzzdZtX%>RA8?pT(VEboZK-9q!G-ia+MpFF|(Ya!N+n3sul+wGJUy>rJa(P?;iwyTP!5;8lI!n0Mk8J zfg=f|!q#*eAIFP`!2RLGy+B4s&@osws+=wE&318zOhbf)$O#prH4EFKmNruzPuG(! zw?TCqYN@z$Zk=FZ?qIB7RjQq3qsU5Ps;Z^H7oFjXakMN2)63IE5@2!zL1s&A;E!UNo#1HWB0|=i$EwY#Zua;qGE`n zp+#lLd&xz)8^$2OfT+4Lq)dfAww<$7<#li?=K*O$#GW_Jh`vigH@1 zsvlcG`6|W{-CT>GAOqF6P3iOq7O$4(Y4&94VA^$>qR%fBNHRc$b)swmL<_!W-B$v4 z+)kd*w}tGo=>D4JQVmN7-rk&JIzZ`MP}}%|){WCqf=z^9(H9R6$q5qCbdy;wWF?2k z&KQWtzC`VqucNXVi9mtwi$_YORb}X^J4e&BJ?2`#(JfJmKX+!~XI5E6f)@8Xc{l|@Y5ii{ghcczp~$0R2G)Zk&zR)-H-~r zaj2aj;V{XncmD><|Cn=x_Hn!7OkcoXBhd|@3vlgK_A|#exYf19q_MR!)XN?_va{vL zs$DD`6^hbM*D%BKi@K&Ba!20Qbj+}@8N8SAzV;QQ!+%fNO=da0Nh!|U8przOA@iPS zZ3?q&bb;W_nKg+3Xy>}-wNMatg(3)KV?WwMu{Lk{(=29<$Q*q!C?={_%gN*c2Ohy; zI=yPpx%D?oc4CXxL3NPHypkzfWx`I-V;mqj@AxGC2@tBuB+GY!9#F{4f zz~3Z6 zvxIWiqG9-WUyw`#$0Ws)ISAQ(5=FN&TzLg;mmWW=g6#QRp{-*>-rPPH9_4eU z2ci!)gxJS}NS4NpGUG|PvByOdI$x>;g$wkdZB)Y|Kg3>}GsOJA3w%JTQ;}SmWYv`c ztrPpa5P6ML>NQs7GR)!*81#j)Sj;M@lxB^!c>(u1&~7@*l}1(+tv)f>BD=0X5tZ+R z?rd2o7(S>((PU#3^!6xH0BwA^+gg-S1mPnL$z1Xe|_CsP{G`)xuyp!~(W6l){Vr+ybEP)H-9D(%cCr)7`DbEA>{MDPp%Q{FN@=vN6y+pnT zRiFh#XCS!!3-&9m^+dpv92svdM-=(m;sT1@xnMldeOSsno1`FYeKKCN)RxrvD_rMP zMfhUFaHG0L`W9bKHD{-OM-l-1gWU=fqk%uQ_W zJSCfwEIL}5ll9vI#}1ryXd4cimVd<9>359q(90-pT`#jg)ow7DoE-?sgsbIV zyAzz!@v%x=JARkKw1;HvT=?<#&24apOC5y<(d0 zWk=vTydQI+FEXcufiqkon%&?&z^6V|qN&3yv20a!hZlGPOrlCQW;jC?5<#8{V}FLK z>+*YN&c%6th+G@?YBe*7-F}JheT5XSyal_-a`v>m5@OvP@Wyi)fiR@6rL{5A0r{S1 zlU92ldr-(X#3)u-U+TYb0?Ge0m@npSb9wn{)-m0OrZR8ObOg`f!@oqr(maOGnc)b| z(b{w6+{MRc?(?vR%8%qWosGHwt}Zm}o$j=f&9uf-lzR#2z7b{)#GDtuQ2SRURWETp zvi)^?_5(;pAS89i)|>Sol+oJ2Jxa7bMsr?>bmg*~5bg!#8%}q$|GVeWNU=HrVk97wK@Xga$@u35W+zEsCePS1@}-A02{-Q6I6r?%=`3{WPy>Z5W!(TvrO59U zQk)(9FdlbeFDnjfDr!~*(=(ce3#PdB?a?2!Zur(=RI`MjaHYm{%o)Fc0jE79LP)WA z99ddW?2H=^dZ_c2xFE#v!=QmlMM;`1(P<)LU^}LxOAXJ8maxf;_0s>F1dKq;RCqIP+ zZQ-Z2;sNteN7o3h2q1SSC-Tfsppmh(o2>MDW6D^f`ddBDB!qJ|)3&EPnhNG4e+dfD6XQ{EwxzeIIHn1pP!?yJBNh!yI(%5}%V1%nOm z5RyLgH?Ps|nwV|17Tf9ooH1a{?JMjd4*cK%x^jLDu=E_@(kaJ*;lmj9Rg?Xv@-nl2 zFQaK(KN#}B(A0Jiw{`_}b2gNo8oMjXFd{@0F{|jM-=J)aAY}eK*N+}FXdkY|cp>th zAv1Zxk6wIR$q2&{QL>=kVZ;9Xa!19-KL!`96vcHSxk_-99fFhWY4@){Yrm>ro}f^~ zP?q51poKDX*f2eBBRE}{b7RQe6;1~QVuStDbp1}TmCy4T>x)vsptm=C9lJDLElnbZ z+2huwgJ)fiuF3q9*Uzw@LG)6gToX6{aQ>X_&-7v(4rWK5=cWQ~ITc6twZD|U*Hqj5 z@7;z@%vvlsK7KK;atDq(G^IX|$1c+RA@)iJ;u;r5W<0p3yYgwmcvXFZ-G@_mz)fqy zi?}}ycARA&acYI?s#E=M5w!b7=o!`-B@;WJk!ppmXCAAd`$f|g7AMx8q@$(ErH}jF z-L^6aDbJ;weZ_F)+h33!?;~9U3qL^iyCZYyAc+Xxno1ZxxwFC|(bO9E0a&Y6X{@V! zXZz%ZiY=&0P4=Vb-*jA>GV!)xMA6_XP_bP4ZNCt9+c2%h zR!mdwg9i{>S9~;Xvw<&$>u)Y2X4meGjqQ!CFZwMM6f-V(AwHavHvML zP5i|^24*J1kgo@}`)m(f2)<+EtxhrL`YOkk;DW&J@+tzsy{W_LgC@9TEQTG4a%uRZ zvgLiC!RT9A(WX3?L}YjJd1FdogGc?ywGNBWeRu(<2^Rq(J4nT$ckdS{!-8;B#`39zhlK*g#e~<>u*m51FplJnt2U)A`7a)K85N4=)p@Q~ zQ0Q6mq<{ui{touBeYzO|Jd8>j|3zK&4H6R^m7qt_R9Tp47C@*6VF@Nr{3hq-o1pnq*7n&~pSN9bT|sI-dHJ%5 zrUH#Yxe93kJvcZTgjGQnkI9nwHC%!(;qo+Bb)@?5+m0aaU(Hv%LDWS^wt)~Wi`uI9 z$Q%4YB7~p4w~kxXYW@M%q4izZYI@8JFlR$i%D2}DL7H}R3KZ?}iVg9WiD7*4B{%xT z0d>UPQUy{fNpb^JILzSOJyMAi@qzVH0I5GDXm6?kdOOny|i?mV2(bWYB zUQLEGtBdBwyU=2V>f`rB7dc*7+rph@A!}d}N!J2?NZn+=pmcF{w89K=jD=bdGAIK+ z7)&t4@=`RVl+`cSkrA|#AA>;?%(5`z&l)6j5_kpC#_VjV<>Nu;7?$<{<3inczulMQ zlWn^y$J~u}t}1ZyQQQY4nC4 ztAt5J)pW-UDEBt>(<@BRvF7{?1)v)I5sO2E;=EtAFcVRgpzHGWVnV)?wx-QNq}jJb zP3Wj`tdJh3nnc30ura~sVK^YRO_C1mpCfe%j3SrXEW@D<_MG68n<#KZc5o&E$Dn>h z{4))=T3mS^g0JHnE3I#GNy>HgA8Oj4TOY4r7k?s>?C8E&B zrCP9nViEBT=1@w$B9?^vjCFcO$|WqgWUUgqa}Ic|l<#uSGfwjGVAPUmy5vxcUj+Zq zzM~s_WbW$ZnRm-bC>T>|M0ZWWw}1#d;tqd&PHU~5)xvVy8B7w6G8KOX;aQSHVD+s` z4Lg;<*TXowTGchG&7y#e-C7+!Z|C32YWzsG7f}mWnM7y7 zx8r<+0(nL=sdr*m7{;2F<(#5_xXGxNVN{-4ur?RoFpc%_Pj#gm|EghdEwei0i(t6I zm>$8ZM1oiY>CExcK!5~N)j7`B5vo{Ck9cgx>?zDaTGZ%RGt8q0KZE6`7LJuxm-`rM zUl#KN&<9`pO&H?fPWHHqguziBwah(>qwx_Nid+y^tB~}V`b73WD)^Bbw%BJ(O19$X zlGp5#-kBa@{)w+;06oZwccBsd!NhM*f7576>b0P{q0|pMv_+&_ply_+3z*a~|(6+GGbR{kM zwvUTXPIpa0@yjydCFCZ1Eej=My2;9RPYS0zy%HoxeOOabBzERe(=l}n7OSMQ`m{Qm zT1Gac=4;E|*11l7WfeGEct$)ZRx^Fh(gRdF1_EV!4|jd1c=CphNamdj!z$p$gcSd?|t^&H9^*>m(4*PW>v zjK?BK3E%C;A|`*5oG9>41Jdckr=B+yCd41=f`rzoVqw4UqQ?86Mroa&C0nm`_5_l> ztP+!fZUfI7U?7_Z;t_`Ocg-C~(guL=r1i@WbD1`vo-g771T~hrcYj=GD0n2fGDxWU zbLLt5o>@P{UGa%z>JO$}v|G&Qpv8yvWE%wjfTWvHmFDwae&$I+KCFGq79D5+X`h{H zP!WRrNGt_ZL6>FA}A`d^_Zeu8)gy- z4P*k(=dj50i7@TfNN|~2uP$n)pV#VfhRXz6mzb+YQ0vFBTXhweF_$A}n5vLCGRvJ7 zR`V@s_9HRSUwaMgD@|f9pu3FXf0&D0N?(5mEH$P{6)2riET7L`MOi+!UI|I&47Svz z%b0gG`M4Aj*!?kr{o2XADLV=DcwE;rlYLQ^>O#yxJTNBzpN^ z4rozekP&0C4AoFOSYYky0sFM8K3gIeD9!nPKYM>U7jM4aI6ek{LgmYKQL6Pq=)zm@ z_W9R^_cJQu=)%*I`C#;X4`A0R#{2y#k-ovrlipnT4VrYXXX|t{v)KJD*X3=Ce!HSj z<8!P!79u0#RHpV=_77|}hoaJ@&nN?+^^oYVwIm7aocQy4FZ4Klb?&w45ars%4iJFlDHXG!+k3><2`f|bCW~3VUIcI zX-=obBetn2GnUw|1vw^inoFB{%4C|2PLUZ^Py|mru@}^nz=PT54r9tzyd^T?aa5JI zw=<$hMcUaDJep!)&jZHB+ipMxX&)pTT%yn3X5E&<=e&)JCUT^ou%f_z=hW_Nn}iIg zY&}^v3Sxa2LLKIGYF<{D9b0?*@7#Tdk&tG^>WK1uDwfelD%fZ}q9xo3nXWy#@Iczc z!zbNg)Z&(%`;&d<&oxmiFRFW1FTUMZ1;{d#Rr|j2R+`$Rp&RtBXklb~#k=l^X|iYh zj$!T7lc=N|l!~u+3Xbh^*f`gm3PjdMP5oOvZfYx*pkS9IY^SZK-0ff+CrW!C9hZka zZ1dQ^l_MWXTu(J2Gc;cK5~^A|boG3mkxK?C_Y-`#JW4P$vE{!KjA$oC!zp+-{yfLd z$^>{qKTavq@J9qSE*H1C1B6$OxFk{`VoNMOY*5G!zd*Co9&@)_sJ06-@$FF^yuDe2 zNSAja#Z|EA8%eDeT*DzyxaJUY-fX1A+}tM{>}8&pfd|=5d{ZQl=XnS4%Rfv61~+); z`Dw$6hY@bjgO;dW;a&Ti{q~B+@>A&F$wA^Qa8NF&QD)D>@+2f{_Rl#jxkNx@OIj3X zoG%RkA^~$5v=s4_3TZoSIR)tEFLPCpsCa?=T;g7Sq$q6o1#eT)C&MHGN)ODPgA40; zL`Y42(et%r$T6SY&*4Ki&-`5ky)5;9K#YiMRwvIUpgq>igle$7Rcc$icuB!C3Gb-K z#7-n{%P{u2uNK2lRSK-o2#l~;86>^`eIig1Nd+UVEI?C}tj7*D&27~@t&8RniEVLS zICUPSaigUa(~n_#I z^xOu!#W@u3xI(-aYCog!WiJ;?6k0;wjK`dpw)J{lqWGVrGa!+tfnr}>KdZ^*LSJrm zLZqwHX(azBR7vy9`V2E`+M{eygmiYyf@qeF>8rVAx4&IkZPH12<#ZN9nv`dIadDJK zMw2MZqs6^I1WN*H9@oY~-^neVeu@r&l(sveRl^|pn-im-MzO{Zo^&UHCVN+fap|}} zHdPd;I~R7m*LYp4>sMWmHKYw}_kYK9#{$c=`N2S z4!(d#=Uz)x-^-8mHWSciy zWq=r2wUTDO%Xa3lHeQhu?mQ4#(jK$2)TECttl;mA(z6>zYqS_pLK>nCq4evHg|roOu7w`eH1at=O+NM%^ii7tfqz;u~+((S6M)_ z0P>g42~H~Ni!C}kc0J%QbdpMHVH0-Hl=u(>m6hUCMwf7zg%VN5E4xg$4stJ`4ncv2M49YA* zlRq+^hN4QPwUq{T9N*E#2K0M2+8yg$isuFybf@dSdLJMtubM#iFlkIfpm~-%b?IPY zx@WI^R1yc@4)2o^dFNIX4;^_a4qY0P!E$+$LMsK3JeGPD!p<1FI3P~2zbv0g-SmZm zOX1YJ6T)Pmq(ft?B%|{VGXs85UG4-G<7Adzc(sM&=3CDUiK-m-KsMfbj=Bi8u$Ll` ziwXb3xY^b&$^-b~W<9dE7uOhfAscq2D37K!5(S76`+={ZZA+t~Y7doJ2wFA9&N#qD zw6i<;8wwDx4>Ng<3puK6sBZ#6{~g-S^v(6G(aCmUY&rnW1_PGE+}sN0%U-D%(@bm~ z9mecObWxV*a7R0?>)Tgfm)6wOex&V$l&BEVCStmDviPoIZ*4gV=DM9k)JTf%&8-gR zO8V*G-OjML!Q%?n!Z}{$sL_R6=*+#c%99+dEnFAxFT9eWtn2em@23fSV73=kWcx+n zj>Dr6H%|vH%;i40VS18&9C=wMS=V=sg_xlkWE<%F(3$_+f@>eTCz5xe+6x-eTn6Ke zumjV~6la8yn^LXn5*n*$s>Ljt>@}H_yb&r1S;ICNIkXmD^T{G>vKQ0Era>{ObbmQz z24>{z4V2R$O`tuGj@>vZLl!mb#O`8JgWSieFQlo1Tp;xzBRtKvN=M(#ZA)>(cV6}SkV5x{G+t|2L$9|S3cCD#ET8uY%1FU$gQB-_3|@jSyn8u13cf!|x1qZ=+Ww{to!U?2Xbp~LO?_7f~5 zgWCuSe_5xwj|?yM6<^4MsH!qCA(V2Sv1--+C3lr%=%g@Eh3h8XZux6ZGZLt78!n}X z-m(g8aC9J-lW5>=2^6ZddnujQ)|(x<=XScIwF9JwDA^C>>@&A9uTl<#vZ)VRCxh(O zR@-}c-|iGT02k(`r%jleXtzXKgIsq+J~0~`FbW0^TaN7InLWu#uYOE?t2Uve1k$u1 zBaWZqr#uW@aEVh%zAeC)fS?-$gcNi$7Ozm8OtU&IIg_AdSWv4tB<(U*VtAPeP^<38 zVtqd+7ZM<^eb5~B-YXWi+4bMXzo*%v_R_I8r-0J9P0Gf=xhGqjZ^KO3DrPd=jA3B* zIx`Ll_&L=fla>!}-nX}%C_OXu^bf|IG1|OMz>7@qi06$&%Kwu0X zTMhWzFfG#f)Y&@;k&rB6n|xF(k180p4C@fJR?QVe<)zlJE?Dq5nDao-xibX~qecuT z$o1dGuqW`(LqX9aAMzYtoWHg3AL15I(-5?)&OZ!=W{&T(&H;C3f(M{$s7Yf3+7N{E zV7H^SfuI2PO?{4i!np@BAl_tm!t&2Ns>M_;|R z%AVy+)7`Yp<`*P$yUd01Yv*a7oM+aw;n0xRWX)co24*A_)_J|MS-V#5^2GFChwZX= zlU}Vp_Ifzr=FFN!?;GLs#-+O=H8@kDY-Kv(9{8I9{F(7S)+gCapTsQq$$B1BWPs}| zi_c`}{O0<6`1B_>{L7pAwEz+S6@qZv>Wy-%G&ZoQAT1E@ag-pWd1Nl9Hcfyc=Qk5aa* zP9C#qe8o&@90?#aMrmx1Y@m}%gC12PWe@eSdUpfeDH~GNduk%$H5omfqfATZ9BuV_ zdo(ku+f?OR9y3b0C}7b#1UHw2_02jR1AaU(KP@j?UO%RcsH;RqRX5V#!>n9c%kki$ zy|($|^vX~=sw>V@|NfcVW%&29=*er)Q|*JxTEoG~UzVQn_h7fTD>yA^uo6x|q@)K5 zuB;eky*<%xA@apx|=FzE$8KLUP z-9QQbptH^0d zWu3(s$A!VBur@+fCdF=kgtnkb>MPPAud%om)n+i4gp)&D)zr$y(95L7eVu$z;Y?}1 zKK5q#hAD|N%g3E;5=n2@8tWuaD{-EEGO(xcFT!Cx(OqEOm6K+KkSM~Pln4%Cu6;=U z>`(278kZp@Sv_KAxxJV8rrs`%yR%BNkWT}(hoggF%NyjjL>??qKAI@a;j2y>B7-Sb zYU`LMCX?O{qfMe{+O;F8s2Ri7QyzR?OTH_31%or&d^-fgWG z?f2T1%4^1Hf1_43eR6~0+0k5mEWq+r#kINf(a))#9lH@XT$G>Zl$&AUyPNY zB7vpoN&6Uk+Jm(18E&J0G|hwf*WD=Ab52@25d^Td z#6Yj03>X~syK3_bpF?+7xo|ov3KAE7#@(f9y|K)J;ia+?SLOkdssAki&EVxh? z8e()+J{s@xkyw}sG!wgNfnbI9vTw9a1&=V?C833_9yn#B{ji-wD7CEk2+CHGN2#M{ z{4PT@-{UUywWg80{xqr;4M*1BeO5t4tPXm)PBem9(`|{;zjDUU+18WdK?^-Ihm{uW z=zm`d@yKW3x;WAp5nkaD=S>wB>Re{#y&7-lVz_`Oec1`A@q`!W`sWyncJfu%`p3)- z)J_!|`8*FCICXdP3q+*pLg1-n6Xh@Evr;+Mv=e2lLWi%+6?K~J#d&i5@%Hh)6<4Tb z!n?V`BwRO#s`il7N`n}DhucQYs1;wgvji)XxjIIN?Tu4DDk&m!$jI67bPgYn4l6h4 zYm#Rg_V-=mF+L|M)svs$Qtr#sjhF6He7-ej*evN5%{$J1V$L>W57DQ;F3wu)#W&>u z%N9D}YZd9cybD#g99=dNU)n_l7_g|&VSY!G%x&Cwk54BNLJeh83R4{=T|+BWUUC^Gfo@;>UwTUW!CNPJf*h9HR6_2m@kJD4 z-t9F%|NncM$WQ>?)Dnz5A;^gNywV^)B>hG|rPSH9OZ$gf@z%9s9U(>9tD3eagtSe8 z&91|8+?T&W)Qxz?j*tR9y^*@U`MXXE)3;!WWwZjEHSD=?*rkNZaDosH+55UUrUTb$ zaxpsa;do>NN+e?XL$yw=kD!6n7Y3^U_zK@h@&05`YLP|sUZB1qcnA>vCYUp&qa4L6 zuHT(LwKFgPD69CEcw@F(Dnw~?X9qKYJ0P*2$qgxaB#4HdE|^I)4YdeabBj@US``X= zT_MUrr~CT%`jP0n6Mr>q&}0|wnVX0 z72UWgE34?{V9gkQ{3oxi<*Y7*fP)LY1TVPh?IFUp^w3S_P{mBI3_TqlKOCf;c*a}d zk$+kbh}rJ)uzgH;{n1BE!PwUgS=-NA^v}^TT+^@BTow9t-0K+4;+2|z;}K2jW6^qc zG&l=q|CkJ8fyD&ElI&^Y4bIPy#&n3w!jVjVTW%-Q@D)w*DZKXRU;s#9rI4+;k7FOQ2ihp9O)j>;c6BvRqq4#txtMzvm?gI9 zmd%qPOZ7n*ZYxbMmZG1e;q{h>vrE|8J|7<_Opg>jYORhx(30Ey?~wdWpOd zwj8}h8W8sF4?bY#ch_P=4D-d+VJQ_OgkZrwP9nAug#}H-ff9~sDu@yz~)*{I6Taqpg30magPnS2xbCISz14`8~#k19d>Drk;f(+>UETHC;k zaN$@pfZSwL+tq>z1okS`Y(SYkWNd) z>Y0*PZp35dAy{9$g=U_4PFYI63+Te-IO-4BD1z$wp)L52s6DEOI_R|y`|P0 zTWrx=EUFKwUKAi*4la(=JYk?373evg4Q+tVWr)nq6yXUy99V0tPjv6~>~a0@awvkh z6jR|0gji46-gMZ6V_cUvRU#S#{GqNmIu$@TUYQDRHR#Gt==h;=dq`!x;Z}=#ULrI; zrXO(RB-$`4L?Ai|jF1YBiR^#NdftH6vRl+UHc!bq9cVO_umOSN(NPb^kTgq!j5Qu= z*c4)2^`qU#s8?U=hk5Yd-pIr?5wW@r*}gTTr~~#;>-D0ar7O<8ot8hKU60*`pk4mX zm)rHtHGIM+NxB%3NTPj&FAXR~=~_=Wee$amp5j9*WU)4wZ028e)^i{5UJ3ztl7a~X zv2=UUNRd}N7Lht5Q5Svej#82@S~R-+7Gw4N`NFG)@H!2Z_vuOP(?We#0D)KH9W}G-Ew!)UYWs~7r zu7FNnbx=ud3X7KVRrq1`H(p#4+#9Un(jD;AdyCAcWC&J!oGLYNf%%{j4mE58-&0z3 z6i+%5c%@=NJ7jEcJu{;nptQ%N{Y(pQfNt<%ETE`R&|$!#kE z-Z}g9c4iaDE&sKUPh(p%E@5)1y2&c*YHTY^-nqQft@&AOV?*Umn`6VK`0g3GN$8}* zQ9dAB`@^_eY$hPIglBe#)h9~7V4WTggz+97$kSmAB^M%_a~W@xzJPN}k9gh^&Cp`t zRhI_u_t44O1kXMFTs@fD{FLS7el_0+dVfHBbabPNJ(usRbh0%eJJ;Q;jx>zV5N{tdPz?skTNhH;5l95kq~H zl&mwJbP*1eHs=(Uk2Mk-I;@lQjhOH2oQ&4eYkeZN(^85s~m<4~09Xj;+)lEB0pY)hLyr$4c zb7H{3_S^h+Z4{eY${7sBRJ|`1l_8n zvd^5UgwOxw&g| z;eTym+M_M`KRyzH11SJ;RL4F9;l6n;(fn=P!7Sfb3>Ob(xmNj>tyUd>TI&M|qTI$- z0g|qCAg=0k|FED*&rXEKi~qHduvO8L2^&%X>D^OP%ez_h?d@ZnoFrUcW&ozhgvR>! zBS_kg03t%N_>|eN&I=ec{_XdY16(1&74eYE= z21|u$F0Uec>#gxPQPxWJ3pWrmf~Yf^|FKi0Pr0NKFs`03&mG8SzeO3kO~;D}Uk{pc znp6s7FyjWJKW1M?r=l*TiY1fGjb^u;ktt~J0!a|bjFO11)Gt<}O*&P77{>^bFh;Wl3c3!#a zc!juyC?8?t3QeV|dfT_bj2xaeu6$dC3TlMA0?&Pz{1DRGKH>MRDg(|paCHdIs1erg z?1!(pJGT%=2cBgtj9vMM9!@n&*xs38a#%&I`}d|q^?%l)%7JrLfNeZ=*>C>;TA}9? zYf3eMfHWHZUow7{|8Fa_iIWZ8|HTab@2?(?SpDg@S2$yaQ!FkK{+KBq)DuzeU}iuc zEC&MMkt~3vmsF@=DH4wKn0sr+o`0=MjK7?K8KpU4%jxQoz9;ug%;o=_$MFL(*s%j+ zGsVb}wZeC&v`#I+SKB)ox$gg#{I!jWrnoIQFZPU!ZcTKyr)Rs}8y3yDc+=(4^idAG zC4AhKOD?Oee0B0<8=J6|$K#bId6fw0w-s2Y7MZY#7Z(V!Nt9R6c+|PY!`*wcQ8R;E zvscx_gFQUnohKYE(aWmlSbNKzSHa#maoYdFkNPy5(X z^w5$@c*iwz&~kQn@X-g4EibFqm;R<9|NgoTOW2vJu#Q(93WQDm*~9dr!1J$3N+&ea zez1>~pBWbl3N4eHY#!vilj0<=ff5P+4**C&x4&9|W26sItlKX}Wi^@hHS(%3=O&L# zN_RXdssbS<&rA=KjT)pE77Q+ux|<94lJ5OsT9!NMa0r9k|D}}!Ccq|H2YA6CWk=+Z zDUj$N(6B73=}=uwikoDV-6SW_c5gB%CauMtbTlfeqz}y{X+ljWDg0+hx!7jZ9TW%I zMLx=20d8Rpe~H+MSeNewShpY3=(qj zT{@g*i$FzDr7f%9O!6wIdU*bG)~~t_MeYneMD1U)JNX?WYk!i#4Bf#&Xo(RdvQ`BG zFFOg0ah3O9T0$f8wm>^FIs%quSP7MoK{yWZMnEnio0hXh8IQ560`sQVNW<;PB)w~; z6UE7TR-~Bx8l+({t)3S{Xp)M+h@O!!ftn|UsEZk+Vzj67jzK=AgO)#|YM^T35xj0* zTDY1mT^{Zvkhc!Ma1NQmik;ic;Wk0>H&y{YhFb887-(@p%r#an2Skq%{4r-MhH(h zMg`5@2rXpL*q&+$6}a_YQUsUjtOp#4`3NL zy`7$4eyJE$#k79~h)=2|91VtR8aF?B!;FyG(DDhPKi@t+dwIBbaMC+E>;2F>I0@jt zEbm1LWSt7Kws@0{!%9-M9O?_)XO1w{&# zzH@Z=QUh>vUL5{Fps$N}nVa*s!^0Pt^J`IDyE(n>W9-e6SK)P!lW*MQ`hIDHgJH*JivSgvkr6l=@WEwfmzu3O$P9Z4={ijF(`+sDV6T#JjiwDi-eWk#Ws zEG{Dvk&kWp-M!=OZ})q<^>qe$iSuCK)_cCUyW2acuXU9V2H7a6(`&4ex#jl`e%L$S z1MKQ6<)e3bnFD%m%@>Ee+xzvku8ToB^lSXk&|LJS=r$+mWdca+q24{({vP|-i_H$38JQq9^WgA+GC|g5 z%uO_#RSPujW6*8JS?^$1XJ(^8n6I110s;k5;`n6y=tLJ`VI|A#e!IW3zqj*WSYmKK z?8DaK7pDNrKn=wgiXf+?6x={UOkqP(+>9bn6t;Chr~?K@&>gPB6sZFNL`vvKAD5G% zg*J7Gt3@veROG2p8Uw&F3t;LCzzN6^gQt4f1W)(UCrk|7tCur?O~;A)WjpLqOTsIv;TbA`yR{Y*Xd=p^7A;m2z3uo-wGd zk`(y#Dx)1fs4cJsBN(u~B~_uT2?tB_;lauF-T@5#>%CoC5Z6~%HzV24dwbtM$0@po z`7DTf-)+CzKS3Izf`&ql6d}R~MIXsKL;w?%_5cMj>jmU&fbz@rKnY&!Bnf)L6ye1ihzXSJ|iJu{@_3(Hz5I#sglujIMgtb z5{8*<47kxq2Lr5>-BuG|15hecKygx{raa~a3aY7JAk3B&l%s5Uk{P3qqIYtG1|pun zl+H>m?X=1D@v*Py^CZ+K}WUAmcUt)=)*Z1NHa{ zG<*blK1=~TsVI;`f8zxQX?X=S8N!&9G+dX{9LEca;jgTWSLjP+4G`qo52r?NL_08Oih$ExqmfIe zRe@y1t>YbYmYQ9_6F5a6A8nluG%>?~AF-bZ3PqfTX6Fepng_QOfVUwZL{RrhfGG+K ziz$uZJIt%;7;J~r%B?_24OL3$wOa#I8Yp1DXc)7oQLaO99gZv$vm$w!b zk(bRHx5%8noYK~9YY`Xz#ivWj=kag8UDkgqLY9QAz&>02s zuWY>>rz5`%F3}no<~I~o>k9u_zIt$tcXQO>Rc4NY7imA6qZlrNv=T1ER6@08S?A~x zd>E8b4V2M?pxo3zxp@$jvIa^y2Nc?X@iy$EC?nx~3~eNwkD-o)^Qq`Fsw2?o!4#_N z+UUW3tAkWN7*bvDO22o3fCAyU@|e$lr80d98v7`rGb&W2@z5>>aeIB9O}cz?OXn0N zY*9eo9&iSKzJISR()7JK4}1wb`HyirNw1UN9^b11%gG6D9O*aeiwKBI^2tG&{B~Xx z!z>-$!_IWECmIAKxT2D} zpMy%~MCA{nj%jZeqrB1u=i(K4Ff<=`=#TB}}S^ZWAfnle$!-2}7ZZpUw%K&&v zhAJFV0a@%SEe~%-`cxYjEI3zmOUx-+#zRp1{$K(+jn1OtODr3blKd?^8tbECMP}o8 zK+Yc39d}cXu~bUw4Bh~heXo>bLD+G7=AS&1 z4gjj;26vm;C|FR*9Y7gacvMgc@_U47szdY>`oq2qnNw1a&OLc2q0vfJ0#f(0vb3um z+SIZX7}i+L9kM`^SdFcY>CoUL2?8K`0HK9>9n+wl_Jkdb-gdbnuW=)=Eqtc&NBvwrq!}(B3o^?#*xI zTZg?dvW^N{_-YxzgV|cVJcMHC;Q!x1xwkQtG(z{D=NuLiEZ4iO=%~+dTzpw!hb+ZF z>ch^xjDYxcpj4@9psib#XY22EHc=)zYTAM5u^$tQd5{}|-McNRv^m&HBc8gAjni4z*7SH^N1bY`Mq*i8+$NBu`@AY?e&a zun`M#Pu}P*1e0RHeoJm-2&68{6UE-n-iz&hIKjm(Nm(^lgCBOa0FdzLw&chokE34fvR^5MJf*x_baxWQ};nb`j zBi(E_R^?5VUuWgknrPsyo;sLAY^On>Q<=-~8jN0taDtcy2kxfT42~(V%XA3$El6K( zKIC&^Xl5?OjKG_y%^J-f*xkt_BdPf({1?3;>{c-KH5$*77io3XrLz-GgN_qU?PNtE zx4~4_T7m+1{OY^!_I{+3VmkMI&u6~xhuKB-zQV)n6a~sYe)7+gVl4P%dpsWAC1rIt z%t|eESl&5no*GEyXm+nNUAY&lp@o!cfy=88I-JDz)lkb}E3@htOSKfxj;dsbjJ~1c zx>fq#WZ6aYlPh$RU`ZP*omH-{4mo*jY%yA&9mcWKU1@T{14y;9IKEvpOAY-Ygx+Yd zZ?&pUQ-6l}K-2q*e5mp07>}ySP&Cf~=`U9gR&`2p;B+T6J8a`IRhCZrR}a&h9rTi$ z6i0f>%b*-$=nK0fn;{OhMm@L$YCng?@>!VHRR;gkDw9r`gY-J<<}hJz56wRHX|lW~ zNWMK7FuK3bET|t4uOapeZV3K8X z2NjLS=7LKr(^{VS z#%dKYSXKg8E&8r(jU)$6T%{3Ku-Qw;Xxmp--8XgjV4YE z07k{jRx_`J04CXZnD#ThdMqvZjDjMnm?$Frv-yQjvE7}GSrtf@K{dj7G>jMtuyTy6 zI$Zak!CXF49!9l1hKJ#My|vZlwY6kWWaVh7O3LYYTuj)Zrp#dW4-%qLhAunBMe>v7 zH*WT)1>GOf|D;y_2RGFk=Bef)p)>Amzv%75|BuPTu=OTg{`K#Jx9!%O?d89{ZLeG! z5*)_7!F<<;E)93ml2rd+vh(zOxu4Rlz(!UwyM;=__w);0iP%(^0hVIR zX24A^u_;8O?li(ou7ChA(LP&S{%n1z4I{B%++-7iBek*bGxoImeW%(8<$|zX;YJuJ z1l1a7LnWg`fqLlTZkb_Z7D8vUtMcDq_FLcP>|{peA0kj@RlJ_g_3C?t0MqRX`gA_6 zveqJl(Dfff7MeGR--UJeiGOp`N* z6c(O8t*t*vj?;^DlJm*^a9G^X8m(|rRm_%m2JYdMo!N(gqw4$OG8YfQ!{&all+jHa zHiwmeFCVWc4>16d9rGd#%Z9waE$jy}pU6tk`JRwCL!I&7wi4)q#QYW9JeWv#BKTwFjGqpMZ>dTf`_NCX3=2fL$(*R98F{*bD2 zl{DiE>mF()u23bvOUr>qyf#S7Is*|w;(Af(N~gX~Sx9J=?V6J{gOjYH6Qc$~JvU?p zm8OKZFTD*pjRfbDXWfjQ>UQ2m?7LsM_T4X;QqfE6tIQ90?|^jaK56VjpSJHuV%oD7GYY(R{q2*51a_-spt4a*l-E z49i==qgIrrqNXe&DbH8@N^Lz%cv8M9ajI=c9J0*O&KwOyNNihh1ja&SeRC&1q1e#` z^`?E>vqyTf+dUEdA2zq8$@8B-ug`wJiLJX$>khgQHca$0MS#y5XM9JntSlI-4Fq^s z>#_&%* zhF({n_8^-7nd9j7@GN>gE@aFUpffGYy$H&l_c{XlQ6TUH5`n&W>=F+KjC-NjliJ35^|v$PhBfuU%9Gm#^h+Acr|c}Cq;Mja!h*{C2~gpR0*o3p)eBQ)l9@a z9jbcPttmWg+vB@_nLcLY8lb!Di@$h>6OuBr6T^1Um#qUu4kD*7U9I^6Cl~>;@dW6K z)6TT4itC;xvztoO&!6UC$@cf;D+idpx5> zev7fT+t@12ha1!jEfCMA=jTIte-i)kC3btoOQ`zpE>$&aVy$otC2o63AhM(;1Xbvw zlXHkAA)x**Y$TyE%o`yhglCGxkuNSTa8r+$$2C(MJU`Hw67?!l?Zo`r0Kg&TYCf{O zb6(tvbqWf8i>JRZPj-fQY4!+>Dl)JW6C52DHn46Nea$A6ZUF@4~ zpMayELz~CC!dqkr4}N&yPUi)8QjF1??p`}x42wQr3EtA%JDuXV=^P&IeZQw73$*@z z^Z7>m?<;>_X}$Sh8!ONL^!9Ok<5}zPgU9WayveT_0}I%@&C1IVQ=<}SIvKj7YYINh z+qJgUSw64go;8$i0X~)^0M`lyJtTIok-u9mp(HnOS?w^60-{Ap+VMscoE>BP#SmTD zxWu|w;;JYsvI?3KU-&RU>+;oZ^0ukc>#=KB{s_WLlfAmSuL^mZ?}={OC7;D;D_Jxj zTgFs|q7g$df?5g)AdpsDk`z&d34qks$COLYme^N+8U6L(3&WWFJEVPXTk{2vK8PtD z!BguTX_Wu-pJVQkH8k4R2TaNL}Wq%~5s`ABY56-CC= z@~X9H3$?5j)uM(DN$th9U3=mUp1KX5&ePy&q`_0SL5c;zqfuTJ)8POH7-r^0J}F@# z%PufRgt`)6BqSqH_GCH)gJFV&0COHy!deY?J;q$XVyieJSsY}S^|WE$pcWLKUL(RGAem>rYl|CDuM5)kipbo zM4G%vZ%y!lmIfylGnGR7PxhQfyS*u>=Qn}Z^V>Qi=yK8%L8TcWd&Ur;HrJ-jH>QNz zgZg0CBXHMUv%>8fAVvPB>3ONkbm^Y{k3dUZNu`+m9#*}puX-9(J$0(yuE(loqk+>V ze!DH!RXg>nxvl+b5H0^PsanwG$Jp=Bu?LUge{SJ*x9~a^UdO`t>u%jC%xt=qw4l~9 zw1W=1zpm*LJm@@G>9^xJ!v9xgO3*!|LwYAU_s-Exw^Q^zGhgQt7MEm@Z&u%Wb1T&( z;sNLyC)grV!q{i2w_o&d$Q z-K^GZL)3iLT``&gaT#t+SMZ)r1awSSP(d$AQGm&!FqgXOrCHh6dGn!Hb=o>OS!OZE z*0=Q55qNkb5jBxJIpK6cg>2UQK1H`@1YpC+6RO7Z&w<4AO2DEH#I}ekK2S*P+45DB z{z39pj#o|F^@CCFP>q09vN&pA$OBy^@pwGHP~y&7Qe#?tlkv}C*3?3r$$d+f4J zK(Yab$6;0f%Qh;O7}Tv_yvrs_3z~66cr`VIUv@>B9%dCGPnY0NoymdpbRK5+6I)e|H;vX_sd9x>` z>YuGtmlNyHUC~c(LjKvCkg!XeWSPn2Po$yAFiH}qw3B~J)}E{y-q+=T?Y>_1v@M5e zG^t&*)R-{mIJ>QM(nn)4ga0=G4rC)-UhVCfpvvozmkpo@ zJDYH&H&=Q8Dj7_&8?jelvfznR&Wo&#qqb8U)T?h=w>=1rW&^pnQO$}`ltnWn5f z%U;E!Y?13icPxEh#Y}xB)0CCa*9>&Gsz^I^p`S(#iMDJ5bhD)hHJHD|hG!Ix%wM7- zGl~q#U)(`4{tw74pIzj`;Z8B6m?D(YH7OcqP()Ueom?Ud5X=ZXF;g8Dg(XFwd`3KU zd|edP6-?HiY2Hhxkd6a~@%&7KRsd2WhsPiWC$D4^W`C{0?5|VM0;;<>W-7A=v%h*| z8x}W9HK_g7MGf?Q$pcTiIzbon3y2!BNgb)lwCck#sSYPmd+yW@ipWZ{nhd1`Bmi=oJt(V$#Cq2krQM(y-sRbiEV`kCcTH*prLOXy>?JYK`Rss9S|8YgKtIyEpk%OX;+5HnJ{?FEwQjp3uh(reIA%jjP3EId(xfvWrb$gYHhHKW zgK1lI^9-+XkM|K|_E_D~v$YIgUVW^UDth1-_4_&OOrM zO?p=*(=sy=r&S%Ly$eMJ=(IqN{zf_Jy7GQ&ODH0)Fjt|vd9@@pSn0i5XB}iE+PWVy zY`)&`!R$h9Ka6FX+x`%~K_p)Lyd$X+@Q*}WX9oIF+iBo=z)VgH0Yf=W=-g1NvW<|M zN#_j9wnHlzN`G0jPYEW!BT%D*1SL@POsWZ*VJ#1;yqPIA6^!j6(ZY*#h+`GH!L0v& z0rC-9?cl2bipmj4W%@2_IVtAwv2|mqaAgSKlvPK8YJPaTHMbp9%gjNZI<1oh>Qs+t zdVNK!8AQ`%MHCOT-%-AXD!r4up{j57@nGa>G-elIwXrySpv2he!^N;DCas#$B#oM~r zevV3hCrHuKz34DD9o2*khk{D@5?K)yLfRHh<`3t|IZmdB<;=;X8<6!B5bH>;iDM-;)9u|B%j`u!mN zE{lsnljD{w>3DBh3{Q$(W&ug@j={mQO#f;+`bBvN@RKC)O>Y|xc$8_ zNbuf3>rY>P@#pq}1Vb+dY$Z?DzFvP28!X^+3puRD%m$GFYJk{}KmNFpe4CzU!zJ_@ z^w*T1V2vHp<1nyvt5+K7vM7q@y&fLVs5`1(YlvAn#BkQ?Rl4O7EEyateLTTSfy?}a zBb8<<@sYZeM{4P#cLGc>L+(U5J*Qrx3Sp?DSE$4g#w%<~`a+GarfwLg8$FVpWKloh zWP`k%S4G-VIJ1Mzl6!3(7c=SF#5WjeT~h~gbz<*O{v(lXEKB{&c~balr9Bi`S;1SJFZ0x*p)GsQi$fvK!1w#Ya>`BjPmP>Knj zaPVtA@`auSKRhldPt`E%jRtu-+BB)aJ!{9jI_jkSV!$bg5S`2O6@!G{?_wlctPGsr zC9AjJeYg9hZ4bc0^>LMbEU_dWZ-oWcbb;L`-W@-6E6vt9zpJu+UaLhp<)OWmtebl! zYC5Z&&yzK?$ji$hafG?jEUYbPU9z_(VJDWjfEkzG6uIZXdcW8NafL=hR_EoME6PxW z6b;*@SO$Esx2u#%+y3Xtmy%vpesOWAX(mgptvVNTW+`E|wNCP-ih7NlxFqSI97BNZ zMi^FhDh?y!m7G3ED3?lcJUw`?vcZ<@g^8S6K&hD4HrpC%+SjjI{X>(oL zjSpMLB@WU+x%G~NuV#tW)%9&39Fv56KKH)cHRIs7@Wr~@!k1nPqU#n-59(9Kf&M)S z@kq>MhxVPuTsWIvz59i_ujpM+Iuuq7d3XE58E)yTtJL+I0O)xo(sJ`f+P-)o{VcBL zY$$eNx&4Vkeniig|RHDB+Mi?mf>UZ#^W3t!1I>O-(UmaP~k1MAvdpb4vNatosT zy8SX`O5H>NkK6>XC-M5=Z_P{@ zHw`SC#Y_y8^@peXPHRtA|Ihzkuu#6xPz>VB%8MX`L#SZbc6>=s!1&U^P%{cy%u|+-Axus&C;fDx)!U^Wuc6F7Pd{t4ul-5!b#pbXx zL6FQ($T{f@+*U9vALXh?KSiKDQOAWwateFupeDNEp)7QKeZg^y!Rx!NRcu2sxHBwjJk=`r&2r41M4PgU?fUkq?|tMqxQ+*u;qIvnd1UeuFFe> zGVd!3t@bhrUiqWP1J+kp+rEQSEns#2*#uepy#eSo0L^167{%|C^UdW<*k?mWuj5Xg znCqBd#JJ4ah(2Lh#TkQDKdATmHCaB(W#^j&9}GQFgFM^4E`h-NY%xJxp zR5_Dic}Tyq>~Vcpr`wXsH&8mz*%L>7!AhPX+Nz%aiH7tnJhD_LQ5!XfnE^<1a@GKo zn~i|9N9{3h8mIP3Qd6gIAKdi0)p`TVq6Xs_3kty)%XS?@lc%xv+!qV%@WPOMAvNeG z#Or-w1NYgaxm&efxJK`^p0Rbfepmw@o*&lT`vq_GJW1Q^ui!dfZ6q^2t~QdW|C<(T zwhMtc6C{!%Rh;{iX0qk;6_amS!p6%=>p^wAARp9Lgj;snkJm4TgMG%p!zotsgc@^O zmurL^3i}~S(6hKCs~o0U!)3=wS@$a`k!zzd_}WdL4)=sy6}S70e2G-qktmBg7JIu? z2s}1qyg-W``he_n7dz_7zG9>joN$EmYBX~!CJxcPVQ}>y(AJz{HYvL7)UPg9Mx^%|gc(!sz8SV2VB?BYJ7oNUF^897~mr;Ix9)Hfol4uDXGT+^Z<&r{b9 z6QCx2j6_Z+x-x8ra6Hcw2}mn*u_@p7EI#$i4Cnjp`RkZZQrFNE^tut8W8?4_t9a+V z2BOOqfm`r@#g?z9Zjd;q|B?PZU`!QDKa(7-L^!^pB+TU&t$^90ZO_98(bliD!dBCK zu(gYJIq1)3Ba$Hkj=A@LHpe*zUf(IM-cJty%~DsStDNLKlP#R)WQR0rRxAVr3@~-a zIiyfnL60=o5X*sZ>2=$UmkkHuc`an?4{cwkjg>Mm-D1MTU$aaH^1fx~8TtjUwf)ng zQFg;vYkjIgp^Hr@2ZqwLnzTA+mT4d^MHME-dvUenV%e^%$jwLVVOXVjwe;3$4`kJx z?WMP}J+B_O=SXd#LP)LBf9kM_5>is3w%bYk6pXqPit}&)+m1cIk&F@?XwGh%D$-R% zhDQdxzELv>et+sKC|+}M2?V#Rp2rRweahfDUgJjiqnY+2c@Y2IFEsT-jX=MVkxK%Rhh74=#-*NN$>zaW@1xMjr0!#k3z4p3Q=@J_tnPuvJ}-Mfq{dP-^8?8-vBDDc%fmf2_3z<#C28|AywAL z$lp8$mchV)=O7ee6SG{|(OxiWuI{inXKf&O|%wx8%&WfH#OM9Ft)< zY>l`m^)Og613ZLw5e!3P3#<$JYit1DF8d*yeXRY~oZX3quj7U^^6cG$9~RtYCKyNN zxQ-X?(VQupFozp{AHtA~8y@xy+IRqWorWV?O~A^1ogbO)wqPy3(-1Lea- z%+Ac3sVO7-0>Ii2$cIc2!s{+y7o@8lg=$E-{zMX0I-}SiKmb3l@Qj2@QdNS|1GdJFF@GJ_%PoB9z)6ugm5rL83dRXYrKNA+_ zh=*OcWQE(l&jZbS_VEQ4!|2luc0Ctw)AyN(N49^pNiOcZm6~~M0>whqmHk5tUO;Qb zBf65QEOgJ&tGFy#>>5Z*r6aNBxtlwBHa>}))$Ae=;iL$l`CJ5Ql@WVVD^Z56Qplw- zhXMz`*!iwASHcrnuYW!s^=GnmN4zfKn^CMe?`|Ac z8X=EsNR6qI5o$i{5Il0c>UA-4=H@RHn{{==b1qL#*VOb*`sP^tl)4yhq9W>IZKM8? z?yPl-^~s2_KBiC3wI8$eUY$YIy8Naixep*l-Ev#sy_oqd)K$HECcl?LI>R&48c%}# z(9`(zM8kbh_M7--(;Dt0JDqS#5uPT58>s**ah?#C4)6+26vEw7uzhjQ6#ggf#%l}} zk;8>>9Gejey-&pXLO5$9&D5SSxMhMy)EPrCr6WyznjNj-TC?jZ-eCw4R4sLqs`P?$ zEF0qTj+gH6g&}-CyRuPxO{fX7ikug>c=c~YN>pCYc2IM0utzyv3Y0>6nvBKzb@@geM#EF4VRAu*7 zN9TfK()*!zaB{YDbojEvbuSfP>Cjqe_N6d?3{zQ?(Vp{?Q#`}^OWpPZZb$a*+kImF z(n;17VsUWplc{7|4j-J`a-cp7puU1K8=MNog}G&jc$&vwhqUM{*?`=5U7XunvXwZi zK9XvFeYw44QqYY)P@&4f>qO9f1D}fsg0{e`ClZP)K&J^5K9_ zui9auJ=GV=7dSss-L?qx9byMBF-oY~n31v5=x&_h!!LRyF>ncoxe}pE1Oz=0#SID~ zP2PV@v&r2tMGK?|qI$Qdmw;@jWdF;f-Vb}d*BzmCD+!woo%^{aTMJl| z|J*sGgaXy|kh1d;-mpD+v9A?i*9a5kXk^LDSsX1k^;p{DX-@Qb8Y6i;)@?ktQ7@3h zTGo`f`joa1KCSr^O2T1!w{bo!`oH`{G5#o0@^v~v>`)8I%hE>lP}LNb(6~>P3f-W} z`6)>&;NkOWmGR5OPb`4eVZT3}@KaQ@%5z)G*w!~&$+Fr@nF=coF|ZTeep#My+~p;w z1Di{*EnDIdURz!LH~tpLassGH%Uo#nQGSh2j;5o^W~uUFUV5vl;nRGvTvaocO~PYY zM6TFa9b}iH)Z&sJO37P^jv%QrTzPfrK4!-IF5ua4A(F{vCDN1CnbPiz6)y?vX*=Le z)uowhYT=X<&g}1v)?Y>eb<&&t05YQjTd+{)X>c&IucF^A4X(n%N~)TkEG}OU}1!tQ1XoooF!e? zh)rL0)aoccXB1Z@BTKZanaf4LPCak%W{Ioe4c;Kjbt?FBz3;~#Gf@Tf=tfQ3y0qJy6=zaegP6p?olK7zQn*grwpB^k z5Lqx!y^b`YW<8KY(|fb}HkfVheA7J)F}QLDN24)g4n}5S*n&SF!!{x_^WNJi(rcZi+9#gp zqk&jk@blBg&6&hw;ut}hm*1(zThcs3Q8dN%w{$Sr&&w*qxIU4+@!9do_R&cv2|)y# z`kDrDU4B4&XkBreBLMTZhL3X2-&pTp*KLd6^qjA$`P*^Zn5%(bi{g5|2L5(<_`)_o z^_&J|RmCN`>dV8ugOlFT+3w-%17!p$=y1!#XVk1k30-1hOmpl*vT5HSh-rtT*H@X` z6EkbUmw@b#Fk&5pA{c+>DBF60n8dt@z z;dj{FgWGxa(rKkPa^gY2=M2t(P01Mk!U)AFc>}eJ8{O(r?|AQTwqHkC$q}}ddpLf@ zNT}5M>By73obWFxdwJ9Hhl<}hn*5{^c#ifyl@OlY)W^%=<~C-DVz2gtr13{d+~$TO zLie8{T${11m9LF7{%|?!M5Fsyc{#6C^je!kFiQDnG*OP8KGC`;3r*Kb1PLE@Dj%H4 zKjh@z8UljAh;g^dFm~dLy@Ruz!-JFUy#pZi>%HBR=W(b_-kOoXi7wpdy}j?BpZKR> z+RQ-5@sSh7Z?+=+3d-uk`>hDNGtU_GHZmH15_gjkhfWHm%F8GjVi{R=p9CL?P#CEc z+i7m>kq+_|k4#DV%{T1bD^qfNA9`y9lLTKg3S;a^7Q@&0Ok&GyOQSY7ENfG3VY5dT zx6n*X)tNX^rP4t|+iip`P#A4S;*}S_Tm0b5DBS7a%g7O?NzohArcImCs4X~8tDf(V z)@X%f(Md+OMCXokh&fP80v(C%9&LXQ@_4s*c5rymYn%<50D4JjU8N;Q4dwPAnNHq0 zbSSR>?c|wgK%L{;1S(?e!?fQJJ)`dy?eV4DJj2Emb8UvxRLLHv!vyJXuudz_UAn@w zW`)=w8xp^+)rp@*vJi%3D1^Ve9Q?S&2W;dZ$Q?<_aRy_d&U8^3M#TZX3s~mMDrx;` zeXZ>^PZjggC6O+m9B=^`s+0UWE2for|IETV^J|j2pL}CVkd#YOqq|r2P>Q2e@Qp z;|xCEQ%`ZC4{rrbHtk<&YZ*N$Gb)mw6jDFodZa#nf<|CFFsbec2+WhbR1->-Zlmg} zyJyxZuaqc6Wmf6I0N7@jcU?h=o9ZT*1pR6<{IBe8=5jnsZ5kIjG%+y+^tYYuDGgu1 z+iER7L0V;{<4X0M-^LMSRC!wb#~{dcfNIKxKx6fWa=Q5d>gN}EHhIfu2roHbRWz%C z>vRxecwOLIt1MnHPP}Ty!PzveHE(Buv%}yA3%b8#cV$b1Yuop<*8J^J ze9Ls=5`~8a+E;#FxVMXT*Az5oE!2?;Z}nA`N!P~G>aAkY&WtVJqR+F zbCb3pXkhw;fNE{LE;=iRp_Hz)Wk!>=0dq{})wgSw z2w5IeDnM=6-uEp~+VJMdW=sl2v+0lMUDK}Pk>ZY-u1Jk?r;f}I(9=Wwo^OT%N zq(1z(hz#3c$~$d1H@b;Ft%y$1b1bJS#bw%uDWi2PKFtpf$>rg?roY;l+}Zc7bCXMZ;kDE=d!8DVcAF34ayZ_Y|P>Ut@Ra9+zJ^xQnF{o%>hn7PN82XnKo6-rB2= ze`p^KB1KfH8}?yI-me$^UvLKU5Gb1hC{BwPlMJ=%LAHqRVO|x(0TwH-a_9}n1SxIA zn8GY%$wCF4-Hki+=6Zy=`k=#)sDzDVEiOxfYXO$VkxMe0worKKgcD7XRNk1~=i&Z{ zoAY(o2}OJI67UHz&_`W(ue(cFr@EobwO(4H;{MI*+qZ(Fge=2~Vehv0_if*Jl(+OK3IjV5U8mpKbmz@Sd$MBMi!|u6 zI-jg421j!gNLt1DPX#-J{^&{XmU5j}!wUt}kUSM+ZnxdBaF!ZJlM6cI3|2a2P_BXo#XEMm!$II|v%& zVc;@v!<4qee}{v)8XsAI=!pd1SP=t70+#t*hMuq&W3LGknHm0!ak^}-EYIKy5A*8AEeiQ$#fUr)5Mmro11aYHq%8*BmJo3|mA-{a;2VAo_t!SdIwN zK*D~Aus{j)|AMgaR$eJA%vuo{;eRQSL462C#z%_=5=H+{hz9CuL~W==cfLg>GW@>Y z);Rvr2d~9P#8f4jD-MwT(Q^hb zgga}XoJS>Mv9+2IyN}a>k&Dp*k$qZ=YvZ`%zxuJCqa!n**Ta@?ZN!%(VFQ^@ZwYkT zCJ9x)gw@Ed`nAon(VWXE3z(1Bz-_}1qm#d!f1D(rB}hX}>mvoJx3vBb5~FrSt6k7O znaouhWR1+NlQo3j(>h~JlOpQ&?_X0O*WulO_5YXFA1bXMB8C3>()#1KKp!ftAF`@_ zjI_3`Jy=>dZC6o0T}^$sGMx3PbS`23eK z9Q-pRv%-O+|YFJVp}TeiDtqM zduJKebES^?t@p&L4JvC_Xd7BKHa!Ble;ZD-nh81|3MdDB6kOSGAM5a4h(_I9rBIJo z#f=yB_X4jDT;+p7Hd=67a6*3htcSBzIHQ_)yX=hmd~bKRci=4Ej$^8JzVp_rxG$Ti z-~6_qrc;Dsu8!t7xCmc5JELstp*hZf6*d-6+ogUazO|e?VO(l4Tk5Z0ICo|>QH;+t z-nCLuBh|Q?*r7_QNiS_-j~eTF4wIRD*f!maQ=M_Dn)2Lxue0i^80b6jQKq|2M|5dz zf&1?HzK3^MVekfbs0lps-J2UD8vEQf7b7ir?CAPV3#Od=hKgXs2hN+=U1N@h7`$%f zM`Nfc?l)bIRTmA|WeNm;WkL(%(cqAet>!+r@&fPRrJHrgaHeNXn zb$v{fvjxAyftX`{C<+8l?V<<#Ug)ahTkd?T;Bl+I@A!sz)I1mjo{#R$h6YlJ$r^?? zXO_l#I;wqofgZeur5UJ>tWYzUH8ZnuLc4RnX%g3t@`8ye{1`eh9;W@w&djAU!LY2 zz0UAq__t7HZ#2mJsGtG^RjNA62PjA>C6wl%&?=z-go;t7Tj1W6$!|N1;5~JeGFM1` zQ1=`OLMbi4S>Evwh~X@qTvC{q(z{b?(%-DTrHjS(qS!Mxb0fHt=*|a(CQuMlC@=S} zFN684qtFB)qn$vNq89-K4iqnHN~tK}I+~ajub!%Ry_|u*;1kt$2?V4l?El zr+la)AUail@%IBeB!%m41`@Kklig8*)x3$4k3iQMfdIakU@#6Xh3AuQ1BNdN!zpvb zzLSzkCA~S=e$hLAxxLeS>t9whJ+wC#gF1;2hyI0Tnq`L9^xU$oxZ;iHmAdNpO3!Y2 zq1B&K&ExRGe}N_kkv_?WX_Z3;n+ZyH$r@2OiF=j#qgvj)I>?7SdIi5|bGw}00(Nmw zZ@ALwmV)_qPM~)V&>1Xo?OsDC%a&@-xzfm}e4?dJHLz*GQ)HLV=DQcEcBOum=0=_FyrQ(N&AUs9pVIZnOPc6$!S!$%lK zNqSxu!>PVV9A}nW#T?90Nxvv21DFj}R>xd-Teq5_?&|8y!8<2~$2~yETgf?hpNMB} zEw{|~*1Qg0<}5^b1xt;?tr7)yHt8;S)Tm~Ch+J3p-m~Ihk*2A5bTVyW5l15yYq`=m zN}B4Nut za^_t4R@Ka7F&t+GdYg{!=HziSwhIm?+q;Um1+rl}Q6cj?q`3xEm}Brgq4x1( z&v#$%lX3p8&|^-q$~b|fX1zrGJvqmbj*8TZdkD8CCi<8t0#*u|^9%o~vw>sJE`rO+ zri>hTx1_@oe);DS&`#DvCWAh_o+X$4I8Js3dCyKbo$_KD`may89WsT5{G1(~f@A+$ z@k%f@{C5V5;oyifv`a#q#9m|zmyfiBj>gZ4=;+>B5NAqFm*yZ6hJEKgx+961c^BGo zBpai4Jrm(<${nh13xU2MH|Q8v>PMeOT}thE#ZIHePVH`f(;V8G9ashBFS7{+up(Jg zuyu-qnANWP%Uemyu%o#N^f+m?m>P_rdxjalq=R>d+`t5ZDxexNcdYf*Gp{N42sC(c zr)`2eSPj4)HRk2ZVVaM4$XX=aD5#!MRw$`^8%wO!V`h*^f&An&QCK~I0v7v#ITU9r zmQV-%59_OQIc&~;h&pC!2aEic5r>;$5wk8B@bw1`;TxVatjGl(*feQ`gY0sWX|sl> z7I2>44KpZCo7c)qb)=D(5?TyIGow_KxB#r)E%#(dWl$uiw%y|?KrwA7?7F89{Q*69 z)DqJ*xA&^4Ew4+?69#V9Jd3llX`+_hB|1*sEsf2;C0~5C+RTQr2W6X?@wlH3#ev3L zwwaWjLy#x|m!-?LZQHhO+plcfw(Y7{wr$(CZDZcwJ&T@QPiAC9E^?I-c_Q-ObH0Og zX-*CALqSWX1-||lBV9gAdAVfKpN)TI?qrl}qmAT!J{|;?&niE!($#G7M42Jdu6Tc> z6=Q5uUQ#Kquo_J76XgV(6JolSY=bGqw|=tqAU(k~OwJ_NGvhD5^?LsWY$@(?lZt`& z46usHt)w$2Z5I;?+OrY4^Zpom9ni0-9qPgc!)BFnv zTT9xap=o^SD9p5s(!KYv4ikNFlt(c_lzg$O8&NfzY_Y0?OjW>a1Jc)hZ4%s-Ff6Nh zSO9z^7gTeX8#bRTzU4bwbLU>lhkzTrx1iYw>Q;E$q(x1d8IVo)-Ht3M>{jU*ZC6cY zTn9LFt^r1P8oFASIJqu3{;;{;(?&O9=dBXmjiO;(T3<)XS&l57X~9`%BkA+8h_3HDf5XM?i|mmgbb`o2 z1bWrUmu4608483uGhgdcY4!femx5iskKPeQc!<7${WoI6j*+4^ex0jauENMIcj+l` zSd6T{V(<{&$=s2};M5^e;Tn%)!qwSL8JbRq0DNWxohA&x#)g@~6AO(ORdk!wET1H{ zHetGTXig7VHw+=VGuwP#KFClvxoR!1S{KwR&^Hn|4yfLw;OeDbO(Dv3Gc>gpY!TQatJn%qSl#uD(^{IK@LMR z3mKQ9{WB@n)0^A|6qqRd}8M+X>4rF;{$&Cl_EQ@#DStI0lK$BCqhT)K+xcnZ>#!(u~=J-Sp1NT|d zXQJS%${|4Y?56;ofwT1%;`mnt8@F}n`Ld>tSx202$8L#PtXywlP%~{E-w5LtY>G5q zXA#x%RERwlyKZQKA#EkoER2?d3?8EywEp= zYt(87uqp3NqYdeDADCYCxQlkxH0j&1y^jg<9nLJgPp}GjupMP%@ymC{)P;45UX~(&n*R!yL>Uv{rX2NAI}#R<>x|ClbNsrFGs$J*teBEF&3TkR zBWy*xY6qLw1KJJ->Z;sxb`E%_6EhsV?jD<}8URU~o$WxjVBZTMYgOo+tOP~QH-PT} zVYBX+I?^bt4#zGBwrX1hnDBiZNmQFqxkAc@hc#e6AX@K04@_-h8$Up6b&RGaZ5cZChWUreL)5)p$72`Qo`!EnyAT)H zSZqK9RJWR2qoFWtra3x|@sU8m+8(8ow~J^^7hFvttcm)fl=M?u>G`SR-y+?{U~zPl z?2Tw;^26q^k>cO2mWbBedn33I$Z|V(g$eAUJC_S@4_SdoWN+xOG=*O?YE4%(ophDt zdljWQxQ>h3d#>f~1dH&@*XtC-Pvn@8wvCbtdgGOoE7zDY6bLsR+5@MG-B^O7STT@V z3e+#Wk-7v3XB=0ZTy*R|Rc$cC)+dZyDM5eIye2#@?pm0=|Kc5lejmH%c<%ZVrYZd0 z2gt1e#4SzzT2LRhj%-H|lVmDff3cVN>_RLfPQq~vQCQ?tImMVQn4oKf#KR%w z$E^QB?njg!G1b$Ro$dTS@H_@`UHreCC+Z8fWhuSX#VVcm2YUT-RKZ$RFcWs%xG*=` zl%0V3dvR*^SW8JL!QBXYH(8+%^a0$1%{ z6#$Jp@hTGQF+wG-xUCCl)`{i)vI%#!dC^T6yE9JaMKf ze-Nt(c$kJv8h%;01>h8<`n$|>*i4qP5V$}B-U3?;QW}W8L9*BcSdrD(;qM4AgR0iV z`t*3e(}pa_*uF9Kr-^#@FRnQhGf8&3-Zz{c9ff1irMs_o6-(#<-l4zJAr}kpT#jku zy%OUaA{lR9Gf9%_7xN5d29+X!O9O6kExn_22E0&v9h8xkYoJ2IE0l9`#e85x%g>zJ zO%OOGR{V!su!_%ncYP|X4)G|os10To3wlmmZR0gFUV^ zo{uX1H!jZPI^dh)Sbt1eeD}qD_6QQ)ih4|0of}w3h1m%jLki?sji@g94#(JC)`s(> z*w}esy(RS+ui`IYr-D$^du` za!N2nIjyO>+1pebv&N;7fJ`Dleo!dY1YmflApPMyz>PGTA1la=;=+sC3pUrNGKZH1` zc_tY7u)0^q9%MY(dBZ&_^G_T!I$_#W$=5)RpwsBN8{Aw_>)3d+`VE~iCWuxvt|(q` ze;rwk4Q4(R(E+AX6?BZlWFHk^M~dZ^fCkCss4Ouk2jO(%lM(MN(+-YRdme*)$3POhW<_~v)Aa8a za?R3<3&XTQ8-QDWg7`2fvvEs;BTa!s{j+ve#E$Q)x;OE1VXi-t%8EoDZR0NQsZW%F zA-%*Nc)tXY>46oEe~elM;(yOGwv^rx?%IVx_>JtwJb6gpaB)Qe)CSkM{vEV zMfV`$>r)dk!eK;TmNA=o{Mwse&y~+?by|yu3e`*_R1lYczUZh6OwXx|Hhd6sFtWIC z6~)mgV2M0b0J3`gBCmU^2>c(aIoX;;?(1nCvTkhwsaS13qNaPd(GZn-aRJdM`UJ2{ zJkp&~!fKb~=f(yZa<}3QBKbX3SzsPeUPF$n4_%ma0Ued_yFo2CxKxf&z27&ZUrvY~ z;yG~uhiy84ja#x$0(6o0Cg)LXF(gX)v;z{4_g>_NXahomO`?ArI zb^!j4QwB{5tH&T$?P0?3-HUv^Yog9v(Q7wXg{2J;N@zXE&;$XF*#FLp3U#b@Y) z#lZ<3GZV1V_&Ri4)`l1H^6=I;0za_0L-yg8 z`|ovUzd#WE?$94mmQ#d{t2Ens}k2H$=fdN40O=2C#4xR~e4>hIy2!-0w z3r=T5wmb<{S#oNjT2?%jKx|Z{g}F)4#U0rOqb*2&Rz?ilrLG>S_IbSZ!N@}y5l-RI z)_5$DMO8RK>C?Hu(gRcaM9SM`T4Fum-$3k;^e=i(GjekJFA~LVfglA4nuRB*wY6h* z&EGtYOpwy@D0;5@u>g}|jr*d_#@YhYREY2yL9{+mSy8@FUz1YEww%nVzfnHf&|xg7 zXbGzUL#X2=$l5lmohwag}c zw3h&t2OwH5Qs|FDv5uoKNMovhA2o(DZ#Zo`=mjM(WhM3mii*|Zipz#rsWk**;|<2) z(E%gSio57>Tq1Xp*YIF_W~u7SxKQFJ{o7;PsFbHsdz%TKla)!c zB46^PZb>hWUNOgbtQZLUy;5FlWn{c%bNzj5GD|U5T@Q!Ou88Unp$QEk$V$Ajg>8p@;gzFx)ufJ0|so)2!9-Dp@toaWu?lZCfMg;XeUxByWD!8l3f1knMaodjNG!$2 zs~%^(t&bDp1>W6-RF~|L(xtVfSF5&d<4M zR;yPG409;0bV20v1Wi*@^D2uJ&C=nfvT2f+De=fMlwRpc!M zdrl{pcBu_9G~8&5kx*+aEXT`KSn!3I&RKX6L_T!;)y^L0%*t~>Xo}f7rO`xVgPQ8ui0%W9u*xs^RUsn z;Q}Rlg^fZ1JLNJ;?H;FDfHDY-RW;?>9MLcKe|{aKK4Jc#1i8N6H(uYnr#noiWV?O( zKGQkdHTaA>B#IUR?@(;0V=6#-^`{;mD{!7B+hm8Scos;HlNs79fh0c{zSy?qHDn*6 zU5d=>I#6rYQ?`&mEvCC{PRH{0{B=CfAvBaU$)%czoEax0o>Z;AYRQWcY!+_WpSR%F z1~Ak6i|+kq`_|X)6-A7!c1|L<;l%GK8xxSA!dE!B<4v@t#!Y_)F_8S%4k3(8@b|2J z#fuT&CF@{PL92LrgBD5B#N*hVDk&Pdq7!KqfwN%8WjTpaonr||Pq5 z2K|l=;AQQ$A>wgvtBGokWktRAXP+O&8)cn{1hl6Eun>g3*E|uYAF9dg4Jh^Fxpz;A zzq1mq=j?U!I_(&;lXMaFA!d2HpC=^b0V%&XPIpxiTQ~Ymr%yF}90rR{8Q_2OnGCqg+N{f+B zXHx_^hTq@ksK+5A+IA+lj=eJMhZ)5=awL7$9HqkPcI9Ms?r9&-f%Jo%#h6Up1*$?xl= zT#zkxJgCwM{?hfM8;ra2!GSHUD>_SY4yTqiNwhTBn<$&rmdaafim}JQB1=4)OXMd8 z0}Z?PuC`}IT-3$hY|l_yxcN^C+UFsk_g`G6o587`H7LBPB>Dd3 z+oUaCdQZx(qf>xxbao45v&1P1~-S}s^lmsLffjZ!cby*>Xo>hHk z69}PRwa#s{`Zo}(C#&4&a9P*#NI!N_aj0NQiizn~@a_RTJdI1}(Fl;s*faejdZg+z__dBhh z37mV`s!JbuVg-eMc?ucWIxx#YH=CactNF$|apIWfB+VS&YXpJO;}>CfMg2+Qt2i`7 z-l@C}MLxZO##-m7SDh^#%=6*UYZm#PYG?F}g57Mf$$0$lk!8?)^u5X*#m$CEHD~|2 zHucop9Sv4deM?WuTD!e0L$H=zsv+C1*9o9R*xtZ&Uj?%@h@Zi#&&wo5)!G$FJ@lH} zW)fz*(9dhAD>xMRd!Q_q3(SfLCetJPlge13y?GNf*lS7>eIFJGm4p0x3oc8u@JN*( zh1VCtrnGPZ(TdDM$D-O?Mhdxp#}NRXK5+K-xKKo};&7@y=QOjRJ=NPE*M9Wdxh5%; ziUM)s!aRDJsBqdpU0ueNc@isiIsA?RBtQ_-rF9E})>2y~x5v?IFMXEY$qATIuxJu7I zQb8N#)4e))iUh1)T^|+&<>O+xGH*yO-Y?;LiB(;Z^0y7rWhY`iXX}%6{w%99_KBf4 zXg6(RY^1OJ(EkTZ93g79LaG4(ke>NJvBU&w!twzB<6!;&#uD3D*wPt0IjL&E0I0|J z>*_$I>b?S^0K}-TI~H*v`1I=cld!5LwVO2x;|xwV=Wt9${~4Ll@<1jCLW-u4+&P%& z)rV}vvJaKQT)N=f_UULA`TjY^KksBA;fN$q)GKdVLKWsj70Rm*&#d4IDrnX8pSw3K za}R%q))v%oab>Gbz8t~e*g!aXm$9_!AQT5t!eFu(t1eaqB77=k@b?!|*9xX1L3%7; z>1j^`I_irb0J#EUFo(*|t;(6yI@RN5=RT01@7zYODWHn*Tkj_XrU*8wKoTg z)?lVfqx1|bH3Rk5dnpKyjU$p#tP(Q-z|azs&Q;FX4>_DP07p1L&{B=)3VgvfdI)qJ zO(s96Gck(Yy)15`+CukMVNRIaI$WQl0Ki^^t9vvf?Z3=?Sr&5I6U0OwdIxo|&xGc+ zf?KhO1$u?f6i;VBXmB?R(K%5kQ%Ik0Am2GhFX4^|&qrW_Nb_%bVDy`0(>p~<1E{6R zFh&P?w-*(#ZfIsScBiWV{ZqmOm~~*#pD&sS#DtTf<%EDqq$k7#eK+xxa5->SgtW8* zHj^dJU?)1`>mT94lQm6)0|;I(J1>so9Me&1kKT+O}ZGn2fdwMPKVaR!O<5SP)imAi2X9)~z1CAcdyH#~FF*&CW{SauAcOu5?-C zcnGb3d5ZYlyfzYCN*zp2a{p_{V+{94wYUho`cha{wzK@a#-C9@%+r<&7;dT&nKvhn zC|bzX+@^Twg0*YqIl_LWE)%){&641toNaw<9318IM}gT%+}me&4zUG%uX5y!u8QHT>)Q zCssPMq(vJzvPJbRb>~P{t?f&-Rk=dGGvpl{^!8$%j(EZ`@~;OsyBDz&n$ES0!B|udp||oYRlopEvdrK7nHU zbs?0y!j6T2O)u5I-ZSc_ljMFbzHU9m+`wi`5O3RP9r(Y%{}E2C)tbr?5CDK2H~;_z zXs9RV;agPQfUO+k~%Wz!Z=|;$XeaGW};-dq7Dhi z+*vb-ZN!jmlw1casD{qK224l~Y}wPulnwQbH@a5`+w{;GwOk#$4ahO*r3sD{G zz4X6D2>pTH>Efvk5>SB&L9nUE#b26XvP8(9AHA*JAWA$$Km*$MtL>9!WnRnEjY!jM z5@7R}M24i&Mw-M6N2m0bMIs{ztSFaB1d~u8pjCyWKE+s!TB6y2WKBnFEWU@WoAx3s zZO7r~11Q&)@d`Y~(Z`f48*3LX>*@eXjmC+YL$zxJZ79GPRS4jTbW$$l zPiZegDZ{>CiwN_8peg_Nfayh#V&BEneL$NQ;Oq|4xPNlFPG$lKQv$QWnXfj+dp>$K zu@LINS6gu~z^sTh(gOD#@|@T=L>AQjHI@+4J3xtC!$iTbQU(DFIPSbAeQ*xCNW0v=_+G#yp`rOh-~rb@ z91ieqK&8%4TRy>)D@2-V;4i`PIjac#15N9(wrJurq#)e$aucna{`&qLmabaa?k+geRC-p2gYY!O#(`; z0X{71yt>`tfx*1pyItWf6rj%@eFDAE=2VB{O>3Z{8_G9#O0Z0LZI-x{3=mHKZ*JZNI--v9Rz3~a1{-zNPpth}u>EyS=RN6;I zskHtj0N5}B4{9L|60SDv%zGw(Djn#}q>F$?XKv>}_a8ekMq4upMPhLR4)ITwF6R3n5JwyRU^yw(HP9gHom=>PGU%75;STX z0&RGcgIKWYGN=9Rm4_(LVlk{SH*7^gBi#~_oG|dmXsA1z9CoasQz8hPG>=4`3e!_kd1ffEf2>~SaS1&s-W)0-fLWE(*h2;~lmz>MbzX@!`X z4Io(s3qWC0DKVKMXiOR|BB9G>)9MqW9Wa9s1At&y5uitTMoZkf>68egjCv^gSms$1 z!Uu?k_(BQ5h=o6C;`-hCXDogsq=@FFE^Ul@%Cj}WC@fHi*BGM_JC{f(1x|oSG(}x= zt%nm?$G0JACz>R3LvE)7Wd;M+dyHJE0zTfL?HTCkYJ-gqr6cMLUWK^WWIzrG#>e=k zd_gTkj>0CJ9#1O3fi#}`NUsT7@D4uK_deQ(KxG2WU}A)mL{Hdn48p7B#fcf%xQ`x8 zBu`lYeU{tvA>o?9&;t^?PQFi9S8GKjWF-m&kr_k`L8iIkzdu~!K7TZcKQit#N`CDq znG~y*0^OAK(RFn8!NN3S=3s!gwWV3t$O+V?wXK)4LW*(~bxk&3VR2G$X_VoTuHBV&Gr~j)O#&J%U5A?)CFT_NaKp!N zImbCh9N>uP0bYT}0L0dzOkgtUN5$d!(I4N`$P7f`k1=fEHgI@g+!ilH8#WP&M<_}$c&*hZ;>R@X%WppuFo?-?nTdGu*?tO!25xiK>HGIot&W zpaJx-oXNmurkXc~RIelL1UD}Q6t#zp@#&vIfWLp98*jsvXpq6p&IRBa1JD>Vg3Kfh zZPuQ5rjL*6B)geFt0pdgpZ$K2L72)go~9Z()9*kxo^q_W7z>Etg3iw5itg1O2_R~e z1}yyoR(uqUS+IHy=4{L*yFrT5gSo0sf-N{D8wjT~K8H$WwbSt|c18|^Ze}qRK;c{; zmTZmMLBcc>>5Sk{myOtx-vOYUsVTSzYCZMHk3I$FA?rYH=n+PUa~V}}ghMEwuaL8W znG(8iB{8e(nYh_>#UAP+O~5ieTGBCJ!`N9Hz&ZuEs*Jwl=qfmA0R7V0h!?gl!%@O+ z8%6FhOoTdX_?1qqqmR~!Vhp|pQKyOl7>iH#!-2RdGM(`iVYo4b&CG=Iu6YU1ApSh> zFA54yC?}q&zNf5k1xO}XRYXK6NHajt?o2;g0{8*YQHk>rRW=v_yT-H!co`V9#k`=~ zD{P*^HyQaCBbfoQAx4Zk2HIe#!3;tT%cj$m;TtrwH9(01@?qa)vo-91`6B}*tFg1v^(7K37H--#Ju5SuYZk<~WIDeiT`ldS*O>hIL@} zA~L$b8r7i<0Sl{mzpU6khQ1J=0Y;rRb0u?!ATnW*8&(;>fGFk63|8x}?H8UB%XvW? zq9+W*GX7B7+iCtMr*x$QzhAU9^iyd8rrqc@!!;b0gXa+Gka`mf-+jab~ zm1aHM0M5|ONiIs4dFV6v)QBUmtW!RzhNXMR%{glZDsd)?B2+cC0Mx$1$d2Kc5mqK` zoMn3oD2Dhxo9yXJZ8#M^$9Z&fL1Rn6M?9~u=vA?`m|7kv@w4;*z{oFvKpa}+{HxLe zU?9I>79x%6b_-3om4QHd5oSULUY0e}OgUkn!USmqtTVCS^JDl~!8@IYSF&00S+UVv z1<3ravFt->Eiaq^wsl|4A&jyoa265%MDp$!w7SDo8*EVKO?LrZ4)Ibo!hAA}um~e+ z=iqg4$o4cdwJCa&Wi08%7|HEa#NyrwKNJ5VT#c`4%jCg--x~@qm-B9S3ZI z^}tPtoIK;G7I0R)ursF5lVeL94+X0Zjb1-7P&hJ*H{wb=%*Jh~vLtbHkOhC;-7X?h z>v(M!xqaP1N`-&-bFh6Kp32sT{%zq!FAJ+mVhW>su*}HZMVtkdB|3rKTL$!H`wC2| z<`kXV_N&0aLFr~1pAasbw!E4s?>H1pfkFc7noRBnz^x8EE zU?ycL=$ux4$vLS|H@7~dQ3og8QN0TNQZwVFjtR`dv=7}}p&IPfb!t9Q!|Q7Qb%H0O zVBHas+GA625S4P@K#l4*6*(MSo3|?_llX6kLC3va@wN4PY-d3Hj91h%#SC>YbMXb~ z37d=TW-nU0Rd8aG9^yPFKiv;HenVTiy8{C37EyCL$fRAiPtZ&ez8c3u+9x)xA zTpS7(i?g;Bv7PWN|06e|BwrdP*CY@)c$$e^#$kZ1^$Wwt#X8%M2TykI398C;p5;wO z;#Ca#b%pN2(=53N%=h|$_4=G;1%~Ufd&wG&qPV&YP5tg8Q_%)2WELxn@ezr>LOs&j zO;CVqUY%&nr=%X&@qq#I9rVp{YjPI7yCy8mtJ}ytp*V>=7&X-iV=8CM72~33>;nqJzSAXt-!d#m3Bm9j+Xr2Nm7&;*x_=fj)A>!XtIewQ-k5r>p zp}u>4paBI1*Ws9Do?s%Rj44QsWRDVzQIq~lRxk~5ptpX1F5`i14!mO7yy4u%MLz_{ z5k3PrA*hXW?glP*i2@A^^2FjImh2@q%ZnRDhiRZ_$6;pm9XWqE!zq{)d#y zUYOO^I-%k3eJ~Y9{wK$t#=SX|QgUJm6RK6OA1~pWWLEJy2pN0BDzSc3CHH(Qs4vuj zw-DjgVGF>jzMsb$+O}=$*N@aGVFyOX*didyC5~|QdC)`P(uYAS+bU&3|EWF;XVHA2 zuC&!r)okgdCZ?4kS}F7sr0e|f8yI<@kj6EaQqG^F;>GbSffr^}fmFvDE`y4E)CKVjUbq+8SdN)H;T-t#b{35z$zIyhf)1!Z4^Se{ z^0IRCp^<8rL$VWW;MsvU9|Y&_IsoO19k?udmaSnUTKXDlP!MovN(Hgdsk}16r&IAy z5#!O43=Z-acX{g!Wy+46#ZlHbHG)7&C^n37(RPm~58zxha27@TtO&RcZ0p<@H#kOm z#43AagU)rRHSZj90z~$G;pXSV^s0P?Kb9i}>H>)+5mCi9GX@C<>wC2r*xEs{My7qU z??n(T0*y;X0{sMG0hVK}*cY_ULAZj0}f)cW8hprj>M9z;Yw#K%e4x58 zhHkGd7Idfnc;SAcll1c$Ni=m*#dhqEb9`@hCUS%T=$$8YCJ0@a!kF0UT$dqalp|HA ztod{0Za;dg4;&K~)!4RWRpIv`n59kX#hZ%FR}#`})QELYT+p@wAJoFHo3tq6)Hd-F zQ;aW0mt21S8?`UQbOlrjhpUDgdD*R>2uQ>O`G8@`b`W4jXkKh$0=d<>{60HELHte! z9}%1{eZtf$EDT_{&4$4TkTinpWZEctMJjRwnPR&JMI(7J;=M7f1Bskd^}VxLES&a7 zxMKN*aA}%+eL{P{LO@*%adr&{e|gUx+VL?V&!vFK zRlp{S!1(z%(Ey7EmmqtN3Gw)SX|e}U>`X!-J=|oS#)six1c!{N3m63#s)eWl?AGq~ znD2+@|CSJ}kZ8FjQx{$P_NPMA1g_TN*~#;W5Syu1FZ1E3eu_b4X(wd+$Ie^#>$luv zguyrswfh`0RydxXr?yRPvgg^3b>22073yr-!steHXY1RR+2^RTo_hQ?^fetu!yz38;*cjj zthkIc|81|c5qW_Nr~jLcc>VV}U9Rk*W~FfFcdu&fa(8~=c9SIc@%^uHb-}ZFbY-)v z%|08gwkkmLs~I3I-{iTB@N~p)-}&lj&DocPo}KuGTBQ~&bZ0lXDbeRh5orTvKmyr_A+|WAdmuH4WwbQ(&0D<}1Lgg8 zHi3yVZ)7UTV*%_dZ)|fXm0sjAVY-S5PjbNBNTw4I z3X4s#2}OC~vmGd*6*j(6?G4mlgI~k$ET8V~Sb0zKh9PrAqlYIHaO55w#FJR#{;dME zPx642h;S}Xby&5f?9ELJpV(0`5rFvAg_eVAL9|u1Z?H|-7^w0_~X{VehxD z2b(q)(z4p8V=ihq++|-@B-16TF8MP(g|dT5KFlL01kWE>Rxu?PR@??C)1y!2*sQBE zwyh1Z@!qhRD`JMPk5up-8=DUTY#Nn$`g}5$hs-FzQ9&&pZ?d(629t!I_wzi3i<|={ zS|wM6*<#n~YZKQ{Yed|#Q+_+<0ZO50l&)8zl zB!KiUAWxE|9^IqVj%VC&O6IKA5S~wQHRb_#qi_*@^;1RGv|6651AQ1``E% zHQ{td2|STp6DX9vPxnJ2do1q(sF||3(9>14PSD3{=zaz#ajrGP1kZS@EM)1fJJb98?QjduCIC|=5cLEdmCZooihPy)UMI^xkylnT#5d?v#vZ~UIoynWXLn%=N+-35-TDAVv87zcD8 zV0MM>g{$bxtA|sqUBb01phI(peXOUbyGNHJ!XPFn>&Y34nPb8mwibCpgRg>X=*v^u zqs+~6r$$X+~Xw zClTH}yYX*cc$mI-IdrZSgmNLI8xbGBr->9yG-U(Sy9f>+M%-wahKAKUr$uM;2?~J# z@mai+9>ePi>|-uHtrXkV5O;I!IH4bW%bZdWNPj%rz#%!?kFcZyGp>Tr>zut^-}z!G zS{?}qGWneRr5H*Um-V8Wkwi8UpWF!igWI6neznIFsO4`2RG{!D6`Ni6V9SiHSs${) z-N(Vj$G`keS*H9IM4JrxN}f{+VLOA}M{bv9Tx&Fzr#ygi;Q@eu`3L&$a0A}#%ad=X69T^)FdJM-?bijD=g6S$nI%gP zcs^|GEHSNpL#oOK@NM9j2GdAyK{wrJTJi;>v@ z(9zinLLKNhk9Y_>ysDdZw|({@-!N*Y+SUC0pKR$;CXfgjNMP*3z_3ZFsFJN^Ayq93 zjALi7q^1QD(B;OWhzhxoj&)vq)f|N8P2S3;4g44fH$RJJe#_QQ{=0Xd9R|e!fLez& zZ@*;HtdbG1p0Te>rZ28)szC`g0c#{kSGzzBhPYX7sh*bvSG(Cnoi&IF?3#+zE$MK4 zQM@@95n}i^+d^u%vf@rzJci#h@gF!EMTUo`ek&wuJ(yp|_8#hY#nRsN&GAD}smF|6 z#(~;QIDpf6QQ)s$MKJv2hm7U!2Tja*o63JA+zM)v&z_n<+3yZ4zO$-IM$K$&%bf#Y zw><^;W&rgChrBz}R&En?9}dBc*!hi5FaDcfv_g-!DV?n5eYv^Bq=>2e6zv%+BJZDT z)7HP?JGM`r{X8HuLTzsFJGeXW+dNNg!Sw7GFG8szoif(ZIET+Y0)O#YFLS}G1-mba zrkeTsp_M$e<5WO`nxXN#WmkE@uw7)@Y#mcOicj2FDbl7S$&~~6Y3JSiaO3_ZtHN4*p`PNfUuNj^boG1O zKTbY|D{ng*!*^E^j_uA^vEHPull{;5zL$Fw8ySXC=>&Pd*s{s~xEK4^i^OREg5fjV zOro!n5@2C}MUwzt?w%_10$4`=e%sCS3q#&j`+Cj1>(W!O(JvUb#cF;lk;eyQ7QHT= zu~P|L(QA@qSI}zMfv=%GW)F#RlO7f003>5|7m_06%zb^Tw}EV8}oy`p|O?WAJcyw z_I9@a@jpC^B$|P7m0Mkfk~JT;A!@u)A!7k;vZAVe>-$IRNko8vRUw- zp*##cAH_uua)SE4c7jl?gy28RVm%Z}JeV-NUnfSMn)*A>wYdwQv!)KuSCbw~^najV zs18<(8W$HU4eS|ne96CAAU+$PhGpAmdb@gWdLehWyR_oS2V3cH{ign~v-D(pcj)oL zF0}q7C*MfO7HylrNI?s-1u>1Z7>-P{NFB|V$Osz^9UOnn438W`!1o7gvQ(b1_e7Oj zx)eAd85bEg*$of498t{-L8fPX6P#0M=&pFNPAW%)l zn#WN`5QOKDlffjvhd#gEoyP9{XSMESmjb5zT84m5tyTHzZmN)SzyTrC$x9tpdW$Bv z5d*IEc|k$?qIxfQgegI59#HtDxQQz|cjv%6v}cO~+b6=B4s~bCO)zK4O&l)9#|xRA zisDMO-Cv>Hr&8}17i@#r(M6sxw-+1I9iG_x81(kN|2TQFA&$MIGVQ7^rW~3~R&W+H zZzyMEl`QkP8Nmsd5{mk_u@0R6Gq#QuExnJiU^MU=laxvCXwU*VTVFPZQ0)&`)g?)0g6}@MRUK`i(1fdXuqTEs9!ywo}4YfO{LO2V${b! zE45f+cLz0#3TO%{2f-9^ZE>zTYID8&h!92s&W~lXg}3go#MIwIkRpC&85fQ%lS>(p z!GHJZ1^Ob=`54%6p5l>XvILA`fVC2{HiX||q!@{9bqJS2HWXE7K7iStNsN{hUd>{B zz%UW>CmY-pE(lqo3*ATxduj)+WnBg$E6wILI6s}~dcO}}Lk?#CnpG?~RPNUGqGNlG zH-{(tK0b6WG1i{JaoSQdsk_jmYatbk+0T4vL2Jv#8SjJk9qtk6mP|E)H|wtFGJC(j zg;+1vYF%i{@+Ok;%mCmoZRKdhlR_`!mZ}Z|LnSi*#^hB6M$4LYF~{U%#}mL1=^sSI zKnGZ3a>o=_dnyYvb^@eq#;KKv@+`FUQ@q;pu*a>`f8)xGG63L~g@(c+I%ZOioiOS_ zw+r@o1x#m9t{l$iIM~>xdiY z^*PZU@qVm-D>5=O@*7iQjtT4vnS}9BMzlL-kxz5b0L)=sA$M=naF-_3RCZg7`zxA; z{7T{)5^w!D#rmY4S68G9;|Bo2?>sMljne;!K-fxCS@>=QEsgO3cQCynCUrWEGM7aha#ipp>;+PGP^S zEa`@Bx{)Sn&^dRj(V4sV7b8gAl1KN5|4e(sy1jKJg zdF5WbRw}&yS7E~ML_}V@i>8Rrj)^iqu3?(OX}i{!p+K~aNF8cbWyR- z;A=$1-I(h?I!IzM8$ZC~SkuefS{gx7J@#eXO)g&l!?njv$sWQFy1i%0l{62=&07=yBhVHM!_jcbdnEulsDT9%g#Q6`Wu5a@C6RqIIWV2MdFg!^hjxM#I0={8gK>C!XznsF$3HfU|nLLo{J-4ay1!jeZ3a5Z7Tla#9pqHPa-}>E$}OZI42Ycw5<=M z=2{7t%Ax4$jmn$Afh**wQgoc_GLyFs16ll zIC#>}G|_nY%V*+q;OZX7`DuOglbsoRzTAq4CCAVdB~vm55dB)aAIhJU|Au8}+@=7C zOm*9niJhU;qG< zi2uj>LH!rw@4s6=(tpSLIXfBC|C1yAPpkJovkB?{-6bvUOiVrKoc~_}w!r^IDRds2 zq8+2BQdC%7l&7Oxk*AxWr;wmspayeVs_FP4GJ-?A4zqvY{ha6@zkh7yU!RWh-`&d3 z9{z(9viv8@8avrLIG8&9lV|>q`}-$zGFN@mX_ElKcUFCFyjjwWM%+!zmALOwJt4$| zjL8CEQ`L zD~=rJTaZ&?*`4}?3_K(|_>>m+XpP3OA`~b;u@TCP3Lf$@7g4JDY1mXEP78AwtMm!H z|F_t0bqJ5u!FU`LTH2lG4YMKJg~zUjU1A#rAxtr(9>_$s3dUgZzkCELjQ#9BmlVhe z5srhP>iZ1rapUbHrxtx&IG5lw3$tCbU0p5HPoV>Jl&9}jEU5`Ogzhk?!P72rAGsNE z%|SIY8iJt(;?i)H!fFNsmflEQ-&1?Cb8_EZkcDxgvk}X*J%_siRZxijHKKL~1NSwC zk0MmR>eCu={;ayz3@*T>Y50H?=F)~*FS0zX)-wA)VHQs!@GQ-#2tJaeB$O6IScdQ`jt>H$VCZ#I>vPM^P4T>zrv zV~(GH&k-(X?TWUu1`Sh*fmG!HuF5e@Kd;1=QiwkDYwTA`_3EO;qFq`!ov4 zo(p_qbqe|Da{Hwt%&(y}lIojd_3?2Xrx1Itjq(#TQrppXr15{xpWI|p_MW2VUbTqCg!?GtQY7H&sfU{wCV2<@q@2u zkx_SMXur()x|`A28J2gDJM9UwYnv<>r#%bJRYm=eMw(;FCF=J>i}fv(>g5Nv7G-cr zdo!m+=|9zTX*=R7h7fqU-nZ8$b=RN2ejhadDTMkR#+AWm-qX`-SG>J2r`>sJ+a$Y~ z!Tn>5R}Gbw5P^Wm%ujsq9VM_*d^YEKnaox@Ud*3x`TNAk!UKSl8_FTc%%>dZvwEhs z=A+Fv7@mY_z{ywm_^MZD-;(*!r#p$Khm!lW^pfUj*{iC^ov{97nmYr_nIo4(g3aH-5!)ou9D#}bn1X4j}c#0I8!01PnAbhp^W+d zFDNqcq@fxF1_0QG|G&eG|IV@gx0+M_0kr>sqJLt>zrw~`b=&x20)(&LzM#qDT3e;A z*4S0;_oFW;Dk@EAu+z!y((g|N0fmMqw`AG#AB`C1*(reRl=)6Em=9mTUGao}K*t+) z01R^ql#C<{)j(VgO}aHu+;;&+h?LSeu3)5tVw9Yka@?|57!}1WC}l^%Ni$3Vn-s&=Q!g>kS(f(c1GF9Bs&-zXaqYidWnA_A!1R4i*dg3;& zcVJ24d3PAv21$Xg&V5Cuw~cY|%6_k(p)Y)*rKn?L8s%s_l1Q%*>yxcF;~X(W4O zaYrqbMWzokboxos7KM*(%1F`Gt26_o%3Nk#Z>Ug=u(mEl+Gy?E$#^x?O?dv)u-tgThxj_e=I@&C%@CW%_A@`TTsg(bGe~ zJiK<(Vl=jpD-JnDIc((^`4}y|Ex(frxPTMd1cy;0AT;rn{1&DC9YE}){h)uLND1Mx zW;pwA@VxfsXGYA~(40#jn6CH`mSe<}VboH$wU^#!B_-MZ_i^Nr^LvKew~2+qR7QRe zhxkDkq``&+_qI!4%fWO~Y96Nj%9!AUg7bBD_u0cfrTKgU^HE?74+7tMEMY{WRqi+KL7N1pq+9zKjjBvfn^;>v;-}z>x@JSB1T-T=L4a5z6 zb#LDdS#=m+)gDjPrY^?Y^mDzJS>!=AdSH6x{Oh+x5@!fk592qJ(Q8ZBJAL%A{W(DE z6!#4GF|RzU3|+=S3DbZlKBFWf-rf~5E10<&EqeB}_WSrwl96(4}#>2){o)J3m@S{4hlN!s-`~Vc?es@R)=VS>z1#?>Lc2nHob~jF8PY9>b zOT^_{UKD`Z{az^3(aYC8{68ES1I%6E$shDMNBG|y8Jd6BW{D1yS)@J*AZ4urNdmL+4;?@VNx@h^6gA9+RY`CipFG=!9s| zKg*=H<_wd1OER%Y6ReZ6KjIPCbuFXTI|e4S5UL-?)WkVBAj$&z2$)+j3Sv z?;~gDGgdRI#jeN3n@vu5Qt)Kc%feH4H8!;TqCD&0opj}y@w7*F7qdyq#+{ULf6Exy zuHQ;f7FiQ#A%1|dRsiw>S%6QzlI0;%vNEsWR+1C-=Pi_alO+vzo-cODM56v0EV1jU zkggRIjqnX5L5Gq3R!p6P6NfUzc9`c6QDVck;Ueqx;oI$L z2e-1Z_>GKaYbixqr7SJ7g0d)d?dY7vE;FLRqz$D(ZlO0|E2UH;{WSE_1MI5(x>x`6 z;PI7HFUi9<2^K$@qEIpYrwQ-4w!Uw3G@&==WSuE4JkIdQ942DA+jLaepCuxBvmxo) z5m(&sZV}7Gw+JCLL8n$;n8&gnrD0J*cH5UU#2HQBh6+=tA-Phq*zA#b%r?+DYqoRm zn~%|_gu>$s9q5{b9zY$N4E#g6al)AV_o`!~c%Na`;j^~DFk3W?s?EkffG*dQS@U#U zo=a*j@aJbmxNWGKd;Q1xBW%wU1JH#Zs-sNv}Gx<~?#&Hd|fNrl`@H9-r9tvh9Vc8~G~RO}`U{ z`2D{*4R)g=NyLj57Cu{%YIwpvtfV%Teky-Rqs&>tF?jik4ZtLMZhM53!&S6&ZWJit zM&K@8)CnH2VHIqG3Vm&Q7piFX7@PO7Mv<~Dgk@g9A5X{AHZj@;PHhRq2Q?u6K>vVe zf+jFY`yY62`Ux=q=a852KY$HWH`9Opb&sg(+HWwR_@1c$DMu@z@W$U55@Ujel>n`l z@D(IvT+*s1-lSBf{(84brst+CDLzj?_=COU9Oqjnf6G@Y(=QF*-}hoZ`DB6jhf}Qi z**q^b6YQloRg0!?CS7&roefiVv^Zb&m=0q$?aSv1v`UlNnh0%OpOwD71W37vDD3$WQgxQP zS!NdmItE1x{&U`eaU)FADQL?8=>`0aKAx@}m$F2qw#(Bc__iuB`y{pKx#(<(qGO3ZOl=;eK%vSy21hbNWFKL!jH zv0Ax2e@Gzg>|g`|HF=3rn(cotxO9e=V(4l>a8?x14N@WkE+jaAgzycq$#6JL_@I;# z88gvqsFlS}lc5BGZe1ZAHaM`CGD1bPNfv>K_i_KC*RA{`ps06AIAeT4qi?A(lhO94 z6g>0MBIOKl48Qd~?`?^jE48g+TLBeY{Fk*8>8d10W;Ja;xnr(=Sj}UsAH%TnE4B9K zc3?0_A^2~WrzFof4nI2f8J8um$NLM4`xu{$r!4z$c*h;MlpCvl+`rqC!Su?y_CqI} zbes*UzAG`d^t}^yv&biL+U$S652{W~)mE%HFV=P!63>WTv^$o zYqmCFteIgiIW9jz|M8yvuo37CfdBvke;Ppl=l9I~AG~J^Lpu{2Q>TAruUa&;?Kjy_ z{9ft|7zz@>MjD!~N;8=~8WKUIFZ-W2YDN+m(0&{Qk@zAf%k%Hvp=^=y`%=)iq=@j7 znV}n;tWoJvP%m48CEk1;SaA1~;yqgh8h)5?b|+82E!_AA*`7|!=gw89^$WR9cP#;0 z@h#|%_1RbGiRoM2J{e3H@TdjeOMoxs(hff8@l)A;Lc z{U@^Yi^IvU<&jb&{3rT1|1B){--5=WW;r9L^`1PYl2i^v3qy-wv`E22w>*QERH1wL zx#aiMC1*&{XGPxh|x{9?a)UzM^qFM zV3)&lq-vAbr81w~S#Ki4?rgS!hoe$pkb_bkQ#6UHhIHTMA@};S9MH0G_k^|@=x$s= zMJJbpI6AnwNJf&9w#&FUN4*9clLiv;UE*{W*$UuW@b8}m`K*ZVgfKbcRy-Qb;c&7B zwJq)lGR60<3j6GWGGQAGx4@b|E5|{#vX3HK3kk)UwbzhP0H-R2nbNM>2HRl1&kJQY zh95(a*nNb<|5Q5zJ+&>>t>|~5a6p$hM1-t2jc7ujE|8$aAbkvM@F2-ViD}NVy=tpI zO%SQv*vJkru^yYqJWi_m=7k;c#2lpUEn`I8a7>|tB++ItS(`V%g<64`W&qjybXa(v zq@&=>nsPVaa+ZQSrSBqIhItwcucPr`C^{6N8tsC z2&Bq|Y&PT`3KD2bQ}9y*655n8Eb<_sFg)G<>q@^Fs`)1vvz0`r8wGZ@$vE5`#OLui z7FMba$)CAxsM>mEiopG31zJbzy0_7uJ-cfB~5D|kvNUcu7TA@K!M zo^)30GfRy#v4hCc5cZ>cSP}z~J=SbC$R!s{z?xJc(E4Icyk)(FP+|d-R0qhN@f~v= zr|DBEw(cFR3FZ`wHNa>(rF&WyTV`RB8uX?n>a}R}0cTPL7XOP>dHzF0PieODAsbQh zn87b+fHi2bwVmoFj^>ccHbcfm&j#g9puhJar~;PVoaLZ#oLh&N0OY#ZXzL;P9%Tn* z?t!;vZbwT?shy?M`j8Yc@(8EztA8w&QSO9gATi0SDxQcUv`C#=|49+FL0dQQATPic zBm;&c9ca=Y^JtE#0M2$c!J%i^xyUPAXAWe34};g?Ipt?)qn#90H_!5O>mfJNRa$9T zLisq9E7$er96dX#xE?!EGQxvdWiH547bCwiy1V@v@vm^*0~yC}_E|RYGPq~K3@n57 z+=aRd!Y8{=KhkFGn_j?06*=n|^W>%{w9vANbsv9B!(m=Bg=fj>!TRu5NWV~(I| zuS|DtXbe{Zhc*|=+)TQt^s}#AUA7OvuDcDvH#?Oz5u)#oe?56A&4JIZ6dQA&g$<3V3t{_m&bks{=OD6wsJ6j7mx7MU3& zog}8etv`3%eNZVkEx~EeA7Fdp$hAy<}gwp9ZMqEK^|0 zJFP%OVpAr)254OZ5Ym9qX2ayE#poaS)Zj@I)zuF_JB~XN3ur@=?v|Ko?=KYz4<6+H zQ76H6k<*r>rlM4o13y&srX7Q7OTClBrrL36EHz1oYXKp|r8pF%Qc4yxqd1X?(3X?l z5a5F*Syh=LJ{?u?xXQ340o9GL@&w&TxDXG973l*sGb;gruVDn~b|8#h-aMJ5(5!_l zVx@yjngUG>F%#<$0G-sf&2$bT?O@}v6uMx-6teu`;uW$)jHCi%CNWHLz#rTgNV2Hi z;xO=m60=bD*CC$MsP@;b9bnkAl~DR=EmlgfdU?QfHgs6{B0Ml>d!RFrHy%0apeEJ| z0C8Lz_Y=Kf52}5UphtsBg&Z~q0(tHS4B&!pvWDn)-22%;?(788rN`*2sh%4(4FqHo zY~-sBqmlFWw9Vodg}9i;F(a{&a?8xbjwwi05^8ln;^_pZ=&$2J$daAH*%z)BTx9Th z=@1Hj6HZ{G@P>CBqFJ9H<(SQfCU|~BTv-sVGEwVzsQUOT2#?0*Zwhn!}bEG^)TE?Ld&eub@hJ8zfUC zdl;tf6^`V5L|;5>Yv36pQd>fZW6a`X_6ANHV;tVd|Gg_Ny;vW{6WS;vKk$gk5`-Dh zG<;r`FAJ>%c508)Z9QBsU#KO?bc1sDq~5tH^v!Pq-1B4r@RmIR>*<1iD!HobX7mR- zL()O-?W~!a4riXuq)n0g&-^Xb;NA7(uGJP7)`qYKymR1>Tr?WPN-f(~BR{rvpHepS zg-(9vmzn^lU8}~L`3zgV&eCM&ksWi3fV1Q)PR){zY!(3l&%gl<>ryxh5Ore`VN>Op(0e106_V^Dn}}`ij4Y{M%`AHxH^7-Z>o=pCf$)jZ-3HF-EoAuy72HN(8KIUD)P9^<4+*Vc^#Zt71%!w`P}}O z(iHEqIJo7HV2a-VDwy)00NX!v`TyT^P79W$Gj`ikmmlb*o6tm|ni^NGT*(+EEn}mW zF7do0Pi73vbr8w^(Y0CNGGgX;&&}SbljP>rWArd69^SSuz;1M9H7O_FCyS3aTQA{a zr%r-iV|D|jtrMjexVBDkjQEMV`Ow{1phRnh6ICYoFU`b;4Zu@*e%nNzV)~@bwu$UONOPezZIty=|ze3D5^O z7uMd+ZYKv1Kc24WCh?oA=kM#|@#B*wgNxs5(;F9FTzDH6v0t1Yo^FhNo%qnf%U@4F zFTPIPzCNt2uL~=eAY$~PhxzH{TM61;yxbVSj!spMZM}R~m=0GnA0D0#Q525H>&N}S z_ge%%1JA4r+a(rS>I>elOp_D2nNO`d4H z&W;5`gTnCDvZJ;WxK>{9H25TV^x6csiauIN z+YXN&UhuRig!{-bm)kV|w&Zjuv_sfb-vO{sw(o6FT8DF>bOmS#H<5B42*Rwl;Tq>I zuS`NmB1Vg1#{lOZ$K&3$PD^J2E_I&~Y?kG2L;RR^J=kjZ7%#$ zGw7w`f-r@Z>s_c#En(uRwjKPfFz_bk!-?Uhd;+dL(>_(CuUr2!7F>dMYUGx4318X}z+FwrP!ai4e(n#&kW z$`haF0cKdp(FpP^Ut06(=DHC)Vv$pN!KvY0lm-x4Y>9znt&*Yz`gxA>+A}frWjy=t zbv+S_wP6Yw>mZFy@R9ou+EsVF4i~Wtu^~#-;hZ5Bl==bb)l)3e$Y<<@Yi4V_-=u1= zm)U{2t`M9cxHx9JV&Vc0IIpW4S#Hy#ae}we3$sh`F45)MP8eagUYD1B(H zlEPJ&Wiee65W)5x)mjUO6Wa~u52Gq>tOQB4N5pAqAwEQtM}WhSsQpl))ifeF_$YKL zv|op`3C`4@2=>zuD8vck%48rl_>nY`On_stc&wo%StpWHTGA(U1}@b8^shjl@(FwT zGqc+QB^_Z?uqxze1MZNVz&Ef3zamg!Duo@5*`OlTTS+ans<;8pY)6-*oeRv^;kt$%Z00z%mV0zr~;$td1bJZ5-a(QdyI(4BCm z$t8Eo@B=Xx{3@Qjz*b7-l*gwP+ZE{7GXZMJ>`(gX<)1f~SJh{Ck+QCJ2PY&k6(nE7 z#j)DM13`w7?yQA`bW>&<$TEO4VXjKd76x)1-K%22f?1Z^KxPT9Q3#epc-=4u2DF13 zf6I!5q6z5%oCL1BF7yvNyDD%LKKBEArM2rHLsy(r2CJ_2%1l>dJX?8VK zt+wH|$15cw_!5@cur+h00*Bm+1MzID4r7>p76pV}m{LHc_UKJs>}W5*BS4`mlN(T3 z&b1T?#mx)vI(vlE$&AqQGpM#e3UX`#Ri1cF?pzR<1PBFHWm;;$h4p6RhjeZ&;6uAm z$*e*b(yOBBkAZ$;vCXgqDfTlH(irUJQtDR!Xzt^Fl)EJg^cX{o8``OM4&*N|(`1Fh z*>xTW;ydW*vzGDAQwDpf!H&8KeI>ly?c)IZ0@diWCl|T%E~cm{ zX(LhN9B+)JD~?9U2h0Xxf2YRxI0FZR3@if~ryVkyNMc zb#zCD0Esq}OBgQFY&c9YvG1tJR&)Z~!#>(ls8U|ay4U=j-go2M*VEFtvq>M}{@hMj z!1$NzG-Tf6Ah6sAs@a_c>V$Z6y^OZe3a%kjMVH=DE{ z86OlBoIro)?41M}HblPAA&wT5M9?8__6PO^J+ia&Tf{OhwLm0HmE;sRX4ip2DI5*g zJOP{Gxuj|ZAclnOa>p08wVdANT&2@{m@7Yec{;n9w>yyb95-Jvl0v}C&9ncX6LpsN z;kx5~<`3$otHY7_p~{I&y^cxOn^nC$0Q)D0FmQB3^u#l=B7FsmM2oLDb0 zrj8gW7Uv=id^VUM3S>g7c&iYSF??Z#8C+jMwPKt^wON1P@TH(z%>?4@>S#8yYdc@9vFVG2=2u12RvHdHVAc#nU^+Dh6A z;JLNZ-V;vNnSF0W1WUK`zqRMpmS|w|w1{BraU5F;S1CbcA z!XB6O?oQxJsGsZmnodS@ds7uH0_&KgO63JipZq8Jy~xJm3rp_(4W$}l_xrE7pm-{V)X!MNe#6dY@MbHxYYm8| zQpe=dhtiV*k(5_rt%#PSV(0Gf;hF%jt}V56BDuBajvXj%RO_kBY{J?fANeK}-6AL^ zaQ>7Yn+L-?QDA_>yrt?}|G;~*bhGs=*lWBMR;$7rLN@Z!06AyD`xb(q2i$w-37ntx z;n)DEw8fx5?h^<}@JC1b!GS9I!3kEj=zSlHe%l|r>$3GLdjDjF2HzGK&S3^I9NGj$ z(6yStU}QW%n-zBnYawIzpNg{vv&X-}IieI8&DX=PQelC8M_w#o=#RcvZCTT1?XBH& z=N=DaB%P*bCYld;$(rD?|7HjiCS8o0fD&@O6@2no@;Zh+JlxaqX`T;<+h^-!8s;ry z1l)Eg-zHckGd<3%!Z^KV_4G;6BEYO+m438QEK|o#N3lJD=XHq{_VYbj=&~2i5r7t; zbE2A<5j>)tj4PNOco#h{+r^r0QW2_=!?F5=SbQ>5`!oHrDwp{CjGGaEyLZ8gR0D&p zU;X%k`uoakc@BdY^kVorUM$N<_v+=<%KktZTVN`>x|9Y%M_r)J(p?r7doaV)kP0%N z(seDtP#HZ4F<;k4Yh!5Jm$y87n=X`|&qsfA<5yGWQ|V`VKA+9n+Llwxa~wU9I-71s zf%U=ivP?8SrdJGNuXmrjQLRywQcvlm=ef1@)8%aM$l@s3ShD9~+tSUAnxMO?b0{nm z0WT9rZqoE7?DrajpRa{1@Uib+NEF`B#;c9vofg&GtLqJ|N3-*3_{i=T%Gd zOXXU=%|#C~#{~|{;z<*yW(Y|eN+n^XR+ri@Z}fg3jer6X@(%AtNCWiftr0&!g-#7L z)9Gt`Mz`nt$G5kK_03iLx8sYC`?trR*zTnDCmMQv9ZCK4dwTnLB>ntY4gJf-@9X~d z`gpl@WX<{fadpN&JO>@T(~5zx==Ag^)vEJxv46gGlCR(AN7`E}r?0Ei$H^O9OPifG z5`+sAmP}N4&QVttoGkuJS2~BpTvJCC2=1$-N#`T|M{B5-{2^L9Z?(u!D+T?|gzhW% z?v3SjwzAUGDferF+QyqVSFL+Ao?SF+wYz$z{cmvW>PThIZ4*adEUAK)ZVeiHC3nrX ziDOn@?<;)%Qstg+-mPWUgNVqIj@LZG$<`pu%eoG4>C zjTL$2%LRvyjfVbT%-%HoBL$@LHoy)nz2hE5fPp+*cEjgRBk~sNX><#3FmL`;D~YF9 zlZ?CtTCq&d=#yNaXK-kuNak)p)HT&Agi zfdRCt)6gm`~1TVV$QAVYU(@4-0;&Bh+0POVH@@mcMfoRSpj(=_uOIyE8Qx z*Y~=cuH_#2JczmS2C$Pfc@ABm@KkE4$Q_8%eoazM!xjBW=}@OPlkG9+m%WvfEcv$U zl~Zek-rz${e!sW-d^sI{Z=rxz$o87zpE$bW(ziR1<^vou$uB@&S{6#M22l$G0GmpK z7HfhIVX~nJC?q=b25ae#T+gBeYIi8CbEbp|(a{4zy~oJZE(cOIR<#SI0#2OQ%|A7F z>P%sA$C~>9e%TXbup=eFYEvU1AYoyEpyNtd)lujzUSaV?Aqd(l`+=W3u15|0^$IoD zbOKa*(hRvcYnXQir#JR0-94mV>RXo2cE7uXLPNtXiC!1HIhZdeBYwPQ`L+fF9F0nr z+~Bl*PE4u1k$|joEO<_hZ0vlcddTdWAn)(a66dWWrrsB+m>#k@7NtuG7p?Nqa-s{l zw8Nu&clW5(jhn0}GoK8S!#Te2p0{F8_o+2ARP+Fq7*6NXZv><2EK_|KdTY_;J~7CN zf+fYX&Du?6a%U0&+axy@H3sOyOcU8-w@CnG?^?|UPVovU(R>f`#g`ra8fW^g9jj@I zEM`N6OM`srHiW^tusJ-lk44!cI^mLb?D(u_uad*j&h7T_k$OzyHQd#l2P}cMO6h{a zWLlv!n=m=%7oCeg7wy3ybdpjMrL(V(KWbe-7js?=gcXl)QXVJ44!6L&k1mC>2jV-- z0hVTzT!%_je->>qdI}mzDv$NXgK)Zon&^hZ#vL^U!jF}Q+a$4TE}uD(Je8r>hdQuE zgaHi_!~*YEz2}W90$b>n)AYBDsu8vQp>zylXkW9KBLyZYq?uCCwpEi+F=oF zQBbR24kDSY|Eq-_7ineFmKw~YfGpWFXSQNGmDl>Om|cydy^YOc*@^uW+JQxDrR=$# zXgId(=@MpH(ac;DZ^C_eswTeKc$wKsq$tdWEVfo5DsihPf*Q_3TI5>58)2Mk)z&Pi zmX(#EQCExfU*(V|3AaMLWk<+?Xsi1rxfOxd%OnAnY{nAO6-l4)Im>A3GIpF78P;6{w~`9wuj zOw7Q16dw%OXTiChR0o$kMiTm9hOl@p2`%PEy?RTPAI+wdkF9e=Xw*YsmO~p?i}t@L z`n6S1B`5e|1rO%!*-bc*Kxs`&eS@V6p3;e_+O9w`DeBpAHOQZQ_>9C!ge+O3H;AD8 z+Q}4Y!IVTLOCc^G=e0oPKL(ch!NB4!fH%}5yD--EN7Fh*z%e-2s0>Qtw+@%=f8a1A!`DJ-GMPf zDA_g*_`jA#xp>3#sPO^Me5_UDZwex0%q`hN4!nZrO9QWOyoALD4~@F5rTwVgKS*dB zF9cu_nCqml%|W14auK>aSH1J%G>lOk6(;$>KT;Dl2acy$tEdc7j2K21fal}M8H$tQ z1qU_$d0OP)t$ZT9zQ_fMp#=;W$kuO#L6mj&d&H%RBUt{B(5lWu=#Hc}Sv0`4vVrC8 zY(i=Hru!pY)EA=sa`hIr3DzQG=tm$QcG(497u%09G=FZ-lK;n=Tx*=|dOriX0&9XXqWn+AGgOG= zBjPfH7y8T)nwZTSlhMw6I5>(5DzlKiKLQ@!Fk~_SJ`AwP=)O9>$<<)EO#!g4qL2)q zk|e*E^gHH5k%bsdjm8^lquO)HG)H~0NQdPduieTR4dEs73dcM5fW9^q;ud!VAt!4T ze#HrcYni{K^@hgQ-xg%G-WY9Y|1Q{^aOine8fWskpmLo5HbNIabd&%v!lp{)R#R={ z2r!$6B+_nw!p1lG_XO#Sj&5tXmnk9C!ng!glz%ljHz`}>H`|O_H_#MKxWvS&b#79X zmn|usr9~0wV}He)jP6H-gVi_3?6kY9Uo~glQ8~7ah_Tk#YqO-s7H^Wq;-XX3B1iIX zWeV!kC&paJ18)BPCdtWBT)H2vfi-KKROJ9}_V*?66PE~W*m}(*ql%f^E4aDW8r#Cm zTENxtm`I-6c&A&r?SZ1x*Nmv4Se!XdN*>PnbW;%0`#fw#{p0?~C~8;aOl%T1f^v?; zc@+I2HRIVd>$KzQ6hUf>U0KCdgrFT1(;~T6)<*97kq4txQW5XKj&LP`xEbD+K@i=cG@ z6M%5e;1>MGFF_7KdH@TZz&23=&>@H0^e~&44iv)P8=HRs-+px%y<5bsqG38Ie0%g*TB3OQ5~Ap6 z(0{BH@rDtsl?zFmQ(2gUa#5*J4}iL;?T5wvM8#+!hv=*`z_&GyZ*`1ly_4G*g|j`V z+rM5NvDz7pW#c@`g?Jknj@oYNpl{ez}C4{qgBZ`&RVT?|(P>wOAFBlw&!7z{ZX-3_)0$`}ec#0@$MR*i_2e?}*%SMNnC zdlnz-U4aZm34ObXn^MIk$dP>72m-o8u=A%EHi^zm0;nXrrzzd0y3v<&E23cBz4$TK zThLo4KQ3aBZ`P_7u7n>;mJh-EZ$Fqgc>UIC`5&5QK}rtW!d9}muR+kiBtU-^9`pR2 z9lxup(3|($Ltn%qChWOp%ST@dB>4-%l z4mf(xMMBaX4^bcL7!0sP7ef&HR^~jA^1sC@;NG-M%N8#P6I1dErc2HC1ar5n}OlIqOQE7NUNt68RTUG~_Syrwz+R#oc}@A}rS zGyjTV!XZkwtf0(Ix^GL&zl4kF0v`^eU@_oR^;+v`^Y5H%nM~qJLG*nJ#`Wn&Y?$WnRE?d7| zem3=|;eL8D+PzMXiaZpar}Y?)HPRp34;VslH7vqZWYfo}mZK=VM^nueU7G&M7K=UrM_1RY@q`C{VQwAtmL=Vp!VD zz_#Zw_+d~gnHi)|(dFWm-*1Q|9T&}vvd4PJTmm+3blH}(;l5v{e3IFGDrbst=SHDK zb2c=Zyg%ChiVNBWEXfvnpUBTgn2d+*1kWaiWSd@^wzwYi^nZTcJjDXJYb-}qgkyJb zgwvr-go}2k!55^`aoQIV_YeiGBS&`Z;MOh66nv)FgB!NS(i1VEp)X=|yNWbRJlG3r zWnnMGX<14+OC!exfqWP!{kgv{a9>dPv(ie?n$XRGMkRK&n^ z`NAeY8?~QEsE}U;kWW;@h!J8W-W}K6?E-El7Uemb%X&xf4iw=MKVv6X(Oc{aq^={Q zcK;ghwG`aS#-#uZhm(sGO3+&?yTR4ph}0|!zC#Lb2DNNW7Y(X^E&f&!C9u|IY>41Y zRThb)3}0rMrn{Ogli@^A&V zMA6T1%=}a-56qjcLNr2(O{BbEVV$fYu{Cd9$$%_oy6r$7TdA zeYfX`vd|rnK#9v$GP$a(Sx8;O!;vg7?F@_1M$!kq*yWs~WWi$N0q0TaGN4XV2Wq*x z$R>#8b{l(`$Z!_aeFVrJyy)uqmuKuA5y*=!|GUcI3lK;L6674}VNl;70;`-YXD7$}4hNkjB7&RV= zXefsq=|xc1MQDdZJND>VB$BZQI$ICwxn-BOC$DID4#kVMdZ&Jw z??ebs7grqXRr?AopEFjOF`7=bVv7AOd&wBqIQDyHemy2XLS)-7Zu_i?zy3~Wxk=ybB<$kt?id!K`{4$yjS{IJGtZw&)Ol)(?e7te%?@x6ML-0& z;&n0l5jLgr(J3v^z2(<5pf{yCfgg(T3p4`U^7^MyoCDx*OeV-#C+IPh0Yaav*>L%r zrinRdDFb}5zsl$D?VBP@i-%SUui7 zR|sED+*iM@#*6>Y5EuP>Xsp+tE^f~s-ID*Av-_WL(49~5>i z$XkHkNG|Q@@yIF{w>>Tp!y$=?@tRH^&{h!*T2e)H;+eJldt3K<)rWSZoffM3C4sr) zp{I$tiCLvXM?G82msjEZWB>Sk=$-yYL1*airD;M1z+4_7aRioYQ^jQyQJFTwDGW@CE6jm?S#>$#zg=H!?8cp~%-HEE=WRqpPjSHe{h?3$E}{EKf~(snkv! z7iqD2b}&gJHzw8L-DmY}t6cP{$e;F*;vsINI+cN4o#&2fpexT}9T-?~f8N+x+(z2K zwQWTTlxv_!o0~l7x7bPbT;t#HxOvP^?BTheH>VCkUc5N%1}2nqob|`S@Yq9v55oXu z_%2>{uf-oVXXaP9dottGK9mP~!;;{sHf3%f>ci|Z(Dd!l*|*TG8xc zhEvfvdCFGa8gJ*kfm@x8hf8_!Y^6Z=@Git_=M#X<=wt%w8+xV1#7K%qjo3;UK^1n!+ zuuRf&pg=jz)p|sjvm}0u7+6$>{?nr$l(oO)21xCY!#frS8t5N zP8bQC_~f^6qdI9Jk(>ad;<4r&$GCAoeF3718v21%e&5kUF>9eP8>a`FWC%;}F1mTK z7M{ws9Iwrggi8Qn{uBZ0YCuHDAn(ge!#av1;B0a51w`v9(o12*)(qohdj;(EOi`vs zrp%gX!zMnYr4yL+bwVRN&#mePR&gOpfF?juuy#dW1$DxMmO4ecTHj!nJ1eD;y?$uu z43eruy#YgL;ZKpZq5D;M;{s#A`ihV1klcrGQM8jjVt4U7{_voHg>V^!d0xnjvZ?_y zH43Z(FDrNqc@lpKJxU+~vWzcDhyfpEaEETkMW9I$^f03sy#~)f5IG6mzeXxjK`mcE zeY)gc=VOFqq3%FyxW{Dy=%le5??VDJIJBI=AL%I*bAB-{0i4mFrf)C85yQ-9y*#bX zE$hX-daQWY-)TuEi zJNqXW0?ER(MrV>G8f#YI4+}G`nD284r#AHjp~S1%>3_JW=r3RrsOT6jsfLV;17|No z8V?C|V8w)MC^!@_79G*=pOu1WeTDozV^~Vo{{neMLJl=`5WEJ|3es?DlJiTA`g!2K&S|T3AJ(Oh#NWREKnT#L$c4 zFwr8m*5RA_zG?BB#IX%nQc@*jeMrLc51^Mva-DD3(jJ__wcMMQbi+mh`#R=Cr?wf| zsc?d!EeP(UhbY~b$iQA6ggE%A2Mh4+e~K~GAt`A6r0HAQA4I>$usnJ;)7~7#(qT0A zR{z+Kg!Q993xcT-B`tKGHUGQzrtZyHZp#CI>>~&gP93^}LM_iEx-gwZSc?H9?^32D z(uTyVD#J*%DyY9|dpY=2wvT69iG>ENy+vJqbgd zi}|!84K%(?RhUw|iJFDS;iPrBVakD7;#3fGa|#HNfgwYh>|PuR;2F6#ueX|ABt20M zcrf&1FTmsMf=u3sZE8E_alTS1dik(0Dl=yGW+Y~TH34D!wc)m2an>BukHOI{SF2R6tNwg;NS=!hWk7~FX=q=e{G-@BEPE+Wm z5$OFQQJElf5vhVijlzoiMO-&aL6htP)$vTHxw{HGD=9+|Dla@2J9*I1W=R*Xjj|0wo zfPsF?iUEXqX|yP-who#)p1lQ;1HNP7NWXTX_nu6z!l<3RHSt}G`HGhZLEo2>$r$In zyXoj_*SSFkd`~v&Fp05&^ePuGfr!UnI?}OvwN+T^h0_WB%aX3Mel(8!4m8(H0WNND zgY9H1l&_wIU~hn!Pn|3%k)S!9pun97Tl#BTx4UlqP9QE$^G{38suYN%4Fx=9sAkj( z6QEgpU^Gg|QKW9H{2lc;C6$oDtcc%tbu$cX_R?UtC?*@W1%p>+G%J@txqZSla-%3q+sru0s5lE0QfO#k%d19WAB0X{Bxl{J>Ejj?lb5 zv&N93zMk_C-!(?PB`+f0P=s#CX-8jd1`UU&Xt1 zaVFucFF|NXOE9N2@@ma%EVuPl;Ta20@MLXIS=WA;{f#jW!=Pd4J+()KT>^FH2lfNN5Vcq0J0JL2sm~FrsRM`CBG<*rPMEpfChKd*Fk4SCOUfy zXgRJb>1x5?t*!3M=F8@D(vyyf#(_;p!DO9Y-mlMZHddO5wDCGVzI3NS)sHPuoZR~= zVit?0r?63RSYQA7<|g$Onun_Wxr`8!yr#GvMtf4IE8c(uMXn~X8G%5|NReQQ6JS## zsZ9tR0#FFrDs(lGHa$S6*KP6D={NHTP0}@+T6*ZBHEYit0ME*k#ObLQd!k7hf1}lm$)Sl7@4I(K+++}oM-i*pjYMI1rv|k zp$NAeD*XYt^EDN0oOrxY|Dic7gX{p}%H|alMc1*$D2dnX3YA+R!Dsb(IK&uO@3_1* zhk2bdjf!ugAgv0^DVD?TJ!liDBkRdZ-5ri(Z+mWcINeeTm{L$0qpO`k&UVIX>cnCW zN<$4%gD1CVGY1`6P&$MnN^yPpkA=m%Z~J$WcdP}WcVt5dTa~lwX?Gtic`2tNki~@> zc;NGtfNbF#<}_t!Nvg8?{m_>6m*mk0eF1kuP#@dR;Yh1n#i~a1=sS`Cr5KsbekxN| zESTLgsjV??N)5~^8BFLATCZ=bdbe)c$GR|DbKJm+KDEK~iZ1}73PJQJAHYI5aHL0% zIzciQ2)_@~n8k`=CbmNiqKpPzc(a~FeTF{w!^dMxTN#HRuG%Hg zF@hO3yy_E!rQ%(#=#ENX2yQ+rlDi2uoS-ec2$0bm!_37mQhe2nAmEAB=|lPDIJ%*x zW~f>s;^E~|g2rhfYE^e;e z#lzhES)9mj^xVj|q3}cXRTI-H`NjsUu4f}#2)%Et26NwDpDZ%&Ll@xJu%5$c@7OK! zQJ1gI9kg1w76KG5&t8AMS_$@Nqw`*R`H}0^?D86N;;{X&1E&&P7Ca3vtM2GV1KQPN zqW1lzaH@1K`wakwNED%~W0^B<+Y|@!X=lIusf;E{zvaZfm2>Ck^9Nif(cQX6+oix= zX2Wfv+QZqLbd*V@EiTXC?q+ADTY>vRai8&oPm*zyYPd_2^w@LKV39-^Ri3j!Ty}fp zTU+~Zom>&y zc2U6l{7eWZ2-dvccXbAOflBCp=#_H+b`3lKN4}UZ~!6zCs`UZfhj527Wp6>m%0W!tA)iV1eC5#(|UPLvC}F%>KY|@6+fJ}87k71V(k7=6WCr5AR0!$_K?8|~t|hMo{xBeqU|NfgT2xJMs2 zzOQ9uCs9M~RHH46jeE|?pG7=5KirX!wtSpn8+rz% zXg`->iHk#GKc7J)63>lg{qq-D@bT5DPnBVSy@W%gX)h2la_L!y z86%2;D{{dhTEOoj!8IyaUv0R#(=g?(qnNzp>zcUf$HR1nB!x7w0w?t@Cg;=0CG^wG z#p?PD4!@5Rit(a7rR>HlC~JJUtoHNZLVSq+MosbHw2tHz34XL=qfaKxcHj$Ic%$|1 z3=8$x*LJIFTS6LJaOEE{4`PSik53Vo5Z5=H2IMWcm66;eB{RkG6W!hqQt4q@Dq6%- zg5t63OtL>VRFZB!E9!^eesAP7)`>vu+$a#j;DcO)NiU5Bsw|l5$zo!5q@C6yc5dXo zU(F6lriXfh>VjP~$81fNf*h6tyiDZ5VtRBa*k6$PZOsEMO?PIe5^GLI`^y)c<2{vo zR-GfOvT-xUSTb(XUi2CwzpjY;2{j(gX|j5?JWK00*gMvQ+_AOUABQaU(I<=qum-}q zd+yT5CZ_FMb>Ev$Vo7%|0f`XgFYTdc_!WVFQOKpD9BVtQ$sWoJv6%(uve*j+ihj_Q z>I}1&;(Qem(IX_4i-iytuG+}t=7SnI&kc8)Cm=OlU6(v&uEV=?F>u-*A%FFS`3}C{ z?xS?=aHbTi7w>N5wESlen&9@%;G^C+dDPLc&(-Pgr2Kq%*5WR`@Cm&78SV6%l_Z81 zh5$Kr<=pom7l10&`(7H+m{dkH=TULG%MEg7uW|ZVDsig@y-;t00@<2KJTxULRghb) z-oD3Ga@k>G4J4?Lo>qCOBav^BF>E+S5?W=(5JJwNZMBw9BL|0y>DRVYRbgmoFYjn@ zNSGZ3h{j(}GdwI(M#^@kZ7JNWyVEMXDD+i1Il=%+3`QJG)UaM`V${S=2}B#n4s}Po zXNq$bO`Eg&Z6O*FOIceDehI~^kjjpl6_dV$wzr2;Z0W6;T8COFpGhGSJ|_8MzCxZ_ zswXF^zW{^$a%|ng$Z~4OO0Tj~3k1xxIL%HAe(Bvmj%R$UOM<|qo>L%al{5z~3Ak%x zdG`P-`Y!rGzPdQDfcTB*v`UmT@>^EEige$3y7Pt|6$oOOn-bnZ?*Yd;Vf_nf#+00q zVQL*E!Wo3NSTkp-z%`+Qr0m44EEM-Ssp17aB7P=BvGVhR7)rIS(V#`A6CI2VRk-^* z@+|q?GD4DTMPME9YNnZh4q@`w=v3Su?)fc&4#^RD2)L~BX>1XI^#mUZR=Ec_fLO%U z-2>)@JSEVn3ZfN;#k*zn89?Eit?Erhj)CH7zizq3$iUUfz`Zp?r|(L;tS#>1ImO@|Av9syVK z*%u+t7iApq7q|YF+w!XDTELfk+h|3~4okcD72MrJO5fJYpb5QII^Ip`~M-LbfqZP9Lu~tr74X z9(Eu!gY1&qQ`#l`<4dId05Pps#JFKAoDu`OPA;h0Lu@0kocf&Qc(5aWJPLyu=d5Xs zVkS~>xDp#Osw9_`83^@(F5I*-1dQ@<>;fm$28&tyxHx$CwpV_nt(_n?m3XiVHXb$} z-Sc$*pQq`@=NA2ox))E}ThVBEv~JE$9C!iPho-ny$=a&wS!qUVKeE*U-g<(=VKu*X zzO{v`j)H)+1&SVWf{kwOk_Sj_RXo4$noHhBe^CziMSlU}UCjrt*_TDK3+S)K?BWMN zPEYdu7AX0(3fz46k$FGN8L3ZD_!J{2IeyNAC}Q$vI9sLoFuIMTY5eA!>OMx7?|>yZ~^#)~in6DIsxp z$D34?KL0>e3N*vMA0?t(yIXW~*T^j4muR}$U8539TBD3Zt24aX`i}FwYie`SCY8%P7n~VrI`sBau@Z_rr>zR0eQzMOV+ zkKpqq-GiYiwStB-KAlw1tYgVu1dB!IASffN#;hYc&*OiI&2=WlGRXX5{6(~OA%)_n z8sf$_NGfQ@X>h%rbUpSF7F{%ZOO-Z2D|4wC{Vl_Y*NYLa)%kg82$n5p2!;(0PWmqy z=Scge5%p8n!HKNzE6X8(cD`|v1Ar&4pk~>8J7gSEfi!}aZ$JmlvS}P5KWO731o#BA z5*p0%@_f`XoyW%@F|%C}#Qd>%xk+*Qf=gd4k;xPGBs<0ptD$`=&~BV{e0UPYeDher zE_r9y{OtH0fEUbifB_}<#H~EyGEi!!_*U|aEsM?$e!d$Ct~XyOpPd<)5$7W{MxJFd zL2<~876TE(HM$IzhpS0WkmK3M+gLMD7eA_+D-C(FAiv}6{f88ddcT3LEedv zF8Xnk9$dFh9@6UziKjlh=rc}{H`R1+cy-(O-oprq2q$X_g!*d~q$o}Xxn|E|G$dBs zB`*(6 zyOkQ8oj;jzr%(O_G2ab@Ab^AUdAPiOYrr)AfhZ#H#DW-reKWijP~KU@2=sx7p;Az{ zdO;@PkUpD*B-rQe*as`*83&pdaX?m_o~r)93b0LCTr#q|r=g;oT(dA*o~Q7i%hEpb zUNu5}dONATn>huJp3SXi%5Fbb7*B&)us!o(DuJwwVDysrt+Jy|&Lw1Zu~4QR!CbAm zAY4%?wtGC2)lMMNh&4ALy0=8Rr~Ab5xoH1L#$Lo1hVB2J+k*V{n$@>(G}xN2BJab{OslGcFk z3lu4CA0MQIJZ6`UUX5L@WGQeIQRZWPY|8P7Bzio&$$*w_B{|%}+%03rnZ~1R8~Ru- zZPqG7tzay4hW8h`pXk=xXup|;D)eg!YASi*ZLQr<`l%hU1JBh93Ni;044h5l>D-;) z!fTAKQFoIkZJM;%GL7|EIB=A1tb^3s;AB)&y2!DxL+^A^g<>Jx!ibubO@`tf4B}2Q z;MfU-axf1}iF1yN#7^4X=D<4cf#m{vFVetC%Y7KBrS}>QB1%S+i32~+W6X!%ya`fw z^MMkXac|QH2n;&&DqTjaw^u1BMaT)@4PA4ki&Xs7Z#k)necti3WnC)MMAUX#wC4=z zAu^%wlb9rv&DqB9H>BJ}^|gt{)GAU-E;>GzwoAo435=`QbvEO2eg3?ywvfy{Og{cK zB~d{QB2fh^i;f(LZ?F8DoOne*?g`Js($&D10c^gB(%!Z_6^C-ndF~1MxTU4c7ii;Z zGu)_qEof#0;O+UGkQsg`PQ#Rra%|F>(I}+T!ON| zvl6irk4js`Xa|-00=s@u`OH3rEK;^kPIQCSGRs51%wREIvv9I&UbReGJ5O;}R8+qg zMc*W<=a_U16Mh6+ct>fj-%+;F@IWuT_PZ>#>EcjF3~Be64eJ-nE6kOH~qq`?Pc_fl7p`ct^ z@xNyYu`O3m{2~E_Jm)eRh|~SjAs%U`qj)AOO5ad5*#~@oYSoY#`xMqEL@1s00F0a51o9lcLU=yQE_vPrQW8v;%dwsj}-nFV#cJWHg zVnXYPJ?ZT5j*7CzZXMhE7|eS{=*4!N_^xJ_$2SnYc?eqb=|HNRocN>ATvh8NwVCt> zJ?%<`V4-Zxc0nvX+D^Cpx5+DDj=PMBMQ{#~3adSaT)pV9;g0C^B-;+A9A!v6Z>b~7 zZ9vt_IZ`FN<94qG^|AG>Y?fkH4l5yq#uSJ=Im3@%r>?Ooz}9H^2sTmOA0WUYxh$BB z9`4~B7FzA3EHb5*fz-cM&6Th5d~Z@Xsnk)kJ$9Ucwywb2vMO11;OGmj=FrzQbWOQr zqGOxznIYB{$+yhybZlPEf64|f4Fo7^{xkBJV8=)LIE=5zvPPjR!=gG5^@njioPfnV zUtZ2nm5r9&080((-9Fz1vpAE)LlMjmTnvfLOQ1 z_P4G*SD(!0on_x6iGp?g!hxK>w$OF` zy|nTkGDW7tZnBQZn#{%-!3E+la2^iNYskE0#Hv8*ZLXGPCRf`cnC6dL(TChkSg2;` z_#cR(_MYJk zri|i`j1`J*$Ci~0izKEy-}Xw9bLpA`tiGm5*q%r)tfFEq*;r<8hdSwSOnpJ%ODVZTGdWpYwv#>h&Rj}OS@q2m>#y1zeN0Vfgb z+Uz-2vHZ;K(eRM$oh`qT~|q_6*wl1~R1AY&M7rkxw7>r%sW*RdXw+RDF>4$S<}{vQAr3MBRcX@0NFIbKh@>?T-fT+qeghAC*l}cSgDPrJCkQ zHfU-kFR9vggLvm#7v)aev-zTwv|H7$w$S0iJB38g;_G-bFTdI)^Lw;qBw%zV6*3)Ec2P zu0)@E+@u0{(mp$_38M|g`L9)|7Ea^!b9SbeqSZ|=lPlC&WC~h`K&2vDX<{b9ly4CZ zDdnYy{k^+xtRwNIf-(6G{U7{M#G0hf8njgi00^qN|_{H0WqnyM zP1zGx(R=x-Y;m#?yl5$J`pc@>0^Qvo+(%pz-?+Na0RV7x|E*&3zuXxzcx?3d2LsaI zyV4%2t0^vu!9RBSOWq);Mq7;b>=O-RQHoLT(&(ZkC{dF5XprBZs5#|x2>)=Ip*YQi z`5sM`^#poko@YtNnz!R24CT)b{L#f&qsxuFOXDZ+&$oS(sYfhhHgXdrI~)+Ij!Z#>wPlsF)7n*7ucl}s5S#l}^EFT02#gWL?*a1ij3$!s1pma`=$; zuy>$Vm@ybg6W`eYvwJ_tz!kY+eGDBnSzu9=oo=4uveG?)y2J2dP?+w*B5jIc>Fj0U zo)})CN8ypqhc)F}&(?1Wb(WIeu*w5nhudR}Ny!D9qCZxx2rTz)ra(m>Lq4DyP^Ewy z3DD2K9LA3mpDJYkO0v~Bc_afP6@nbl7}OKt<}i4;0EBL9!OU_tF^@sa1N-7i8~`@n z4jaKhG}i8Qvo(PLI|++sW_dSOa-tYZHFzRus6ZC-i3YA1vI{zS$~!}51Tzb#h~#F7 z8eu4e;6)u`)v7$hrra(3#TU?(f`kz%USNpTHB7`Y%vtQ3xB4XkS!9wVSc+gp#aVug z=Nbu1n;*1jPuOp5md~K>viNM$B%lD z+1dEnEi*2&iz{LC3sZ`R4T9iiQ7!hDp>YRH5y?W8yCCOUkTTFpV=}IKn}Ln+5M~eH z#b~jLPd6`fz-nL0^*;?by+1@R<(blM-z2YGq&0HE1VQsOsfx zo9vI`1TPjLi1KO^<a|Kofd2Z%+wRTfU6Ci>5Be4baNG zMQCC_f)vOsQgg%}JUf#pqR@P(YTGj|O&TiuLVb+fw%6hPlD6{g1*hKRBf+w<%D#c{ ziNQhK#CEuw-7)ry>u`{Ho3j-!FT~eTs(@u=;mYFlcdjE;EZ8ION*9^QPE*lUZVJ{K zOS^#9I>{Xwr_>_VIviEr8;d`Ppv70*Fl%8eprG*Yn@{K9&FO43P|avb$=_*pTh^M<1~SF z7#Mnh96ehn7%I@K*)l}}ciXa{58gg*Y+9#*jEnI(%ea@Cj4w&i_r#~d?>&seoUe%* z3+f=H@J0%rH2E3k-?-);8tU=E}ZKvYL$SDm(^V2FFE`G*ip4s7eh*$XwZVJ$-N z*|X}XXk}v!rE8HOd=qm9qUqvrKoWP(s=D(74UXZ-D4Vzjq!nZgb^3snDhN_|=G#vc z(S0umlI7Gf`pX0IV2?hpvcujaHyVjs57{Uy;bJ+N7@+JkXS+3P^kO$D0VgTICb3l} zZbeRce{XoGB&9R9`pBkq`L8c~|1W)W4ULTToGkyb&wHebq{9L|e8(A;bJLYTX1n9N zP=UgBVnL!!VI|=L070BVOBTK-k+L#aDbWd4A)-k0$PARO&Rqao2ZUXS&Ly=w}!5Ci$$JCz- z^HtDT=a*={NM+KSv>Ret1vT-pHke3I@IbUJ4)I^pnk1=-kZ-zB0hpP9wx8lWCbc(^ zu3DN#kIm0fTS*bl$gwKI-UDLsz}L~wuK$pt2NqjV!oLw@zG@W+jwza{8%_+YC-3vh zZHrnfif)}YZ#<<8f@?WnI!5cMh z;Q7S{SO^8AOQ?Gt1Q!)t%)C(wVap{+Lb5Pb$)^IoK@Lkb`JLt#Gtwf{R1&L3j$A=5 zL263i${|wNF``I!!+k8~^{s&3WpM9rmwVSH=XkxYy+kE*yrE)Tl`rOCL75Tr^>`}q zlXEHNgY2S zR9i5}iplQp+*&NFYU6_I2okWBbD^ZMd_dL`f^QGDLv};!iM@oU3re)d>hc>0*1dlH zs^YVfS#@6WKDgI6ZfFt|WzC6%UY=p1@a1yV?2vE<NzrjpndHMefwZ9gBS1pa?9#35*x>1$q&T%CRoeG>Yc(o{nMH ze5{KZMh-k0rMlkCb_e;f1?Qu>u7F$?aVKy&?l;`;=e|u`Rki_ zdCpHWM^mXBCiz{MZQ{Hkur?*u`nXN#VLeuy{OX2C&r`MU{hmZLnwW;I>w2NtXKfp> zAI(Sc+4$|T9(%I4L;Ty>_J5g+jz(6tmU@og`91%Bx~+(xGzTVt7hXO?@uxGRn1VBn z^-kH#r=redH)hMyY1HesCPIlr6W;oq=K!8>@yH!ez@$9@LdWHE*WCg+5<)0ylndvZ z%bJPASy+sJ9ge}Ay1|Wy;z8=PV1n1R=y`bF%*{w%7m9KaY|>IN05%*IC}ExPSY?CXu2YZozP zIo;~Lj24e7y{p*Uybe14Xz(g`ZH;&KNR`p|*yQ!s?;QLVcj|XiqaRdn|JS?2KX~43 ze-OMWh*1rVD?gIHjZ@Cb20@f)IM@}a_@ETz7m_4yb)jfD06yvh4q*c|{J`+28_(nC z*SgXEZV&Sxy8X#Q_mrOP7c6wZH8X#b&>6M9;Kg}V;``^jB0oszZiSx{%pyEf#Ky_d z*2(cdWOKI?KS*SM+QBBP^7x*|&o9Jh|8AvcX8jkH+{@^0t$C=*KS*d36o#!A>EXFG zbol#hGx8HQKhOn=Odw0UQ@PuE?8FdKghB`-65qiqJb0+qSiUzy$|fW>4gRz=kMVgr z{na2(%hmO|1-i~7ox41`6_2`x8^=gH8?2~&X@X0h)V`FxegKxdme7Z0Sqh2(>Z13f3Dg!_BoV3Qw}|5+7jaq0tF+ALNQnoeeUt5Gsb~`2Vq*kE5{)Sq{DVv z`W6mD%${U9j6UEHM1d^EvbivRh7uZ)yZ7ssn1fX=Ah>v?pnSr-+~hu!RWrI*fE@7n z0b=9sz zD_{xSpgE-esMUnSSf+Ty7Geqy;unDmi<++5I5UZMAqgsNT<>zX;&!xl?0e2p-P5%0 zj1!ZpoYs6D+DihziO#(_G33>#OJ~T@w!B&l9&d@#yVyRvX5=g0rg@cQ4(<0ytL%Ee zk0_=!Bf}|sduA3iVc|bn?h%8jXQK7SdH{Ua;j`Flh-Lf5vkW*3Rjwdh+3FiL=aCcQ zn2HZMX9XMR95kR7lS#ZR>%~qn>B~bc>SE3D(Jy*D_(QpCC_oIHDmy=>M?{vLeD(fg zlEiQ!hrv8H`qzAHX8P;k!g&lX9UWpY6J34X zV`(XsV>p!%IUk^CbYL=gEWi^We6SNbKnB4O3!xB6YgYtdnH6+IL=YoC$8rFD8fKCR z2)l%hTg~=9KfiRP_D>&T`{Mgzh03lhbl<${5vW5uk4~i`Z zj2H?)?lK7Z70YLp%80>#_-2X-Vf6i}U7OKyd8RTcnjFYXUjh-Q` zt*Pzz{m^~0ORFuS>W_uSN_G;;j}QL!*AD#zzQCTj?6OQmzt2Ntkn?RUpck-9ej)em z(@=iysTml~&MGYu+pn2GNZ2kU-oe3BLc=f!XzR}*(Y0^Dk8forG_R$qgqE;SVzehm zPg;n-i&J46o-1U=PcMbY-m~JPf4_EUT`TL^Mrg2&C)lOp`z^1C*D0d`IKX9l6yMonk)({uKweMEu$vHHo>gms>`J5>l?`L+eWOWP-Da6 zph5#aji0~!0q<7>`)il{KR332CwawsHnx9qnbTO>7+5?WczzI?rwAndhtOO&QrhNm zh=Y!9p?Z|{x={tBxhLQl2n)@S;@pwY^$=X<<^yjK9z1;W?UM~p+nB~ZrX82~*k_RW zF%`A+VAi9Qxp@xEK(YA5IV^~ZwlN+#&Z^?SUN$DyGYiv#=yGJEvc6I6t=1f78F&z1 z>@NeWp{0yRw3mPokSXX1@9(RQM;%P(F7Ly3u60qP?1beVLf#OYDL@+1-{wSeXiWFe z!@)f;?HhZ!hTd-ZQbFU&qeG0r%N@=ygxz7B%U3J9?`!y+lS0^`swG|A_{G}gd`9`_ zu{j&>(VB^+zR?imGF?`to2k~>QLS&l-y=g5?^NXQF*5j`MaJK~NcyYD_^%HAb%5C6 z!24fep@#rP5fJdpk%|oh;iK{?_JqJENsNupNK%u(6Q3Ctr>3Q#k&zY`rxsU+g#e>S zKV;@X6$&S**YGv{V`WT+JGj<-)W7Q4k_Ga&8IJTU3alI*9B54)tt|gI@IIa-8vmT& zhpLaSfU+WcI(vZ@q1GSt$F9E>O#28H`@w9Q)B%g@FicO(EVN-mB40q^Z6LveXHvcp zmDyVT$6jq?e1?~><992oBuftzhQ8E{euOEcy%}B?!nP1P6fx+a2wQ&dd>uG=cDY@2 zUkxx4^q%b+`nfM@Hy)+=W{Bv3aE}oSh#l*$2q_rrFJA(qBHFlRAZfb-Nph$=yYpdS+l z5;2N_M?fINfu@c@ZtIj#O9t)&r&1HSQn=EiHk`SbvNAMMaFpmsvUD3h>(H@&7ZDhk z`(hm>Ofb8*3}b8TIC{X0b^>zs_yKzwo6I!q+E0x6y@?sM&OHT*C|(?JStK2bHgvb0?injVT?#GJ7BxSj!TjAAe_Nnfs#jz3W&>3TV>Sx-#EH2MNwvmGfa$BQ zyx<6V%ijolmFP6NoIpmWQ`BM1RYG!DKJ1KNIgiO=jjerSXM^co%Gy+56wFbwHM$u) zM(6ZgJ`dV~jV)&yDCm!JoXd47M=|Il9eGFHwkEU@>WCZdqor9o2f-g(f1czTI9lv4 zz(~d!fU*T46dhg0f|*@3-u4;r)Kfe_h$?+U=u;1}&o0k}Hg5!f!Rn6w?MqDGY)GOu=Ga9oyWq>tO3cAJLsZW&I$AUi*Xlh^U(^&4+B@4Ho zx~z4TM)Xy3v_0&8;8+h?!51LNPb~#1jZyai-uSv8QfE~m8(OlTcysAd(ST}Gw&{&E z?rTKRP>l>%lkC$8DgMn#ws;{nGIlrCDA2lv61TnW(438Z*lcH(@#?JbPPreTqn`8f zAOVw3dgdc^uXdf5GH+DQfKMBkljLO|xKhRf>kM~Dshh>H>ZM8IiohlA6eIF&qUvQf z)V=PvnzehQmJOd$n{zv0S?4-3Q>pq1d9`AHV%UyoTa)lWAhGalRxEI+*E@vRRWvd*{eW{lAQd)Ye9Jf{AjF4cF z%DOfXxk;4HbT4S>E}Su3xKoH(jtNJpH(Yd>#?*2F|JhyoZi3-1jd%ikAy++S@{ zzg+Ksy*Zu0;DeoFH2X0B{YbCp>!b;wPsL0kC1(c+23GR(RG;3r7CW`}A^!1Xue9l- zTf6|ySKi;1?I)L%rXCBS6laQ(b-2H#7MqHtp017@o2)(3h5x0R05yMiZNHxspR)v? zthTAIOBWFQgK&hLA_j&WAlV;V+$3~0bnfH!2KDC_{o_%4T3YbgA@=#BwvM%p;}b5_ z_HPM)oM3-GJN%RLem(^K`S1U69IchL&G*ex-?H;Rn`PugHLM>!JlM*-uZ!tk`G-;8 z9-lSBxB;A1dYH|ziNu{+jw`VaKPbrX82TmqWv%;%3sFpx-x-1 z;TvO#;VdTdJD^aKQ0;1L34y7~wn^O5E;1S>kh3i4cRnmj8M)qr8iW>Nekf{~_opLUn#b)YH*dkAoo3e?&88tGWs7&=-05!gRQ;d{>N zsnvfMNbpQx=&uF-NmcR(x9#tVCVM9OS6c6BuzrVPZy@#Xe$0|^Kf;kegQ|WcNc@H0 ze?m!#3ku693V%m<`Iue^$mqiPJAz7XEWm{gX-G zCzTjAUwPc)nl}8{eChez-Sqnnj6d@Nf96u)V=Ow zyT$!uzXAZDdm=vHmo@A+#s64L9sV4W-&unwo&X*4cmFQXBf`JhV(3Oq+4ETX`waK@ zWe7d|H*NV2@mEy;Y0$5B2VIO6;NeHKy~mB{c}PpW`Tv3Tzxa>(ng7D#eiP2jO3&oK z?5-x)3!|Bj;ZXeeVSIv;@4N9oqUf8@+FF}@554CT=%06`r`zix|7rYhTJ(>Hk)O-J zQ-1E}Yn)iZ?;{x4SUWiC{YA_DcYA)KJ!MaRelnp*`F*q}4B)?pddjfL^lX@}(|#Z7 z89DQ>!Je|-J&y^#+}{U#O5yoytf#aI&#^Fyejn?v8T{`%;M2}|&#{E+e;?~9EyJ(v zdfKDpd2Cb+{yx@|&V0XydV0C{dC*r*{XW$57AU_)dwTWhxnZmOzmN9h`tYxzp5E+u z9`p=nzYq27X4S93o?dZy4%Ytl_racB9r-ob(>n{#j}in|zX|s94#lrwp592HeYR?} z|8Fq=xHJA(*#GbShM$Ro2Y!+3r{?_Uw!@Eu-1plKPalxJ-*tFes78FIa^N#jKP%FY z=Kp!~;qS7ZmWXkl$y)mc_%mJb^Ks~Dq5Gf3ey=Y-EeRt$6I*xt)Y|`4n}0l~eXlk@ z)$qHhry62E6NPp6ZyNqs=l-f;Kb88ufcdnviTq6J!K2il=02@qLj0$!`*&$ib;Nrn z?fm{1I{tUT-_O%e>ugxh1iyQDs^&iw)F1%chy{)^ln^YQ;CL4VH2 zL;h-rr%L`OCHiANeou-1UB##Q!RIO-|C6ZysP`j13h|%xsGKC| \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/getmapping_aerialimagery_vertical_hamptoncourt_1_0.jpg b/scripts/gcs/Desktop/website/getmapping_aerialimagery_vertical_hamptoncourt_1_0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83e2da745388d71d3450bbe25f715b97d86de862 GIT binary patch literal 406492 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¨n5evs^005Gdu9EnhlSJn5R)4FeoXbf5=HSZ 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%0A0?xs4-oD20Z|u@1k_r4#c_qshUHWZ{v{um& z!wGY#Fa}}B1z}VpcM}i^ub>yhnlFWIA<}fKOFKJtVp=F6NTF9ML%WsFoiXH>a_rst z-CVe=`h^wCg^#qFR=d$IotMhTp@iYe^_R89KVeC|SK4dmeOdAblkisS!8!(`t?D|P zKCZSBnCxsoTR0v`A$^Z<>ALDo$P~6Cgk=8!tOR49y0E#L+h4!atWawyq_3JT7C*BG z3K~mW=W?rY2a|fnMp+daL@~2B0e;rHg3D2Mx4VE{!*RYTt%yEcsKG(`0|3j0Za@V_ z+!99~cX{x;K)1itCcV`qxUtl&-V03<+RYm2=8ip)lI&VGw$04RD=Njc1b$?IlH=zd zCbe4bwPd8{ZMvk^kILQpburCy8k4O~SSZKYDDt%5EAnl>()yp7viN&OwDFSbdX}m;v~M*q|@}vXrW1EM3P&*fJy?oZE5}=@VAEbj}Tc&;avyAnumt2<IB#KroiAj*Dc^XICA^jgG;%YF&ygeyAP9jtyla$nAlpU3$)=9lx z^@`|ulHpu+3^T=7T(q3hY73hFt!r;STX~)d@H5~w&WEFF*B6?WpC^s4bemmLKLy*# zYbLp4r9n6oTf0FSkSC**HeviN!8Z8PE`{BrPai?33)?czXL? zH#XMSS2|tn>agn8Gim-(%tA{G+-_iHnnUGzhs6txZ^Jg%nv`1pr)#IRlpCyo6WZVE zHmfDorIxY2f8ScqJW=GLjmYIU6=@Xw_A0e%`L%gN9~$-X8%`-ll5X*FN-kFA(%QFu zOUy8|C{m>tg{g(9N;he(B(3hrU0%)J{zshrVDR;vdVP$#Rg@7)U~J&iEcP^4arw7U z+NHcvMLr$MN@o~XFD;vr(jf-EeDN-mX(hnbmd4LW@ivVK)qG9i+lW#x59(`cclLF> zvne@IaU_0Gk^s!E#ln!_#@^rHABZ=;Ec;#dy`ZcY8dapz={E@_%0Z|VV{ar7++U16 z%qwy>tdp|g)rtp*ZtfT17K!3N5FZxmkPG`c7E8%Azq2*ENY`>T<36DTke}@WqE}W` zXqp0wn;fWB_OiU{zYR*R3oxeV2q`%}7dXnFyEymS*S4$j zwzobL`!w36#nz@F5Lv4|!M1`q7TV4?V=vj@w}sowf;VRw#?TJ|S&CP(d@uN)b@0Pe zm&D!~TYHZZ+Cg~@ob$&F(OIUWXLG0D$32zRtNE<@ebn(If~GS$ag)=5_^WAq;r{>; zYg!kFbm^tiwHa=;OKWIsV_Rclw^!sPtcV1L&NxTSyUT1K-5QOgcsgI-=<}qp%Fs^R z9(!V4l1@nTHXperdZ`2wM&3vx^co8XonS2_og7qGxSU%_tyGfLe9Yrkwi6Q>!MIkT zE2rtDyX*NMvz{USsXiZS-W2!|;-3U-+W!EDKWKexTfDRQ&vkF%jTYm>);bh=j27B` zhJ&Ww+fOytr*RO9M3O7pc_oV8Xl|4lZG>L#zqOv51<%9{L&k7f>Rtfw)~jQp!*!u( zTFu9av`f3FV`<;ST6C&aG($7&gIC>YZFbRZw~3`DDE|Nuto1{wErzEQZ3d@e@l6zW zkt~+26im#5K(Vjd;M|Ni51lY}3@$6({uub%R@L>3-v(cJd&7FN__I>dj;u8qE$l3H z3#~jmcy%=!r#g^l2%sLTF+gV zlezYpR}|K(RZx{U(o^`f-d$T)O5R<1pRj%`@TbGyi{1{k)^uHN$t|w5)YNn>SozXg zt+mVw>ooR>GBnW@RU2JIstH{0UVl71N8v3C;bxx=<^H?j?Na+wySTC%&YOL8CY~(p zZc(GOxfhZui?wO)F}WjbT#zG_tgih1tyEOnapGd<`C4bTGB1=u)Wt_aAwrmYRLa-EX&2bIfiR80YNp zu~p)dbvdl`^0lA!smJ(BPtY~b9_sqVh4r=U7BJh$5hs%7c&`lWHMQNTW(Fdbc9)9W zd62A*VsOD)sQg+fYcSOz4Q`+!+OSzxHMO@0zFUxY38c6z19A_{OJTEIuYz=oEj!|U z{{Yx-?I7^dTU%K{I$b`Or|P$>q(mLK zEar>P{?59EZY`cTMAE8S8KKRzif(6AD#1d;gayME`)W<$^PCK6;#}yuaOHAMa;JO6 z+e^D`(Qjkq=Nr?MWVw@efAGliOQ=Tf%R5`j1bgMNv-4hJVcMT)xpxY?OpiN&pq;TObqn)VUj_Ut z@ea9bsOv2D`gzmzXs$F%TgcfiH94hOE-fr!4HRNR&>_s&U`r?=orZlA!;s%=x^11Z zSp>X?%xn2!3o=_-q>T)d+#KOlg~G1w&T+63>7Ta#-NDwV=|a3JPY%>-S>Db{>d&gv zTQ_H9XF~^4Fy(^foUdiyzMVe=W%yIVekAcV!M5;~jsCTEwpy;CacQL_w>NQESlKZ+x4$C*OJ*;f_}jB<`UL{4?;U<5$J6*&oH;HXaw2Z7So(eh=6D1FQ{SO?x%g z{0pw%TFE%FnsgT$TeInQQU`_OnmHjc+yb6#59}p#IPE_$$Ld4(0Iw0L7K~ zf;FpOih4JS^)$DS!FLb`Zw6g>R_aNuuAocUu3au)E*kntWiKY}-X{^@G5MV(LWC2e z2h9felah8%s@?tv(qy>2zXd;QQlnK`wAW1}o3^&-t$#l=_0vVs^zCglOAR(@+fBJk zhP9JS)#R4m`p?8`rN?J2h4fO1URgnn?f$$o~LjKiUgR_`j}L=u!A$ z>rB=3qLc6a!n$^^WiFv@rfRyDiK^T+{4v77L{UN&dD3ffGe#aM8I=#_Ql*H?V^*Fb zl%rlXV7V{5vue*=Tj`a&)5O~w!U7mq& zHmzacIJMKPPaJmBX?AyMsm&gm(rPwf$9IRfdDcTDuQ|CyY^q|vQa@#H+QEJU&8|m% z;R{a^TzH2-)buSuFXo;Ie#5EBXfB@8_Qpk$Hx~B0BO@X+bt?ufuqWf6!%K_ZbHzUq zd|>({dNrQC;tPw5Ydc$Kv9pO9{`%^BZ9dsHqFKb(D2NpRRE=W;`aTTSV z)Cd+rZmyS0*|HHa$LQvzJ>-5L@J_ejuN7;a5Yk77wM};FODjf;R%l{>4rwAet?p-% z2*bk-@Y>ekMq+to^9g1@A%4+6vt^gTKif~i9u)9ay{>CM9n~T5=BuiBtuN* z{t_)`PSBG5^hvydH%4w8-v!-8#*$<7U;g!5}hiK6|ut zs0ydbzB~TZ{{Rqv0(?u?z8vZrH;24mCxv_;Y2wX#>r(K>rSSV&X4X7K4}Vb7M7eS04T|mZSHSOxe-nHY@i)g`6Yczat9S>*dey$0r)j#6gN>tU z`u(nzaiLslR$APacMCZ1^v6hY7C90|cp-=cM{=Hf`$>4e#Xk{mw67L;!8H#N{8I6E zh`bHqy-&v1y5mcArzAIbTCR94L%J+BCDRiWL1c$!Ss9u*hX@R+PFHJjV3CDyJ9hEFayg1jX$ z980@<{RO0Jw_3fQhA*Jf?&8yRD+_rv`1IIstu;Lt>~Xvh*tPs}&2K%tk_mrzE)k(v z(7|#DE#V&<{8^-UE8%y--+&$qhCLTh@g?c_h4E6)Xg4QXzq&e{ejK@YZen}8OFqIQea4q*acJOcHc7ofR%0Lx z6%BoB`#Shv_G|d1@K?r~zOiHQ$Hg8Z)qF!~K7*lnzeLkKL*hL%!yX^ebZsk0jQD$7 zwx0V=(xgjU>1_(b3{7t|62=i3O@4NN!CCxkrE5R6{{X|C4^~;Od?(=F2ARB76hhKL zrZD)H(%j8-=DL3ty*v!De?VCNw~KQYC6c&hk(qcenQVHPD$Jc{jF^J+JCi`6%O zOLe(4;_;YTzS6g|_A*av=$4xKF28yGOZ+ypva#?dg{*YTX0fuf(JZZ?vVAh|Mi$}- zL~N1i*QzD9hs;+h7-f}%WQMJsPWSsiNY!;04JX)i`|H+?FkOYMtkacDum#VTfszJr z3GZ8iG>#y#{HYpkL<1XDKvV$dkO0Mb@5H;wwEqABc$(tY19foPYg$8Wl1B?oCG@da z?J~^4P-1o@lhIBAI2HOkUe1z@lvE=2^#1^cJbh1$&b4=E;BOM^vszu)Pif)(R_H?` zTN|+Wj zpDm4z&Ez*4m7MyRGirBn#TMNT8~2mUlnDe(h#8$DZ?XJ$b9<-!GS%gt&Os%~)2!sT zvzyLk7aEnS%84@D{`3gdnZ7^@sT=}YzJ1kyZ7+v^vEG&7&lPy8Q#UFXr6fx)H+zmMp%J;m;ZT57q5c!~PW1JUyy- z!$P%pip#_%+UagJdxeqgV>3w{me*R8`iQq=i9ooS(Ckd@Vet6L)2Ci@!D5ysokuB7 z`o&4hURIZ%Q{KQ*oFVM0({y7lRIT=uQ?r%cwoTct<%yHUJ{s@`gS<9$>kG>*GRIDi z_VUr%%HkbP(#lD-hq|8PD5JWGWz-?qw(!jDDm&cHBrFfmKM+1T{5$x8`y<`_6S~ti zUkrGQMDQ1iGz}lcZ+mHFqS|XZ<&LLdx}K`iUBJ_6;q@6FSVQ__)$v7K%7<08d0k+xx2mDPw9@ZbCt z9ufOF>m%WHm&FeR{7KX`jW<-b)oe8VA5hUeUEu!!w&|CU!F8xxTWc4#zFQlnNSzuf zOGwD^fUeItI(dw-b*o^b7(z-kWhct)lIM0!?{{?VcJy{LX9OH^TiB!rvNx6nIi?cH2|%w}!kGu4+2BiL|Rl*PwTmy{4wFZS46(j6Hv9&Z!|kAy)@bC0ksQl zwmOZW5buh3nU#~aGGkLM5ICYzMMSoUWcZc-dKS!|Aqqd1+)2uA?==K8_?yVq--4E`_ z{uqZ(O7*yU)$tjJGILbaV&x?rWz9C-t!-OxO*Q+uagb1@hf2}syp&?}N%Glw+e70& z68^?NvcHLK{GCJKPs6)8E++Y|{5hdT;QQs3l^R=!Z+s|hrG|D}R1G3Bxd<}E3i0h* z{t3VE8SfhF!aDx|#s2_@*Hc=E%Xo9*MyaUVM3IM%*%H^r5bA1CcguiJ0AOGfpVHa% zJ0fDkPZ$jDs*;8Ps+7hgQb^k)ckfi&K~pS@mpD5kO|KU~H$F10>i(Up=&I%TO4?My z)2h7V6OJ`%!{DhX`ZxY(v)L5rKilAce+nx-)r-p#^IiBc;n>cL;m`P2{u1#XtAF9Y6zcQqGC0)rI}3;+u!KA}c9!N3vCLFi77W1g z_~-j4YrZG=X`*U>5mMYPMQAz1rhzKG=GgB7k(AoYCatCL>~$KRVRgRH7WE98@o%p zp){7ah}X6ncAW1t7nYYQn_`H_sspKEx&DvQKj5XG5NsVF@jt_V4C;l0%G2pL`nHnd z2%QiEY*zfcvXDRu7@Vk#oL7Zvwm%MTW7KZf!P;h%xw55x2!`(hs`JXPA_?GQm>(_Ixl?*Dw@<~cn(rHVj^|#{D z_m6--;HzH^d~KvYrr!;GYZbM=rK)K+lj#@QF0QM6rRow{U6>-gp2_C7VHlD!Lc1)X zS~PWKA4F-tx99BBsK;X^_ltFJ4ZXui4Yt4GjdtF6C5|8@j$>tMI(&wInU&f;a<14o z{7TR~Bk=3OI#>2Tfo|Z^Emm8*k!x?>q-S?#Jm3JT6hW_e zIt_Nx>e5RO4(l=9z<~tIWpOAYfUr+{rxvkogOMDuhCh2GDH_t^OwJYO8nKOBJHIPY zk1}03tt7VJ@Funf9>$xaRYtsZlAZZqrM0>J5O`bmk@yYcElS@>@Yluv0EfD!vwdf8 zd1s-gigcT8dV5KX?G?gkm$y;f`E9aL34~|MKixD}^79Am^?9P}G5E4C40wiZbXh~E zjZV)}mr;%lIUq1Ct-Xut6SCR_cR2Z*<|B5@AS|Ka34q;^IRzaOl>8c$Bk9_h80kI3NUA*p(R>=aLT?=DkP4J|dIE8cn_J!bJ_n z;v`FX6_t7UayJtb5zf{iiuo(axR&Lmdv-!nJCcl{1K|)egd}f9lYR>1oaB3YPldc~ zb!By@>96Ek*b9Y8Ns23VQr{%4B)B+D;4vo$fDZ>X_IZX!N|p}zT3pjfHzg~(+f}!& zhsZ}0hp9&m&t+9!`dK^5_Wrg$m}f@$N!#c$Gsx#H>Bsb`)z01yNn>Foaw@Vi6_HpR<6{n^7$erLBeLKr@1DdA_v5xe&+@N}b!Sg?X)X8O_So6H zGMik!>+9svtS%dlydPuEa53+Kdirr!P{!8nH=hpWnkbglgx_d%bd{RnNQlSeqav$j zK_=`gOtmYg(L`niHcX$r_5!ulzB~JS5beoz#`jr0)D(p+AJRJt3mLxww0Y z?zCv`XO2m3tgf$L=4s8P(!qHZ!(F-ti~}5jLnt37xqLnN4{0o#YkW<*PZ4-_*IfS4 z5L@cvX|FBT-)-Z~ty#lvXTliaju=)D1+MuY=2VN}%PFu?fIF1u2N_TfKhua8sO}kh1Gf(jE z_NR}05gfA}RzDSdQ1En7N^fJngeIS^!Q(wnB$Z@gh_vqt-9)OSl=Dh4IVQZ^!woDB zI)!N0b!$pI?p?00tGm7X-Q4@ADmm6)3U%Aiaze;3V0a|e{jEQABR8iu)G0r_I>{V+ByNa z)h#we)3nhDLfzY}EB>*XG)7!=n1s^%bfC}wu$Yn#wuiZs`+nl_0nG`Y-dM2bO# z#U$QTaVF#sZ4}@Y8?b&+(><@l`R4F`ouF#ERr;o@rA4G0TdVt4ySww|ztim5-rG<9(sg}GJNIjiOHiKER=arK&=@UL6(yyR##FG6ZE^G7YZ`1` zHn8z*7Ldt#VXNE!0A^1t8infWQfe_>Sl+{^L8nC1Tp1yOLIoB0}`T0&d?((8tY$puKGI*T^i?1 z7xq$WmR8y}y>E2{`i7rxCYP$qccb5rFf(ZJ-C5$%@Y2ShL}OUKbn(?2-;t@wZ|T^fgvc}4RS_I25zziy?HtJKRos&^d z?@#hQT(%LRlg@HiZB(89^uORAnO+0aZ#+|Uwi>ndmY1aIws*Rgp>(pz4v%l8+D_7c zX>e&bvCd23-8!|Q!d#CB89Z?7Bw029IB`&qR3Z}lw} z_SNnZ_fWH)w8$Vv)8~Rrqp8u@kt0aTw_Q%8our9KSrt^P zfg(7rUvug@wu@tDKAMGYH7!D0QEcY#aE{YYS%uR}`>0w=n}yh8VoR1R00DYkR?}1P z=8qSK?{xc{818O#?P2wXxl7AEZW}0W;<40psV!kxZmnh)GCN#G%&uKjl>-&U_;*LQ z9yhzaHrKN1G3a*o@?FopEuxO%>h|UsAX6w3NYMEknmF>ia7ZUDbfx>M^PHQUBGP_O zMfaX%YH(P(iZO9gOPVi4q~5AKX!pL}dYzw*EmqgV?G!H)OvWpCmziQHCz5#r#%7P5 z=3)1TZd(9XzkbM?9QPj?d^}H*BJk&fb!}GVh>_S_UQc7C!5lz15VH%*mL<3G8C70) zFU?*vx{J-ytZ&g#t}bF|ViUA(&Vc>Ek`FpDnF}vWE?Xc9`>*yX(c!!Ccf>7qrfu4G zk>RZxD98#I&pL(e!)yeW=H37p@y-WxT&>AcjBj+?ez()`*y+n@)2*D)l{L#6OJ4e4 z^U&;n;H4fYZ5#GS_=9T{hC7cHYMvADy}D$tp4Zy-mE4gA2jm}R)8}UEl|sKRb6+z5 z0KqvlAF_NozP@N#4En4#B15@SM6*XRIz^q4?}BJ#Vt{3(Iov=e44s8rlY1P+v6T>M zBt&VXq#IPE1*Btybc`{&L+M69YLs-2DQt8|3kV1!HyAJkq&ITpz55sTyuW?xoX=?` z>ZFTDP(^*+(HK%KyrYCQ^L7_sM`olbS9au;g3oH%BY7t$v@bxupugUqSAe9x@|2<( zva>Q6Uu&@dKxtKP2X)?nk{rM`4QK}!FJs;`Jrrt$_9qFQ_R!sx;M&DsHgpKreci6K zhAYT9n=*F|o+6JpBz~)FmytUl6scSpPAm3(bImS~1F(vH=nk#q6!4o6{va*)#cszs zmcor2PcB;>V8tdsKEmnvHK)|>;o&+uTZ)4Iu!HqmN)BwHJ2e{!#9a;w{jAaY=*IA+ z8-FS9*JHR@ZI;Ih#QSS^;)kwy{%p<4(nrY)GKtTjx=J}4#>l`10)9^bOEJNfDbH!$ zc*{S3sbV>AagfohiG2wNxNAe@_}wo9^A|972|d_q8yqsqE@!HMG(~U2GiuR&4d~VF z3+&dZobGzio_5U8ErDW1-Yz{@P5_-#;EPJlH&Jj=f&nySK>y zD&_q>o=Wc|goobt+H2fKWo@8z#FQkMujEOtV`w~!!#uT}s5W)>xKbdJy<4t}KMYw! z7ovn+-rZwA(m~dJiow!Z3eE2Loo>=#0%Km+ePj6;K>^HOm+n}m#?4C)p?Ht1yw;5` z3%dYJ*v7?f?igl@r2KMoJ$+58?sf#G&2l&MKN61POEbgx;ecVXI|51``$j6-1G#F9 zNgwlB@K#*-iqL1HeNPrJ7UKT5o$ZiO@8r*^I{c{vHC|?uaeglzQ7>NbxW$z{(d`6_ zU#1D;wWuh?E>mt*Dko=Q*q)$si96nAOFqL(c_#0`c;Cp4z=l#47B|0Wr;%h>Y8ch@ z3G-^r!nq*%2OZm-WkA`V#m<3=T=G}i9_3|{qfaeM1=}lDGkOww4SUwsqx*G43K(3Z zhc&D#YW~&DJv~Xvpo;4=__}Jz`LzV82M$&eCfH#qtc`KcGNH@p9pV_=i=MY$aybM% zM`Y+uGraGlS2PQ*aEuXDU6DLYe_LWANPGECnOP6dom=&<36UZJrTW>H6l@G2& zbm)H%fc9Fu0noe)jM=wME8b3iB;WkQO%MjH6)+p(o7&fiS5@OeX5_O+>+J)(sM%7^ z+3y3TTTfKPLB1a8zb7YR!JKW4%In#_M{KMCenb6Cl8`^H=6(fE{OAJFo4~c^CTEM1 zyIy~v=r3{n^zdN)M3N5Nt{%N5?J&JAn^2Rvt%Y%w1>GA#ZcHxu82`DNqlz6=O<|Q4 zi2_RPo@!&}HiBW0{g6gZNinm|GgQHUBvZ7^9|m&YHKe^tVz^8y;aN&<&9GVejtG^x ze7RkC=g(EJQ#EjEI~?7(_@;#L7DM*beGhsd@!}K=w_F5hwEwnmg}fjVX{!9ZRz4a0 zR^+~tp6sBhRxAHUya{?O=)b6P<&(%>C{LGmyVu_|X>Rdrs>E`_>!E;p5{J067vi*e z7mABreW}5gh#Y8hO1jc6Yt#`Rc4)*ryIkU&o4K?gPq3uD*C?h*- zlfn&C-oMm3akDM7x=4Etr%L};M(fUG&<@7m)CULm2q z<4&E~Nx^+bDp(#>Q-t56mis2C&ji(TVO>PJgNnYnna5{4TeFt&ft~jJyq8zmvXArcjaI2l# z)ckeBT|dFb->uZ^-i41|&aPMKYxr z%*&;9K}6hJ>{YTH$b6MK;D|h(iZjJ?P?ziLH5Tws_Q?a8ys?fhM*-7J2X}9Hg=hM= zkc0uQS!4LWQw|0~RvCXnU9X+ttrIjGI(d1v5r8ZO?}2&Z6rx%eR21&MQeI z%5;c06{c#ofI6}tuSum?B1j%Y09~c0DI5Bv<5@F*eqw$K^q}+BCSlH;c$_CZ17DMl1qvAzc2f`R*hJiy=&_0Azt= zug=@F#1npceY^hvBThU&PJ$q0%s^-8+6R1jXUB)$N{Gh zhsS4Zi_8aDxK3`hCD)+K$MWjvTU%6(6ZX~8-nn!7I6Cr5j(mH?^I%w!GDMINxq2O@ z^dw;9KN7PB_|#^L7Aq60x!K0_ria~^IJ*{m$mq-H2yptFn1$wBC54YG>>{Cw{f?eV zTeX839pyX=W@TN$Ovu4i9AkI&>S47(5*vT@Ncu@9!qTU6qH$lSqNPPY>Z1qg3xh|` zi?tI|Mbue5ZV}l{wmU~==-1{O>$U}SAIcJ$gdsoa4AbTh{Dj^Z>Ai436}L#34q;Vu z^K_elay}aV6Qa!pOfkF}4rT0^h`e3((t?ZIm~dQ& zW}9j;_GyS%nF>f^?DPj$OaVee z9p7$2W!i4_QnYv4LyQlbI`#g}#)m^0E^jjmf|hKhU@U2B;u&HBs+gy^`&*oGf!WN~ zes+?%eI~(;>bRwdt%G12o&=$9!304kUAU!1kLv{2%*jJE0_QhXHv95i=N1%m3)m^Z5}L@Cj*1cj4ksOH95Um<(qhb%{*nYz6_ z_|9c;0OnEMzR$nr7+`(4V#vJ;s~&vfph(Eu2;JL+qCN)Ed5r6vsB0Gs-YH(5#LYL4 zRct`(TZd>Ln4Eg+)P%t%?^gZC^c78x;J8bU7$ZBrH!vp+%R>a-I%{0>YI1+d(nm-f zXk#Q}3+9_O)|}85#_hvVXWhS7;4^q|3UfbO<5^reu|L6fKLtXp;}qEfQZ+K&)^JBI zP>Q7^lxx}`x%re?N$y_M#_OnP!2M-|?pAYul7#SFFBPt?!?G5C`Jbh|s!Fw(7t4I5E{6)I^NDKQ=thuBVW?rK1gW zA8Sn?z(3&C39-NgG|U+^$d&+HPx0uX`gr!>M?y@rX?vwjrd`LH@n`gDmoJia&A{am%!a}#;->ibJ82eS%Xqrtv1MX6m6 z<`gAe6(19vaLww|Nnw;TKDojttgM4YD@)vr{nX}YW!DU4CqEGUs-KGW#qGf7=_ zo;DPv^8QbLrL|{({Fz$G`eKT8?`h5ljn|d_UNR}!@OOc(heDyp%XS&kNn)}XGy|oR z(colMkf1=3Z@A^tb3MFuk2%*(CU;u#R#uQYZddm8Q6E5-){v0 zIVC++ss|$`^@qy>u~GbW-+yI)7@z#I*Fct|b%!O*{fsg)>}6tqA^o)cn|oy<+veSI z^b@AdjUftke?mW@d#lAnfRBt;1uVbV24-r2Gp|uCNfVqsMuQGV$su$aFFmW8gSJXt zhO`AT<|dR!DvIN3W}HS%{K3krg5W-CXL@Z8GYdHWRoBfDB5nU;!{>h9HqdNO17B3$ z8^^=N>ta(kd0ZBKj+;y@poTpMt#7w8vKn|HGMI7kZnWEu%*QRbdd!e zdtIjlK!wuZ)a03ci~*n*gxA{(vEs=&vayW`m=8Z6np=L#A|@cTyVz0P%ucThfo|+7 zGy-42TU$Qc`y>mNib`j#>QQM9PTjLt68T`>bs2L+n%iYfnuB0$bFF}OfL<-nQ|$!>%S-cXT?WGFDlhf^_~C$%m1+4U zD>UU3)t+i zJpdolNs`OK7R)R;q(~KT9NMRf*1qFX3Fk`h$|oG)P0VN5J7(B=BpD&loudpP64*ZN3hg76x@663!cdc00v z=&BqVjr4W!tljblS8RVUUmSj#r)%Rn2{aF0G}ona*6N4ejel{^f@eD%V69(iK*y!y zDwRGdAt>Gec1In{FFvChuPxQ2Xqr=N3~ss(E=1#+t?}8>608axWH61ABI@`l)czpe z4g3^D?Y!Y^`YW4CgFO8?x8w&?76y{fmv*=Z*ay*9T$fxS!MMu7|47K@fnf?Aa6JD% zEBT*uX*nwL*zpx!v&ZO?fZ)7+R`hrC?OBhx8x`O|M} zziRwgq@vv6DcI-I(k-B9S8oMIqPxm>WrLSkYipje#q-2l{|w3x+K*(5-v!A_5Esb6 zitX7Z;#`3Sru}PF{qd`Jj~=TKqo#c|)IY)M8pIGSPgxzHde8^4Xx0vf5!!l}4H6BB zmQqVOWysp=XubT-$vnV}X~jv#SOY37;4@n_8%|p(u8@qtwbq@&L=@jRO8|kCaaL?d zkT`(@0J8trmVCW!vF!!-dXGeJ9a_Y#H<>61+scH48}Uuv(t8oHSR~o9Io{j#cQzblL_@dmUf{>e zW>*%Ih$a4ab6~`h`-IkyS)u#oHpH-R6XhxKS_*gGgRypihI=zT!yGA3D?A;0N}ufX z9zDd67&iQeAS=vhQFP1Yq7zQza=7do35Yd_*d8OU7o)W5!gBtDGe_d6l*l1X1*4+#;OS{#$`TMw;oLV9=K8_oLQ z4K* zNx=}O+GPS}6o6Zri-*BO+4-9iw8i@AsXCWBv#QH?NHYdD#{xNDEetS6rMHDgb+dHH z;o66?QM!?EZAoDwl{@UYDew%kQO|+r`MfbL&svSq4KH_jRIxMpNW6B;Yj(;vi>Fz4 zF~X>+B$f5L_D0EdneIjbaOH+8ilkA)`@vS#AcJ$tDQ5<_zwiGe0q0rFLdYt(pRR}M zU$`)i2~a&yA^TzxlM5A##5veJw_1SdZbEmzBxWL6kYKS zp$;}xR@y#x36s?7s5Q-~ClRl>99|wUp8rQuR1_Wlv?H(_I14FC1%Wz@{KEya%1Z-+ zwGdi@>K0r`t2~$eJ)hIVxW?4qx3U61aQHZcgb_ca9_bL!8aO_jo_Mey8nk-YjSH=e z31b?dkC7mg8|6+5QK=2L8_fD)vGt{WfL8J%eUw9NKmDyC`#OU>_u~#v(*UDWUpvwf zoicNGkheB;f7(JHZSS*As4;p)NcfY#u3yJlH}K zb8dY>6z0|!JrQZvZ^FT%cFSk>;$j4b?!LSTZB==CH=WEg;VQQo|JCXx;RFxF-epjJ z_KGmH#_Br0F=e{X^CTR&o$O#!{m`fo^VAJv9RJiPlRd3Z+Sj?;GkhfnKM!PsKZeP} zSk9PqKcB?!&EFDei}1%$NSHn!p*Iz4!gCO;$W9mGA&ERheGbYf?k6t^?mTO z5l%#mTwZGhwHi=Pj+p%UA@5ZPMtu;tSk|ar22c9rdpGirFXt)C-1ssJ{M!5^M6%5y zi$@#L(vfG_(hh{lO6Bc-K?OchrZP#2ZlmC6ixS9Dz4zn7kv~^I&vktEDtu(~3nW;s zh~r9cS_mZ0%Jku5GH>_E6el@8_1n`Y)RH-@aj04F`4coA3PDf!r&Z9}ac_ zf=;)D1bC9m6EslUi)gse$}sa_+Ao7q0dth3F^OpR(aELT&e=2hYp5@)C<-+(5cD82 zglpxR(g=shbJ>ASJU5(m=lK!&0V1Bm*~Px#VV51^0T{7(t8TZt#vjZg;WAuS`jr3F zT~y-~gZ}4bm{e)RyVNZGuNg5zJZuc#2<^}ZG5@ooK&VCdhdxk8@OxqlWEo$yv}=?L zT!bcl**+6dvHvmnbSC0=N}T=MA(Z0%E2i1wiFhlDIbUryQ{3LzM%@Ks{IgSyQ2FXf zw&t@JZLvn_Yq}8uf4hrzae>w1uNs(Z!-d|6*n_Kxv9kq4AU|kL7ghK#L=7AxRY;CI z>)Ufh>;4G=hOQ)QUH~RtT)r)sp|>FA(+$J-+O4;X<)fad!#_K^ooo7ZyG_J&lN4`zJ#{j0&;c}#@S0r{;014s(TAi9$3fFJ`(1#lt>3d{ane2P*F>kq8 zhx%@{se$XXU_^Ml+=qybqh5^I4XWV>5~2P0;qjPuy^xQf=7wCA(DP}Y4BZ)(vX^N+ ztiR_d@4WB9KKT{DZmzpqgzZLO4tCS|nsvC8ZiT(X4HSiW`ksg~y` zUKFga{k9{k-MMHDB#${Mb}3C~EObblJJTZnkK}!LkDw1f1^6}bXOqqDJ&-Q`{+=kcvdIF5vk5OiTo4>5 z3R5nhGlk}xc)GgJR@;O)B>nzlUIY&;^sa?t&F4 z&HEXF4nU1d6Zc=`vT?Teogmo_ncJ9UP|M4-pY~tmgbYnuN%en@z-E5X^i^w4bwWD8 zAkOwqx4ri1qs`sTk&61R@lMJrC8q<_(9dPKe++_+p1`j@w|Bfme~MO}eq8F_G~Tv~ z+&iJr)oHvmjos67%{F#DT&4T{vudsA8x}7Z^?BW=Et>2*1?Mwoflm?L|3G}!xk35D ztiZp^3v#QKyVtnQm5pd(RWmS~1$R8aGwZeDPd|raFA+_1Cy!1>6%-$+uRun|RpLSL z%Wxsds9!Z2qc04sKQzU=H@PJWj+|GE@l&TPv^sfsY)es0k$=4SX!6Hqd)CKA7MWBd zjnR=@@6Ol*0+eH1_!I%?3GdfHCeL_7tKK}wtGj!rUSq9c2Pnzx|42StE27 zMtJoV6X7Wi_SU$2S{{g}w8p>7nr-&zEt%+f#sV;IX-k`lc-TEiwh#~_e1{O;&xObX1_E@`!3;|-{G4s?&$O7WUw_0Mq#v@^JSxc& zPlL$N2A$RV)d7mPZO<7NTr?gjUuwO>3HJ#; z=sk3O)fZZ^RV|9fbkO5;t2MK;v&}(;H3`Ifmd1v|%C?y5y(V3fJ`0_lNWwkZw@u=|iSrc0tyWiQr&9C!sRcs&5PwRu1^vN9Hrn zTN@GG1zk(tvht05uTZrThn!Ts_R5aQVA4j#$J6Mn!_#QOq`U@Sf`UT&?EdKpR@&z* z@i$;JF|oSe6L4L^Uh+<$#>3L&4x`)QVZPhZ1)rl1O)?h+-Aw7-b8yAdMI*LYcz4&x zO_ln%7Au7A+Bq?5urxNEB#V%59p_tM-izTgVXstQpdJ4&*`PP`XCvWD*bg9L|-WREy z_Nlz*HfQ94h3(i>8fThq{~(q2g}SD+_v}nn1 ze~{F#nR0J1-zXD}z>F#Qs2|%D*v;^eA_CFd&6ksBDNwwU1=ZqGQ)9IvA#cmC zn)IC${R>@6+Q%-b-#+SY({n`mC=6*$C(gW9)6|L;RC?XB{BpaQeGJ1*e~z5ml~vz1 zOeaeoVU2gRFd57`E23rM56*=>(^5k;cU^Kq>c~!$Wfqb&;_9`OY1<1PPsO@ELBI9f zyAhk+J(-AUQ;Lt8B_e0Hpy2X<@gVYam$v9)FuVuEev9Aq9ebDP^Iv^~mYgZ>;hYMBCBY&WWpkp3QiokYV=p;^q!eOLI(Y_*J>lAskPbm9-0Fo8EV{))N86a%C(2Eg!?>wCJkOKP-lWr!_BV-q`bN_(ZnC-o^S+lkm+2DB`kRx3K6UJM zy~$bH%^|129dajU>F0LOC#^NKqP#XA4$syqf`SGy#%=SN{bo_Z3}!CN;lIw6`y2W^ zYhBY(=+Hux+5SL5hZnV=AZA0Ov}uv#DDB-y*>@IL(0Zwcdwp>P=x@ibZe9Vy#(N{G z3bc1V$#B5v&i*60;tv(>`;iFM(m~7;8T*Kv((q7k=j=%{S1845^TTCFks&Zcj{HoP zaG~R4Hd6X7N&I@}bkNdi2^q03ckxry?(i$rd%^t6dAGMey-e)w!z8D_!>qB!Z~7T6 zhKGd8b@U8Z%hfm+%N?@{VI~Vtu$`DtL(BclCSqdlgX+Dko9BP(Y~c-|s;Ec$yd~-m znbhxIyf*Uc;8=^Cu)61i`<;G^UD`v9ypA+&P%QG`Vy=JUrI^j{NC8HA&M#!%$Zrok zrH9-DVAce^YD)^$9bHm~=JZ=~V#6;)7;}w`o~*00>!?0>6N&mUCT+bv4YVze_kH=s zTT_q|)|Gy~wfHYOU|ds(BHWx!`GvguKhFt+NaW{bx{n_t;okY~BzGosDzC7$6>kPb zMYcWv&@Atq8)ZKK=%vuM2D1&^Jf9nG18jk{s{iWPK%*xsj>JO9)e3>X(HDjt7$V1}>acu=7hLQTTzrJz*t^6GgE<3Dv4 znxvFvtL`EM=ppAG>lxx#^~-7uMVXKBdsSH{j{KvP(4a%$L3f0w6=CP+#eQ_Lwo?^h z?k%pV7Rr^my9K&86f52W=9=~CdD!p0I8?4C@mr7|_G*`(&q0MiI;mUn+KM)I!7iQ@V}GXgrvc~R zbs|G016=TPJbupC#i+*0TCUs3NaAzIg~-XvU2-z;Yj&Z9FN(gd*yr1`eSuBL^wJn-^7qb#mbER9R$oY( z=@e4lF4ZZmeQYGbQyNsw4=ZT@H}R*ysUO4kW75Q=YuXJvbXV+yO0nU9UYNM9!>-@Bffh-9Is>9g#)x$+%X6EE)E zQ}MATy}2EL?4O%!`w~F}n<9Ho0kyTYQd$bCQyLmAm%@-y!M*J^&b06MC9=4L-Z|NM zuj0NG$7T_C)O&VtzZof?E8=kCX2o%-n-%p6vvD24f#0x zX$GyvcB&S&X>08+hzM`;XXmxR=YeYBf_Cx>X05nQlz6ZlKOdZM@^BM*P&|7=CKBw? zoYkP|*cBuB7F3U7a7eU|X91$?vc;oHl$(Acm#6Ot6lodjsgs!jY zS>ACWy2uuqC8Zk80cy6T2Jk`@3J-%#1;hAu>q||?qCYhNUr);F^6Qdk1n$t*f>>Rg zrtg{vyU^-^3&k_j%>E;poTl+G0{Gqkx&3-gTFHmR&^1^_qpJF-q5w0889e;TVz|z% zIjdzoEVg?vpQqc|nmPozsrKhIQ8xN9X@{gA9~LyHke$+sLp*eJ2*iy4T^hokJCTs{j6pJ~v#+ z*m8I9ht(>+npPZRm=_;SWPNP`NY=1zl{}lJpWB_K{~~8*B^xoNgy!P4`?$6{Fikgl z4<1~rDpoq4OxcS^z?Ts#*ss2*T=hkb34x1#>~3V^VZY# z|7xGF8R>qxM!Rz6!+cEhCF-(W1x5hmk596GLy`TIl(zXPIM5Te8vo~$r+3)2vy5FTq zSgjQ@(pD&eUi?R5rB?i9Ws_x&!KiOB!bM50tn0-4NbH8xWUclRoV@&?L#(pQUu2%Z z&_5>&&5d{Gf{YIMPn25>IMJ+dU7F5YKAflfIR89}^!o92{xNTd5)Sqg$!QHFpww8)j0!k zHILqF`j6!6lCp2zyZCYC_bpa$*bs_TKeVO#W>5do>7xcwlegEdEsU}BJv?3OH=R36 zL)}iFM|rt`2Hs&_U&~IcS6wF>706pJE#@R(ZTcT9p$~^(wXRE)x#7TMjXK4riRuqs z5W-Iu&?^;dr_Su{t$yyRuW+wrPi%T5&Vws^1NVK z*Ut41`8RoB@-60xoI_WC7iyXNUWsmTethRYa%JSb=jIMU#NEy{$D0{nOX9rQJ9kvx zxnn-;3$A`WB@Ei?3lSX%iJVRUieue44o?=0d$17&ri_&jnG?jZd@OM zk;+PqAu_dYOT&0Ouam=Qm$&z-36cGfjb8-^UJ0n6g#W#Tzc+UaiD%70(E2ENP~T0a2}=2gek-d|HR z;+)Gs?41?a=#ph_klh1Nsb;a4OJAmE!oYdjwcGWOu0hFEyHe-5myibT98CIeJ@*^sx8W#o{oUB_NH(Jn`pd75>neq^8i}_R&Py zJtVUwf_`3aCVzZR!x5c16Uv$rkMv&bO+2zl)a07g` zz(B_qge5Wi*W>QIKGo~+EiUm&J+9qmr2U=)@N|0Rgfha4e@b4gB%so;En-Iv|HRV6 z85#-_+-=bEt}2Jmq2#moSJx9Y(uzit6LMBX>$u-djI+`C?3rI)K7HQUIvpjpm{!@( zSU%8UA_DkrhcM_exqNLzRNJonSi9XBZb1O!d9+&oi2p|tZ^hDz^O;p-`!Ty~t<$Nc zQ3mg5D!dppQyi7AbFWX|#`}AYd)coP9#_F-FqHZbwy6#A+Czl`XKO&vB9D$LalMa>H$m;RBqr@ z$?35>l?9A!Gfg+OPs?HFa|saoBy&}(9gd}Ff`J7K5m-AYS@rQ2&&~9-eOIWF5V`kj zMhohUy5uK1{`8-cntPh22_k(a`L_R%+B#l--4gq)wr7Z}p(&5uS0AdA zYO0K?tss8Yk`OJ!ta!8TT-G!cXh()dmWqr*&wKB$8J5wO7tyE zKv%By47PBoA~qk;Z3Z-Im9?xdV!78u-F`DC_)~-R@nrMx(kIV4vuU3iiqI{ zsQ_wOE0ZU zK`Z`F(Q5(7AkfD7?D@O*bFb97oO{)t*nVi}_S#o? zw=LNKUBGs}{&%yfQ4_(wuNa=`3)uX9cesRh3)$%CV8Y7!SbYELq?3$TPYPPVoPwIt zgFD%Bj~j1#qj(2914e-EjtBO~nq$w}aT9$Uy*E^U;O)zDmzv|_;+_5w87G&+3HC8R zT8Vz=@n1PyMu3Q*qPHzAd@ozbm_aFT_+R7Ws3`cs49${BHRlp$@5VpaTWcYLt5G z`}ySfWl1y?gWVnDcv(wgR3;>q!NX}xdzj=WOkHW&=GA|sd8i9;-9=eyR~D@}PyX#4 zLcav5Ep;WgyN0@5{K|*-0ES=FRpfKhzv(D?rP?qWcb+81DIU&%bWFjBK<>=q{>h2TZ>*@oX6*-|&`>F_L;S>pak+ zU}!$<=@or9z6j;MOOFCs1<%97DYpjE`b3(Bno(CeEuRah++0_%v(C%f{3&@tBL7k! z_|8);-38k4*){sK1=u?NfQye1n^UQkqTHL8aJD-Qt1GiS}(l8O;C;Vb!) zZEQcuF854#P^klyOez)5L0rp`2ZCIQtD#q0mwQ&~!Z3Qlz_n>x`_7}B-XEHFP3k%4 zJLk+etAnBCM(~g|OV~s=T;jBx7=vqU5Zc|_#nm~@lc$3B>8}ei^j=#0Rr=u%7(QBC z#5aA1lUs`nCZLL=L`{(1EEm$_V)q^~e1`8aeCQ(F^R5BTDL%&&IoIIznfjB@YjR>Auc z6Q`#XSzMwW3p&VF(e0)TH`HW&2;Q`$26f!lk*V#YXRGT;*X3?PYVs7Wra|y;RrO}B zt*s?_iS1`)dDg`ngB7wd+$kIjBVJiq|B#clK7NNt@9{1+spJj`XaK;3(1U;D2Cr3$ z^P?h!?VCb<(5&7nc(SDdtnR~kQ!C4dAu6i@*vMb-bWv?M^+<$-WeKG^0lF%vb((iw z3J-ru`~*<3QE;UgRJ)2D7Npoai_vA3jPz@mx3;zz6)<6tRp|V!FPI6RP48pK^(rnu zO49dR#?@^Su2&{V*b;S#cGxKS2R5anZfT}MNxrI60_KbLH80Y-5eeYVrBi!EbFTd; zwD%JN8Bn@L8FTaOpWibwg3IdhBos5gjn?hTVwRJWHlHO^YOM1#PmC{4Hwd^f=&Y@} znaDpEM!X@^(ZEP)pz%>2i&I6S5mv`^(-s^Jo7QxvL4$kkp=A9!?RvEud`Mu{k(Zt& ztA@X2wl-_#gnSF}+W)zW);UcnrmjP{9%Z2o1Y*fl;WOeO7svuE`uaF#$OySQ>9bhI zzn;S?l zkrHBhdx@FL8H2$-|HfwXB%un$$!;r`;MCut-k2;A)&$Hw z@oRMXS8!SQSXO332q7z@pUkV9T|{MI^bixWEusrhQ9(9Zj3Kzwlh4D+Rj`}{;qrwL zz|7v2NzL}{(6^h0pIJ0mJICe<9NgyCJ^h9`G;8H~LjTKmY4!`$R|$?1`T#AtdZ*6@afkm$}R}iET}C^cobbiUY6zO+d^rVj&3RlR?WR|YYIqkJ-)o~rYlSN-oKBIa%xs91 z1JK5WeY`pAbdr-s%~$?6(z3%jakKw$75s>*47VLucRh#*v7DO4?`}OG-tQ@9H&qC zRkAiv!CC6=?shTLv8GCsD?r;sK8-?|Pic8YrG1;}F;5*@>ZF=_CBhxTjQE<%&YN{8 zjT}?6hU|Sk@>`;JBHO4P-JRA8Gi8#^BN%&nR=Y_H9L%UF}$TL zN`1seeET$vIoG-6E(UIdZ6SaZI88QAm|x z?-;d)Kn?S6!=48(yyqCl`S*yMz&z}OzM@z~fvE?naBby&b7ig2l8I2^thKk(5?V3> zyS@%n+ztRVfXB?8p4--*_e0XTt7AJ+*(@E<-0uyvB3gJ#?Mf{%+JgCKRaqiKowK@< zycI_2yziUI|1>Q!{(6za$Fq|f75?1=*FOfmGIj1y!^Ty950K|uMPCA|eRcrtS&nmv zU-ek-!^O}v=oIfBgv&+4%fmstF-2h5bv-`RsSptmJiXQBn5XU4l$pMdopi4@He zO;(HX+3KnGHZ;~8bIr^M(_r%g%F5u`Vs}F0)Bykl`LBVF`Nav_4W<-2N?z7r|}Y& z)Pihk{BFj*WW33+G>_th{^CgJ>lg#vj4<^W)uak)Sk14w3<#uT?-BcULs z^BE&oU@=PDr#~&koqlmmEysI&Nxl3L82*Yk#^ziA78k9d7a5tMJp?dQsE4B~0c^!< zuMB|(0dCq_t(7h+^+0G5f9P?yd+cWDX4FX$BOyb5Duj<~T6QOgy(yvhuVtS@HR^l> zRak3Bn?w|8Hzh6V;G8tZ^CCsBB0Ewb0Ja`%~zbZ zmWl@kxVbnXpPjU4<*Z4~^gzXQdv-J0C*5tfQL4MybUUk!EMbofQY_=6Z1g4bzEY>V zbP97dgVR=R4&`ZISec@fOslnPAn7{8ndy;71uAYB+_xuVNXFI+7K1d|{ai)DNAV1+z6v|vA#I(~%9 z0U-U`%)6^wF2o6+ighoCZTrj4)ed@AX)WfK|`ETx?Gl!y(; z3XF{{OoGs;Glx*n9PJ5`IYetucD&%aE-x7Qhk{Jp8^Bu2)in>x$Mt>Tj1i|9noRwT zk-$MG65J(VacpEKGVuQa96{s0y?r{)@adQkaICoYK z-bxt?z@YmV!5@kS(_V|hD}QkMlgyU7Tz4BB>oIOsOLP!Bte5^_kVhCkU<7PuVEO$k zBddq2?eg4i6-N_BHU>6Jh{w8-#?i#idZo!78hz4M(?x$a$hlW`d;g4E^>s^ydl0X)7aTWF5{mf{Sg?o=I$%hja5$0w<-+Fu?_>ZmV zzZA8<8_Q&GybXC{ZKKDjcxOz}F0U_bd^M(7KDVa*yTv45*?4)&-8RU}EVCrmwy;k4 z2h=_&{>pw1(?4fjZ}yA$web(b9}TWk!_eP&LrH>Le-L<+#oE2%59|*QYI;45$aI?S zQF9Ji*7Ct2lID1gv@=IskL;=89|-Ec8`CWOJE+@fy4Q;BVbrxfF5gm)`^wYhGFT?7 zELZmt{{Ux6w%&WGtWjC~nPQRzbn|w6uN2`hl%ZD@f~6X>g7#93AhhcByfwPo&)I zx02k=J&%O#W3h&Hywl_RPL}rbrOKkpBZ1yH{I)qG^g?g=D3|QR@l)Y9hJFwHLil~- zZ5q$R9v<-hj+nOa+3Rs8p`%$x;f+4-E2%!hUgXHlxe6m}yWCM#)vMxv8)>&50QhOB zcv8bsG0iI5MRl!DXJ;m%s=;@gyS+-r(#uzgboPz`6|8a1Z?ak7FPDpQABJr7FNc>m z&*Co*`2PUnY1cFj7Ec(BBmNN`H%!$0nDuL0VItcPi3#TFk-fZfBJGwqV@8<7uq!lw zD}=}5FfOEU(ome~tEcbT-swr`*0yh5kE6s>jJ=I2kxrCbi_+R9YsG!8w(s2Nz5;&C z9ys`i;?IxY@Pv&6U(|G4T}#HECyG6DPSRu0v|*}USrd14t=`((w8?j>Jgf|%6|GA% z6jmeUj~UtP7JekU@YjZQ8>sca17Abo3)!@()@u!F&q)5ywASpkYZxv9U*A3MjT_4x z4JEbEwUL>bpC|8sgWt4Y#ovUUDEN)>E5Mg}euZ`MF|=!c7$%|NjWb%j*Szgbq>|3= z((>8tbW2yin^C#CNZ~t#$c)D+A^EP);y;J1JbB|~hryaGy3VzCdE(y@v^tgSZ>?Y6 zUrTkVn9JTy*0PDN=a58!5k#1c7B$*C>1GvbMzwlzsb3#b&Z_raB%@{4?$&zj?9x0O z(*uK~=tt{6Rid1necyShJLK`@Ks`(|l8_+i7-@#>~xiad>pJNWmqUlN=FWgrBqL#V;J{di9z3f8d=@Qi35Z zyQTJ~+I79bv64%>?N?X6vC}P(*(rEqc+O%k2bR%p2p{#C{ypFP9{rB>?Ka0w@m_)P zhhOm&{wC4&8xH{Zp6@{OFYdfMX=SQu+Wx7dPhqOs!J$~{5=SY`tgNwui{>z`ur5-} zDc7$?7-_2RlB*}FWNS; z%B64y{4*u3pM~|0hu$ET_TR)h){UiDzPOOja|~A+ozI8>Gu%aF zEg509+_5staHUM8O8m9pFWcARkHtR;c+26x?M?9;OtA1ziw*w(hpsLy^j`^hd&XBf z9mJ$Gc8#K2Stgx1h7zqi!7B!tRg?(;J}=_$h(81TDX8kYcfzDo@UBf#Ju^VDv(-kY zs_F6GTmx>mmiOB9m$DfyQ&WF4_vov+-bILw+&HIO4UJg*6-txEQ=X~CY_<1npSyKy z-&F0?>B2&X)m<6WP{Y)_=6mzLkJqa|vs-;zwbXQ-PTm{cKK{;l?rkq^ zE+bi>y0@MtD=aM&D=Pv)3=eT!FNo%jOVMXENj1E-#v+f(HWc}Y!_y9=9=&_l^JDus z{@?yQ_+@Q(;m?P@CDFWp;M*9RP;U$Pm329%(yi_;mbS(86i z9w@+KDKD(4;c*{o5`*7gh3R7)EoMM#Xos&;Zf8o!tJ}m4082Ck?c%R~b zj`gT){2`#)-dt+3-uYtTjhnT-wwtD@Vdv`4a*dIqiHo1YQ*$6wJd9!tF?taX{tcq$utqlttGX`nUM=}>v>fMNWWD*pgN{A>8% z@yGUq@omQ_egJJ^H}+}&!@!zSBHg-`78 zW03iTFGKL};&+QYIr~WK9|^VHW5WJCfA~W5-9tz5cZ4I=FIPgch6}xCP||ftH9J7% zTISsk$cYSpY)5}FT+RnDEMLvC&L*Vc5sU2s|?iCgZ>;i0akuo1#iYBQE1 zjV98xl2U7$@7+n=wG`WZmV!{P8j2L;qfT>5TE|tkiv4weC)oC{jh+MX7sBh$4ET;) zdrl6fO5_J)AR z`t|<+1my6vehmGYw1>C9pHqWg@mGoU%S-9!wwbOh)@xl7)wWx&`a5}AB8N#C+{wMk zRdtF#$Uluyc$eWc@cZwG3>*t%8GywP;YC3)?n znmtQTmOzrUUVEuBNeWACAMWSudEpyx1%Aul13WhEbsyP28u)hdBZt9o6+4e-r9<*OF*D_5J~7y)^0jk3vfU-55s;EBarv^cByMY%_`m-E1!DM< z@fvM5-@tBu4onLhOTULE{{X={mYsAgV2x(H*EAhcC)F*y@3zRvGKhhbqM-#pJN4yB zqw}xeHrSMenN1=wo(5VTkigT?s(ca5tWSY`CX>OMDJ}$0vj+eXb zE%$Zn>U|rae0%W@udZCf2gDx{Xqu&@&8+E~wWh15Pc&CH)^kZa+udq5tvA}Fb1EX+ z$UNtnODF*do?qG~(&6-<4S2Iy1@yanjT+Zhj@wVtq+1KEM^e@erOY~NsryoD+O70} zupvIy>Ih#gBl#ZlN|#6w-FSL;ndCON3XYMhOtHq8h)*Ot-f<~uBup$}6qW#>uM6=` zqVwvP5=}GDe$vP;jHhR$iM4>OGldZ%yRb0ura z?b%;ca(!a5mpiK|x4Lgj`X6e1MEJSjne`}3>dUHPPqSXyT3g&UQZ++2lXN314q7;) z%D(2yj#qGBjQmBeBi)s@Vv)(V1o=^OUR>F z3S^sVxP}(En3iTy#&)r72aMqiHv7Jnd^~e)^czoaXN1qS^ZHeZS$IZ%)^At4mEkTU(p$Hpap! zF66%wTupK1$1^O_tFr`-^hTS2%Zx7s4B+4C^4)579vp@_#J7`LNv+Ejlif$Ntu?i~YZKb5M-YNEk91K)s>+uoQWYD^i~l`98t1g zUPzZoZunQpW{Y_FwyK!ehQS%~9YaU)w0d@*;mMxSbp0mMWwwqR#WxN1%b6#66)qwY zq$=B`c+r?;gEFEP3+%TOjVr{927?5;o|f|6zM*?9%=Z`elH5t=hKFp5vcvX^S3w$~ z39z!Vha~vN#fay$o-JnDTlo>^WNF~J@|_}#tgf<;F>xtb6$WEMtif9(g1i|nK2jppi;>Q=Vekd|wx zq&j=)(%d|k7coh8lKE~YalHhAowjXa=O3I`%4Nee>tS}jFa?3U3Crbcrd{(jiA851mQ*+Q-6J_GPA=81Rxqo~UVm||o| zqhmJ0a6$8M2JN7X55tQ0usP*y&mqLr%;yynO8 za5%;R!6$J)kag1}p&jj<1hZz3=KDB9Rnp^(>T}M`XnKqZ6q4!s#*udo{+oJ{+#^RJis}fQE2|;$@aoD)K5uNlGO*4wjt+C2 zVB;M*`ikl7x&lD%4oC!c03XEuwcf2L*{iE+jwYoSqp|yk`!4)*@mI!=4tVQc_<^az zuK3a~8cBbt-p6O8>0<5=5a{-z%VwXZS=-y&B2S@Sj71V5E(r|G%zni2exDbLJ`HL* zebAAiyYRlXq}>QG(yT{KyR&%V^JHzz8re3p5?MfV_p(17e_?+VjVH(cCGh0ZD2K%! z7nSXU%BnxKG#j{eD5M-5$TY*N@xl4Y?O(JW7)#s#00~{%*qb45XQ;Hd3vmS35l^Mf z0?R$L4+PM%+?L)8J4u9M3i1H>eBOj`_`0!+v|Hwlyw(2zGxThZzt%7`dA;d!^0n!v zznSPC2YwoOGfwdSnH*jkvbaq=#SAT|yxOu65=A|;Lmr_t!Ujm%AfWBp}~8i-D|pp(95Yq zqv~3t+{X;lyU5}Rv{W&IA}GA63_<+|zI;FoYP&XodlCpB3}d1F1$^A2$maREwZB_k z-1?d_grOG*DDvsI^1C}9lE1XH*ILKL4L`%;;i0y+v$ndCp^%yEt}L@WHxXGFLTVAb zI?|!Kl`W*2D?7-w1%mb|*4|P6jPXRygl11M zU06$o*gbdS{+E5Fd~wyhNqeBUeL~pjx^AU&a?0|+uEHxz1TP>+%uyo}s}^un?~zyz z65cZh+I1~1SytU%Idy$9=)odOWR~`}$t)5{YOfKsTQGzP2Keq7ib(3Y>ZaPHqXfP9 zSwA-J*WI!4xs2mHW-gqf`Qt5brQ)q?U!vbbL(UPzum?#aPdYevyQ+d1k|lV?RY^m* zt_~D|gH^PBdhQEL*Sphaywt2U?MBKAJvPpEg7V(d;&p~dE-zXLCG#VJ`Fn^|lDn7_ z&Et8d-q=HZrnR@(ZzS@fxt8AOTbSBbj(MSNiqnM40KhV{LdpqcbzI#aOuV|&C(?CU zt?q7h*>3X;aidt=%XvJp+gn=;r;TQa&2?)SXH>vLgi;6*8gPsnsSD0cSzlXs^b{54 z2(_%5vHI!odctcjg}xGs@@spmkL)-uUgpXfA%ku1>*R%^mRSqS9Cs>?{{SFzyOucA zgvbVpEU>LlTHRH=Fe(kV~Rj{j?{ZG-Y zq0u}mrs?ol#iqk!q}xFro{_?fWU<>Ue`ir``@E6@>_M)u`L$<-1>c>D2dg z`NlbR9)zzSX(&eO`fd1Va+a1_ZJX*Ee0q(hqkCa24|#5{6tmk!A}p5XSe2QRa<|Ii zR5v5iuU$mio~tIPH0x%(Xf)eDwAotPS+hl^>DJnPzT0a!QZ#dEZiy?TYWEKEOFPRn zl1SXvn$SlSxAyl7c|M_cJo8>3DJQ$Nit_T?N`#0Zk9U`)rK-kSJhBkmqzoAET0nIx zZB8ThxNMG_ex_S_S{sEeWqP4jRfxLnX=7r@g_B`r`IJ{gpyOBB#(w0TuKc&rF8g^O z6%S_&L}^oet}e;%qPuOK3^7A1Tf7N8enip9J4qYI1-vV@o#&B;3ItZj88{dxBNg>_ zxA4+=JZYh6S|xyz4Q|ff%E^&L7M4wAWegLv&9e~09lS{+AO(sNBUWq*`2PSvEq$hV zLr1qWYRjnJ_-9VkBe(lS?D~bhHh$;&w^Ci*~FF)y}1ki4;ccV**`h&~^dc`tlX zsN6w)eS4_uwzp;*y*XjIistW877$#=C-!>B2#_a`VF;1rF5D>F6^Fym5lUEDt5S-z2d3 zb5zqTpo%EA{{W>&_FW-lkiJAE<7nJ4A-{VeVQr&7KsGrXoDAhb2hcPX_$B)Y#XpKZ zHOH>B5nMwd@kYIQesdhqT;A#raTH9$i-mb^hy$P~SO8YPdNnrkG3hRMf)gt!&mWpYd4pA zK9#2Hnv8PX2=1r3zh5<0Tf2xXXWS>4B$fSGwcapDmeV24_JEnIi>A1TI_T z8xKr$>(adZvoptKQ>$AARZ^8`xJlVN#q_iP0EalS8FovVW>Sr4&ZZ?bCmmE9jkVQT z>15UI-$s1D@vp(QUIg&=h2XspPr0@5{8}Zzww_kRmzuQAGm5MuS1S-YW3XKHa;7-vaztV)8U<6 z{>P_4me8nqLcZv2;|u2DF@ifDNv`}C6Jl@}Y*iT0jv~G;{L`9JcX#)_<-MMkcH2z} zslt$}nmlZ=l7=2FHA**JwzZ(0?4qr*T5WTj@Xm{C;U5V{q1%0~>N|C^v1_ZV>F+LX z7j%~rNpW{@?DM>aPJZwi!m6kOzdF7s{7UinhWuM?s_Ah-eSdGMO{ZFEx{ausC5GqE zg2;IT%QHI5BQlck5=?3wjlsVE0P%N-mqPHKseXhr#Wam*K7MD02ol~B0R{g6d@;3H z5)-c#`GfIG;_ryG-CD-}O)JCK@IJAp-rYrerAG40CY^B%@mf!MvnxHWY{@8$Jj7-W zU053OGHNr#<`-CHiRQbKn@Trs_Ij;9MWDE+6-tz{{5r(T4=6rsMK-Lglk2a^{LPJF zej-WY3ypWiDX&GSUgmsuAlwu& z`AfxKJ=d(Y>(DOkHi0yE@Y`vz!0yI$AKBWW@|4}_;^Ni`V@Ap_bp&OcAEdSK8~CqZ zz0~#Z5=nQdLnYC)((E-0X>6{n7T(6%7t^4#wSA3c8zZ7B<6yNCZFXmcenZy$NH2Ut zs$Sk{dUTepa`4Xsv)mbDF1}n=?>fd}2v9EZ5Fwm9qa2g>nI0Zh^E_2b_)1k{Mk#xi zwcFP!O9)p>N(?&o0cmsg;-@EZbDq=wKfZbZ^zam{r)c_itgiR^ zZizj`g`75*a=byrtpK}}`K6pICgL2GuY&w3<9`xpH})yvRyusTcBdugmKMg&?)E#2 ziIhgn^4q)1aj_sw;BoRU(AYnJd|>egy?OA1;k~zu+9dI2uXAgt>q6hl@>(eL>-&gj zksw7_?luiLy2duFjLM)W8P|&4M_(+%tUW4p>eW)xN>x`bwzigo>#pa~8)zMU%u7jnrULd0a3NR{_(3RIkK z!h@fvq?|RU+w8KIw|Kz)_(Gf1!qKxTgDgx+ut1RpY?e^1@^{0lxGelr1=Y>i zw1HOSJFsR+kuBtLYQQ)rdnm_J%^H9UGK2cPW8hr@{1v2t&mO66Q&DMyz(luq7Vu^p zjqo}ckYva5nq8%fzOOt`%oj_$nrmx&DJ~@!u*M^mrYfpLuC7an_7=wv@Tb8y z9y{0V)@Uy+^!+Xwrkdi`+wB)p2x2y=8aaiG;iZchRgu7ugo*I`e@K7fP(!PHJGjyO zMK#WeX{c(tZl`=~+9~d}9X{3xid$cYgvSZQuIj3!p^Q5gU;^3rS>RnR+eEU{ERs7p zmL|8;ni$+97dI()G}@Gngc3-%GY4J70xn{qW37MMQ1fS?X_$J5f4Pki_{7Uien|FEO zcrT;9)019yp6|!{=ANl;nvAI;g5DK@tvflc2clk5Gyi4I94tU$c`nQ6-N1|yu{{V$G-7-xV zT++2GIHu9{Z7N9PNi@0b9SX;Iv35xE)c(;G!mOA2zr&l$*$&?g__ct=_JJnvF4p;m9UX1&JiC^LTd(Ui*rEF+x~j{y zM5RI4Q~)y=Z~1#Ef&u3zbDS05hpp*)PP3%n_;Xg%Y&D%LShJr_)b!0()+_rBLr%R( zAic2GEbbAO;bcZ|Rn+-}^T2Js^NNybr8vzsB+_b8YR)Y^HruMvr*v^ur5dSSxXupo zlF`OV-8B54M|Aq5`8@b@`%1^+e+|WUZ5K}0ETxVeQ%#U4hQ{flN#MASIT*`6mo~ys z1ZRm>Z!olRG>!B=mG-|ASjXe93q6I`#2r4?YfJqzPPmL&c#6$IU+n4DOWl_j>t@>{ zG87Y|m~f2HQ{`yWt#)IJyS5A4N%;XOaa9utdDlj1}=HoM{( zJT)GUbe{}gYV8{fy+2a2@ZG`JuNg0GmhM||aGqoaC?!EPyp8If4Tr$+S;=qlCr^^b z8=G10W6(5<^wcETqfD=3Wv|_Md3@_VLgw5SYY?E#8?v~QZrbU*Q>R1XtEbccBiQ(t zQ?;_tZR64P3+sQiX?kUXc}R3^8vgV#(&n9aN+XNp1?6(e$Ar=JPYrnA!#a0{^cC>+ zp0(kfLR+0Oo_87a`i zN|kuWnl$GwZf9if^wICjAJWIK8hDAyQTocAJufK5B(=AzdtKd}zlnYzd`S4Qpq!(&plD-GH(mpRf zud4WV()+_U%Oq2_xSEEks_R;Ym#j-94|;6eU9H}iEO#-O!Hdar7%3l=lDt*=2d#WY z_?4!7BG!HlXdWBzGHbWG%GyQae;D{%Oz{_qybYi%GB&58XgY4MrO1=t3&R^&Pj@3G zoF<${6OXc+e+2L!!Mz{D)^De2cH+-debZ_hyvUPkT7}pkO?RnXtUIn*hyVaqG~N*v zR0SB~YhmcdomyCrtm11gel;m+N%e~6(@m9^$j#v~Rh+5HoT<`-(Z+uo@20Bzwdyy) z-XBW~m%VtF>tDZy-}_5Zjv&)s+(8AssgmO1nWQ*alt<<kF(omb+g#fyQX_-4*)4+a+08v9(-@8IyJsWLQrRM0lBb$exr zv_$h5+D&P1<+5BcEvOb%Pb!ukrY3T5e9~LDdu#cAM@39cJieSLzv55fid(L??dniT*i`q_BdIXJdL&}*eH@{_XV%5 z{{UwH0NM6Gj;*e1zwnS*X}T7X;G5qT+FPVn*M2Y8{>P`fTUh8Y-{>t+D-%o-l zf3w-8G0egjR@CMBtsE4udiZgscH1jHFL&MAUE8q|Ni#_l&-R1m$hR^`zLe-;ux}4itNPSp-?XKETl=ej~A811h- z*rJu75x11(KzCpm_kXj}{3z7^EckOx_^Kw0!c$x{4r7sQZIbq4(P_t3bp@A4S#jrW zXvmD2Jk5wf;gX|_#Z!$6alyu`jBMojQ`t$%&964}zg4m8M+Z6(bFER=C;Ud7V_#c-d@I#MDqC&#PYW1 z5hO^&A}ai+;@cmGe-O3Zcfl8WR;#0Ur%xKihNt2?%R4Aef&GiB&!SCXsp=M*!+A|6 zrKQ}g5fWu+?Y`8ptW6Y>df)9SqDQ9w*1j_F2f&YssdFZ$f2#Or;?0+Zboq3jhil<| z8uLkmLhz;Dt*2gp#LrqfZHx(bZ)a}t$2E(%g6`=Kaz!g4Y_#RKnlm_-X9Zw*qGX;#G5J=r4}r9Q8eM5VDfoGz_-n>r4mCTS zYvKN{@cQcJ^Wo=?G;3HI+d^LsYwu+N)1Zo5m?pcmxq=(Doe8>*3H|jXnKclghwd(+hB>WtxuTXES#LEojo=^J5G&>I45xx`@Bn+ z!l_xn1ThHSJ>dTU4qtpM@n46$SFV^O)23UiUpC(8EGYV}pQu~f#VpcYT}7w0(;|yZ z6Gb%l2_(w7NR{L$Cze3YN)Q0SEO^EVBkj0$6tOr5PZ^g+m0EgKa-|rg)%I4`OKPvz zQ^Cb!u~Ef)cw(hdt-a@ces6aAmdI zAT4nuvKA~I!#4fM0*}#O_$LR!e;@wPUl5z&CbO?<79Jb%#mmjF>blOe_GQzoEGLIt z)b#5MJNTGtn%=DqxOihC6CkvWDL0CBPY?K#-}@_F@b8Q~ zGXm*)XWI1ZIW8lDeRk4!CRt{>Xd|@=ExpA0e0M45Obk-^Tt|z_BPW;Puu95NbtIyr z%%d%nvU>EhKC_43GE(~1GZybrNkS5Br_C0%*4sTUe9QYu{2#sef8);(_yFC+m!28D zpH8}Tm`Q!7>9>)|acLf>rrKUyoikT95k&G>&m&J9%+R|Kes7#%_(9^25L(&U&7wsP zpQm0!7N@F7YAmd^1-0`ekIX9@NOdW8Tq7t?-Im_yio{pyf5e}LzA*94rfjSiM~73J z#C|97E#v_@$(L z6|?bYi8NmlU+HVDYj&Ee$7Ow~MWoxyBx$AE_>)nvvr9zPpU$>uYT+kj(HU!pAHMa;WI*=h~NvG>9Y9 z4uPat>G#%gBi-uzFDKL=Qi|ajZsDHd`cVTD9{9{l7+*cUMrA_3Li|h8yhY-3rg(Yo zM7Fv%`L6ZGOK6mdCcH_JETWe!F^(w8lDnAR7Lk!Q1M`l%;TzpQRn={D+iRKZG_Yp6 zm6SYoa2Z}W&D5&+M<~0B6t2>8vQg48=9Sgk*3oYJ zXzYBIYO}-2aiL9ePS=+zZ|}FuZH~*v-xt0md|tQk<)4oHRjKQieipQAO*Y=*Rb-Kv zBx365ZVfHrfg+8iA(^7LLdAKv@O}nM7o%OTn>UudXOcTf9o?(h~Xv#@S zaZYYAO*iiIM_XMbecC^N^nZx{3;3ntOW%h#TJ*X{jjjADbp3b3+QP*yseN+glGw+q zzJn5LuN9-kE^MVpRW4DLt`($`FAIN#ej@m5FN|;Z+W5y_yVHi1;kd5tBhjPqEU168gCJ4+SZ)@ z2=Q)#ef^1Pr{3P!Tw7|FamRCUGimdfV7a-I%7=WG^TiQVEYWYf*;u(`~KA#if_Qd}qI~@PCLrIq?ThhAU-@#-1OOQ_?&&eW*_aNv)=xcdEjZ>oyjbvEEz#uEcpa zOK4?;lwlHmcl$(WI^n(@d7A@^-8I3xOt@D7C^g}e>m?+ZfB zEFK>4u7jZ?vh8V;O46+?1hT2<@8mII&n#>CuKk!IA zA0|jO{{Rf=n#3)grME?>*vPDMs!m7ngWA6_z99a?pRxCk^;`WzQ}`d?s~fp5t}kJ_ z@T7O15Sl54#F9YC2ZisgVPK_>5=dPJakCs(>ei)pEi}DG=#TjKvb&fOfPZ%kg;W#Y zAXmvUO%$sBWDdcaA%=)dPU0UWW8IQQcN+~z?Nm|-Ytx){2PVG^J`;RU z@n?xOj}!Q0c&_JD(|kF5HJ+WS>iSF?t;VfwadmZRq^N5e~TU@OR=ZTqkKK_zM}-Rs>9i- zVp?39YL`8v)|;sBz0P`=zo}vZZHt)_b+?`7ifEl7!WZ)5Rao{DxRM)w zM>bKF;pGZct5dwH$vL~*P2!VJOIq&dhmYb6RIAESY0-+5V|8_BZEX7Mx&0~p2mQFd z0Q^$;N8&FAc9OiIsT&msO4QX< zg_1!Lc-PET4KMd1>Yfbn4WwFjn{{_@;g1gK_Ex%Pmm6H%$#11tLu(ziid;yoI|!fw z1Ge@66VDa?eSZua#M;O02k^UB)~&BJy>C$Q?t|jX8zZJIx=U+5xo51lp{7}COsOT4 zJ*1@sM{6t%8j;q&zyAOVd_vPaW8i%w#F}*S$z`lshIwu@`<*G|yR~MwzE!on8{>^{ zA-GY7bUOygBwR7_YT;vq#a4oRtx|+ko4b6w-SyXhGwX8PTgGAiqg>NYuaY4mfkVcn@g~c*2Zh=n6E{vT{XSL7JJ*w^23ZEU|9%K zdY|RX{t6NC8qdam8$30n$8CFQEr-K|Bvw)i>=QHi_b09@|XSlG@|!SEBPyS;Dcmx>Ygxu;hO2{I_sQy=v z0BtXfj(*ubo8a#bOQXasudSxobZs9;(3%@tr;tZ(4ejOA1O#o6xN;cCN0TQ;H8B;c zyTXJVoBs9EOXk^Gy(-o4{=%G+b(%?etG9nEBjBx0-s(xNwL6Jc-p<}B2li#mP95Yh zOZI71+#o0(pyQT&o`KC zCHrgK?STiEX^pm%%e47S9N|e_${ghYQM=Z{Rg-FNPMg}w>8SORYkQxbRfA2n9>0^< z@@F05S*~oYtQ{m_ro@Kg-EHR)NF!T_jBr~j1Lr_2o#Im8FP2h9V9m7r=i)+F4p2m zeB8Wmh}`Bd$XNl;3tl;?cy{XNU$N0N>ltQ-mCf^|G3frBW`UQK=;*%=YEGyKhC>_v-o$!gUhmi*kDX0Os*DH2pFKHFSq|pm#*qCJdTrZHt7zn}GRl^?_oG{%vd29NKJk1@1UqE=SBJHGXziLPWtK*kd%IZH7YdR-?aQ~x&t}G6k?`kJ zxA67RzSAx(^}D2+))^dqx(LKxY^}Miclj?QNK~T+42ggPJ#^wTtQHayUs#1{PH~G- zlv~y6@67C%Tb&ZaSBjZx>QK+wwB(9U^vOeed_?agUGqLOJB0jY)#zJ7BSnR`Hd88M*gGsT}Zgr78tWjHC zM;N`gw4OE^f;(;rG*VpL2Ol#M1DOhex5qvxN#j!$l-D{{nl<=2xPo7{-9am_lP#m| zK^(8;OzX4>RC$2zVo6W1d{^-EL%*=QxAUGE?Aq=0`^0jRLk;b`GX0_tBrn;ab}b*u zz!M1!FvM5PUkZE$tZSFPEw%Ahqv8>w=^Cv1ZkKI5`h+@WrFj(cUP>ovNH8pMeTq?r zjDvCuZvcVAl+~exr7V3(Lz@L_#!5}i$?~NZnzLK$e)h2I(3~R~O{EvTwcnxOTA#yz zh;61=$l6WA+FU$WP_4DCv?WVK&RXQGqId&r1w*Jp&&CeXMSE|H^<839spvN{O%1iV z9#yogWSH1PATflN7}3fIp;ludE_X1O0Z3xLrk-(_*QXkhjR>h~uBEegUu(11%*Gs$ zR!+;(=g&6u!&Yl_9Lq~L_r}A z4&QLsG>cnxUk@0gwz1G{8hth^SzTvaIofNPrW5TF?{REQfn{}+Tq1==Y#%4_Ew#Uh zyhVHBE4xs)7gC2v9%s2o6e=W0W|4PJ%Mv1ja5%!Mi~)Lmb6L5yg3?>*+TPj~w}LDn zD-28?Fw77%g-V^Ji7Ge*4l9=%hQ{KkWw4$t%B?HPvYU2tcG)c~lC`#a9-Jd6wIwGO zwYt6T{S7aNKMOoT@q%01Zx87gT7c8-rkhm0w~gA%MX`-8Jj?w?^|H2hXppmRmP7ua z02zR&wEZ=7n;RP>kj>@Wz*+Ou$i8c1jt|V-A5U&!@W#2VcxA6Yu(gd-LO1r(THgNv zW9k>0SiZBkR$1-u1&qn|t63685+mgwdu{|Vs|j!$X>vwK2aMnVPfj}S#(it27h4%p ze2v9nQjaQ1*LKzHtaZ82_EC&sDOPuGP4u;z{dF_}2LSZoVDZp(IH}WWkCcE(Iqm^D z{J76ta(Y!2kpblO$j(P$fPK1tIQOdv;nWo;0AsNOAbg;H8SXjhj8`&N)vLbeD@rkT z*_sMLKo4F9;f#)iV?7RVJM|RpyPt9Sy@}wSct4jF3LbDcBoWYpIUPXljDB4z!sDsO zRbV+F_27_tZ5=(j(C=;Dge044*7NivNWz|(IqE)c!;GHe2mJKbhAYv z)4gV^V~neI4bC_`{Z9km)4p{r*pbfwV2-(OW6!T&q3u^rrJnb{_3A}PCbai@Y-(FE z00V)8o;wcWx_buQfym$x2_v4_!On1TT-~=(kUHl$1JrgLai7fBOJbl9+yV~-amNSP zgU2=K)18`q9gZ2%cC+}pcDI@LSL~bcQ{xYc@9(}dcoV`}j=SKWgqpUB{{RtnEk5Ga zZgiawUXJ$LQoD-D=Ua_V7&M6Q=D8NhD?thgWKf4S`#tb-^6+XJ<&FHd@FZ z$#AP|RW5D(>!}M$e9MVnj*_YzI{;jF% zwp!d8w3oga)@QVnT)xxpbnAV4MAUEf6K6ay%CQx@i%xjN@fcUiF{!}ZMSR|MN_FC~ zQCEx?E7>*gJ9(dJlBi)}MiF;)7c=d4tp5NT9;xD=haVC&{{R?xgT?;<3%pd;z9ySc zlU2Cz?y)Vsj5ms!ZIy~8ma_%9lGF$^+XPso8(YpH?$Jr%h%ea%B?2HR{4rgSC?3J@}LiQcuWPE=2 z`y1Zt^?tpc&*!60ilI$@4Pqar5F(N+TBX58`Z26==ZoY4h*S4#>=XYwHYev@ z@@m;1J~fA9%R9j#&S8G_$BcUn#MCi@MGTCN1uTUzaXx<}RddKQ`t&HCv~$@Z^p@Gv23Bw zWXfs-zyFXMf}a|to^DEa81N~r66gHpYQKGO{c7;2Y&oYEzSfVm&)f=4E%*ZX`A5wxF5L%J z@q8e(>9y1I(o=S}0|kem#Z;S%JdQY2H9C!v{OlWmMJW_kSn%nOnqJi-dOC)JvRd@h zfVPI0ZivPGT@xk8pY_5Q>xBQP@TXl|x<`)WVDnDWoh~8WQ!9ngpu*jnN>h7fD|Cjm z1;g(>O`8t^Pcvr>^iDg~u`BzxSLH6Kg)~gpMr#j@j?Mo`1!|>`w2J-R-6WL&qE(T? zZwc&5f^=EY20vaUNNG)rHD9jkth)*5o3Q^%yznK*5|0Rs-Fvnxy#S}B^^S@!&y64i zCkD1KIz_Ok*V^=YTg$TWVVpzE;_ExQ>Je+Jop@Xi{siaZSH(@)`rsXCPRxgSZ>7`V zspo2+nmY`!3*c&>`oj;UaYhd4`1CaSKdAeE@a#!wRo&SWwYtn|$8^=USrNrmp{H93uz9Q(k!Ytb|c*d2cDIg>^!Wg zgTbd4mP~zrO+jI$2^@}tuqu(7X!Vb72scja6;J#d7k}VfFxcqZ3NT*% zxkVYlAa|P`xsu89;(KB-wPD^%4+~XSAm}#nR@vIZp9|U5u#b|iaeA4(_LO84k^c0G zMd08_3pPtqZ7pFn%snSDP3%YD%QNAF&GN0OFXg$A;E5o}+2_BJVP4^$)AC$!{72{N zx?rz!J^sW;j_P|5zuM(<}LOXeD&*n&VXaS7GK3HG-o1m^@Trg4vRk$qf6Use9YM&MhK zG2x8Q_$8+)svARVH#k{0?5jA9lvY}6I@^Q8t}2$+;TBacCB^~f_P8*KliB{Ucu9p3 zP=6RSau!b*%nnQnj@9#7b#hmEY)E_NWcb3c>sH6j%MuOd+6xV0Q7F=y%H2@56`qL-0WUfn+e`` zW+kI+iX^zNyG*w|aVh5*&<@z$di{EUOe`T+S5b24sFAac5*!}q)N+Qmbp;v?zkk~w zyvKm0P|}JI15q3% z{=wx-!_bGhqbi@9Qbm#T(l4@IEz}bx@S<`rZk?~Jg>G4UnSj46I?X51O6{S~y^ON= zP&|(%8$%wvy;uGH@!7Q}F381u7k;0;JFj2J_^-*Zz{d<*NlmqP5ztbypHb@mT8~=x zdqoBlORkZML@10-U}D*VrPbiWlN?WngT#!ocTcx|Kkf;bMhel{v#d9iFT#LM<>>uz z{V@Cc8hDlxP>OiqgCAwqkDBM5XU`q^+}2hSn6^J`=bpx2$a)szy-xu#>0Y@vdXZeO zS4JdfHzs>t^QuvQct@`V*-N^Xc0*eeUfp}eGNbU()A^PY-g!H8Z}juO;#MT*`eb&X z{{o;TrglCvfcB;8ng&WNfV?RzjOFS0pYv2eE^YeL193!q%Zi5CB_VR-g zFPCs0a_!}JIthgRSBzZEadcUY1|NjKnPBK$QR^e;9=-sn^h%D)i*AyfzS@= zX%<&3d&X>@VjNIrwWR;risBJ#&vWuSTqOS_@MG(?jpY!!$NpwY3pk*o7IHt-zFQ`t z;u~P3Y>|&{Jlr<;1m`FPx?0{aGsnNsXlV8Mx|o%^+SXIQOl#aRcgMKWxt>B7l8QLa zJD?u>#Nn7LCcOKQm6C#=cMT8j;06YGVjrT zjV0pM29jfy+rXEvs(;>3!034dO#p4s{WfjSP5ua7#J^tIkhR$&OJ1%Iu25NU(F5_x@t)cimy zbAV&Ba|edGFkz|*TUYX_te0TsE|P}NI8#5OQg|9H5wm+U@_G2Z1P{_idVqR-ZQ!3{ zUgOmhT)ft>%WG2S_q>mnWvjLn5T}gro2Vy&|5341!llPyngHO>I?2Ft*fbZ%dULw) zy#e8%PEXxs-vD7_eJ$%vfuJ*K!Dm%TB}O3M`>6$a2ugWf`&aWWXRSVx`CftEo;bE7 zw6x#=y7wonDDn6#>Z`O5bX`sy9K2hpL<20^Mb$g>*W5XvfFhdBjSFqAC0yjK-XW_NV?@WIvaD);H5rf%Ta8r zMG2kW3nod`=MOJb19;e98$cmZZj~%WyRUabBMyg}`XAe^*FuGzK3i9WT#GYK+j@5* zNV&k1F4#%fZYQx{bN!cY-H{x`(YOBKVlrjXNn<|P*2p3jdrNSk(7061#h!${F48dO z2a09#0Xx(8Ny(#sX9kS3#n0#@7w-NU&qA4L$H72flkx4@;?U(SoWU2R>ikuI)}5ye zjyBb|9k+Pvy>G=# zOG0`MGyk)EOmlzxt;M-6KDo=LD~52PC4!lApPFP5-M;Xo zLIKl`QLf1z#Clq+KvE3*mG}dEQW|DhTu3+?afn_3Xe2hs>vir?q}ypvNOo__;6*)Z z7$ok~PLo|LGP8PXN@}ERuV4`(%-kiX#K+9}eDkJ1=FJPe$QC2)w zl(W}~2Yy>=Sm_Bn;2_soMG>3~_Sito#J1P{xu^ui()dnfJ@zqB51}lNn5TBPamOoY zyI)OoqP2Ta^HHn5og`<1ZzVF+9C1I*V(Jrow1VISCZz8wNHN`V^=v~-H262%o>%R=sAUW(I}0fD9i9c2{TymHxGh2xicv_sw4hL(!|lig=e8H2 z*tsk5ZTn8|x#Ry|x&n_RbK+*4aC^?$6#8~4_XCVgsz0rc?x}jNKDc1;GKTDbt_oNF z7Jc3i63^xQYqC?8_bt~B<%`r3i8J{~fFCG=LF?;94&dwRx{Yc|-{!8{4a?jluAPK* zQqZO{k*XIujl>QFK?Q|23a9ym@2UicN*9!FG5-+2zBg`2`far9e&~j_5EtTE4y@i} z4@)z+EWL0fj4_by%_(}sw7g4zKUn{s*Oyy_1&fy59QmOPc^oq! zZ1=%P$c)3rG16XTV5)znm|jFoBrXYU_vOIeio%7Pf?(?gJgks*6;JOc^_5xmgQjwD zfJeY=yKMQ$Z6|!tlm!d9fMoAHt1z`%beEiZ)H}OOpZgz`-kidSxW7!IbX*BMeTy_) zE)st=A9y5`G-e<7h)e0{uA6v>Ow95%p#owPZ<|e;VP%zS5rK7$-rI>^-UQ>m$|M z%DJ#VX?AgN4%Sq|Wdq^oW0I45hBy>!xZ_kfZKVNM7+ua2k;c~Am>a?_9D;f z>ACXltJI&5+@eQuJ@unDbrUc)mXrBmQw_|S=urfe7WF|!t*>n7gCO-g)@3H?Zlp%I z*WaXU+-<46P{-ZeM(FZFkuyF#fK-=P*5yw)(~x)#&D$Ldsc`_$DO&?|8nQy9e>Y)e zWYH<5u$RK&D{T>FUo_R%g1ZkmaD9X#x-9?Vq9Kf>2+8e}H{wjB* z*N>0)m5uDn7mh*p>z>J!iE;uz8nGxJu1(@;ReoP&nrAcpcNp9;=vML{m3!C8&nf#{ z)B5J-e1M+cW27z;*!Vs5 z)uq;9yT ztS{x{eC%yLyy!ZVxz%3ugzQ3);U?$x*mW>Ay*Kt!Ja>|t8&E62pgXvU+3~Qg&PH^I zqH?=F_Wq)iY@$kO>Z*H73pN>;F|9{PyH2)WbAH#seW8y$3mky}l|mc0pe)Zss^Y>( zp=`R~l2nL0v$UX$xEaRr<*VU;3#&5kI=!bZOn&7xE6hjIZ{usU1c@E#U%<=^VWusu zn9eDfgF*l$r4&-~d|oMA%><4LzPYe$L~Ru^+X(#Y&Z+kt3ZAVMEjBinOCqm}c%UX9 zLqh(BiUfHkp`PBawiOf-&I&LeTW<=2He1-6PZW1zU)0G@}04zi@aCezxr!yV6VPedE35ac5Xs z-uCJ9NgI4;J!3!PHTcu6t4HG{vodXpq`V%G0Hr`#79z+n0c3hm@rBHjyQOWjZR}sn zB7%yDNjq3%{YR)T#f}937msz^H#V$d9QWYl1$iai`d%#Yf|prC?H=YRhM@!xBM)?BFM9&~9l3ZW-`{|-wenJ^fi z8pc1li-RamXV1w$Ueh1 zWtlz}2Q!kat>Ze?>vX+twE1%^3@qSIAw~P9T_anpt@JySjjm|mcc;ENQ`KE~viIaD z$}o(Il2E-+^V#LFcF%r5)H@lNK%jP<XIU)qqKAR-)cOm-L?<w}*_-7BE11V)P_Nd&0VN!_952i z8>1!Qr88{U-1X6oUA2QocL+^9c&FgCf{$3(CEl0zSRQE1x+|Q4!g4lViQmO ze6uAOyE!CzRwbP*YRsiiEtWcc|Dy`|H6Bj$l{k~s^NIUsDd{ev2Jd|(+<;E}M;L{d zqGMqN*4z8c5<-Gw5Wkz%144Qy@8}(v^u!Y3QLB+vur-|X?L~8i>hvlDfB$OAGmr$l zl$CVLg5X~dM0jB*KI@RAaQ%8Xz;k9+9H-7zdBPrgM;*#gCspH(&+n*Pj$-A_&70bW_}LX@xOW1VR;1>mNSY{+-9Av&69tRGbAvH5XjH6 zG|QI8Lp!k}#~IQ4A9EJG!vkso&-a@iP&~=Kzt<)H6<###DmbZ5y{j-U$Vb$2%V4^{M@%W+3^h0j)CM7xqJn{k-MY1e-(! zCyIEyv#*1Gl9DQZ)rB5;+EpkwQTO+}T@V;%L+q6`6nbyg@yNFeQ4Z=vjEeFryL{YkD2Be+m??iijA+(P2ZQt~I3Iq42sa2@QEZI;#F%LMQL zt`-#6iIEHML{Sp{{@3O#Imni`s>x`iXK11aI~jax&J>)JQzCKRB!_qT-(rVNbxYFq z4&)8d5mMG=6O+aTHnB1{rLJZcSDt4F-alE)J=?d?Yqt54?+)n;JH6iLIt7vewC zZc7vM{r0_@Ti3x@WZ8tK%lg)gDrzQ%%uQI~0pYiD^-3F`JC@CsRqT+wLnB7&8yavX zQpR*i=VlAPgRqo<*F`HPqxpnnap+l8e^le&Wp?!3v8IJ}guOkcHQw2xVyO>B(}IKd zj&~_M?1Z+wlc#ljb9bWhf3^7$MT{h$Vk4KMq0y^dfm*Oq$DVpqc)5glt?|s()QNvl z1Zobt=lgyXFP3^dEHc&6F_ z$2T(vHb_M=fhml=YB%HF61W+R_t2%l0>Hm+_`pvpq!&u^^CaP#*7(;p5v6)@E-SHc zO`!p`{X*<)(<#bLx)=ubhwGKKDW?Q`%H~c?u6{b&o0k@0h+leb!%lO(qvSraZGbir z$;d#jBp75_Z6zjJSdTy~W`UagfQ>#{Q2JY9w8#0n^>8nUnpG>%u`JAcc7LHX^5|-; zlUWh!*BfwgliX8+CnG6G=|nAykBJ=jQw{OA>5(4`(fK`?-(+SqH!tIK)aIjp`p`nf zb&J3WEqZY7(sG5QGQ@i$DCFoY*fHp{9ezu&ih|CQ?Mg7G78G0 z-}0@@^3z_;N3syp-UTkPKPQ=2kggvXnm{~AvW-(d(lEI1gE-)$2XUmeY^wwpH%#_O zv!K!uy8tthv(U`C0ARV9D&1iB<&S8Kr(ejh3BclI9=7;|Oh3j5kgM7)|iKdkt6|rPlF< zKL|;>ND=-Y!#Cb!+8f>Byd+$Aqyq6OlfWRoaV9DA$x#4ODRkX1ZOBP421|D%f$n;$ zwcelYk6yu|cxJ2Ne)NStmmFLqx+vyqB=!J%Kx=*M^x^9&uvI|Npj)`WsezE!*zO(&Mc3|}6{Q%NH3z8rq9&#j}{rJYs8tdL@Fs-;X$`Bgw^)M-pA zT=7h4uvgDVQD#>1e~`!~(8EdXRZisr(@BBpdC$uW<3rh>6GMPsV!^jkD#>9d!ZVov zsCeLXI;63LNGW)cAu$v5C$!DJlTCwJDywlj_;Bk3$dSL%YqB!Y;yAt8%Z>e(S9Z$R zvnGF4eOp&T?vrGbcqM=+myq=5udknW06(W;5mHXUgb0;R2FM? zOUl$tAR=*GL$9sxk@FZ$JUYU}q%n$No2|?jU9BpW5LP84mbyVJhQ%5AmSpZuj1-tZ(>Ueb}@e%|`0Sb&OG3}g=~q?-yv-39Ks4tsZ5?m708$G_vh)N=coBOg=)~=2&V^*ena< z41&gPl#EF`R)iRMw3bClVOHGM{pZ<~=^lj{OWR~NWWlU=!U7H6kWI`mMOGP)USe8O z1QD~!atYGHRxF7(4WEHBQQ zGOrYS^NL8;Jg2|#o5t`nntcX$&_wY7$mYRQ8p>76P9Qu8eNegR{m$u$A_kLnf;==H zH-HEyNRI1Ea}vM|5xOc#G3$Siw&@Z@agX2j)6)2VaWm~2351HO{nJ5993=7nP~%IhgtQ`)+&o1(5H4=Pia#Xo zB6#dWF)4%XX``vPT2u1E%dOZcUo!rifBFY{0Qz~smGj^Z?!skwaeaF(a~KQT!M&#G zmy)1EB}8vVNOHepWC$IT(UsnRR4!2o%ANIMdo(1VL3Z~&IBEd8`cV=FM^P(LTtbTL zSMTba2THsFd@Yqa?#%(8)g^S!tp#q4)MZ4@!o#laAb#zfvGFrsNRiADSqzHH*)>~u z^n+6O!?~f(rux?**WQa*m`2l{{X6TY+u_KC4~-T$D$J>60a6b5kf&J8e#9&djkp7V zZz$JTd~$tm8G!2)YupavM|XBbvBKXGY%3Bkv0&{e?nPWpgrSg?UnCrTE$Q zN^uj#jX$;fzn$(*iZc0mguJ`w7_Z$~_~5d=)59#dCv^6JdBqFAd7@M$T2M-UuhS6+ z#ys2;RtiEdwW!3moxXbBfd6)8>E|I@#S;I7hb8 zfxT0a-2}()velqPr{Y(WOv9&x!uFXT*BwXM+a@Bsrf2nW_A&$X9a+G1EbeiwoGic+suDdzG-BU=TX-?nBnIqu@jM^U^PnM6-9zntsS=?F2jp% zjmaH|4;+!6959~^Ok=)jrwqtv%yfTO|NUAd;NpKBl<%ZAw>KMGu1vIyBL-&(GXaZ4 zn*i_o)C%i+EU(b+i2(^#K3R~w1 zrQ4(CYGQtI4ETRbDEqmAYNUH}ZsB>B$OuZ(#s+ch7v@}66Db-=86pvlWl}oP*j{Z0 zFrOk3MDdTU#%4XWCK>ed>JOGpdQ3@`->c1z+sys*w8mR1VzVNfeo{e4Rby;P;^sf# z$v$On2DuvMZ!Fry5e|~BxSB}MS6DApW!?!+v^j|-9;?GK44wcI6!~FT?ENwU=p|sr zy~n^~#R|s@T)EiZ(XL{gpTuu=M>RNin?%@c|JZrI%9c~>BrNyTZ__)sDF#+u0`U{+ zdXW?o@t8{f#Y6RYo~v7whZm}0>t1m+dUc)XFb{>TStPgKqE5eEsumpECQ>s})f`b0 zZt}$&5E3p+{qd)NQ|q*ZejFdnyA`veXKVyo9MNko3ofs9Y}ZjS<>NJb7M*OJfm_D! zpY9ct2T39tj@mui?98}gN8BTj;NpQm5G9E&w791e}GFv@;c$*T6R=p8kaq4fl_R4N-BRJte=9oLo z!KbevcHz0VE6ecW&`H&!R8M3Gn;cIm(70Gf|60VGxuJEmr#QJ2q9d-jZDXGsx&0ap z^q|0Lf;Ey!Q>mgw4cYR)%kk#h7het{+s#JQdzF$RDtE4gnlSIb@o`>_wUJn=tMuG! zyoliOB8p^dDUr}3to&wunSLxz-K5t~`29&)t4 z*6X*VS#qrS|9)&dlv6q`DL`{g|(ZloGmK6r`#%e9T3v<5T|AqAw-M?^KD`NEq=z>%_Coj~H z4cm+^>Q8RNeKuo6^B^4Q2%7{UX}1TC_ZlC#TNl=rlZX42T5I_D$I%Q*PS^kWVG>fh z9CWEUQ2$@5G#NGuN<0i)9H!SjG<44Ipb1yRk@{PLtK(x@J>v>T_X(VD?`Xx56rIEgg%piW_HUt-~E1 z)e9o_3s$8p?56kkYilTf?*PUHDfg%H`l2s-g7ZtMyC zl}KTjx($-ESk{!~tKe3-v&;|Z7gK-vSn4|CpGGd?8XDDVqlnB` zk=x*~i8J-jyBj4By9Y}~6r9XpCbs!+(+^dxFv>TOx4ARFafs1q{PI9MT`y!8qbXE9 z);Jxjs6xr&W?!%cHHDg*RdB=nRM%PxQivb+83j#*Bn7CbZvXFh27`6s;mINXq3PUx z!4Dky^qklCRs>%BV2zV)u3UU<5Y_T8TQn zS=+qQ_tIZg!#v4UYA46lc1p_1MIvns{?e~l9ZP-W7(Wgay-?M7aWsp)`W~HF4d_%< zg_-z?MHCe`WC241L@>B00N+Ff1P}XL<>n_p_{#R{myDY~-^ED}C-3p_92yvJx!Na* zWq!D&eC;&VoH5{U9b*q4XYP;}3T2#g7^h+x>xHem?ZQw0AC+=Te*oxBpAFx;XnSF| zX!E=Ki;*h-?8n@yEXy3Hij^P!S@oD z^mj*P3(CIu+NMHXQ*!JjIfTSW2|78hJpPaB20YV-INB`bD;ZZ(_FS>O3*8>y6ATsL zbSw^ZLA>}TSN(?9Hv4$x7kf`9{?5R!<#bXWfh|3(I$V{sj|u()4;To>Ul!I^j)Vok z0zNPOgeb{5YwnfGFM`<_JQdP8I0l62w-15+EAc1R2=_ry@4GiDyhi++iI=CB2~j>P z3_C>)_Gz8&s6+}zmtC7tL57LkxSAR#%_iZ@2?rgTv_I=xW`NOlI0aj@wztg&&a>&l zXO~w$!&91GCfjn@MVC$*mybj#o1A%vs_MDxm(Cbr-S^A?VuAbyaCQ5<-q&C*t+Gmh z2_J$bvo^J&0uM^jxf$QXyIk}jhp)%+J^1M5!b7%i)XC^tVN=pU42G_qqPZ%-{AN?a zFO4R_Dwdq|glEB8*{ChR4+-lgbdRCc`3H-X_J=!sEqd3omsu|L~geh zWJ*AmZ5G^TUMWT@0Jch&K2q=afx32@$jY5 zi1Y?2)x1&`lxoYAE2J}{z2YKse)}-sn^92rgjqz=xzitfGC#A> zw2u0M_dl&7VWwAK%&L$>+bcn8sLUHpQ{P(BRKAam0Of!}MWKgst@_zQ0@ALJ^I4S}A_#6_x(|K$}kK?18G{13{UuuK}0OM`+5zq92m0(Unk43Q5x zKi|Ij-=~NC7Lmgs{=x%-=057qcO<|g7RJ*nA((@zgSuetySmaRmsh|2CPqA7A;0yIzlucW3omlLe?*wuXKyb3Vo&cwJq6`R(W$@fMqH|;P2xqwEPU6E!HxbW z+CDUQm8!&pHo2@bGNL=BPeUarBo#d$GY&I-aLZuC$EAhep$7vNX=cR>%UfJ#6H|Ye zWUXMeE@k)R+Zqjgnuud9y0Y9kt}!k%8|g!Fx^@AF`|&ANhKdLGo(p#Q)2BhaO(#e7 z20f$qPYf#(1bas&U^{_@dU_r!f)M{m%E`CePB&)dE`smGMrq2+`U~{Vn=( zh^D?5MxhB4Yq4MWY-4E*A%pOPkNdo6pO9|DiDvxjuW$7YLbzthwOs)jkG=E^ zK2HkMRKow;Cpbu7SS9`3oqpa{%U4ymWFY(lx@reIoJ*SE>xJK)DEC4Nw4Y1{=Fz2i z9QN3@%i_VxT+pw%mOlDhdfm6~q{|7>-r6PTuyQs?{EA{8xK%>BPS=9mAROqTJ7aXp zJ;9$-XM80~9ZuwieGhJZ##uf%qwa-jgw6|lTihd=H^zJ=X1>F|T+W`VB3|g}1UBA2 z=enr>l7SFj5#N|{)(ku=s_*=I693PyYlTr=-!0?ZZqD!inS`+HikT-=Qj*1E=@UA> zn3I|(+Mac%lULEjeU+ct+qAq7*8ugVDbi{&t>uMQrfpmAx%9=i5nUvOgHAiBu);oaD~6DON6Q zcif-!@toQ{V8aL0){KRPbC$-NC4tu-hp)Y|{4sRPq3I6lYdABxgpkI+00DF+XgmU! zZ#7MJleUS9f7K$E*K@b`h1thM*O+x;m)ym*CZgYQYQ?Ui-mNf7DH_aSc&`szCvWrP z{q-sr%GTTD>vr{SqF1xM-xc6!U4Jp7Z}Me^1+0!Sf$agI19x*g16ViGse^)sUrGt( z(h67z4n3}9xg`v>N`2Kl$cGf;&1&O${L`l;EO>at2^)xRwK5-B{x=Vvs#^Q?*s=W% zM#A;zrlOeGojZ%DVD8~Di=C&xWtgs}iWtLX2zg;<#$&y6uaf$3VM*M)N(9k+i??7{ zlUi$9rC6HELHfJ$Zz6C#%Sz){LLpiYh$CCmfso;NAF1^WJjAHDnYp;7sX5N;h;^tY zMv3mxjn}f&TxSP%mnkA7gG5QsISpv}{GXF4jiV$wu*ZxD8ZV4wHJWk3w7%54mh}D8 z@4axSwk}+~=ZcT`1r-;r{?Z3+b~oJdDegxQTfK>p#jD>QCKW|8LPc%+7B><%Mv!_I zv~gEs)z;-&Ca2h-azxwA8EQW7B}TqA10^|$P_rqM@fSHz4z6Ag1DfFYl_MuRB*z6i z;l6WL=RwKo1A()YA%#!lp>M(Z|HAWXO5;T(9z5cfYh4}7Mn^_~yqE9KX*?@m8U7N# z=Mg6)Xl(OD;{=dA0(BiCmau+^HwxDH-GBS#lC%3o;3N+@&9OCN1X{Idrqx@(7xFlz z^?JQ}$df{MLFFDFb>o}CsN^=GRj;CcWqfJ{+lL(k(QeIlj+FtEGKnP8JXJbRsFavDG?tHBftvQ7P7D5iDFAmhJKpl{z{H;oiYA{|+x;;H? zVA=1)b{7C#z#M@|wTP?+{qhZUtkS=%@v@7LlmbK-=fPZT9c#}0NL0)2YUnK=LDg?H zW`R2})rei|^@u1($aqG5Ly0_3=gpwsBv2PAm9~6#H+(qzC46P?nMQ*qBJ0)*hYo9Qb4THZ*W-j)KHZ=81{kl)> zxq&E|=W4RyZ(haFD_v(5aYhg_Gtt0?v?CMSFHY7g0b?aPl;`wI__k6?9by4zx3kpw zbgF|oTw`2I0Ny{#;0gSisHvEHxbs9Cs+_y1bfgiDpGc%WWVKPK81ck^6X$6ZD}k>V z6#>Wzbz59&fEw%VVV4R#I(?ywIuuj@b^%+)DfhZ(hpe{f4QosH;gI+`X`>X z=Niqohc19}`K=PWCHXAg#{y)_KHXQMJS=qV8QJzzc@eaRyIPj7*saQ&%hgCQ zgxSbDp<-zJ`@lxZX5!2mHB+_PS6{;~e9G-}ZR&x(7mug~!y|3#@fE`r1de)r2KeI&%jc0<>vY0kbHC0x7l+i4M5 zwc2d&h?%W>kO-N7*`nq?4C3Y}rC?vBU)-8B3a_sI;}Y#GdEN1cyX{lC-LoIJG)?4? z>P!ediF1_AU(i0z@q8l6eP{e^fNSWE4KT&XDL@as2jP+FF8KuxH+w*G`VF{S;U}3} zm%<+p&5*h#JSFAXK`|rbDjg*mY5b^f6p}1gnFHTd+9q4r&aD$qsw2Rj4Aq)vxR&Xj zK9)*plxTr#6Gork6MKXYq~qdPeEE1t`X?-n(jkON6u4PAQ^TwFq*(Xs>Ql_F8=6^ zLeb3PG1`ZNeSJg!c9w93XT)k_GL}@)$9In$R=gcd0S9vpm;KrJw|_|Bl{d_F0Fd@Y z3}2q}w$dcG?c49q>G z4)n23<^`t7^$_O-8che!2K_lS`$!S({1(1ap>*ym=b)#18y8z&Y1*s{8WHJD{S!C8U&NK~=Tr5JbX-T$+&MX=;syt;XXrB=I@Ao=9>nKY?5>NJa5}cYHZs$2flGBA zLy1O?*xgm4dA`VD>{2^&{Wk_lHUom0+xPQ@NmQ>-`YIX<+Rf}zr-QM~>a|~U!NOKdpWj4gVQ^TC zT_Q)29NwN zRJ!I@&L-M;p{IdCStX63)u+27DU4lqT;|yxxwdFJ-u4={Cbq9%L@3@>!7l3i!2NDr z*3YKL->BA9P#?4u!ljD(BIVP1*@Et`c(=MwKZ1g*pMP&+0&==HO$Xv|eI4jr3C`G& zVGV6B!@Yv{NSF5ywMv^vJcrwl`#iRqRNYiPJorWDGE`lY-+V&oa0?0F$ma`N@Vi3} z1CVYa;#%hbp!8aArKAuPa9;DWBi%2MWDrUUVWw%$>ZecOP%nM??HUPWCJ7Ra6O=Ep zN7j_RT#<27ghJ~&?D-@Zp33&T?mO(x$2jpz71Vl$;TQOeA{AydLWuHxNN3t`vrj+a z&y0w5i1O_#{`N_sxRYT^k~`um{fmVNAtG~R&TZPgAyr-Zmg5V3!}Nwmw6mV`PKV}Y zDHNSImPiEuV|>#l3$6yi)xU*GSNKu*NSO1F7-yz!E%7#N+Q`+9!UJ>1wMJy1tW;y| z&`sTxh_#bmvWs%JA6~2*f7)$Ei87{4jyqV0S1D0`s3kMPlI~MJ1l1HKL=lXRGo#(W zlBf^-N`Omsr4wLl^K@>B&BxMnGx zpRj58c*|nFE}xOmv)wh4N}C4Q1@NwSR4Kp8NHJ{3eJamndo~xae-Zc?9%5WBD372Q z&v+H9H-t>`nB1@jZ3CT0igd$;^Ln0vK?1}`46F?N3ZB`$p{Z;$O(A8eNC#FcPfKnT zhIETG82Dy3-edRHp;GCwM_$MiJA22HBjxhCqHYH!U>u<3E&*#m;DQ)24&ft`=m4X| zRHpoRYJt?edLpaQ_(_6?N#$YW=ga&kHyOV0=WzoA{5%Q>qF<~>@*w0Fu9+gR^`w#Z$ z3@scqJ)IaTa9z6jx4ZRizca$Sd&$1nZT@%ee1rRLe#(9s{jYupYkmj6`zD>^T^%lU z&xZacx&;n{;k5giyy*Ahmg2`#f@tO}JjgB)jBZIFEN$}x&-x)>-p?$8;fWUVVOk~s z09P5|Rzfq+1O_MAoB-AQ^8WzAXFp;|{7YjO?NRXGPakg5;J4GhE$Oz=ke4!8JcCHpyg}iZW|rdn#JYa1sZVb9mU=a`3^i+5 zj5jjQKu@x!*NKBjxc!O!n?GsY58|YDx|Wk2zLnz*4;PyEgS9x~)gbab`D|K9&CRTF z>UIwqRh4|TXqxF#Kp4j({w)5+zZv{n`!@V#v+;J1Z3d~P-P&Auf5tu*xVc~K-xYXU zR7-g^9SVD>mDVZPC8XBUg=V+9wT4ZsV`$sk{72$5KkYH7c<1(e@Xv_6Go)SX-`X(R zO$^Be+s?4hsarg@Yb*+viEvit&NAXH=5`4iGe^gpVJPBi)tv2zsTlJ@qW4wOy`7bt zeH%>V%CQyjw5djqHX@snjaqKDZMS$+n=M}8~u>=uMzxA@o$L*wU>uCg_UQ(daTIf08~KgE zwqG9Cyh-A(AL+8#c&_0zp9g{Vi_Zy*v2mqbEHO*vOXBT8m&(-AEzZeogY2=%8ov42 zQP;+w73&Drd=vPala!r`b!GI8XFvgOh?zP3?{y_NQ}ecRCV&jo1~o(j|L zG~FV~(^;M!9>Yk~JV&Y6!6vt?{{Ux3mey@|c^8)$f-87njyT)SK3p-TK~2qa>Rm3< zTf3cGT+wt-Gi;^NBn*eix;{GMR_-*l0%Ii+mQ&rLRYk8&AG+T?Cq_>Yw zo(ve~wYrK%k|})H+0}f2@~eQ6PNb;uonGHjw$u{ZVyKX`?$Fz$_TMABp=3#%hJ-?4 zOoCSm$K@Vj6xIo?uLD`Jy3`9h2;xa$V(O=8F-Z``xK&`psQ`130j_JWiONoW)7!qA zUfMpMMJ!b2-7jSo4Vr5A?XQ>o6K}$Q8ZY$kKFh~isn@(aZ>mqF+j!$nv$$BTZtU(& zr}lq{fI#bTWL0?X(lH&>R}n}VkC?-o{h&T0cvDgE%n~n(v|{>pr{?{IudUi?47QTA z5=e_1%8-(TEQF+gKGxjZR=N)wYpy&pG*qzDA-lSru5~-x2;zqN;#rNX3l;3EZh~n6 zjxbt64%>LXP*s|5&##GoAGg0ZGwJcYjt<&8wmf8uSGm{*um(fTaO2*lC z3jT7mRoj8WVX@fSaj8+zr_8R^tnb#&$~Wt7r_E=%)oL`WWznSSb3)E;>QTP7j?PwA zyZl7f(@62ex=8Tuw6Y6pw3hl?OQkn)#SpV)dEx=QjL8gpTn<`7tGq57%04JP#+|Kc zwwk^ErK$K_>M>v5THB-|>N`kgKw*OI)91MI?io-!43|^9?^2#!;g1k%UJUUhx|i8w z^3_hAtJ*j)Jhqd{pKOXKfxw+s9R1e|jF1Tx?wZbzACD~UCbqwm`x0p5WRY#*xgWbj z6T&AD{^jKf3kH=-#McbK0-#sks#u;K$6=eqy4hT#bo6TN^ECeey|*v-Zhm~_?di)- zN~=fcc@K|#S>UZhSFybCzL;$7MV+c@Fd|6>w6{2oL~vO#V{Yph2`lg0BdK-C{p69^ z$UH}=TS21RPbI{^W3v{4!`#m^EKsCiBxo60LV-{zWdJKNV5Yf09%;H}ovY7nqQ&IF z3N%WLj+4UhO3}=hW%4JSNgRXCQt10Z+*mbP_;ca^01^0)SCD9nE8pAOH1HyBiR77P zju=8=Kh`jHRRA6Pa84`lsLqBv2O9M0yVQ<~QBK-#X4g%3S{PHD>B)0f> zmOGs#WzsH%#jzVYE!Hy>4eMfeYK;Z18o)ph>>3rpg?8$z64-od8p64_0EG~x)n z?GhA*7$LciD{Curb0?K7u-nF$YQRL2{yD@rdQi+;t6%F4C(9~uj8dKb*iOz@v$E00 z)cr1o5;)wxi*)6OsY%_%&AmBn?SAgh?>-s0_&23#H&+_Ar*8%Q?Z1Y9v|8f&`b*d@ zd`BY3b17KmfX5^j_@B$ceelGn=_5w-SIpiv@df_?iabV>-CJ4twsv-UY`05gV-3~m zvPKPadiEf!_XXDhi7b(Yk3TJb(tgrkvJb_Nfja*HhWs&gqh9MazYuf_O+&%ZXx2%t zYmwgSHa42Y$A(hRO?Pc)RD!}^D(KiW@T9ie?c|ruO8JN2C+tUW@n6J$6SUoLP}Z!q zkA|KWk6fR@`jwTJg*;2*i~Gb=XAYNbcXcH8))HPD$W7$-%&^Xj9nwcLh)1u(yg`V{ zV~(kuPNJs;2&nS5mYQ;{wNFFmDsbK-F~q`-9-L!1IbF(HTG!F;)`#bPD?X`F`^I>&&H=TQLD_a!IR(ScQ zG7Ecsj>xJMupchW_{u9Z!(#CiY09QHnrl&}6x^+@p?`;p-_&hhKUSC??L3oz>mA$;Ntj#fBEef*95oiu)K(XdM;Q4-Rn>Lq| zb_ThjYQ7z@x$zFS;+bvqEhAIA)u6d%(zN>_WNp=A(6uYcN~Q9vIM~Il-dScvCybwh zwGZ2?!k70jt*?Q#8;v^3+f;@tYuk$%()N4kB8CUPwwehcTUebg8FwqTWl#F$V)(D1Yd;LUUtyWRmP4T{g;!&ktO&+bLu8ZOgCe^hon=LBf=$F?DmRE|( zpW1iH3~6;5v)nnj^J7>ZFB`D^o4yy^c(cPkCb`u-ai&}NX>QD#KDYgX#`f}K0^B>@ z=@CkYMVi%FC5(vW!jM~Q6JF2Z4;^^bH6I7~H^<%*vGA|NFCNP*-U0Adiv{)dzN6vj zBbHk`%WJu;e#G|CrKRL@N|T#m_HExUF|Q$g@fCb=E|I4EFLu*Tfqkhz#QFSF;MM_@}~$Sx9tAA=P8lCcV~%nW)&zl35S4L2VowY^gMjDoT+^1g1Xk_F4Uuz8iSg zc(rMeRE}{+1uV&>rqYOMY(ud>M3M{0@~QP zRgoGq^!I{%E#jx}wVmWQP-xn{_JJ+Ej)kW&mqxPHpY3B!xwaEq$8&e5%_~|+BWJ{l zzas+s$Dtfn7E;4ii>B5dN)o3O({fyr_ustvnte`phpLrj$vJyy^QktRQhIx-q>@i< ze8u?F;B9mEeEq2WCGbbVGkC_=K-F|zf5dkZYyKh8e0O5H3_6~t4~8$T?i0dRSJpNc z7Fs3TbHzTXaWH%6WR79vv=jUHgKm6xqr-9HSY{S}CbEJkUi-td&1jHD&`TZER*iEp zX)MLFC~+e0l&71q2`D_zNzi<5yKm&MORY#4tUOPw={me`Db@79CTp0j^x#9-BHTnR zu5Be!ZX^@T#vsa-&{}xMUhrm(=lGAqz9Q6a?PH1WS4p!IU20N4mjM>~ddCQG%>0qH zRWj!a4m+_64_PTtqOj^b(vKzXrjz%s?XA-2anW^X)RbpY)K1CsYPnv?r0nhM*U0fN z5cnqN#GeuM&xsIys!tI3vTHGQJTn`62f4fu!9Dyoa-*%K%3w15I5}e~R7pls*Ou4({{X9<)o`BGMmQ`~aPd!79o_8N`K#iOgkKPK-8NZa zwoCm>R@3bp?Y1+#ZKT~v63KZ2+h4RzZ*HtY2Wg9a;1$>_AJkum`hV>I0O3E``{4fo z!mk`#-#^58{BSSzKN@NpO37uWokLsF#;0u#sb#30Ldh*WGi43j0y}$%8b}@~0=u(U zox`Fu9v#eV7pdi zZX?4!8+Gxm)u7b%zY=Nw9`NjTGHV_unIyeBwy!wVt`ZY*YZQxd_DjonrHU9~js&$x zN|#awcuZ@l;b*zb((GS>2$39-86fj(aQXA z_)p?32UxlAzmL2xs!eO9+{m`@>UQy6K_gnPkh0m`d2+zp=Y!>RQar)H$gjii+i&*b zweT4655a!{=(qP?BG+`?Q$*IhOR7hAX{BlUcBiAuX*c{Mpk?(PN=r+N;SJC!Z*1za zVss#mC(M*-C@dhkHt5qw5?otc+B7K?lC)r3Uqu|ysGX!JSpa2}I6GKp;lJ7+N|Go) z;Vjk~;{N_i*eup-iKUVo8z}6iwrgmbQc79jRh1Qf^GUc6*&eNaD6Nd-p&B1oZ%f7B zuW|Uiu-QcL-A8e9my0M{i+0%%SMzQm z3Y+$qZ9prWj4CeY=9`8vl(7uV8BmX#G`3P8&g6Dw{pqZ}ROjyrxCKYPNMT5b-! zl&2}KuJOLRb6qFi);}!Ab_O`!)<~JJU){){UbvzRcZza5n?8>6r zS$9gxRF*=l3;d&!xH$~UeJ=VtO-(J$r1tYitLcq5n;erx<(PYAL`4OgjZF){ zzA5koI_`_(4I=wXzOd94Ke4aL^WfVjmwb<>MH5Itn%Py98#wmwJFQk&1ollXtr0s-R6AH@ejk-HrF5NA8nUTjLSQ; zR~(qQV}3;k>mwfWR1*0@dwkSMM-8JRkOQ9XT)Wcs>br5j1js;SyzHr zt~kNR+g>h)=To<~x0c>Fp5o>it`ajPy`or0G(@OE%wod%XJAvbxCAz9!n|GK+c$;= zwMe0sI}3Y_vN%bu3ZaheWoZhd?Uoi~B$r|Gj(`sAlQN3K(!$MJQqujB>*U+g{d7iE zV3)q`&r41$C>k?wEITgm^&8n`^DZsQLun7$W!%O%024;4BV3|&IR5|$^iK@x zo;lL=pB22Z>AHleY}XMYP2@0{CPHnV;xT%zu^9YHa9LY%Cn2P-vqbLky7Zj0e~X4K#*pjc@7U5t~9KOkA^FxjoVkvMySB)()9 z5c!d!I}oLU@Whp0QkFZ7G+m<42BIcyGW1I_8yk>bHHu4!t=1i|gA$cVSclF|SgE4E zeufG)eWg!fQmmyWJ%#J|n-fH;?yI4UGCd%=;7o2oVB}; z4<8chlgr`%0JL7}I)0y|J*?Lk7PCVf+i|S4nwPa`Py0G?}Yv=@Z?FV z>Na|7X*Px(M_RLeNnzCFv1z=x;zWtJTW~2`-_wtF3s2^m-<(KsK(lSh%94y z?sVvGphjt~9&1#Q1foGCGO8@`dAL6{LyB`s^r}&-Ui75WNyhFm>XS`tZEvon{bLaC zWS#cV`5VTbDDcEyQ}{w_=t)v;Bh;VHTV{D#l}1KmSmG-l;7DRKz^^HP5$cI}w-enw z&mJ5gb}@mRs4Kex2?z2XqP@G~r^5+tMy28p4(YSrXg0ChwZ_Yck_jZPPILKJ=s5*E9xn|U(wEj3E4!Yu zPRa7WReKz=#?*w>I*@l?KgX}1W4W~PW~27Frn|klXqHXPkuloiBN6RC!Hx*)j{cs_ zqU*NWtRdnqjud%_;ElNea7jCeJbU_A%689k3wcQ-tdYp&Ldwjsq;B%FDuePWV?W&- zo-v<8@E)~zm!cSgEwr))kh_**z!9|u(sCGkbosc+8fN)b7f!88Fj1WpuAQ8L&dJe|EGm>`N(fmK)oyxrz9$sx% zeGaBp{=bcJw)aZ=M*MZ)=OX~}Mt)(A zdUowwR<}wDW%2>YA+SKe$-o?rIIfCw<$A~A{QH^7#!m5)e>1(dxW_z`$-v5yoDy(P zai7Y&4F|-Uu7RoP`o@W=Ug;XPnRNyBovG=!Q&{R27q;>VV7s%sw{?=<;Uq*V=)skj zAos5_wYfhpB#?TRB%JLBzXSCCRkLq&L0)or$GASZ;BbF4itLM0SGJ7je(bc-qxTd3 z3FGi}zBBj}0v{pE@ayJ-c?{{UuLY%S*VtDTTc*Hl_Cq~ zM1La*=!8h<={`LOYI**3@4W|4%{iFO1sc9P5!Y|rK#4%pzdd`OMX&Og?yjiXp zbvC!xp62f2OB-wO(%fDcq5{iTu++E1o5q z{H9yUKV|P5c(dXE0L5Pt{3r1Yw^#lZl68l}8k?*(vCkvKlWDq?h|d%+CC-s+8qKk$ zl`d@Lfl;I~ZS}7OYMFv97gK9#A=F^ZPYS$N2J%RRw|2IITbC(n+nQTt1dyI$^R(BT z{7v|6J@`kl)uHgtvtbnP;olP6K=(FLyB4^%()E~PaQ^_=&3dr6of$IPNLu0z+op{xT|b#Mdwy+spK5$k_;aQFPSBRd<%AlAoQ-p( z->QiXyzHtOWI#uqXCPG)CPqT551m0D0qfrfe1GA)#)|7fyS=qS%9mPAyt;*>fIwLZ zhjYLWC+AfoIKUO?UjsjB&lYJ>!{FbK_Gd@&1Why9c&Va_ICXmlxItxcb8Te`qr$>x z5#2z77LElIs!!%I``1O*^bZhe(dyb}rDdq;vNVdfwv)#_v1pFRK`c%{Wne=Ba-?8@ zYt5B9kf|iqt@nD|y10BEWR&@wYAycEmAAU}>)8C%@ZZ7jh`uMgirU9Oy|9JciFG|@ z2{h|CBi=`tJlK`)036~pa@h3beu4Zu_>jbW z9|-(5TmJwI>Ke|mtn1e|SGwy7uKw5@$M%=IYuTK~b1_hjIgz(uFb~&Y+Ad#cI>(K5 zSUf|oY8O^oV$X4Pr1*83S#LF)tB_y&Z^ZJg$k{PhbxRixktB}O9rDOz(AGRP_DeB5 z^F;&}qiIN*2_xb(NTJynDyMNR#z+d-V}-9ma)k^uu*#y9O78V7t(y2_7u6-#xy=~Y zomplxq}12Kn`tQRduY>sXSu@_mZmMWnDt8;k)%8PsL&U=jZ!k+TsX_`AQuEMzyRYW zuiM?mle93&JCs$8S_UR4z>Q=nBNYk>5;)5ePnK8E2Y>Y~qgK~=`t;|wm zGDjRF07%)_yLBB$rA>A;t8XjL*k>4(OGu+A2IL2B9am{5Xc#1CkSoh^adzhBT@PNK zElQH8p~#wdeLnMm`0=C1tN4ChK*N0Znlr4q zvRAu&c#iwT{vSRb(shZ}S+3x{ytuW#aW%8syE?};y{iJo8**h4xlqPX#|LSyPvDAb zUNQZp{vO#qte;`A(X=$UOSpG=2SQ6bW=NgT2qyEi_?|@j!OD}$06w26nx~fI9Ga6# zrMa&eK}IRwFZgT8YMjseLh zuOR)K85Uj^W*ixdj2=sQXmgGSIDWrRTKuQ|sQhM@zBRSCmhKySYi%~#(Tt)~zFFnC zy4$)mZVYlJPCi@%o@>FBJ)?~!t8e=JzZ3KfWoLxK%5a3L&Dki$UQW@wvR$mk+g;85 ziX@rlRE^|drFkbgjlM!Ya)op5I#n%J{@U8#N`@qkDNL#*3BEBX*sX%VZfp(Y=Yf-x zz^*?;*BD}AR=Lb9-v^3Ye&U0s$SbZ(90F9jvOMX5bQCN zENU`X$W#uaa&QNH-6zbWeg6OlZJEVG9;;wpDwfv!OH}n=F2vd{s~nfw-PC~o;;K%ofu5TZfp$TwKQ(B!$Z4MQ z-rd_>-(F87e`VAI2Zl+OHf=2@nU_wv5XSj-UFqfR=-3_+rddT5=Dny}T|=ncOFjLx zH!$2=wY}5%mhE{g8)8;@(ru2?$W>T67eb^pb$=FN)vcKgzMXrnUEbb^e3Kl~Uc+@f zuX7LB{IxPkBg;HvVe=Y%`Lq4F{=T#O_8xx!aDtq79PhZbzUkea^!?*rmr;Lz31|Jc4y=Go@({0 z;ysk3N^)(vEfwVKo6}d(9u@H#%J)&8&gN^xbb;p6ZZBoHYj3qnZqUloHH%K-Nkz5o zikFKfPa;jr@?`mKgb#6e(IQB9d5DV`+|4!sSkN&XGl7wkcsK;tf8tp$Z}n@WistUq z%88oJ!bqOsrIO3-3#h!aO(*)m*7p(z%&x{oRwef}WoZ5!*8D-M!=&iCP4(5)-1g{g z6&GQ>m5dE6lWkOjAG9o}8bY82A(#-vevOk<`o2?6HR@B0BNrvpl{>pXJ@ytJhdY9e zH&RoQNhiPgdikHC-vz!IYQGGA6ZpHvn$E3jsM_oP5E{j5-iE0>03>@D{1? zhxT^XJU6XsvfXN$z0IfF?ZnbOuAer!b75sBm1s5 zl@3DZ z(2Jtu1o>OOuGjoeyuKIsYsDTQ@D_pMdpo7O*X}hdxXHVjZP4kKmk(zgtuDjnT@AM^ z8bEjNA&%@a``?EC2zYwSecy|u8kr#fjY6y$3v;4w(kME?*F{$S?}3?Ft=8 zb0~ITfR3l;1PpRG0N2G;t2c_T7%oa`a!DkTwcgh6W9YECURg?&3`JT>Ra9csWvo=3 zRpg_!-*$JJroE=wc$Zd(P=i>tvAOWZjMn$MZl`Mni#6SauA_NraV3o2WDIo+iB%R= z8$pn(1^}(wFM>V<@XPp5OYn8owW0B37Rh*K7T312{iMrqC!bl0+DR@1dZf5VZRQna zjebC&bGomIbR9P1#9CkW-Hw}Usrc6EH1D=YvVHbe<3n#Qc`>@n0p2xXw2T6{;;#6| zQSr`&;2S?3_*FbRt?61l{*|OzNOZj|+T3c0Q z=uw6?b)^VKQG}$GlWG%DUlVp)JEy&eiLXX9RI4b|zOk}SaB_O9C;tEreVcdi@5g@w zehcefKh!kKzZQHw(Dg46X_~KyCGiJ_G^l6)0EBMNYu$ET7f10Qh%N3l7$SC-6j)(- zZiG(JM!;bBK9jBJKN9>W;E41e5NjS5@V|)lT~EcH4Dgnxr`hPx>YgFeUhczI@g|#d zbEZx;xa~Cii^#b%+r$_J+QL1K@PEYb+XKfR0$28T*KPbi<3EL;5bkdDi{QFum!U!7 zNws-nzSN_&*Yvwt<9-qQ50Y8U6Fll}d)b!g#w9xdw5a`+h zLnY3?q3F7^*`MvLLTxRs<68u|S%m&!K3vknZ3EiFZ5f3<#X|*2rG%?eo+@dowvutz zQZW+9JI7H8dUmp3lvvPZyHMX7e0KqGqjGQ>wQ1r zr;I#N;LjE6dMAl|X{+7on(elqr|OpaZ^H&_`wK{CmsFZPGJ9KLeG)&Ck`%U%M_9~u zma?;bq5l9ZJ_r0wkH;F1iY{f-bldBlGsHLgWrn^j8$z9QdFQ{EM;CU`TRpPf+{z}J z+mg@E^O)B42)U2+r zmKkM_K=QRItkN4OVY`CsRF=V)PqCiq{K!d2=P2qUcJkjnMTOj2gx$zwGHJ*ceeIBQOE~$SXhxAVf z#jNSj*{-JcmJbb%m8Kh!ZG^SUmot*;S9i=;#-U2BYLbK%>nEaKciPuE<@>nPbCbJH z?P;R*YUiwYPR;arENsK-7lY2Zid)OO*1x&8cw|{~sNG*qWu7@6Mhd7OfJW4f0Uom_ z{3q8sCC!eHsA%U=p6UyD8Y>HiwzJb-2`#lIoVD|PvO=!A8(@rxq(--pox|kaPh0W7 zhVC_ecU{pZ(3bHu$G+3`bnzyWYi)2Xr1Q?5r)uTC!)p|AlORadnWAQqT1NT4itrbS zB=KLvscvlb88kcV>q(POzVl7%M)1z+vzZZM6I(R#Wn%qvg@8NZ8{I_ z&06l>_gm9^Eo`t`+b#Xi+HaQENw;X)HIz9!l424EkfnaJe$8L84}ty;Tj-uD@zh#3 z#4m~#ZT+DBA(KhAi%rpW3E5_z<3zS-6{oygg;)Dr>SPXrNF%mo0=$F%3D@x>z#0dH zw4Z__RfgxsxB7mu<4H9uivtFw;&`Lg-q!uEwP64nmCc-&5W#GdO(nuvMHp2`5mkRt z5w<=L`nfu1_+0WwxFaNc=D$SY+@k|dg*<0E#a5l2-q3GbB)a;Zem@yny;(uU(u@}? zh2KZjEiZMx-n*7(T;g>5rvhEM$w80a0pA(t+v%F7_<`C|!D4**g@_8Rk%uJo2aNXQ z9^}-odj*j4=3#~nR+JexZ3Rk~O@%TR1*SE_Ute%H;jxx$1iX zjzP!O&GM`6-u_3NYFz6}0~jsNVwIcs?ec_vGN=#mo^XA7ec@b{;+SPFNoa0Zo=I#- za#=oZnHekCZDGa$q%WQJ((}j2+2!Lub(Oowt=An04aVS3H;8;w;ol5+dso*yW3Fj_ z9niEpN50lI&1U-BOw)AxNC0trb$fQ}6bK5gGT(e{0OShBQ@mS~vyWfX{sKdNqKvvJ;#8wnd9AKY-hE*3ww7FxL~BgZ5c7n-zk32Uj+O&q+Z_qUHGN{ z00|GoUx}KYu{Not*?8{4=^;Thjd^3QYqpp3PWsNJaRiaiBvRZ<91_UUy0no;ab9LO z8;8SERVvLTJtC94pLCaH)=taS=x0t-#ME@K(dTgZrMx5a*}o*uk$xQh%)b#lOX6$Y zdgn@;;a7xpyN2-|hHoIgy<5!&?@+m0JwLeo-uK7Cz#%NhgmMFzJ1)qacvxuM-W(JMO6!gh@GJIKNJ2nL84vDbANU< z{{R)l08fwSxX1} z8gZT?rQD}2ch%{#N$io`c< zlE|PmWB_t@4DdG@8fFni0?2{jws6fE60)}BC>djqGR{;$po7Z>QGtLw4{0`)-Il*2 zvyny1+Do3J-unEKS|qz8q0%&nb$xoq-^@#xh!ean8|IGM-81G$xWsZllB6&9RmVUF zwaD?>!xKhgOQl#+@5)q&!iNYVLdd2S1TY^jD<9n?WYX{#g)Q``AH*7?$7y+UYaf+o zdW&xMc8I7zVC}iLOeA(=$KA#@g0Q=890MK9@`9spmTSMXY}9JeiHUd6LMIs5jZ~>-8RhbsBv$v2v<*+g zwzmHOWAmFzoCWiPG>}fpq>#>zL`-)++~5|+%Zy{iX1lr}!YLslDLKe2Vu`sXL6V>{ zf=f0z10`}P!6`eZWS+)#B%wJkWodPNU!UAtxLfFD#Dv^KbY$}u;iVAmm1PSdedTwI z^il>;e7`c5;5<sL zLKAV?4&`NK=coulAXds#r7mi6<$Y}IdHCEG3l~a!(D&NXcK4P0T=`z(;6IN(BJ0{7 zhu|L#z5T-K*6(pY_I<f&7G@fILkrhMvu|@Y6fPO3M zo*0_t3dGS}Ga1`xeacZGf#wG#8X?F)8-L8LkQG)IBT zCx}c8mbUuy+AP|gv+Fjt5^cS^2JjE&-^3{{ zEj3u?S@zs)kTAA_Ke5mDx#qi`TRB8~)-ChI-b=j9k0TE>g~fdV`yhVODf={j&>sqZ zH%;J;3&zdheN%nLiQ@R$?#lWhW;FR;!Mvp!Ub$&&c+=Qi?UAi+)*0O;+CzO@a9OAJ zd?$p>>e8bm*Rzaa?#9mT?PQ?6a={yeppL%Jf{LDU-J&pLggT(oa><~&|Z(+Jul zGj2aa{3`hW0Hyp=(VIiRpG~vz6n=S*9b!GvM)5?;ZuW9o7#?I71$Rhab{&i0ADi;$ z_J#eaJ{fr9_LlKq#gpNSON|Rz)nu^IG`lI~xYYD58Y|n`UsKimQ*D0I__M^5#c;yl z%<@?^q>$Og7uoIYe7s#l;@5$1wHsd({5EeCXxcuMlFJqLu8>+>+v>7BY|u+4pLrus zW+S)CNh<#A-AE-YB+2;d`95Ppv#U;(Y)u-f?sX$*&&jPGy{x5gGw7$B(`nkRIYSNZ zx^c3aU(E?V%c9cyy-(NQi1BD0i{m5whh_?K^c@%!S>g#IOX{WV={#DDOKKZX2Db8l;_ z_+L)YuKXi3_Yi5m9=Xu4nx>xG#s05xJi_KE<#$NpM%yG~sQ4A}bHv^*_;((!a4h^! zqb;gjc!pgr=S{bZNU##zLmc{yH#Y)HxbB6k#MXB3T--Y(o=hqgn!Q){Uih)_FHP|t zk>d-SOCJ_^4^Gv!L2uz(uNX^vt?V}!6E?l4S?aPq_5T2qa?(v5mBKFO+JAov`C#S5 z*22pVNy?TUQchQasR&(rsGltII~->%HGo z<6j&2!V4Rly)#3zIPm?1$g0tKP{y#xu$bUnv&iBn++2cxc%+@AmiTAlSB^d-=vqFz zt=o9##1@aKrKGXxkS)A=ak9I*c_Tw>J-B;g6DtoiE*;T8!hyH?IQ^l&;GbU({vqf( zm+c$-8Ox<#>E0`v>s|2|gLH*RtZ(%}Z7-jFqUpP~cz?v{brfkfnCiASWHGY)G{3pH z{&##^;cZjJ+TV%%3#y20_4|AKyKl4JSxA?$7Wh*2l_c7>stz&5SAf_Og2L_u=!|1N4Z;RVt(lZZw9?5 z;b+EebK$0^CaI-q+D@Z+EFM}NV%AH@;gAP5_m=TTa~Ov03uR?eSOQgeEDb*x_*QT2 z3rY0ot}ZNfTW7n|5<9ssji#G%JI;}dWq?a<61?*hzjjK$Ipq59hJR(>8nvCix#G38 z@SleuiElMcOHdzfzP7W>X3f({u~xgdxVVt4cF=_qNac5=as2i4)$=T;9hNC(GKAH5 zzG`W--IlhDef4K`vC)@db1Ha<&jO`M!b;T|v{l}Znc03P=s$q|B>YtIezD-4JL1QK zEvzm4dEk4UYrtCNjCVIOUTGS8%`@7p>3cELw6$}3Wq_E9wegIg^BF7Ce1EBUD#FUc zNb#SAyjeGbwSVmid`05_00e6i+T7?`WsQ)Epj3jn*yB##-{^&jlV zfAEsyK(O%_?Afe%SHjvBnfo>Bo)q|nr2JEDPsK;aJ|eemH8qQ`27hboPd9|Mbkz;y z>!(|)SeUP6j9ALKmTx}sU%+TQGvgKgoW2SRUlw>X#XbO+#9k8B=Z93Y@n)^!$FJw|%MW^67S-BGsgVJ!8X{Hu7E@WR6WP(e)c^I7F=+%QeF@MC~T% z{eR)@mb38FLbdSMi8W6M>UxQu#vLv%3f!ioXNy-$+2XVo$q12ShwQTyk(3CcatV$& z(4Qml?}PjksA?V)({xP}!q!?h!ygabd_LD~-SrEmkH(Xw(D9b2Hw#H))D6VeQwi`| zIc?D`=C=_Ehtj{a2f};r*)zi*4)q)T2Ts=X9~<6yQ&Q9H^uG~!pGfgc-Xrk_pDWr$ z&g!)k z>RK?0a#4!X=c`(9p()~P;^8UPe$JF4(d{)$Sz~C-l8l15J4JnF3oDj7g-AxTp-&IV8zi4Jxm=~qC#$n( zg;Km}RE*peSya5W)2mUnyD!ZA5b)Fsb);Ns+TOXMc$p-QE1P({F{eibrM;{}?DH+W zvTBzPsHl0Pm851;vBG3>BMeus_^@ zt9x`FCDJW*QF~*x?i5O^Ya_#g)2aY*`cHlP2!6{qo*=RDR*Ue)$H5*Y(RHma#2Rj` z;5|!I@WeLy&YOE4rD;9KhV5=!N7Uk5t7~U4UTN15ut2RDQp(;L@ssv7N%ZfG{x;FR zD_+B>c(1^}6)ZK&zaD57THUh8;;#*BI##!=m+tKaLs74avAb%`|n7fy|(y1bi6xVf{xxwc4S znVMy^00@pzRPV1UwhtQ`m8r)G?c+*KHsKwe?Pil#Yqr*5OB06nbmuy*kF;0PPe!-8 zyRz-8?0JRXithAi9rar)jXE?#=G_g;62}^}lDxiP#A&f)Vp*^iNhY~}5g!To=SF=u zUADH=t!|nr;%k*?WKs!eW{&C~nMjG)aM)mQcqcpl8~CfE{7mp%TCazi{?uw(n&_6d zkE6BQS>L?2r5Z~o%F6&U#*F!BkV;s&3P}1x_MrWbye07O;Ah0Ijd~}=FNz)-*Zc?I zO;5z|Y0Gioy>r5P&b?!$u+wzwts`9Uq|)i|U28I1M8X@C2rf%1vxPOD2P>(WI=;rA zu$2ar_pN61>#mRRHpb#3hM@^nsT@@r>HDrXZ6$Yg+g%@5eyIFv@u%$T;Om*R?H5Vc zn*RV+iupsPscUU-;mcuj8HUOWty1bmiqiR7TW=~Dnp?SJ3L~^+K4SMi3I70seta>} z*>x`zUh8_@{JZA3v(xUa^sNsPPWK;WiVItHxocz~F6Oun;xKlgI|mi}G5kl=elYm$ zZ$2P++V4TU@ZOCbo|mB6T*adJf5cPjCjS8K+UBKbF5`jjt!`k`Vue;B`|cuasgIA* z9ah5YLAug(*#07DKWy;{5NO&~tEgFv%~_buwmT@U3pK-$1jH0zNJD}MuVxP)m$!zF zE~h+Jyszh@>U_*FS!HYDDd1_+g!WSXQ`x@Xap2b9vrmLHtqa5-@P=s?ULCV&uJ1KT zQsU+A?xkl-rhT_wV$M=HqErlW%2hJJX1_DPXy1fdzlL>tjb&kL+dDZDFAdr0`gE6< zGil8wteUhpFJ^?#6n7H9R#O~)O0G^fxj(c20NP$O(jd5vG>Z*N-Cg3GT1g{$q!H$+ zW_d%51pt)CJ#)=@-mR(V2FJv4YQ6!qwbu2055<}lzNf0__P!+2w1wCFJ*a7#MyqGx z>y?h)9dk?8@7Gd}=?Ic(Eu)S0nC<0*h0di6OtBQ?>a0cmqLXd6(n@E`C^a+F$S=>XI zV|YV001ZL%zD_|Q31R#`5wBZXok8^b$fSiyw~$PMK{mjdL>^dTZW$F-eG?FNCah8yj?*TN}T#Tj{pZ+G^3Z-+bs3WK{{Tq7)2-pVy3?k-dnUTs4V12*XoQJEOs?-C{odql zrLv<8evc~6un_mL6@IVmmsHdH(s%q{O;3l%WElEY-5L~~Xg{=?YTmww#yVfZXS~oZ z^{HoDX%gvtv_Wxks7G${+(ipDj1UtJ`66Wnve{s9jN=o)-wb?1;|*T&&qsLebqy*x zuU<=;&8(tpcK|^P1>Cm=MPdos6i3M&59mLJ{{Uwn5qMw37aE_4^_k_N^`)Y|Qrw=MvXm zLd4R$GpXF=n1lC^CbX}{6)8Mj94&Za-XbZ&e6mrdudHn)ccR+sR`gpHPa~~|g*w=p zPB2c+A8D@spDm9f(EbQoX+9Bx+r*PyYFdrh2T^#-Iuzn*;J0#5+gv*^61HD-DS!fP z1$#PcPiG{tyb|3B5#^2tLzpHv0h&bEo7{+=Cc(>M3^smXO8CmSjK-x&)Od!R+jfkc zVy^FGlSw3d5dO*Kjo}Deql>@fes%cM;gzq7VDS%#8_u=VCB7F0FZV=OPPdNY31)#7 zBuOq9+qA3!AjHccRgkc+m^>?Rd?n(&J62e3jJjRqcPO!3v=W&heakE}2;3tps+=@z zryE%uWFN4;DPL=rnkJKZq%1>8yG=GbOG9ZZT3W?*X)D2~Te1Nyi+!R{p<6BD+BqkFA9e(p>3MV4L%mF3)LdX_{)ywUW{V_25%>eA9(Tf%ow z9-i+ZiYTDHvvhmG9vNbpT2y8%g(DD>p|U{vN5py${3_oPX`U?8VY$4YO}*2#J4LxT z7tI`gRr9nPQfp!6NeP6yGKY=I%Ig^OJukpN7HxhZw}_*^o<9kAlIGnO&sJF?{>n`_ z?SesbEymEglPjPl!1K;Lvl{`o=ka+o<4xl-{%Y7Kt^U*-`!-vxb!PEVe*HaSme*Sg9%5a#PafE)oQ?%}wtfK9HGNvjW!76*(QGukYfHss)NUlb2G7JR zXwd{)TV}hK#Z_iq#u*p~ZOvaIc$dT4mw@&AjXUhOHh0!n63qH+^1*Oz;Su?%zUtiU znZiqqf~t7J=j9%k<4+lQ??=~fZEXBosx^p~YdDfC`DL*X$`x*Hpfg9dIYv~LQNA@~ z?BE|k)AYSp#(Ff~A->bD?)4o?3A{J1YC6rdqJ1;N_c1`x>v}cFfkoBXmipImNZFZ4 zjW(-f`}8Vfvifk$a~j`Wp^vm)>AulxOIqz{ueI6F8NyQKO45$s*KPj*1-*}sr12)F zE$7?**vmc&hf)a$Nm7b{0GI^h=sWc4d?(_ol)Z)vtDUh(3YA1uhQ35vbfVO+6XS9hUFd^B(}LlmJ5U|e|r zR|irlE?Zfr%AKzFwbku=b=(}>Up$j(z3#T}<^3(suH&6pE32ylp}tlGlaq{Nf-%>e zV;prgrv<|y0376JEJA`v;|J3@&!^xs^QVP;YpKa~6^yAR>d2xf%pBEHDqgJ-F*#4Xxvo*r_LwPaAWbZ9Mer#w*VuxY|I$#~`p7>x0gEj2`B? z3rnq~Ph5aWCj{hR;3y+G9Xj*rT<}u0?ee(icH4}$(Db`aL6N%j0|cCq2S5QhZgcr` zuWizPCis(D&@?ZGy7!5%*T7b~&7APr-88q>-X4x^Uei(3uQaCXpCygLTG;rLL7K--)#1{&-Prk_SDB=Et3xduQcI#; zq*BcSV0mtrHe|Y>mQSy|Hy)L)cz!!UZ5l~#(nEi3zt7oz97%H_m8FrT^Il&yU7ekl zRAxJ~kLTOqAI4PCt~4u)`^h2JJRs3omLUbdh&~@&&l%S=okmxfZM)N=jV|mT5;1E? z;oG%bpW3g7J~e_Hn``lPZ*`^LLuWGHTF7U%)O5W`7VAgV?A(8>i*3RXRdXa4N^ll3 zN5y7%FRE6Qd2dc_wAy`c+CN6gb04lzgrz0zQc6ia+9z+g?EFpOYgwbVv()r^Zy9J( zPVtWq>e_2+Fhti0<+PE@UOcBY756b}T{K2hCnQq0M#7;-2et z*KL18+N~u@m0HT0oTgz|- z=6IM4(+gJ?p;C-v&lNkXw41({ckFdKy4&fdXqss4;Q?4RwoH-+Pce~LsA(or<#Y0k z?&{!{z=37eCWZ^Qk@V3pkjCg%Nu*_Nsuw99z&E!fZQ%1v)b3=|8e8J#D|n_>p5kb- zh}%q&#JjLq;nO1kF5kVHifQk4T|VYpe=-1;1Ti(| zPU;tW&$;W@uO}Llr3qAwQ)(%EUA{#>5PVzkFM({eyQwuxOPjqa*&q8h2@=}&Xd)$G zj>bE=Bl|-!fRaNu`klazhv(b>0NO537U&aedT)oWtQ}&W(@!^s38sij&F5YuG4mpB z8;;fr>^AOQt+x;2m%)D+_`}bUZnXUp4GPloX|*fqGfek1j3Z0gtQ`r)S}R^#uJ?;wA7g~L@e#Z6kB4BhyH&i@ z^;=s_PD_(84+Z-{YjuC;33!$yIal41W8*8+^k4QY(h~dPE{T4(LigreLqaRmQ;{w>i1V|brR{U%d~#( z*Y~44)tsz~hiI>&;w&~B36@TsJ5sGjm2z2LN^Laxm9$Gln)N*X6rAhkbfGx8DYq_n zCf~a3@AG^0KV|i~+Aj{0s=|NEf6Cvf`gUWBt%LS8 z@c4C!sUCEo+m5q?f|b|u^Ia{Ok>OYbx{OgwnMmV>BX7Os#~TI(RFHX8jAN+>j)Oa1 zE4{TdU+&z~SXswu6e$^JVUaJI`?0f?BaEIs>eiW~9WL=6aEu_02wePx1yu7HS0$K~ zH~@?iLH6VI%jj;c^_!T(Let%dOod0zir>51!?{km^*!lxMp9EtMY-cpqbwFv3N;<7 zRC=zu>-oDQS4$J={t8>%&*y4a?Rp>BqI zo0;T_+srE(K+>vP#WR9QXwq25RH+P4@Qj-6T0iXn01WtE#(Q%9d@)@XEXVhf6FhFw z;{{Ki3HE*mYVdE28u8L??6mc?wVm%Qp_1vYqjpPJUhQXG!m_A|gSz3_wx~i`anp)P z)vlK<`K5bzNuBwHU#MjjYDR7nRO1-E?I*MA-|jvn__6Uj$37dm(r)ZE5odpOfA)g* z_LkyklG5%wn>UJovhTNd5+RjQj`l2|nA8EtTx*^=x6^fB5b7Gm{cW!{CNSg(n+_-(F@h253Cn2y=(uF^Yu2eDyvvk_}{wsXZ4 z(Mkza%Vs_7ulKa@vHs4>snWsIoUt?alI3+L6z-Bw-m-rcnzBDBoqF=8I8>`CLQego zb-znJUY$|%#;NnSS7gzR^EK;rPVgx9xZh|{CylENO?j#Q|Vg~YA%Q5EGiG8i# zO)^_tYE#_b$!QGkxV@Ixvf2Z07$)JPmkg=_*^G>GM?9C0Z+~-lZ3LF_Ozs}e zWMaz$hhHv7Dg&!UC~g1%fq+0pKT7_}I>o-1@ngf5S3VunwYc@Gqi1h*b7d{v=7l(l zd1BRc*I6+GEPx4KMQyRWAC%#%?=jE&KPanRVPR2W>2oMMCGP1cyY}AN-({)3QA_JM ztS%i^od;3bxbNiEw)H-Z@!UQ#(S8nmJ<>dJsa#!anue=A?xNSz&3Sy0c~|$=Hg|VY z%^2*4aGMGnZy%W9F>4K%)Wyo2VJuXoXvJu`n@ZkF`+djIXZ2M) zY+-jdhfqrH?X;4+^|jgV+Rwy@{3{fSkVJId3eMg(Wpd(J))?(0KR1?Uji$7P6=Me* z!FEtVUZi|g(zGoHK=Fjy9QysT>RM&Z&YuPCrqEJI?u<8*NiOql(4+kE#OxK7yuNTe zcT?&WK_G$jufvbpqs0CZ_c zoM0Y)qSU@9NAVlLUL5cxkAx%98$p*wTkTyYhD|<4(e&GhL@xwddYBU8;e#YQnSMZ^ zp8o)@yrV4oqNh@Dr3yOxtv4H|?%i+mZ_N40X1RoMF_k#U^F7;XS$B)y%WEH`pR(28 z!nu5D;GIubzSJ92l1~*%-YmD*ZlUl9`)#%D?aiLApm?9dZZ0QiBezJ}JwtoS%2Y)l zidOo=!McUMtMLvm7}-6(lW`84CxtY%Ix*6$uA}iACGUuJO&dtNhT*(PsznSM6k=DB z-6W1fJc&FJBvSrV{>^{1Mvvf~I!}h4KJc7ZULAc?RJyj*-okc$DP^}eGZ^A@k*A0% zw)q$jE;T}AAR#}czX(1dd^hnYg<9vr7T@TW`ovn+kAHb#s6bOvjxX%l?=+|{^hx~I zw~p~GZf-UtP>o0`T&#=@eqV~f*URzP$x4LQ9@22Atl=oM`Cm4h-uB;f^xU@>OBsX0 zDtL%WYvY2toM!EQWbf|vO&?MCgW^xbp9lC?#U29DWAKgEkK(;6P}4O1N?SccOV|83 z+OC9}WzMN;`fc%pQJpf=q$b`46SxTQL^fB%ehm11;cte}>7E$U7~D&!>QP*3`n2%* zb6ndjSXd%-+*a8nR0|xlO6sq)$jmpNbn%CYwN`rz6oL&#>U))KR{HH9N{-4PE+@HY z^!tdSlH%BvSYVb9Jz4T5U=^JC9mMyh`qEh@hFGmGRJ@pGo9vA;tnsThGlInMNCG{e zlFAQ-JXR{L2+^xux<6(r*3-Y~e^b)N(W45S^x@4m?A@eCbpJgGAP_(6GD(T%H6Xhp z4*=-C3$*a;t#zsCN5xv@sPP0EefhPvxogz7wvys8Zt}{$O2&diz0at4)@?JyUJKXs zttV8ld%Mj(O$Ofi@jv!_?G3P!*7a>srGy9?LSlWco_LTeFeu+L%i(_;Uurk;+I^9A zdrezN)+4;|zlraxp}M&6)cSp_7R_xHzVz9q>JrQraSX;CHd3Zn^5dVoC9g{hh;{0_ zwRTqWCYGNZw6l2Vz8#I>f?zCgRDe68rwO;_giu@_8X&Oz=i+!hS>#2BK zR`AZBt!mb~Zo6+c_Pwl@mg}kNF&#`ZNg@_8z>V`J82f*MVS`HW--op8bP~sFq1oL{ zaR}LJX1$Nh5F)&Q`O2WXghL#AwiglyMe>gmYhFJ1tDxE3c!pmYc)lBJFZiZro5V0{ z+FgvZLv3k&cN|w2(aUPGUE3Ln`!hJnk9c3b-(70o+4crIWSJt-Y~xGF;*6Pgx0P=Y zjwwzgVA2i92tO+o&r!B{j-`#22Sr*mqNA;y+P&ob-P-iA=U_0^GWAk*T&K;dR@Ggm z($d;lb+PLn4EUMj--g%sm;MIS?KG`%(phv}OHzPcT3TvbqG;u4gsQQ|?+g)0%vv-@ zS!IS{7>U23ui4k*>|Y&z5%_P$5@}Z&4~VC-j>E;8HQ}}s>014qaV7r%l^wOrpj$kx z=G(K7-c;yHWO4k=*~t~% zI!sopX%~b1Q*{=L->z>kVE> zVQaLTe`WM*wy$3%c2$GLNmr(vr7w2cFPmLj+e7*bGf63U=8>9Z+I-XZob`@W9f866 zFk#SQl(4yhqGA$g+o&6aa-iX|c_=|2Rer{~`|Wc{veBmT73Qa>*y&a_52@Vh*O#`| zx^y~Zae4FIT;I(G&Zew6}-_04fUzy>KX!g%vqsqNHX}QTIC8N5xd+*y*f>(>P zPn)-2y4rlt($CtD_SX0@`!4B1KN@RsYM&6Mw|VprhZ-%_w7w+NxZ1ZGfOgrSXpDB| z?(1lE-1hNYGBQ`-f5oqjKeWf~v15PYjc3D&W8m!Q|261-E~0j0wwv!%bEEW+B~C*c?Dl+Ufd#;@9=#8P}i@vg6abvyq63u-#c zYbzDx@tcLX@n)iCkn8v3v#5T{o7jq0F!zhcucycD_l}= zq}GsHU;IzEmY!$I9su|U;4cYkRvs>f&hN#ZGV&JcPZRj0#d~zpn9xKx(X?Ac zA2qm+KQa{nMOt9(QF&2M8KqoQ~^XVf*P4F%tb8*;&HNgi|>X=9lrB1OcCa{1jG zU@W7{zA^sMT1=j1kE3b{qUgSHg8NdsxsJ}~Pz=FYRpoFJGP%aqDp85t;|#w8d|A~~ z#JWb2b>J<2`s`duBAY!L=4hvt?ZbffFJ08{DvQ$57e+}^9* z+?J4+lXwRT=j28Eq%&bugNDPgXMQbDg+Pzxz_Qwgk8(0cx@i7n4u^38-{n9Qk_v(e z73ZG}bRQdN9uqdGAiDK-GEt|8oaZ{0sQ$~wAomJbV1_TZ z0Bx^JxBku5pqPoKH#w0bTZ?vV6C9ZGul1xh&G3n{GpZkM&B*JdmfLAJUORJr&?>iADQnoo5>MU zP#G@lrgxS#u)cwrSr;4EcG0-O(O8mvlFQ0yVu7A0mMI-KTo2wyDzZw0|=yb zBCxImhE$E?MwGiUN*{X_-dA*ts=y#cXE^Rc_peLUd_5kXkzU(G^Xa;gmRl>|m3+Ay z_l5^)i3_xemo0{DkQG@R4lR;Zf=SU)0>_UdAHM~Gk|Ki{3PQFRWDUb<&lM50+m*gW zxN@k*T6gpF{=P>$b8RM{awmidU<2#0LaoIJaJW>sc6Y!aZhGo05q;tvj7YcQCh zXk)nCpnal8YiXe>k^GX|W6G0oetFzki5TGeI$23FyE<<2QY@=0q-!Y~IRhJG9Pr;R z03#$|(t^h;b^vHw%aP!W?`_YQXjUKqAZ6R3188nXO4cDtxYwl^0|s84Sd&-Q!XBguDdYZJ%&xZ}G( zRm+nh`3}`8mEc}E_+=b#rNySKi+C@h{@B#yxtd6>qr8^h)h-kib^AznTZc&3F~xGq zRP0=R>vv;oHH%xy<*nx~9vMJZSk6nw_K-=8?;zyjKAJ4bn9AlI1K^U3ik- z@*P6<8^5)yL1ig#Drsg^Sc}`3!nV}jP^_}3h;H>TIo>M^TiYtq=e~=ks@C4gM)z7? z>0hbwIgVF6HEBgs{ny!-Z!I=w=HHIICVVxl-`YoQe-t*dv|)8o47WhY30UTq-Y}OK zQcB3624kEkz#iG*e+k=Z{{Rjo*KOYNYu$5A3pJ(YCAVa^yC@;Gw(^1@`%Ge3-)qXq zphoJ>H+7yM@GaK07QGI+cRbPBG?8fHc%fIemH{Qi7Y}o0T`r+8%p)FI5RoK~0dJkW z!%q02;w=grT^mxfw7;`~l-e1gHfC);IVO%vXhbmpz|9fzov78DmDe@Wf0?J?&lCJi@V&Q)ZG1m*ty}2} zHMBk@wY5|~WoCPbBDuPNNU}!CCb&;DuvGg-$sIvV?)W2L)@`+GO*2V~LvcOS5PgK) zBuzB3ZSuoP>=HQ&x{ct4ZR0Ad@~^J^8u*9ce+qbe#ajNSDVtHhx72Q1!#6i5&}uR{ zgjhqTO(@00dkk@~W|7i0a#Jg`ea-&>1pfg2pS%^~J3keE(B3!G^c{5R`qjwM{0XO| zHwmCkZ8Y=VUTZdDRu*_e5VW_DD~Oo{pj&OHXeO+rq+Ab2PUG)+>1a(wkl9xJ`mb{RQ~#`y+fJ{kHU}{xf_X zhR@;m$D1uZ$sbaD;F-NOK1K!yzi5<*WHsK&o#XGHY z!dhOH;*S%4&E6{UK9}()Mc1_t9e9huu;1#j!LN9DtJ?UU*G{pzid$(fQqJmIsHH;f z4AB6ABq5jWU)kH^-mCE!K=5b8{{R8%^4NS+u#{=d4Zgc`X(pGa+Fe}2_nPI6&+jjz zxQ$gLks!Ev80>l4HI$Enr-@Z*Rdwk)m`c)V(zTp9wN9IV4c4|+Qniv#Q|~Kb>B=h) zK36Em~i(wvb-BbjGWeMWiEHsAP>;kquYol6()lDpXdBd%OLaN4$4UKT|LDc8z#booK=^ zrum$%ot3Y;w@#a%DttQdr-#31{{V#=UbW+$2SU>|>w>A`>9l=5ZA$+DOt9CrSmgfB zo^3{Xrn!m*niQ5O*{#x8q!B3@FY^Aq;*D>`-xTb;7QQ6XJWuex-&fK+MdB6ko7rg= zb{02mr%TeU-bNBdsta%4kG>e63H7RcVO?ITb(}<@m!*fQ_2z=2sF9iHL(Y_jK3ogCk{ZqszL6=4G z4yQhaZ)+{ap{ur|YVv9~kZLlKcV`uhdW?|6<;taL_ccqizT8onRROKG6rLL;WcHPMDyg`5P-%#-v#GM{%e*n*S zd3Ryq&j@L6D)?EvKc`CsZgsskO`0Q&*g%2eNM@Ev*}!CYN`8lUU*gy82k~Ot;7`Vx z(?{_C0E|2%;Zx!C)#qun{{R$eo)LQ)w4oP=<)^XIzJR6g6&BN*mbXWg^SuY)`# z@Xim5Umi6701@~n#VO)F2So7(nXGtOWTH3 zjUtNTNUo8Qm`C!gTxE!@PYZ;UY2zFe>&_CIgj{Z+3nrSE+fs9tr?wUveDgQ`3#w^8d?pKXnykqi0ks3ej!bB!;9UMkoABWS-3EIeVTYI>~x zW}D)9G%pZp7nG1w4ExP>U_z`smGPJs!2O8S9yEaZM`>Vxjc3s5~<>_@0yB>N-o!n z?-j24CemAZA9sGsT2y{L_}$_ib{oriw66hpRO!*&+s2bC>pINPz^Jkeg$V*{2;o?K z40@>r$!TSLsnNzSWj+mS_l(s%q>$hD3ArL5CUXDi@ODcA(cLIM{B zGmNBZpMP5T5B>@T@dbVwe#id+8FfayO*Zpf@a?~Vt*$2X0g7KAYF2&~zqs;&3|bv0 zRn)Ey2s>?9f-CgSX$o7a=a<-v?oQV@Kkh5@@0$EI{{VvH_>)27Fsr&d8yu~hWrVmO9k!S#1=O4I%(;sc%x2|Nmwc;*#_q42hhY?oEuZo zTX(x{e2z;wLZ??|_P)qp_$6ka;NJ}V0q~^u-Y4+?0E;gCLF4#7D0r6NN7St6*YwR; z^Wtxwy(R5EU2XL3P|d1cM4D~GTH4-UPa`GsGD7f3!BwNr#(%O$jXVpf{>{2P zek}czyc_WeJPQt^VXF9tz+MUQF0JC*cy$Zg{Z<>_6KdWW@a~~=W2s8-BE$@~=(g6; z5Xh^Q>%V3H0NTs;a`;p5S6lc~@l(cLA(zE>J|pp8iRb%ghV`pAwY}ABZ7ggw>k!l2 z>Kbfu+E`m4YlvZrH*>rmSorbB^GZ}HTAeAm-g1oWq?1a|myzn^zAHDS%2cmLKHc+4 zsM%d4)|yMII4{|*PY3uqU)g8F8rO`x0jKF2&%~IZ@pSh-Bd~_UPlHX0=f#)0w7S&S zzhfF?vsp=`fh4NUIf^CT&+`7Bf5BdSaiZyeu}-(3_-<`CQq(>!c;CSO1k;rFB`6#dmX|{cP)**xVN~vWs=t3-c)Nlg_)%j?yqwAkLG+t{igm6d^$^u ztDQf?8eQ*;wK(lBnWBpCR=gTUj`r@MmK&wK)9qCYL`Z9eA~#Z1xN_w@yDrSC&Vr2U zIZ00X&hOoPzh?Jd?eyDlo-yLFbTIL5O)gZeq*A`!?Ph%m@w4HVgT4v>0Kp^v7kFP* z@TZ5S@xPCs!fR)#>RLXVCcUKUUNzUQ{vv9VSzq4Tnd~p4@a>$o&*i!@1}aHV%6?h+ z?eOna{h2-#e$4(Y*5vTF#Em`$@V%;hIM(b&iE|H&XVC67OPz8r6i$-J@mpM7s({hk zBA1DzfR&SX+kfy<9brBq`1AHn{hT4tZ~Q%P2E7iUb7q`a^K-5$ROMQlkG!ZtF}~NFm70Bbc3RyUa$cO)yv?SrpGKeL zdTx)e>HZ?K(sgMKrJeq*r`u{5x;?(575&zh^IN2?Wp?q#jIze>wYS8FF_kJGDl+f% zO-ot0xQ5eCX`669WJ)Gz;10oE;R@TBpa%pD@CQoqf7`c9@P)7K-|!#dufzWU4ESq8 zyteT5w~Rb@b)adGX;+$zmwK+RsYe#CbEm?F@5$0UGj7PU7C6?A07`S;_?yQ*Ch%0+ z-m&4$S5A&iD@$!o<44pkwAgNSn_EI2=Fdou{m@@(Y?l#;;EmErPF6NoQI9VjN;rRG z2{$R!-9x*RO3k&aO6eVVdXk*0J1A45_NB8{i*HVvrSm>qzVVNQw0{`t{ul958ik-Vtgo))>(nh`C*#AqUbyQyQ98%e2tAL#?f8fEsodoG`3X4EHr9#0L) zEKp6QC`Pk)FLf`SbjV4PKv8_a!DHH@Nj-n|;`p)SUlM-DS2uqXd=YcuT?571&Xc7} z;{6^^4(bxx>RKm=7XA$+=*PtqU1`(YUuYK*JH_^>#6X?H=T-2}fqoJA#Sg%Z1H~Q$ z_($T;8hkv^Eh5qeui=|J4MSB}w7VECFQvKB2CW_B^ChIFNg5kjRh}6F=W7M=aTr`g zVF}^=t$LMPT&^1^tGg%HZ;|NJuZNvSO1h^`5Q~>GlV20w>+k&zj`P5mH}5oaOC86P zBgU()X>eWnh4RPByb;JrZ!Bk!PY2f?Uv=xgAaw@Jbw~82K^Cli#anCB4T(44wUs}C5)r2QTocAk zr8!cqbY}T*xcQgF8m0cBaMzv^O=A01u+-*s^~W2T_nv7thVq#utbsS78cg7uCf>>n8K=xcC#`z z?Tq8t%_+*A9K9$;aD+@C67f=g(vh1?-%e99cJIAH$(D-Z#1rpTv;#9`~@^rI>hnv!yM(X`S@XxA>u?)vOx@s#lLjMX&M zU*3MiXu9WuJS%TEf-LpRA2-6+_Zn+Sai|Eb)fQI>KHoX=?%2o)Mn_=Djk#PJ=KdgQ z7aD*~R>5BDOx2e9TZ@=uYv^nQmflm%Jdtk?Y(<)>WgmJ)$-_N(Ln!?w{~>rW)H$sU`c-CRRpnw*fEn3{7OlUv4Fc`DI=bXV)wgLHJ${267UUTX2` z4WwJz+S#((8)qpUoI#+wRAQ{gRhw&NawJ&F*p~q`98ut?i*_j^0lv z$`ML!t%b{$X&s0V2W*pvA4j)>(#yk|zMo_lOVxBeHW}`2bPcPgc@1Z5u$8h_M!5p& z94Y{=Wrrj=B#)ytD?KveYcqFeGyQ^TWsX>GE-lhIUN?cmExQGhUAGc#b_`Bb{{RRB zk=OJMV@%Yf@iWO~sOaBkm_(X=oyXdwvQ&aKI<@7z=?qLKNZK^=-Zt{tWy46IVTjH# zSnsP-#MQMdKf=0S^}m|2=TysUP>o5#KGvKsc`q*Of5D#(_`kz)+P!8|(zFd1Ooq$ESGwiJm8`oYORH;Uy_Pk))+T8j zw%a%r6gl#jd67Y2%zo>J^K3Q-tW|WYIlnL6DO&RG-iqs6uekH42Q=Ezb?NCbR^f%x?|ZTx67nYVV&URkEI+{3jWe6H-u97qU_$bz51*5x+a9w8-s$>_r#l$ zHy!}zpgsQpJ}Xk%fS)`MAhAIbNB-7(KgJMQuKI-uE#$F!#73`l2^jk@3XJXkDPsv|Zx zV!1Ech}=!^E5!?KATsG!nkKX5$qQVg+goaI!E^*_{{SSS+U7zSf)^PpjIj9Y_Hps{ zqOt1QRmP^8jqiXwQ742XyS%%%HzwNF&O3{1ZC!zpmr)k;3p=TnDAIYXCn!9~9Iw_t z6SYfCf5KiRu+q}v_Upuc9c>=uV#?Pp#ZbA9I3OPl zi>ByRojE;X*LCK8g-)WyVCyLFI7&CY`ZeZ$aCl=y(tJnYFC4A?tKHmbTGxfOTUg>M zt|6A+#I{#1s7i;3O?zk#c%zom)*%h5jH-ud+R-BN-^`6b zVh#e8$r&d*;a-vk&J-E^(pHa3tUb8f?x;oj~_<}15 zF2LpNGN4S(;TU{23!`!5?`DNA47!t(f zQ8y{mw@0^S-_f5fmU2r687O}H4Jk%?E@q=AYxh>uQ?$tRd3y<{{XL*>q7Av$D?5diQI)V+7^qi6%f*Ex0to!)_>-(%cy{wrQ50I9pL)`_*}_heL*>mp zklwP&9b=Qqk^<#`X*Mfhgd~2O-B{gtpH8|-qmIt%TV{zZHp!Uc1Vo#I1B~O8>ZP;E zB%g+UFnl`Jtx#EATCDTSaIxuk*DDkja$LF)BT2+aWHCg|B9sbL#zPO72lqH*84NyS z3V4R4LT)#YR-<>i*ZOD6aZXu?bNcl)%|cO0wRdNCe?6(l98(O@+Z!`N# z#ffEaBSRE3EuD-I1WScLuF@8}X$h59OiA+$5nqj37l$O$mAo%tE@81>vO}xt4IDAX zb$eMB@(at^WY5ar0qSR4OmE#aPHm{It*qsk^vBFuPvc*i`W$X`(Idph z2q98rC`Q(Cu#LDmAW6XF^d9y17sqW;pz!C3q}&3}6dHck2MpS-p>JRlAc8?RM<8>6 zdspMfjX!9K{3$St!&*h&v2t}Aojz-gMpI*MXOD1=;VNT^+b}!`nCL+CITEq zmN?wLbGFpmjfBQeW0pA_^Tle`5Xom_62ln#Wzcp76k(jW-0`Z7*kT+01?gHoEb%$e z{3jl{b842_t<9~d`xL@h#242VaLsWHf;UzsB;2ja1?=57yiq>0sQZ|Ia8AxDpB7dZZIaNR;ATtq?0-u!q(Q)T2_&Owu;VcBLq{kT?j)9g?xfRkxor|@5NK6 z3pq6_>$@%T+uaicrxTesd6u$ofV7H)qoH9NaOCp5R(Xa?i^?(7Xk$`d*3C+sl&`I{ zvR{fv7H6Dc^9-V`Tm*fj6r&j`iKde4XT7wwozIsvPl_4_f#SQ(cSi8WkK&u{8FeT$ zi2P@59qd{~#J0B*Ug{RwWt+zo^X4*;n}?kQu_TEec|6C(+wB$f?I!0_6X}OkdhVodL2ZOR3KvB@B@*i#UkKFe0zT@9ZnRAz8I+MV3izO`6EFi@+|L3x<*?i4!7-;UK4! z<$T2412VAsbsQ`+9I6!P)`ge7CZ){oy!1;)c9P$Ad_E!6bTIU%$tWc3qix@Nb@FG< zw~=T<($4B3dmFqBB+(m4#3laF!C?DKUb$s4hQpYP5}{aaT-VcIviHQZ;U5!eIxUZZ zbnRmAUeuzny4LODy14Nzu9<%##UxhJE>PP;6ouRrLdzL1CN}N)h3%kAsjX+!Ww#K< zk{A{#Xs)dwwXua|0e2Ab_=53=ByO@LM-5*SQV^q&N7_L*7_L`kqk8G-f0^jc zoO2xNbf+F@RH&4%ri<_BtaY9@@Mf*x?OZ3>lJz``Lj=$lS7RQb0D?tW2I*0o&rc-e z4?KtAw=SgL1++gAcpl%xelA4Zu7?!uNZlLXN}o&5Ey0bNd$N1DD@a)w$N-Z zwEJ6$uDnd1BeuG@irztECxq=8qj(ZXorS}`x{9uwT`<@OJa{-PeR^)3>CMxrO7EI3 z(rVVXmznE-t5^&rYPD)h+S94-!9AgOcJFOk*)#J);-`Q-XW^fStKf}OM*jeWYRANW zCSMBax^Ag+9qy;6O{BJoV|%Vfv6fM9aT$%HK|F(FKF0tF8*jxP3({p{9JtoopeD5VJnm?+{T1Sw2&hAiKry1&Ff2Y9t4gT;C;g0(GD=lfpU zPw`FccD6F5#pH6^Z92WwGS8=7yfa1SOk<1%okFy(#xe50i+lmBUFxZzLuaJg{gt%a zNMyCShFuykvPT?GE&PaLnHmW(JkG7SBeaOwDn6=~e=Jo@B`MRE6Aw-)RMzUQ(dTa4 zsOfEWSKZwCY~Lz|9vY$kqojVaLxL2@XE`=`hSAF z58)35YhDf4pzwr|-D|pSj;V8W_m`(u)NZufjSAAo};HjuH5O`b%eKK+6_Wjoh{|OzrMMi-C?k{ zf;I#|Eycq^%oKc)9Pfx<2R!c!T=>hv7rHgJj~tf}US9ZC>r&TlZKhe-7Q*t{$z5&$ zSz>7&JhKMVzDWn~8?E>;<2@6{z5=@NZNHTbdMP-Mthm~1dmZja(v%h|xpXPZVz-=n? z#5!)Nec~BzbukU~*Y-2t&kWvN(b`6Cn$j}v>e5Eaq#Q9@cHN8tRQ@T?E{`^hG+#Q- z;SK))+K$+rZUoRq-)4q3iKMp+JSx&SkyXTst+~(v-ux)=-R+NpZ}sD;TUdW-#c;5^ zHa0>{66)tsx=X!Lb!p>yZyHEiD9E1+8ll>unH_wS#IyK+P}Pk312x5^wXK!Z@?0*U z(_Kq_1QXlOGu-R2USIblRx07wV zYVP(r-w)~E5p~Z1_`}Bbmd$yf_#)@Rx_-X47dC0ArO%DExb!a%T3K1%-o`KPZZ&BH zY_N^$B;O$j39ljW{{W4Ti8cGpH%DVVgc|MMn{%kcwlw>8pDn}_TPRu1?SfA*ZU8iQ z5w=F)qwH@9YRloz*%JF-Xu`jXKWXm+PpGttJgbcl;O~SrUyE1aNp5YTk4r+~hsy9i zLBJ>A@7ZG73ymL0zE~rUJKMcN{o%Kk=H@HQ`)#^R+Rp7kjMmR^x^lFUF)8PX9umNa@C`j!dNb>%Xxs6 zXJ!Z^QIFoS+w$cBIOKKY9w}SI+INLM&8%O_v&nsOw$^dmMlLl?R`z0{EVRowfoq$y zxGvBD2oIXe7-<*3@ivDL^Ms5oUC>NXvn99@$16x6j7PcT+A-X&OEJbxc^AO%3>|99 zPaOD!HSP8Guc%w-FLxAAK8>V9Dx`K=d^QD!y@ji;th9NmPXAHtiOb zmhx|FcJn>_HU^~{@rqoLZ<#l;QMSHsuc`G;vwiU+<9~uQFAIED@fNFN@aspjf;}hU zm6oMEdUUDhHN+G6#^%c98^ky8$0|c_YRuMFYZ^xnoa4@Fo(<6aEAYYXo50#0ouu7a zT=|M^H0x`7dxa}3H&zncz>03IrMH$;lX=c%-e1gBWu8r1O)F1%H4DKGootMu6$8Er zERn?N zPLDgsux@2&@^CY|(5CTKs?mi?(v+KwAsI=uo6;$}+RH_E(Co+KFc>&WrBxK?d&x&x zKCLTm{{W_aG4XHXE}!9Mxt8=pHn%YiW1v_f3tL8gpbLnR^SmTrvJK2g4KYwehx5DQ z7sr1d_>TS+xzd_j8Si7V8gL5*l)!mX+^w=fc$=Cy5v0tqyiKqyh0Y56?W%aUUh!{$ zFQDLfJ-<-MkyX+Fy>mQR2NTP0(-k zQK^ZTTh4B-+8sU?1YTXwA_g#9ED}rRkTO9lhGzl3mjjV1(8kxr;%QQNK4{7_Zpu+l zWSYL)r21&jjH|@8aTVc52SR*}+Ua~s_Pch|@3TIP@z#lRt!gb~mv#p0P?PO8cDL7% z#tp~Wh!)br<~)xmj~HcK2Mdk?Bh2*865HW6t!3gL8r$7!_k~T}mXD=Mrrj=*Xx<4m zT|zl_$CM&OR99xmEERb_Wa!@pY$3U}zSHgO?sbGg74E4rNb+1u8jrP=OSzs%BX>sv zJ;W?*6bx{4ej$7d@i&bk`y>tmaMJH+E@5myGq@DCc5-9#N}ApRb!09&~+<0IVRscRn_d)mba;! z@So#HhCU%{*8Ue3_nKy@s`;?m!Fd6?M%!-k$RM8CN~YK%ayRVBKrx&O`{%-*9MOC+ zXs;Sib*RkZ804SI-6U?GGOW8tlFG4_QTK@;l74ev9DEn}0ik>^zK2@7)K077fRbB{ zP==3q};}~LJPIGyMiAsSqxGklF%~=OpVl{ zr_NU^{6pphf8rLLNm;i9wzVM=^l&8pE>yV zMb|9vC)F?Ffay2)Gd7#{ck<A0sk$3HhYudy|+4qIw4Nfp|e>?c+GJ>w%7mPg_{YsKIO+*f3rZ^&L7 zhWY!(J_x$gJo}x#eX;WPM<(@-+>%I)skf*cIwfo=XV#@`d?3r|n)$}s0!HVSrI|z|3l@K9N1C`oB#t8spvk-dX zw4Mp>u3^OTq#Avl!`$B9N@WH^D@pccxIo#AyP~K;!EjZ6Q(5v`wY<_R+8~AGDLvF| z>l_>R1%lPz7?7MC4xKAbOFK)u3*9=}b%*TevfHVVL{BbaVvQrI49ffWF>VTNRQcOI zwPh6I;_lnu$no&esZNrN?)i1)+VAkt^Zx)YYl)^?V;#ep9wBZp&p4DjG+74>r+yHB z4lpt@YRV|KF7r!rvtF#_qW}PqE@75Ah#-Iy?t%t)^*QEy8ylNT_@)uZO&2K9djj4yN(mXt#?LR|x4T8emlxS z0CyYik|o*+U=v}$-U-OgSOG;=(gP4OqZvq4bFd?@^ByM|MK0y0Y`4tAZzGH@ZM#0c zf~iKGesxj`ag)_){d~_f*FG5Q7t4(z?%F>z!jQ{%GewpwBSvndxF#k(Y+-(8!wFCC z2J8=p3UWG)+kqH4x{rdqJFQyJCZVRg%#cW8jvKYIo_mBx z+R(i4%>u^k!_1CY$}oNkE*iZ|w==JUn&qhAlTD?6e$MG$>FuSDlFYbbobN0YY}>n1 zdtdL;?EI(GS|}ir%6&K+<(&Cbv&u{ZAQeOh4=HtAu~IY8pOXk87&wdTeN2Mci^qg7w%cBH71si z)cvpVPwa!?t6v28$5HrmHP3{tyiufIX&yWA7MR~^)MK{@Qs-9DhMdbSxxp$Gh4a6 zg(1^Y>rD_tGezet&u}hYB(_$9SlV_8^4M(4mzh(s~npY^fvufd)ZyZC`{X4Ouy;>dLG80fb4T7930 zA-B}Lh{QUjut_w?TH+Fs+ggiQ?nR?{aT`V+WiO9k54>rr>H6h{fpqt}mA0d6XQbM0 zmd;CZVQteub3^FREc0|Hh%Y<@ytI2ybI!}J`em$@b%BbeRJW= zUt{nejXW+jPYUU`GBeCAwf3^mr|JG9_>ZVsCBCEKIX=R=b-tZ_F^EHJqnrC75ijJV z?-qVp71jMaU(&p9tN4<^PLtwo7sf3-S~T7?@b#Qp=Z2&3)X~QswzsKRTNOHuv{KyI z$r7XtWN6$r-GU|d{{Y%I!P-ZNf@wY$)BIDYYW^hE(*FQa)wB&2F5=X*nKbC7miF>p zRKsnn$qLD4E!sPlNKNp2q;wIYS@5(g;k^?>@CSpZlSS}Gn`D}Ah_w$DU&l9zE__FD zW0vMSff5F?b&5+kULukS!zr_9VG%8MV{z0|hAN&NVX@eRp;6B5Mk#zymZ>Q{?HyyH zN$UK(CSQn6VewV|vw^}k=&EU6q?^(;66Mw!>Ycfr{o{k2czfYrhxE?}>hI!D49DUf zHa$Yu;va@CEpN;oC0V4nvioKAqC)rjwcIgj>Rw|Uv80|;-ATGh;%CG0@gCpDI{yI0 zKZ+}$_?ua_*L*ebddpGOw2uvHx^|zWL8Dk+>NgN+UM0~*uD5aL>Q<|BGXXWphIusk zuMr7vp1vsfcj7OEb)6T*@amD?YWk0h?zP<);VMmasp)eyu%5;*5!uXU{{Tn5j%18m zK0xTv-ppocr=n|Xh)-D*0N zwk>g{YfxO?NeO3)Rk)rV?C{*qjy+618jTDzDb$D7aM+m2RVzlXvzIlmc(j{sK3-LR zM!A*s(}m)yRj*Qf-p3V(ZZzpSYH23Y)k{sA=8{eJx#pVuz9aER#Jwxww}~LT@TY`s zHLYV=)((wlX7~C=im@f-{q#{m7n64+$kNAaE5u`gubE4^L`3~k_(k!H_D<70FR1uy z#+tRxhwz`lIy_buz61Mox<<3&%e`jiO%UpK*V1ZHd3sKptK7jf>1}oPsjly$xkWJ~ zuOGud5^bXRL8C$8H=gGI0L7jx(|kLt>l)6t;wwK8>zW0MXtG;H;EAJ-7{-YXovmE! z_a7q6vaYFbE6U8RyW+1A+R3kLc5q$YOf<_a5N#Ig5i5GLs=ei`3vN{0H`vvqM3BU+ zRz*Z?GWm1H!dSdLHw5rlc>Bq=+`6mpe?9(YSd3Lnwsk2}T=nXE(ss3+meE}jUY!r4 zJ|cX7_^JCWc(&`rUjjZk>(Y21#oD00(8OLMfA~l=@dRJ!_ScZwPLOzp)YwN5Yo>~2 zK4$5HTu5GShgAOng24XSm+)zt7PsP7)U9r9R{kZH!uHj*tvX9q^6q4xN4&N-*30Eh zBOTu>#NK8$x>x5<#Jxt+7_`kdP`0-xPShlyNz^W2x4yNy(Bqa}kj^1M^Dvu#nt=ky zXTfapyswOYC+RJ!+aHE!Q}E`9mIgR6!DRDH zZPCdy$nr5Cb(K-ev7D2mhN(s_E!|4+_jKseO}$cj+V@+ZKU*@)Axfmau?IBui{8!O zOI_`w^FO2C*`NLk&e|7-w0{SDYxrR%y82w(WASH({8c*YS8?hZjFLawY`jMl(S^2# z^5#0aA#NhIA!1rwrz1=g=}~gVV*QR8wXB*;uPRMhr2c1a3pmHun#19+ zj#|*XpVaUC5&rufyIA@sxUZhJUm4 z88z((M%N~XQ`hfpbX_`KGUECvL>Dp3sI0NHZ5aj)%0U9ZpYPd!z&a;_^q&M>d`|E@ znxtA~%#-+oM$_*v^vlgs+9FU}zM~$d(!n#xs9EBc724#)w&9R3mRa2VebT&Xqi8Z- zc*9-rMYXl&wXEs7gqLx6Ggy%7XqtQw$EjRBu)4K^dF8Z{K_vcVvVifKnnd|*E_;QQ zJWUu=hb|H`<-J6ltlp~evr=zGd$-x2T~i5(g2T$JC45UswHxwiz9qh%hv?6NeiZ(~ z{{R`R{5|nw;T5&-!e12WIlHvJ(%HN&_BXm+i`(DaN#TDITiB9p?HpJndHF`QGpp$QF>u&A64sTER#&j>* zH^%-I__yG12K+$P{s{R=toZK3S=DcJEWA6Xcoyo`?q3M$IzFG_?+)q7JKM-0 z5>I;#<;=FiC5^t_Aq~3>xqkruBzQmIF1`Cm_{+r}DZAA^JbYd7-m&7Z4Qa7xnvC{x zYg&c>0ExAg(brV6S>mydPZHm05P6qU!4$t{4oWJ%-Jkd;pMa z%NG6THu=)o==!S}RjEB)YJAg;^SPZQsj?+7HAGEfk;uN@j zN5c9_>zan1(->@i*w*R^m01Z^xQ{#F+^YMCQn@PF+g5+zo_aOihr(ZpzZC9KUsdtH zi?u0dyqaL1bQ)E=pOqO4G5*ulH6q76oweZKwLguutq#Upy(02c47!EAmzis&SlnB~ zI1-qoy1djPom?TDNN0%#vCc58;-x9Q+4E#Ei!k!wB#awqhl=SN8nK#QIX3xwSk+~Sg2g-RkaRKR8W>5nhG%5H?nqa&Frk+r#=p(F%eZN zL8vsFZ+4aRveRD2yUjL*;hi+uTH9J$jY{eZyT-JNJ6lVeud&(M`K`Jn;6-HwKr(!Y zu^>KFK#wNZ?yvE4cW9~}+2WZlHb&|D$sQQsib zU{XslVUkHtpKy|&H094ZH+%m8TK*@g8s6DWL2^UvrKZc|VfdfM-w-@eqv;wCh&Aio zLrU1OLT9wSrX{13s*ViZP!Olwyi~GMQwtT;}%#oEzBvvaT^_l}DZFBahQZqcW zp^XYW<%ZBQTPziZ<~d`Nz{p~|T;)@iQ + + + +MTSS 2020 Alpha + + + + + + + +
+ +
+ your image +
+
+ + + + +
+
+
+ + + + + + + + + + + + + + + + + + +
Offset X0
Offset Y0
Altitude0
Heading0
+ +
+
+
+
+ + + diff --git a/scripts/gcs/Desktop/website/indexold.html b/scripts/gcs/Desktop/website/indexold.html new file mode 100644 index 00000000..96ed4440 --- /dev/null +++ b/scripts/gcs/Desktop/website/indexold.html @@ -0,0 +1,375 @@ + + + + + + + Apache2 Ubuntu Default Page: It works + + + +
+
+
+ + + diff --git a/scripts/gcs/Desktop/website/indexold.php b/scripts/gcs/Desktop/website/indexold.php new file mode 100644 index 00000000..cf608608 --- /dev/null +++ b/scripts/gcs/Desktop/website/indexold.php @@ -0,0 +1,3 @@ + diff --git a/scripts/gcs/Desktop/website/main.css b/scripts/gcs/Desktop/website/main.css new file mode 100644 index 00000000..b90fac7b --- /dev/null +++ b/scripts/gcs/Desktop/website/main.css @@ -0,0 +1,86 @@ +@charset "UTF-8"; +@import url('https://fonts.googleapis.com/css?family=Montserrat|Open+Sans&display=swap'); +@import url(https://fontlibrary.org/face/segment7); +/* CSS Document */ +body{ + margin: 0px; + align-content: center; + font-family: 'Montserrat', sans-serif; +} +#navbar { + margin-bottom: 10px; + padding: 1%; + background-color: #3E5488; + color: #EDEDED; + font-family: 'Montserrat', sans-serif; +} +/*#crop_app_area{ + +}*/ +#image_container{ + height: 270px; +} +.app-container{ + display: inline-block; + background-color: #39845A; + padding: 10px; + margin-bottom: 10px; + margin-left: 1.5%; + margin-right: 1.5%; + float: left; +} +.resultimage{ + margin: 5px; + display: inline-block; + float: left; + border-style: solid; + border: thick; + border-color: #3E5488; +} +#cropzone{ + width: 65%; + min-height: 360px; + max-height: 720px; +} +#stats{ + width: 25%; + min-height: 360px; +} +#cropped_result{ + width: 94%; +} +button{ + display: inline-block; + background-color: #3E5488; + color: white; + border: none; + padding: 7px; + box-shadow: 3px 3px grey; + +} +button:hover{ + background-color: #283657; +} +button:active{ + background-color: #283657; + box-shadow: 0 0 #666; + transform: translateY(3px); +} +.stat{ + padding-top: 5px; + padding-left: 5px; + width: 100px; + height: 30px; + background-color: #39845A; + text-align: center; + color: #dddddd; + display: table; + border-style: solid; + border-color: #3E5488; +} +.statnumber{ + display: table-cell; + vertical-align: middle; + color: #dddddd; + padding: 8px; +} diff --git a/scripts/gcs/Desktop/website/main.js b/scripts/gcs/Desktop/website/main.js new file mode 100644 index 00000000..29180edc --- /dev/null +++ b/scripts/gcs/Desktop/website/main.js @@ -0,0 +1 @@ +// JavaScript Document \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/CHANGELOG.md b/scripts/gcs/Desktop/website/node_modules/cropperjs/CHANGELOG.md new file mode 100644 index 00000000..a9dd96ca --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/CHANGELOG.md @@ -0,0 +1,308 @@ +# Changelog + +## 1.5.5 (Aug 3, 2019) + +- Clone the image's `crossOrigin` attribute always even though the `checkCrossOrigin` is set to `false` (#535). +- Improve browser environment detecting (#554). + +## 1.5.4 (Jul 20, 2019) + +- Avoid removing the events of the original image. +- Avoid requesting any Data URLs by XMLHttpRequest for better performance (#526). +- Add an `alt` attribute to all internal images for better accessibility (#548). +- Transform `enum`s to `type`s from the definition files for TypeScript (#550). + +## 1.5.3 (Jul 10, 2019) + +- Compute the size of the image for all browsers that use WebKit as the layout engine in iOS devices, such as Safari and in-app browsers (#544). + +## 1.5.2 (Jun 30, 2019) + +- Alway add a timestamp to the URL of a cross-origin image (#519). + +## 1.5.1 (Mar 10, 2019) + +- Revert the minimum container width from `300` to `200`. +- Revert the minimum container height from `150` to `100`. + +## 1.5.0 (Mar 10, 2019) + +- Add `passive: false` and `capture: true` to wheel event for better performance. +- Improve touch event binding. +- Ignore the pointer events are not triggered by the primary button. +- Fix typed array spreading error in IE or Safari 9. +- Fix the RegExp for the Safari browser detecting to ignore Chrome (#478). + +## 1.4.3 (Oct 24, 2018) + +- Ignore range error when the image does not have correct Exif information + +## 1.4.2 (Oct 15, 2018) + +- Read orientation only when it is a JPEG image. +- Improve cropper instance storage to avoid side effect (#394). +- Fix parameter error of `Object.assign` in iOS devices (#432). +- Improve typed array loop for better performance (#435). + +## 1.4.1 (Jul 15, 2018) + +- Not to restrict the canvas position when it is not cropped. +- Fix wrong crop box size in view mode 1 and 2 (#381). + +## 1.4.0 (Jun 1, 2018) + +- Added 1 new option: `initialAspectRatio`. +- Improve the smoothness of crop box resizing. + +## 1.3.6 (May 20, 2018) + +- Check orientation only when both the `rotatable` and `scalable` options are set to `true`. +- In case rounding off leads to extra 1px in right or bottom border we should round the top-left corner and the dimension (#343). + +## 1.3.5 (Apr 15, 2018) + +- Ensure the cloned image loads completely before trigger the `ready` event to avoid side effect (#303). +- Add namespace to data attribute names (from `data-*` to `data-cropper-*`) to avoid side effect (#319). + +## 1.3.4 (Mar 31, 2018) + +- Compute destination sizes with image's aspect ratio when draw image (#326). + +## 1.3.3 (Mar 18, 2018) + +- Improve event binding. +- Add missing `pivot` definition to `zoomTo` method (#320) + +## 1.3.2 (Mar 3, 2018) + +- Fix the bug of cropping image with orientation (#313). + +## 1.3.1 (Feb 28, 2018) + +- Add missing `width` and `height` definitions (#302). +- Fix incorrect behavior of `viewMode: 2` (#304). +- Fix the bug of multiple starts (#306). +- Remove `browser` field from the `package.json` file (#307). + +## 1.3.0 (Feb 25, 2018) + +- Add type definition files for TypeScript. +- Enhance the `preview` option to support `Array` and `NodeList`. +- Fix incorrect cropped canvas sizes when max/min sizes provided. + +## 1.2.2 (Jan 3, 2018) + +- Fix incorrect image natural sizes in iOS Safari (#279). + +## 1.2.1 (Dec 17, 2017) + +- Add `style` field to `package.json`. +- Fix size error when load SVG image (#256). + +## 1.2.0 (Dec 17, 2017) + +- Allow to set the pivot of zoom (#144). +- Fixed a bug of rotation (#260). + +## 1.1.3 (Oct 21, 2017) + +- Fixed a bug of render when disable one of `rotatable` and `scalable` options (#241). + +## 1.1.2 (Oct 18, 2017) + +- Normalize related decimal numbers when crop an image with canvas. + +## 1.1.1 (Oct 11, 2017) + +- Supports to load in node environment (#237). +- Fixed a bug of event binding (#238). + +## 1.1.0 (Oct 8, 2017) + +- Added 4 new options to `getCroppedCanvas` method: `minWidth`, `minHeight`, `maxWidth` and `maxHeight`. +- Enhanced image scaling: the `scaleX` and `scaleY` values should only be `1` or `-1` before, but now they can be any numbers. +- Improved crop box resizing behavior in the northeast, northwest, southeast and southwest directions. (#222). + +## 1.0.0 (Sep 3, 2017) + +- Fixed a bug of zoom out after cleared the crop box in view mode 1, 2 and 3 (#209). +- Improve crop box resizing behavior in the east, west, south and north directions (#222). + +## 1.0.0-rc.3 (Jul 7, 2017) + +- Added two new options (`imageSmoothingEnabled` and `imageSmoothingQuality`) to `getCroppedCanvas` method. +- Fixed a bug of RegExp using (#195 by @arusakov). + +## 1.0.0-rc.2 (May 30, 2017) + +- Fixed the issue of canvas box initialization (#179). + +## 1.0.0-rc.1 (Apr 30, 2017) + +- Change the `main` field value from `dist/cropper.js` (UMD) to `dist/cropper.common.js` (CommonJS). +- Added `module` and `browser` fields to `package.json`. + +## 1.0.0-rc (Mar 25, 2017) + +- Fixed the bug of touch zoom (#161). +- Fixed the bug of window resize (#162). +- Improve the `toggleDragModeOnDblclick` option (only available when the `dragMode` option is set to `crop` or `move`) + +## 1.0.0-beta.2 (Feb 25, 2017) + +- Fixed the bug of rotate square image lead image shrink (#155). +- Improved RegExps for DataURL processing (#156). + +## 1.0.0-beta.1 (Jan 21, 2017) + +- Use CSS3 2D Transforms instead of `left` and `top` for better performance (#138). +- Set `withCredentials` attribute when read the image data by XMLHttpRequest (#141). + +## 1.0.0-beta (Jan 1, 2017) + +- Supports to set an element for preview (#113). +- Improved event handler for Pointer Events (#127). + +## 1.0.0-alpha (Dec 4, 2016) + +- Built JavaScript with Rollup. +- Build CSS with PostCSS. +- Fixed a bug of auto crop when replace the image (#83). + +## 0.8.1 (Sep 3, 2016) + +- Fixed the bug of cropping (#80). +- Fixed the bug of calling `ready` event twice when call `replace` method (#81). +- Fixed the bug of `getCroppedCanvas` when set `scalable` or `rotatable` to `false` (#82). + +## 0.8.0 (Aug 18, 2016) + +- Removed `build` event. +- Renamed `built` event to `ready`. +- Fixed the error of orientation transform. +- Ported code to ECMAScript 6. + +## 0.7.2 (Jun 8, 2016) + +- Fixed a bug of `data-*` attributes setting and getting. +- Fixed the calling order of `scale` and `rotate`. + +## 0.7.1 (May 28, 2016) + +- Improved the rotate and scale transform behavior. +- Improved the `getCroppedCanvas` method (returns the whole canvas if it is not cropped). +- Check cross origin setting when load image by XMLHTTPRequest. + +## 0.7.0 (Mar 20, 2016) + +- Supports 7 custom events: `build`, `built`, `cropstart`, `cropmove`, `cropend`, `crop` and `zoom`. +- The original callback options become shortcuts of these events now. +- IE8 is no longer supported after added these custom events. + +## 0.6.0 (Feb 22, 2016) + +- Added a new parameter to the `replace` method for applying filters. +- Improved the image initializing for Safari. +- Fixed incorrect size limitation of the crop box (#30). +- Fixed incorrect cropped canvas when scaleX or scaleY great than 1. + +## 0.5.6 (Jan 18, 2016) + +- Fixed crossOriginUrl undefined error when exists the `crossOrigin` property. +- Fixed the issue in the "destroy" method (#24). +- Optimized tests. + +## 0.5.5 (Jan 1, 2016) + +- Fixed a dimension bug in the "getCroppedCanvas" method. +- Added an example for cropping round image. + +## 0.5.4 (Dec 28, 2015) + +- Supports to zoom from event triggering point. + +## 0.5.3 (Dec 24, 2015) + +- Limit wheel speed to prevent zoom too fast (#21) +- Improve the `setCropBoxData` method (#22) + +## 0.5.2 (Dec 15, 2015) + +- Fix event handlers + +## 0.5.1 (Dec 12, 2015) + +- Handle Data URL (avoid to use XMLHttpRequest to open a Data URL) +- Handle ajax error when load ArrayBuffer +- Not to transform the image to base64 when Orientation equals to `1` +- Fix some typos + +## 0.5.0 (Dec 5, 2015) + +- Added a new option: `checkOrientation` +- Added a timestamp to the url of preview image + +## 0.4.0 (Dec 2, 2015) + +- Added a new option: `restore` +- Fixed #12: Added vendor prefixes to CSS `transform` + +## 0.3.3 (Nov 30, 2015) + +- Floor the numerical parameters for `CanvasRenderingContext2D.drawImage` + +## 0.3.2 (Nov 18, 2015) + +- Fixed #10: improve new crop box creating + +## 0.3.1 (Nov 11, 2015) + +- Fixed #7: reset the `crossOrigin` when call the `replace` method + +## 0.3.0 (Oct 28, 2015) + +- Supports four view modes +- Supports three drag modes +- Makes the crop box's borders and handlers visible when overflow +- Added some examples +- Fixed some issues + +### Options + +- Added `viewMode` +- Added `dragMode` +- Renamed `touchDragZoom` to `zoomOnTouch` +- Renamed `mouseWheelZoom` to `zoomOnWheel` +- Renamed `doubleClickToggle` to `toggleDragModeOnDblclick` +- Renamed `checkImageOrigin` to `checkCrossOrigin` +- Removed `strict` (supported by `viewMode: 1`) +- Removed `dragCrop` (supported by `dragMode: 'crop'`) + +## 0.2.1 (Oct 28, 2015) + +- Fix the error jQuery reference on the `setCanvasData` method +- Fix typo on the `destroy` method + +## 0.2.0 (Oct 25, 2015) + +- Added 5 new methods: `moveTo`, `zoomTo`, `rotateTo`, `scaleX` and `scaleY` +- Improved 4 methods: `move`, `zoom`, `rotate` and `getCanvasData` +- Improved cropping + +## 0.1.1 (Oct 10, 2015) + +- Improved canvas limitation +- Improved crop box limitation +- Improved preview for cross origin image + +## 0.1.0 (Sep 25, 2015) + +- Supports touch (mobile) +- Supports zoom +- Supports rotation +- Supports scale (flip) +- Supports canvas +- Supports multiple croppers +- Cross-browser support +- Supports 37 options: `aspectRatio`, `data`, `preview`, `strict`, `responsive`, `checkImageOrigin`, `modal`, `guides`, `center`, `highlight`, `background`, `autoCrop`, `autoCropArea`, `dragCrop`, `movable`, `rotatable`, `scalable`, `zoomable`, `mouseWheelZoom`, `wheelZoomRatio`, `touchDragZoom`, `cropBoxMovable`, `cropBoxResizable`, `doubleClickToggle`, `minCanvasWidth`, `minCanvasHeight`, `minCropBoxWidth`, `minCropBoxHeight`, `minContainerWidth`, `minContainerHeight`, `build`, `built`, `cropstart`, `cropmove`, `cropend`, `crop`, `zoom`. +- Support 22 methods: `crop`, `reset`, `clear`, `replace`, `enable`, `disable`, `destroy`, `move`, `zoom`, `rotate`, `scale`, `getData`, `setData`, `getContainerData`, `getImageData`, `getCanvasData`, `setCanvasData`, `getCropBoxData`, `setCropBoxData`, `getCroppedCanvas`, `setAspectRatio`, `setDragMode`. diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/LICENSE b/scripts/gcs/Desktop/website/node_modules/cropperjs/LICENSE new file mode 100644 index 00000000..4ca99acc --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright 2015-present Chen Fengyuan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/README.md b/scripts/gcs/Desktop/website/node_modules/cropperjs/README.md new file mode 100644 index 00000000..d7850c29 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/README.md @@ -0,0 +1,1060 @@ +# Cropper.js + +[![Build Status](https://img.shields.io/travis/fengyuanchen/cropperjs.svg)](https://travis-ci.org/fengyuanchen/cropperjs) [![Downloads](https://img.shields.io/npm/dm/cropperjs.svg)](https://www.npmjs.com/package/cropperjs) [![Version](https://img.shields.io/npm/v/cropperjs.svg)](https://www.npmjs.com/package/cropperjs) + +> JavaScript image cropper. + +- [Website](https://fengyuanchen.github.io/cropperjs) +- [Photo Editor](https://fengyuanchen.github.io/photo-editor) - An advanced example of Cropper.js. +- [jquery-cropper](https://github.com/fengyuanchen/jquery-cropper) - A jQuery plugin wrapper for Cropper.js. + +## Table of contents + +- [Features](#features) +- [Main](#main) +- [Getting started](#getting-started) +- [Options](#options) +- [Methods](#methods) +- [Events](#events) +- [No conflict](#no-conflict) +- [Browser support](#browser-support) +- [Contributing](#contributing) +- [Versioning](#versioning) +- [License](#license) + +## Features + +- Supports 39 [options](#options) +- Supports 27 [methods](#methods) +- Supports 6 [events](#events) +- Supports touch (mobile) +- Supports zooming +- Supports rotating +- Supports scaling (flipping) +- Supports multiple croppers +- Supports to crop on a canvas +- Supports to crop an image in the browser-side by canvas +- Supports to translate Exif Orientation information +- Cross-browser support + +## Main + +```text +dist/ +├── cropper.css +├── cropper.min.css (compressed) +├── cropper.js (UMD) +├── cropper.min.js (UMD, compressed) +├── cropper.common.js (CommonJS, default) +└── cropper.esm.js (ES Module) +``` + +## Getting started + +### Installation + +```shell +npm install cropperjs +``` + +In browser: + +```html + + +``` + +The [cdnjs](https://github.com/cdnjs/cdnjs) provides CDN support for Cropper.js's CSS and JavaScript. You can find the links [here](https://cdnjs.com/libraries/cropperjs). + +### Usage + +#### Syntax + +```js +new Cropper(element[, options]) +``` + +- **element** + - Type: `HTMLImageElement` or `HTMLCanvasElement` + - The target image or canvas element for cropping. + +- **options** (optional) + - Type: `Object` + - The options for cropping. Check out the available [options](#options). + +#### Example + +```html + +
+ +
+``` + +```css +/* Limit image width to avoid overflow the container */ +img { + max-width: 100%; /* This rule is very important, please do not ignore this! */ +} +``` + +```js +// import 'cropperjs/dist/cropper.css'; +import Cropper from 'cropperjs'; + +const image = document.getElementById('image'); +const cropper = new Cropper(image, { + aspectRatio: 16 / 9, + crop(event) { + console.log(event.detail.x); + console.log(event.detail.y); + console.log(event.detail.width); + console.log(event.detail.height); + console.log(event.detail.rotate); + console.log(event.detail.scaleX); + console.log(event.detail.scaleY); + }, +}); +``` + +#### FAQ + +How to crop a new area after zoom in or zoom out? + +> Just double click your mouse to enter crop mode. + +How to move the image after cropping an area? + +> Just double click your mouse to enter move mode. + +How to fix aspect ratio in free ratio mode? + +> Just hold the `shift` key when you resize the crop box. + +How to crop a square area in free ratio mode? + +> Just hold the `shift` key when you crop on the image. + +#### Notes + +- The size of the cropper inherits from the size of the image's parent element (wrapper), so be sure to wrap the image with a **visible block element**. + > If you are using cropper in a modal, you should initialize the cropper after the modal is shown completely. Otherwise, you will not get the correct cropper. + +- The outputted cropped data is based on the original image size, so you can use them to crop the image directly. + +- If you try to start cropper on a cross-origin image, please make sure that your browser supports HTML5 [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes), and your image server supports the `Access-Control-Allow-Origin` option (see the [HTTP access control (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)). + +#### Known issues + +- [Known iOS resource limits](https://developer.apple.com/library/mac/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html): As iOS devices limit memory, the browser may crash when you are cropping a large image (iPhone camera resolution). To avoid this, you may resize the image first (preferably below 1024 pixels) before starting a cropper. + +- Known image size increase: When exporting the cropped image on browser-side with the `HTMLCanvasElement.toDataURL` method, the size of the exported image may be greater than the original image's. This is because the type of the exported image is not the same as the original image's. So just pass the type the original image's as the first parameter to `toDataURL` to fix this. For example, if the original type is JPEG, then use `cropper.getCroppedCanvas().toDataURL('image/jpeg')` to export image. + +[⬆ back to top](#table-of-contents) + +## Options + +You may set cropper options with `new Cropper(image, options)`. +If you want to change the global default options, You may use `Cropper.setDefaults(options)`. + +### viewMode + +- Type: `Number` +- Default: `0` +- Options: + - `0`: no restrictions + - `1`: restrict the crop box to not exceed the size of the canvas. + - `2`: restrict the minimum canvas size to fit within the container. If the proportions of the canvas and the container differ, the minimum canvas will be surrounded by extra space in one of the dimensions. + - `3`: restrict the minimum canvas size to fill fit the container. If the proportions of the canvas and the container are different, the container will not be able to fit the whole canvas in one of the dimensions. + +Define the view mode of the cropper. If you set `viewMode` to `0`, the crop box can extend outside the canvas, while a value of `1`, `2` or `3` will restrict the crop box to the size of the canvas. A `viewMode` of `2` or `3` will additionally restrict the canvas to the container. Note that if the proportions of the canvas and the container are the same, there is no difference between `2` and `3`. + +### dragMode + +- Type: `String` +- Default: `'crop'` +- Options: + - `'crop'`: create a new crop box + - `'move'`: move the canvas + - `'none'`: do nothing + +Define the dragging mode of the cropper. + +### initialAspectRatio + +- Type: `Number` +- Default: `NaN` + +Define the initial aspect ratio of the crop box. By default, it is the same as the aspect ratio of the canvas (image wrapper). + +> Only available when the `aspectRatio` option is set to `NaN`. + +### aspectRatio + +- Type: `Number` +- Default: `NaN` + +Define the fixed aspect ratio of the crop box. By default, the crop box is free ratio. + +### data + +- Type: `Object` +- Default: `null` + +The previous cropped data if you had stored, will be passed to `setData` method automatically when initialized. Only available when the `autoCrop` option is set to `true`. + +### preview + +- Type: `Element`, `Array` (elements), `NodeList` or `String` (selector) +- Default: `''` +- An element or an array of elements or a node list object or a valid selector for [Document.querySelectorAll](https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll) + +Add extra elements (containers) for preview. + +**Notes:** + +- The maximum width is the initial width of the preview container. +- The maximum height is the initial height of the preview container. +- If you set an `aspectRatio` option, be sure to set the same aspect ratio to the preview container. +- If the preview is not getting properly displayed, set `overflow: hidden` style to the preview container. + +### responsive + +- Type: `Boolean` +- Default: `true` + +Re-render the cropper when resizing the window. + +### restore + +- Type: `Boolean` +- Default: `true` + +Restore the cropped area after resizing the window. + +### checkCrossOrigin + +- Type: `Boolean` +- Default: `true` + +Check if the current image is a cross-origin image. + +If it is, when clone the image, a `crossOrigin` attribute will be added to the cloned image element and a timestamp will be added to the `src` attribute to reload the source image to avoid browser cache error. + +By adding `crossOrigin` attribute to image element will stop adding timestamp to image URL and stop reload of image, but the request (XMLHttpRequest) to read the image data for orientation checking will require a timestamp to bust cache to avoid browser cache error now, you can set the `checkOrientation` option to `false` to cancel this request. + +If the value of the image's `crossOrigin` attribute is `"use-credentials"`, then the `withCredentials` attribute will set to `true` when read the image data by XMLHttpRequest. + +### checkOrientation + +- Type: `Boolean` +- Default: `true` + +Check the current image's Exif Orientation information. Note that only a JPEG image may contains Exif Orientation information. + +More exactly, read the Orientation value for rotating or flipping the image, and then override the Orientation value with `1` (the default value) to avoid some issues ([1](https://github.com/fengyuanchen/cropper/issues/120), [2](https://github.com/fengyuanchen/cropper/issues/509)) on iOS devices. + +Requires to set both the `rotatable` and `scalable` options to `true` at the same time. + +**Note:** Don't trust this all the time as some JPG images have incorrect (not standard) Orientation values. + +> Requires [Typed Arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) support ([IE 10+](http://caniuse.com/typedarrays)). + +### modal + +- Type: `Boolean` +- Default: `true` + +Show the black modal above the image and under the crop box. + +### guides + +- Type: `Boolean` +- Default: `true` + +Show the dashed lines above the crop box. + +### center + +- Type: `Boolean` +- Default: `true` + +Show the center indicator above the crop box. + +### highlight + +- Type: `Boolean` +- Default: `true` + +Show the white modal above the crop box (highlight the crop box). + +### background + +- Type: `Boolean` +- Default: `true` + +Show the grid background of the container. + +### autoCrop + +- Type: `Boolean` +- Default: `true` + +Enable to crop the image automatically when initialized. + +### autoCropArea + +- Type: `Number` +- Default: `0.8` (80% of the image) + +A number between 0 and 1. Define the automatic cropping area size (percentage). + +### movable + +- Type: `Boolean` +- Default: `true` + +Enable to move the image. + +### rotatable + +- Type: `Boolean` +- Default: `true` + +Enable to rotate the image. + +### scalable + +- Type: `Boolean` +- Default: `true` + +Enable to scale the image. + +### zoomable + +- Type: `Boolean` +- Default: `true` + +Enable to zoom the image. + +### zoomOnTouch + +- Type: `Boolean` +- Default: `true` + +Enable to zoom the image by dragging touch. + +### zoomOnWheel + +- Type: `Boolean` +- Default: `true` + +Enable to zoom the image by wheeling mouse. + +### wheelZoomRatio + +- Type: `Number` +- Default: `0.1` + +Define zoom ratio when zooming the image by wheeling mouse. + +### cropBoxMovable + +- Type: `Boolean` +- Default: `true` + +Enable to move the crop box by dragging. + +### cropBoxResizable + +- Type: `Boolean` +- Default: `true` + +Enable to resize the crop box by dragging. + +### toggleDragModeOnDblclick + +- Type: `Boolean` +- Default: `true` + +Enable to toggle drag mode between "crop" and "move" when clicking twice on the cropper. + +> Requires [`dblclick`](https://developer.mozilla.org/en-US/docs/Web/Events/dblclick) event support. + +### minContainerWidth + +- Type: `Number` +- Default: `200` + +The minimum width of the container. + +### minContainerHeight + +- Type: `Number` +- Default: `100` + +The minimum height of the container. + +### minCanvasWidth + +- Type: `Number` +- Default: `0` + +The minimum width of the canvas (image wrapper). + +### minCanvasHeight + +- Type: `Number` +- Default: `0` + +The minimum height of the canvas (image wrapper). + +### minCropBoxWidth + +- Type: `Number` +- Default: `0` + +The minimum width of the crop box. + +**Note:** This size is relative to the page, not the image. + +### minCropBoxHeight + +- Type: `Number` +- Default: `0` + +The minimum height of the crop box. + +**Note:** This size is relative to the page, not the image. + +### ready + +- Type: `Function` +- Default: `null` + +A shortcut of the `ready` event. + +### cropstart + +- Type: `Function` +- Default: `null` + +A shortcut of the `cropstart` event. + +### cropmove + +- Type: `Function` +- Default: `null` + +A shortcut of the `cropmove` event. + +### cropend + +- Type: `Function` +- Default: `null` + +A shortcut of the `cropend` event. + +### crop + +- Type: `Function` +- Default: `null` + +A shortcut of the `crop` event. + +### zoom + +- Type: `Function` +- Default: `null` + +A shortcut of the `zoom` event. + +[⬆ back to top](#table-of-contents) + +## Methods + +As there is an **asynchronous** process when loading the image, you **should call most of the methods after ready**, except "setAspectRatio", "replace" and "destroy". + +> If a method doesn't need to return any value, it will return the cropper instance (`this`) for chain composition. + +```js +new Cropper(image, { + ready() { + // this.cropper[method](argument1, , argument2, ..., argumentN); + this.cropper.move(1, -1); + + // Allows chain composition + this.cropper.move(1, -1).rotate(45).scale(1, -1); + }, +}); +``` + +### crop() + +Show the crop box manually. + +```js +new Cropper(image, { + autoCrop: false, + ready() { + // Do something here + // ... + + // And then + this.cropper.crop(); + }, +}); +``` + +### reset() + +Reset the image and crop box to their initial states. + +### clear() + +Clear the crop box. + +### replace(url[, hasSameSize]) + +- **url**: + - Type: `String` + - A new image url. + +- **hasSameSize** (optional): + - Type: `Boolean` + - Default: `false` + - If the new image has the same size as the old one, then it will not rebuild the cropper and only update the URLs of all related images. This can be used for applying filters. + +Replace the image's src and rebuild the cropper. + +### enable() + +Enable (unfreeze) the cropper. + +### disable() + +Disable (freeze) the cropper. + +### destroy() + +Destroy the cropper and remove the instance from the image. + +### move(offsetX[, offsetY]) + +- **offsetX**: + - Type: `Number` + - Moving size (px) in the horizontal direction. + +- **offsetY** (optional): + - Type: `Number` + - Moving size (px) in the vertical direction. + - If not present, its default value is `offsetX`. + +Move the canvas (image wrapper) with relative offsets. + +```js +cropper.move(1); +cropper.move(1, 0); +cropper.move(0, -1); +``` + +### moveTo(x[, y]) + +- **x**: + - Type: `Number` + - The `left` value of the canvas + +- **y** (optional): + - Type: `Number` + - The `top` value of the canvas + - If not present, its default value is `x`. + +Move the canvas (image wrapper) to an absolute point. + +### zoom(ratio) + +- **ratio**: + - Type: `Number` + - Zoom in: requires a positive number (ratio > 0) + - Zoom out: requires a negative number (ratio < 0) + +Zoom the canvas (image wrapper) with a relative ratio. + +```js +cropper.zoom(0.1); +cropper.zoom(-0.1); +``` + +### zoomTo(ratio[, pivot]) + +- **ratio**: + - Type: `Number` + - Requires a positive number (ratio > 0) + +- **pivot** (optional): + - Type: `Object` + - Schema: `{ x: Number, y: Number }` + - The coordinate of the center point for zooming, base on the top left corner of the cropper container. + +Zoom the canvas (image wrapper) to an absolute ratio. + +```js +cropper.zoomTo(1); // 1:1 (canvasData.width === canvasData.naturalWidth) + +const containerData = cropper.getContainerData(); + +// Zoom to 50% from the center of the container. +cropper.zoomTo(.5, { + x: containerData.width / 2, + y: containerData.height / 2, +}); +``` + +### rotate(degree) + +- **degree**: + - Type: `Number` + - Rotate right: requires a positive number (degree > 0) + - Rotate left: requires a negative number (degree < 0) + +Rotate the image with a relative degree. + +> Requires [CSS3 2D Transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) support ([IE 9+](http://caniuse.com/transforms2d)). + +```js +cropper.rotate(90); +cropper.rotate(-90); +``` + +### rotateTo(degree) + +- **degree**: + - Type: `Number` + +Rotate the image to an absolute degree. + +### scale(scaleX[, scaleY]) + +- **scaleX**: + - Type: `Number` + - Default: `1` + - The scaling factor to apply to the abscissa of the image. + - When equal to `1` it does nothing. + +- **scaleY** (optional): + - Type: `Number` + - The scaling factor to apply on the ordinate of the image. + - If not present, its default value is `scaleX`. + +Scale the image. + +> Requires [CSS3 2D Transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) support ([IE 9+](http://caniuse.com/transforms2d)). + +```js +cropper.scale(-1); // Flip both horizontal and vertical +cropper.scale(-1, 1); // Flip horizontal +cropper.scale(1, -1); // Flip vertical +``` + +### scaleX(scaleX) + +- **scaleX**: + - Type: `Number` + - Default: `1` + - The scaling factor to apply to the abscissa of the image. + - When equal to `1` it does nothing. + +Scale the abscissa of the image. + +### scaleY(scaleY) + +- **scaleY**: + - Type: `Number` + - Default: `1` + - The scaling factor to apply on the ordinate of the image. + - When equal to `1` it does nothing. + +Scale the ordinate of the image. + +### getData([rounded]) + +- **rounded** (optional): + - Type: `Boolean` + - Default: `false` + - Set `true` to get rounded values. + +- (return value): + - Type: `Object` + - Properties: + - `x`: the offset left of the cropped area + - `y`: the offset top of the cropped area + - `width`: the width of the cropped area + - `height`: the height of the cropped area + - `rotate`: the rotated degrees of the image + - `scaleX`: the scaling factor to apply on the abscissa of the image + - `scaleY`: the scaling factor to apply on the ordinate of the image + +Output the final cropped area position and size data (base on the natural size of the original image). + +> You can send the data to server-side to crop the image directly: +> +> 1. Rotate the image with the `rotate` property. +> 2. Scale the image with the `scaleX` and `scaleY` properties. +> 3. Crop the image with the `x`, `y`, `width` and `height` properties. + +![A schematic diagram for data's properties](docs/images/data.jpg) + +### setData(data) + +- **data**: + - Type: `Object` + - Properties: See the [`getData`](#getdatarounded) method. + - You may need to round the data properties before passing them in. + +Change the cropped area position and size with new data (base on the original image). + +> **Note:** This method only available when the value of the `viewMode` option is greater than or equal to `1`. + +### getContainerData() + +- (return value): + - Type: `Object` + - Properties: + - `width`: the current width of the container + - `height`: the current height of the container + +Output the container size data. + +![A schematic diagram for cropper's layers](docs/images/layers.jpg) + +### getImageData() + +- (return value): + - Type: `Object` + - Properties: + - `left`: the offset left of the image + - `top`: the offset top of the image + - `width`: the width of the image + - `height`: the height of the image + - `naturalWidth`: the natural width of the image + - `naturalHeight`: the natural height of the image + - `aspectRatio`: the aspect ratio of the image + - `rotate`: the rotated degrees of the image if rotated + - `scaleX`: the scaling factor to apply on the abscissa of the image if scaled + - `scaleY`: the scaling factor to apply on the ordinate of the image if scaled + +Output the image position, size, and other related data. + +### getCanvasData() + +- (return value): + - Type: `Object` + - Properties: + - `left`: the offset left of the canvas + - `top`: the offset top of the canvas + - `width`: the width of the canvas + - `height`: the height of the canvas + - `naturalWidth`: the natural width of the canvas (read only) + - `naturalHeight`: the natural height of the canvas (read only) + +Output the canvas (image wrapper) position and size data. + +```js +const imageData = cropper.getImageData(); +const canvasData = cropper.getCanvasData(); + +if (imageData.rotate % 180 === 0) { + console.log(canvasData.naturalWidth === imageData.naturalWidth); + // > true +} +``` + +### setCanvasData(data) + +- **data**: + - Type: `Object` + - Properties: + - `left`: the new offset left of the canvas + - `top`: the new offset top of the canvas + - `width`: the new width of the canvas + - `height`: the new height of the canvas + +Change the canvas (image wrapper) position and size with new data. + +### getCropBoxData() + +- (return value): + - Type: `Object` + - Properties: + - `left`: the offset left of the crop box + - `top`: the offset top of the crop box + - `width`: the width of the crop box + - `height`: the height of the crop box + +Output the crop box position and size data. + +### setCropBoxData(data) + +- **data**: + - Type: `Object` + - Properties: + - `left`: the new offset left of the crop box + - `top`: the new offset top of the crop box + - `width`: the new width of the crop box + - `height`: the new height of the crop box + +Change the crop box position and size with new data. + +### getCroppedCanvas([options]) + +- **options** (optional): + - Type: `Object` + - Properties: + - `width`: the destination width of the output canvas. + - `height`: the destination height of the output canvas. + - `minWidth`: the minimum destination width of the output canvas, the default value is `0`. + - `minHeight`: the minimum destination height of the output canvas, the default value is `0`. + - `maxWidth`: the maximum destination width of the output canvas, the default value is `Infinity`. + - `maxHeight`: the maximum destination height of the output canvas, the default value is `Infinity`. + - `fillColor`: a color to fill any alpha values in the output canvas, the default value is `transparent`. + - [`imageSmoothingEnabled`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled): set to change if images are smoothed (`true`, default) or not (`false`). + - [`imageSmoothingQuality`](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality): set the quality of image smoothing, one of "low" (default), "medium", or "high". + +- (return value): + - Type: `HTMLCanvasElement` + - A canvas drawn the cropped image. + +- Notes: + - The aspect ratio of the output canvas will be fitted to the aspect ratio of the crop box automatically. + - If you intend to get a JPEG image from the output canvas, you should set the `fillColor` option first, if not, the transparent part in the JPEG image will become black by default. + - Uses the Browser's native [canvas.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) API to do the compression work, which means it is **lossy compression**. For better image quality, you can upload the original image and the cropped data to a server and do the crop work on the server. + +- Browser support: + - Basic image: requires [Canvas](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) support ([IE 9+](http://caniuse.com/canvas)). + - Rotated image: requires [CSS3 2D Transforms](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) support ([IE 9+](http://caniuse.com/transforms2d)). + - Cross-origin image: requires HTML5 [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) support ([IE 11+](http://caniuse.com/cors)). + +Get a canvas drawn the cropped image (lossy compression). If it is not cropped, then returns a canvas drawn the whole image. + +> After then, you can display the canvas as an image directly, or use [HTMLCanvasElement.toDataURL](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) to get a Data URL, or use [HTMLCanvasElement.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) to get a blob and upload it to server with [FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData) if the browser supports these APIs. + +Avoid to get a blank output image, you might need to set the `maxWidth` and `maxHeight` properties to limited numbers, because of [the size limits of a canvas element](https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element). + +```js +cropper.getCroppedCanvas(); + +cropper.getCroppedCanvas({ + width: 160, + height: 90, + minWidth: 256, + minHeight: 256, + maxWidth: 4096, + maxHeight: 4096, + fillColor: '#fff', + imageSmoothingEnabled: false, + imageSmoothingQuality: 'high', +}); + +// Upload cropped image to server if the browser supports `HTMLCanvasElement.toBlob` +cropper.getCroppedCanvas().toBlob((blob) => { + const formData = new FormData(); + + formData.append('croppedImage', blob); + + // Use `jQuery.ajax` method + $.ajax('/path/to/upload', { + method: "POST", + data: formData, + processData: false, + contentType: false, + success() { + console.log('Upload success'); + }, + error() { + console.log('Upload error'); + }, + }); +}); +``` + +### setAspectRatio(aspectRatio) + +- **aspectRatio**: + - Type: `Number` + - Requires a positive number. + +Change the aspect ratio of the crop box. + +### setDragMode([mode]) + +- **mode** (optional): + - Type: `String` + - Default: `'none'` + - Options: `'none'`, `'crop'`, `'move'` + +Change the drag mode. + +**Tips:** You can toggle the "crop" and "move" mode by double click on the cropper. + +[⬆ back to top](#table-of-contents) + +## Events + +### ready + +This event fires when the target image has been loaded and the cropper instance is ready for operating. + +```js +let cropper; + +image.addEventListener('ready', function () { + console.log(this.cropper === cropper); + // > true +}); + +cropper = new Cropper(image); +``` + +### cropstart + +- **event.detail.originalEvent**: + - Type: `Event` + - Options: `mousedown`, `touchstart` and `pointerdown` + +- **event.detail.action**: + - Type: `String` + - Options: + - `'crop'`: create a new crop box + - `'move'`: move the canvas (image wrapper) + - `'zoom'`: zoom in / out the canvas (image wrapper) by touch. + - `'e'`: resize the east side of the crop box + - `'w'`: resize the west side of the crop box + - `'s'`: resize the south side of the crop box + - `'n'`: resize the north side of the crop box + - `'se'`: resize the southeast side of the crop box + - `'sw'`: resize the southwest side of the crop box + - `'ne'`: resize the northeast side of the crop box + - `'nw'`: resize the northwest side of the crop box + - `'all'`: move the crop box (all directions) + +This event fires when the canvas (image wrapper) or the crop box starts to change. + +```js +image.addEventListener('cropstart', (event) => { + console.log(event.detail.originalEvent); + console.log(event.detail.action); +}); +``` + +### cropmove + +- **event.detail.originalEvent**: + - Type: `Event` + - Options: `mousemove`, `touchmove` and `pointermove`. + +- **event.detail.action**: the same as "cropstart". + +This event fires when the canvas (image wrapper) or the crop box is changing. + +### cropend + +- **event.detail.originalEvent**: + - Type: `Event` + - Options: `mouseup`, `touchend`, `touchcancel`, `pointerup` and `pointercancel`. + +- **event.detail.action**: the same as "cropstart". + +This event fires when the canvas (image wrapper) or the crop box stops to change. + +### crop + +- **event.detail.x** +- **event.detail.y** +- **event.detail.width** +- **event.detail.height** +- **event.detail.rotate** +- **event.detail.scaleX** +- **event.detail.scaleY** + +> About these properties, see the [`getData`](#getdatarounded) method. + +This event fires when the canvas (image wrapper) or the crop box changed. + +**Notes:** + +- When the `autoCrop` option is set to `true`, a `crop` event will be triggered before the `ready` event. +- When the `data` option is set, another `crop` event will be triggered before the `ready` event. + +### zoom + +- **event.detail.originalEvent**: + - Type: `Event` + - Options: `wheel`, `touchmove`. + +- **event.detail.oldRatio**: + - Type: `Number` + - The old (current) ratio of the canvas + +- **event.detail.ratio**: + - Type: `Number` + - The new (next) ratio of the canvas (`canvasData.width / canvasData.naturalWidth`) + +This event fires when a cropper instance starts to zoom in or zoom out its canvas (image wrapper). + +```js +image.addEventListener('zoom', (event) => { + // Zoom in + if (event.detail.ratio > event.detail.oldRatio) { + event.preventDefault(); // Prevent zoom in + } + + // Zoom out + // ... +}); +``` + +[⬆ back to top](#table-of-contents) + +## No conflict + +If you have to use another cropper with the same namespace, just call the `Cropper.noConflict` static method to revert to it. + +```html + + + +``` + +## Browser support + +- Chrome (latest) +- Firefox (latest) +- Safari (latest) +- Opera (latest) +- Edge (latest) +- Internet Explorer 9+ + +## Contributing + +Please read through our [contributing guidelines](.github/CONTRIBUTING.md). + +## Versioning + +Maintained under the [Semantic Versioning guidelines](https://semver.org/). + +## License + +[MIT](https://opensource.org/licenses/MIT) © [Chen Fengyuan](https://chenfengyuan.com) + +## Related projects + +- [angular-cropperjs](https://github.com/matheusdavidson/angular-cropperjs) by @matheusdavidson +- [ember-cropperjs](https://github.com/danielthall/ember-cropperjs) by @danielthall +- [iron-cropper](https://github.com/safetychanger/iron-cropper) by @safetychanger +- [react-cropper](https://github.com/roadmanfong/react-cropper) by @roadmanfong +- [vue-cropperjs](https://github.com/Agontuk/vue-cropperjs) by @Agontuk + +[⬆ back to top](#table-of-contents) diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/_notes/dwsync.xml b/scripts/gcs/Desktop/website/node_modules/cropperjs/_notes/dwsync.xml new file mode 100644 index 00000000..46294fca --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/_notes/dwsync.xml b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/_notes/dwsync.xml new file mode 100644 index 00000000..ccefb669 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.common.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.common.js new file mode 100644 index 00000000..01fab3fe --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.common.js @@ -0,0 +1,3560 @@ +/*! + * Cropper.js v1.5.4 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2019-08-03T08:38:42.128Z + */ + +'use strict'; + +function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); +} + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } +} + +function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); +} + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); +} + +var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +var WINDOW = IS_BROWSER ? window : {}; +var IS_TOUCH_DEVICE = IS_BROWSER ? 'ontouchstart' in WINDOW.document.documentElement : false; +var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false; +var NAMESPACE = 'cropper'; // Actions + +var ACTION_ALL = 'all'; +var ACTION_CROP = 'crop'; +var ACTION_MOVE = 'move'; +var ACTION_ZOOM = 'zoom'; +var ACTION_EAST = 'e'; +var ACTION_WEST = 'w'; +var ACTION_SOUTH = 's'; +var ACTION_NORTH = 'n'; +var ACTION_NORTH_EAST = 'ne'; +var ACTION_NORTH_WEST = 'nw'; +var ACTION_SOUTH_EAST = 'se'; +var ACTION_SOUTH_WEST = 'sw'; // Classes + +var CLASS_CROP = "".concat(NAMESPACE, "-crop"); +var CLASS_DISABLED = "".concat(NAMESPACE, "-disabled"); +var CLASS_HIDDEN = "".concat(NAMESPACE, "-hidden"); +var CLASS_HIDE = "".concat(NAMESPACE, "-hide"); +var CLASS_INVISIBLE = "".concat(NAMESPACE, "-invisible"); +var CLASS_MODAL = "".concat(NAMESPACE, "-modal"); +var CLASS_MOVE = "".concat(NAMESPACE, "-move"); // Data keys + +var DATA_ACTION = "".concat(NAMESPACE, "Action"); +var DATA_PREVIEW = "".concat(NAMESPACE, "Preview"); // Drag modes + +var DRAG_MODE_CROP = 'crop'; +var DRAG_MODE_MOVE = 'move'; +var DRAG_MODE_NONE = 'none'; // Events + +var EVENT_CROP = 'crop'; +var EVENT_CROP_END = 'cropend'; +var EVENT_CROP_MOVE = 'cropmove'; +var EVENT_CROP_START = 'cropstart'; +var EVENT_DBLCLICK = 'dblclick'; +var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown'; +var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove'; +var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup'; +var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START; +var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE; +var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END; +var EVENT_READY = 'ready'; +var EVENT_RESIZE = 'resize'; +var EVENT_WHEEL = 'wheel'; +var EVENT_ZOOM = 'zoom'; // Mime types + +var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps + +var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/; +var REGEXP_DATA_URL = /^data:/; +var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/; +var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc +// Inspired by the default width and height of a canvas element. + +var MIN_CONTAINER_WIDTH = 200; +var MIN_CONTAINER_HEIGHT = 100; + +var DEFAULTS = { + // Define the view mode of the cropper + viewMode: 0, + // 0, 1, 2, 3 + // Define the dragging mode of the cropper + dragMode: DRAG_MODE_CROP, + // 'crop', 'move' or 'none' + // Define the initial aspect ratio of the crop box + initialAspectRatio: NaN, + // Define the aspect ratio of the crop box + aspectRatio: NaN, + // An object with the previous cropping result data + data: null, + // A selector for adding extra containers to preview + preview: '', + // Re-render the cropper when resize the window + responsive: true, + // Restore the cropped area after resize the window + restore: true, + // Check if the current image is a cross-origin image + checkCrossOrigin: true, + // Check the current image's Exif Orientation information + checkOrientation: true, + // Show the black modal + modal: true, + // Show the dashed lines for guiding + guides: true, + // Show the center indicator for guiding + center: true, + // Show the white modal to highlight the crop box + highlight: true, + // Show the grid background + background: true, + // Enable to crop the image automatically when initialize + autoCrop: true, + // Define the percentage of automatic cropping area when initializes + autoCropArea: 0.8, + // Enable to move the image + movable: true, + // Enable to rotate the image + rotatable: true, + // Enable to scale the image + scalable: true, + // Enable to zoom the image + zoomable: true, + // Enable to zoom the image by dragging touch + zoomOnTouch: true, + // Enable to zoom the image by wheeling mouse + zoomOnWheel: true, + // Define zoom ratio when zoom the image by wheeling mouse + wheelZoomRatio: 0.1, + // Enable to move the crop box + cropBoxMovable: true, + // Enable to resize the crop box + cropBoxResizable: true, + // Toggle drag mode between "crop" and "move" when click twice on the cropper + toggleDragModeOnDblclick: true, + // Size limitation + minCanvasWidth: 0, + minCanvasHeight: 0, + minCropBoxWidth: 0, + minCropBoxHeight: 0, + minContainerWidth: 200, + minContainerHeight: 100, + // Shortcuts of events + ready: null, + cropstart: null, + cropmove: null, + cropend: null, + crop: null, + zoom: null +}; + +var TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
'; + +/** + * Check if the given value is not a number. + */ + +var isNaN = Number.isNaN || WINDOW.isNaN; +/** + * Check if the given value is a number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a number, else `false`. + */ + +function isNumber(value) { + return typeof value === 'number' && !isNaN(value); +} +/** + * Check if the given value is a positive number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a positive number, else `false`. + */ + +var isPositiveNumber = function isPositiveNumber(value) { + return value > 0 && value < Infinity; +}; +/** + * Check if the given value is undefined. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is undefined, else `false`. + */ + +function isUndefined(value) { + return typeof value === 'undefined'; +} +/** + * Check if the given value is an object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is an object, else `false`. + */ + +function isObject(value) { + return _typeof(value) === 'object' && value !== null; +} +var hasOwnProperty = Object.prototype.hasOwnProperty; +/** + * Check if the given value is a plain object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a plain object, else `false`. + */ + +function isPlainObject(value) { + if (!isObject(value)) { + return false; + } + + try { + var _constructor = value.constructor; + var prototype = _constructor.prototype; + return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf'); + } catch (error) { + return false; + } +} +/** + * Check if the given value is a function. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a function, else `false`. + */ + +function isFunction(value) { + return typeof value === 'function'; +} +var slice = Array.prototype.slice; +/** + * Convert array-like or iterable object to an array. + * @param {*} value - The value to convert. + * @returns {Array} Returns a new array. + */ + +function toArray(value) { + return Array.from ? Array.from(value) : slice.call(value); +} +/** + * Iterate the given data. + * @param {*} data - The data to iterate. + * @param {Function} callback - The process function for each element. + * @returns {*} The original data. + */ + +function forEach(data, callback) { + if (data && isFunction(callback)) { + if (Array.isArray(data) || isNumber(data.length) + /* array-like */ + ) { + toArray(data).forEach(function (value, key) { + callback.call(data, value, key, data); + }); + } else if (isObject(data)) { + Object.keys(data).forEach(function (key) { + callback.call(data, data[key], key, data); + }); + } + } + + return data; +} +/** + * Extend the given object. + * @param {*} target - The target object to extend. + * @param {*} args - The rest objects for merging to the target object. + * @returns {Object} The extended object. + */ + +var assign = Object.assign || function assign(target) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (isObject(target) && args.length > 0) { + args.forEach(function (arg) { + if (isObject(arg)) { + Object.keys(arg).forEach(function (key) { + target[key] = arg[key]; + }); + } + }); + } + + return target; +}; +var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/; +/** + * Normalize decimal number. + * Check out {@link http://0.30000000000000004.com/} + * @param {number} value - The value to normalize. + * @param {number} [times=100000000000] - The times for normalizing. + * @returns {number} Returns the normalized number. + */ + +function normalizeDecimalNumber(value) { + var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000; + return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value; +} +var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/; +/** + * Apply styles to the given element. + * @param {Element} element - The target element. + * @param {Object} styles - The styles for applying. + */ + +function setStyle(element, styles) { + var style = element.style; + forEach(styles, function (value, property) { + if (REGEXP_SUFFIX.test(property) && isNumber(value)) { + value = "".concat(value, "px"); + } + + style[property] = value; + }); +} +/** + * Check if the given element has a special class. + * @param {Element} element - The element to check. + * @param {string} value - The class to search. + * @returns {boolean} Returns `true` if the special class was found. + */ + +function hasClass(element, value) { + return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1; +} +/** + * Add classes to the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be added. + */ + +function addClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + addClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.add(value); + return; + } + + var className = element.className.trim(); + + if (!className) { + element.className = value; + } else if (className.indexOf(value) < 0) { + element.className = "".concat(className, " ").concat(value); + } +} +/** + * Remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be removed. + */ + +function removeClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + removeClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.remove(value); + return; + } + + if (element.className.indexOf(value) >= 0) { + element.className = element.className.replace(value, ''); + } +} +/** + * Add or remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be toggled. + * @param {boolean} added - Add only. + */ + +function toggleClass(element, value, added) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + toggleClass(elem, value, added); + }); + return; + } // IE10-11 doesn't support the second parameter of `classList.toggle` + + + if (added) { + addClass(element, value); + } else { + removeClass(element, value); + } +} +var REGEXP_CAMEL_CASE = /([a-z\d])([A-Z])/g; +/** + * Transform the given string from camelCase to kebab-case + * @param {string} value - The value to transform. + * @returns {string} The transformed value. + */ + +function toParamCase(value) { + return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase(); +} +/** + * Get data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to get. + * @returns {string} The data value. + */ + +function getData(element, name) { + if (isObject(element[name])) { + return element[name]; + } + + if (element.dataset) { + return element.dataset[name]; + } + + return element.getAttribute("data-".concat(toParamCase(name))); +} +/** + * Set data to the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to set. + * @param {string} data - The data value. + */ + +function setData(element, name, data) { + if (isObject(data)) { + element[name] = data; + } else if (element.dataset) { + element.dataset[name] = data; + } else { + element.setAttribute("data-".concat(toParamCase(name)), data); + } +} +/** + * Remove data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to remove. + */ + +function removeData(element, name) { + if (isObject(element[name])) { + try { + delete element[name]; + } catch (error) { + element[name] = undefined; + } + } else if (element.dataset) { + // #128 Safari not allows to delete dataset property + try { + delete element.dataset[name]; + } catch (error) { + element.dataset[name] = undefined; + } + } else { + element.removeAttribute("data-".concat(toParamCase(name))); + } +} +var REGEXP_SPACES = /\s\s*/; + +var onceSupported = function () { + var supported = false; + + if (IS_BROWSER) { + var once = false; + + var listener = function listener() {}; + + var options = Object.defineProperty({}, 'once', { + get: function get() { + supported = true; + return once; + }, + + /** + * This setter can fix a `TypeError` in strict mode + * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only} + * @param {boolean} value - The value to set + */ + set: function set(value) { + once = value; + } + }); + WINDOW.addEventListener('test', listener, options); + WINDOW.removeEventListener('test', listener, options); + } + + return supported; +}(); +/** + * Remove event listener from the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ + + +function removeListener(element, type, listener) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var handler = listener; + type.trim().split(REGEXP_SPACES).forEach(function (event) { + if (!onceSupported) { + var listeners = element.listeners; + + if (listeners && listeners[event] && listeners[event][listener]) { + handler = listeners[event][listener]; + delete listeners[event][listener]; + + if (Object.keys(listeners[event]).length === 0) { + delete listeners[event]; + } + + if (Object.keys(listeners).length === 0) { + delete element.listeners; + } + } + } + + element.removeEventListener(event, handler, options); + }); +} +/** + * Add event listener to the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ + +function addListener(element, type, listener) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var _handler = listener; + type.trim().split(REGEXP_SPACES).forEach(function (event) { + if (options.once && !onceSupported) { + var _element$listeners = element.listeners, + listeners = _element$listeners === void 0 ? {} : _element$listeners; + + _handler = function handler() { + delete listeners[event][listener]; + element.removeEventListener(event, _handler, options); + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + listener.apply(element, args); + }; + + if (!listeners[event]) { + listeners[event] = {}; + } + + if (listeners[event][listener]) { + element.removeEventListener(event, listeners[event][listener], options); + } + + listeners[event][listener] = _handler; + element.listeners = listeners; + } + + element.addEventListener(event, _handler, options); + }); +} +/** + * Dispatch event on the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Object} data - The additional event data. + * @returns {boolean} Indicate if the event is default prevented or not. + */ + +function dispatchEvent(element, type, data) { + var event; // Event and CustomEvent on IE9-11 are global objects, not constructors + + if (isFunction(Event) && isFunction(CustomEvent)) { + event = new CustomEvent(type, { + detail: data, + bubbles: true, + cancelable: true + }); + } else { + event = document.createEvent('CustomEvent'); + event.initCustomEvent(type, true, true, data); + } + + return element.dispatchEvent(event); +} +/** + * Get the offset base on the document. + * @param {Element} element - The target element. + * @returns {Object} The offset data. + */ + +function getOffset(element) { + var box = element.getBoundingClientRect(); + return { + left: box.left + (window.pageXOffset - document.documentElement.clientLeft), + top: box.top + (window.pageYOffset - document.documentElement.clientTop) + }; +} +var location = WINDOW.location; +var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i; +/** + * Check if the given URL is a cross origin URL. + * @param {string} url - The target URL. + * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`. + */ + +function isCrossOriginURL(url) { + var parts = url.match(REGEXP_ORIGINS); + return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port); +} +/** + * Add timestamp to the given URL. + * @param {string} url - The target URL. + * @returns {string} The result URL. + */ + +function addTimestamp(url) { + var timestamp = "timestamp=".concat(new Date().getTime()); + return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp; +} +/** + * Get transforms base on the given object. + * @param {Object} obj - The target object. + * @returns {string} A string contains transform values. + */ + +function getTransforms(_ref) { + var rotate = _ref.rotate, + scaleX = _ref.scaleX, + scaleY = _ref.scaleY, + translateX = _ref.translateX, + translateY = _ref.translateY; + var values = []; + + if (isNumber(translateX) && translateX !== 0) { + values.push("translateX(".concat(translateX, "px)")); + } + + if (isNumber(translateY) && translateY !== 0) { + values.push("translateY(".concat(translateY, "px)")); + } // Rotate should come first before scale to match orientation transform + + + if (isNumber(rotate) && rotate !== 0) { + values.push("rotate(".concat(rotate, "deg)")); + } + + if (isNumber(scaleX) && scaleX !== 1) { + values.push("scaleX(".concat(scaleX, ")")); + } + + if (isNumber(scaleY) && scaleY !== 1) { + values.push("scaleY(".concat(scaleY, ")")); + } + + var transform = values.length ? values.join(' ') : 'none'; + return { + WebkitTransform: transform, + msTransform: transform, + transform: transform + }; +} +/** + * Get the max ratio of a group of pointers. + * @param {string} pointers - The target pointers. + * @returns {number} The result ratio. + */ + +function getMaxZoomRatio(pointers) { + var pointers2 = assign({}, pointers); + var ratios = []; + forEach(pointers, function (pointer, pointerId) { + delete pointers2[pointerId]; + forEach(pointers2, function (pointer2) { + var x1 = Math.abs(pointer.startX - pointer2.startX); + var y1 = Math.abs(pointer.startY - pointer2.startY); + var x2 = Math.abs(pointer.endX - pointer2.endX); + var y2 = Math.abs(pointer.endY - pointer2.endY); + var z1 = Math.sqrt(x1 * x1 + y1 * y1); + var z2 = Math.sqrt(x2 * x2 + y2 * y2); + var ratio = (z2 - z1) / z1; + ratios.push(ratio); + }); + }); + ratios.sort(function (a, b) { + return Math.abs(a) < Math.abs(b); + }); + return ratios[0]; +} +/** + * Get a pointer from an event object. + * @param {Object} event - The target event object. + * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not. + * @returns {Object} The result pointer contains start and/or end point coordinates. + */ + +function getPointer(_ref2, endOnly) { + var pageX = _ref2.pageX, + pageY = _ref2.pageY; + var end = { + endX: pageX, + endY: pageY + }; + return endOnly ? end : assign({ + startX: pageX, + startY: pageY + }, end); +} +/** + * Get the center point coordinate of a group of pointers. + * @param {Object} pointers - The target pointers. + * @returns {Object} The center point coordinate. + */ + +function getPointersCenter(pointers) { + var pageX = 0; + var pageY = 0; + var count = 0; + forEach(pointers, function (_ref3) { + var startX = _ref3.startX, + startY = _ref3.startY; + pageX += startX; + pageY += startY; + count += 1; + }); + pageX /= count; + pageY /= count; + return { + pageX: pageX, + pageY: pageY + }; +} +/** + * Get the max sizes in a rectangle under the given aspect ratio. + * @param {Object} data - The original sizes. + * @param {string} [type='contain'] - The adjust type. + * @returns {Object} The result sizes. + */ + +function getAdjustedSizes(_ref4) // or 'cover' +{ + var aspectRatio = _ref4.aspectRatio, + height = _ref4.height, + width = _ref4.width; + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain'; + var isValidWidth = isPositiveNumber(width); + var isValidHeight = isPositiveNumber(height); + + if (isValidWidth && isValidHeight) { + var adjustedWidth = height * aspectRatio; + + if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) { + height = width / aspectRatio; + } else { + width = height * aspectRatio; + } + } else if (isValidWidth) { + height = width / aspectRatio; + } else if (isValidHeight) { + width = height * aspectRatio; + } + + return { + width: width, + height: height + }; +} +/** + * Get the new sizes of a rectangle after rotated. + * @param {Object} data - The original sizes. + * @returns {Object} The result sizes. + */ + +function getRotatedSizes(_ref5) { + var width = _ref5.width, + height = _ref5.height, + degree = _ref5.degree; + degree = Math.abs(degree) % 180; + + if (degree === 90) { + return { + width: height, + height: width + }; + } + + var arc = degree % 90 * Math.PI / 180; + var sinArc = Math.sin(arc); + var cosArc = Math.cos(arc); + var newWidth = width * cosArc + height * sinArc; + var newHeight = width * sinArc + height * cosArc; + return degree > 90 ? { + width: newHeight, + height: newWidth + } : { + width: newWidth, + height: newHeight + }; +} +/** + * Get a canvas which drew the given image. + * @param {HTMLImageElement} image - The image for drawing. + * @param {Object} imageData - The image data. + * @param {Object} canvasData - The canvas data. + * @param {Object} options - The options. + * @returns {HTMLCanvasElement} The result canvas. + */ + +function getSourceCanvas(image, _ref6, _ref7, _ref8) { + var imageAspectRatio = _ref6.aspectRatio, + imageNaturalWidth = _ref6.naturalWidth, + imageNaturalHeight = _ref6.naturalHeight, + _ref6$rotate = _ref6.rotate, + rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate, + _ref6$scaleX = _ref6.scaleX, + scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX, + _ref6$scaleY = _ref6.scaleY, + scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY; + var aspectRatio = _ref7.aspectRatio, + naturalWidth = _ref7.naturalWidth, + naturalHeight = _ref7.naturalHeight; + var _ref8$fillColor = _ref8.fillColor, + fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor, + _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled, + imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE, + _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality, + imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ, + _ref8$maxWidth = _ref8.maxWidth, + maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth, + _ref8$maxHeight = _ref8.maxHeight, + maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight, + _ref8$minWidth = _ref8.minWidth, + minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth, + _ref8$minHeight = _ref8.minHeight, + minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight; + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + var maxSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: maxWidth, + height: maxHeight + }); + var minSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: minWidth, + height: minHeight + }, 'cover'); + var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth)); + var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as + // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90 + + var destMaxSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: maxWidth, + height: maxHeight + }); + var destMinSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: minWidth, + height: minHeight + }, 'cover'); + var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth)); + var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight)); + var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight]; + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + context.fillStyle = fillColor; + context.fillRect(0, 0, width, height); + context.save(); + context.translate(width / 2, height / 2); + context.rotate(rotate * Math.PI / 180); + context.scale(scaleX, scaleY); + context.imageSmoothingEnabled = imageSmoothingEnabled; + context.imageSmoothingQuality = imageSmoothingQuality; + context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) { + return Math.floor(normalizeDecimalNumber(param)); + })))); + context.restore(); + return canvas; +} +var fromCharCode = String.fromCharCode; +/** + * Get string from char code in data view. + * @param {DataView} dataView - The data view for read. + * @param {number} start - The start index. + * @param {number} length - The read length. + * @returns {string} The read result. + */ + +function getStringFromCharCode(dataView, start, length) { + var str = ''; + length += start; + + for (var i = start; i < length; i += 1) { + str += fromCharCode(dataView.getUint8(i)); + } + + return str; +} +var REGEXP_DATA_URL_HEAD = /^data:.*,/; +/** + * Transform Data URL to array buffer. + * @param {string} dataURL - The Data URL to transform. + * @returns {ArrayBuffer} The result array buffer. + */ + +function dataURLToArrayBuffer(dataURL) { + var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, ''); + var binary = atob(base64); + var arrayBuffer = new ArrayBuffer(binary.length); + var uint8 = new Uint8Array(arrayBuffer); + forEach(uint8, function (value, i) { + uint8[i] = binary.charCodeAt(i); + }); + return arrayBuffer; +} +/** + * Transform array buffer to Data URL. + * @param {ArrayBuffer} arrayBuffer - The array buffer to transform. + * @param {string} mimeType - The mime type of the Data URL. + * @returns {string} The result Data URL. + */ + +function arrayBufferToDataURL(arrayBuffer, mimeType) { + var chunks = []; // Chunk Typed Array for better performance (#435) + + var chunkSize = 8192; + var uint8 = new Uint8Array(arrayBuffer); + + while (uint8.length > 0) { + // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9 + // eslint-disable-next-line prefer-spread + chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize)))); + uint8 = uint8.subarray(chunkSize); + } + + return "data:".concat(mimeType, ";base64,").concat(btoa(chunks.join(''))); +} +/** + * Get orientation value from given array buffer. + * @param {ArrayBuffer} arrayBuffer - The array buffer to read. + * @returns {number} The read orientation value. + */ + +function resetAndGetOrientation(arrayBuffer) { + var dataView = new DataView(arrayBuffer); + var orientation; // Ignores range error when the image does not have correct Exif information + + try { + var littleEndian; + var app1Start; + var ifdStart; // Only handle JPEG image (start by 0xFFD8) + + if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) { + var length = dataView.byteLength; + var offset = 2; + + while (offset + 1 < length) { + if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) { + app1Start = offset; + break; + } + + offset += 1; + } + } + + if (app1Start) { + var exifIDCode = app1Start + 4; + var tiffOffset = app1Start + 10; + + if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') { + var endianness = dataView.getUint16(tiffOffset); + littleEndian = endianness === 0x4949; + + if (littleEndian || endianness === 0x4D4D + /* bigEndian */ + ) { + if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) { + var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian); + + if (firstIFDOffset >= 0x00000008) { + ifdStart = tiffOffset + firstIFDOffset; + } + } + } + } + } + + if (ifdStart) { + var _length = dataView.getUint16(ifdStart, littleEndian); + + var _offset; + + var i; + + for (i = 0; i < _length; i += 1) { + _offset = ifdStart + i * 12 + 2; + + if (dataView.getUint16(_offset, littleEndian) === 0x0112 + /* Orientation */ + ) { + // 8 is the offset of the current tag's value + _offset += 8; // Get the original orientation value + + orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value + + dataView.setUint16(_offset, 1, littleEndian); + break; + } + } + } + } catch (error) { + orientation = 1; + } + + return orientation; +} +/** + * Parse Exif Orientation value. + * @param {number} orientation - The orientation to parse. + * @returns {Object} The parsed result. + */ + +function parseOrientation(orientation) { + var rotate = 0; + var scaleX = 1; + var scaleY = 1; + + switch (orientation) { + // Flip horizontal + case 2: + scaleX = -1; + break; + // Rotate left 180° + + case 3: + rotate = -180; + break; + // Flip vertical + + case 4: + scaleY = -1; + break; + // Flip vertical and rotate right 90° + + case 5: + rotate = 90; + scaleY = -1; + break; + // Rotate right 90° + + case 6: + rotate = 90; + break; + // Flip horizontal and rotate right 90° + + case 7: + rotate = 90; + scaleX = -1; + break; + // Rotate left 90° + + case 8: + rotate = -90; + break; + + default: + } + + return { + rotate: rotate, + scaleX: scaleX, + scaleY: scaleY + }; +} + +var render = { + render: function render() { + this.initContainer(); + this.initCanvas(); + this.initCropBox(); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + }, + initContainer: function initContainer() { + var element = this.element, + options = this.options, + container = this.container, + cropper = this.cropper; + addClass(cropper, CLASS_HIDDEN); + removeClass(element, CLASS_HIDDEN); + var containerData = { + width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200), + height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100) + }; + this.containerData = containerData; + setStyle(cropper, { + width: containerData.width, + height: containerData.height + }); + addClass(element, CLASS_HIDDEN); + removeClass(cropper, CLASS_HIDDEN); + }, + // Canvas (image wrapper) + initCanvas: function initCanvas() { + var containerData = this.containerData, + imageData = this.imageData; + var viewMode = this.options.viewMode; + var rotated = Math.abs(imageData.rotate) % 180 === 90; + var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth; + var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight; + var aspectRatio = naturalWidth / naturalHeight; + var canvasWidth = containerData.width; + var canvasHeight = containerData.height; + + if (containerData.height * aspectRatio > containerData.width) { + if (viewMode === 3) { + canvasWidth = containerData.height * aspectRatio; + } else { + canvasHeight = containerData.width / aspectRatio; + } + } else if (viewMode === 3) { + canvasHeight = containerData.width / aspectRatio; + } else { + canvasWidth = containerData.height * aspectRatio; + } + + var canvasData = { + aspectRatio: aspectRatio, + naturalWidth: naturalWidth, + naturalHeight: naturalHeight, + width: canvasWidth, + height: canvasHeight + }; + canvasData.left = (containerData.width - canvasWidth) / 2; + canvasData.top = (containerData.height - canvasHeight) / 2; + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + this.canvasData = canvasData; + this.limited = viewMode === 1 || viewMode === 2; + this.limitCanvas(true, true); + this.initialImageData = assign({}, imageData); + this.initialCanvasData = assign({}, canvasData); + }, + limitCanvas: function limitCanvas(sizeLimited, positionLimited) { + var options = this.options, + containerData = this.containerData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var viewMode = options.viewMode; + var aspectRatio = canvasData.aspectRatio; + var cropped = this.cropped && cropBoxData; + + if (sizeLimited) { + var minCanvasWidth = Number(options.minCanvasWidth) || 0; + var minCanvasHeight = Number(options.minCanvasHeight) || 0; + + if (viewMode > 1) { + minCanvasWidth = Math.max(minCanvasWidth, containerData.width); + minCanvasHeight = Math.max(minCanvasHeight, containerData.height); + + if (viewMode === 3) { + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } else if (viewMode > 0) { + if (minCanvasWidth) { + minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0); + } else if (minCanvasHeight) { + minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0); + } else if (cropped) { + minCanvasWidth = cropBoxData.width; + minCanvasHeight = cropBoxData.height; + + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } + + var _getAdjustedSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: minCanvasWidth, + height: minCanvasHeight + }); + + minCanvasWidth = _getAdjustedSizes.width; + minCanvasHeight = _getAdjustedSizes.height; + canvasData.minWidth = minCanvasWidth; + canvasData.minHeight = minCanvasHeight; + canvasData.maxWidth = Infinity; + canvasData.maxHeight = Infinity; + } + + if (positionLimited) { + if (viewMode > (cropped ? 0 : 1)) { + var newCanvasLeft = containerData.width - canvasData.width; + var newCanvasTop = containerData.height - canvasData.height; + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + canvasData.maxTop = Math.max(0, newCanvasTop); + + if (cropped && this.limited) { + canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width)); + canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height)); + canvasData.maxLeft = cropBoxData.left; + canvasData.maxTop = cropBoxData.top; + + if (viewMode === 2) { + if (canvasData.width >= containerData.width) { + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + } + + if (canvasData.height >= containerData.height) { + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxTop = Math.max(0, newCanvasTop); + } + } + } + } else { + canvasData.minLeft = -canvasData.width; + canvasData.minTop = -canvasData.height; + canvasData.maxLeft = containerData.width; + canvasData.maxTop = containerData.height; + } + } + }, + renderCanvas: function renderCanvas(changed, transformed) { + var canvasData = this.canvasData, + imageData = this.imageData; + + if (transformed) { + var _getRotatedSizes = getRotatedSizes({ + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0 + }), + naturalWidth = _getRotatedSizes.width, + naturalHeight = _getRotatedSizes.height; + + var width = canvasData.width * (naturalWidth / canvasData.naturalWidth); + var height = canvasData.height * (naturalHeight / canvasData.naturalHeight); + canvasData.left -= (width - canvasData.width) / 2; + canvasData.top -= (height - canvasData.height) / 2; + canvasData.width = width; + canvasData.height = height; + canvasData.aspectRatio = naturalWidth / naturalHeight; + canvasData.naturalWidth = naturalWidth; + canvasData.naturalHeight = naturalHeight; + this.limitCanvas(true, false); + } + + if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) { + canvasData.left = canvasData.oldLeft; + } + + if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) { + canvasData.top = canvasData.oldTop; + } + + canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth); + canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight); + this.limitCanvas(false, true); + canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft); + canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop); + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + setStyle(this.canvas, assign({ + width: canvasData.width, + height: canvasData.height + }, getTransforms({ + translateX: canvasData.left, + translateY: canvasData.top + }))); + this.renderImage(changed); + + if (this.cropped && this.limited) { + this.limitCropBox(true, true); + } + }, + renderImage: function renderImage(changed) { + var canvasData = this.canvasData, + imageData = this.imageData; + var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth); + var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight); + assign(imageData, { + width: width, + height: height, + left: (canvasData.width - width) / 2, + top: (canvasData.height - height) / 2 + }); + setStyle(this.image, assign({ + width: imageData.width, + height: imageData.height + }, getTransforms(assign({ + translateX: imageData.left, + translateY: imageData.top + }, imageData)))); + + if (changed) { + this.output(); + } + }, + initCropBox: function initCropBox() { + var options = this.options, + canvasData = this.canvasData; + var aspectRatio = options.aspectRatio || options.initialAspectRatio; + var autoCropArea = Number(options.autoCropArea) || 0.8; + var cropBoxData = { + width: canvasData.width, + height: canvasData.height + }; + + if (aspectRatio) { + if (canvasData.height * aspectRatio > canvasData.width) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.cropBoxData = cropBoxData; + this.limitCropBox(true, true); // Initialize auto crop area + + cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); + cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than "minWidth/Height" + + cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea); + cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea); + cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2; + cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2; + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + this.initialCropBoxData = assign({}, cropBoxData); + }, + limitCropBox: function limitCropBox(sizeLimited, positionLimited) { + var options = this.options, + containerData = this.containerData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData, + limited = this.limited; + var aspectRatio = options.aspectRatio; + + if (sizeLimited) { + var minCropBoxWidth = Number(options.minCropBoxWidth) || 0; + var minCropBoxHeight = Number(options.minCropBoxHeight) || 0; + var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width; + var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height + + minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width); + minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height); + + if (aspectRatio) { + if (minCropBoxWidth && minCropBoxHeight) { + if (minCropBoxHeight * aspectRatio > minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + } else if (minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else if (minCropBoxHeight) { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + + if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) { + maxCropBoxHeight = maxCropBoxWidth / aspectRatio; + } else { + maxCropBoxWidth = maxCropBoxHeight * aspectRatio; + } + } // The minWidth/Height must be less than maxWidth/Height + + + cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth); + cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight); + cropBoxData.maxWidth = maxCropBoxWidth; + cropBoxData.maxHeight = maxCropBoxHeight; + } + + if (positionLimited) { + if (limited) { + cropBoxData.minLeft = Math.max(0, canvasData.left); + cropBoxData.minTop = Math.max(0, canvasData.top); + cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width; + cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height; + } else { + cropBoxData.minLeft = 0; + cropBoxData.minTop = 0; + cropBoxData.maxLeft = containerData.width - cropBoxData.width; + cropBoxData.maxTop = containerData.height - cropBoxData.height; + } + } + }, + renderCropBox: function renderCropBox() { + var options = this.options, + containerData = this.containerData, + cropBoxData = this.cropBoxData; + + if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) { + cropBoxData.left = cropBoxData.oldLeft; + } + + if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) { + cropBoxData.top = cropBoxData.oldTop; + } + + cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); + cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); + this.limitCropBox(false, true); + cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft); + cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop); + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + + if (options.movable && options.cropBoxMovable) { + // Turn to move the canvas when the crop box is equal to the container + setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL); + } + + setStyle(this.cropBox, assign({ + width: cropBoxData.width, + height: cropBoxData.height + }, getTransforms({ + translateX: cropBoxData.left, + translateY: cropBoxData.top + }))); + + if (this.cropped && this.limited) { + this.limitCanvas(true, true); + } + + if (!this.disabled) { + this.output(); + } + }, + output: function output() { + this.preview(); + dispatchEvent(this.element, EVENT_CROP, this.getData()); + } +}; + +var preview = { + initPreview: function initPreview() { + var element = this.element, + crossOrigin = this.crossOrigin; + var preview = this.options.preview; + var url = crossOrigin ? this.crossOriginUrl : this.url; + var alt = element.alt || 'The image to preview'; + var image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = url; + image.alt = alt; + this.viewBox.appendChild(image); + this.viewBoxImage = image; + + if (!preview) { + return; + } + + var previews = preview; + + if (typeof preview === 'string') { + previews = element.ownerDocument.querySelectorAll(preview); + } else if (preview.querySelector) { + previews = [preview]; + } + + this.previews = previews; + forEach(previews, function (el) { + var img = document.createElement('img'); // Save the original size for recover + + setData(el, DATA_PREVIEW, { + width: el.offsetWidth, + height: el.offsetHeight, + html: el.innerHTML + }); + + if (crossOrigin) { + img.crossOrigin = crossOrigin; + } + + img.src = url; + img.alt = alt; + /** + * Override img element styles + * Add `display:block` to avoid margin top issue + * Add `height:auto` to override `height` attribute on IE8 + * (Occur only when margin-top <= -height) + */ + + img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"'; + el.innerHTML = ''; + el.appendChild(img); + }); + }, + resetPreview: function resetPreview() { + forEach(this.previews, function (element) { + var data = getData(element, DATA_PREVIEW); + setStyle(element, { + width: data.width, + height: data.height + }); + element.innerHTML = data.html; + removeData(element, DATA_PREVIEW); + }); + }, + preview: function preview() { + var imageData = this.imageData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var cropBoxWidth = cropBoxData.width, + cropBoxHeight = cropBoxData.height; + var width = imageData.width, + height = imageData.height; + var left = cropBoxData.left - canvasData.left - imageData.left; + var top = cropBoxData.top - canvasData.top - imageData.top; + + if (!this.cropped || this.disabled) { + return; + } + + setStyle(this.viewBoxImage, assign({ + width: width, + height: height + }, getTransforms(assign({ + translateX: -left, + translateY: -top + }, imageData)))); + forEach(this.previews, function (element) { + var data = getData(element, DATA_PREVIEW); + var originalWidth = data.width; + var originalHeight = data.height; + var newWidth = originalWidth; + var newHeight = originalHeight; + var ratio = 1; + + if (cropBoxWidth) { + ratio = originalWidth / cropBoxWidth; + newHeight = cropBoxHeight * ratio; + } + + if (cropBoxHeight && newHeight > originalHeight) { + ratio = originalHeight / cropBoxHeight; + newWidth = cropBoxWidth * ratio; + newHeight = originalHeight; + } + + setStyle(element, { + width: newWidth, + height: newHeight + }); + setStyle(element.getElementsByTagName('img')[0], assign({ + width: width * ratio, + height: height * ratio + }, getTransforms(assign({ + translateX: -left * ratio, + translateY: -top * ratio + }, imageData)))); + }); + } +}; + +var events = { + bind: function bind() { + var element = this.element, + options = this.options, + cropper = this.cropper; + + if (isFunction(options.cropstart)) { + addListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + addListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + addListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + addListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + addListener(element, EVENT_ZOOM, options.zoom); + } + + addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this)); + + if (options.zoomable && options.zoomOnWheel) { + addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), { + passive: false, + capture: true + }); + } + + if (options.toggleDragModeOnDblclick) { + addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this)); + } + + addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this)); + addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this)); + + if (options.responsive) { + addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this)); + } + }, + unbind: function unbind() { + var element = this.element, + options = this.options, + cropper = this.cropper; + + if (isFunction(options.cropstart)) { + removeListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + removeListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + removeListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + removeListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + removeListener(element, EVENT_ZOOM, options.zoom); + } + + removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart); + + if (options.zoomable && options.zoomOnWheel) { + removeListener(cropper, EVENT_WHEEL, this.onWheel, { + passive: false, + capture: true + }); + } + + if (options.toggleDragModeOnDblclick) { + removeListener(cropper, EVENT_DBLCLICK, this.onDblclick); + } + + removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove); + removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd); + + if (options.responsive) { + removeListener(window, EVENT_RESIZE, this.onResize); + } + } +}; + +var handlers = { + resize: function resize() { + var options = this.options, + container = this.container, + containerData = this.containerData; + var minContainerWidth = Number(options.minContainerWidth) || MIN_CONTAINER_WIDTH; + var minContainerHeight = Number(options.minContainerHeight) || MIN_CONTAINER_HEIGHT; + + if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) { + return; + } + + var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed + + if (ratio !== 1 || container.offsetHeight !== containerData.height) { + var canvasData; + var cropBoxData; + + if (options.restore) { + canvasData = this.getCanvasData(); + cropBoxData = this.getCropBoxData(); + } + + this.render(); + + if (options.restore) { + this.setCanvasData(forEach(canvasData, function (n, i) { + canvasData[i] = n * ratio; + })); + this.setCropBoxData(forEach(cropBoxData, function (n, i) { + cropBoxData[i] = n * ratio; + })); + } + } + }, + dblclick: function dblclick() { + if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) { + return; + } + + this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP); + }, + wheel: function wheel(event) { + var _this = this; + + var ratio = Number(this.options.wheelZoomRatio) || 0.1; + var delta = 1; + + if (this.disabled) { + return; + } + + event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21) + + if (this.wheeling) { + return; + } + + this.wheeling = true; + setTimeout(function () { + _this.wheeling = false; + }, 50); + + if (event.deltaY) { + delta = event.deltaY > 0 ? 1 : -1; + } else if (event.wheelDelta) { + delta = -event.wheelDelta / 120; + } else if (event.detail) { + delta = event.detail > 0 ? 1 : -1; + } + + this.zoom(-delta * ratio, event); + }, + cropStart: function cropStart(event) { + var buttons = event.buttons, + button = event.button; + + if (this.disabled // No primary button (Usually the left button) + // Note that touch events have no `buttons` or `button` property + || isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu + || event.ctrlKey) { + return; + } + + var options = this.options, + pointers = this.pointers; + var action; + + if (event.changedTouches) { + // Handle touch event + forEach(event.changedTouches, function (touch) { + pointers[touch.identifier] = getPointer(touch); + }); + } else { + // Handle mouse event and pointer event + pointers[event.pointerId || 0] = getPointer(event); + } + + if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) { + action = ACTION_ZOOM; + } else { + action = getData(event.target, DATA_ACTION); + } + + if (!REGEXP_ACTIONS.test(action)) { + return; + } + + if (dispatchEvent(this.element, EVENT_CROP_START, { + originalEvent: event, + action: action + }) === false) { + return; + } // This line is required for preventing page zooming in iOS browsers + + + event.preventDefault(); + this.action = action; + this.cropping = false; + + if (action === ACTION_CROP) { + this.cropping = true; + addClass(this.dragBox, CLASS_MODAL); + } + }, + cropMove: function cropMove(event) { + var action = this.action; + + if (this.disabled || !action) { + return; + } + + var pointers = this.pointers; + event.preventDefault(); + + if (dispatchEvent(this.element, EVENT_CROP_MOVE, { + originalEvent: event, + action: action + }) === false) { + return; + } + + if (event.changedTouches) { + forEach(event.changedTouches, function (touch) { + // The first parameter should not be undefined (#432) + assign(pointers[touch.identifier] || {}, getPointer(touch, true)); + }); + } else { + assign(pointers[event.pointerId || 0] || {}, getPointer(event, true)); + } + + this.change(event); + }, + cropEnd: function cropEnd(event) { + if (this.disabled) { + return; + } + + var action = this.action, + pointers = this.pointers; + + if (event.changedTouches) { + forEach(event.changedTouches, function (touch) { + delete pointers[touch.identifier]; + }); + } else { + delete pointers[event.pointerId || 0]; + } + + if (!action) { + return; + } + + event.preventDefault(); + + if (!Object.keys(pointers).length) { + this.action = ''; + } + + if (this.cropping) { + this.cropping = false; + toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal); + } + + dispatchEvent(this.element, EVENT_CROP_END, { + originalEvent: event, + action: action + }); + } +}; + +var change = { + change: function change(event) { + var options = this.options, + canvasData = this.canvasData, + containerData = this.containerData, + cropBoxData = this.cropBoxData, + pointers = this.pointers; + var action = this.action; + var aspectRatio = options.aspectRatio; + var left = cropBoxData.left, + top = cropBoxData.top, + width = cropBoxData.width, + height = cropBoxData.height; + var right = left + width; + var bottom = top + height; + var minLeft = 0; + var minTop = 0; + var maxWidth = containerData.width; + var maxHeight = containerData.height; + var renderable = true; + var offset; // Locking aspect ratio in "free mode" by holding shift key + + if (!aspectRatio && event.shiftKey) { + aspectRatio = width && height ? width / height : 1; + } + + if (this.limited) { + minLeft = cropBoxData.minLeft; + minTop = cropBoxData.minTop; + maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width); + maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height); + } + + var pointer = pointers[Object.keys(pointers)[0]]; + var range = { + x: pointer.endX - pointer.startX, + y: pointer.endY - pointer.startY + }; + + var check = function check(side) { + switch (side) { + case ACTION_EAST: + if (right + range.x > maxWidth) { + range.x = maxWidth - right; + } + + break; + + case ACTION_WEST: + if (left + range.x < minLeft) { + range.x = minLeft - left; + } + + break; + + case ACTION_NORTH: + if (top + range.y < minTop) { + range.y = minTop - top; + } + + break; + + case ACTION_SOUTH: + if (bottom + range.y > maxHeight) { + range.y = maxHeight - bottom; + } + + break; + + default: + } + }; + + switch (action) { + // Move crop box + case ACTION_ALL: + left += range.x; + top += range.y; + break; + // Resize crop box + + case ACTION_EAST: + if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + + if (width < 0) { + action = ACTION_WEST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_NORTH: + if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + + if (height < 0) { + action = ACTION_SOUTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_WEST: + if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + + if (width < 0) { + action = ACTION_EAST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_SOUTH: + if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) { + renderable = false; + break; + } + + check(ACTION_SOUTH); + height += range.y; + + if (height < 0) { + action = ACTION_NORTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_NORTH_EAST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || right >= maxWidth)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + } else { + check(ACTION_NORTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + top -= height; + } + + break; + + case ACTION_NORTH_WEST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || left <= minLeft)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + left += cropBoxData.width - width; + } else { + check(ACTION_NORTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_WEST: + if (aspectRatio) { + if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_EAST: + if (aspectRatio) { + if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + top -= height; + } + + break; + // Move canvas + + case ACTION_MOVE: + this.move(range.x, range.y); + renderable = false; + break; + // Zoom canvas + + case ACTION_ZOOM: + this.zoom(getMaxZoomRatio(pointers), event); + renderable = false; + break; + // Create crop box + + case ACTION_CROP: + if (!range.x || !range.y) { + renderable = false; + break; + } + + offset = getOffset(this.cropper); + left = pointer.startX - offset.left; + top = pointer.startY - offset.top; + width = cropBoxData.minWidth; + height = cropBoxData.minHeight; + + if (range.x > 0) { + action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST; + } else if (range.x < 0) { + left -= width; + action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST; + } + + if (range.y < 0) { + top -= height; + } // Show the crop box if is hidden + + + if (!this.cropped) { + removeClass(this.cropBox, CLASS_HIDDEN); + this.cropped = true; + + if (this.limited) { + this.limitCropBox(true, true); + } + } + + break; + + default: + } + + if (renderable) { + cropBoxData.width = width; + cropBoxData.height = height; + cropBoxData.left = left; + cropBoxData.top = top; + this.action = action; + this.renderCropBox(); + } // Override + + + forEach(pointers, function (p) { + p.startX = p.endX; + p.startY = p.endY; + }); + } +}; + +var methods = { + // Show the crop box manually + crop: function crop() { + if (this.ready && !this.cropped && !this.disabled) { + this.cropped = true; + this.limitCropBox(true, true); + + if (this.options.modal) { + addClass(this.dragBox, CLASS_MODAL); + } + + removeClass(this.cropBox, CLASS_HIDDEN); + this.setCropBoxData(this.initialCropBoxData); + } + + return this; + }, + // Reset the image and crop box to their initial states + reset: function reset() { + if (this.ready && !this.disabled) { + this.imageData = assign({}, this.initialImageData); + this.canvasData = assign({}, this.initialCanvasData); + this.cropBoxData = assign({}, this.initialCropBoxData); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + } + + return this; + }, + // Clear the crop box + clear: function clear() { + if (this.cropped && !this.disabled) { + assign(this.cropBoxData, { + left: 0, + top: 0, + width: 0, + height: 0 + }); + this.cropped = false; + this.renderCropBox(); + this.limitCanvas(true, true); // Render canvas after crop box rendered + + this.renderCanvas(); + removeClass(this.dragBox, CLASS_MODAL); + addClass(this.cropBox, CLASS_HIDDEN); + } + + return this; + }, + + /** + * Replace the image's src and rebuild the cropper + * @param {string} url - The new URL. + * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one. + * @returns {Cropper} this + */ + replace: function replace(url) { + var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (!this.disabled && url) { + if (this.isImg) { + this.element.src = url; + } + + if (hasSameSize) { + this.url = url; + this.image.src = url; + + if (this.ready) { + this.viewBoxImage.src = url; + forEach(this.previews, function (element) { + element.getElementsByTagName('img')[0].src = url; + }); + } + } else { + if (this.isImg) { + this.replaced = true; + } + + this.options.data = null; + this.uncreate(); + this.load(url); + } + } + + return this; + }, + // Enable (unfreeze) the cropper + enable: function enable() { + if (this.ready && this.disabled) { + this.disabled = false; + removeClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + // Disable (freeze) the cropper + disable: function disable() { + if (this.ready && !this.disabled) { + this.disabled = true; + addClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + + /** + * Destroy the cropper and remove the instance from the image + * @returns {Cropper} this + */ + destroy: function destroy() { + var element = this.element; + + if (!element[NAMESPACE]) { + return this; + } + + element[NAMESPACE] = undefined; + + if (this.isImg && this.replaced) { + element.src = this.originalUrl; + } + + this.uncreate(); + return this; + }, + + /** + * Move the canvas with relative offsets + * @param {number} offsetX - The relative offset distance on the x-axis. + * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis. + * @returns {Cropper} this + */ + move: function move(offsetX) { + var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX; + var _this$canvasData = this.canvasData, + left = _this$canvasData.left, + top = _this$canvasData.top; + return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY)); + }, + + /** + * Move the canvas to an absolute point + * @param {number} x - The x-axis coordinate. + * @param {number} [y=x] - The y-axis coordinate. + * @returns {Cropper} this + */ + moveTo: function moveTo(x) { + var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x; + var canvasData = this.canvasData; + var changed = false; + x = Number(x); + y = Number(y); + + if (this.ready && !this.disabled && this.options.movable) { + if (isNumber(x)) { + canvasData.left = x; + changed = true; + } + + if (isNumber(y)) { + canvasData.top = y; + changed = true; + } + + if (changed) { + this.renderCanvas(true); + } + } + + return this; + }, + + /** + * Zoom the canvas with a relative ratio + * @param {number} ratio - The target ratio. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoom: function zoom(ratio, _originalEvent) { + var canvasData = this.canvasData; + ratio = Number(ratio); + + if (ratio < 0) { + ratio = 1 / (1 - ratio); + } else { + ratio = 1 + ratio; + } + + return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent); + }, + + /** + * Zoom the canvas to an absolute ratio + * @param {number} ratio - The target ratio. + * @param {Object} pivot - The zoom pivot point coordinate. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoomTo: function zoomTo(ratio, pivot, _originalEvent) { + var options = this.options, + canvasData = this.canvasData; + var width = canvasData.width, + height = canvasData.height, + naturalWidth = canvasData.naturalWidth, + naturalHeight = canvasData.naturalHeight; + ratio = Number(ratio); + + if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) { + var newWidth = naturalWidth * ratio; + var newHeight = naturalHeight * ratio; + + if (dispatchEvent(this.element, EVENT_ZOOM, { + ratio: ratio, + oldRatio: width / naturalWidth, + originalEvent: _originalEvent + }) === false) { + return this; + } + + if (_originalEvent) { + var pointers = this.pointers; + var offset = getOffset(this.cropper); + var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : { + pageX: _originalEvent.pageX, + pageY: _originalEvent.pageY + }; // Zoom from the triggering point of the event + + canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width); + canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height); + } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) { + canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width); + canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height); + } else { + // Zoom from the center of the canvas + canvasData.left -= (newWidth - width) / 2; + canvasData.top -= (newHeight - height) / 2; + } + + canvasData.width = newWidth; + canvasData.height = newHeight; + this.renderCanvas(true); + } + + return this; + }, + + /** + * Rotate the canvas with a relative degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotate: function rotate(degree) { + return this.rotateTo((this.imageData.rotate || 0) + Number(degree)); + }, + + /** + * Rotate the canvas to an absolute degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotateTo: function rotateTo(degree) { + degree = Number(degree); + + if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) { + this.imageData.rotate = degree % 360; + this.renderCanvas(true, true); + } + + return this; + }, + + /** + * Scale the image on the x-axis. + * @param {number} scaleX - The scale ratio on the x-axis. + * @returns {Cropper} this + */ + scaleX: function scaleX(_scaleX) { + var scaleY = this.imageData.scaleY; + return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1); + }, + + /** + * Scale the image on the y-axis. + * @param {number} scaleY - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scaleY: function scaleY(_scaleY) { + var scaleX = this.imageData.scaleX; + return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY); + }, + + /** + * Scale the image + * @param {number} scaleX - The scale ratio on the x-axis. + * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scale: function scale(scaleX) { + var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX; + var imageData = this.imageData; + var transformed = false; + scaleX = Number(scaleX); + scaleY = Number(scaleY); + + if (this.ready && !this.disabled && this.options.scalable) { + if (isNumber(scaleX)) { + imageData.scaleX = scaleX; + transformed = true; + } + + if (isNumber(scaleY)) { + imageData.scaleY = scaleY; + transformed = true; + } + + if (transformed) { + this.renderCanvas(true, true); + } + } + + return this; + }, + + /** + * Get the cropped area position and size data (base on the original image) + * @param {boolean} [rounded=false] - Indicate if round the data values or not. + * @returns {Object} The result cropped data. + */ + getData: function getData() { + var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var options = this.options, + imageData = this.imageData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var data; + + if (this.ready && this.cropped) { + data = { + x: cropBoxData.left - canvasData.left, + y: cropBoxData.top - canvasData.top, + width: cropBoxData.width, + height: cropBoxData.height + }; + var ratio = imageData.width / imageData.naturalWidth; + forEach(data, function (n, i) { + data[i] = n / ratio; + }); + + if (rounded) { + // In case rounding off leads to extra 1px in right or bottom border + // we should round the top-left corner and the dimension (#343). + var bottom = Math.round(data.y + data.height); + var right = Math.round(data.x + data.width); + data.x = Math.round(data.x); + data.y = Math.round(data.y); + data.width = right - data.x; + data.height = bottom - data.y; + } + } else { + data = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + + if (options.rotatable) { + data.rotate = imageData.rotate || 0; + } + + if (options.scalable) { + data.scaleX = imageData.scaleX || 1; + data.scaleY = imageData.scaleY || 1; + } + + return data; + }, + + /** + * Set the cropped area position and size with new data + * @param {Object} data - The new data. + * @returns {Cropper} this + */ + setData: function setData(data) { + var options = this.options, + imageData = this.imageData, + canvasData = this.canvasData; + var cropBoxData = {}; + + if (this.ready && !this.disabled && isPlainObject(data)) { + var transformed = false; + + if (options.rotatable) { + if (isNumber(data.rotate) && data.rotate !== imageData.rotate) { + imageData.rotate = data.rotate; + transformed = true; + } + } + + if (options.scalable) { + if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) { + imageData.scaleX = data.scaleX; + transformed = true; + } + + if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) { + imageData.scaleY = data.scaleY; + transformed = true; + } + } + + if (transformed) { + this.renderCanvas(true, true); + } + + var ratio = imageData.width / imageData.naturalWidth; + + if (isNumber(data.x)) { + cropBoxData.left = data.x * ratio + canvasData.left; + } + + if (isNumber(data.y)) { + cropBoxData.top = data.y * ratio + canvasData.top; + } + + if (isNumber(data.width)) { + cropBoxData.width = data.width * ratio; + } + + if (isNumber(data.height)) { + cropBoxData.height = data.height * ratio; + } + + this.setCropBoxData(cropBoxData); + } + + return this; + }, + + /** + * Get the container size data. + * @returns {Object} The result container data. + */ + getContainerData: function getContainerData() { + return this.ready ? assign({}, this.containerData) : {}; + }, + + /** + * Get the image position and size data. + * @returns {Object} The result image data. + */ + getImageData: function getImageData() { + return this.sized ? assign({}, this.imageData) : {}; + }, + + /** + * Get the canvas position and size data. + * @returns {Object} The result canvas data. + */ + getCanvasData: function getCanvasData() { + var canvasData = this.canvasData; + var data = {}; + + if (this.ready) { + forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) { + data[n] = canvasData[n]; + }); + } + + return data; + }, + + /** + * Set the canvas position and size with new data. + * @param {Object} data - The new canvas data. + * @returns {Cropper} this + */ + setCanvasData: function setCanvasData(data) { + var canvasData = this.canvasData; + var aspectRatio = canvasData.aspectRatio; + + if (this.ready && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + canvasData.left = data.left; + } + + if (isNumber(data.top)) { + canvasData.top = data.top; + } + + if (isNumber(data.width)) { + canvasData.width = data.width; + canvasData.height = data.width / aspectRatio; + } else if (isNumber(data.height)) { + canvasData.height = data.height; + canvasData.width = data.height * aspectRatio; + } + + this.renderCanvas(true); + } + + return this; + }, + + /** + * Get the crop box position and size data. + * @returns {Object} The result crop box data. + */ + getCropBoxData: function getCropBoxData() { + var cropBoxData = this.cropBoxData; + var data; + + if (this.ready && this.cropped) { + data = { + left: cropBoxData.left, + top: cropBoxData.top, + width: cropBoxData.width, + height: cropBoxData.height + }; + } + + return data || {}; + }, + + /** + * Set the crop box position and size with new data. + * @param {Object} data - The new crop box data. + * @returns {Cropper} this + */ + setCropBoxData: function setCropBoxData(data) { + var cropBoxData = this.cropBoxData; + var aspectRatio = this.options.aspectRatio; + var widthChanged; + var heightChanged; + + if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + cropBoxData.left = data.left; + } + + if (isNumber(data.top)) { + cropBoxData.top = data.top; + } + + if (isNumber(data.width) && data.width !== cropBoxData.width) { + widthChanged = true; + cropBoxData.width = data.width; + } + + if (isNumber(data.height) && data.height !== cropBoxData.height) { + heightChanged = true; + cropBoxData.height = data.height; + } + + if (aspectRatio) { + if (widthChanged) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else if (heightChanged) { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.renderCropBox(); + } + + return this; + }, + + /** + * Get a canvas drawn the cropped image. + * @param {Object} [options={}] - The config options. + * @returns {HTMLCanvasElement} - The result canvas. + */ + getCroppedCanvas: function getCroppedCanvas() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (!this.ready || !window.HTMLCanvasElement) { + return null; + } + + var canvasData = this.canvasData; + var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped. + + if (!this.cropped) { + return source; + } + + var _this$getData = this.getData(), + initialX = _this$getData.x, + initialY = _this$getData.y, + initialWidth = _this$getData.width, + initialHeight = _this$getData.height; + + var ratio = source.width / Math.floor(canvasData.naturalWidth); + + if (ratio !== 1) { + initialX *= ratio; + initialY *= ratio; + initialWidth *= ratio; + initialHeight *= ratio; + } + + var aspectRatio = initialWidth / initialHeight; + var maxSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.maxWidth || Infinity, + height: options.maxHeight || Infinity + }); + var minSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.minWidth || 0, + height: options.minHeight || 0 + }, 'cover'); + + var _getAdjustedSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.width || (ratio !== 1 ? source.width : initialWidth), + height: options.height || (ratio !== 1 ? source.height : initialHeight) + }), + width = _getAdjustedSizes.width, + height = _getAdjustedSizes.height; + + width = Math.min(maxSizes.width, Math.max(minSizes.width, width)); + height = Math.min(maxSizes.height, Math.max(minSizes.height, height)); + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + context.fillStyle = options.fillColor || 'transparent'; + context.fillRect(0, 0, width, height); + var _options$imageSmoothi = options.imageSmoothingEnabled, + imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi, + imageSmoothingQuality = options.imageSmoothingQuality; + context.imageSmoothingEnabled = imageSmoothingEnabled; + + if (imageSmoothingQuality) { + context.imageSmoothingQuality = imageSmoothingQuality; + } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage + + + var sourceWidth = source.width; + var sourceHeight = source.height; // Source canvas parameters + + var srcX = initialX; + var srcY = initialY; + var srcWidth; + var srcHeight; // Destination canvas parameters + + var dstX; + var dstY; + var dstWidth; + var dstHeight; + + if (srcX <= -initialWidth || srcX > sourceWidth) { + srcX = 0; + srcWidth = 0; + dstX = 0; + dstWidth = 0; + } else if (srcX <= 0) { + dstX = -srcX; + srcX = 0; + srcWidth = Math.min(sourceWidth, initialWidth + srcX); + dstWidth = srcWidth; + } else if (srcX <= sourceWidth) { + dstX = 0; + srcWidth = Math.min(initialWidth, sourceWidth - srcX); + dstWidth = srcWidth; + } + + if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) { + srcY = 0; + srcHeight = 0; + dstY = 0; + dstHeight = 0; + } else if (srcY <= 0) { + dstY = -srcY; + srcY = 0; + srcHeight = Math.min(sourceHeight, initialHeight + srcY); + dstHeight = srcHeight; + } else if (srcY <= sourceHeight) { + dstY = 0; + srcHeight = Math.min(initialHeight, sourceHeight - srcY); + dstHeight = srcHeight; + } + + var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid "IndexSizeError" + + if (dstWidth > 0 && dstHeight > 0) { + var scale = width / initialWidth; + params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale); + } // All the numerical parameters should be integer for `drawImage` + // https://github.com/fengyuanchen/cropper/issues/476 + + + context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) { + return Math.floor(normalizeDecimalNumber(param)); + })))); + return canvas; + }, + + /** + * Change the aspect ratio of the crop box. + * @param {number} aspectRatio - The new aspect ratio. + * @returns {Cropper} this + */ + setAspectRatio: function setAspectRatio(aspectRatio) { + var options = this.options; + + if (!this.disabled && !isUndefined(aspectRatio)) { + // 0 -> NaN + options.aspectRatio = Math.max(0, aspectRatio) || NaN; + + if (this.ready) { + this.initCropBox(); + + if (this.cropped) { + this.renderCropBox(); + } + } + } + + return this; + }, + + /** + * Change the drag mode. + * @param {string} mode - The new drag mode. + * @returns {Cropper} this + */ + setDragMode: function setDragMode(mode) { + var options = this.options, + dragBox = this.dragBox, + face = this.face; + + if (this.ready && !this.disabled) { + var croppable = mode === DRAG_MODE_CROP; + var movable = options.movable && mode === DRAG_MODE_MOVE; + mode = croppable || movable ? mode : DRAG_MODE_NONE; + options.dragMode = mode; + setData(dragBox, DATA_ACTION, mode); + toggleClass(dragBox, CLASS_CROP, croppable); + toggleClass(dragBox, CLASS_MOVE, movable); + + if (!options.cropBoxMovable) { + // Sync drag mode to crop box when it is not movable + setData(face, DATA_ACTION, mode); + toggleClass(face, CLASS_CROP, croppable); + toggleClass(face, CLASS_MOVE, movable); + } + } + + return this; + } +}; + +var AnotherCropper = WINDOW.Cropper; + +var Cropper = +/*#__PURE__*/ +function () { + /** + * Create a new Cropper. + * @param {Element} element - The target element for cropping. + * @param {Object} [options={}] - The configuration options. + */ + function Cropper(element) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Cropper); + + if (!element || !REGEXP_TAG_NAME.test(element.tagName)) { + throw new Error('The first argument is required and must be an or element.'); + } + + this.element = element; + this.options = assign({}, DEFAULTS, isPlainObject(options) && options); + this.cropped = false; + this.disabled = false; + this.pointers = {}; + this.ready = false; + this.reloading = false; + this.replaced = false; + this.sized = false; + this.sizing = false; + this.init(); + } + + _createClass(Cropper, [{ + key: "init", + value: function init() { + var element = this.element; + var tagName = element.tagName.toLowerCase(); + var url; + + if (element[NAMESPACE]) { + return; + } + + element[NAMESPACE] = this; + + if (tagName === 'img') { + this.isImg = true; // e.g.: "img/picture.jpg" + + url = element.getAttribute('src') || ''; + this.originalUrl = url; // Stop when it's a blank image + + if (!url) { + return; + } // e.g.: "http://example.com/img/picture.jpg" + + + url = element.src; + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { + url = element.toDataURL(); + } + + this.load(url); + } + }, { + key: "load", + value: function load(url) { + var _this = this; + + if (!url) { + return; + } + + this.url = url; + this.imageData = {}; + var element = this.element, + options = this.options; + + if (!options.rotatable && !options.scalable) { + options.checkOrientation = false; + } // Only IE10+ supports Typed Arrays + + + if (!options.checkOrientation || !window.ArrayBuffer) { + this.clone(); + return; + } // Detect the mime type of the image directly if it is a Data URL + + + if (REGEXP_DATA_URL.test(url)) { + // Read ArrayBuffer from Data URL of JPEG images directly for better performance + if (REGEXP_DATA_URL_JPEG.test(url)) { + this.read(dataURLToArrayBuffer(url)); + } else { + // Only a JPEG image may contains Exif Orientation information, + // the rest types of Data URLs are not necessary to check orientation at all. + this.clone(); + } + + return; + } // 1. Detect the mime type of the image by a XMLHttpRequest. + // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image. + + + var xhr = new XMLHttpRequest(); + var clone = this.clone.bind(this); + this.reloading = true; + this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes: + // http, https, data, chrome, chrome-extension. + // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy + // in some browsers as IE11 and Safari. + + xhr.onabort = clone; + xhr.onerror = clone; + xhr.ontimeout = clone; + + xhr.onprogress = function () { + // Abort the request directly if it not a JPEG image for better performance + if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) { + xhr.abort(); + } + }; + + xhr.onload = function () { + _this.read(xhr.response); + }; + + xhr.onloadend = function () { + _this.reloading = false; + _this.xhr = null; + }; // Bust cache when there is a "crossOrigin" property to avoid browser cache error + + + if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) { + url = addTimestamp(url); + } + + xhr.open('GET', url); + xhr.responseType = 'arraybuffer'; + xhr.withCredentials = element.crossOrigin === 'use-credentials'; + xhr.send(); + } + }, { + key: "read", + value: function read(arrayBuffer) { + var options = this.options, + imageData = this.imageData; // Reset the orientation value to its default value 1 + // as some iOS browsers will render image with its orientation + + var orientation = resetAndGetOrientation(arrayBuffer); + var rotate = 0; + var scaleX = 1; + var scaleY = 1; + + if (orientation > 1) { + // Generate a new URL which has the default orientation value + this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG); + + var _parseOrientation = parseOrientation(orientation); + + rotate = _parseOrientation.rotate; + scaleX = _parseOrientation.scaleX; + scaleY = _parseOrientation.scaleY; + } + + if (options.rotatable) { + imageData.rotate = rotate; + } + + if (options.scalable) { + imageData.scaleX = scaleX; + imageData.scaleY = scaleY; + } + + this.clone(); + } + }, { + key: "clone", + value: function clone() { + var element = this.element, + url = this.url; + var crossOrigin = element.crossOrigin; + var crossOriginUrl = url; + + if (this.options.checkCrossOrigin && isCrossOriginURL(url)) { + if (!crossOrigin) { + crossOrigin = 'anonymous'; + } // Bust cache when there is not a "crossOrigin" property (#519) + + + crossOriginUrl = addTimestamp(url); + } + + this.crossOrigin = crossOrigin; + this.crossOriginUrl = crossOriginUrl; + var image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = crossOriginUrl || url; + image.alt = element.alt || 'The image to crop'; + this.image = image; + image.onload = this.start.bind(this); + image.onerror = this.stop.bind(this); + addClass(image, CLASS_HIDE); + element.parentNode.insertBefore(image, element.nextSibling); + } + }, { + key: "start", + value: function start() { + var _this2 = this; + + var image = this.image; + image.onload = null; + image.onerror = null; + this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices, + // such as Safari for iOS, Chrome for iOS, and in-app browsers. + + var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent); + + var done = function done(naturalWidth, naturalHeight) { + assign(_this2.imageData, { + naturalWidth: naturalWidth, + naturalHeight: naturalHeight, + aspectRatio: naturalWidth / naturalHeight + }); + _this2.sizing = false; + _this2.sized = true; + + _this2.build(); + }; // Most modern browsers (excepts iOS WebKit) + + + if (image.naturalWidth && !isIOSWebKit) { + done(image.naturalWidth, image.naturalHeight); + return; + } + + var sizingImage = document.createElement('img'); + var body = document.body || document.documentElement; + this.sizingImage = sizingImage; + + sizingImage.onload = function () { + done(sizingImage.width, sizingImage.height); + + if (!isIOSWebKit) { + body.removeChild(sizingImage); + } + }; + + sizingImage.src = image.src; // iOS WebKit will convert the image automatically + // with its orientation once append it into DOM (#279) + + if (!isIOSWebKit) { + sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;'; + body.appendChild(sizingImage); + } + } + }, { + key: "stop", + value: function stop() { + var image = this.image; + image.onload = null; + image.onerror = null; + image.parentNode.removeChild(image); + this.image = null; + } + }, { + key: "build", + value: function build() { + if (!this.sized || this.ready) { + return; + } + + var element = this.element, + options = this.options, + image = this.image; // Create cropper elements + + var container = element.parentNode; + var template = document.createElement('div'); + template.innerHTML = TEMPLATE; + var cropper = template.querySelector(".".concat(NAMESPACE, "-container")); + var canvas = cropper.querySelector(".".concat(NAMESPACE, "-canvas")); + var dragBox = cropper.querySelector(".".concat(NAMESPACE, "-drag-box")); + var cropBox = cropper.querySelector(".".concat(NAMESPACE, "-crop-box")); + var face = cropBox.querySelector(".".concat(NAMESPACE, "-face")); + this.container = container; + this.cropper = cropper; + this.canvas = canvas; + this.dragBox = dragBox; + this.cropBox = cropBox; + this.viewBox = cropper.querySelector(".".concat(NAMESPACE, "-view-box")); + this.face = face; + canvas.appendChild(image); // Hide the original image + + addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image + + container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden + + if (!this.isImg) { + removeClass(image, CLASS_HIDE); + } + + this.initPreview(); + this.bind(); + options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN; + options.aspectRatio = Math.max(0, options.aspectRatio) || NaN; + options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0; + addClass(cropBox, CLASS_HIDDEN); + + if (!options.guides) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-dashed")), CLASS_HIDDEN); + } + + if (!options.center) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-center")), CLASS_HIDDEN); + } + + if (options.background) { + addClass(cropper, "".concat(NAMESPACE, "-bg")); + } + + if (!options.highlight) { + addClass(face, CLASS_INVISIBLE); + } + + if (options.cropBoxMovable) { + addClass(face, CLASS_MOVE); + setData(face, DATA_ACTION, ACTION_ALL); + } + + if (!options.cropBoxResizable) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-line")), CLASS_HIDDEN); + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-point")), CLASS_HIDDEN); + } + + this.render(); + this.ready = true; + this.setDragMode(options.dragMode); + + if (options.autoCrop) { + this.crop(); + } + + this.setData(options.data); + + if (isFunction(options.ready)) { + addListener(element, EVENT_READY, options.ready, { + once: true + }); + } + + dispatchEvent(element, EVENT_READY); + } + }, { + key: "unbuild", + value: function unbuild() { + if (!this.ready) { + return; + } + + this.ready = false; + this.unbind(); + this.resetPreview(); + this.cropper.parentNode.removeChild(this.cropper); + removeClass(this.element, CLASS_HIDDEN); + } + }, { + key: "uncreate", + value: function uncreate() { + if (this.ready) { + this.unbuild(); + this.ready = false; + this.cropped = false; + } else if (this.sizing) { + this.sizingImage.onload = null; + this.sizing = false; + this.sized = false; + } else if (this.reloading) { + this.xhr.onabort = null; + this.xhr.abort(); + } else if (this.image) { + this.stop(); + } + } + /** + * Get the no conflict cropper class. + * @returns {Cropper} The cropper class. + */ + + }], [{ + key: "noConflict", + value: function noConflict() { + window.Cropper = AnotherCropper; + return Cropper; + } + /** + * Change the default options. + * @param {Object} options - The new default options. + */ + + }, { + key: "setDefaults", + value: function setDefaults(options) { + assign(DEFAULTS, isPlainObject(options) && options); + } + }]); + + return Cropper; +}(); + +assign(Cropper.prototype, render, preview, events, handlers, change, methods); + +module.exports = Cropper; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.css b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.css new file mode 100644 index 00000000..68f8a667 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.css @@ -0,0 +1,304 @@ +/*! + * Cropper.js v1.5.4 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2019-08-03T08:38:38.177Z + */ + +.cropper-container { + direction: ltr; + font-size: 0; + line-height: 0; + position: relative; + -ms-touch-action: none; + touch-action: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.cropper-container img { + display: block; + height: 100%; + image-orientation: 0deg; + max-height: none !important; + max-width: none !important; + min-height: 0 !important; + min-width: 0 !important; + width: 100%; +} + +.cropper-wrap-box, +.cropper-canvas, +.cropper-drag-box, +.cropper-crop-box, +.cropper-modal { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +.cropper-wrap-box, +.cropper-canvas { + overflow: hidden; +} + +.cropper-drag-box { + background-color: #fff; + opacity: 0; +} + +.cropper-modal { + background-color: #000; + opacity: 0.5; +} + +.cropper-view-box { + display: block; + height: 100%; + outline: 1px solid #39f; + outline-color: rgba(51, 153, 255, 0.75); + overflow: hidden; + width: 100%; +} + +.cropper-dashed { + border: 0 dashed #eee; + display: block; + opacity: 0.5; + position: absolute; +} + +.cropper-dashed.dashed-h { + border-bottom-width: 1px; + border-top-width: 1px; + height: calc(100% / 3); + left: 0; + top: calc(100% / 3); + width: 100%; +} + +.cropper-dashed.dashed-v { + border-left-width: 1px; + border-right-width: 1px; + height: 100%; + left: calc(100% / 3); + top: 0; + width: calc(100% / 3); +} + +.cropper-center { + display: block; + height: 0; + left: 50%; + opacity: 0.75; + position: absolute; + top: 50%; + width: 0; +} + +.cropper-center::before, +.cropper-center::after { + background-color: #eee; + content: ' '; + display: block; + position: absolute; +} + +.cropper-center::before { + height: 1px; + left: -3px; + top: 0; + width: 7px; +} + +.cropper-center::after { + height: 7px; + left: 0; + top: -3px; + width: 1px; +} + +.cropper-face, +.cropper-line, +.cropper-point { + display: block; + height: 100%; + opacity: 0.1; + position: absolute; + width: 100%; +} + +.cropper-face { + background-color: #fff; + left: 0; + top: 0; +} + +.cropper-line { + background-color: #39f; +} + +.cropper-line.line-e { + cursor: ew-resize; + right: -3px; + top: 0; + width: 5px; +} + +.cropper-line.line-n { + cursor: ns-resize; + height: 5px; + left: 0; + top: -3px; +} + +.cropper-line.line-w { + cursor: ew-resize; + left: -3px; + top: 0; + width: 5px; +} + +.cropper-line.line-s { + bottom: -3px; + cursor: ns-resize; + height: 5px; + left: 0; +} + +.cropper-point { + background-color: #39f; + height: 5px; + opacity: 0.75; + width: 5px; +} + +.cropper-point.point-e { + cursor: ew-resize; + margin-top: -3px; + right: -3px; + top: 50%; +} + +.cropper-point.point-n { + cursor: ns-resize; + left: 50%; + margin-left: -3px; + top: -3px; +} + +.cropper-point.point-w { + cursor: ew-resize; + left: -3px; + margin-top: -3px; + top: 50%; +} + +.cropper-point.point-s { + bottom: -3px; + cursor: s-resize; + left: 50%; + margin-left: -3px; +} + +.cropper-point.point-ne { + cursor: nesw-resize; + right: -3px; + top: -3px; +} + +.cropper-point.point-nw { + cursor: nwse-resize; + left: -3px; + top: -3px; +} + +.cropper-point.point-sw { + bottom: -3px; + cursor: nesw-resize; + left: -3px; +} + +.cropper-point.point-se { + bottom: -3px; + cursor: nwse-resize; + height: 20px; + opacity: 1; + right: -3px; + width: 20px; +} + +@media (min-width: 768px) { + .cropper-point.point-se { + height: 15px; + width: 15px; + } +} + +@media (min-width: 992px) { + .cropper-point.point-se { + height: 10px; + width: 10px; + } +} + +@media (min-width: 1200px) { + .cropper-point.point-se { + height: 5px; + opacity: 0.75; + width: 5px; + } +} + +.cropper-point.point-se::before { + background-color: #39f; + bottom: -50%; + content: ' '; + display: block; + height: 200%; + opacity: 0; + position: absolute; + right: -50%; + width: 200%; +} + +.cropper-invisible { + opacity: 0; +} + +.cropper-bg { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC'); +} + +.cropper-hide { + display: block; + height: 0; + position: absolute; + width: 0; +} + +.cropper-hidden { + display: none !important; +} + +.cropper-move { + cursor: move; +} + +.cropper-crop { + cursor: crosshair; +} + +.cropper-disabled .cropper-drag-box, +.cropper-disabled .cropper-face, +.cropper-disabled .cropper-line, +.cropper-disabled .cropper-point { + cursor: not-allowed; +} diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.esm.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.esm.js new file mode 100644 index 00000000..9bc02d09 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.esm.js @@ -0,0 +1,3558 @@ +/*! + * Cropper.js v1.5.4 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2019-08-03T08:38:42.128Z + */ + +function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); +} + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } +} + +function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); +} + +function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); +} + +var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +var WINDOW = IS_BROWSER ? window : {}; +var IS_TOUCH_DEVICE = IS_BROWSER ? 'ontouchstart' in WINDOW.document.documentElement : false; +var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false; +var NAMESPACE = 'cropper'; // Actions + +var ACTION_ALL = 'all'; +var ACTION_CROP = 'crop'; +var ACTION_MOVE = 'move'; +var ACTION_ZOOM = 'zoom'; +var ACTION_EAST = 'e'; +var ACTION_WEST = 'w'; +var ACTION_SOUTH = 's'; +var ACTION_NORTH = 'n'; +var ACTION_NORTH_EAST = 'ne'; +var ACTION_NORTH_WEST = 'nw'; +var ACTION_SOUTH_EAST = 'se'; +var ACTION_SOUTH_WEST = 'sw'; // Classes + +var CLASS_CROP = "".concat(NAMESPACE, "-crop"); +var CLASS_DISABLED = "".concat(NAMESPACE, "-disabled"); +var CLASS_HIDDEN = "".concat(NAMESPACE, "-hidden"); +var CLASS_HIDE = "".concat(NAMESPACE, "-hide"); +var CLASS_INVISIBLE = "".concat(NAMESPACE, "-invisible"); +var CLASS_MODAL = "".concat(NAMESPACE, "-modal"); +var CLASS_MOVE = "".concat(NAMESPACE, "-move"); // Data keys + +var DATA_ACTION = "".concat(NAMESPACE, "Action"); +var DATA_PREVIEW = "".concat(NAMESPACE, "Preview"); // Drag modes + +var DRAG_MODE_CROP = 'crop'; +var DRAG_MODE_MOVE = 'move'; +var DRAG_MODE_NONE = 'none'; // Events + +var EVENT_CROP = 'crop'; +var EVENT_CROP_END = 'cropend'; +var EVENT_CROP_MOVE = 'cropmove'; +var EVENT_CROP_START = 'cropstart'; +var EVENT_DBLCLICK = 'dblclick'; +var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown'; +var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove'; +var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup'; +var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START; +var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE; +var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END; +var EVENT_READY = 'ready'; +var EVENT_RESIZE = 'resize'; +var EVENT_WHEEL = 'wheel'; +var EVENT_ZOOM = 'zoom'; // Mime types + +var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps + +var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/; +var REGEXP_DATA_URL = /^data:/; +var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/; +var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc +// Inspired by the default width and height of a canvas element. + +var MIN_CONTAINER_WIDTH = 200; +var MIN_CONTAINER_HEIGHT = 100; + +var DEFAULTS = { + // Define the view mode of the cropper + viewMode: 0, + // 0, 1, 2, 3 + // Define the dragging mode of the cropper + dragMode: DRAG_MODE_CROP, + // 'crop', 'move' or 'none' + // Define the initial aspect ratio of the crop box + initialAspectRatio: NaN, + // Define the aspect ratio of the crop box + aspectRatio: NaN, + // An object with the previous cropping result data + data: null, + // A selector for adding extra containers to preview + preview: '', + // Re-render the cropper when resize the window + responsive: true, + // Restore the cropped area after resize the window + restore: true, + // Check if the current image is a cross-origin image + checkCrossOrigin: true, + // Check the current image's Exif Orientation information + checkOrientation: true, + // Show the black modal + modal: true, + // Show the dashed lines for guiding + guides: true, + // Show the center indicator for guiding + center: true, + // Show the white modal to highlight the crop box + highlight: true, + // Show the grid background + background: true, + // Enable to crop the image automatically when initialize + autoCrop: true, + // Define the percentage of automatic cropping area when initializes + autoCropArea: 0.8, + // Enable to move the image + movable: true, + // Enable to rotate the image + rotatable: true, + // Enable to scale the image + scalable: true, + // Enable to zoom the image + zoomable: true, + // Enable to zoom the image by dragging touch + zoomOnTouch: true, + // Enable to zoom the image by wheeling mouse + zoomOnWheel: true, + // Define zoom ratio when zoom the image by wheeling mouse + wheelZoomRatio: 0.1, + // Enable to move the crop box + cropBoxMovable: true, + // Enable to resize the crop box + cropBoxResizable: true, + // Toggle drag mode between "crop" and "move" when click twice on the cropper + toggleDragModeOnDblclick: true, + // Size limitation + minCanvasWidth: 0, + minCanvasHeight: 0, + minCropBoxWidth: 0, + minCropBoxHeight: 0, + minContainerWidth: 200, + minContainerHeight: 100, + // Shortcuts of events + ready: null, + cropstart: null, + cropmove: null, + cropend: null, + crop: null, + zoom: null +}; + +var TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
'; + +/** + * Check if the given value is not a number. + */ + +var isNaN = Number.isNaN || WINDOW.isNaN; +/** + * Check if the given value is a number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a number, else `false`. + */ + +function isNumber(value) { + return typeof value === 'number' && !isNaN(value); +} +/** + * Check if the given value is a positive number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a positive number, else `false`. + */ + +var isPositiveNumber = function isPositiveNumber(value) { + return value > 0 && value < Infinity; +}; +/** + * Check if the given value is undefined. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is undefined, else `false`. + */ + +function isUndefined(value) { + return typeof value === 'undefined'; +} +/** + * Check if the given value is an object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is an object, else `false`. + */ + +function isObject(value) { + return _typeof(value) === 'object' && value !== null; +} +var hasOwnProperty = Object.prototype.hasOwnProperty; +/** + * Check if the given value is a plain object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a plain object, else `false`. + */ + +function isPlainObject(value) { + if (!isObject(value)) { + return false; + } + + try { + var _constructor = value.constructor; + var prototype = _constructor.prototype; + return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf'); + } catch (error) { + return false; + } +} +/** + * Check if the given value is a function. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a function, else `false`. + */ + +function isFunction(value) { + return typeof value === 'function'; +} +var slice = Array.prototype.slice; +/** + * Convert array-like or iterable object to an array. + * @param {*} value - The value to convert. + * @returns {Array} Returns a new array. + */ + +function toArray(value) { + return Array.from ? Array.from(value) : slice.call(value); +} +/** + * Iterate the given data. + * @param {*} data - The data to iterate. + * @param {Function} callback - The process function for each element. + * @returns {*} The original data. + */ + +function forEach(data, callback) { + if (data && isFunction(callback)) { + if (Array.isArray(data) || isNumber(data.length) + /* array-like */ + ) { + toArray(data).forEach(function (value, key) { + callback.call(data, value, key, data); + }); + } else if (isObject(data)) { + Object.keys(data).forEach(function (key) { + callback.call(data, data[key], key, data); + }); + } + } + + return data; +} +/** + * Extend the given object. + * @param {*} target - The target object to extend. + * @param {*} args - The rest objects for merging to the target object. + * @returns {Object} The extended object. + */ + +var assign = Object.assign || function assign(target) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (isObject(target) && args.length > 0) { + args.forEach(function (arg) { + if (isObject(arg)) { + Object.keys(arg).forEach(function (key) { + target[key] = arg[key]; + }); + } + }); + } + + return target; +}; +var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/; +/** + * Normalize decimal number. + * Check out {@link http://0.30000000000000004.com/} + * @param {number} value - The value to normalize. + * @param {number} [times=100000000000] - The times for normalizing. + * @returns {number} Returns the normalized number. + */ + +function normalizeDecimalNumber(value) { + var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000; + return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value; +} +var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/; +/** + * Apply styles to the given element. + * @param {Element} element - The target element. + * @param {Object} styles - The styles for applying. + */ + +function setStyle(element, styles) { + var style = element.style; + forEach(styles, function (value, property) { + if (REGEXP_SUFFIX.test(property) && isNumber(value)) { + value = "".concat(value, "px"); + } + + style[property] = value; + }); +} +/** + * Check if the given element has a special class. + * @param {Element} element - The element to check. + * @param {string} value - The class to search. + * @returns {boolean} Returns `true` if the special class was found. + */ + +function hasClass(element, value) { + return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1; +} +/** + * Add classes to the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be added. + */ + +function addClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + addClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.add(value); + return; + } + + var className = element.className.trim(); + + if (!className) { + element.className = value; + } else if (className.indexOf(value) < 0) { + element.className = "".concat(className, " ").concat(value); + } +} +/** + * Remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be removed. + */ + +function removeClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + removeClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.remove(value); + return; + } + + if (element.className.indexOf(value) >= 0) { + element.className = element.className.replace(value, ''); + } +} +/** + * Add or remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be toggled. + * @param {boolean} added - Add only. + */ + +function toggleClass(element, value, added) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + toggleClass(elem, value, added); + }); + return; + } // IE10-11 doesn't support the second parameter of `classList.toggle` + + + if (added) { + addClass(element, value); + } else { + removeClass(element, value); + } +} +var REGEXP_CAMEL_CASE = /([a-z\d])([A-Z])/g; +/** + * Transform the given string from camelCase to kebab-case + * @param {string} value - The value to transform. + * @returns {string} The transformed value. + */ + +function toParamCase(value) { + return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase(); +} +/** + * Get data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to get. + * @returns {string} The data value. + */ + +function getData(element, name) { + if (isObject(element[name])) { + return element[name]; + } + + if (element.dataset) { + return element.dataset[name]; + } + + return element.getAttribute("data-".concat(toParamCase(name))); +} +/** + * Set data to the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to set. + * @param {string} data - The data value. + */ + +function setData(element, name, data) { + if (isObject(data)) { + element[name] = data; + } else if (element.dataset) { + element.dataset[name] = data; + } else { + element.setAttribute("data-".concat(toParamCase(name)), data); + } +} +/** + * Remove data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to remove. + */ + +function removeData(element, name) { + if (isObject(element[name])) { + try { + delete element[name]; + } catch (error) { + element[name] = undefined; + } + } else if (element.dataset) { + // #128 Safari not allows to delete dataset property + try { + delete element.dataset[name]; + } catch (error) { + element.dataset[name] = undefined; + } + } else { + element.removeAttribute("data-".concat(toParamCase(name))); + } +} +var REGEXP_SPACES = /\s\s*/; + +var onceSupported = function () { + var supported = false; + + if (IS_BROWSER) { + var once = false; + + var listener = function listener() {}; + + var options = Object.defineProperty({}, 'once', { + get: function get() { + supported = true; + return once; + }, + + /** + * This setter can fix a `TypeError` in strict mode + * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only} + * @param {boolean} value - The value to set + */ + set: function set(value) { + once = value; + } + }); + WINDOW.addEventListener('test', listener, options); + WINDOW.removeEventListener('test', listener, options); + } + + return supported; +}(); +/** + * Remove event listener from the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ + + +function removeListener(element, type, listener) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var handler = listener; + type.trim().split(REGEXP_SPACES).forEach(function (event) { + if (!onceSupported) { + var listeners = element.listeners; + + if (listeners && listeners[event] && listeners[event][listener]) { + handler = listeners[event][listener]; + delete listeners[event][listener]; + + if (Object.keys(listeners[event]).length === 0) { + delete listeners[event]; + } + + if (Object.keys(listeners).length === 0) { + delete element.listeners; + } + } + } + + element.removeEventListener(event, handler, options); + }); +} +/** + * Add event listener to the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ + +function addListener(element, type, listener) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var _handler = listener; + type.trim().split(REGEXP_SPACES).forEach(function (event) { + if (options.once && !onceSupported) { + var _element$listeners = element.listeners, + listeners = _element$listeners === void 0 ? {} : _element$listeners; + + _handler = function handler() { + delete listeners[event][listener]; + element.removeEventListener(event, _handler, options); + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + listener.apply(element, args); + }; + + if (!listeners[event]) { + listeners[event] = {}; + } + + if (listeners[event][listener]) { + element.removeEventListener(event, listeners[event][listener], options); + } + + listeners[event][listener] = _handler; + element.listeners = listeners; + } + + element.addEventListener(event, _handler, options); + }); +} +/** + * Dispatch event on the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Object} data - The additional event data. + * @returns {boolean} Indicate if the event is default prevented or not. + */ + +function dispatchEvent(element, type, data) { + var event; // Event and CustomEvent on IE9-11 are global objects, not constructors + + if (isFunction(Event) && isFunction(CustomEvent)) { + event = new CustomEvent(type, { + detail: data, + bubbles: true, + cancelable: true + }); + } else { + event = document.createEvent('CustomEvent'); + event.initCustomEvent(type, true, true, data); + } + + return element.dispatchEvent(event); +} +/** + * Get the offset base on the document. + * @param {Element} element - The target element. + * @returns {Object} The offset data. + */ + +function getOffset(element) { + var box = element.getBoundingClientRect(); + return { + left: box.left + (window.pageXOffset - document.documentElement.clientLeft), + top: box.top + (window.pageYOffset - document.documentElement.clientTop) + }; +} +var location = WINDOW.location; +var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i; +/** + * Check if the given URL is a cross origin URL. + * @param {string} url - The target URL. + * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`. + */ + +function isCrossOriginURL(url) { + var parts = url.match(REGEXP_ORIGINS); + return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port); +} +/** + * Add timestamp to the given URL. + * @param {string} url - The target URL. + * @returns {string} The result URL. + */ + +function addTimestamp(url) { + var timestamp = "timestamp=".concat(new Date().getTime()); + return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp; +} +/** + * Get transforms base on the given object. + * @param {Object} obj - The target object. + * @returns {string} A string contains transform values. + */ + +function getTransforms(_ref) { + var rotate = _ref.rotate, + scaleX = _ref.scaleX, + scaleY = _ref.scaleY, + translateX = _ref.translateX, + translateY = _ref.translateY; + var values = []; + + if (isNumber(translateX) && translateX !== 0) { + values.push("translateX(".concat(translateX, "px)")); + } + + if (isNumber(translateY) && translateY !== 0) { + values.push("translateY(".concat(translateY, "px)")); + } // Rotate should come first before scale to match orientation transform + + + if (isNumber(rotate) && rotate !== 0) { + values.push("rotate(".concat(rotate, "deg)")); + } + + if (isNumber(scaleX) && scaleX !== 1) { + values.push("scaleX(".concat(scaleX, ")")); + } + + if (isNumber(scaleY) && scaleY !== 1) { + values.push("scaleY(".concat(scaleY, ")")); + } + + var transform = values.length ? values.join(' ') : 'none'; + return { + WebkitTransform: transform, + msTransform: transform, + transform: transform + }; +} +/** + * Get the max ratio of a group of pointers. + * @param {string} pointers - The target pointers. + * @returns {number} The result ratio. + */ + +function getMaxZoomRatio(pointers) { + var pointers2 = assign({}, pointers); + var ratios = []; + forEach(pointers, function (pointer, pointerId) { + delete pointers2[pointerId]; + forEach(pointers2, function (pointer2) { + var x1 = Math.abs(pointer.startX - pointer2.startX); + var y1 = Math.abs(pointer.startY - pointer2.startY); + var x2 = Math.abs(pointer.endX - pointer2.endX); + var y2 = Math.abs(pointer.endY - pointer2.endY); + var z1 = Math.sqrt(x1 * x1 + y1 * y1); + var z2 = Math.sqrt(x2 * x2 + y2 * y2); + var ratio = (z2 - z1) / z1; + ratios.push(ratio); + }); + }); + ratios.sort(function (a, b) { + return Math.abs(a) < Math.abs(b); + }); + return ratios[0]; +} +/** + * Get a pointer from an event object. + * @param {Object} event - The target event object. + * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not. + * @returns {Object} The result pointer contains start and/or end point coordinates. + */ + +function getPointer(_ref2, endOnly) { + var pageX = _ref2.pageX, + pageY = _ref2.pageY; + var end = { + endX: pageX, + endY: pageY + }; + return endOnly ? end : assign({ + startX: pageX, + startY: pageY + }, end); +} +/** + * Get the center point coordinate of a group of pointers. + * @param {Object} pointers - The target pointers. + * @returns {Object} The center point coordinate. + */ + +function getPointersCenter(pointers) { + var pageX = 0; + var pageY = 0; + var count = 0; + forEach(pointers, function (_ref3) { + var startX = _ref3.startX, + startY = _ref3.startY; + pageX += startX; + pageY += startY; + count += 1; + }); + pageX /= count; + pageY /= count; + return { + pageX: pageX, + pageY: pageY + }; +} +/** + * Get the max sizes in a rectangle under the given aspect ratio. + * @param {Object} data - The original sizes. + * @param {string} [type='contain'] - The adjust type. + * @returns {Object} The result sizes. + */ + +function getAdjustedSizes(_ref4) // or 'cover' +{ + var aspectRatio = _ref4.aspectRatio, + height = _ref4.height, + width = _ref4.width; + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain'; + var isValidWidth = isPositiveNumber(width); + var isValidHeight = isPositiveNumber(height); + + if (isValidWidth && isValidHeight) { + var adjustedWidth = height * aspectRatio; + + if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) { + height = width / aspectRatio; + } else { + width = height * aspectRatio; + } + } else if (isValidWidth) { + height = width / aspectRatio; + } else if (isValidHeight) { + width = height * aspectRatio; + } + + return { + width: width, + height: height + }; +} +/** + * Get the new sizes of a rectangle after rotated. + * @param {Object} data - The original sizes. + * @returns {Object} The result sizes. + */ + +function getRotatedSizes(_ref5) { + var width = _ref5.width, + height = _ref5.height, + degree = _ref5.degree; + degree = Math.abs(degree) % 180; + + if (degree === 90) { + return { + width: height, + height: width + }; + } + + var arc = degree % 90 * Math.PI / 180; + var sinArc = Math.sin(arc); + var cosArc = Math.cos(arc); + var newWidth = width * cosArc + height * sinArc; + var newHeight = width * sinArc + height * cosArc; + return degree > 90 ? { + width: newHeight, + height: newWidth + } : { + width: newWidth, + height: newHeight + }; +} +/** + * Get a canvas which drew the given image. + * @param {HTMLImageElement} image - The image for drawing. + * @param {Object} imageData - The image data. + * @param {Object} canvasData - The canvas data. + * @param {Object} options - The options. + * @returns {HTMLCanvasElement} The result canvas. + */ + +function getSourceCanvas(image, _ref6, _ref7, _ref8) { + var imageAspectRatio = _ref6.aspectRatio, + imageNaturalWidth = _ref6.naturalWidth, + imageNaturalHeight = _ref6.naturalHeight, + _ref6$rotate = _ref6.rotate, + rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate, + _ref6$scaleX = _ref6.scaleX, + scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX, + _ref6$scaleY = _ref6.scaleY, + scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY; + var aspectRatio = _ref7.aspectRatio, + naturalWidth = _ref7.naturalWidth, + naturalHeight = _ref7.naturalHeight; + var _ref8$fillColor = _ref8.fillColor, + fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor, + _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled, + imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE, + _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality, + imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ, + _ref8$maxWidth = _ref8.maxWidth, + maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth, + _ref8$maxHeight = _ref8.maxHeight, + maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight, + _ref8$minWidth = _ref8.minWidth, + minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth, + _ref8$minHeight = _ref8.minHeight, + minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight; + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + var maxSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: maxWidth, + height: maxHeight + }); + var minSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: minWidth, + height: minHeight + }, 'cover'); + var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth)); + var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as + // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90 + + var destMaxSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: maxWidth, + height: maxHeight + }); + var destMinSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: minWidth, + height: minHeight + }, 'cover'); + var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth)); + var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight)); + var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight]; + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + context.fillStyle = fillColor; + context.fillRect(0, 0, width, height); + context.save(); + context.translate(width / 2, height / 2); + context.rotate(rotate * Math.PI / 180); + context.scale(scaleX, scaleY); + context.imageSmoothingEnabled = imageSmoothingEnabled; + context.imageSmoothingQuality = imageSmoothingQuality; + context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) { + return Math.floor(normalizeDecimalNumber(param)); + })))); + context.restore(); + return canvas; +} +var fromCharCode = String.fromCharCode; +/** + * Get string from char code in data view. + * @param {DataView} dataView - The data view for read. + * @param {number} start - The start index. + * @param {number} length - The read length. + * @returns {string} The read result. + */ + +function getStringFromCharCode(dataView, start, length) { + var str = ''; + length += start; + + for (var i = start; i < length; i += 1) { + str += fromCharCode(dataView.getUint8(i)); + } + + return str; +} +var REGEXP_DATA_URL_HEAD = /^data:.*,/; +/** + * Transform Data URL to array buffer. + * @param {string} dataURL - The Data URL to transform. + * @returns {ArrayBuffer} The result array buffer. + */ + +function dataURLToArrayBuffer(dataURL) { + var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, ''); + var binary = atob(base64); + var arrayBuffer = new ArrayBuffer(binary.length); + var uint8 = new Uint8Array(arrayBuffer); + forEach(uint8, function (value, i) { + uint8[i] = binary.charCodeAt(i); + }); + return arrayBuffer; +} +/** + * Transform array buffer to Data URL. + * @param {ArrayBuffer} arrayBuffer - The array buffer to transform. + * @param {string} mimeType - The mime type of the Data URL. + * @returns {string} The result Data URL. + */ + +function arrayBufferToDataURL(arrayBuffer, mimeType) { + var chunks = []; // Chunk Typed Array for better performance (#435) + + var chunkSize = 8192; + var uint8 = new Uint8Array(arrayBuffer); + + while (uint8.length > 0) { + // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9 + // eslint-disable-next-line prefer-spread + chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize)))); + uint8 = uint8.subarray(chunkSize); + } + + return "data:".concat(mimeType, ";base64,").concat(btoa(chunks.join(''))); +} +/** + * Get orientation value from given array buffer. + * @param {ArrayBuffer} arrayBuffer - The array buffer to read. + * @returns {number} The read orientation value. + */ + +function resetAndGetOrientation(arrayBuffer) { + var dataView = new DataView(arrayBuffer); + var orientation; // Ignores range error when the image does not have correct Exif information + + try { + var littleEndian; + var app1Start; + var ifdStart; // Only handle JPEG image (start by 0xFFD8) + + if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) { + var length = dataView.byteLength; + var offset = 2; + + while (offset + 1 < length) { + if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) { + app1Start = offset; + break; + } + + offset += 1; + } + } + + if (app1Start) { + var exifIDCode = app1Start + 4; + var tiffOffset = app1Start + 10; + + if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') { + var endianness = dataView.getUint16(tiffOffset); + littleEndian = endianness === 0x4949; + + if (littleEndian || endianness === 0x4D4D + /* bigEndian */ + ) { + if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) { + var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian); + + if (firstIFDOffset >= 0x00000008) { + ifdStart = tiffOffset + firstIFDOffset; + } + } + } + } + } + + if (ifdStart) { + var _length = dataView.getUint16(ifdStart, littleEndian); + + var _offset; + + var i; + + for (i = 0; i < _length; i += 1) { + _offset = ifdStart + i * 12 + 2; + + if (dataView.getUint16(_offset, littleEndian) === 0x0112 + /* Orientation */ + ) { + // 8 is the offset of the current tag's value + _offset += 8; // Get the original orientation value + + orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value + + dataView.setUint16(_offset, 1, littleEndian); + break; + } + } + } + } catch (error) { + orientation = 1; + } + + return orientation; +} +/** + * Parse Exif Orientation value. + * @param {number} orientation - The orientation to parse. + * @returns {Object} The parsed result. + */ + +function parseOrientation(orientation) { + var rotate = 0; + var scaleX = 1; + var scaleY = 1; + + switch (orientation) { + // Flip horizontal + case 2: + scaleX = -1; + break; + // Rotate left 180° + + case 3: + rotate = -180; + break; + // Flip vertical + + case 4: + scaleY = -1; + break; + // Flip vertical and rotate right 90° + + case 5: + rotate = 90; + scaleY = -1; + break; + // Rotate right 90° + + case 6: + rotate = 90; + break; + // Flip horizontal and rotate right 90° + + case 7: + rotate = 90; + scaleX = -1; + break; + // Rotate left 90° + + case 8: + rotate = -90; + break; + + default: + } + + return { + rotate: rotate, + scaleX: scaleX, + scaleY: scaleY + }; +} + +var render = { + render: function render() { + this.initContainer(); + this.initCanvas(); + this.initCropBox(); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + }, + initContainer: function initContainer() { + var element = this.element, + options = this.options, + container = this.container, + cropper = this.cropper; + addClass(cropper, CLASS_HIDDEN); + removeClass(element, CLASS_HIDDEN); + var containerData = { + width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200), + height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100) + }; + this.containerData = containerData; + setStyle(cropper, { + width: containerData.width, + height: containerData.height + }); + addClass(element, CLASS_HIDDEN); + removeClass(cropper, CLASS_HIDDEN); + }, + // Canvas (image wrapper) + initCanvas: function initCanvas() { + var containerData = this.containerData, + imageData = this.imageData; + var viewMode = this.options.viewMode; + var rotated = Math.abs(imageData.rotate) % 180 === 90; + var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth; + var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight; + var aspectRatio = naturalWidth / naturalHeight; + var canvasWidth = containerData.width; + var canvasHeight = containerData.height; + + if (containerData.height * aspectRatio > containerData.width) { + if (viewMode === 3) { + canvasWidth = containerData.height * aspectRatio; + } else { + canvasHeight = containerData.width / aspectRatio; + } + } else if (viewMode === 3) { + canvasHeight = containerData.width / aspectRatio; + } else { + canvasWidth = containerData.height * aspectRatio; + } + + var canvasData = { + aspectRatio: aspectRatio, + naturalWidth: naturalWidth, + naturalHeight: naturalHeight, + width: canvasWidth, + height: canvasHeight + }; + canvasData.left = (containerData.width - canvasWidth) / 2; + canvasData.top = (containerData.height - canvasHeight) / 2; + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + this.canvasData = canvasData; + this.limited = viewMode === 1 || viewMode === 2; + this.limitCanvas(true, true); + this.initialImageData = assign({}, imageData); + this.initialCanvasData = assign({}, canvasData); + }, + limitCanvas: function limitCanvas(sizeLimited, positionLimited) { + var options = this.options, + containerData = this.containerData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var viewMode = options.viewMode; + var aspectRatio = canvasData.aspectRatio; + var cropped = this.cropped && cropBoxData; + + if (sizeLimited) { + var minCanvasWidth = Number(options.minCanvasWidth) || 0; + var minCanvasHeight = Number(options.minCanvasHeight) || 0; + + if (viewMode > 1) { + minCanvasWidth = Math.max(minCanvasWidth, containerData.width); + minCanvasHeight = Math.max(minCanvasHeight, containerData.height); + + if (viewMode === 3) { + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } else if (viewMode > 0) { + if (minCanvasWidth) { + minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0); + } else if (minCanvasHeight) { + minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0); + } else if (cropped) { + minCanvasWidth = cropBoxData.width; + minCanvasHeight = cropBoxData.height; + + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } + + var _getAdjustedSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: minCanvasWidth, + height: minCanvasHeight + }); + + minCanvasWidth = _getAdjustedSizes.width; + minCanvasHeight = _getAdjustedSizes.height; + canvasData.minWidth = minCanvasWidth; + canvasData.minHeight = minCanvasHeight; + canvasData.maxWidth = Infinity; + canvasData.maxHeight = Infinity; + } + + if (positionLimited) { + if (viewMode > (cropped ? 0 : 1)) { + var newCanvasLeft = containerData.width - canvasData.width; + var newCanvasTop = containerData.height - canvasData.height; + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + canvasData.maxTop = Math.max(0, newCanvasTop); + + if (cropped && this.limited) { + canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width)); + canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height)); + canvasData.maxLeft = cropBoxData.left; + canvasData.maxTop = cropBoxData.top; + + if (viewMode === 2) { + if (canvasData.width >= containerData.width) { + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + } + + if (canvasData.height >= containerData.height) { + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxTop = Math.max(0, newCanvasTop); + } + } + } + } else { + canvasData.minLeft = -canvasData.width; + canvasData.minTop = -canvasData.height; + canvasData.maxLeft = containerData.width; + canvasData.maxTop = containerData.height; + } + } + }, + renderCanvas: function renderCanvas(changed, transformed) { + var canvasData = this.canvasData, + imageData = this.imageData; + + if (transformed) { + var _getRotatedSizes = getRotatedSizes({ + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0 + }), + naturalWidth = _getRotatedSizes.width, + naturalHeight = _getRotatedSizes.height; + + var width = canvasData.width * (naturalWidth / canvasData.naturalWidth); + var height = canvasData.height * (naturalHeight / canvasData.naturalHeight); + canvasData.left -= (width - canvasData.width) / 2; + canvasData.top -= (height - canvasData.height) / 2; + canvasData.width = width; + canvasData.height = height; + canvasData.aspectRatio = naturalWidth / naturalHeight; + canvasData.naturalWidth = naturalWidth; + canvasData.naturalHeight = naturalHeight; + this.limitCanvas(true, false); + } + + if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) { + canvasData.left = canvasData.oldLeft; + } + + if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) { + canvasData.top = canvasData.oldTop; + } + + canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth); + canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight); + this.limitCanvas(false, true); + canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft); + canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop); + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + setStyle(this.canvas, assign({ + width: canvasData.width, + height: canvasData.height + }, getTransforms({ + translateX: canvasData.left, + translateY: canvasData.top + }))); + this.renderImage(changed); + + if (this.cropped && this.limited) { + this.limitCropBox(true, true); + } + }, + renderImage: function renderImage(changed) { + var canvasData = this.canvasData, + imageData = this.imageData; + var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth); + var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight); + assign(imageData, { + width: width, + height: height, + left: (canvasData.width - width) / 2, + top: (canvasData.height - height) / 2 + }); + setStyle(this.image, assign({ + width: imageData.width, + height: imageData.height + }, getTransforms(assign({ + translateX: imageData.left, + translateY: imageData.top + }, imageData)))); + + if (changed) { + this.output(); + } + }, + initCropBox: function initCropBox() { + var options = this.options, + canvasData = this.canvasData; + var aspectRatio = options.aspectRatio || options.initialAspectRatio; + var autoCropArea = Number(options.autoCropArea) || 0.8; + var cropBoxData = { + width: canvasData.width, + height: canvasData.height + }; + + if (aspectRatio) { + if (canvasData.height * aspectRatio > canvasData.width) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.cropBoxData = cropBoxData; + this.limitCropBox(true, true); // Initialize auto crop area + + cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); + cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than "minWidth/Height" + + cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea); + cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea); + cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2; + cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2; + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + this.initialCropBoxData = assign({}, cropBoxData); + }, + limitCropBox: function limitCropBox(sizeLimited, positionLimited) { + var options = this.options, + containerData = this.containerData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData, + limited = this.limited; + var aspectRatio = options.aspectRatio; + + if (sizeLimited) { + var minCropBoxWidth = Number(options.minCropBoxWidth) || 0; + var minCropBoxHeight = Number(options.minCropBoxHeight) || 0; + var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width; + var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height + + minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width); + minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height); + + if (aspectRatio) { + if (minCropBoxWidth && minCropBoxHeight) { + if (minCropBoxHeight * aspectRatio > minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + } else if (minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else if (minCropBoxHeight) { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + + if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) { + maxCropBoxHeight = maxCropBoxWidth / aspectRatio; + } else { + maxCropBoxWidth = maxCropBoxHeight * aspectRatio; + } + } // The minWidth/Height must be less than maxWidth/Height + + + cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth); + cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight); + cropBoxData.maxWidth = maxCropBoxWidth; + cropBoxData.maxHeight = maxCropBoxHeight; + } + + if (positionLimited) { + if (limited) { + cropBoxData.minLeft = Math.max(0, canvasData.left); + cropBoxData.minTop = Math.max(0, canvasData.top); + cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width; + cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height; + } else { + cropBoxData.minLeft = 0; + cropBoxData.minTop = 0; + cropBoxData.maxLeft = containerData.width - cropBoxData.width; + cropBoxData.maxTop = containerData.height - cropBoxData.height; + } + } + }, + renderCropBox: function renderCropBox() { + var options = this.options, + containerData = this.containerData, + cropBoxData = this.cropBoxData; + + if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) { + cropBoxData.left = cropBoxData.oldLeft; + } + + if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) { + cropBoxData.top = cropBoxData.oldTop; + } + + cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); + cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); + this.limitCropBox(false, true); + cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft); + cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop); + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + + if (options.movable && options.cropBoxMovable) { + // Turn to move the canvas when the crop box is equal to the container + setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL); + } + + setStyle(this.cropBox, assign({ + width: cropBoxData.width, + height: cropBoxData.height + }, getTransforms({ + translateX: cropBoxData.left, + translateY: cropBoxData.top + }))); + + if (this.cropped && this.limited) { + this.limitCanvas(true, true); + } + + if (!this.disabled) { + this.output(); + } + }, + output: function output() { + this.preview(); + dispatchEvent(this.element, EVENT_CROP, this.getData()); + } +}; + +var preview = { + initPreview: function initPreview() { + var element = this.element, + crossOrigin = this.crossOrigin; + var preview = this.options.preview; + var url = crossOrigin ? this.crossOriginUrl : this.url; + var alt = element.alt || 'The image to preview'; + var image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = url; + image.alt = alt; + this.viewBox.appendChild(image); + this.viewBoxImage = image; + + if (!preview) { + return; + } + + var previews = preview; + + if (typeof preview === 'string') { + previews = element.ownerDocument.querySelectorAll(preview); + } else if (preview.querySelector) { + previews = [preview]; + } + + this.previews = previews; + forEach(previews, function (el) { + var img = document.createElement('img'); // Save the original size for recover + + setData(el, DATA_PREVIEW, { + width: el.offsetWidth, + height: el.offsetHeight, + html: el.innerHTML + }); + + if (crossOrigin) { + img.crossOrigin = crossOrigin; + } + + img.src = url; + img.alt = alt; + /** + * Override img element styles + * Add `display:block` to avoid margin top issue + * Add `height:auto` to override `height` attribute on IE8 + * (Occur only when margin-top <= -height) + */ + + img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"'; + el.innerHTML = ''; + el.appendChild(img); + }); + }, + resetPreview: function resetPreview() { + forEach(this.previews, function (element) { + var data = getData(element, DATA_PREVIEW); + setStyle(element, { + width: data.width, + height: data.height + }); + element.innerHTML = data.html; + removeData(element, DATA_PREVIEW); + }); + }, + preview: function preview() { + var imageData = this.imageData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var cropBoxWidth = cropBoxData.width, + cropBoxHeight = cropBoxData.height; + var width = imageData.width, + height = imageData.height; + var left = cropBoxData.left - canvasData.left - imageData.left; + var top = cropBoxData.top - canvasData.top - imageData.top; + + if (!this.cropped || this.disabled) { + return; + } + + setStyle(this.viewBoxImage, assign({ + width: width, + height: height + }, getTransforms(assign({ + translateX: -left, + translateY: -top + }, imageData)))); + forEach(this.previews, function (element) { + var data = getData(element, DATA_PREVIEW); + var originalWidth = data.width; + var originalHeight = data.height; + var newWidth = originalWidth; + var newHeight = originalHeight; + var ratio = 1; + + if (cropBoxWidth) { + ratio = originalWidth / cropBoxWidth; + newHeight = cropBoxHeight * ratio; + } + + if (cropBoxHeight && newHeight > originalHeight) { + ratio = originalHeight / cropBoxHeight; + newWidth = cropBoxWidth * ratio; + newHeight = originalHeight; + } + + setStyle(element, { + width: newWidth, + height: newHeight + }); + setStyle(element.getElementsByTagName('img')[0], assign({ + width: width * ratio, + height: height * ratio + }, getTransforms(assign({ + translateX: -left * ratio, + translateY: -top * ratio + }, imageData)))); + }); + } +}; + +var events = { + bind: function bind() { + var element = this.element, + options = this.options, + cropper = this.cropper; + + if (isFunction(options.cropstart)) { + addListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + addListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + addListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + addListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + addListener(element, EVENT_ZOOM, options.zoom); + } + + addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this)); + + if (options.zoomable && options.zoomOnWheel) { + addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), { + passive: false, + capture: true + }); + } + + if (options.toggleDragModeOnDblclick) { + addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this)); + } + + addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this)); + addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this)); + + if (options.responsive) { + addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this)); + } + }, + unbind: function unbind() { + var element = this.element, + options = this.options, + cropper = this.cropper; + + if (isFunction(options.cropstart)) { + removeListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + removeListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + removeListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + removeListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + removeListener(element, EVENT_ZOOM, options.zoom); + } + + removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart); + + if (options.zoomable && options.zoomOnWheel) { + removeListener(cropper, EVENT_WHEEL, this.onWheel, { + passive: false, + capture: true + }); + } + + if (options.toggleDragModeOnDblclick) { + removeListener(cropper, EVENT_DBLCLICK, this.onDblclick); + } + + removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove); + removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd); + + if (options.responsive) { + removeListener(window, EVENT_RESIZE, this.onResize); + } + } +}; + +var handlers = { + resize: function resize() { + var options = this.options, + container = this.container, + containerData = this.containerData; + var minContainerWidth = Number(options.minContainerWidth) || MIN_CONTAINER_WIDTH; + var minContainerHeight = Number(options.minContainerHeight) || MIN_CONTAINER_HEIGHT; + + if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) { + return; + } + + var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed + + if (ratio !== 1 || container.offsetHeight !== containerData.height) { + var canvasData; + var cropBoxData; + + if (options.restore) { + canvasData = this.getCanvasData(); + cropBoxData = this.getCropBoxData(); + } + + this.render(); + + if (options.restore) { + this.setCanvasData(forEach(canvasData, function (n, i) { + canvasData[i] = n * ratio; + })); + this.setCropBoxData(forEach(cropBoxData, function (n, i) { + cropBoxData[i] = n * ratio; + })); + } + } + }, + dblclick: function dblclick() { + if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) { + return; + } + + this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP); + }, + wheel: function wheel(event) { + var _this = this; + + var ratio = Number(this.options.wheelZoomRatio) || 0.1; + var delta = 1; + + if (this.disabled) { + return; + } + + event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21) + + if (this.wheeling) { + return; + } + + this.wheeling = true; + setTimeout(function () { + _this.wheeling = false; + }, 50); + + if (event.deltaY) { + delta = event.deltaY > 0 ? 1 : -1; + } else if (event.wheelDelta) { + delta = -event.wheelDelta / 120; + } else if (event.detail) { + delta = event.detail > 0 ? 1 : -1; + } + + this.zoom(-delta * ratio, event); + }, + cropStart: function cropStart(event) { + var buttons = event.buttons, + button = event.button; + + if (this.disabled // No primary button (Usually the left button) + // Note that touch events have no `buttons` or `button` property + || isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu + || event.ctrlKey) { + return; + } + + var options = this.options, + pointers = this.pointers; + var action; + + if (event.changedTouches) { + // Handle touch event + forEach(event.changedTouches, function (touch) { + pointers[touch.identifier] = getPointer(touch); + }); + } else { + // Handle mouse event and pointer event + pointers[event.pointerId || 0] = getPointer(event); + } + + if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) { + action = ACTION_ZOOM; + } else { + action = getData(event.target, DATA_ACTION); + } + + if (!REGEXP_ACTIONS.test(action)) { + return; + } + + if (dispatchEvent(this.element, EVENT_CROP_START, { + originalEvent: event, + action: action + }) === false) { + return; + } // This line is required for preventing page zooming in iOS browsers + + + event.preventDefault(); + this.action = action; + this.cropping = false; + + if (action === ACTION_CROP) { + this.cropping = true; + addClass(this.dragBox, CLASS_MODAL); + } + }, + cropMove: function cropMove(event) { + var action = this.action; + + if (this.disabled || !action) { + return; + } + + var pointers = this.pointers; + event.preventDefault(); + + if (dispatchEvent(this.element, EVENT_CROP_MOVE, { + originalEvent: event, + action: action + }) === false) { + return; + } + + if (event.changedTouches) { + forEach(event.changedTouches, function (touch) { + // The first parameter should not be undefined (#432) + assign(pointers[touch.identifier] || {}, getPointer(touch, true)); + }); + } else { + assign(pointers[event.pointerId || 0] || {}, getPointer(event, true)); + } + + this.change(event); + }, + cropEnd: function cropEnd(event) { + if (this.disabled) { + return; + } + + var action = this.action, + pointers = this.pointers; + + if (event.changedTouches) { + forEach(event.changedTouches, function (touch) { + delete pointers[touch.identifier]; + }); + } else { + delete pointers[event.pointerId || 0]; + } + + if (!action) { + return; + } + + event.preventDefault(); + + if (!Object.keys(pointers).length) { + this.action = ''; + } + + if (this.cropping) { + this.cropping = false; + toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal); + } + + dispatchEvent(this.element, EVENT_CROP_END, { + originalEvent: event, + action: action + }); + } +}; + +var change = { + change: function change(event) { + var options = this.options, + canvasData = this.canvasData, + containerData = this.containerData, + cropBoxData = this.cropBoxData, + pointers = this.pointers; + var action = this.action; + var aspectRatio = options.aspectRatio; + var left = cropBoxData.left, + top = cropBoxData.top, + width = cropBoxData.width, + height = cropBoxData.height; + var right = left + width; + var bottom = top + height; + var minLeft = 0; + var minTop = 0; + var maxWidth = containerData.width; + var maxHeight = containerData.height; + var renderable = true; + var offset; // Locking aspect ratio in "free mode" by holding shift key + + if (!aspectRatio && event.shiftKey) { + aspectRatio = width && height ? width / height : 1; + } + + if (this.limited) { + minLeft = cropBoxData.minLeft; + minTop = cropBoxData.minTop; + maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width); + maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height); + } + + var pointer = pointers[Object.keys(pointers)[0]]; + var range = { + x: pointer.endX - pointer.startX, + y: pointer.endY - pointer.startY + }; + + var check = function check(side) { + switch (side) { + case ACTION_EAST: + if (right + range.x > maxWidth) { + range.x = maxWidth - right; + } + + break; + + case ACTION_WEST: + if (left + range.x < minLeft) { + range.x = minLeft - left; + } + + break; + + case ACTION_NORTH: + if (top + range.y < minTop) { + range.y = minTop - top; + } + + break; + + case ACTION_SOUTH: + if (bottom + range.y > maxHeight) { + range.y = maxHeight - bottom; + } + + break; + + default: + } + }; + + switch (action) { + // Move crop box + case ACTION_ALL: + left += range.x; + top += range.y; + break; + // Resize crop box + + case ACTION_EAST: + if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + + if (width < 0) { + action = ACTION_WEST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_NORTH: + if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + + if (height < 0) { + action = ACTION_SOUTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_WEST: + if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + + if (width < 0) { + action = ACTION_EAST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_SOUTH: + if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) { + renderable = false; + break; + } + + check(ACTION_SOUTH); + height += range.y; + + if (height < 0) { + action = ACTION_NORTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_NORTH_EAST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || right >= maxWidth)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + } else { + check(ACTION_NORTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + top -= height; + } + + break; + + case ACTION_NORTH_WEST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || left <= minLeft)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + left += cropBoxData.width - width; + } else { + check(ACTION_NORTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_WEST: + if (aspectRatio) { + if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_EAST: + if (aspectRatio) { + if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + top -= height; + } + + break; + // Move canvas + + case ACTION_MOVE: + this.move(range.x, range.y); + renderable = false; + break; + // Zoom canvas + + case ACTION_ZOOM: + this.zoom(getMaxZoomRatio(pointers), event); + renderable = false; + break; + // Create crop box + + case ACTION_CROP: + if (!range.x || !range.y) { + renderable = false; + break; + } + + offset = getOffset(this.cropper); + left = pointer.startX - offset.left; + top = pointer.startY - offset.top; + width = cropBoxData.minWidth; + height = cropBoxData.minHeight; + + if (range.x > 0) { + action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST; + } else if (range.x < 0) { + left -= width; + action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST; + } + + if (range.y < 0) { + top -= height; + } // Show the crop box if is hidden + + + if (!this.cropped) { + removeClass(this.cropBox, CLASS_HIDDEN); + this.cropped = true; + + if (this.limited) { + this.limitCropBox(true, true); + } + } + + break; + + default: + } + + if (renderable) { + cropBoxData.width = width; + cropBoxData.height = height; + cropBoxData.left = left; + cropBoxData.top = top; + this.action = action; + this.renderCropBox(); + } // Override + + + forEach(pointers, function (p) { + p.startX = p.endX; + p.startY = p.endY; + }); + } +}; + +var methods = { + // Show the crop box manually + crop: function crop() { + if (this.ready && !this.cropped && !this.disabled) { + this.cropped = true; + this.limitCropBox(true, true); + + if (this.options.modal) { + addClass(this.dragBox, CLASS_MODAL); + } + + removeClass(this.cropBox, CLASS_HIDDEN); + this.setCropBoxData(this.initialCropBoxData); + } + + return this; + }, + // Reset the image and crop box to their initial states + reset: function reset() { + if (this.ready && !this.disabled) { + this.imageData = assign({}, this.initialImageData); + this.canvasData = assign({}, this.initialCanvasData); + this.cropBoxData = assign({}, this.initialCropBoxData); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + } + + return this; + }, + // Clear the crop box + clear: function clear() { + if (this.cropped && !this.disabled) { + assign(this.cropBoxData, { + left: 0, + top: 0, + width: 0, + height: 0 + }); + this.cropped = false; + this.renderCropBox(); + this.limitCanvas(true, true); // Render canvas after crop box rendered + + this.renderCanvas(); + removeClass(this.dragBox, CLASS_MODAL); + addClass(this.cropBox, CLASS_HIDDEN); + } + + return this; + }, + + /** + * Replace the image's src and rebuild the cropper + * @param {string} url - The new URL. + * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one. + * @returns {Cropper} this + */ + replace: function replace(url) { + var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (!this.disabled && url) { + if (this.isImg) { + this.element.src = url; + } + + if (hasSameSize) { + this.url = url; + this.image.src = url; + + if (this.ready) { + this.viewBoxImage.src = url; + forEach(this.previews, function (element) { + element.getElementsByTagName('img')[0].src = url; + }); + } + } else { + if (this.isImg) { + this.replaced = true; + } + + this.options.data = null; + this.uncreate(); + this.load(url); + } + } + + return this; + }, + // Enable (unfreeze) the cropper + enable: function enable() { + if (this.ready && this.disabled) { + this.disabled = false; + removeClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + // Disable (freeze) the cropper + disable: function disable() { + if (this.ready && !this.disabled) { + this.disabled = true; + addClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + + /** + * Destroy the cropper and remove the instance from the image + * @returns {Cropper} this + */ + destroy: function destroy() { + var element = this.element; + + if (!element[NAMESPACE]) { + return this; + } + + element[NAMESPACE] = undefined; + + if (this.isImg && this.replaced) { + element.src = this.originalUrl; + } + + this.uncreate(); + return this; + }, + + /** + * Move the canvas with relative offsets + * @param {number} offsetX - The relative offset distance on the x-axis. + * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis. + * @returns {Cropper} this + */ + move: function move(offsetX) { + var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX; + var _this$canvasData = this.canvasData, + left = _this$canvasData.left, + top = _this$canvasData.top; + return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY)); + }, + + /** + * Move the canvas to an absolute point + * @param {number} x - The x-axis coordinate. + * @param {number} [y=x] - The y-axis coordinate. + * @returns {Cropper} this + */ + moveTo: function moveTo(x) { + var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x; + var canvasData = this.canvasData; + var changed = false; + x = Number(x); + y = Number(y); + + if (this.ready && !this.disabled && this.options.movable) { + if (isNumber(x)) { + canvasData.left = x; + changed = true; + } + + if (isNumber(y)) { + canvasData.top = y; + changed = true; + } + + if (changed) { + this.renderCanvas(true); + } + } + + return this; + }, + + /** + * Zoom the canvas with a relative ratio + * @param {number} ratio - The target ratio. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoom: function zoom(ratio, _originalEvent) { + var canvasData = this.canvasData; + ratio = Number(ratio); + + if (ratio < 0) { + ratio = 1 / (1 - ratio); + } else { + ratio = 1 + ratio; + } + + return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent); + }, + + /** + * Zoom the canvas to an absolute ratio + * @param {number} ratio - The target ratio. + * @param {Object} pivot - The zoom pivot point coordinate. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoomTo: function zoomTo(ratio, pivot, _originalEvent) { + var options = this.options, + canvasData = this.canvasData; + var width = canvasData.width, + height = canvasData.height, + naturalWidth = canvasData.naturalWidth, + naturalHeight = canvasData.naturalHeight; + ratio = Number(ratio); + + if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) { + var newWidth = naturalWidth * ratio; + var newHeight = naturalHeight * ratio; + + if (dispatchEvent(this.element, EVENT_ZOOM, { + ratio: ratio, + oldRatio: width / naturalWidth, + originalEvent: _originalEvent + }) === false) { + return this; + } + + if (_originalEvent) { + var pointers = this.pointers; + var offset = getOffset(this.cropper); + var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : { + pageX: _originalEvent.pageX, + pageY: _originalEvent.pageY + }; // Zoom from the triggering point of the event + + canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width); + canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height); + } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) { + canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width); + canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height); + } else { + // Zoom from the center of the canvas + canvasData.left -= (newWidth - width) / 2; + canvasData.top -= (newHeight - height) / 2; + } + + canvasData.width = newWidth; + canvasData.height = newHeight; + this.renderCanvas(true); + } + + return this; + }, + + /** + * Rotate the canvas with a relative degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotate: function rotate(degree) { + return this.rotateTo((this.imageData.rotate || 0) + Number(degree)); + }, + + /** + * Rotate the canvas to an absolute degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotateTo: function rotateTo(degree) { + degree = Number(degree); + + if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) { + this.imageData.rotate = degree % 360; + this.renderCanvas(true, true); + } + + return this; + }, + + /** + * Scale the image on the x-axis. + * @param {number} scaleX - The scale ratio on the x-axis. + * @returns {Cropper} this + */ + scaleX: function scaleX(_scaleX) { + var scaleY = this.imageData.scaleY; + return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1); + }, + + /** + * Scale the image on the y-axis. + * @param {number} scaleY - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scaleY: function scaleY(_scaleY) { + var scaleX = this.imageData.scaleX; + return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY); + }, + + /** + * Scale the image + * @param {number} scaleX - The scale ratio on the x-axis. + * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scale: function scale(scaleX) { + var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX; + var imageData = this.imageData; + var transformed = false; + scaleX = Number(scaleX); + scaleY = Number(scaleY); + + if (this.ready && !this.disabled && this.options.scalable) { + if (isNumber(scaleX)) { + imageData.scaleX = scaleX; + transformed = true; + } + + if (isNumber(scaleY)) { + imageData.scaleY = scaleY; + transformed = true; + } + + if (transformed) { + this.renderCanvas(true, true); + } + } + + return this; + }, + + /** + * Get the cropped area position and size data (base on the original image) + * @param {boolean} [rounded=false] - Indicate if round the data values or not. + * @returns {Object} The result cropped data. + */ + getData: function getData() { + var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var options = this.options, + imageData = this.imageData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var data; + + if (this.ready && this.cropped) { + data = { + x: cropBoxData.left - canvasData.left, + y: cropBoxData.top - canvasData.top, + width: cropBoxData.width, + height: cropBoxData.height + }; + var ratio = imageData.width / imageData.naturalWidth; + forEach(data, function (n, i) { + data[i] = n / ratio; + }); + + if (rounded) { + // In case rounding off leads to extra 1px in right or bottom border + // we should round the top-left corner and the dimension (#343). + var bottom = Math.round(data.y + data.height); + var right = Math.round(data.x + data.width); + data.x = Math.round(data.x); + data.y = Math.round(data.y); + data.width = right - data.x; + data.height = bottom - data.y; + } + } else { + data = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + + if (options.rotatable) { + data.rotate = imageData.rotate || 0; + } + + if (options.scalable) { + data.scaleX = imageData.scaleX || 1; + data.scaleY = imageData.scaleY || 1; + } + + return data; + }, + + /** + * Set the cropped area position and size with new data + * @param {Object} data - The new data. + * @returns {Cropper} this + */ + setData: function setData(data) { + var options = this.options, + imageData = this.imageData, + canvasData = this.canvasData; + var cropBoxData = {}; + + if (this.ready && !this.disabled && isPlainObject(data)) { + var transformed = false; + + if (options.rotatable) { + if (isNumber(data.rotate) && data.rotate !== imageData.rotate) { + imageData.rotate = data.rotate; + transformed = true; + } + } + + if (options.scalable) { + if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) { + imageData.scaleX = data.scaleX; + transformed = true; + } + + if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) { + imageData.scaleY = data.scaleY; + transformed = true; + } + } + + if (transformed) { + this.renderCanvas(true, true); + } + + var ratio = imageData.width / imageData.naturalWidth; + + if (isNumber(data.x)) { + cropBoxData.left = data.x * ratio + canvasData.left; + } + + if (isNumber(data.y)) { + cropBoxData.top = data.y * ratio + canvasData.top; + } + + if (isNumber(data.width)) { + cropBoxData.width = data.width * ratio; + } + + if (isNumber(data.height)) { + cropBoxData.height = data.height * ratio; + } + + this.setCropBoxData(cropBoxData); + } + + return this; + }, + + /** + * Get the container size data. + * @returns {Object} The result container data. + */ + getContainerData: function getContainerData() { + return this.ready ? assign({}, this.containerData) : {}; + }, + + /** + * Get the image position and size data. + * @returns {Object} The result image data. + */ + getImageData: function getImageData() { + return this.sized ? assign({}, this.imageData) : {}; + }, + + /** + * Get the canvas position and size data. + * @returns {Object} The result canvas data. + */ + getCanvasData: function getCanvasData() { + var canvasData = this.canvasData; + var data = {}; + + if (this.ready) { + forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) { + data[n] = canvasData[n]; + }); + } + + return data; + }, + + /** + * Set the canvas position and size with new data. + * @param {Object} data - The new canvas data. + * @returns {Cropper} this + */ + setCanvasData: function setCanvasData(data) { + var canvasData = this.canvasData; + var aspectRatio = canvasData.aspectRatio; + + if (this.ready && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + canvasData.left = data.left; + } + + if (isNumber(data.top)) { + canvasData.top = data.top; + } + + if (isNumber(data.width)) { + canvasData.width = data.width; + canvasData.height = data.width / aspectRatio; + } else if (isNumber(data.height)) { + canvasData.height = data.height; + canvasData.width = data.height * aspectRatio; + } + + this.renderCanvas(true); + } + + return this; + }, + + /** + * Get the crop box position and size data. + * @returns {Object} The result crop box data. + */ + getCropBoxData: function getCropBoxData() { + var cropBoxData = this.cropBoxData; + var data; + + if (this.ready && this.cropped) { + data = { + left: cropBoxData.left, + top: cropBoxData.top, + width: cropBoxData.width, + height: cropBoxData.height + }; + } + + return data || {}; + }, + + /** + * Set the crop box position and size with new data. + * @param {Object} data - The new crop box data. + * @returns {Cropper} this + */ + setCropBoxData: function setCropBoxData(data) { + var cropBoxData = this.cropBoxData; + var aspectRatio = this.options.aspectRatio; + var widthChanged; + var heightChanged; + + if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + cropBoxData.left = data.left; + } + + if (isNumber(data.top)) { + cropBoxData.top = data.top; + } + + if (isNumber(data.width) && data.width !== cropBoxData.width) { + widthChanged = true; + cropBoxData.width = data.width; + } + + if (isNumber(data.height) && data.height !== cropBoxData.height) { + heightChanged = true; + cropBoxData.height = data.height; + } + + if (aspectRatio) { + if (widthChanged) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else if (heightChanged) { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.renderCropBox(); + } + + return this; + }, + + /** + * Get a canvas drawn the cropped image. + * @param {Object} [options={}] - The config options. + * @returns {HTMLCanvasElement} - The result canvas. + */ + getCroppedCanvas: function getCroppedCanvas() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (!this.ready || !window.HTMLCanvasElement) { + return null; + } + + var canvasData = this.canvasData; + var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped. + + if (!this.cropped) { + return source; + } + + var _this$getData = this.getData(), + initialX = _this$getData.x, + initialY = _this$getData.y, + initialWidth = _this$getData.width, + initialHeight = _this$getData.height; + + var ratio = source.width / Math.floor(canvasData.naturalWidth); + + if (ratio !== 1) { + initialX *= ratio; + initialY *= ratio; + initialWidth *= ratio; + initialHeight *= ratio; + } + + var aspectRatio = initialWidth / initialHeight; + var maxSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.maxWidth || Infinity, + height: options.maxHeight || Infinity + }); + var minSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.minWidth || 0, + height: options.minHeight || 0 + }, 'cover'); + + var _getAdjustedSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.width || (ratio !== 1 ? source.width : initialWidth), + height: options.height || (ratio !== 1 ? source.height : initialHeight) + }), + width = _getAdjustedSizes.width, + height = _getAdjustedSizes.height; + + width = Math.min(maxSizes.width, Math.max(minSizes.width, width)); + height = Math.min(maxSizes.height, Math.max(minSizes.height, height)); + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + context.fillStyle = options.fillColor || 'transparent'; + context.fillRect(0, 0, width, height); + var _options$imageSmoothi = options.imageSmoothingEnabled, + imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi, + imageSmoothingQuality = options.imageSmoothingQuality; + context.imageSmoothingEnabled = imageSmoothingEnabled; + + if (imageSmoothingQuality) { + context.imageSmoothingQuality = imageSmoothingQuality; + } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage + + + var sourceWidth = source.width; + var sourceHeight = source.height; // Source canvas parameters + + var srcX = initialX; + var srcY = initialY; + var srcWidth; + var srcHeight; // Destination canvas parameters + + var dstX; + var dstY; + var dstWidth; + var dstHeight; + + if (srcX <= -initialWidth || srcX > sourceWidth) { + srcX = 0; + srcWidth = 0; + dstX = 0; + dstWidth = 0; + } else if (srcX <= 0) { + dstX = -srcX; + srcX = 0; + srcWidth = Math.min(sourceWidth, initialWidth + srcX); + dstWidth = srcWidth; + } else if (srcX <= sourceWidth) { + dstX = 0; + srcWidth = Math.min(initialWidth, sourceWidth - srcX); + dstWidth = srcWidth; + } + + if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) { + srcY = 0; + srcHeight = 0; + dstY = 0; + dstHeight = 0; + } else if (srcY <= 0) { + dstY = -srcY; + srcY = 0; + srcHeight = Math.min(sourceHeight, initialHeight + srcY); + dstHeight = srcHeight; + } else if (srcY <= sourceHeight) { + dstY = 0; + srcHeight = Math.min(initialHeight, sourceHeight - srcY); + dstHeight = srcHeight; + } + + var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid "IndexSizeError" + + if (dstWidth > 0 && dstHeight > 0) { + var scale = width / initialWidth; + params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale); + } // All the numerical parameters should be integer for `drawImage` + // https://github.com/fengyuanchen/cropper/issues/476 + + + context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) { + return Math.floor(normalizeDecimalNumber(param)); + })))); + return canvas; + }, + + /** + * Change the aspect ratio of the crop box. + * @param {number} aspectRatio - The new aspect ratio. + * @returns {Cropper} this + */ + setAspectRatio: function setAspectRatio(aspectRatio) { + var options = this.options; + + if (!this.disabled && !isUndefined(aspectRatio)) { + // 0 -> NaN + options.aspectRatio = Math.max(0, aspectRatio) || NaN; + + if (this.ready) { + this.initCropBox(); + + if (this.cropped) { + this.renderCropBox(); + } + } + } + + return this; + }, + + /** + * Change the drag mode. + * @param {string} mode - The new drag mode. + * @returns {Cropper} this + */ + setDragMode: function setDragMode(mode) { + var options = this.options, + dragBox = this.dragBox, + face = this.face; + + if (this.ready && !this.disabled) { + var croppable = mode === DRAG_MODE_CROP; + var movable = options.movable && mode === DRAG_MODE_MOVE; + mode = croppable || movable ? mode : DRAG_MODE_NONE; + options.dragMode = mode; + setData(dragBox, DATA_ACTION, mode); + toggleClass(dragBox, CLASS_CROP, croppable); + toggleClass(dragBox, CLASS_MOVE, movable); + + if (!options.cropBoxMovable) { + // Sync drag mode to crop box when it is not movable + setData(face, DATA_ACTION, mode); + toggleClass(face, CLASS_CROP, croppable); + toggleClass(face, CLASS_MOVE, movable); + } + } + + return this; + } +}; + +var AnotherCropper = WINDOW.Cropper; + +var Cropper = +/*#__PURE__*/ +function () { + /** + * Create a new Cropper. + * @param {Element} element - The target element for cropping. + * @param {Object} [options={}] - The configuration options. + */ + function Cropper(element) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Cropper); + + if (!element || !REGEXP_TAG_NAME.test(element.tagName)) { + throw new Error('The first argument is required and must be an or element.'); + } + + this.element = element; + this.options = assign({}, DEFAULTS, isPlainObject(options) && options); + this.cropped = false; + this.disabled = false; + this.pointers = {}; + this.ready = false; + this.reloading = false; + this.replaced = false; + this.sized = false; + this.sizing = false; + this.init(); + } + + _createClass(Cropper, [{ + key: "init", + value: function init() { + var element = this.element; + var tagName = element.tagName.toLowerCase(); + var url; + + if (element[NAMESPACE]) { + return; + } + + element[NAMESPACE] = this; + + if (tagName === 'img') { + this.isImg = true; // e.g.: "img/picture.jpg" + + url = element.getAttribute('src') || ''; + this.originalUrl = url; // Stop when it's a blank image + + if (!url) { + return; + } // e.g.: "http://example.com/img/picture.jpg" + + + url = element.src; + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { + url = element.toDataURL(); + } + + this.load(url); + } + }, { + key: "load", + value: function load(url) { + var _this = this; + + if (!url) { + return; + } + + this.url = url; + this.imageData = {}; + var element = this.element, + options = this.options; + + if (!options.rotatable && !options.scalable) { + options.checkOrientation = false; + } // Only IE10+ supports Typed Arrays + + + if (!options.checkOrientation || !window.ArrayBuffer) { + this.clone(); + return; + } // Detect the mime type of the image directly if it is a Data URL + + + if (REGEXP_DATA_URL.test(url)) { + // Read ArrayBuffer from Data URL of JPEG images directly for better performance + if (REGEXP_DATA_URL_JPEG.test(url)) { + this.read(dataURLToArrayBuffer(url)); + } else { + // Only a JPEG image may contains Exif Orientation information, + // the rest types of Data URLs are not necessary to check orientation at all. + this.clone(); + } + + return; + } // 1. Detect the mime type of the image by a XMLHttpRequest. + // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image. + + + var xhr = new XMLHttpRequest(); + var clone = this.clone.bind(this); + this.reloading = true; + this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes: + // http, https, data, chrome, chrome-extension. + // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy + // in some browsers as IE11 and Safari. + + xhr.onabort = clone; + xhr.onerror = clone; + xhr.ontimeout = clone; + + xhr.onprogress = function () { + // Abort the request directly if it not a JPEG image for better performance + if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) { + xhr.abort(); + } + }; + + xhr.onload = function () { + _this.read(xhr.response); + }; + + xhr.onloadend = function () { + _this.reloading = false; + _this.xhr = null; + }; // Bust cache when there is a "crossOrigin" property to avoid browser cache error + + + if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) { + url = addTimestamp(url); + } + + xhr.open('GET', url); + xhr.responseType = 'arraybuffer'; + xhr.withCredentials = element.crossOrigin === 'use-credentials'; + xhr.send(); + } + }, { + key: "read", + value: function read(arrayBuffer) { + var options = this.options, + imageData = this.imageData; // Reset the orientation value to its default value 1 + // as some iOS browsers will render image with its orientation + + var orientation = resetAndGetOrientation(arrayBuffer); + var rotate = 0; + var scaleX = 1; + var scaleY = 1; + + if (orientation > 1) { + // Generate a new URL which has the default orientation value + this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG); + + var _parseOrientation = parseOrientation(orientation); + + rotate = _parseOrientation.rotate; + scaleX = _parseOrientation.scaleX; + scaleY = _parseOrientation.scaleY; + } + + if (options.rotatable) { + imageData.rotate = rotate; + } + + if (options.scalable) { + imageData.scaleX = scaleX; + imageData.scaleY = scaleY; + } + + this.clone(); + } + }, { + key: "clone", + value: function clone() { + var element = this.element, + url = this.url; + var crossOrigin = element.crossOrigin; + var crossOriginUrl = url; + + if (this.options.checkCrossOrigin && isCrossOriginURL(url)) { + if (!crossOrigin) { + crossOrigin = 'anonymous'; + } // Bust cache when there is not a "crossOrigin" property (#519) + + + crossOriginUrl = addTimestamp(url); + } + + this.crossOrigin = crossOrigin; + this.crossOriginUrl = crossOriginUrl; + var image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = crossOriginUrl || url; + image.alt = element.alt || 'The image to crop'; + this.image = image; + image.onload = this.start.bind(this); + image.onerror = this.stop.bind(this); + addClass(image, CLASS_HIDE); + element.parentNode.insertBefore(image, element.nextSibling); + } + }, { + key: "start", + value: function start() { + var _this2 = this; + + var image = this.image; + image.onload = null; + image.onerror = null; + this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices, + // such as Safari for iOS, Chrome for iOS, and in-app browsers. + + var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent); + + var done = function done(naturalWidth, naturalHeight) { + assign(_this2.imageData, { + naturalWidth: naturalWidth, + naturalHeight: naturalHeight, + aspectRatio: naturalWidth / naturalHeight + }); + _this2.sizing = false; + _this2.sized = true; + + _this2.build(); + }; // Most modern browsers (excepts iOS WebKit) + + + if (image.naturalWidth && !isIOSWebKit) { + done(image.naturalWidth, image.naturalHeight); + return; + } + + var sizingImage = document.createElement('img'); + var body = document.body || document.documentElement; + this.sizingImage = sizingImage; + + sizingImage.onload = function () { + done(sizingImage.width, sizingImage.height); + + if (!isIOSWebKit) { + body.removeChild(sizingImage); + } + }; + + sizingImage.src = image.src; // iOS WebKit will convert the image automatically + // with its orientation once append it into DOM (#279) + + if (!isIOSWebKit) { + sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;'; + body.appendChild(sizingImage); + } + } + }, { + key: "stop", + value: function stop() { + var image = this.image; + image.onload = null; + image.onerror = null; + image.parentNode.removeChild(image); + this.image = null; + } + }, { + key: "build", + value: function build() { + if (!this.sized || this.ready) { + return; + } + + var element = this.element, + options = this.options, + image = this.image; // Create cropper elements + + var container = element.parentNode; + var template = document.createElement('div'); + template.innerHTML = TEMPLATE; + var cropper = template.querySelector(".".concat(NAMESPACE, "-container")); + var canvas = cropper.querySelector(".".concat(NAMESPACE, "-canvas")); + var dragBox = cropper.querySelector(".".concat(NAMESPACE, "-drag-box")); + var cropBox = cropper.querySelector(".".concat(NAMESPACE, "-crop-box")); + var face = cropBox.querySelector(".".concat(NAMESPACE, "-face")); + this.container = container; + this.cropper = cropper; + this.canvas = canvas; + this.dragBox = dragBox; + this.cropBox = cropBox; + this.viewBox = cropper.querySelector(".".concat(NAMESPACE, "-view-box")); + this.face = face; + canvas.appendChild(image); // Hide the original image + + addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image + + container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden + + if (!this.isImg) { + removeClass(image, CLASS_HIDE); + } + + this.initPreview(); + this.bind(); + options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN; + options.aspectRatio = Math.max(0, options.aspectRatio) || NaN; + options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0; + addClass(cropBox, CLASS_HIDDEN); + + if (!options.guides) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-dashed")), CLASS_HIDDEN); + } + + if (!options.center) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-center")), CLASS_HIDDEN); + } + + if (options.background) { + addClass(cropper, "".concat(NAMESPACE, "-bg")); + } + + if (!options.highlight) { + addClass(face, CLASS_INVISIBLE); + } + + if (options.cropBoxMovable) { + addClass(face, CLASS_MOVE); + setData(face, DATA_ACTION, ACTION_ALL); + } + + if (!options.cropBoxResizable) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-line")), CLASS_HIDDEN); + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-point")), CLASS_HIDDEN); + } + + this.render(); + this.ready = true; + this.setDragMode(options.dragMode); + + if (options.autoCrop) { + this.crop(); + } + + this.setData(options.data); + + if (isFunction(options.ready)) { + addListener(element, EVENT_READY, options.ready, { + once: true + }); + } + + dispatchEvent(element, EVENT_READY); + } + }, { + key: "unbuild", + value: function unbuild() { + if (!this.ready) { + return; + } + + this.ready = false; + this.unbind(); + this.resetPreview(); + this.cropper.parentNode.removeChild(this.cropper); + removeClass(this.element, CLASS_HIDDEN); + } + }, { + key: "uncreate", + value: function uncreate() { + if (this.ready) { + this.unbuild(); + this.ready = false; + this.cropped = false; + } else if (this.sizing) { + this.sizingImage.onload = null; + this.sizing = false; + this.sized = false; + } else if (this.reloading) { + this.xhr.onabort = null; + this.xhr.abort(); + } else if (this.image) { + this.stop(); + } + } + /** + * Get the no conflict cropper class. + * @returns {Cropper} The cropper class. + */ + + }], [{ + key: "noConflict", + value: function noConflict() { + window.Cropper = AnotherCropper; + return Cropper; + } + /** + * Change the default options. + * @param {Object} options - The new default options. + */ + + }, { + key: "setDefaults", + value: function setDefaults(options) { + assign(DEFAULTS, isPlainObject(options) && options); + } + }]); + + return Cropper; +}(); + +assign(Cropper.prototype, render, preview, events, handlers, change, methods); + +export default Cropper; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.js new file mode 100644 index 00000000..ebc50d20 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.js @@ -0,0 +1,3566 @@ +/*! + * Cropper.js v1.5.4 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2019-08-03T08:38:42.128Z + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.Cropper = factory()); +}(this, function () { 'use strict'; + + function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } + } + + function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); + } + + var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined'; + var WINDOW = IS_BROWSER ? window : {}; + var IS_TOUCH_DEVICE = IS_BROWSER ? 'ontouchstart' in WINDOW.document.documentElement : false; + var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false; + var NAMESPACE = 'cropper'; // Actions + + var ACTION_ALL = 'all'; + var ACTION_CROP = 'crop'; + var ACTION_MOVE = 'move'; + var ACTION_ZOOM = 'zoom'; + var ACTION_EAST = 'e'; + var ACTION_WEST = 'w'; + var ACTION_SOUTH = 's'; + var ACTION_NORTH = 'n'; + var ACTION_NORTH_EAST = 'ne'; + var ACTION_NORTH_WEST = 'nw'; + var ACTION_SOUTH_EAST = 'se'; + var ACTION_SOUTH_WEST = 'sw'; // Classes + + var CLASS_CROP = "".concat(NAMESPACE, "-crop"); + var CLASS_DISABLED = "".concat(NAMESPACE, "-disabled"); + var CLASS_HIDDEN = "".concat(NAMESPACE, "-hidden"); + var CLASS_HIDE = "".concat(NAMESPACE, "-hide"); + var CLASS_INVISIBLE = "".concat(NAMESPACE, "-invisible"); + var CLASS_MODAL = "".concat(NAMESPACE, "-modal"); + var CLASS_MOVE = "".concat(NAMESPACE, "-move"); // Data keys + + var DATA_ACTION = "".concat(NAMESPACE, "Action"); + var DATA_PREVIEW = "".concat(NAMESPACE, "Preview"); // Drag modes + + var DRAG_MODE_CROP = 'crop'; + var DRAG_MODE_MOVE = 'move'; + var DRAG_MODE_NONE = 'none'; // Events + + var EVENT_CROP = 'crop'; + var EVENT_CROP_END = 'cropend'; + var EVENT_CROP_MOVE = 'cropmove'; + var EVENT_CROP_START = 'cropstart'; + var EVENT_DBLCLICK = 'dblclick'; + var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown'; + var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove'; + var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup'; + var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START; + var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE; + var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END; + var EVENT_READY = 'ready'; + var EVENT_RESIZE = 'resize'; + var EVENT_WHEEL = 'wheel'; + var EVENT_ZOOM = 'zoom'; // Mime types + + var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps + + var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/; + var REGEXP_DATA_URL = /^data:/; + var REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/; + var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc + // Inspired by the default width and height of a canvas element. + + var MIN_CONTAINER_WIDTH = 200; + var MIN_CONTAINER_HEIGHT = 100; + + var DEFAULTS = { + // Define the view mode of the cropper + viewMode: 0, + // 0, 1, 2, 3 + // Define the dragging mode of the cropper + dragMode: DRAG_MODE_CROP, + // 'crop', 'move' or 'none' + // Define the initial aspect ratio of the crop box + initialAspectRatio: NaN, + // Define the aspect ratio of the crop box + aspectRatio: NaN, + // An object with the previous cropping result data + data: null, + // A selector for adding extra containers to preview + preview: '', + // Re-render the cropper when resize the window + responsive: true, + // Restore the cropped area after resize the window + restore: true, + // Check if the current image is a cross-origin image + checkCrossOrigin: true, + // Check the current image's Exif Orientation information + checkOrientation: true, + // Show the black modal + modal: true, + // Show the dashed lines for guiding + guides: true, + // Show the center indicator for guiding + center: true, + // Show the white modal to highlight the crop box + highlight: true, + // Show the grid background + background: true, + // Enable to crop the image automatically when initialize + autoCrop: true, + // Define the percentage of automatic cropping area when initializes + autoCropArea: 0.8, + // Enable to move the image + movable: true, + // Enable to rotate the image + rotatable: true, + // Enable to scale the image + scalable: true, + // Enable to zoom the image + zoomable: true, + // Enable to zoom the image by dragging touch + zoomOnTouch: true, + // Enable to zoom the image by wheeling mouse + zoomOnWheel: true, + // Define zoom ratio when zoom the image by wheeling mouse + wheelZoomRatio: 0.1, + // Enable to move the crop box + cropBoxMovable: true, + // Enable to resize the crop box + cropBoxResizable: true, + // Toggle drag mode between "crop" and "move" when click twice on the cropper + toggleDragModeOnDblclick: true, + // Size limitation + minCanvasWidth: 0, + minCanvasHeight: 0, + minCropBoxWidth: 0, + minCropBoxHeight: 0, + minContainerWidth: 200, + minContainerHeight: 100, + // Shortcuts of events + ready: null, + cropstart: null, + cropmove: null, + cropend: null, + crop: null, + zoom: null + }; + + var TEMPLATE = '
' + '
' + '
' + '
' + '
' + '
' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
' + '
'; + + /** + * Check if the given value is not a number. + */ + + var isNaN = Number.isNaN || WINDOW.isNaN; + /** + * Check if the given value is a number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a number, else `false`. + */ + + function isNumber(value) { + return typeof value === 'number' && !isNaN(value); + } + /** + * Check if the given value is a positive number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a positive number, else `false`. + */ + + var isPositiveNumber = function isPositiveNumber(value) { + return value > 0 && value < Infinity; + }; + /** + * Check if the given value is undefined. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is undefined, else `false`. + */ + + function isUndefined(value) { + return typeof value === 'undefined'; + } + /** + * Check if the given value is an object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is an object, else `false`. + */ + + function isObject(value) { + return _typeof(value) === 'object' && value !== null; + } + var hasOwnProperty = Object.prototype.hasOwnProperty; + /** + * Check if the given value is a plain object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a plain object, else `false`. + */ + + function isPlainObject(value) { + if (!isObject(value)) { + return false; + } + + try { + var _constructor = value.constructor; + var prototype = _constructor.prototype; + return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf'); + } catch (error) { + return false; + } + } + /** + * Check if the given value is a function. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a function, else `false`. + */ + + function isFunction(value) { + return typeof value === 'function'; + } + var slice = Array.prototype.slice; + /** + * Convert array-like or iterable object to an array. + * @param {*} value - The value to convert. + * @returns {Array} Returns a new array. + */ + + function toArray(value) { + return Array.from ? Array.from(value) : slice.call(value); + } + /** + * Iterate the given data. + * @param {*} data - The data to iterate. + * @param {Function} callback - The process function for each element. + * @returns {*} The original data. + */ + + function forEach(data, callback) { + if (data && isFunction(callback)) { + if (Array.isArray(data) || isNumber(data.length) + /* array-like */ + ) { + toArray(data).forEach(function (value, key) { + callback.call(data, value, key, data); + }); + } else if (isObject(data)) { + Object.keys(data).forEach(function (key) { + callback.call(data, data[key], key, data); + }); + } + } + + return data; + } + /** + * Extend the given object. + * @param {*} target - The target object to extend. + * @param {*} args - The rest objects for merging to the target object. + * @returns {Object} The extended object. + */ + + var assign = Object.assign || function assign(target) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (isObject(target) && args.length > 0) { + args.forEach(function (arg) { + if (isObject(arg)) { + Object.keys(arg).forEach(function (key) { + target[key] = arg[key]; + }); + } + }); + } + + return target; + }; + var REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/; + /** + * Normalize decimal number. + * Check out {@link http://0.30000000000000004.com/} + * @param {number} value - The value to normalize. + * @param {number} [times=100000000000] - The times for normalizing. + * @returns {number} Returns the normalized number. + */ + + function normalizeDecimalNumber(value) { + var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000; + return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value; + } + var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/; + /** + * Apply styles to the given element. + * @param {Element} element - The target element. + * @param {Object} styles - The styles for applying. + */ + + function setStyle(element, styles) { + var style = element.style; + forEach(styles, function (value, property) { + if (REGEXP_SUFFIX.test(property) && isNumber(value)) { + value = "".concat(value, "px"); + } + + style[property] = value; + }); + } + /** + * Check if the given element has a special class. + * @param {Element} element - The element to check. + * @param {string} value - The class to search. + * @returns {boolean} Returns `true` if the special class was found. + */ + + function hasClass(element, value) { + return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1; + } + /** + * Add classes to the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be added. + */ + + function addClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + addClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.add(value); + return; + } + + var className = element.className.trim(); + + if (!className) { + element.className = value; + } else if (className.indexOf(value) < 0) { + element.className = "".concat(className, " ").concat(value); + } + } + /** + * Remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be removed. + */ + + function removeClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + removeClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.remove(value); + return; + } + + if (element.className.indexOf(value) >= 0) { + element.className = element.className.replace(value, ''); + } + } + /** + * Add or remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be toggled. + * @param {boolean} added - Add only. + */ + + function toggleClass(element, value, added) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, function (elem) { + toggleClass(elem, value, added); + }); + return; + } // IE10-11 doesn't support the second parameter of `classList.toggle` + + + if (added) { + addClass(element, value); + } else { + removeClass(element, value); + } + } + var REGEXP_CAMEL_CASE = /([a-z\d])([A-Z])/g; + /** + * Transform the given string from camelCase to kebab-case + * @param {string} value - The value to transform. + * @returns {string} The transformed value. + */ + + function toParamCase(value) { + return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase(); + } + /** + * Get data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to get. + * @returns {string} The data value. + */ + + function getData(element, name) { + if (isObject(element[name])) { + return element[name]; + } + + if (element.dataset) { + return element.dataset[name]; + } + + return element.getAttribute("data-".concat(toParamCase(name))); + } + /** + * Set data to the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to set. + * @param {string} data - The data value. + */ + + function setData(element, name, data) { + if (isObject(data)) { + element[name] = data; + } else if (element.dataset) { + element.dataset[name] = data; + } else { + element.setAttribute("data-".concat(toParamCase(name)), data); + } + } + /** + * Remove data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to remove. + */ + + function removeData(element, name) { + if (isObject(element[name])) { + try { + delete element[name]; + } catch (error) { + element[name] = undefined; + } + } else if (element.dataset) { + // #128 Safari not allows to delete dataset property + try { + delete element.dataset[name]; + } catch (error) { + element.dataset[name] = undefined; + } + } else { + element.removeAttribute("data-".concat(toParamCase(name))); + } + } + var REGEXP_SPACES = /\s\s*/; + + var onceSupported = function () { + var supported = false; + + if (IS_BROWSER) { + var once = false; + + var listener = function listener() {}; + + var options = Object.defineProperty({}, 'once', { + get: function get() { + supported = true; + return once; + }, + + /** + * This setter can fix a `TypeError` in strict mode + * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only} + * @param {boolean} value - The value to set + */ + set: function set(value) { + once = value; + } + }); + WINDOW.addEventListener('test', listener, options); + WINDOW.removeEventListener('test', listener, options); + } + + return supported; + }(); + /** + * Remove event listener from the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ + + + function removeListener(element, type, listener) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var handler = listener; + type.trim().split(REGEXP_SPACES).forEach(function (event) { + if (!onceSupported) { + var listeners = element.listeners; + + if (listeners && listeners[event] && listeners[event][listener]) { + handler = listeners[event][listener]; + delete listeners[event][listener]; + + if (Object.keys(listeners[event]).length === 0) { + delete listeners[event]; + } + + if (Object.keys(listeners).length === 0) { + delete element.listeners; + } + } + } + + element.removeEventListener(event, handler, options); + }); + } + /** + * Add event listener to the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ + + function addListener(element, type, listener) { + var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var _handler = listener; + type.trim().split(REGEXP_SPACES).forEach(function (event) { + if (options.once && !onceSupported) { + var _element$listeners = element.listeners, + listeners = _element$listeners === void 0 ? {} : _element$listeners; + + _handler = function handler() { + delete listeners[event][listener]; + element.removeEventListener(event, _handler, options); + + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + listener.apply(element, args); + }; + + if (!listeners[event]) { + listeners[event] = {}; + } + + if (listeners[event][listener]) { + element.removeEventListener(event, listeners[event][listener], options); + } + + listeners[event][listener] = _handler; + element.listeners = listeners; + } + + element.addEventListener(event, _handler, options); + }); + } + /** + * Dispatch event on the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Object} data - The additional event data. + * @returns {boolean} Indicate if the event is default prevented or not. + */ + + function dispatchEvent(element, type, data) { + var event; // Event and CustomEvent on IE9-11 are global objects, not constructors + + if (isFunction(Event) && isFunction(CustomEvent)) { + event = new CustomEvent(type, { + detail: data, + bubbles: true, + cancelable: true + }); + } else { + event = document.createEvent('CustomEvent'); + event.initCustomEvent(type, true, true, data); + } + + return element.dispatchEvent(event); + } + /** + * Get the offset base on the document. + * @param {Element} element - The target element. + * @returns {Object} The offset data. + */ + + function getOffset(element) { + var box = element.getBoundingClientRect(); + return { + left: box.left + (window.pageXOffset - document.documentElement.clientLeft), + top: box.top + (window.pageYOffset - document.documentElement.clientTop) + }; + } + var location = WINDOW.location; + var REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i; + /** + * Check if the given URL is a cross origin URL. + * @param {string} url - The target URL. + * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`. + */ + + function isCrossOriginURL(url) { + var parts = url.match(REGEXP_ORIGINS); + return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port); + } + /** + * Add timestamp to the given URL. + * @param {string} url - The target URL. + * @returns {string} The result URL. + */ + + function addTimestamp(url) { + var timestamp = "timestamp=".concat(new Date().getTime()); + return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp; + } + /** + * Get transforms base on the given object. + * @param {Object} obj - The target object. + * @returns {string} A string contains transform values. + */ + + function getTransforms(_ref) { + var rotate = _ref.rotate, + scaleX = _ref.scaleX, + scaleY = _ref.scaleY, + translateX = _ref.translateX, + translateY = _ref.translateY; + var values = []; + + if (isNumber(translateX) && translateX !== 0) { + values.push("translateX(".concat(translateX, "px)")); + } + + if (isNumber(translateY) && translateY !== 0) { + values.push("translateY(".concat(translateY, "px)")); + } // Rotate should come first before scale to match orientation transform + + + if (isNumber(rotate) && rotate !== 0) { + values.push("rotate(".concat(rotate, "deg)")); + } + + if (isNumber(scaleX) && scaleX !== 1) { + values.push("scaleX(".concat(scaleX, ")")); + } + + if (isNumber(scaleY) && scaleY !== 1) { + values.push("scaleY(".concat(scaleY, ")")); + } + + var transform = values.length ? values.join(' ') : 'none'; + return { + WebkitTransform: transform, + msTransform: transform, + transform: transform + }; + } + /** + * Get the max ratio of a group of pointers. + * @param {string} pointers - The target pointers. + * @returns {number} The result ratio. + */ + + function getMaxZoomRatio(pointers) { + var pointers2 = assign({}, pointers); + var ratios = []; + forEach(pointers, function (pointer, pointerId) { + delete pointers2[pointerId]; + forEach(pointers2, function (pointer2) { + var x1 = Math.abs(pointer.startX - pointer2.startX); + var y1 = Math.abs(pointer.startY - pointer2.startY); + var x2 = Math.abs(pointer.endX - pointer2.endX); + var y2 = Math.abs(pointer.endY - pointer2.endY); + var z1 = Math.sqrt(x1 * x1 + y1 * y1); + var z2 = Math.sqrt(x2 * x2 + y2 * y2); + var ratio = (z2 - z1) / z1; + ratios.push(ratio); + }); + }); + ratios.sort(function (a, b) { + return Math.abs(a) < Math.abs(b); + }); + return ratios[0]; + } + /** + * Get a pointer from an event object. + * @param {Object} event - The target event object. + * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not. + * @returns {Object} The result pointer contains start and/or end point coordinates. + */ + + function getPointer(_ref2, endOnly) { + var pageX = _ref2.pageX, + pageY = _ref2.pageY; + var end = { + endX: pageX, + endY: pageY + }; + return endOnly ? end : assign({ + startX: pageX, + startY: pageY + }, end); + } + /** + * Get the center point coordinate of a group of pointers. + * @param {Object} pointers - The target pointers. + * @returns {Object} The center point coordinate. + */ + + function getPointersCenter(pointers) { + var pageX = 0; + var pageY = 0; + var count = 0; + forEach(pointers, function (_ref3) { + var startX = _ref3.startX, + startY = _ref3.startY; + pageX += startX; + pageY += startY; + count += 1; + }); + pageX /= count; + pageY /= count; + return { + pageX: pageX, + pageY: pageY + }; + } + /** + * Get the max sizes in a rectangle under the given aspect ratio. + * @param {Object} data - The original sizes. + * @param {string} [type='contain'] - The adjust type. + * @returns {Object} The result sizes. + */ + + function getAdjustedSizes(_ref4) // or 'cover' + { + var aspectRatio = _ref4.aspectRatio, + height = _ref4.height, + width = _ref4.width; + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain'; + var isValidWidth = isPositiveNumber(width); + var isValidHeight = isPositiveNumber(height); + + if (isValidWidth && isValidHeight) { + var adjustedWidth = height * aspectRatio; + + if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) { + height = width / aspectRatio; + } else { + width = height * aspectRatio; + } + } else if (isValidWidth) { + height = width / aspectRatio; + } else if (isValidHeight) { + width = height * aspectRatio; + } + + return { + width: width, + height: height + }; + } + /** + * Get the new sizes of a rectangle after rotated. + * @param {Object} data - The original sizes. + * @returns {Object} The result sizes. + */ + + function getRotatedSizes(_ref5) { + var width = _ref5.width, + height = _ref5.height, + degree = _ref5.degree; + degree = Math.abs(degree) % 180; + + if (degree === 90) { + return { + width: height, + height: width + }; + } + + var arc = degree % 90 * Math.PI / 180; + var sinArc = Math.sin(arc); + var cosArc = Math.cos(arc); + var newWidth = width * cosArc + height * sinArc; + var newHeight = width * sinArc + height * cosArc; + return degree > 90 ? { + width: newHeight, + height: newWidth + } : { + width: newWidth, + height: newHeight + }; + } + /** + * Get a canvas which drew the given image. + * @param {HTMLImageElement} image - The image for drawing. + * @param {Object} imageData - The image data. + * @param {Object} canvasData - The canvas data. + * @param {Object} options - The options. + * @returns {HTMLCanvasElement} The result canvas. + */ + + function getSourceCanvas(image, _ref6, _ref7, _ref8) { + var imageAspectRatio = _ref6.aspectRatio, + imageNaturalWidth = _ref6.naturalWidth, + imageNaturalHeight = _ref6.naturalHeight, + _ref6$rotate = _ref6.rotate, + rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate, + _ref6$scaleX = _ref6.scaleX, + scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX, + _ref6$scaleY = _ref6.scaleY, + scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY; + var aspectRatio = _ref7.aspectRatio, + naturalWidth = _ref7.naturalWidth, + naturalHeight = _ref7.naturalHeight; + var _ref8$fillColor = _ref8.fillColor, + fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor, + _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled, + imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE, + _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality, + imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ, + _ref8$maxWidth = _ref8.maxWidth, + maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth, + _ref8$maxHeight = _ref8.maxHeight, + maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight, + _ref8$minWidth = _ref8.minWidth, + minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth, + _ref8$minHeight = _ref8.minHeight, + minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight; + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + var maxSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: maxWidth, + height: maxHeight + }); + var minSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: minWidth, + height: minHeight + }, 'cover'); + var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth)); + var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as + // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90 + + var destMaxSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: maxWidth, + height: maxHeight + }); + var destMinSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: minWidth, + height: minHeight + }, 'cover'); + var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth)); + var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight)); + var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight]; + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + context.fillStyle = fillColor; + context.fillRect(0, 0, width, height); + context.save(); + context.translate(width / 2, height / 2); + context.rotate(rotate * Math.PI / 180); + context.scale(scaleX, scaleY); + context.imageSmoothingEnabled = imageSmoothingEnabled; + context.imageSmoothingQuality = imageSmoothingQuality; + context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) { + return Math.floor(normalizeDecimalNumber(param)); + })))); + context.restore(); + return canvas; + } + var fromCharCode = String.fromCharCode; + /** + * Get string from char code in data view. + * @param {DataView} dataView - The data view for read. + * @param {number} start - The start index. + * @param {number} length - The read length. + * @returns {string} The read result. + */ + + function getStringFromCharCode(dataView, start, length) { + var str = ''; + length += start; + + for (var i = start; i < length; i += 1) { + str += fromCharCode(dataView.getUint8(i)); + } + + return str; + } + var REGEXP_DATA_URL_HEAD = /^data:.*,/; + /** + * Transform Data URL to array buffer. + * @param {string} dataURL - The Data URL to transform. + * @returns {ArrayBuffer} The result array buffer. + */ + + function dataURLToArrayBuffer(dataURL) { + var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, ''); + var binary = atob(base64); + var arrayBuffer = new ArrayBuffer(binary.length); + var uint8 = new Uint8Array(arrayBuffer); + forEach(uint8, function (value, i) { + uint8[i] = binary.charCodeAt(i); + }); + return arrayBuffer; + } + /** + * Transform array buffer to Data URL. + * @param {ArrayBuffer} arrayBuffer - The array buffer to transform. + * @param {string} mimeType - The mime type of the Data URL. + * @returns {string} The result Data URL. + */ + + function arrayBufferToDataURL(arrayBuffer, mimeType) { + var chunks = []; // Chunk Typed Array for better performance (#435) + + var chunkSize = 8192; + var uint8 = new Uint8Array(arrayBuffer); + + while (uint8.length > 0) { + // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9 + // eslint-disable-next-line prefer-spread + chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize)))); + uint8 = uint8.subarray(chunkSize); + } + + return "data:".concat(mimeType, ";base64,").concat(btoa(chunks.join(''))); + } + /** + * Get orientation value from given array buffer. + * @param {ArrayBuffer} arrayBuffer - The array buffer to read. + * @returns {number} The read orientation value. + */ + + function resetAndGetOrientation(arrayBuffer) { + var dataView = new DataView(arrayBuffer); + var orientation; // Ignores range error when the image does not have correct Exif information + + try { + var littleEndian; + var app1Start; + var ifdStart; // Only handle JPEG image (start by 0xFFD8) + + if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) { + var length = dataView.byteLength; + var offset = 2; + + while (offset + 1 < length) { + if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) { + app1Start = offset; + break; + } + + offset += 1; + } + } + + if (app1Start) { + var exifIDCode = app1Start + 4; + var tiffOffset = app1Start + 10; + + if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') { + var endianness = dataView.getUint16(tiffOffset); + littleEndian = endianness === 0x4949; + + if (littleEndian || endianness === 0x4D4D + /* bigEndian */ + ) { + if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) { + var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian); + + if (firstIFDOffset >= 0x00000008) { + ifdStart = tiffOffset + firstIFDOffset; + } + } + } + } + } + + if (ifdStart) { + var _length = dataView.getUint16(ifdStart, littleEndian); + + var _offset; + + var i; + + for (i = 0; i < _length; i += 1) { + _offset = ifdStart + i * 12 + 2; + + if (dataView.getUint16(_offset, littleEndian) === 0x0112 + /* Orientation */ + ) { + // 8 is the offset of the current tag's value + _offset += 8; // Get the original orientation value + + orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value + + dataView.setUint16(_offset, 1, littleEndian); + break; + } + } + } + } catch (error) { + orientation = 1; + } + + return orientation; + } + /** + * Parse Exif Orientation value. + * @param {number} orientation - The orientation to parse. + * @returns {Object} The parsed result. + */ + + function parseOrientation(orientation) { + var rotate = 0; + var scaleX = 1; + var scaleY = 1; + + switch (orientation) { + // Flip horizontal + case 2: + scaleX = -1; + break; + // Rotate left 180° + + case 3: + rotate = -180; + break; + // Flip vertical + + case 4: + scaleY = -1; + break; + // Flip vertical and rotate right 90° + + case 5: + rotate = 90; + scaleY = -1; + break; + // Rotate right 90° + + case 6: + rotate = 90; + break; + // Flip horizontal and rotate right 90° + + case 7: + rotate = 90; + scaleX = -1; + break; + // Rotate left 90° + + case 8: + rotate = -90; + break; + + default: + } + + return { + rotate: rotate, + scaleX: scaleX, + scaleY: scaleY + }; + } + + var render = { + render: function render() { + this.initContainer(); + this.initCanvas(); + this.initCropBox(); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + }, + initContainer: function initContainer() { + var element = this.element, + options = this.options, + container = this.container, + cropper = this.cropper; + addClass(cropper, CLASS_HIDDEN); + removeClass(element, CLASS_HIDDEN); + var containerData = { + width: Math.max(container.offsetWidth, Number(options.minContainerWidth) || 200), + height: Math.max(container.offsetHeight, Number(options.minContainerHeight) || 100) + }; + this.containerData = containerData; + setStyle(cropper, { + width: containerData.width, + height: containerData.height + }); + addClass(element, CLASS_HIDDEN); + removeClass(cropper, CLASS_HIDDEN); + }, + // Canvas (image wrapper) + initCanvas: function initCanvas() { + var containerData = this.containerData, + imageData = this.imageData; + var viewMode = this.options.viewMode; + var rotated = Math.abs(imageData.rotate) % 180 === 90; + var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth; + var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight; + var aspectRatio = naturalWidth / naturalHeight; + var canvasWidth = containerData.width; + var canvasHeight = containerData.height; + + if (containerData.height * aspectRatio > containerData.width) { + if (viewMode === 3) { + canvasWidth = containerData.height * aspectRatio; + } else { + canvasHeight = containerData.width / aspectRatio; + } + } else if (viewMode === 3) { + canvasHeight = containerData.width / aspectRatio; + } else { + canvasWidth = containerData.height * aspectRatio; + } + + var canvasData = { + aspectRatio: aspectRatio, + naturalWidth: naturalWidth, + naturalHeight: naturalHeight, + width: canvasWidth, + height: canvasHeight + }; + canvasData.left = (containerData.width - canvasWidth) / 2; + canvasData.top = (containerData.height - canvasHeight) / 2; + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + this.canvasData = canvasData; + this.limited = viewMode === 1 || viewMode === 2; + this.limitCanvas(true, true); + this.initialImageData = assign({}, imageData); + this.initialCanvasData = assign({}, canvasData); + }, + limitCanvas: function limitCanvas(sizeLimited, positionLimited) { + var options = this.options, + containerData = this.containerData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var viewMode = options.viewMode; + var aspectRatio = canvasData.aspectRatio; + var cropped = this.cropped && cropBoxData; + + if (sizeLimited) { + var minCanvasWidth = Number(options.minCanvasWidth) || 0; + var minCanvasHeight = Number(options.minCanvasHeight) || 0; + + if (viewMode > 1) { + minCanvasWidth = Math.max(minCanvasWidth, containerData.width); + minCanvasHeight = Math.max(minCanvasHeight, containerData.height); + + if (viewMode === 3) { + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } else if (viewMode > 0) { + if (minCanvasWidth) { + minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0); + } else if (minCanvasHeight) { + minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0); + } else if (cropped) { + minCanvasWidth = cropBoxData.width; + minCanvasHeight = cropBoxData.height; + + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } + + var _getAdjustedSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: minCanvasWidth, + height: minCanvasHeight + }); + + minCanvasWidth = _getAdjustedSizes.width; + minCanvasHeight = _getAdjustedSizes.height; + canvasData.minWidth = minCanvasWidth; + canvasData.minHeight = minCanvasHeight; + canvasData.maxWidth = Infinity; + canvasData.maxHeight = Infinity; + } + + if (positionLimited) { + if (viewMode > (cropped ? 0 : 1)) { + var newCanvasLeft = containerData.width - canvasData.width; + var newCanvasTop = containerData.height - canvasData.height; + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + canvasData.maxTop = Math.max(0, newCanvasTop); + + if (cropped && this.limited) { + canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width)); + canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height)); + canvasData.maxLeft = cropBoxData.left; + canvasData.maxTop = cropBoxData.top; + + if (viewMode === 2) { + if (canvasData.width >= containerData.width) { + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + } + + if (canvasData.height >= containerData.height) { + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxTop = Math.max(0, newCanvasTop); + } + } + } + } else { + canvasData.minLeft = -canvasData.width; + canvasData.minTop = -canvasData.height; + canvasData.maxLeft = containerData.width; + canvasData.maxTop = containerData.height; + } + } + }, + renderCanvas: function renderCanvas(changed, transformed) { + var canvasData = this.canvasData, + imageData = this.imageData; + + if (transformed) { + var _getRotatedSizes = getRotatedSizes({ + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0 + }), + naturalWidth = _getRotatedSizes.width, + naturalHeight = _getRotatedSizes.height; + + var width = canvasData.width * (naturalWidth / canvasData.naturalWidth); + var height = canvasData.height * (naturalHeight / canvasData.naturalHeight); + canvasData.left -= (width - canvasData.width) / 2; + canvasData.top -= (height - canvasData.height) / 2; + canvasData.width = width; + canvasData.height = height; + canvasData.aspectRatio = naturalWidth / naturalHeight; + canvasData.naturalWidth = naturalWidth; + canvasData.naturalHeight = naturalHeight; + this.limitCanvas(true, false); + } + + if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) { + canvasData.left = canvasData.oldLeft; + } + + if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) { + canvasData.top = canvasData.oldTop; + } + + canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth); + canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight); + this.limitCanvas(false, true); + canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft); + canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop); + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + setStyle(this.canvas, assign({ + width: canvasData.width, + height: canvasData.height + }, getTransforms({ + translateX: canvasData.left, + translateY: canvasData.top + }))); + this.renderImage(changed); + + if (this.cropped && this.limited) { + this.limitCropBox(true, true); + } + }, + renderImage: function renderImage(changed) { + var canvasData = this.canvasData, + imageData = this.imageData; + var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth); + var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight); + assign(imageData, { + width: width, + height: height, + left: (canvasData.width - width) / 2, + top: (canvasData.height - height) / 2 + }); + setStyle(this.image, assign({ + width: imageData.width, + height: imageData.height + }, getTransforms(assign({ + translateX: imageData.left, + translateY: imageData.top + }, imageData)))); + + if (changed) { + this.output(); + } + }, + initCropBox: function initCropBox() { + var options = this.options, + canvasData = this.canvasData; + var aspectRatio = options.aspectRatio || options.initialAspectRatio; + var autoCropArea = Number(options.autoCropArea) || 0.8; + var cropBoxData = { + width: canvasData.width, + height: canvasData.height + }; + + if (aspectRatio) { + if (canvasData.height * aspectRatio > canvasData.width) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.cropBoxData = cropBoxData; + this.limitCropBox(true, true); // Initialize auto crop area + + cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); + cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than "minWidth/Height" + + cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea); + cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea); + cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2; + cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2; + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + this.initialCropBoxData = assign({}, cropBoxData); + }, + limitCropBox: function limitCropBox(sizeLimited, positionLimited) { + var options = this.options, + containerData = this.containerData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData, + limited = this.limited; + var aspectRatio = options.aspectRatio; + + if (sizeLimited) { + var minCropBoxWidth = Number(options.minCropBoxWidth) || 0; + var minCropBoxHeight = Number(options.minCropBoxHeight) || 0; + var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width; + var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height + + minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width); + minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height); + + if (aspectRatio) { + if (minCropBoxWidth && minCropBoxHeight) { + if (minCropBoxHeight * aspectRatio > minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + } else if (minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else if (minCropBoxHeight) { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + + if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) { + maxCropBoxHeight = maxCropBoxWidth / aspectRatio; + } else { + maxCropBoxWidth = maxCropBoxHeight * aspectRatio; + } + } // The minWidth/Height must be less than maxWidth/Height + + + cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth); + cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight); + cropBoxData.maxWidth = maxCropBoxWidth; + cropBoxData.maxHeight = maxCropBoxHeight; + } + + if (positionLimited) { + if (limited) { + cropBoxData.minLeft = Math.max(0, canvasData.left); + cropBoxData.minTop = Math.max(0, canvasData.top); + cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width; + cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height; + } else { + cropBoxData.minLeft = 0; + cropBoxData.minTop = 0; + cropBoxData.maxLeft = containerData.width - cropBoxData.width; + cropBoxData.maxTop = containerData.height - cropBoxData.height; + } + } + }, + renderCropBox: function renderCropBox() { + var options = this.options, + containerData = this.containerData, + cropBoxData = this.cropBoxData; + + if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) { + cropBoxData.left = cropBoxData.oldLeft; + } + + if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) { + cropBoxData.top = cropBoxData.oldTop; + } + + cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth); + cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); + this.limitCropBox(false, true); + cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft); + cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop); + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + + if (options.movable && options.cropBoxMovable) { + // Turn to move the canvas when the crop box is equal to the container + setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL); + } + + setStyle(this.cropBox, assign({ + width: cropBoxData.width, + height: cropBoxData.height + }, getTransforms({ + translateX: cropBoxData.left, + translateY: cropBoxData.top + }))); + + if (this.cropped && this.limited) { + this.limitCanvas(true, true); + } + + if (!this.disabled) { + this.output(); + } + }, + output: function output() { + this.preview(); + dispatchEvent(this.element, EVENT_CROP, this.getData()); + } + }; + + var preview = { + initPreview: function initPreview() { + var element = this.element, + crossOrigin = this.crossOrigin; + var preview = this.options.preview; + var url = crossOrigin ? this.crossOriginUrl : this.url; + var alt = element.alt || 'The image to preview'; + var image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = url; + image.alt = alt; + this.viewBox.appendChild(image); + this.viewBoxImage = image; + + if (!preview) { + return; + } + + var previews = preview; + + if (typeof preview === 'string') { + previews = element.ownerDocument.querySelectorAll(preview); + } else if (preview.querySelector) { + previews = [preview]; + } + + this.previews = previews; + forEach(previews, function (el) { + var img = document.createElement('img'); // Save the original size for recover + + setData(el, DATA_PREVIEW, { + width: el.offsetWidth, + height: el.offsetHeight, + html: el.innerHTML + }); + + if (crossOrigin) { + img.crossOrigin = crossOrigin; + } + + img.src = url; + img.alt = alt; + /** + * Override img element styles + * Add `display:block` to avoid margin top issue + * Add `height:auto` to override `height` attribute on IE8 + * (Occur only when margin-top <= -height) + */ + + img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;"'; + el.innerHTML = ''; + el.appendChild(img); + }); + }, + resetPreview: function resetPreview() { + forEach(this.previews, function (element) { + var data = getData(element, DATA_PREVIEW); + setStyle(element, { + width: data.width, + height: data.height + }); + element.innerHTML = data.html; + removeData(element, DATA_PREVIEW); + }); + }, + preview: function preview() { + var imageData = this.imageData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var cropBoxWidth = cropBoxData.width, + cropBoxHeight = cropBoxData.height; + var width = imageData.width, + height = imageData.height; + var left = cropBoxData.left - canvasData.left - imageData.left; + var top = cropBoxData.top - canvasData.top - imageData.top; + + if (!this.cropped || this.disabled) { + return; + } + + setStyle(this.viewBoxImage, assign({ + width: width, + height: height + }, getTransforms(assign({ + translateX: -left, + translateY: -top + }, imageData)))); + forEach(this.previews, function (element) { + var data = getData(element, DATA_PREVIEW); + var originalWidth = data.width; + var originalHeight = data.height; + var newWidth = originalWidth; + var newHeight = originalHeight; + var ratio = 1; + + if (cropBoxWidth) { + ratio = originalWidth / cropBoxWidth; + newHeight = cropBoxHeight * ratio; + } + + if (cropBoxHeight && newHeight > originalHeight) { + ratio = originalHeight / cropBoxHeight; + newWidth = cropBoxWidth * ratio; + newHeight = originalHeight; + } + + setStyle(element, { + width: newWidth, + height: newHeight + }); + setStyle(element.getElementsByTagName('img')[0], assign({ + width: width * ratio, + height: height * ratio + }, getTransforms(assign({ + translateX: -left * ratio, + translateY: -top * ratio + }, imageData)))); + }); + } + }; + + var events = { + bind: function bind() { + var element = this.element, + options = this.options, + cropper = this.cropper; + + if (isFunction(options.cropstart)) { + addListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + addListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + addListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + addListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + addListener(element, EVENT_ZOOM, options.zoom); + } + + addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this)); + + if (options.zoomable && options.zoomOnWheel) { + addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), { + passive: false, + capture: true + }); + } + + if (options.toggleDragModeOnDblclick) { + addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this)); + } + + addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this)); + addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this)); + + if (options.responsive) { + addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this)); + } + }, + unbind: function unbind() { + var element = this.element, + options = this.options, + cropper = this.cropper; + + if (isFunction(options.cropstart)) { + removeListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + removeListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + removeListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + removeListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + removeListener(element, EVENT_ZOOM, options.zoom); + } + + removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart); + + if (options.zoomable && options.zoomOnWheel) { + removeListener(cropper, EVENT_WHEEL, this.onWheel, { + passive: false, + capture: true + }); + } + + if (options.toggleDragModeOnDblclick) { + removeListener(cropper, EVENT_DBLCLICK, this.onDblclick); + } + + removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove); + removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd); + + if (options.responsive) { + removeListener(window, EVENT_RESIZE, this.onResize); + } + } + }; + + var handlers = { + resize: function resize() { + var options = this.options, + container = this.container, + containerData = this.containerData; + var minContainerWidth = Number(options.minContainerWidth) || MIN_CONTAINER_WIDTH; + var minContainerHeight = Number(options.minContainerHeight) || MIN_CONTAINER_HEIGHT; + + if (this.disabled || containerData.width <= minContainerWidth || containerData.height <= minContainerHeight) { + return; + } + + var ratio = container.offsetWidth / containerData.width; // Resize when width changed or height changed + + if (ratio !== 1 || container.offsetHeight !== containerData.height) { + var canvasData; + var cropBoxData; + + if (options.restore) { + canvasData = this.getCanvasData(); + cropBoxData = this.getCropBoxData(); + } + + this.render(); + + if (options.restore) { + this.setCanvasData(forEach(canvasData, function (n, i) { + canvasData[i] = n * ratio; + })); + this.setCropBoxData(forEach(cropBoxData, function (n, i) { + cropBoxData[i] = n * ratio; + })); + } + } + }, + dblclick: function dblclick() { + if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) { + return; + } + + this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP); + }, + wheel: function wheel(event) { + var _this = this; + + var ratio = Number(this.options.wheelZoomRatio) || 0.1; + var delta = 1; + + if (this.disabled) { + return; + } + + event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21) + + if (this.wheeling) { + return; + } + + this.wheeling = true; + setTimeout(function () { + _this.wheeling = false; + }, 50); + + if (event.deltaY) { + delta = event.deltaY > 0 ? 1 : -1; + } else if (event.wheelDelta) { + delta = -event.wheelDelta / 120; + } else if (event.detail) { + delta = event.detail > 0 ? 1 : -1; + } + + this.zoom(-delta * ratio, event); + }, + cropStart: function cropStart(event) { + var buttons = event.buttons, + button = event.button; + + if (this.disabled // No primary button (Usually the left button) + // Note that touch events have no `buttons` or `button` property + || isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu + || event.ctrlKey) { + return; + } + + var options = this.options, + pointers = this.pointers; + var action; + + if (event.changedTouches) { + // Handle touch event + forEach(event.changedTouches, function (touch) { + pointers[touch.identifier] = getPointer(touch); + }); + } else { + // Handle mouse event and pointer event + pointers[event.pointerId || 0] = getPointer(event); + } + + if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) { + action = ACTION_ZOOM; + } else { + action = getData(event.target, DATA_ACTION); + } + + if (!REGEXP_ACTIONS.test(action)) { + return; + } + + if (dispatchEvent(this.element, EVENT_CROP_START, { + originalEvent: event, + action: action + }) === false) { + return; + } // This line is required for preventing page zooming in iOS browsers + + + event.preventDefault(); + this.action = action; + this.cropping = false; + + if (action === ACTION_CROP) { + this.cropping = true; + addClass(this.dragBox, CLASS_MODAL); + } + }, + cropMove: function cropMove(event) { + var action = this.action; + + if (this.disabled || !action) { + return; + } + + var pointers = this.pointers; + event.preventDefault(); + + if (dispatchEvent(this.element, EVENT_CROP_MOVE, { + originalEvent: event, + action: action + }) === false) { + return; + } + + if (event.changedTouches) { + forEach(event.changedTouches, function (touch) { + // The first parameter should not be undefined (#432) + assign(pointers[touch.identifier] || {}, getPointer(touch, true)); + }); + } else { + assign(pointers[event.pointerId || 0] || {}, getPointer(event, true)); + } + + this.change(event); + }, + cropEnd: function cropEnd(event) { + if (this.disabled) { + return; + } + + var action = this.action, + pointers = this.pointers; + + if (event.changedTouches) { + forEach(event.changedTouches, function (touch) { + delete pointers[touch.identifier]; + }); + } else { + delete pointers[event.pointerId || 0]; + } + + if (!action) { + return; + } + + event.preventDefault(); + + if (!Object.keys(pointers).length) { + this.action = ''; + } + + if (this.cropping) { + this.cropping = false; + toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal); + } + + dispatchEvent(this.element, EVENT_CROP_END, { + originalEvent: event, + action: action + }); + } + }; + + var change = { + change: function change(event) { + var options = this.options, + canvasData = this.canvasData, + containerData = this.containerData, + cropBoxData = this.cropBoxData, + pointers = this.pointers; + var action = this.action; + var aspectRatio = options.aspectRatio; + var left = cropBoxData.left, + top = cropBoxData.top, + width = cropBoxData.width, + height = cropBoxData.height; + var right = left + width; + var bottom = top + height; + var minLeft = 0; + var minTop = 0; + var maxWidth = containerData.width; + var maxHeight = containerData.height; + var renderable = true; + var offset; // Locking aspect ratio in "free mode" by holding shift key + + if (!aspectRatio && event.shiftKey) { + aspectRatio = width && height ? width / height : 1; + } + + if (this.limited) { + minLeft = cropBoxData.minLeft; + minTop = cropBoxData.minTop; + maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width); + maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height); + } + + var pointer = pointers[Object.keys(pointers)[0]]; + var range = { + x: pointer.endX - pointer.startX, + y: pointer.endY - pointer.startY + }; + + var check = function check(side) { + switch (side) { + case ACTION_EAST: + if (right + range.x > maxWidth) { + range.x = maxWidth - right; + } + + break; + + case ACTION_WEST: + if (left + range.x < minLeft) { + range.x = minLeft - left; + } + + break; + + case ACTION_NORTH: + if (top + range.y < minTop) { + range.y = minTop - top; + } + + break; + + case ACTION_SOUTH: + if (bottom + range.y > maxHeight) { + range.y = maxHeight - bottom; + } + + break; + + default: + } + }; + + switch (action) { + // Move crop box + case ACTION_ALL: + left += range.x; + top += range.y; + break; + // Resize crop box + + case ACTION_EAST: + if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + + if (width < 0) { + action = ACTION_WEST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_NORTH: + if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + + if (height < 0) { + action = ACTION_SOUTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_WEST: + if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + + if (width < 0) { + action = ACTION_EAST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_SOUTH: + if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) { + renderable = false; + break; + } + + check(ACTION_SOUTH); + height += range.y; + + if (height < 0) { + action = ACTION_NORTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_NORTH_EAST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || right >= maxWidth)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + } else { + check(ACTION_NORTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + top -= height; + } + + break; + + case ACTION_NORTH_WEST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || left <= minLeft)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + left += cropBoxData.width - width; + } else { + check(ACTION_NORTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_WEST: + if (aspectRatio) { + if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_EAST: + if (aspectRatio) { + if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + top -= height; + } + + break; + // Move canvas + + case ACTION_MOVE: + this.move(range.x, range.y); + renderable = false; + break; + // Zoom canvas + + case ACTION_ZOOM: + this.zoom(getMaxZoomRatio(pointers), event); + renderable = false; + break; + // Create crop box + + case ACTION_CROP: + if (!range.x || !range.y) { + renderable = false; + break; + } + + offset = getOffset(this.cropper); + left = pointer.startX - offset.left; + top = pointer.startY - offset.top; + width = cropBoxData.minWidth; + height = cropBoxData.minHeight; + + if (range.x > 0) { + action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST; + } else if (range.x < 0) { + left -= width; + action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST; + } + + if (range.y < 0) { + top -= height; + } // Show the crop box if is hidden + + + if (!this.cropped) { + removeClass(this.cropBox, CLASS_HIDDEN); + this.cropped = true; + + if (this.limited) { + this.limitCropBox(true, true); + } + } + + break; + + default: + } + + if (renderable) { + cropBoxData.width = width; + cropBoxData.height = height; + cropBoxData.left = left; + cropBoxData.top = top; + this.action = action; + this.renderCropBox(); + } // Override + + + forEach(pointers, function (p) { + p.startX = p.endX; + p.startY = p.endY; + }); + } + }; + + var methods = { + // Show the crop box manually + crop: function crop() { + if (this.ready && !this.cropped && !this.disabled) { + this.cropped = true; + this.limitCropBox(true, true); + + if (this.options.modal) { + addClass(this.dragBox, CLASS_MODAL); + } + + removeClass(this.cropBox, CLASS_HIDDEN); + this.setCropBoxData(this.initialCropBoxData); + } + + return this; + }, + // Reset the image and crop box to their initial states + reset: function reset() { + if (this.ready && !this.disabled) { + this.imageData = assign({}, this.initialImageData); + this.canvasData = assign({}, this.initialCanvasData); + this.cropBoxData = assign({}, this.initialCropBoxData); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + } + + return this; + }, + // Clear the crop box + clear: function clear() { + if (this.cropped && !this.disabled) { + assign(this.cropBoxData, { + left: 0, + top: 0, + width: 0, + height: 0 + }); + this.cropped = false; + this.renderCropBox(); + this.limitCanvas(true, true); // Render canvas after crop box rendered + + this.renderCanvas(); + removeClass(this.dragBox, CLASS_MODAL); + addClass(this.cropBox, CLASS_HIDDEN); + } + + return this; + }, + + /** + * Replace the image's src and rebuild the cropper + * @param {string} url - The new URL. + * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one. + * @returns {Cropper} this + */ + replace: function replace(url) { + var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + if (!this.disabled && url) { + if (this.isImg) { + this.element.src = url; + } + + if (hasSameSize) { + this.url = url; + this.image.src = url; + + if (this.ready) { + this.viewBoxImage.src = url; + forEach(this.previews, function (element) { + element.getElementsByTagName('img')[0].src = url; + }); + } + } else { + if (this.isImg) { + this.replaced = true; + } + + this.options.data = null; + this.uncreate(); + this.load(url); + } + } + + return this; + }, + // Enable (unfreeze) the cropper + enable: function enable() { + if (this.ready && this.disabled) { + this.disabled = false; + removeClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + // Disable (freeze) the cropper + disable: function disable() { + if (this.ready && !this.disabled) { + this.disabled = true; + addClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + + /** + * Destroy the cropper and remove the instance from the image + * @returns {Cropper} this + */ + destroy: function destroy() { + var element = this.element; + + if (!element[NAMESPACE]) { + return this; + } + + element[NAMESPACE] = undefined; + + if (this.isImg && this.replaced) { + element.src = this.originalUrl; + } + + this.uncreate(); + return this; + }, + + /** + * Move the canvas with relative offsets + * @param {number} offsetX - The relative offset distance on the x-axis. + * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis. + * @returns {Cropper} this + */ + move: function move(offsetX) { + var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX; + var _this$canvasData = this.canvasData, + left = _this$canvasData.left, + top = _this$canvasData.top; + return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY)); + }, + + /** + * Move the canvas to an absolute point + * @param {number} x - The x-axis coordinate. + * @param {number} [y=x] - The y-axis coordinate. + * @returns {Cropper} this + */ + moveTo: function moveTo(x) { + var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x; + var canvasData = this.canvasData; + var changed = false; + x = Number(x); + y = Number(y); + + if (this.ready && !this.disabled && this.options.movable) { + if (isNumber(x)) { + canvasData.left = x; + changed = true; + } + + if (isNumber(y)) { + canvasData.top = y; + changed = true; + } + + if (changed) { + this.renderCanvas(true); + } + } + + return this; + }, + + /** + * Zoom the canvas with a relative ratio + * @param {number} ratio - The target ratio. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoom: function zoom(ratio, _originalEvent) { + var canvasData = this.canvasData; + ratio = Number(ratio); + + if (ratio < 0) { + ratio = 1 / (1 - ratio); + } else { + ratio = 1 + ratio; + } + + return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent); + }, + + /** + * Zoom the canvas to an absolute ratio + * @param {number} ratio - The target ratio. + * @param {Object} pivot - The zoom pivot point coordinate. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoomTo: function zoomTo(ratio, pivot, _originalEvent) { + var options = this.options, + canvasData = this.canvasData; + var width = canvasData.width, + height = canvasData.height, + naturalWidth = canvasData.naturalWidth, + naturalHeight = canvasData.naturalHeight; + ratio = Number(ratio); + + if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) { + var newWidth = naturalWidth * ratio; + var newHeight = naturalHeight * ratio; + + if (dispatchEvent(this.element, EVENT_ZOOM, { + ratio: ratio, + oldRatio: width / naturalWidth, + originalEvent: _originalEvent + }) === false) { + return this; + } + + if (_originalEvent) { + var pointers = this.pointers; + var offset = getOffset(this.cropper); + var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : { + pageX: _originalEvent.pageX, + pageY: _originalEvent.pageY + }; // Zoom from the triggering point of the event + + canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width); + canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height); + } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) { + canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width); + canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height); + } else { + // Zoom from the center of the canvas + canvasData.left -= (newWidth - width) / 2; + canvasData.top -= (newHeight - height) / 2; + } + + canvasData.width = newWidth; + canvasData.height = newHeight; + this.renderCanvas(true); + } + + return this; + }, + + /** + * Rotate the canvas with a relative degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotate: function rotate(degree) { + return this.rotateTo((this.imageData.rotate || 0) + Number(degree)); + }, + + /** + * Rotate the canvas to an absolute degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotateTo: function rotateTo(degree) { + degree = Number(degree); + + if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) { + this.imageData.rotate = degree % 360; + this.renderCanvas(true, true); + } + + return this; + }, + + /** + * Scale the image on the x-axis. + * @param {number} scaleX - The scale ratio on the x-axis. + * @returns {Cropper} this + */ + scaleX: function scaleX(_scaleX) { + var scaleY = this.imageData.scaleY; + return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1); + }, + + /** + * Scale the image on the y-axis. + * @param {number} scaleY - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scaleY: function scaleY(_scaleY) { + var scaleX = this.imageData.scaleX; + return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY); + }, + + /** + * Scale the image + * @param {number} scaleX - The scale ratio on the x-axis. + * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scale: function scale(scaleX) { + var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX; + var imageData = this.imageData; + var transformed = false; + scaleX = Number(scaleX); + scaleY = Number(scaleY); + + if (this.ready && !this.disabled && this.options.scalable) { + if (isNumber(scaleX)) { + imageData.scaleX = scaleX; + transformed = true; + } + + if (isNumber(scaleY)) { + imageData.scaleY = scaleY; + transformed = true; + } + + if (transformed) { + this.renderCanvas(true, true); + } + } + + return this; + }, + + /** + * Get the cropped area position and size data (base on the original image) + * @param {boolean} [rounded=false] - Indicate if round the data values or not. + * @returns {Object} The result cropped data. + */ + getData: function getData() { + var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var options = this.options, + imageData = this.imageData, + canvasData = this.canvasData, + cropBoxData = this.cropBoxData; + var data; + + if (this.ready && this.cropped) { + data = { + x: cropBoxData.left - canvasData.left, + y: cropBoxData.top - canvasData.top, + width: cropBoxData.width, + height: cropBoxData.height + }; + var ratio = imageData.width / imageData.naturalWidth; + forEach(data, function (n, i) { + data[i] = n / ratio; + }); + + if (rounded) { + // In case rounding off leads to extra 1px in right or bottom border + // we should round the top-left corner and the dimension (#343). + var bottom = Math.round(data.y + data.height); + var right = Math.round(data.x + data.width); + data.x = Math.round(data.x); + data.y = Math.round(data.y); + data.width = right - data.x; + data.height = bottom - data.y; + } + } else { + data = { + x: 0, + y: 0, + width: 0, + height: 0 + }; + } + + if (options.rotatable) { + data.rotate = imageData.rotate || 0; + } + + if (options.scalable) { + data.scaleX = imageData.scaleX || 1; + data.scaleY = imageData.scaleY || 1; + } + + return data; + }, + + /** + * Set the cropped area position and size with new data + * @param {Object} data - The new data. + * @returns {Cropper} this + */ + setData: function setData(data) { + var options = this.options, + imageData = this.imageData, + canvasData = this.canvasData; + var cropBoxData = {}; + + if (this.ready && !this.disabled && isPlainObject(data)) { + var transformed = false; + + if (options.rotatable) { + if (isNumber(data.rotate) && data.rotate !== imageData.rotate) { + imageData.rotate = data.rotate; + transformed = true; + } + } + + if (options.scalable) { + if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) { + imageData.scaleX = data.scaleX; + transformed = true; + } + + if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) { + imageData.scaleY = data.scaleY; + transformed = true; + } + } + + if (transformed) { + this.renderCanvas(true, true); + } + + var ratio = imageData.width / imageData.naturalWidth; + + if (isNumber(data.x)) { + cropBoxData.left = data.x * ratio + canvasData.left; + } + + if (isNumber(data.y)) { + cropBoxData.top = data.y * ratio + canvasData.top; + } + + if (isNumber(data.width)) { + cropBoxData.width = data.width * ratio; + } + + if (isNumber(data.height)) { + cropBoxData.height = data.height * ratio; + } + + this.setCropBoxData(cropBoxData); + } + + return this; + }, + + /** + * Get the container size data. + * @returns {Object} The result container data. + */ + getContainerData: function getContainerData() { + return this.ready ? assign({}, this.containerData) : {}; + }, + + /** + * Get the image position and size data. + * @returns {Object} The result image data. + */ + getImageData: function getImageData() { + return this.sized ? assign({}, this.imageData) : {}; + }, + + /** + * Get the canvas position and size data. + * @returns {Object} The result canvas data. + */ + getCanvasData: function getCanvasData() { + var canvasData = this.canvasData; + var data = {}; + + if (this.ready) { + forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) { + data[n] = canvasData[n]; + }); + } + + return data; + }, + + /** + * Set the canvas position and size with new data. + * @param {Object} data - The new canvas data. + * @returns {Cropper} this + */ + setCanvasData: function setCanvasData(data) { + var canvasData = this.canvasData; + var aspectRatio = canvasData.aspectRatio; + + if (this.ready && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + canvasData.left = data.left; + } + + if (isNumber(data.top)) { + canvasData.top = data.top; + } + + if (isNumber(data.width)) { + canvasData.width = data.width; + canvasData.height = data.width / aspectRatio; + } else if (isNumber(data.height)) { + canvasData.height = data.height; + canvasData.width = data.height * aspectRatio; + } + + this.renderCanvas(true); + } + + return this; + }, + + /** + * Get the crop box position and size data. + * @returns {Object} The result crop box data. + */ + getCropBoxData: function getCropBoxData() { + var cropBoxData = this.cropBoxData; + var data; + + if (this.ready && this.cropped) { + data = { + left: cropBoxData.left, + top: cropBoxData.top, + width: cropBoxData.width, + height: cropBoxData.height + }; + } + + return data || {}; + }, + + /** + * Set the crop box position and size with new data. + * @param {Object} data - The new crop box data. + * @returns {Cropper} this + */ + setCropBoxData: function setCropBoxData(data) { + var cropBoxData = this.cropBoxData; + var aspectRatio = this.options.aspectRatio; + var widthChanged; + var heightChanged; + + if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + cropBoxData.left = data.left; + } + + if (isNumber(data.top)) { + cropBoxData.top = data.top; + } + + if (isNumber(data.width) && data.width !== cropBoxData.width) { + widthChanged = true; + cropBoxData.width = data.width; + } + + if (isNumber(data.height) && data.height !== cropBoxData.height) { + heightChanged = true; + cropBoxData.height = data.height; + } + + if (aspectRatio) { + if (widthChanged) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else if (heightChanged) { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.renderCropBox(); + } + + return this; + }, + + /** + * Get a canvas drawn the cropped image. + * @param {Object} [options={}] - The config options. + * @returns {HTMLCanvasElement} - The result canvas. + */ + getCroppedCanvas: function getCroppedCanvas() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (!this.ready || !window.HTMLCanvasElement) { + return null; + } + + var canvasData = this.canvasData; + var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped. + + if (!this.cropped) { + return source; + } + + var _this$getData = this.getData(), + initialX = _this$getData.x, + initialY = _this$getData.y, + initialWidth = _this$getData.width, + initialHeight = _this$getData.height; + + var ratio = source.width / Math.floor(canvasData.naturalWidth); + + if (ratio !== 1) { + initialX *= ratio; + initialY *= ratio; + initialWidth *= ratio; + initialHeight *= ratio; + } + + var aspectRatio = initialWidth / initialHeight; + var maxSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.maxWidth || Infinity, + height: options.maxHeight || Infinity + }); + var minSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.minWidth || 0, + height: options.minHeight || 0 + }, 'cover'); + + var _getAdjustedSizes = getAdjustedSizes({ + aspectRatio: aspectRatio, + width: options.width || (ratio !== 1 ? source.width : initialWidth), + height: options.height || (ratio !== 1 ? source.height : initialHeight) + }), + width = _getAdjustedSizes.width, + height = _getAdjustedSizes.height; + + width = Math.min(maxSizes.width, Math.max(minSizes.width, width)); + height = Math.min(maxSizes.height, Math.max(minSizes.height, height)); + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + context.fillStyle = options.fillColor || 'transparent'; + context.fillRect(0, 0, width, height); + var _options$imageSmoothi = options.imageSmoothingEnabled, + imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi, + imageSmoothingQuality = options.imageSmoothingQuality; + context.imageSmoothingEnabled = imageSmoothingEnabled; + + if (imageSmoothingQuality) { + context.imageSmoothingQuality = imageSmoothingQuality; + } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage + + + var sourceWidth = source.width; + var sourceHeight = source.height; // Source canvas parameters + + var srcX = initialX; + var srcY = initialY; + var srcWidth; + var srcHeight; // Destination canvas parameters + + var dstX; + var dstY; + var dstWidth; + var dstHeight; + + if (srcX <= -initialWidth || srcX > sourceWidth) { + srcX = 0; + srcWidth = 0; + dstX = 0; + dstWidth = 0; + } else if (srcX <= 0) { + dstX = -srcX; + srcX = 0; + srcWidth = Math.min(sourceWidth, initialWidth + srcX); + dstWidth = srcWidth; + } else if (srcX <= sourceWidth) { + dstX = 0; + srcWidth = Math.min(initialWidth, sourceWidth - srcX); + dstWidth = srcWidth; + } + + if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) { + srcY = 0; + srcHeight = 0; + dstY = 0; + dstHeight = 0; + } else if (srcY <= 0) { + dstY = -srcY; + srcY = 0; + srcHeight = Math.min(sourceHeight, initialHeight + srcY); + dstHeight = srcHeight; + } else if (srcY <= sourceHeight) { + dstY = 0; + srcHeight = Math.min(initialHeight, sourceHeight - srcY); + dstHeight = srcHeight; + } + + var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid "IndexSizeError" + + if (dstWidth > 0 && dstHeight > 0) { + var scale = width / initialWidth; + params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale); + } // All the numerical parameters should be integer for `drawImage` + // https://github.com/fengyuanchen/cropper/issues/476 + + + context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) { + return Math.floor(normalizeDecimalNumber(param)); + })))); + return canvas; + }, + + /** + * Change the aspect ratio of the crop box. + * @param {number} aspectRatio - The new aspect ratio. + * @returns {Cropper} this + */ + setAspectRatio: function setAspectRatio(aspectRatio) { + var options = this.options; + + if (!this.disabled && !isUndefined(aspectRatio)) { + // 0 -> NaN + options.aspectRatio = Math.max(0, aspectRatio) || NaN; + + if (this.ready) { + this.initCropBox(); + + if (this.cropped) { + this.renderCropBox(); + } + } + } + + return this; + }, + + /** + * Change the drag mode. + * @param {string} mode - The new drag mode. + * @returns {Cropper} this + */ + setDragMode: function setDragMode(mode) { + var options = this.options, + dragBox = this.dragBox, + face = this.face; + + if (this.ready && !this.disabled) { + var croppable = mode === DRAG_MODE_CROP; + var movable = options.movable && mode === DRAG_MODE_MOVE; + mode = croppable || movable ? mode : DRAG_MODE_NONE; + options.dragMode = mode; + setData(dragBox, DATA_ACTION, mode); + toggleClass(dragBox, CLASS_CROP, croppable); + toggleClass(dragBox, CLASS_MOVE, movable); + + if (!options.cropBoxMovable) { + // Sync drag mode to crop box when it is not movable + setData(face, DATA_ACTION, mode); + toggleClass(face, CLASS_CROP, croppable); + toggleClass(face, CLASS_MOVE, movable); + } + } + + return this; + } + }; + + var AnotherCropper = WINDOW.Cropper; + + var Cropper = + /*#__PURE__*/ + function () { + /** + * Create a new Cropper. + * @param {Element} element - The target element for cropping. + * @param {Object} [options={}] - The configuration options. + */ + function Cropper(element) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Cropper); + + if (!element || !REGEXP_TAG_NAME.test(element.tagName)) { + throw new Error('The first argument is required and must be an or element.'); + } + + this.element = element; + this.options = assign({}, DEFAULTS, isPlainObject(options) && options); + this.cropped = false; + this.disabled = false; + this.pointers = {}; + this.ready = false; + this.reloading = false; + this.replaced = false; + this.sized = false; + this.sizing = false; + this.init(); + } + + _createClass(Cropper, [{ + key: "init", + value: function init() { + var element = this.element; + var tagName = element.tagName.toLowerCase(); + var url; + + if (element[NAMESPACE]) { + return; + } + + element[NAMESPACE] = this; + + if (tagName === 'img') { + this.isImg = true; // e.g.: "img/picture.jpg" + + url = element.getAttribute('src') || ''; + this.originalUrl = url; // Stop when it's a blank image + + if (!url) { + return; + } // e.g.: "http://example.com/img/picture.jpg" + + + url = element.src; + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { + url = element.toDataURL(); + } + + this.load(url); + } + }, { + key: "load", + value: function load(url) { + var _this = this; + + if (!url) { + return; + } + + this.url = url; + this.imageData = {}; + var element = this.element, + options = this.options; + + if (!options.rotatable && !options.scalable) { + options.checkOrientation = false; + } // Only IE10+ supports Typed Arrays + + + if (!options.checkOrientation || !window.ArrayBuffer) { + this.clone(); + return; + } // Detect the mime type of the image directly if it is a Data URL + + + if (REGEXP_DATA_URL.test(url)) { + // Read ArrayBuffer from Data URL of JPEG images directly for better performance + if (REGEXP_DATA_URL_JPEG.test(url)) { + this.read(dataURLToArrayBuffer(url)); + } else { + // Only a JPEG image may contains Exif Orientation information, + // the rest types of Data URLs are not necessary to check orientation at all. + this.clone(); + } + + return; + } // 1. Detect the mime type of the image by a XMLHttpRequest. + // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image. + + + var xhr = new XMLHttpRequest(); + var clone = this.clone.bind(this); + this.reloading = true; + this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes: + // http, https, data, chrome, chrome-extension. + // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy + // in some browsers as IE11 and Safari. + + xhr.onabort = clone; + xhr.onerror = clone; + xhr.ontimeout = clone; + + xhr.onprogress = function () { + // Abort the request directly if it not a JPEG image for better performance + if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) { + xhr.abort(); + } + }; + + xhr.onload = function () { + _this.read(xhr.response); + }; + + xhr.onloadend = function () { + _this.reloading = false; + _this.xhr = null; + }; // Bust cache when there is a "crossOrigin" property to avoid browser cache error + + + if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) { + url = addTimestamp(url); + } + + xhr.open('GET', url); + xhr.responseType = 'arraybuffer'; + xhr.withCredentials = element.crossOrigin === 'use-credentials'; + xhr.send(); + } + }, { + key: "read", + value: function read(arrayBuffer) { + var options = this.options, + imageData = this.imageData; // Reset the orientation value to its default value 1 + // as some iOS browsers will render image with its orientation + + var orientation = resetAndGetOrientation(arrayBuffer); + var rotate = 0; + var scaleX = 1; + var scaleY = 1; + + if (orientation > 1) { + // Generate a new URL which has the default orientation value + this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG); + + var _parseOrientation = parseOrientation(orientation); + + rotate = _parseOrientation.rotate; + scaleX = _parseOrientation.scaleX; + scaleY = _parseOrientation.scaleY; + } + + if (options.rotatable) { + imageData.rotate = rotate; + } + + if (options.scalable) { + imageData.scaleX = scaleX; + imageData.scaleY = scaleY; + } + + this.clone(); + } + }, { + key: "clone", + value: function clone() { + var element = this.element, + url = this.url; + var crossOrigin = element.crossOrigin; + var crossOriginUrl = url; + + if (this.options.checkCrossOrigin && isCrossOriginURL(url)) { + if (!crossOrigin) { + crossOrigin = 'anonymous'; + } // Bust cache when there is not a "crossOrigin" property (#519) + + + crossOriginUrl = addTimestamp(url); + } + + this.crossOrigin = crossOrigin; + this.crossOriginUrl = crossOriginUrl; + var image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = crossOriginUrl || url; + image.alt = element.alt || 'The image to crop'; + this.image = image; + image.onload = this.start.bind(this); + image.onerror = this.stop.bind(this); + addClass(image, CLASS_HIDE); + element.parentNode.insertBefore(image, element.nextSibling); + } + }, { + key: "start", + value: function start() { + var _this2 = this; + + var image = this.image; + image.onload = null; + image.onerror = null; + this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices, + // such as Safari for iOS, Chrome for iOS, and in-app browsers. + + var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent); + + var done = function done(naturalWidth, naturalHeight) { + assign(_this2.imageData, { + naturalWidth: naturalWidth, + naturalHeight: naturalHeight, + aspectRatio: naturalWidth / naturalHeight + }); + _this2.sizing = false; + _this2.sized = true; + + _this2.build(); + }; // Most modern browsers (excepts iOS WebKit) + + + if (image.naturalWidth && !isIOSWebKit) { + done(image.naturalWidth, image.naturalHeight); + return; + } + + var sizingImage = document.createElement('img'); + var body = document.body || document.documentElement; + this.sizingImage = sizingImage; + + sizingImage.onload = function () { + done(sizingImage.width, sizingImage.height); + + if (!isIOSWebKit) { + body.removeChild(sizingImage); + } + }; + + sizingImage.src = image.src; // iOS WebKit will convert the image automatically + // with its orientation once append it into DOM (#279) + + if (!isIOSWebKit) { + sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;'; + body.appendChild(sizingImage); + } + } + }, { + key: "stop", + value: function stop() { + var image = this.image; + image.onload = null; + image.onerror = null; + image.parentNode.removeChild(image); + this.image = null; + } + }, { + key: "build", + value: function build() { + if (!this.sized || this.ready) { + return; + } + + var element = this.element, + options = this.options, + image = this.image; // Create cropper elements + + var container = element.parentNode; + var template = document.createElement('div'); + template.innerHTML = TEMPLATE; + var cropper = template.querySelector(".".concat(NAMESPACE, "-container")); + var canvas = cropper.querySelector(".".concat(NAMESPACE, "-canvas")); + var dragBox = cropper.querySelector(".".concat(NAMESPACE, "-drag-box")); + var cropBox = cropper.querySelector(".".concat(NAMESPACE, "-crop-box")); + var face = cropBox.querySelector(".".concat(NAMESPACE, "-face")); + this.container = container; + this.cropper = cropper; + this.canvas = canvas; + this.dragBox = dragBox; + this.cropBox = cropBox; + this.viewBox = cropper.querySelector(".".concat(NAMESPACE, "-view-box")); + this.face = face; + canvas.appendChild(image); // Hide the original image + + addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image + + container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden + + if (!this.isImg) { + removeClass(image, CLASS_HIDE); + } + + this.initPreview(); + this.bind(); + options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN; + options.aspectRatio = Math.max(0, options.aspectRatio) || NaN; + options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0; + addClass(cropBox, CLASS_HIDDEN); + + if (!options.guides) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-dashed")), CLASS_HIDDEN); + } + + if (!options.center) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-center")), CLASS_HIDDEN); + } + + if (options.background) { + addClass(cropper, "".concat(NAMESPACE, "-bg")); + } + + if (!options.highlight) { + addClass(face, CLASS_INVISIBLE); + } + + if (options.cropBoxMovable) { + addClass(face, CLASS_MOVE); + setData(face, DATA_ACTION, ACTION_ALL); + } + + if (!options.cropBoxResizable) { + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-line")), CLASS_HIDDEN); + addClass(cropBox.getElementsByClassName("".concat(NAMESPACE, "-point")), CLASS_HIDDEN); + } + + this.render(); + this.ready = true; + this.setDragMode(options.dragMode); + + if (options.autoCrop) { + this.crop(); + } + + this.setData(options.data); + + if (isFunction(options.ready)) { + addListener(element, EVENT_READY, options.ready, { + once: true + }); + } + + dispatchEvent(element, EVENT_READY); + } + }, { + key: "unbuild", + value: function unbuild() { + if (!this.ready) { + return; + } + + this.ready = false; + this.unbind(); + this.resetPreview(); + this.cropper.parentNode.removeChild(this.cropper); + removeClass(this.element, CLASS_HIDDEN); + } + }, { + key: "uncreate", + value: function uncreate() { + if (this.ready) { + this.unbuild(); + this.ready = false; + this.cropped = false; + } else if (this.sizing) { + this.sizingImage.onload = null; + this.sizing = false; + this.sized = false; + } else if (this.reloading) { + this.xhr.onabort = null; + this.xhr.abort(); + } else if (this.image) { + this.stop(); + } + } + /** + * Get the no conflict cropper class. + * @returns {Cropper} The cropper class. + */ + + }], [{ + key: "noConflict", + value: function noConflict() { + window.Cropper = AnotherCropper; + return Cropper; + } + /** + * Change the default options. + * @param {Object} options - The new default options. + */ + + }, { + key: "setDefaults", + value: function setDefaults(options) { + assign(DEFAULTS, isPlainObject(options) && options); + } + }]); + + return Cropper; + }(); + + assign(Cropper.prototype, render, preview, events, handlers, change, methods); + + return Cropper; + +})); diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.css b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.css new file mode 100644 index 00000000..44079043 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.css @@ -0,0 +1,9 @@ +/*! + * Cropper.js v1.5.4 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2019-08-03T08:38:38.177Z + */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC")}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.js new file mode 100644 index 00000000..88fd675a --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/dist/cropper.min.js @@ -0,0 +1,10 @@ +/*! + * Cropper.js v1.5.4 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2019-08-03T08:38:42.128Z + */ +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t=t||self).Cropper=i()}(this,function(){"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,i){for(var e=0;et.width?3===e?r=t.height*h:s=t.width/h:3===e?s=t.width/h:r=t.height*h;var c={aspectRatio:h,naturalWidth:n,naturalHeight:o,width:r,height:s};c.left=(t.width-r)/2,c.top=(t.height-s)/2,c.oldLeft=c.left,c.oldTop=c.top,this.canvasData=c,this.limited=1===e||2===e,this.limitCanvas(!0,!0),this.initialImageData=rt({},i),this.initialCanvasData=rt({},c)},limitCanvas:function(t,i){var e=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,h=e.viewMode,r=n.aspectRatio,s=this.cropped&&o;if(t){var c=Number(e.minCanvasWidth)||0,d=Number(e.minCanvasHeight)||0;1=a.width&&(n.minLeft=Math.min(0,p),n.maxLeft=Math.max(0,p)),n.height>=a.height&&(n.minTop=Math.min(0,m),n.maxTop=Math.max(0,m))))}else n.minLeft=-n.width,n.minTop=-n.height,n.maxLeft=a.width,n.maxTop=a.height},renderCanvas:function(t,i){var e=this.canvasData,a=this.imageData;if(i){var n=function(t){var i=t.width,e=t.height,a=t.degree;if(90===(a=Math.abs(a)%180))return{width:e,height:i};var n=a%90*Math.PI/180,o=Math.sin(n),h=Math.cos(n),r=i*h+e*o,s=i*o+e*h;return 90e.maxWidth||e.widthe.maxHeight||e.heighti.width?n.height=n.width/e:n.width=n.height*e),this.cropBoxData=n,this.limitCropBox(!0,!0),n.width=Math.min(Math.max(n.width,n.minWidth),n.maxWidth),n.height=Math.min(Math.max(n.height,n.minHeight),n.maxHeight),n.width=Math.max(n.minWidth,n.width*a),n.height=Math.max(n.minHeight,n.height*a),n.left=i.left+(i.width-n.width)/2,n.top=i.top+(i.height-n.height)/2,n.oldLeft=n.left,n.oldTop=n.top,this.initialCropBoxData=rt({},n)},limitCropBox:function(t,i){var e=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,h=this.limited,r=e.aspectRatio;if(t){var s=Number(e.minCropBoxWidth)||0,c=Number(e.minCropBoxHeight)||0,d=h?Math.min(a.width,n.width,n.width+n.left,a.width-n.left):a.width,l=h?Math.min(a.height,n.height,n.height+n.top,a.height-n.top):a.height;s=Math.min(s,a.width),c=Math.min(c,a.height),r&&(s&&c?se.maxWidth||e.widthe.maxHeight||e.height=i.width&&e.height>=i.height?B:C),lt(this.cropBox,rt({width:e.width,height:e.height},Wt({translateX:e.left,translateY:e.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),Ct(this.element,w,this.getData())}},Xt={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,a=e?this.crossOriginUrl:this.url,n=t.alt||"The image to preview",o=document.createElement("img");if(e&&(o.crossOrigin=e),o.src=a,o.alt=n,this.viewBox.appendChild(o),this.viewBoxImage=o,i){var h=i;"string"==typeof i?h=t.ownerDocument.querySelectorAll(i):i.querySelector&&(h=[i]),ht(this.previews=h,function(t){var i=document.createElement("img");wt(t,g,{width:t.offsetWidth,height:t.offsetHeight,html:t.innerHTML}),e&&(i.crossOrigin=e),i.src=a,i.alt=n,i.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',t.innerHTML="",t.appendChild(i)})}},resetPreview:function(){ht(this.previews,function(t){var i=vt(t,g);lt(t,{width:i.width,height:i.height}),t.innerHTML=i.html,function(i,e){if(tt(i[e]))try{delete i[e]}catch(t){i[e]=void 0}else if(i.dataset)try{delete i.dataset[e]}catch(t){i.dataset[e]=void 0}else i.removeAttribute("data-".concat(ft(e)))}(t,g)})},preview:function(){var r=this.imageData,t=this.canvasData,i=this.cropBoxData,s=i.width,c=i.height,d=r.width,l=r.height,p=i.left-t.left-r.left,m=i.top-t.top-r.top;this.cropped&&!this.disabled&&(lt(this.viewBoxImage,rt({width:d,height:l},Wt(rt({translateX:-p,translateY:-m},r)))),ht(this.previews,function(t){var i=vt(t,g),e=i.width,a=i.height,n=e,o=a,h=1;s&&(o=c*(h=e/s)),c&&av&&(M.x=v-m);break;case E:c+M.xw&&(M.y=w-u)}}var y=h[Object.keys(h)[0]],M={x:y.endX-y.startX,y:y.endY-y.startY};switch(r){case C:c+=M.x,d+=M.y;break;case T:if(0<=M.x&&(v<=m||s&&(d<=f||w<=u))){b=!1;break}x(T),(l+=M.x)<0&&(r=E,c-=l=-l),s&&(p=l/s,d+=(o.height-p)/2);break;case N:if(M.y<=0&&(d<=f||s&&(c<=g||v<=m))){b=!1;break}x(N),p-=M.y,d+=M.y,p<0&&(r=W,d-=p=-p),s&&(l=p*s,c+=(o.width-l)/2);break;case E:if(M.x<=0&&(c<=g||s&&(d<=f||w<=u))){b=!1;break}x(E),l-=M.x,c+=M.x,l<0&&(r=T,c-=l=-l),s&&(p=l/s,d+=(o.height-p)/2);break;case W:if(0<=M.y&&(w<=u||s&&(c<=g||v<=m))){b=!1;break}x(W),(p+=M.y)<0&&(r=N,d-=p=-p),s&&(l=p*s,c+=(o.width-l)/2);break;case H:if(s){if(M.y<=0&&(d<=f||v<=m)){b=!1;break}x(N),p-=M.y,d+=M.y,l=p*s}else x(N),x(T),0<=M.x?m or element.");this.element=t,this.options=rt({},G,et(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return function(t,i,e){i&&a(t.prototype,i),e&&a(t,e)}(e,[{key:"init",value:function(){var t,i=this.element,e=i.tagName.toLowerCase();if(!i[d]){if(i[d]=this,"img"===e){if(this.isImg=!0,t=i.getAttribute("src")||"",!(this.originalUrl=t))return;t=i.src}else"canvas"===e&&window.HTMLCanvasElement&&(t=i.toDataURL());this.load(t)}}},{key:"load",value:function(t){var i=this;if(t){this.url=t,this.imageData={};var e=this.element,a=this.options;if(a.rotatable||a.scalable||(a.checkOrientation=!1),a.checkOrientation&&window.ArrayBuffer)if(Q.test(t))K.test(t)?this.read(function(t){var i=t.replace(Ot,""),e=atob(i),a=new ArrayBuffer(e.length),n=new Uint8Array(a);return ht(n,function(t,i){n[i]=e.charCodeAt(i)}),a}(t)):this.clone();else{var n=new XMLHttpRequest,o=this.clone.bind(this);this.reloading=!0,(this.xhr=n).onabort=o,n.onerror=o,n.ontimeout=o,n.onprogress=function(){n.getResponseHeader("content-type")!==q&&n.abort()},n.onload=function(){i.read(n.response)},n.onloadend=function(){i.reloading=!1,i.xhr=null},a.checkCrossOrigin&&Tt(t)&&e.crossOrigin&&(t=Et(t)),n.open("GET",t),n.responseType="arraybuffer",n.withCredentials="use-credentials"===e.crossOrigin,n.send()}else this.clone()}}},{key:"read",value:function(t){var i=this.options,e=this.imageData,a=zt(t),n=0,o=1,h=1;if(1
';var o=n.querySelector(".".concat(d,"-container")),h=o.querySelector(".".concat(d,"-canvas")),r=o.querySelector(".".concat(d,"-drag-box")),s=o.querySelector(".".concat(d,"-crop-box")),c=s.querySelector(".".concat(d,"-face"));this.container=a,this.cropper=o,this.canvas=h,this.dragBox=r,this.cropBox=s,this.viewBox=o.querySelector(".".concat(d,"-view-box")),this.face=c,h.appendChild(e),pt(t,Y),a.insertBefore(o,t.nextSibling),this.isImg||mt(e,l),this.initPreview(),this.bind(),i.initialAspectRatio=Math.max(0,i.initialAspectRatio)||NaN,i.aspectRatio=Math.max(0,i.aspectRatio)||NaN,i.viewMode=Math.max(0,Math.min(3,Math.round(i.viewMode)))||0,pt(s,Y),i.guides||pt(s.getElementsByClassName("".concat(d,"-dashed")),Y),i.center||pt(s.getElementsByClassName("".concat(d,"-center")),Y),i.background&&pt(o,"".concat(d,"-bg")),i.highlight||pt(c,p),i.cropBoxMovable&&(pt(c,m),wt(c,u,C)),i.cropBoxResizable||(pt(s.getElementsByClassName("".concat(d,"-line")),Y),pt(s.getElementsByClassName("".concat(d,"-point")),Y)),this.render(),this.ready=!0,this.setDragMode(i.dragMode),i.autoCrop&&this.crop(),this.setData(i.data),at(i.ready)&&Mt(t,S,i.ready,{once:!0}),Ct(t,S)}}},{key:"unbuild",value:function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),mt(this.element,Y))}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=jt,e}},{key:"setDefaults",value:function(t){rt(G,et(t)&&t)}}]),e}();return rt(Ut.prototype,Yt,Xt,Rt,At,St,It),Ut}); \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/package.json b/scripts/gcs/Desktop/website/node_modules/cropperjs/package.json new file mode 100644 index 00000000..4be7b0f7 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/package.json @@ -0,0 +1,164 @@ +{ + "_from": "cropperjs", + "_id": "cropperjs@1.5.5", + "_inBundle": false, + "_integrity": "sha512-aJF6GuGk0K+nxYpmK9ZEc0p8foHcrM3DAAK/1F66qe0h/b08hBNbjpZRM0JbPNHw452LCxzS8NndG5VMv+/hLA==", + "_location": "/cropperjs", + "_phantomChildren": {}, + "_requested": { + "type": "tag", + "registry": true, + "raw": "cropperjs", + "name": "cropperjs", + "escapedName": "cropperjs", + "rawSpec": "", + "saveSpec": null, + "fetchSpec": "latest" + }, + "_requiredBy": [ + "#USER", + "/" + ], + "_resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.5.tgz", + "_shasum": "07d04c64244ab88c1bfc382a848ec346ef50b7b9", + "_spec": "cropperjs", + "_where": "/Users/PMenon/Desktop/MTSSFINAL", + "author": { + "name": "Chen Fengyuan", + "url": "https://chenfengyuan.com" + }, + "browser": "dist/cropper.js", + "browserslist": [ + "last 2 versions", + "> 1%", + "not ie <= 8" + ], + "bugs": { + "url": "https://github.com/fengyuanchen/cropperjs/issues" + }, + "bundleDependencies": false, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "deprecated": false, + "description": "JavaScript image cropper.", + "devDependencies": { + "@babel/core": "^7.5.5", + "@babel/preset-env": "^7.5.5", + "@commitlint/cli": "^8.1.0", + "@commitlint/config-conventional": "^8.1.0", + "babel-plugin-istanbul": "^5.2.0", + "chai": "^4.2.0", + "change-case": "^3.1.0", + "codecov": "^3.5.0", + "cpy-cli": "^2.0.0", + "create-banner": "^1.0.0", + "cross-env": "^5.2.0", + "cssnano": "^4.1.10", + "del-cli": "^2.0.0", + "eslint": "^6.1.0", + "eslint-config-airbnb-base": "^13.2.0", + "eslint-plugin-import": "^2.18.2", + "husky": "^3.0.2", + "karma": "^4.2.0", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^3.0.0", + "karma-coverage-istanbul-reporter": "^2.1.0", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.5", + "karma-rollup-preprocessor": "^7.0.2", + "lint-staged": "^8.2.1", + "mocha": "^6.2.0", + "npm-run-all": "^4.1.5", + "postcss-cli": "^6.1.3", + "postcss-header": "^1.0.0", + "postcss-import": "^12.0.1", + "postcss-preset-env": "^6.7.0", + "postcss-url": "^8.0.0", + "puppeteer": "^1.19.0", + "rollup": "^1.18.0", + "rollup-plugin-babel": "^4.3.3", + "rollup-watch": "^4.3.1", + "stylelint": "^10.1.0", + "stylelint-config-standard": "^18.3.0", + "stylelint-order": "^3.0.1", + "uglify-js": "^3.6.0" + }, + "files": [ + "src", + "dist", + "types" + ], + "homepage": "https://fengyuanchen.github.io/cropperjs", + "husky": { + "hooks": { + "pre-commit": "lint-staged", + "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" + } + }, + "keywords": [ + "image", + "crop", + "move", + "zoom", + "rotate", + "scale", + "cropper", + "cropper.js", + "cropping", + "processing", + "html", + "css", + "javascript", + "front-end", + "web" + ], + "license": "MIT", + "lint-staged": { + "linters": { + "*.js": [ + "eslint --fix", + "git add" + ], + "*.{css,scss,html}": [ + "stylelint --fix", + "git add" + ] + }, + "ignore": [ + "{dist,docs}/**/*.js", + "*.min.*" + ] + }, + "main": "dist/cropper.common.js", + "module": "dist/cropper.esm.js", + "name": "cropperjs", + "repository": { + "type": "git", + "url": "git+https://github.com/fengyuanchen/cropperjs.git" + }, + "scripts": { + "build": "npm run build:css && npm run build:js", + "build:css": "postcss src/index.css -o dist/cropper.css --no-map", + "build:js": "rollup -c", + "clear": "del-cli dist", + "codecov": "cat coverage/lcov.info | codecov", + "compress": "npm run compress:css && npm run compress:js", + "compress:css": "postcss dist/cropper.css -u cssnano -o dist/cropper.min.css --no-map", + "compress:js": "uglifyjs dist/cropper.js -o dist/cropper.min.js -c -m --comments /^!/", + "copy": "cpy dist/cropper.css docs/css", + "lint": "npm run lint:js && npm run lint:css", + "lint:css": "stylelint {src,docs,examples}/**/*.{css,scss,html} --fix", + "lint:js": "eslint src test *.js --fix", + "release": "npm run clear && npm run lint && npm run build && npm run compress && npm run copy && npm test", + "start": "npm-run-all --parallel watch:*", + "test": "cross-env NODE_ENV=test karma start test/karma.conf.js", + "watch:css": "postcss src/index.css -o docs/css/cropper.css -m -w", + "watch:js": "rollup -c -m -w" + }, + "style": "dist/cropper.css", + "types": "types/index.d.ts", + "version": "1.5.5" +} diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/_notes/dwsync.xml b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/_notes/dwsync.xml new file mode 100644 index 00000000..7912f566 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/_notes/dwsync.xml b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/_notes/dwsync.xml new file mode 100644 index 00000000..9e9abb37 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.css b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.css new file mode 100644 index 00000000..efa08bb0 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.css @@ -0,0 +1,195 @@ +.cropper-container { + direction: ltr; + font-size: 0; + line-height: 0; + position: relative; + touch-action: none; + user-select: none; } + .cropper-container img { + display: block; + height: 100%; + image-orientation: 0deg; + max-height: none !important; + max-width: none !important; + min-height: 0 !important; + min-width: 0 !important; + width: 100%; } +.cropper-wrap-box, .cropper-canvas, .cropper-drag-box, .cropper-crop-box, .cropper-modal { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; } +.cropper-wrap-box, .cropper-canvas { + overflow: hidden; } +.cropper-drag-box { + background-color: #fff; + opacity: 0; } +.cropper-modal { + background-color: #000; + opacity: 0.5; } +.cropper-view-box { + display: block; + height: 100%; + outline: 1px solid #39f; + outline-color: rgba(51, 153, 255, 0.75); + overflow: hidden; + width: 100%; } +.cropper-dashed { + border: 0 dashed #eee; + display: block; + opacity: 0.5; + position: absolute; } + .cropper-dashed.dashed-h { + border-bottom-width: 1px; + border-top-width: 1px; + height: calc(100% / 3); + left: 0; + top: calc(100% / 3); + width: 100%; } + .cropper-dashed.dashed-v { + border-left-width: 1px; + border-right-width: 1px; + height: 100%; + left: calc(100% / 3); + top: 0; + width: calc(100% / 3); } +.cropper-center { + display: block; + height: 0; + left: 50%; + opacity: 0.75; + position: absolute; + top: 50%; + width: 0; } + .cropper-center::before, .cropper-center::after { + background-color: #eee; + content: ' '; + display: block; + position: absolute; } + .cropper-center::before { + height: 1px; + left: -3px; + top: 0; + width: 7px; } + .cropper-center::after { + height: 7px; + left: 0; + top: -3px; + width: 1px; } +.cropper-face, .cropper-line, .cropper-point { + display: block; + height: 100%; + opacity: 0.1; + position: absolute; + width: 100%; } +.cropper-face { + background-color: #fff; + left: 0; + top: 0; } +.cropper-line { + background-color: #39f; } + .cropper-line.line-e { + cursor: ew-resize; + right: -3px; + top: 0; + width: 5px; } + .cropper-line.line-n { + cursor: ns-resize; + height: 5px; + left: 0; + top: -3px; } + .cropper-line.line-w { + cursor: ew-resize; + left: -3px; + top: 0; + width: 5px; } + .cropper-line.line-s { + bottom: -3px; + cursor: ns-resize; + height: 5px; + left: 0; } +.cropper-point { + background-color: #39f; + height: 5px; + opacity: 0.75; + width: 5px; } + .cropper-point.point-e { + cursor: ew-resize; + margin-top: -3px; + right: -3px; + top: 50%; } + .cropper-point.point-n { + cursor: ns-resize; + left: 50%; + margin-left: -3px; + top: -3px; } + .cropper-point.point-w { + cursor: ew-resize; + left: -3px; + margin-top: -3px; + top: 50%; } + .cropper-point.point-s { + bottom: -3px; + cursor: s-resize; + left: 50%; + margin-left: -3px; } + .cropper-point.point-ne { + cursor: nesw-resize; + right: -3px; + top: -3px; } + .cropper-point.point-nw { + cursor: nwse-resize; + left: -3px; + top: -3px; } + .cropper-point.point-sw { + bottom: -3px; + cursor: nesw-resize; + left: -3px; } + .cropper-point.point-se { + bottom: -3px; + cursor: nwse-resize; + height: 20px; + opacity: 1; + right: -3px; + width: 20px; } + @media (min-width: 768px) { + .cropper-point.point-se { + height: 15px; + width: 15px; } } + @media (min-width: 992px) { + .cropper-point.point-se { + height: 10px; + width: 10px; } } + @media (min-width: 1200px) { + .cropper-point.point-se { + height: 5px; + opacity: 0.75; + width: 5px; } } + .cropper-point.point-se::before { + background-color: #39f; + bottom: -50%; + content: ' '; + display: block; + height: 200%; + opacity: 0; + position: absolute; + right: -50%; + width: 200%; } +.cropper-invisible { + opacity: 0; } +.cropper-bg { + background-image: url("../images/bg.png"); } +.cropper-hide { + display: block; + height: 0; + position: absolute; + width: 0; } +.cropper-hidden { + display: none !important; } +.cropper-move { + cursor: move; } +.cropper-crop { + cursor: crosshair; } +.cropper-disabled .cropper-drag-box, .cropper-disabled .cropper-face, .cropper-disabled .cropper-line, .cropper-disabled .cropper-point { + cursor: not-allowed; } diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.scss b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.scss new file mode 100644 index 00000000..cfca464b --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/css/cropper.scss @@ -0,0 +1,286 @@ +.cropper { + &-container { + direction: ltr; + font-size: 0; + line-height: 0; + position: relative; + touch-action: none; + user-select: none; + + img { + display: block; + height: 100%; + image-orientation: 0deg; + max-height: none !important; + max-width: none !important; + min-height: 0 !important; + min-width: 0 !important; + width: 100%; + } + } + + &-wrap-box, + &-canvas, + &-drag-box, + &-crop-box, + &-modal { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + } + + &-wrap-box, + &-canvas { + overflow: hidden; + } + + &-drag-box { + background-color: #fff; + opacity: 0; + } + + &-modal { + background-color: #000; + opacity: 0.5; + } + + &-view-box { + display: block; + height: 100%; + outline: 1px solid #39f; + outline-color: rgba(51, 153, 255, 0.75); + overflow: hidden; + width: 100%; + } + + &-dashed { + border: 0 dashed #eee; + display: block; + opacity: 0.5; + position: absolute; + + &.dashed-h { + border-bottom-width: 1px; + border-top-width: 1px; + height: calc(100% / 3); + left: 0; + top: calc(100% / 3); + width: 100%; + } + + &.dashed-v { + border-left-width: 1px; + border-right-width: 1px; + height: 100%; + left: calc(100% / 3); + top: 0; + width: calc(100% / 3); + } + } + + &-center { + display: block; + height: 0; + left: 50%; + opacity: 0.75; + position: absolute; + top: 50%; + width: 0; + + &::before, + &::after { + background-color: #eee; + content: ' '; + display: block; + position: absolute; + } + + &::before { + height: 1px; + left: -3px; + top: 0; + width: 7px; + } + + &::after { + height: 7px; + left: 0; + top: -3px; + width: 1px; + } + } + + &-face, + &-line, + &-point { + display: block; + height: 100%; + opacity: 0.1; + position: absolute; + width: 100%; + } + + &-face { + background-color: #fff; + left: 0; + top: 0; + } + + &-line { + background-color: #39f; + + &.line-e { + cursor: ew-resize; + right: -3px; + top: 0; + width: 5px; + } + + &.line-n { + cursor: ns-resize; + height: 5px; + left: 0; + top: -3px; + } + + &.line-w { + cursor: ew-resize; + left: -3px; + top: 0; + width: 5px; + } + + &.line-s { + bottom: -3px; + cursor: ns-resize; + height: 5px; + left: 0; + } + } + + &-point { + background-color: #39f; + height: 5px; + opacity: 0.75; + width: 5px; + + &.point-e { + cursor: ew-resize; + margin-top: -3px; + right: -3px; + top: 50%; + } + + &.point-n { + cursor: ns-resize; + left: 50%; + margin-left: -3px; + top: -3px; + } + + &.point-w { + cursor: ew-resize; + left: -3px; + margin-top: -3px; + top: 50%; + } + + &.point-s { + bottom: -3px; + cursor: s-resize; + left: 50%; + margin-left: -3px; + } + + &.point-ne { + cursor: nesw-resize; + right: -3px; + top: -3px; + } + + &.point-nw { + cursor: nwse-resize; + left: -3px; + top: -3px; + } + + &.point-sw { + bottom: -3px; + cursor: nesw-resize; + left: -3px; + } + + &.point-se { + bottom: -3px; + cursor: nwse-resize; + height: 20px; + opacity: 1; + right: -3px; + width: 20px; + + @media (min-width: 768px) { + height: 15px; + width: 15px; + } + + @media (min-width: 992px) { + height: 10px; + width: 10px; + } + + @media (min-width: 1200px) { + height: 5px; + opacity: 0.75; + width: 5px; + } + } + + &.point-se::before { + background-color: #39f; + bottom: -50%; + content: ' '; + display: block; + height: 200%; + opacity: 0; + position: absolute; + right: -50%; + width: 200%; + } + } + + &-invisible { + opacity: 0; + } + + &-bg { + background-image: url('../images/bg.png'); + } + + &-hide { + display: block; + height: 0; + position: absolute; + width: 0; + } + + &-hidden { + display: none !important; + } + + &-move { + cursor: move; + } + + &-crop { + cursor: crosshair; + } + + &-disabled &-drag-box, + &-disabled &-face, + &-disabled &-line, + &-disabled &-point { + cursor: not-allowed; + } +} diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/images/_notes/dwsync.xml b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/images/_notes/dwsync.xml new file mode 100644 index 00000000..69141196 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/images/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/images/bg.png b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3c7056b1940609526bd3091a82fb3b5af37a16cd GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bFq_W2nPqp?T7vkfLyi!pAgqG zXU_cp|NnBYXcbP0 Hl+XkKKtwUY literal 0 HcmV?d00001 diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.css b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.css new file mode 100644 index 00000000..efa08bb0 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.css @@ -0,0 +1,195 @@ +.cropper-container { + direction: ltr; + font-size: 0; + line-height: 0; + position: relative; + touch-action: none; + user-select: none; } + .cropper-container img { + display: block; + height: 100%; + image-orientation: 0deg; + max-height: none !important; + max-width: none !important; + min-height: 0 !important; + min-width: 0 !important; + width: 100%; } +.cropper-wrap-box, .cropper-canvas, .cropper-drag-box, .cropper-crop-box, .cropper-modal { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; } +.cropper-wrap-box, .cropper-canvas { + overflow: hidden; } +.cropper-drag-box { + background-color: #fff; + opacity: 0; } +.cropper-modal { + background-color: #000; + opacity: 0.5; } +.cropper-view-box { + display: block; + height: 100%; + outline: 1px solid #39f; + outline-color: rgba(51, 153, 255, 0.75); + overflow: hidden; + width: 100%; } +.cropper-dashed { + border: 0 dashed #eee; + display: block; + opacity: 0.5; + position: absolute; } + .cropper-dashed.dashed-h { + border-bottom-width: 1px; + border-top-width: 1px; + height: calc(100% / 3); + left: 0; + top: calc(100% / 3); + width: 100%; } + .cropper-dashed.dashed-v { + border-left-width: 1px; + border-right-width: 1px; + height: 100%; + left: calc(100% / 3); + top: 0; + width: calc(100% / 3); } +.cropper-center { + display: block; + height: 0; + left: 50%; + opacity: 0.75; + position: absolute; + top: 50%; + width: 0; } + .cropper-center::before, .cropper-center::after { + background-color: #eee; + content: ' '; + display: block; + position: absolute; } + .cropper-center::before { + height: 1px; + left: -3px; + top: 0; + width: 7px; } + .cropper-center::after { + height: 7px; + left: 0; + top: -3px; + width: 1px; } +.cropper-face, .cropper-line, .cropper-point { + display: block; + height: 100%; + opacity: 0.1; + position: absolute; + width: 100%; } +.cropper-face { + background-color: #fff; + left: 0; + top: 0; } +.cropper-line { + background-color: #39f; } + .cropper-line.line-e { + cursor: ew-resize; + right: -3px; + top: 0; + width: 5px; } + .cropper-line.line-n { + cursor: ns-resize; + height: 5px; + left: 0; + top: -3px; } + .cropper-line.line-w { + cursor: ew-resize; + left: -3px; + top: 0; + width: 5px; } + .cropper-line.line-s { + bottom: -3px; + cursor: ns-resize; + height: 5px; + left: 0; } +.cropper-point { + background-color: #39f; + height: 5px; + opacity: 0.75; + width: 5px; } + .cropper-point.point-e { + cursor: ew-resize; + margin-top: -3px; + right: -3px; + top: 50%; } + .cropper-point.point-n { + cursor: ns-resize; + left: 50%; + margin-left: -3px; + top: -3px; } + .cropper-point.point-w { + cursor: ew-resize; + left: -3px; + margin-top: -3px; + top: 50%; } + .cropper-point.point-s { + bottom: -3px; + cursor: s-resize; + left: 50%; + margin-left: -3px; } + .cropper-point.point-ne { + cursor: nesw-resize; + right: -3px; + top: -3px; } + .cropper-point.point-nw { + cursor: nwse-resize; + left: -3px; + top: -3px; } + .cropper-point.point-sw { + bottom: -3px; + cursor: nesw-resize; + left: -3px; } + .cropper-point.point-se { + bottom: -3px; + cursor: nwse-resize; + height: 20px; + opacity: 1; + right: -3px; + width: 20px; } + @media (min-width: 768px) { + .cropper-point.point-se { + height: 15px; + width: 15px; } } + @media (min-width: 992px) { + .cropper-point.point-se { + height: 10px; + width: 10px; } } + @media (min-width: 1200px) { + .cropper-point.point-se { + height: 5px; + opacity: 0.75; + width: 5px; } } + .cropper-point.point-se::before { + background-color: #39f; + bottom: -50%; + content: ' '; + display: block; + height: 200%; + opacity: 0; + position: absolute; + right: -50%; + width: 200%; } +.cropper-invisible { + opacity: 0; } +.cropper-bg { + background-image: url("../images/bg.png"); } +.cropper-hide { + display: block; + height: 0; + position: absolute; + width: 0; } +.cropper-hidden { + display: none !important; } +.cropper-move { + cursor: move; } +.cropper-crop { + cursor: crosshair; } +.cropper-disabled .cropper-drag-box, .cropper-disabled .cropper-face, .cropper-disabled .cropper-line, .cropper-disabled .cropper-point { + cursor: not-allowed; } diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.js new file mode 100644 index 00000000..ac940610 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.js @@ -0,0 +1,3 @@ +import Cropper from './js/cropper'; + +export default Cropper; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.scss b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.scss new file mode 100644 index 00000000..90695c59 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/index.scss @@ -0,0 +1 @@ +@import './css/cropper.scss'; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/_notes/dwsync.xml b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/_notes/dwsync.xml new file mode 100644 index 00000000..21743fd0 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/change.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/change.js new file mode 100644 index 00000000..c0ddf27e --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/change.js @@ -0,0 +1,491 @@ +import { + ACTION_ALL, + ACTION_CROP, + ACTION_EAST, + ACTION_MOVE, + ACTION_NORTH, + ACTION_NORTH_EAST, + ACTION_NORTH_WEST, + ACTION_SOUTH, + ACTION_SOUTH_EAST, + ACTION_SOUTH_WEST, + ACTION_WEST, + ACTION_ZOOM, + CLASS_HIDDEN, +} from './constants'; +import { + forEach, + getMaxZoomRatio, + getOffset, + removeClass, +} from './utilities'; + +export default { + change(event) { + const { + options, + canvasData, + containerData, + cropBoxData, + pointers, + } = this; + let { action } = this; + let { aspectRatio } = options; + let { + left, + top, + width, + height, + } = cropBoxData; + const right = left + width; + const bottom = top + height; + let minLeft = 0; + let minTop = 0; + let maxWidth = containerData.width; + let maxHeight = containerData.height; + let renderable = true; + let offset; + + // Locking aspect ratio in "free mode" by holding shift key + if (!aspectRatio && event.shiftKey) { + aspectRatio = width && height ? width / height : 1; + } + + if (this.limited) { + ({ minLeft, minTop } = cropBoxData); + maxWidth = minLeft + Math.min( + containerData.width, + canvasData.width, + canvasData.left + canvasData.width, + ); + maxHeight = minTop + Math.min( + containerData.height, + canvasData.height, + canvasData.top + canvasData.height, + ); + } + + const pointer = pointers[Object.keys(pointers)[0]]; + const range = { + x: pointer.endX - pointer.startX, + y: pointer.endY - pointer.startY, + }; + const check = (side) => { + switch (side) { + case ACTION_EAST: + if (right + range.x > maxWidth) { + range.x = maxWidth - right; + } + + break; + + case ACTION_WEST: + if (left + range.x < minLeft) { + range.x = minLeft - left; + } + + break; + + case ACTION_NORTH: + if (top + range.y < minTop) { + range.y = minTop - top; + } + + break; + + case ACTION_SOUTH: + if (bottom + range.y > maxHeight) { + range.y = maxHeight - bottom; + } + + break; + + default: + } + }; + + switch (action) { + // Move crop box + case ACTION_ALL: + left += range.x; + top += range.y; + break; + + // Resize crop box + case ACTION_EAST: + if (range.x >= 0 && (right >= maxWidth || (aspectRatio + && (top <= minTop || bottom >= maxHeight)))) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + + if (width < 0) { + action = ACTION_WEST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_NORTH: + if (range.y <= 0 && (top <= minTop || (aspectRatio + && (left <= minLeft || right >= maxWidth)))) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + + if (height < 0) { + action = ACTION_SOUTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_WEST: + if (range.x <= 0 && (left <= minLeft || (aspectRatio + && (top <= minTop || bottom >= maxHeight)))) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + + if (width < 0) { + action = ACTION_EAST; + width = -width; + left -= width; + } + + if (aspectRatio) { + height = width / aspectRatio; + top += (cropBoxData.height - height) / 2; + } + + break; + + case ACTION_SOUTH: + if (range.y >= 0 && (bottom >= maxHeight || (aspectRatio + && (left <= minLeft || right >= maxWidth)))) { + renderable = false; + break; + } + + check(ACTION_SOUTH); + height += range.y; + + if (height < 0) { + action = ACTION_NORTH; + height = -height; + top -= height; + } + + if (aspectRatio) { + width = height * aspectRatio; + left += (cropBoxData.width - width) / 2; + } + + break; + + case ACTION_NORTH_EAST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || right >= maxWidth)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + } else { + check(ACTION_NORTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + top -= height; + } + + break; + + case ACTION_NORTH_WEST: + if (aspectRatio) { + if (range.y <= 0 && (top <= minTop || left <= minLeft)) { + renderable = false; + break; + } + + check(ACTION_NORTH); + height -= range.y; + top += range.y; + width = height * aspectRatio; + left += cropBoxData.width - width; + } else { + check(ACTION_NORTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y <= 0 && top <= minTop) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y <= 0) { + if (top > minTop) { + height -= range.y; + top += range.y; + } + } else { + height -= range.y; + top += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_SOUTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_NORTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_SOUTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_WEST: + if (aspectRatio) { + if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_WEST); + width -= range.x; + left += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_WEST); + + if (range.x <= 0) { + if (left > minLeft) { + width -= range.x; + left += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width -= range.x; + left += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_EAST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + top -= height; + } + + break; + + case ACTION_SOUTH_EAST: + if (aspectRatio) { + if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) { + renderable = false; + break; + } + + check(ACTION_EAST); + width += range.x; + height = width / aspectRatio; + } else { + check(ACTION_SOUTH); + check(ACTION_EAST); + + if (range.x >= 0) { + if (right < maxWidth) { + width += range.x; + } else if (range.y >= 0 && bottom >= maxHeight) { + renderable = false; + } + } else { + width += range.x; + } + + if (range.y >= 0) { + if (bottom < maxHeight) { + height += range.y; + } + } else { + height += range.y; + } + } + + if (width < 0 && height < 0) { + action = ACTION_NORTH_WEST; + height = -height; + width = -width; + top -= height; + left -= width; + } else if (width < 0) { + action = ACTION_SOUTH_WEST; + width = -width; + left -= width; + } else if (height < 0) { + action = ACTION_NORTH_EAST; + height = -height; + top -= height; + } + + break; + + // Move canvas + case ACTION_MOVE: + this.move(range.x, range.y); + renderable = false; + break; + + // Zoom canvas + case ACTION_ZOOM: + this.zoom(getMaxZoomRatio(pointers), event); + renderable = false; + break; + + // Create crop box + case ACTION_CROP: + if (!range.x || !range.y) { + renderable = false; + break; + } + + offset = getOffset(this.cropper); + left = pointer.startX - offset.left; + top = pointer.startY - offset.top; + width = cropBoxData.minWidth; + height = cropBoxData.minHeight; + + if (range.x > 0) { + action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST; + } else if (range.x < 0) { + left -= width; + action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST; + } + + if (range.y < 0) { + top -= height; + } + + // Show the crop box if is hidden + if (!this.cropped) { + removeClass(this.cropBox, CLASS_HIDDEN); + this.cropped = true; + + if (this.limited) { + this.limitCropBox(true, true); + } + } + + break; + + default: + } + + if (renderable) { + cropBoxData.width = width; + cropBoxData.height = height; + cropBoxData.left = left; + cropBoxData.top = top; + this.action = action; + this.renderCropBox(); + } + + // Override + forEach(pointers, (p) => { + p.startX = p.endX; + p.startY = p.endY; + }); + }, +}; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/constants.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/constants.js new file mode 100644 index 00000000..015fcbcd --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/constants.js @@ -0,0 +1,68 @@ +export const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +export const WINDOW = IS_BROWSER ? window : {}; +export const IS_TOUCH_DEVICE = IS_BROWSER ? 'ontouchstart' in WINDOW.document.documentElement : false; +export const HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false; +export const NAMESPACE = 'cropper'; + +// Actions +export const ACTION_ALL = 'all'; +export const ACTION_CROP = 'crop'; +export const ACTION_MOVE = 'move'; +export const ACTION_ZOOM = 'zoom'; +export const ACTION_EAST = 'e'; +export const ACTION_WEST = 'w'; +export const ACTION_SOUTH = 's'; +export const ACTION_NORTH = 'n'; +export const ACTION_NORTH_EAST = 'ne'; +export const ACTION_NORTH_WEST = 'nw'; +export const ACTION_SOUTH_EAST = 'se'; +export const ACTION_SOUTH_WEST = 'sw'; + +// Classes +export const CLASS_CROP = `${NAMESPACE}-crop`; +export const CLASS_DISABLED = `${NAMESPACE}-disabled`; +export const CLASS_HIDDEN = `${NAMESPACE}-hidden`; +export const CLASS_HIDE = `${NAMESPACE}-hide`; +export const CLASS_INVISIBLE = `${NAMESPACE}-invisible`; +export const CLASS_MODAL = `${NAMESPACE}-modal`; +export const CLASS_MOVE = `${NAMESPACE}-move`; + +// Data keys +export const DATA_ACTION = `${NAMESPACE}Action`; +export const DATA_PREVIEW = `${NAMESPACE}Preview`; + +// Drag modes +export const DRAG_MODE_CROP = 'crop'; +export const DRAG_MODE_MOVE = 'move'; +export const DRAG_MODE_NONE = 'none'; + +// Events +export const EVENT_CROP = 'crop'; +export const EVENT_CROP_END = 'cropend'; +export const EVENT_CROP_MOVE = 'cropmove'; +export const EVENT_CROP_START = 'cropstart'; +export const EVENT_DBLCLICK = 'dblclick'; +export const EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown'; +export const EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove'; +export const EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup'; +export const EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START; +export const EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE; +export const EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END; +export const EVENT_READY = 'ready'; +export const EVENT_RESIZE = 'resize'; +export const EVENT_WHEEL = 'wheel'; +export const EVENT_ZOOM = 'zoom'; + +// Mime types +export const MIME_TYPE_JPEG = 'image/jpeg'; + +// RegExps +export const REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/; +export const REGEXP_DATA_URL = /^data:/; +export const REGEXP_DATA_URL_JPEG = /^data:image\/jpeg;base64,/; +export const REGEXP_TAG_NAME = /^img|canvas$/i; + +// Misc +// Inspired by the default width and height of a canvas element. +export const MIN_CONTAINER_WIDTH = 200; +export const MIN_CONTAINER_HEIGHT = 100; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/cropper.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/cropper.js new file mode 100644 index 00000000..24bf8142 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/cropper.js @@ -0,0 +1,448 @@ +import DEFAULTS from './defaults'; +import TEMPLATE from './template'; +import render from './render'; +import preview from './preview'; +import events from './events'; +import handlers from './handlers'; +import change from './change'; +import methods from './methods'; +import { + ACTION_ALL, + CLASS_HIDDEN, + CLASS_HIDE, + CLASS_INVISIBLE, + CLASS_MOVE, + DATA_ACTION, + EVENT_READY, + MIME_TYPE_JPEG, + NAMESPACE, + REGEXP_DATA_URL, + REGEXP_DATA_URL_JPEG, + REGEXP_TAG_NAME, + WINDOW, +} from './constants'; +import { + addClass, + addListener, + addTimestamp, + arrayBufferToDataURL, + assign, + dataURLToArrayBuffer, + dispatchEvent, + isCrossOriginURL, + isFunction, + isPlainObject, + parseOrientation, + removeClass, + resetAndGetOrientation, + setData, +} from './utilities'; + +const AnotherCropper = WINDOW.Cropper; + +class Cropper { + /** + * Create a new Cropper. + * @param {Element} element - The target element for cropping. + * @param {Object} [options={}] - The configuration options. + */ + constructor(element, options = {}) { + if (!element || !REGEXP_TAG_NAME.test(element.tagName)) { + throw new Error('The first argument is required and must be an or element.'); + } + + this.element = element; + this.options = assign({}, DEFAULTS, isPlainObject(options) && options); + this.cropped = false; + this.disabled = false; + this.pointers = {}; + this.ready = false; + this.reloading = false; + this.replaced = false; + this.sized = false; + this.sizing = false; + this.init(); + } + + init() { + const { element } = this; + const tagName = element.tagName.toLowerCase(); + let url; + + if (element[NAMESPACE]) { + return; + } + + element[NAMESPACE] = this; + + if (tagName === 'img') { + this.isImg = true; + + // e.g.: "img/picture.jpg" + url = element.getAttribute('src') || ''; + this.originalUrl = url; + + // Stop when it's a blank image + if (!url) { + return; + } + + // e.g.: "http://example.com/img/picture.jpg" + url = element.src; + } else if (tagName === 'canvas' && window.HTMLCanvasElement) { + url = element.toDataURL(); + } + + this.load(url); + } + + load(url) { + if (!url) { + return; + } + + this.url = url; + this.imageData = {}; + + const { element, options } = this; + + if (!options.rotatable && !options.scalable) { + options.checkOrientation = false; + } + + // Only IE10+ supports Typed Arrays + if (!options.checkOrientation || !window.ArrayBuffer) { + this.clone(); + return; + } + + // Detect the mime type of the image directly if it is a Data URL + if (REGEXP_DATA_URL.test(url)) { + // Read ArrayBuffer from Data URL of JPEG images directly for better performance + if (REGEXP_DATA_URL_JPEG.test(url)) { + this.read(dataURLToArrayBuffer(url)); + } else { + // Only a JPEG image may contains Exif Orientation information, + // the rest types of Data URLs are not necessary to check orientation at all. + this.clone(); + } + + return; + } + + // 1. Detect the mime type of the image by a XMLHttpRequest. + // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image. + const xhr = new XMLHttpRequest(); + const clone = this.clone.bind(this); + + this.reloading = true; + this.xhr = xhr; + + // 1. Cross origin requests are only supported for protocol schemes: + // http, https, data, chrome, chrome-extension. + // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy + // in some browsers as IE11 and Safari. + xhr.onabort = clone; + xhr.onerror = clone; + xhr.ontimeout = clone; + + xhr.onprogress = () => { + // Abort the request directly if it not a JPEG image for better performance + if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) { + xhr.abort(); + } + }; + + xhr.onload = () => { + this.read(xhr.response); + }; + + xhr.onloadend = () => { + this.reloading = false; + this.xhr = null; + }; + + // Bust cache when there is a "crossOrigin" property to avoid browser cache error + if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) { + url = addTimestamp(url); + } + + xhr.open('GET', url); + xhr.responseType = 'arraybuffer'; + xhr.withCredentials = element.crossOrigin === 'use-credentials'; + xhr.send(); + } + + read(arrayBuffer) { + const { options, imageData } = this; + + // Reset the orientation value to its default value 1 + // as some iOS browsers will render image with its orientation + const orientation = resetAndGetOrientation(arrayBuffer); + let rotate = 0; + let scaleX = 1; + let scaleY = 1; + + if (orientation > 1) { + // Generate a new URL which has the default orientation value + this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG); + ({ rotate, scaleX, scaleY } = parseOrientation(orientation)); + } + + if (options.rotatable) { + imageData.rotate = rotate; + } + + if (options.scalable) { + imageData.scaleX = scaleX; + imageData.scaleY = scaleY; + } + + this.clone(); + } + + clone() { + const { element, url } = this; + let { crossOrigin } = element; + let crossOriginUrl = url; + + if (this.options.checkCrossOrigin && isCrossOriginURL(url)) { + if (!crossOrigin) { + crossOrigin = 'anonymous'; + } + + // Bust cache when there is not a "crossOrigin" property (#519) + crossOriginUrl = addTimestamp(url); + } + + this.crossOrigin = crossOrigin; + this.crossOriginUrl = crossOriginUrl; + + const image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = crossOriginUrl || url; + image.alt = element.alt || 'The image to crop'; + this.image = image; + image.onload = this.start.bind(this); + image.onerror = this.stop.bind(this); + addClass(image, CLASS_HIDE); + element.parentNode.insertBefore(image, element.nextSibling); + } + + start() { + const { image } = this; + + image.onload = null; + image.onerror = null; + this.sizing = true; + + // Match all browsers that use WebKit as the layout engine in iOS devices, + // such as Safari for iOS, Chrome for iOS, and in-app browsers. + const isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent); + const done = (naturalWidth, naturalHeight) => { + assign(this.imageData, { + naturalWidth, + naturalHeight, + aspectRatio: naturalWidth / naturalHeight, + }); + this.sizing = false; + this.sized = true; + this.build(); + }; + + // Most modern browsers (excepts iOS WebKit) + if (image.naturalWidth && !isIOSWebKit) { + done(image.naturalWidth, image.naturalHeight); + return; + } + + const sizingImage = document.createElement('img'); + const body = document.body || document.documentElement; + + this.sizingImage = sizingImage; + + sizingImage.onload = () => { + done(sizingImage.width, sizingImage.height); + + if (!isIOSWebKit) { + body.removeChild(sizingImage); + } + }; + + sizingImage.src = image.src; + + // iOS WebKit will convert the image automatically + // with its orientation once append it into DOM (#279) + if (!isIOSWebKit) { + sizingImage.style.cssText = ( + 'left:0;' + + 'max-height:none!important;' + + 'max-width:none!important;' + + 'min-height:0!important;' + + 'min-width:0!important;' + + 'opacity:0;' + + 'position:absolute;' + + 'top:0;' + + 'z-index:-1;' + ); + body.appendChild(sizingImage); + } + } + + stop() { + const { image } = this; + + image.onload = null; + image.onerror = null; + image.parentNode.removeChild(image); + this.image = null; + } + + build() { + if (!this.sized || this.ready) { + return; + } + + const { element, options, image } = this; + + // Create cropper elements + const container = element.parentNode; + const template = document.createElement('div'); + + template.innerHTML = TEMPLATE; + + const cropper = template.querySelector(`.${NAMESPACE}-container`); + const canvas = cropper.querySelector(`.${NAMESPACE}-canvas`); + const dragBox = cropper.querySelector(`.${NAMESPACE}-drag-box`); + const cropBox = cropper.querySelector(`.${NAMESPACE}-crop-box`); + const face = cropBox.querySelector(`.${NAMESPACE}-face`); + + this.container = container; + this.cropper = cropper; + this.canvas = canvas; + this.dragBox = dragBox; + this.cropBox = cropBox; + this.viewBox = cropper.querySelector(`.${NAMESPACE}-view-box`); + this.face = face; + + canvas.appendChild(image); + + // Hide the original image + addClass(element, CLASS_HIDDEN); + + // Inserts the cropper after to the current image + container.insertBefore(cropper, element.nextSibling); + + // Show the image if is hidden + if (!this.isImg) { + removeClass(image, CLASS_HIDE); + } + + this.initPreview(); + this.bind(); + + options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN; + options.aspectRatio = Math.max(0, options.aspectRatio) || NaN; + options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0; + + addClass(cropBox, CLASS_HIDDEN); + + if (!options.guides) { + addClass(cropBox.getElementsByClassName(`${NAMESPACE}-dashed`), CLASS_HIDDEN); + } + + if (!options.center) { + addClass(cropBox.getElementsByClassName(`${NAMESPACE}-center`), CLASS_HIDDEN); + } + + if (options.background) { + addClass(cropper, `${NAMESPACE}-bg`); + } + + if (!options.highlight) { + addClass(face, CLASS_INVISIBLE); + } + + if (options.cropBoxMovable) { + addClass(face, CLASS_MOVE); + setData(face, DATA_ACTION, ACTION_ALL); + } + + if (!options.cropBoxResizable) { + addClass(cropBox.getElementsByClassName(`${NAMESPACE}-line`), CLASS_HIDDEN); + addClass(cropBox.getElementsByClassName(`${NAMESPACE}-point`), CLASS_HIDDEN); + } + + this.render(); + this.ready = true; + this.setDragMode(options.dragMode); + + if (options.autoCrop) { + this.crop(); + } + + this.setData(options.data); + + if (isFunction(options.ready)) { + addListener(element, EVENT_READY, options.ready, { + once: true, + }); + } + + dispatchEvent(element, EVENT_READY); + } + + unbuild() { + if (!this.ready) { + return; + } + + this.ready = false; + this.unbind(); + this.resetPreview(); + this.cropper.parentNode.removeChild(this.cropper); + removeClass(this.element, CLASS_HIDDEN); + } + + uncreate() { + if (this.ready) { + this.unbuild(); + this.ready = false; + this.cropped = false; + } else if (this.sizing) { + this.sizingImage.onload = null; + this.sizing = false; + this.sized = false; + } else if (this.reloading) { + this.xhr.onabort = null; + this.xhr.abort(); + } else if (this.image) { + this.stop(); + } + } + + /** + * Get the no conflict cropper class. + * @returns {Cropper} The cropper class. + */ + static noConflict() { + window.Cropper = AnotherCropper; + return Cropper; + } + + /** + * Change the default options. + * @param {Object} options - The new default options. + */ + static setDefaults(options) { + assign(DEFAULTS, isPlainObject(options) && options); + } +} + +assign(Cropper.prototype, render, preview, events, handlers, change, methods); + +export default Cropper; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/defaults.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/defaults.js new file mode 100644 index 00000000..ce6ab969 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/defaults.js @@ -0,0 +1,100 @@ +import { DRAG_MODE_CROP } from './constants'; + +export default { + // Define the view mode of the cropper + viewMode: 0, // 0, 1, 2, 3 + + // Define the dragging mode of the cropper + dragMode: DRAG_MODE_CROP, // 'crop', 'move' or 'none' + + // Define the initial aspect ratio of the crop box + initialAspectRatio: NaN, + + // Define the aspect ratio of the crop box + aspectRatio: NaN, + + // An object with the previous cropping result data + data: null, + + // A selector for adding extra containers to preview + preview: '', + + // Re-render the cropper when resize the window + responsive: true, + + // Restore the cropped area after resize the window + restore: true, + + // Check if the current image is a cross-origin image + checkCrossOrigin: true, + + // Check the current image's Exif Orientation information + checkOrientation: true, + + // Show the black modal + modal: true, + + // Show the dashed lines for guiding + guides: true, + + // Show the center indicator for guiding + center: true, + + // Show the white modal to highlight the crop box + highlight: true, + + // Show the grid background + background: true, + + // Enable to crop the image automatically when initialize + autoCrop: true, + + // Define the percentage of automatic cropping area when initializes + autoCropArea: 0.8, + + // Enable to move the image + movable: true, + + // Enable to rotate the image + rotatable: true, + + // Enable to scale the image + scalable: true, + + // Enable to zoom the image + zoomable: true, + + // Enable to zoom the image by dragging touch + zoomOnTouch: true, + + // Enable to zoom the image by wheeling mouse + zoomOnWheel: true, + + // Define zoom ratio when zoom the image by wheeling mouse + wheelZoomRatio: 0.1, + + // Enable to move the crop box + cropBoxMovable: true, + + // Enable to resize the crop box + cropBoxResizable: true, + + // Toggle drag mode between "crop" and "move" when click twice on the cropper + toggleDragModeOnDblclick: true, + + // Size limitation + minCanvasWidth: 0, + minCanvasHeight: 0, + minCropBoxWidth: 0, + minCropBoxHeight: 0, + minContainerWidth: 200, + minContainerHeight: 100, + + // Shortcuts of events + ready: null, + cropstart: null, + cropmove: null, + cropend: null, + crop: null, + zoom: null, +}; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/events.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/events.js new file mode 100644 index 00000000..e4688870 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/events.js @@ -0,0 +1,116 @@ +import { + EVENT_CROP, + EVENT_CROP_END, + EVENT_CROP_MOVE, + EVENT_CROP_START, + EVENT_DBLCLICK, + EVENT_POINTER_DOWN, + EVENT_POINTER_MOVE, + EVENT_POINTER_UP, + EVENT_RESIZE, + EVENT_WHEEL, + EVENT_ZOOM, +} from './constants'; +import { + addListener, + isFunction, + removeListener, +} from './utilities'; + +export default { + bind() { + const { element, options, cropper } = this; + + if (isFunction(options.cropstart)) { + addListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + addListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + addListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + addListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + addListener(element, EVENT_ZOOM, options.zoom); + } + + addListener(cropper, EVENT_POINTER_DOWN, (this.onCropStart = this.cropStart.bind(this))); + + if (options.zoomable && options.zoomOnWheel) { + addListener(cropper, EVENT_WHEEL, (this.onWheel = this.wheel.bind(this)), { + passive: false, + capture: true, + }); + } + + if (options.toggleDragModeOnDblclick) { + addListener(cropper, EVENT_DBLCLICK, (this.onDblclick = this.dblclick.bind(this))); + } + + addListener( + element.ownerDocument, + EVENT_POINTER_MOVE, + (this.onCropMove = this.cropMove.bind(this)), + ); + addListener( + element.ownerDocument, + EVENT_POINTER_UP, + (this.onCropEnd = this.cropEnd.bind(this)), + ); + + if (options.responsive) { + addListener(window, EVENT_RESIZE, (this.onResize = this.resize.bind(this))); + } + }, + + unbind() { + const { element, options, cropper } = this; + + if (isFunction(options.cropstart)) { + removeListener(element, EVENT_CROP_START, options.cropstart); + } + + if (isFunction(options.cropmove)) { + removeListener(element, EVENT_CROP_MOVE, options.cropmove); + } + + if (isFunction(options.cropend)) { + removeListener(element, EVENT_CROP_END, options.cropend); + } + + if (isFunction(options.crop)) { + removeListener(element, EVENT_CROP, options.crop); + } + + if (isFunction(options.zoom)) { + removeListener(element, EVENT_ZOOM, options.zoom); + } + + removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart); + + if (options.zoomable && options.zoomOnWheel) { + removeListener(cropper, EVENT_WHEEL, this.onWheel, { + passive: false, + capture: true, + }); + } + + if (options.toggleDragModeOnDblclick) { + removeListener(cropper, EVENT_DBLCLICK, this.onDblclick); + } + + removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove); + removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd); + + if (options.responsive) { + removeListener(window, EVENT_RESIZE, this.onResize); + } + }, +}; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/handlers.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/handlers.js new file mode 100644 index 00000000..5a84a8f7 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/handlers.js @@ -0,0 +1,229 @@ +import { + ACTION_CROP, + ACTION_ZOOM, + CLASS_CROP, + CLASS_MODAL, + DATA_ACTION, + DRAG_MODE_CROP, + DRAG_MODE_MOVE, + DRAG_MODE_NONE, + EVENT_CROP_END, + EVENT_CROP_MOVE, + EVENT_CROP_START, + MIN_CONTAINER_WIDTH, + MIN_CONTAINER_HEIGHT, + REGEXP_ACTIONS, +} from './constants'; +import { + addClass, + assign, + dispatchEvent, + forEach, + getData, + getPointer, + hasClass, + isNumber, + toggleClass, +} from './utilities'; + +export default { + resize() { + const { options, container, containerData } = this; + const minContainerWidth = Number(options.minContainerWidth) || MIN_CONTAINER_WIDTH; + const minContainerHeight = Number(options.minContainerHeight) || MIN_CONTAINER_HEIGHT; + + if (this.disabled || containerData.width <= minContainerWidth + || containerData.height <= minContainerHeight) { + return; + } + + const ratio = container.offsetWidth / containerData.width; + + // Resize when width changed or height changed + if (ratio !== 1 || container.offsetHeight !== containerData.height) { + let canvasData; + let cropBoxData; + + if (options.restore) { + canvasData = this.getCanvasData(); + cropBoxData = this.getCropBoxData(); + } + + this.render(); + + if (options.restore) { + this.setCanvasData(forEach(canvasData, (n, i) => { + canvasData[i] = n * ratio; + })); + this.setCropBoxData(forEach(cropBoxData, (n, i) => { + cropBoxData[i] = n * ratio; + })); + } + } + }, + + dblclick() { + if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) { + return; + } + + this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP); + }, + + wheel(event) { + const ratio = Number(this.options.wheelZoomRatio) || 0.1; + let delta = 1; + + if (this.disabled) { + return; + } + + event.preventDefault(); + + // Limit wheel speed to prevent zoom too fast (#21) + if (this.wheeling) { + return; + } + + this.wheeling = true; + + setTimeout(() => { + this.wheeling = false; + }, 50); + + if (event.deltaY) { + delta = event.deltaY > 0 ? 1 : -1; + } else if (event.wheelDelta) { + delta = -event.wheelDelta / 120; + } else if (event.detail) { + delta = event.detail > 0 ? 1 : -1; + } + + this.zoom(-delta * ratio, event); + }, + + cropStart(event) { + const { buttons, button } = event; + + if ( + this.disabled + + // No primary button (Usually the left button) + // Note that touch events have no `buttons` or `button` property + || (isNumber(buttons) && buttons !== 1) + || (isNumber(button) && button !== 0) + + // Open context menu + || event.ctrlKey + ) { + return; + } + + const { options, pointers } = this; + let action; + + if (event.changedTouches) { + // Handle touch event + forEach(event.changedTouches, (touch) => { + pointers[touch.identifier] = getPointer(touch); + }); + } else { + // Handle mouse event and pointer event + pointers[event.pointerId || 0] = getPointer(event); + } + + if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) { + action = ACTION_ZOOM; + } else { + action = getData(event.target, DATA_ACTION); + } + + if (!REGEXP_ACTIONS.test(action)) { + return; + } + + if (dispatchEvent(this.element, EVENT_CROP_START, { + originalEvent: event, + action, + }) === false) { + return; + } + + // This line is required for preventing page zooming in iOS browsers + event.preventDefault(); + + this.action = action; + this.cropping = false; + + if (action === ACTION_CROP) { + this.cropping = true; + addClass(this.dragBox, CLASS_MODAL); + } + }, + + cropMove(event) { + const { action } = this; + + if (this.disabled || !action) { + return; + } + + const { pointers } = this; + + event.preventDefault(); + + if (dispatchEvent(this.element, EVENT_CROP_MOVE, { + originalEvent: event, + action, + }) === false) { + return; + } + + if (event.changedTouches) { + forEach(event.changedTouches, (touch) => { + // The first parameter should not be undefined (#432) + assign(pointers[touch.identifier] || {}, getPointer(touch, true)); + }); + } else { + assign(pointers[event.pointerId || 0] || {}, getPointer(event, true)); + } + + this.change(event); + }, + + cropEnd(event) { + if (this.disabled) { + return; + } + + const { action, pointers } = this; + + if (event.changedTouches) { + forEach(event.changedTouches, (touch) => { + delete pointers[touch.identifier]; + }); + } else { + delete pointers[event.pointerId || 0]; + } + + if (!action) { + return; + } + + event.preventDefault(); + + if (!Object.keys(pointers).length) { + this.action = ''; + } + + if (this.cropping) { + this.cropping = false; + toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal); + } + + dispatchEvent(this.element, EVENT_CROP_END, { + originalEvent: event, + action, + }); + }, +}; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/methods.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/methods.js new file mode 100644 index 00000000..d1d2dfb5 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/methods.js @@ -0,0 +1,834 @@ +import { + CLASS_CROP, + CLASS_DISABLED, + CLASS_HIDDEN, + CLASS_MODAL, + CLASS_MOVE, + DATA_ACTION, + DRAG_MODE_CROP, + DRAG_MODE_MOVE, + DRAG_MODE_NONE, + EVENT_ZOOM, + NAMESPACE, +} from './constants'; +import { + addClass, + assign, + dispatchEvent, + forEach, + getAdjustedSizes, + getOffset, + getPointersCenter, + getSourceCanvas, + isNumber, + isPlainObject, + isUndefined, + normalizeDecimalNumber, + removeClass, + setData, + toggleClass, +} from './utilities'; + +export default { + // Show the crop box manually + crop() { + if (this.ready && !this.cropped && !this.disabled) { + this.cropped = true; + this.limitCropBox(true, true); + + if (this.options.modal) { + addClass(this.dragBox, CLASS_MODAL); + } + + removeClass(this.cropBox, CLASS_HIDDEN); + this.setCropBoxData(this.initialCropBoxData); + } + + return this; + }, + + // Reset the image and crop box to their initial states + reset() { + if (this.ready && !this.disabled) { + this.imageData = assign({}, this.initialImageData); + this.canvasData = assign({}, this.initialCanvasData); + this.cropBoxData = assign({}, this.initialCropBoxData); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + } + + return this; + }, + + // Clear the crop box + clear() { + if (this.cropped && !this.disabled) { + assign(this.cropBoxData, { + left: 0, + top: 0, + width: 0, + height: 0, + }); + + this.cropped = false; + this.renderCropBox(); + this.limitCanvas(true, true); + + // Render canvas after crop box rendered + this.renderCanvas(); + removeClass(this.dragBox, CLASS_MODAL); + addClass(this.cropBox, CLASS_HIDDEN); + } + + return this; + }, + + /** + * Replace the image's src and rebuild the cropper + * @param {string} url - The new URL. + * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one. + * @returns {Cropper} this + */ + replace(url, hasSameSize = false) { + if (!this.disabled && url) { + if (this.isImg) { + this.element.src = url; + } + + if (hasSameSize) { + this.url = url; + this.image.src = url; + + if (this.ready) { + this.viewBoxImage.src = url; + + forEach(this.previews, (element) => { + element.getElementsByTagName('img')[0].src = url; + }); + } + } else { + if (this.isImg) { + this.replaced = true; + } + + this.options.data = null; + this.uncreate(); + this.load(url); + } + } + + return this; + }, + + // Enable (unfreeze) the cropper + enable() { + if (this.ready && this.disabled) { + this.disabled = false; + removeClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + + // Disable (freeze) the cropper + disable() { + if (this.ready && !this.disabled) { + this.disabled = true; + addClass(this.cropper, CLASS_DISABLED); + } + + return this; + }, + + /** + * Destroy the cropper and remove the instance from the image + * @returns {Cropper} this + */ + destroy() { + const { element } = this; + + if (!element[NAMESPACE]) { + return this; + } + + element[NAMESPACE] = undefined; + + if (this.isImg && this.replaced) { + element.src = this.originalUrl; + } + + this.uncreate(); + return this; + }, + + /** + * Move the canvas with relative offsets + * @param {number} offsetX - The relative offset distance on the x-axis. + * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis. + * @returns {Cropper} this + */ + move(offsetX, offsetY = offsetX) { + const { left, top } = this.canvasData; + + return this.moveTo( + isUndefined(offsetX) ? offsetX : (left + Number(offsetX)), + isUndefined(offsetY) ? offsetY : (top + Number(offsetY)), + ); + }, + + /** + * Move the canvas to an absolute point + * @param {number} x - The x-axis coordinate. + * @param {number} [y=x] - The y-axis coordinate. + * @returns {Cropper} this + */ + moveTo(x, y = x) { + const { canvasData } = this; + let changed = false; + + x = Number(x); + y = Number(y); + + if (this.ready && !this.disabled && this.options.movable) { + if (isNumber(x)) { + canvasData.left = x; + changed = true; + } + + if (isNumber(y)) { + canvasData.top = y; + changed = true; + } + + if (changed) { + this.renderCanvas(true); + } + } + + return this; + }, + + /** + * Zoom the canvas with a relative ratio + * @param {number} ratio - The target ratio. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoom(ratio, _originalEvent) { + const { canvasData } = this; + + ratio = Number(ratio); + + if (ratio < 0) { + ratio = 1 / (1 - ratio); + } else { + ratio = 1 + ratio; + } + + return this.zoomTo((canvasData.width * ratio) / canvasData.naturalWidth, null, _originalEvent); + }, + + /** + * Zoom the canvas to an absolute ratio + * @param {number} ratio - The target ratio. + * @param {Object} pivot - The zoom pivot point coordinate. + * @param {Event} _originalEvent - The original event if any. + * @returns {Cropper} this + */ + zoomTo(ratio, pivot, _originalEvent) { + const { options, canvasData } = this; + const { + width, + height, + naturalWidth, + naturalHeight, + } = canvasData; + + ratio = Number(ratio); + + if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) { + const newWidth = naturalWidth * ratio; + const newHeight = naturalHeight * ratio; + + if (dispatchEvent(this.element, EVENT_ZOOM, { + ratio, + oldRatio: width / naturalWidth, + originalEvent: _originalEvent, + }) === false) { + return this; + } + + if (_originalEvent) { + const { pointers } = this; + const offset = getOffset(this.cropper); + const center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : { + pageX: _originalEvent.pageX, + pageY: _originalEvent.pageY, + }; + + // Zoom from the triggering point of the event + canvasData.left -= (newWidth - width) * ( + ((center.pageX - offset.left) - canvasData.left) / width + ); + canvasData.top -= (newHeight - height) * ( + ((center.pageY - offset.top) - canvasData.top) / height + ); + } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) { + canvasData.left -= (newWidth - width) * ( + (pivot.x - canvasData.left) / width + ); + canvasData.top -= (newHeight - height) * ( + (pivot.y - canvasData.top) / height + ); + } else { + // Zoom from the center of the canvas + canvasData.left -= (newWidth - width) / 2; + canvasData.top -= (newHeight - height) / 2; + } + + canvasData.width = newWidth; + canvasData.height = newHeight; + this.renderCanvas(true); + } + + return this; + }, + + /** + * Rotate the canvas with a relative degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotate(degree) { + return this.rotateTo((this.imageData.rotate || 0) + Number(degree)); + }, + + /** + * Rotate the canvas to an absolute degree + * @param {number} degree - The rotate degree. + * @returns {Cropper} this + */ + rotateTo(degree) { + degree = Number(degree); + + if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) { + this.imageData.rotate = degree % 360; + this.renderCanvas(true, true); + } + + return this; + }, + + /** + * Scale the image on the x-axis. + * @param {number} scaleX - The scale ratio on the x-axis. + * @returns {Cropper} this + */ + scaleX(scaleX) { + const { scaleY } = this.imageData; + + return this.scale(scaleX, isNumber(scaleY) ? scaleY : 1); + }, + + /** + * Scale the image on the y-axis. + * @param {number} scaleY - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scaleY(scaleY) { + const { scaleX } = this.imageData; + + return this.scale(isNumber(scaleX) ? scaleX : 1, scaleY); + }, + + /** + * Scale the image + * @param {number} scaleX - The scale ratio on the x-axis. + * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis. + * @returns {Cropper} this + */ + scale(scaleX, scaleY = scaleX) { + const { imageData } = this; + let transformed = false; + + scaleX = Number(scaleX); + scaleY = Number(scaleY); + + if (this.ready && !this.disabled && this.options.scalable) { + if (isNumber(scaleX)) { + imageData.scaleX = scaleX; + transformed = true; + } + + if (isNumber(scaleY)) { + imageData.scaleY = scaleY; + transformed = true; + } + + if (transformed) { + this.renderCanvas(true, true); + } + } + + return this; + }, + + /** + * Get the cropped area position and size data (base on the original image) + * @param {boolean} [rounded=false] - Indicate if round the data values or not. + * @returns {Object} The result cropped data. + */ + getData(rounded = false) { + const { + options, + imageData, + canvasData, + cropBoxData, + } = this; + let data; + + if (this.ready && this.cropped) { + data = { + x: cropBoxData.left - canvasData.left, + y: cropBoxData.top - canvasData.top, + width: cropBoxData.width, + height: cropBoxData.height, + }; + + const ratio = imageData.width / imageData.naturalWidth; + + forEach(data, (n, i) => { + data[i] = n / ratio; + }); + + if (rounded) { + // In case rounding off leads to extra 1px in right or bottom border + // we should round the top-left corner and the dimension (#343). + const bottom = Math.round(data.y + data.height); + const right = Math.round(data.x + data.width); + + data.x = Math.round(data.x); + data.y = Math.round(data.y); + data.width = right - data.x; + data.height = bottom - data.y; + } + } else { + data = { + x: 0, + y: 0, + width: 0, + height: 0, + }; + } + + if (options.rotatable) { + data.rotate = imageData.rotate || 0; + } + + if (options.scalable) { + data.scaleX = imageData.scaleX || 1; + data.scaleY = imageData.scaleY || 1; + } + + return data; + }, + + /** + * Set the cropped area position and size with new data + * @param {Object} data - The new data. + * @returns {Cropper} this + */ + setData(data) { + const { options, imageData, canvasData } = this; + const cropBoxData = {}; + + if (this.ready && !this.disabled && isPlainObject(data)) { + let transformed = false; + + if (options.rotatable) { + if (isNumber(data.rotate) && data.rotate !== imageData.rotate) { + imageData.rotate = data.rotate; + transformed = true; + } + } + + if (options.scalable) { + if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) { + imageData.scaleX = data.scaleX; + transformed = true; + } + + if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) { + imageData.scaleY = data.scaleY; + transformed = true; + } + } + + if (transformed) { + this.renderCanvas(true, true); + } + + const ratio = imageData.width / imageData.naturalWidth; + + if (isNumber(data.x)) { + cropBoxData.left = (data.x * ratio) + canvasData.left; + } + + if (isNumber(data.y)) { + cropBoxData.top = (data.y * ratio) + canvasData.top; + } + + if (isNumber(data.width)) { + cropBoxData.width = data.width * ratio; + } + + if (isNumber(data.height)) { + cropBoxData.height = data.height * ratio; + } + + this.setCropBoxData(cropBoxData); + } + + return this; + }, + + /** + * Get the container size data. + * @returns {Object} The result container data. + */ + getContainerData() { + return this.ready ? assign({}, this.containerData) : {}; + }, + + /** + * Get the image position and size data. + * @returns {Object} The result image data. + */ + getImageData() { + return this.sized ? assign({}, this.imageData) : {}; + }, + + /** + * Get the canvas position and size data. + * @returns {Object} The result canvas data. + */ + getCanvasData() { + const { canvasData } = this; + const data = {}; + + if (this.ready) { + forEach([ + 'left', + 'top', + 'width', + 'height', + 'naturalWidth', + 'naturalHeight', + ], (n) => { + data[n] = canvasData[n]; + }); + } + + return data; + }, + + /** + * Set the canvas position and size with new data. + * @param {Object} data - The new canvas data. + * @returns {Cropper} this + */ + setCanvasData(data) { + const { canvasData } = this; + const { aspectRatio } = canvasData; + + if (this.ready && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + canvasData.left = data.left; + } + + if (isNumber(data.top)) { + canvasData.top = data.top; + } + + if (isNumber(data.width)) { + canvasData.width = data.width; + canvasData.height = data.width / aspectRatio; + } else if (isNumber(data.height)) { + canvasData.height = data.height; + canvasData.width = data.height * aspectRatio; + } + + this.renderCanvas(true); + } + + return this; + }, + + /** + * Get the crop box position and size data. + * @returns {Object} The result crop box data. + */ + getCropBoxData() { + const { cropBoxData } = this; + let data; + + if (this.ready && this.cropped) { + data = { + left: cropBoxData.left, + top: cropBoxData.top, + width: cropBoxData.width, + height: cropBoxData.height, + }; + } + + return data || {}; + }, + + /** + * Set the crop box position and size with new data. + * @param {Object} data - The new crop box data. + * @returns {Cropper} this + */ + setCropBoxData(data) { + const { cropBoxData } = this; + const { aspectRatio } = this.options; + let widthChanged; + let heightChanged; + + if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) { + if (isNumber(data.left)) { + cropBoxData.left = data.left; + } + + if (isNumber(data.top)) { + cropBoxData.top = data.top; + } + + if (isNumber(data.width) && data.width !== cropBoxData.width) { + widthChanged = true; + cropBoxData.width = data.width; + } + + if (isNumber(data.height) && data.height !== cropBoxData.height) { + heightChanged = true; + cropBoxData.height = data.height; + } + + if (aspectRatio) { + if (widthChanged) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else if (heightChanged) { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.renderCropBox(); + } + + return this; + }, + + /** + * Get a canvas drawn the cropped image. + * @param {Object} [options={}] - The config options. + * @returns {HTMLCanvasElement} - The result canvas. + */ + getCroppedCanvas(options = {}) { + if (!this.ready || !window.HTMLCanvasElement) { + return null; + } + + const { canvasData } = this; + const source = getSourceCanvas(this.image, this.imageData, canvasData, options); + + // Returns the source canvas if it is not cropped. + if (!this.cropped) { + return source; + } + + let { + x: initialX, + y: initialY, + width: initialWidth, + height: initialHeight, + } = this.getData(); + const ratio = source.width / Math.floor(canvasData.naturalWidth); + + if (ratio !== 1) { + initialX *= ratio; + initialY *= ratio; + initialWidth *= ratio; + initialHeight *= ratio; + } + + const aspectRatio = initialWidth / initialHeight; + const maxSizes = getAdjustedSizes({ + aspectRatio, + width: options.maxWidth || Infinity, + height: options.maxHeight || Infinity, + }); + const minSizes = getAdjustedSizes({ + aspectRatio, + width: options.minWidth || 0, + height: options.minHeight || 0, + }, 'cover'); + let { + width, + height, + } = getAdjustedSizes({ + aspectRatio, + width: options.width || (ratio !== 1 ? source.width : initialWidth), + height: options.height || (ratio !== 1 ? source.height : initialHeight), + }); + + width = Math.min(maxSizes.width, Math.max(minSizes.width, width)); + height = Math.min(maxSizes.height, Math.max(minSizes.height, height)); + + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + + context.fillStyle = options.fillColor || 'transparent'; + context.fillRect(0, 0, width, height); + + const { imageSmoothingEnabled = true, imageSmoothingQuality } = options; + + context.imageSmoothingEnabled = imageSmoothingEnabled; + + if (imageSmoothingQuality) { + context.imageSmoothingQuality = imageSmoothingQuality; + } + + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage + const sourceWidth = source.width; + const sourceHeight = source.height; + + // Source canvas parameters + let srcX = initialX; + let srcY = initialY; + let srcWidth; + let srcHeight; + + // Destination canvas parameters + let dstX; + let dstY; + let dstWidth; + let dstHeight; + + if (srcX <= -initialWidth || srcX > sourceWidth) { + srcX = 0; + srcWidth = 0; + dstX = 0; + dstWidth = 0; + } else if (srcX <= 0) { + dstX = -srcX; + srcX = 0; + srcWidth = Math.min(sourceWidth, initialWidth + srcX); + dstWidth = srcWidth; + } else if (srcX <= sourceWidth) { + dstX = 0; + srcWidth = Math.min(initialWidth, sourceWidth - srcX); + dstWidth = srcWidth; + } + + if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) { + srcY = 0; + srcHeight = 0; + dstY = 0; + dstHeight = 0; + } else if (srcY <= 0) { + dstY = -srcY; + srcY = 0; + srcHeight = Math.min(sourceHeight, initialHeight + srcY); + dstHeight = srcHeight; + } else if (srcY <= sourceHeight) { + dstY = 0; + srcHeight = Math.min(initialHeight, sourceHeight - srcY); + dstHeight = srcHeight; + } + + const params = [ + srcX, + srcY, + srcWidth, + srcHeight, + ]; + + // Avoid "IndexSizeError" + if (dstWidth > 0 && dstHeight > 0) { + const scale = width / initialWidth; + + params.push( + dstX * scale, + dstY * scale, + dstWidth * scale, + dstHeight * scale, + ); + } + + // All the numerical parameters should be integer for `drawImage` + // https://github.com/fengyuanchen/cropper/issues/476 + context.drawImage(source, ...params.map(param => Math.floor(normalizeDecimalNumber(param)))); + + return canvas; + }, + + /** + * Change the aspect ratio of the crop box. + * @param {number} aspectRatio - The new aspect ratio. + * @returns {Cropper} this + */ + setAspectRatio(aspectRatio) { + const { options } = this; + + if (!this.disabled && !isUndefined(aspectRatio)) { + // 0 -> NaN + options.aspectRatio = Math.max(0, aspectRatio) || NaN; + + if (this.ready) { + this.initCropBox(); + + if (this.cropped) { + this.renderCropBox(); + } + } + } + + return this; + }, + + /** + * Change the drag mode. + * @param {string} mode - The new drag mode. + * @returns {Cropper} this + */ + setDragMode(mode) { + const { options, dragBox, face } = this; + + if (this.ready && !this.disabled) { + const croppable = mode === DRAG_MODE_CROP; + const movable = options.movable && mode === DRAG_MODE_MOVE; + + mode = (croppable || movable) ? mode : DRAG_MODE_NONE; + + options.dragMode = mode; + setData(dragBox, DATA_ACTION, mode); + toggleClass(dragBox, CLASS_CROP, croppable); + toggleClass(dragBox, CLASS_MOVE, movable); + + if (!options.cropBoxMovable) { + // Sync drag mode to crop box when it is not movable + setData(face, DATA_ACTION, mode); + toggleClass(face, CLASS_CROP, croppable); + toggleClass(face, CLASS_MOVE, movable); + } + } + + return this; + }, +}; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/preview.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/preview.js new file mode 100644 index 00000000..b73ac391 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/preview.js @@ -0,0 +1,148 @@ +import { DATA_PREVIEW } from './constants'; +import { + assign, + forEach, + getData, + getTransforms, + removeData, + setData, + setStyle, +} from './utilities'; + +export default { + initPreview() { + const { element, crossOrigin } = this; + const { preview } = this.options; + const url = crossOrigin ? this.crossOriginUrl : this.url; + const alt = element.alt || 'The image to preview'; + const image = document.createElement('img'); + + if (crossOrigin) { + image.crossOrigin = crossOrigin; + } + + image.src = url; + image.alt = alt; + this.viewBox.appendChild(image); + this.viewBoxImage = image; + + if (!preview) { + return; + } + + let previews = preview; + + if (typeof preview === 'string') { + previews = element.ownerDocument.querySelectorAll(preview); + } else if (preview.querySelector) { + previews = [preview]; + } + + this.previews = previews; + + forEach(previews, (el) => { + const img = document.createElement('img'); + + // Save the original size for recover + setData(el, DATA_PREVIEW, { + width: el.offsetWidth, + height: el.offsetHeight, + html: el.innerHTML, + }); + + if (crossOrigin) { + img.crossOrigin = crossOrigin; + } + + img.src = url; + img.alt = alt; + + /** + * Override img element styles + * Add `display:block` to avoid margin top issue + * Add `height:auto` to override `height` attribute on IE8 + * (Occur only when margin-top <= -height) + */ + img.style.cssText = ( + 'display:block;' + + 'width:100%;' + + 'height:auto;' + + 'min-width:0!important;' + + 'min-height:0!important;' + + 'max-width:none!important;' + + 'max-height:none!important;' + + 'image-orientation:0deg!important;"' + ); + + el.innerHTML = ''; + el.appendChild(img); + }); + }, + + resetPreview() { + forEach(this.previews, (element) => { + const data = getData(element, DATA_PREVIEW); + + setStyle(element, { + width: data.width, + height: data.height, + }); + + element.innerHTML = data.html; + removeData(element, DATA_PREVIEW); + }); + }, + + preview() { + const { imageData, canvasData, cropBoxData } = this; + const { width: cropBoxWidth, height: cropBoxHeight } = cropBoxData; + const { width, height } = imageData; + const left = cropBoxData.left - canvasData.left - imageData.left; + const top = cropBoxData.top - canvasData.top - imageData.top; + + if (!this.cropped || this.disabled) { + return; + } + + setStyle(this.viewBoxImage, assign({ + width, + height, + }, getTransforms(assign({ + translateX: -left, + translateY: -top, + }, imageData)))); + + forEach(this.previews, (element) => { + const data = getData(element, DATA_PREVIEW); + const originalWidth = data.width; + const originalHeight = data.height; + let newWidth = originalWidth; + let newHeight = originalHeight; + let ratio = 1; + + if (cropBoxWidth) { + ratio = originalWidth / cropBoxWidth; + newHeight = cropBoxHeight * ratio; + } + + if (cropBoxHeight && newHeight > originalHeight) { + ratio = originalHeight / cropBoxHeight; + newWidth = cropBoxWidth * ratio; + newHeight = originalHeight; + } + + setStyle(element, { + width: newWidth, + height: newHeight, + }); + + setStyle(element.getElementsByTagName('img')[0], assign({ + width: width * ratio, + height: height * ratio, + }, getTransforms(assign({ + translateX: -left * ratio, + translateY: -top * ratio, + }, imageData)))); + }); + }, +}; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/render.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/render.js new file mode 100644 index 00000000..ab8262d3 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/render.js @@ -0,0 +1,496 @@ +import { + ACTION_ALL, + ACTION_MOVE, + CLASS_HIDDEN, + DATA_ACTION, + EVENT_CROP, +} from './constants'; +import { + addClass, + assign, + dispatchEvent, + getAdjustedSizes, + getRotatedSizes, + getTransforms, + removeClass, + setData, + setStyle, +} from './utilities'; + +export default { + render() { + this.initContainer(); + this.initCanvas(); + this.initCropBox(); + this.renderCanvas(); + + if (this.cropped) { + this.renderCropBox(); + } + }, + + initContainer() { + const { + element, + options, + container, + cropper, + } = this; + + addClass(cropper, CLASS_HIDDEN); + removeClass(element, CLASS_HIDDEN); + + const containerData = { + width: Math.max( + container.offsetWidth, + Number(options.minContainerWidth) || 200, + ), + height: Math.max( + container.offsetHeight, + Number(options.minContainerHeight) || 100, + ), + }; + + this.containerData = containerData; + + setStyle(cropper, { + width: containerData.width, + height: containerData.height, + }); + + addClass(element, CLASS_HIDDEN); + removeClass(cropper, CLASS_HIDDEN); + }, + + // Canvas (image wrapper) + initCanvas() { + const { containerData, imageData } = this; + const { viewMode } = this.options; + const rotated = Math.abs(imageData.rotate) % 180 === 90; + const naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth; + const naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight; + const aspectRatio = naturalWidth / naturalHeight; + let canvasWidth = containerData.width; + let canvasHeight = containerData.height; + + if (containerData.height * aspectRatio > containerData.width) { + if (viewMode === 3) { + canvasWidth = containerData.height * aspectRatio; + } else { + canvasHeight = containerData.width / aspectRatio; + } + } else if (viewMode === 3) { + canvasHeight = containerData.width / aspectRatio; + } else { + canvasWidth = containerData.height * aspectRatio; + } + + const canvasData = { + aspectRatio, + naturalWidth, + naturalHeight, + width: canvasWidth, + height: canvasHeight, + }; + + canvasData.left = (containerData.width - canvasWidth) / 2; + canvasData.top = (containerData.height - canvasHeight) / 2; + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + + this.canvasData = canvasData; + this.limited = (viewMode === 1 || viewMode === 2); + this.limitCanvas(true, true); + this.initialImageData = assign({}, imageData); + this.initialCanvasData = assign({}, canvasData); + }, + + limitCanvas(sizeLimited, positionLimited) { + const { + options, + containerData, + canvasData, + cropBoxData, + } = this; + const { viewMode } = options; + const { aspectRatio } = canvasData; + const cropped = this.cropped && cropBoxData; + + if (sizeLimited) { + let minCanvasWidth = Number(options.minCanvasWidth) || 0; + let minCanvasHeight = Number(options.minCanvasHeight) || 0; + + if (viewMode > 1) { + minCanvasWidth = Math.max(minCanvasWidth, containerData.width); + minCanvasHeight = Math.max(minCanvasHeight, containerData.height); + + if (viewMode === 3) { + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } else if (viewMode > 0) { + if (minCanvasWidth) { + minCanvasWidth = Math.max( + minCanvasWidth, + cropped ? cropBoxData.width : 0, + ); + } else if (minCanvasHeight) { + minCanvasHeight = Math.max( + minCanvasHeight, + cropped ? cropBoxData.height : 0, + ); + } else if (cropped) { + minCanvasWidth = cropBoxData.width; + minCanvasHeight = cropBoxData.height; + + if (minCanvasHeight * aspectRatio > minCanvasWidth) { + minCanvasWidth = minCanvasHeight * aspectRatio; + } else { + minCanvasHeight = minCanvasWidth / aspectRatio; + } + } + } + + ({ width: minCanvasWidth, height: minCanvasHeight } = getAdjustedSizes({ + aspectRatio, + width: minCanvasWidth, + height: minCanvasHeight, + })); + + canvasData.minWidth = minCanvasWidth; + canvasData.minHeight = minCanvasHeight; + canvasData.maxWidth = Infinity; + canvasData.maxHeight = Infinity; + } + + if (positionLimited) { + if (viewMode > (cropped ? 0 : 1)) { + const newCanvasLeft = containerData.width - canvasData.width; + const newCanvasTop = containerData.height - canvasData.height; + + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + canvasData.maxTop = Math.max(0, newCanvasTop); + + if (cropped && this.limited) { + canvasData.minLeft = Math.min( + cropBoxData.left, + cropBoxData.left + (cropBoxData.width - canvasData.width), + ); + canvasData.minTop = Math.min( + cropBoxData.top, + cropBoxData.top + (cropBoxData.height - canvasData.height), + ); + canvasData.maxLeft = cropBoxData.left; + canvasData.maxTop = cropBoxData.top; + + if (viewMode === 2) { + if (canvasData.width >= containerData.width) { + canvasData.minLeft = Math.min(0, newCanvasLeft); + canvasData.maxLeft = Math.max(0, newCanvasLeft); + } + + if (canvasData.height >= containerData.height) { + canvasData.minTop = Math.min(0, newCanvasTop); + canvasData.maxTop = Math.max(0, newCanvasTop); + } + } + } + } else { + canvasData.minLeft = -canvasData.width; + canvasData.minTop = -canvasData.height; + canvasData.maxLeft = containerData.width; + canvasData.maxTop = containerData.height; + } + } + }, + + renderCanvas(changed, transformed) { + const { canvasData, imageData } = this; + + if (transformed) { + const { width: naturalWidth, height: naturalHeight } = getRotatedSizes({ + width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1), + height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1), + degree: imageData.rotate || 0, + }); + const width = canvasData.width * (naturalWidth / canvasData.naturalWidth); + const height = canvasData.height * (naturalHeight / canvasData.naturalHeight); + + canvasData.left -= (width - canvasData.width) / 2; + canvasData.top -= (height - canvasData.height) / 2; + canvasData.width = width; + canvasData.height = height; + canvasData.aspectRatio = naturalWidth / naturalHeight; + canvasData.naturalWidth = naturalWidth; + canvasData.naturalHeight = naturalHeight; + this.limitCanvas(true, false); + } + + if (canvasData.width > canvasData.maxWidth + || canvasData.width < canvasData.minWidth) { + canvasData.left = canvasData.oldLeft; + } + + if (canvasData.height > canvasData.maxHeight + || canvasData.height < canvasData.minHeight) { + canvasData.top = canvasData.oldTop; + } + + canvasData.width = Math.min( + Math.max(canvasData.width, canvasData.minWidth), + canvasData.maxWidth, + ); + canvasData.height = Math.min( + Math.max(canvasData.height, canvasData.minHeight), + canvasData.maxHeight, + ); + + this.limitCanvas(false, true); + + canvasData.left = Math.min( + Math.max(canvasData.left, canvasData.minLeft), + canvasData.maxLeft, + ); + canvasData.top = Math.min( + Math.max(canvasData.top, canvasData.minTop), + canvasData.maxTop, + ); + canvasData.oldLeft = canvasData.left; + canvasData.oldTop = canvasData.top; + + setStyle(this.canvas, assign({ + width: canvasData.width, + height: canvasData.height, + }, getTransforms({ + translateX: canvasData.left, + translateY: canvasData.top, + }))); + + this.renderImage(changed); + + if (this.cropped && this.limited) { + this.limitCropBox(true, true); + } + }, + + renderImage(changed) { + const { canvasData, imageData } = this; + const width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth); + const height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight); + + assign(imageData, { + width, + height, + left: (canvasData.width - width) / 2, + top: (canvasData.height - height) / 2, + }); + setStyle(this.image, assign({ + width: imageData.width, + height: imageData.height, + }, getTransforms(assign({ + translateX: imageData.left, + translateY: imageData.top, + }, imageData)))); + + if (changed) { + this.output(); + } + }, + + initCropBox() { + const { options, canvasData } = this; + const aspectRatio = options.aspectRatio || options.initialAspectRatio; + const autoCropArea = Number(options.autoCropArea) || 0.8; + const cropBoxData = { + width: canvasData.width, + height: canvasData.height, + }; + + if (aspectRatio) { + if (canvasData.height * aspectRatio > canvasData.width) { + cropBoxData.height = cropBoxData.width / aspectRatio; + } else { + cropBoxData.width = cropBoxData.height * aspectRatio; + } + } + + this.cropBoxData = cropBoxData; + this.limitCropBox(true, true); + + // Initialize auto crop area + cropBoxData.width = Math.min( + Math.max(cropBoxData.width, cropBoxData.minWidth), + cropBoxData.maxWidth, + ); + cropBoxData.height = Math.min( + Math.max(cropBoxData.height, cropBoxData.minHeight), + cropBoxData.maxHeight, + ); + + // The width/height of auto crop area must large than "minWidth/Height" + cropBoxData.width = Math.max( + cropBoxData.minWidth, + cropBoxData.width * autoCropArea, + ); + cropBoxData.height = Math.max( + cropBoxData.minHeight, + cropBoxData.height * autoCropArea, + ); + cropBoxData.left = ( + canvasData.left + ((canvasData.width - cropBoxData.width) / 2) + ); + cropBoxData.top = ( + canvasData.top + ((canvasData.height - cropBoxData.height) / 2) + ); + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + + this.initialCropBoxData = assign({}, cropBoxData); + }, + + limitCropBox(sizeLimited, positionLimited) { + const { + options, + containerData, + canvasData, + cropBoxData, + limited, + } = this; + const { aspectRatio } = options; + + if (sizeLimited) { + let minCropBoxWidth = Number(options.minCropBoxWidth) || 0; + let minCropBoxHeight = Number(options.minCropBoxHeight) || 0; + let maxCropBoxWidth = limited ? Math.min( + containerData.width, + canvasData.width, + canvasData.width + canvasData.left, + containerData.width - canvasData.left, + ) : containerData.width; + let maxCropBoxHeight = limited ? Math.min( + containerData.height, + canvasData.height, + canvasData.height + canvasData.top, + containerData.height - canvasData.top, + ) : containerData.height; + + // The min/maxCropBoxWidth/Height must be less than container's width/height + minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width); + minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height); + + if (aspectRatio) { + if (minCropBoxWidth && minCropBoxHeight) { + if (minCropBoxHeight * aspectRatio > minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + } else if (minCropBoxWidth) { + minCropBoxHeight = minCropBoxWidth / aspectRatio; + } else if (minCropBoxHeight) { + minCropBoxWidth = minCropBoxHeight * aspectRatio; + } + + if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) { + maxCropBoxHeight = maxCropBoxWidth / aspectRatio; + } else { + maxCropBoxWidth = maxCropBoxHeight * aspectRatio; + } + } + + // The minWidth/Height must be less than maxWidth/Height + cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth); + cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight); + cropBoxData.maxWidth = maxCropBoxWidth; + cropBoxData.maxHeight = maxCropBoxHeight; + } + + if (positionLimited) { + if (limited) { + cropBoxData.minLeft = Math.max(0, canvasData.left); + cropBoxData.minTop = Math.max(0, canvasData.top); + cropBoxData.maxLeft = Math.min( + containerData.width, + canvasData.left + canvasData.width, + ) - cropBoxData.width; + cropBoxData.maxTop = Math.min( + containerData.height, + canvasData.top + canvasData.height, + ) - cropBoxData.height; + } else { + cropBoxData.minLeft = 0; + cropBoxData.minTop = 0; + cropBoxData.maxLeft = containerData.width - cropBoxData.width; + cropBoxData.maxTop = containerData.height - cropBoxData.height; + } + } + }, + + renderCropBox() { + const { options, containerData, cropBoxData } = this; + + if (cropBoxData.width > cropBoxData.maxWidth + || cropBoxData.width < cropBoxData.minWidth) { + cropBoxData.left = cropBoxData.oldLeft; + } + + if (cropBoxData.height > cropBoxData.maxHeight + || cropBoxData.height < cropBoxData.minHeight) { + cropBoxData.top = cropBoxData.oldTop; + } + + cropBoxData.width = Math.min( + Math.max(cropBoxData.width, cropBoxData.minWidth), + cropBoxData.maxWidth, + ); + cropBoxData.height = Math.min( + Math.max(cropBoxData.height, cropBoxData.minHeight), + cropBoxData.maxHeight, + ); + + this.limitCropBox(false, true); + + cropBoxData.left = Math.min( + Math.max(cropBoxData.left, cropBoxData.minLeft), + cropBoxData.maxLeft, + ); + cropBoxData.top = Math.min( + Math.max(cropBoxData.top, cropBoxData.minTop), + cropBoxData.maxTop, + ); + cropBoxData.oldLeft = cropBoxData.left; + cropBoxData.oldTop = cropBoxData.top; + + if (options.movable && options.cropBoxMovable) { + // Turn to move the canvas when the crop box is equal to the container + setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width + && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL); + } + + setStyle(this.cropBox, assign({ + width: cropBoxData.width, + height: cropBoxData.height, + }, getTransforms({ + translateX: cropBoxData.left, + translateY: cropBoxData.top, + }))); + + if (this.cropped && this.limited) { + this.limitCanvas(true, true); + } + + if (!this.disabled) { + this.output(); + } + }, + + output() { + this.preview(); + dispatchEvent(this.element, EVENT_CROP, this.getData()); + }, +}; diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/template.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/template.js new file mode 100644 index 00000000..e14ce750 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/template.js @@ -0,0 +1,27 @@ +export default ( + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
' + + '
' +); diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/utilities.js b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/utilities.js new file mode 100644 index 00000000..3f400b25 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/src/js/utilities.js @@ -0,0 +1,962 @@ +import { IS_BROWSER, WINDOW } from './constants'; + +/** + * Check if the given value is not a number. + */ +export const isNaN = Number.isNaN || WINDOW.isNaN; + +/** + * Check if the given value is a number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a number, else `false`. + */ +export function isNumber(value) { + return typeof value === 'number' && !isNaN(value); +} + +/** + * Check if the given value is a positive number. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a positive number, else `false`. + */ +export const isPositiveNumber = value => value > 0 && value < Infinity; + +/** + * Check if the given value is undefined. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is undefined, else `false`. + */ +export function isUndefined(value) { + return typeof value === 'undefined'; +} + +/** + * Check if the given value is an object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is an object, else `false`. + */ +export function isObject(value) { + return typeof value === 'object' && value !== null; +} + +const { hasOwnProperty } = Object.prototype; + +/** + * Check if the given value is a plain object. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a plain object, else `false`. + */ +export function isPlainObject(value) { + if (!isObject(value)) { + return false; + } + + try { + const { constructor } = value; + const { prototype } = constructor; + + return constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf'); + } catch (error) { + return false; + } +} + +/** + * Check if the given value is a function. + * @param {*} value - The value to check. + * @returns {boolean} Returns `true` if the given value is a function, else `false`. + */ +export function isFunction(value) { + return typeof value === 'function'; +} + +const { slice } = Array.prototype; + +/** + * Convert array-like or iterable object to an array. + * @param {*} value - The value to convert. + * @returns {Array} Returns a new array. + */ +export function toArray(value) { + return Array.from ? Array.from(value) : slice.call(value); +} + +/** + * Iterate the given data. + * @param {*} data - The data to iterate. + * @param {Function} callback - The process function for each element. + * @returns {*} The original data. + */ +export function forEach(data, callback) { + if (data && isFunction(callback)) { + if (Array.isArray(data) || isNumber(data.length)/* array-like */) { + toArray(data).forEach((value, key) => { + callback.call(data, value, key, data); + }); + } else if (isObject(data)) { + Object.keys(data).forEach((key) => { + callback.call(data, data[key], key, data); + }); + } + } + + return data; +} + +/** + * Extend the given object. + * @param {*} target - The target object to extend. + * @param {*} args - The rest objects for merging to the target object. + * @returns {Object} The extended object. + */ +export const assign = Object.assign || function assign(target, ...args) { + if (isObject(target) && args.length > 0) { + args.forEach((arg) => { + if (isObject(arg)) { + Object.keys(arg).forEach((key) => { + target[key] = arg[key]; + }); + } + }); + } + + return target; +}; + +const REGEXP_DECIMALS = /\.\d*(?:0|9){12}\d*$/; + +/** + * Normalize decimal number. + * Check out {@link http://0.30000000000000004.com/} + * @param {number} value - The value to normalize. + * @param {number} [times=100000000000] - The times for normalizing. + * @returns {number} Returns the normalized number. + */ +export function normalizeDecimalNumber(value, times = 100000000000) { + return REGEXP_DECIMALS.test(value) ? (Math.round(value * times) / times) : value; +} + +const REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/; + +/** + * Apply styles to the given element. + * @param {Element} element - The target element. + * @param {Object} styles - The styles for applying. + */ +export function setStyle(element, styles) { + const { style } = element; + + forEach(styles, (value, property) => { + if (REGEXP_SUFFIX.test(property) && isNumber(value)) { + value = `${value}px`; + } + + style[property] = value; + }); +} + +/** + * Check if the given element has a special class. + * @param {Element} element - The element to check. + * @param {string} value - The class to search. + * @returns {boolean} Returns `true` if the special class was found. + */ +export function hasClass(element, value) { + return element.classList + ? element.classList.contains(value) + : element.className.indexOf(value) > -1; +} + +/** + * Add classes to the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be added. + */ +export function addClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, (elem) => { + addClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.add(value); + return; + } + + const className = element.className.trim(); + + if (!className) { + element.className = value; + } else if (className.indexOf(value) < 0) { + element.className = `${className} ${value}`; + } +} + +/** + * Remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be removed. + */ +export function removeClass(element, value) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, (elem) => { + removeClass(elem, value); + }); + return; + } + + if (element.classList) { + element.classList.remove(value); + return; + } + + if (element.className.indexOf(value) >= 0) { + element.className = element.className.replace(value, ''); + } +} + +/** + * Add or remove classes from the given element. + * @param {Element} element - The target element. + * @param {string} value - The classes to be toggled. + * @param {boolean} added - Add only. + */ +export function toggleClass(element, value, added) { + if (!value) { + return; + } + + if (isNumber(element.length)) { + forEach(element, (elem) => { + toggleClass(elem, value, added); + }); + return; + } + + // IE10-11 doesn't support the second parameter of `classList.toggle` + if (added) { + addClass(element, value); + } else { + removeClass(element, value); + } +} + +const REGEXP_CAMEL_CASE = /([a-z\d])([A-Z])/g; + +/** + * Transform the given string from camelCase to kebab-case + * @param {string} value - The value to transform. + * @returns {string} The transformed value. + */ +export function toParamCase(value) { + return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase(); +} + +/** + * Get data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to get. + * @returns {string} The data value. + */ +export function getData(element, name) { + if (isObject(element[name])) { + return element[name]; + } + + if (element.dataset) { + return element.dataset[name]; + } + + return element.getAttribute(`data-${toParamCase(name)}`); +} + +/** + * Set data to the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to set. + * @param {string} data - The data value. + */ +export function setData(element, name, data) { + if (isObject(data)) { + element[name] = data; + } else if (element.dataset) { + element.dataset[name] = data; + } else { + element.setAttribute(`data-${toParamCase(name)}`, data); + } +} + +/** + * Remove data from the given element. + * @param {Element} element - The target element. + * @param {string} name - The data key to remove. + */ +export function removeData(element, name) { + if (isObject(element[name])) { + try { + delete element[name]; + } catch (error) { + element[name] = undefined; + } + } else if (element.dataset) { + // #128 Safari not allows to delete dataset property + try { + delete element.dataset[name]; + } catch (error) { + element.dataset[name] = undefined; + } + } else { + element.removeAttribute(`data-${toParamCase(name)}`); + } +} + +const REGEXP_SPACES = /\s\s*/; +const onceSupported = (() => { + let supported = false; + + if (IS_BROWSER) { + let once = false; + const listener = () => {}; + const options = Object.defineProperty({}, 'once', { + get() { + supported = true; + return once; + }, + + /** + * This setter can fix a `TypeError` in strict mode + * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only} + * @param {boolean} value - The value to set + */ + set(value) { + once = value; + }, + }); + + WINDOW.addEventListener('test', listener, options); + WINDOW.removeEventListener('test', listener, options); + } + + return supported; +})(); + +/** + * Remove event listener from the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ +export function removeListener(element, type, listener, options = {}) { + let handler = listener; + + type.trim().split(REGEXP_SPACES).forEach((event) => { + if (!onceSupported) { + const { listeners } = element; + + if (listeners && listeners[event] && listeners[event][listener]) { + handler = listeners[event][listener]; + delete listeners[event][listener]; + + if (Object.keys(listeners[event]).length === 0) { + delete listeners[event]; + } + + if (Object.keys(listeners).length === 0) { + delete element.listeners; + } + } + } + + element.removeEventListener(event, handler, options); + }); +} + +/** + * Add event listener to the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Function} listener - The event listener. + * @param {Object} options - The event options. + */ +export function addListener(element, type, listener, options = {}) { + let handler = listener; + + type.trim().split(REGEXP_SPACES).forEach((event) => { + if (options.once && !onceSupported) { + const { listeners = {} } = element; + + handler = (...args) => { + delete listeners[event][listener]; + element.removeEventListener(event, handler, options); + listener.apply(element, args); + }; + + if (!listeners[event]) { + listeners[event] = {}; + } + + if (listeners[event][listener]) { + element.removeEventListener(event, listeners[event][listener], options); + } + + listeners[event][listener] = handler; + element.listeners = listeners; + } + + element.addEventListener(event, handler, options); + }); +} + +/** + * Dispatch event on the target element. + * @param {Element} element - The event target. + * @param {string} type - The event type(s). + * @param {Object} data - The additional event data. + * @returns {boolean} Indicate if the event is default prevented or not. + */ +export function dispatchEvent(element, type, data) { + let event; + + // Event and CustomEvent on IE9-11 are global objects, not constructors + if (isFunction(Event) && isFunction(CustomEvent)) { + event = new CustomEvent(type, { + detail: data, + bubbles: true, + cancelable: true, + }); + } else { + event = document.createEvent('CustomEvent'); + event.initCustomEvent(type, true, true, data); + } + + return element.dispatchEvent(event); +} + +/** + * Get the offset base on the document. + * @param {Element} element - The target element. + * @returns {Object} The offset data. + */ +export function getOffset(element) { + const box = element.getBoundingClientRect(); + + return { + left: box.left + (window.pageXOffset - document.documentElement.clientLeft), + top: box.top + (window.pageYOffset - document.documentElement.clientTop), + }; +} + +const { location } = WINDOW; +const REGEXP_ORIGINS = /^(\w+:)\/\/([^:/?#]*):?(\d*)/i; + +/** + * Check if the given URL is a cross origin URL. + * @param {string} url - The target URL. + * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`. + */ +export function isCrossOriginURL(url) { + const parts = url.match(REGEXP_ORIGINS); + + return parts !== null && ( + parts[1] !== location.protocol + || parts[2] !== location.hostname + || parts[3] !== location.port + ); +} + +/** + * Add timestamp to the given URL. + * @param {string} url - The target URL. + * @returns {string} The result URL. + */ +export function addTimestamp(url) { + const timestamp = `timestamp=${(new Date()).getTime()}`; + + return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp; +} + +/** + * Get transforms base on the given object. + * @param {Object} obj - The target object. + * @returns {string} A string contains transform values. + */ +export function getTransforms({ + rotate, + scaleX, + scaleY, + translateX, + translateY, +}) { + const values = []; + + if (isNumber(translateX) && translateX !== 0) { + values.push(`translateX(${translateX}px)`); + } + + if (isNumber(translateY) && translateY !== 0) { + values.push(`translateY(${translateY}px)`); + } + + // Rotate should come first before scale to match orientation transform + if (isNumber(rotate) && rotate !== 0) { + values.push(`rotate(${rotate}deg)`); + } + + if (isNumber(scaleX) && scaleX !== 1) { + values.push(`scaleX(${scaleX})`); + } + + if (isNumber(scaleY) && scaleY !== 1) { + values.push(`scaleY(${scaleY})`); + } + + const transform = values.length ? values.join(' ') : 'none'; + + return { + WebkitTransform: transform, + msTransform: transform, + transform, + }; +} + +/** + * Get the max ratio of a group of pointers. + * @param {string} pointers - The target pointers. + * @returns {number} The result ratio. + */ +export function getMaxZoomRatio(pointers) { + const pointers2 = assign({}, pointers); + const ratios = []; + + forEach(pointers, (pointer, pointerId) => { + delete pointers2[pointerId]; + + forEach(pointers2, (pointer2) => { + const x1 = Math.abs(pointer.startX - pointer2.startX); + const y1 = Math.abs(pointer.startY - pointer2.startY); + const x2 = Math.abs(pointer.endX - pointer2.endX); + const y2 = Math.abs(pointer.endY - pointer2.endY); + const z1 = Math.sqrt((x1 * x1) + (y1 * y1)); + const z2 = Math.sqrt((x2 * x2) + (y2 * y2)); + const ratio = (z2 - z1) / z1; + + ratios.push(ratio); + }); + }); + + ratios.sort((a, b) => Math.abs(a) < Math.abs(b)); + + return ratios[0]; +} + +/** + * Get a pointer from an event object. + * @param {Object} event - The target event object. + * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not. + * @returns {Object} The result pointer contains start and/or end point coordinates. + */ +export function getPointer({ pageX, pageY }, endOnly) { + const end = { + endX: pageX, + endY: pageY, + }; + + return endOnly ? end : assign({ + startX: pageX, + startY: pageY, + }, end); +} + +/** + * Get the center point coordinate of a group of pointers. + * @param {Object} pointers - The target pointers. + * @returns {Object} The center point coordinate. + */ +export function getPointersCenter(pointers) { + let pageX = 0; + let pageY = 0; + let count = 0; + + forEach(pointers, ({ startX, startY }) => { + pageX += startX; + pageY += startY; + count += 1; + }); + + pageX /= count; + pageY /= count; + + return { + pageX, + pageY, + }; +} + +/** + * Get the max sizes in a rectangle under the given aspect ratio. + * @param {Object} data - The original sizes. + * @param {string} [type='contain'] - The adjust type. + * @returns {Object} The result sizes. + */ +export function getAdjustedSizes( + { + aspectRatio, + height, + width, + }, + type = 'contain', // or 'cover' +) { + const isValidWidth = isPositiveNumber(width); + const isValidHeight = isPositiveNumber(height); + + if (isValidWidth && isValidHeight) { + const adjustedWidth = height * aspectRatio; + + if ((type === 'contain' && adjustedWidth > width) || (type === 'cover' && adjustedWidth < width)) { + height = width / aspectRatio; + } else { + width = height * aspectRatio; + } + } else if (isValidWidth) { + height = width / aspectRatio; + } else if (isValidHeight) { + width = height * aspectRatio; + } + + return { + width, + height, + }; +} + +/** + * Get the new sizes of a rectangle after rotated. + * @param {Object} data - The original sizes. + * @returns {Object} The result sizes. + */ +export function getRotatedSizes({ width, height, degree }) { + degree = Math.abs(degree) % 180; + + if (degree === 90) { + return { + width: height, + height: width, + }; + } + + const arc = ((degree % 90) * Math.PI) / 180; + const sinArc = Math.sin(arc); + const cosArc = Math.cos(arc); + const newWidth = (width * cosArc) + (height * sinArc); + const newHeight = (width * sinArc) + (height * cosArc); + + return degree > 90 ? { + width: newHeight, + height: newWidth, + } : { + width: newWidth, + height: newHeight, + }; +} + +/** + * Get a canvas which drew the given image. + * @param {HTMLImageElement} image - The image for drawing. + * @param {Object} imageData - The image data. + * @param {Object} canvasData - The canvas data. + * @param {Object} options - The options. + * @returns {HTMLCanvasElement} The result canvas. + */ +export function getSourceCanvas( + image, + { + aspectRatio: imageAspectRatio, + naturalWidth: imageNaturalWidth, + naturalHeight: imageNaturalHeight, + rotate = 0, + scaleX = 1, + scaleY = 1, + }, + { + aspectRatio, + naturalWidth, + naturalHeight, + }, + { + fillColor = 'transparent', + imageSmoothingEnabled = true, + imageSmoothingQuality = 'low', + maxWidth = Infinity, + maxHeight = Infinity, + minWidth = 0, + minHeight = 0, + }, +) { + const canvas = document.createElement('canvas'); + const context = canvas.getContext('2d'); + const maxSizes = getAdjustedSizes({ + aspectRatio, + width: maxWidth, + height: maxHeight, + }); + const minSizes = getAdjustedSizes({ + aspectRatio, + width: minWidth, + height: minHeight, + }, 'cover'); + const width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth)); + const height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); + + // Note: should always use image's natural sizes for drawing as + // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90 + const destMaxSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: maxWidth, + height: maxHeight, + }); + const destMinSizes = getAdjustedSizes({ + aspectRatio: imageAspectRatio, + width: minWidth, + height: minHeight, + }, 'cover'); + const destWidth = Math.min( + destMaxSizes.width, + Math.max(destMinSizes.width, imageNaturalWidth), + ); + const destHeight = Math.min( + destMaxSizes.height, + Math.max(destMinSizes.height, imageNaturalHeight), + ); + const params = [ + -destWidth / 2, + -destHeight / 2, + destWidth, + destHeight, + ]; + + canvas.width = normalizeDecimalNumber(width); + canvas.height = normalizeDecimalNumber(height); + context.fillStyle = fillColor; + context.fillRect(0, 0, width, height); + context.save(); + context.translate(width / 2, height / 2); + context.rotate((rotate * Math.PI) / 180); + context.scale(scaleX, scaleY); + context.imageSmoothingEnabled = imageSmoothingEnabled; + context.imageSmoothingQuality = imageSmoothingQuality; + context.drawImage(image, ...params.map(param => Math.floor(normalizeDecimalNumber(param)))); + context.restore(); + return canvas; +} + +const { fromCharCode } = String; + +/** + * Get string from char code in data view. + * @param {DataView} dataView - The data view for read. + * @param {number} start - The start index. + * @param {number} length - The read length. + * @returns {string} The read result. + */ +export function getStringFromCharCode(dataView, start, length) { + let str = ''; + + length += start; + + for (let i = start; i < length; i += 1) { + str += fromCharCode(dataView.getUint8(i)); + } + + return str; +} + +const REGEXP_DATA_URL_HEAD = /^data:.*,/; + +/** + * Transform Data URL to array buffer. + * @param {string} dataURL - The Data URL to transform. + * @returns {ArrayBuffer} The result array buffer. + */ +export function dataURLToArrayBuffer(dataURL) { + const base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, ''); + const binary = atob(base64); + const arrayBuffer = new ArrayBuffer(binary.length); + const uint8 = new Uint8Array(arrayBuffer); + + forEach(uint8, (value, i) => { + uint8[i] = binary.charCodeAt(i); + }); + + return arrayBuffer; +} + +/** + * Transform array buffer to Data URL. + * @param {ArrayBuffer} arrayBuffer - The array buffer to transform. + * @param {string} mimeType - The mime type of the Data URL. + * @returns {string} The result Data URL. + */ +export function arrayBufferToDataURL(arrayBuffer, mimeType) { + const chunks = []; + + // Chunk Typed Array for better performance (#435) + const chunkSize = 8192; + let uint8 = new Uint8Array(arrayBuffer); + + while (uint8.length > 0) { + // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9 + // eslint-disable-next-line prefer-spread + chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize)))); + uint8 = uint8.subarray(chunkSize); + } + + return `data:${mimeType};base64,${btoa(chunks.join(''))}`; +} + +/** + * Get orientation value from given array buffer. + * @param {ArrayBuffer} arrayBuffer - The array buffer to read. + * @returns {number} The read orientation value. + */ +export function resetAndGetOrientation(arrayBuffer) { + const dataView = new DataView(arrayBuffer); + let orientation; + + // Ignores range error when the image does not have correct Exif information + try { + let littleEndian; + let app1Start; + let ifdStart; + + // Only handle JPEG image (start by 0xFFD8) + if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) { + const length = dataView.byteLength; + let offset = 2; + + while (offset + 1 < length) { + if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) { + app1Start = offset; + break; + } + + offset += 1; + } + } + + if (app1Start) { + const exifIDCode = app1Start + 4; + const tiffOffset = app1Start + 10; + + if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') { + const endianness = dataView.getUint16(tiffOffset); + + littleEndian = endianness === 0x4949; + + if (littleEndian || endianness === 0x4D4D /* bigEndian */) { + if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) { + const firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian); + + if (firstIFDOffset >= 0x00000008) { + ifdStart = tiffOffset + firstIFDOffset; + } + } + } + } + } + + if (ifdStart) { + const length = dataView.getUint16(ifdStart, littleEndian); + let offset; + let i; + + for (i = 0; i < length; i += 1) { + offset = ifdStart + (i * 12) + 2; + + if (dataView.getUint16(offset, littleEndian) === 0x0112 /* Orientation */) { + // 8 is the offset of the current tag's value + offset += 8; + + // Get the original orientation value + orientation = dataView.getUint16(offset, littleEndian); + + // Override the orientation with its default value + dataView.setUint16(offset, 1, littleEndian); + break; + } + } + } + } catch (error) { + orientation = 1; + } + + return orientation; +} + +/** + * Parse Exif Orientation value. + * @param {number} orientation - The orientation to parse. + * @returns {Object} The parsed result. + */ +export function parseOrientation(orientation) { + let rotate = 0; + let scaleX = 1; + let scaleY = 1; + + switch (orientation) { + // Flip horizontal + case 2: + scaleX = -1; + break; + + // Rotate left 180° + case 3: + rotate = -180; + break; + + // Flip vertical + case 4: + scaleY = -1; + break; + + // Flip vertical and rotate right 90° + case 5: + rotate = 90; + scaleY = -1; + break; + + // Rotate right 90° + case 6: + rotate = 90; + break; + + // Flip horizontal and rotate right 90° + case 7: + rotate = 90; + scaleX = -1; + break; + + // Rotate left 90° + case 8: + rotate = -90; + break; + + default: + } + + return { + rotate, + scaleX, + scaleY, + }; +} diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/types/_notes/dwsync.xml b/scripts/gcs/Desktop/website/node_modules/cropperjs/types/_notes/dwsync.xml new file mode 100644 index 00000000..4bfc1367 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/types/_notes/dwsync.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/gcs/Desktop/website/node_modules/cropperjs/types/index.d.ts b/scripts/gcs/Desktop/website/node_modules/cropperjs/types/index.d.ts new file mode 100644 index 00000000..187290f9 --- /dev/null +++ b/scripts/gcs/Desktop/website/node_modules/cropperjs/types/index.d.ts @@ -0,0 +1,164 @@ +declare namespace Cropper { + type DragMode = 'crop' | 'move' | 'none'; + type ViewMode = 0 | 1 | 2 | 3; + type ImageSmoothingQuality = 'low' | 'medium' | 'high'; + + export interface Data { + x: number; + y: number; + width: number; + height: number; + rotate: number; + scaleX: number; + scaleY: number; + } + + export interface ContainerData { + width: number; + height: number; + } + + export interface ImageData { + left: number; + top: number; + width: number; + height: number; + rotate: number; + scaleX: number; + scaleY: number; + naturalWidth: number; + naturalHeight: number; + aspectRatio: number; + } + + export interface CanvasData { + left: number; + top: number; + width: number; + height: number; + naturalWidth: number; + naturalHeight: number; + } + + export interface CropBoxData { + left: number; + top: number; + width: number; + height: number; + } + + export interface GetCroppedCanvasOptions { + width?: number; + height?: number; + minWidth?: number; + minHeight?: number; + maxWidth?: number; + maxHeight?: number; + fillColor?: string; + imageSmoothingEnabled?: boolean; + imageSmoothingQuality?: ImageSmoothingQuality; + } + + export interface SetDataOptions { + x?: number; + y?: number; + width?: number; + height?: number; + rotate?: number; + scaleX?: number; + scaleY?: number; + } + + export interface SetCanvasDataOptions { + left?: number; + top?: number; + width?: number; + height?: number; + } + + export interface SetCropBoxDataOptions { + left?: number; + top?: number; + width?: number; + height?: number; + } + + export interface Options { + aspectRatio?: number; + autoCrop?: boolean; + autoCropArea?: number; + background?: boolean; + center?: boolean; + checkCrossOrigin?: boolean; + checkOrientation?: boolean; + crop?(event: CustomEvent): void; + cropBoxMovable?: boolean; + cropBoxResizable?: boolean; + cropend?(event: CustomEvent): void; + cropmove?(event: CustomEvent): void; + cropstart?(event: CustomEvent): void; + data?: Data; + dragMode?: DragMode; + guides?: boolean; + highlight?: boolean; + initialAspectRatio?: number; + minCanvasHeight?: number; + minCanvasWidth?: number; + minContainerHeight?: number; + minContainerWidth?: number; + minCropBoxHeight?: number; + minCropBoxWidth?: number; + modal?: boolean; + movable?: boolean; + preview?: Element | Element[] | NodeList | string; + ready?(event: CustomEvent): void; + responsive?: boolean; + restore?: boolean; + rotatable?: boolean; + scalable?: boolean; + toggleDragModeOnDblclick?: boolean; + viewMode?: ViewMode; + wheelZoomRatio?: number; + zoom?(event: CustomEvent): void; + zoomOnTouch?: boolean; + zoomOnWheel?: boolean; + zoomable?: boolean; + } +} + +declare class Cropper { + constructor(element: HTMLImageElement | HTMLCanvasElement, options?: Cropper.Options); + clear(): Cropper; + crop(): Cropper; + destroy(): Cropper; + disable(): Cropper; + enable(): Cropper; + getCanvasData(): Cropper.CanvasData; + getContainerData(): Cropper.ContainerData; + getCropBoxData(): Cropper.CropBoxData; + getCroppedCanvas(options?: Cropper.GetCroppedCanvasOptions): HTMLCanvasElement; + getData(rounded?: boolean): Cropper.Data; + getImageData(): Cropper.ImageData; + move(offsetX: number, offsetY?: number): Cropper; + moveTo(x: number, y?: number): Cropper; + replace(url: string, onlyColorChanged?: boolean): Cropper; + reset(): Cropper; + rotate(degree: number): Cropper; + rotateTo(degree: number): Cropper; + scale(scaleX: number, scaleY?: number): Cropper; + scaleX(scaleX: number): Cropper; + scaleY(scaleY: number): Cropper; + setAspectRatio(aspectRatio: number): Cropper; + setCanvasData(data: Cropper.SetCanvasDataOptions): Cropper; + setCropBoxData(data: Cropper.SetCropBoxDataOptions): Cropper; + setData(data: Cropper.SetDataOptions): Cropper; + setDragMode(dragMode: Cropper.DragMode): Cropper; + zoom(ratio: number): Cropper; + zoomTo(ratio: number, pivot?: {x: number; y: number}): Cropper; + static noConflict(): Cropper; + static setDefaults(options: Cropper.Options): void; +} + +declare module 'cropperjs' { + export default Cropper; +} diff --git a/scripts/gcs/Desktop/website/package-lock.json b/scripts/gcs/Desktop/website/package-lock.json new file mode 100644 index 00000000..e10b6ef8 --- /dev/null +++ b/scripts/gcs/Desktop/website/package-lock.json @@ -0,0 +1,11 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "cropperjs": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.5.tgz", + "integrity": "sha512-aJF6GuGk0K+nxYpmK9ZEc0p8foHcrM3DAAK/1F66qe0h/b08hBNbjpZRM0JbPNHw452LCxzS8NndG5VMv+/hLA==" + } + } +} diff --git a/scripts/gcs/Desktop/website/upload.php b/scripts/gcs/Desktop/website/upload.php new file mode 100644 index 00000000..f6fba751 --- /dev/null +++ b/scripts/gcs/Desktop/website/upload.php @@ -0,0 +1,8 @@ +
+ + +
+ + +
+
+ It works! +
+
+

+ This is the default welcome page used to test the correct + operation of the Apache2 server after installation on Ubuntu systems. + It is based on the equivalent page on Debian, from which the Ubuntu Apache + packaging is derived. + If you can read this page, it means that the Apache HTTP server installed at + this site is working properly. You should replace this file (located at + /var/www/html/index.html) before continuing to operate your HTTP server. +

+ + +

+ If you are a normal user of this web site and don't know what this page is + about, this probably means that the site is currently unavailable due to + maintenance. + If the problem persists, please contact the site's administrator. +

+ +
+
+
+ Configuration Overview +
+
+

+ Ubuntu's Apache2 default configuration is different from the + upstream default configuration, and split into several files optimized for + interaction with Ubuntu tools. The configuration system is + fully documented in + /usr/share/doc/apache2/README.Debian.gz. Refer to this for the full + documentation. Documentation for the web server itself can be + found by accessing the manual if the apache2-doc + package was installed on this server. + +

+

+ The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows: +

+
+/etc/apache2/
+|-- apache2.conf
+|       `--  ports.conf
+|-- mods-enabled
+|       |-- *.load
+|       `-- *.conf
+|-- conf-enabled
+|       `-- *.conf
+|-- sites-enabled
+|       `-- *.conf
+          
+
    +
  • + apache2.conf is the main configuration + file. It puts the pieces together by including all remaining configuration + files when starting up the web server. +
  • + +
  • + ports.conf is always included from the + main configuration file. It is used to determine the listening ports for + incoming connections, and this file can be customized anytime. +
  • + +
  • + Configuration files in the mods-enabled/, + conf-enabled/ and sites-enabled/ directories contain + particular configuration snippets which manage modules, global configuration + fragments, or virtual host configurations, respectively. +
  • + +
  • + They are activated by symlinking available + configuration files from their respective + *-available/ counterparts. These should be managed + by using our helpers + + a2enmod, + a2dismod, + + + a2ensite, + a2dissite, + + and + + a2enconf, + a2disconf + . See their respective man pages for detailed information. +
  • + +
  • + The binary is called apache2. Due to the use of + environment variables, in the default configuration, apache2 needs to be + started/stopped with /etc/init.d/apache2 or apache2ctl. + Calling /usr/bin/apache2 directly will not work with the + default configuration. +
  • +
+
+ +
+
+ Document Roots +
+ +
+

+ By default, Ubuntu does not allow access through the web browser to + any file apart of those located in /var/www, + public_html + directories (when enabled) and /usr/share (for web + applications). If your site is using a web document root + located elsewhere (such as in /srv) you may need to whitelist your + document root directory in /etc/apache2/apache2.conf. +

+

+ The default Ubuntu document root is /var/www/html. You + can make your own virtual hosts under /var/www. This is different + to previous releases which provides better security out of the box. +

+
+ +
+
+ Reporting Problems +
+
+

+ Please use the ubuntu-bug tool to report bugs in the + Apache2 package with Ubuntu. However, check existing bug reports before reporting a new bug. +

+

+ Please report bugs specific to modules (such as PHP and others) + to respective packages, not to the web server itself. +

+
+ + + + +
+