From 70dc4888fd2a2b6be197c2dca4296bb55aa740bf Mon Sep 17 00:00:00 2001 From: Claudio Costa Date: Fri, 6 Sep 2024 13:44:32 -0600 Subject: [PATCH] Simplify thumbnail resizing logic to ensure target constraints are respected (#28012) Automatic Merge --- server/channels/app/file_test.go | 2 +- server/channels/app/imaging/preview.go | 25 +----- server/channels/app/imaging/preview_test.go | 77 ++++++++++++++++++ .../orientation_test_1_expected_thumb.jpeg | Bin 7975 -> 4131 bytes .../orientation_test_2_expected_thumb.jpeg | Bin 7979 -> 4119 bytes .../orientation_test_3_expected_thumb.jpeg | Bin 7953 -> 4119 bytes .../orientation_test_4_expected_thumb.jpeg | Bin 7959 -> 4123 bytes .../orientation_test_5_expected_thumb.jpeg | Bin 7964 -> 4128 bytes .../orientation_test_6_expected_thumb.jpeg | Bin 7974 -> 4129 bytes .../orientation_test_7_expected_thumb.jpeg | Bin 7964 -> 4121 bytes .../orientation_test_8_expected_thumb.jpeg | Bin 7966 -> 4118 bytes server/tests/test_expected_tiff_thumb.jpeg | Bin 3602 -> 3032 bytes 12 files changed, 82 insertions(+), 22 deletions(-) create mode 100644 server/channels/app/imaging/preview_test.go diff --git a/server/channels/app/file_test.go b/server/channels/app/file_test.go index fdda2d7ce06..e03ce417508 100644 --- a/server/channels/app/file_test.go +++ b/server/channels/app/file_test.go @@ -396,7 +396,7 @@ func TestGenerateThumbnailImage(t *testing.T) { // then outputImage, err := os.Stat(thumbnailPath) assert.NoError(t, err) - assert.Equal(t, int64(957), outputImage.Size()) + assert.Equal(t, int64(721), outputImage.Size()) }) } diff --git a/server/channels/app/imaging/preview.go b/server/channels/app/imaging/preview.go index 0159921c79a..fd61d06bcda 100644 --- a/server/channels/app/imaging/preview.go +++ b/server/channels/app/imaging/preview.go @@ -26,32 +26,15 @@ func GeneratePreview(img image.Image, width int) image.Image { // GenerateThumbnail generates the thumbnail for the given image. func GenerateThumbnail(img image.Image, targetWidth, targetHeight int) image.Image { - thumb := img width := img.Bounds().Dx() height := img.Bounds().Dy() - expectedRatio := float64(targetHeight) / float64(targetWidth) - // If both dimensions are over the target size, we scale down until one is not. - // If one dimension is over the target size, we scale down until both are not. - // If neither dimension is over the target size, we return the image as is. - if height > targetHeight || width > targetWidth { - ratio := float64(height) / float64(width) - if ratio < expectedRatio { - if height >= targetHeight { - thumb = imaging.Resize(img, 0, targetHeight, imaging.Lanczos) - } else { - thumb = imaging.Resize(img, targetWidth, 0, imaging.Lanczos) - } - } else { - if width >= targetWidth { - thumb = imaging.Resize(img, targetWidth, 0, imaging.Lanczos) - } else { - thumb = imaging.Resize(img, 0, targetHeight, imaging.Lanczos) - } - } + // We keep aspect ratio and ensure the output dimensions are never higher than the provided targets. + if width > height { + return imaging.Resize(img, targetWidth, 0, imaging.Lanczos) } - return thumb + return imaging.Resize(img, 0, targetHeight, imaging.Lanczos) } // GenerateMiniPreviewImage generates the mini preview for the given image. diff --git a/server/channels/app/imaging/preview_test.go b/server/channels/app/imaging/preview_test.go new file mode 100644 index 00000000000..68de50223ac --- /dev/null +++ b/server/channels/app/imaging/preview_test.go @@ -0,0 +1,77 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +package imaging + +import ( + "image" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestGenerateThumbnail(t *testing.T) { + tcs := []struct { + name string + inputImg image.Image + targetWidth int + targetHeight int + expectedWidth int + expectedHeight int + }{ + { + name: "empty image", + inputImg: image.NewRGBA(image.Rect(0, 0, 0, 0)), + targetWidth: 120, + targetHeight: 100, + }, + { + name: "both dimensions lower than targets", + inputImg: image.NewRGBA(image.Rect(0, 0, 100, 50)), + targetWidth: 120, + targetHeight: 100, + expectedWidth: 120, + expectedHeight: 60, + }, + { + name: "both dimensions equal to targets", + inputImg: image.NewRGBA(image.Rect(0, 0, 120, 100)), + targetWidth: 120, + targetHeight: 100, + expectedWidth: 120, + expectedHeight: 100, + }, + { + name: "both dimensions higher than targets", + inputImg: image.NewRGBA(image.Rect(0, 0, 1000, 500)), + targetWidth: 120, + targetHeight: 100, + expectedWidth: 120, + expectedHeight: 60, + }, + { + name: "width higher than target", + inputImg: image.NewRGBA(image.Rect(0, 0, 200, 100)), + targetWidth: 120, + targetHeight: 100, + expectedWidth: 120, + expectedHeight: 60, + }, + { + name: "height higher than target", + inputImg: image.NewRGBA(image.Rect(0, 0, 100, 200)), + targetWidth: 120, + targetHeight: 100, + expectedWidth: 50, + expectedHeight: 100, + }, + } + + for _, tc := range tcs { + t.Run(tc.name, func(t *testing.T) { + thumb := GenerateThumbnail(tc.inputImg, tc.targetWidth, tc.targetHeight) + require.Equal(t, tc.expectedWidth, thumb.Bounds().Dx(), "expectedWidth") + require.Equal(t, tc.expectedHeight, thumb.Bounds().Dy(), "expectedHeight") + }) + } +} diff --git a/server/tests/orientation_test_1_expected_thumb.jpeg b/server/tests/orientation_test_1_expected_thumb.jpeg index 787d02a9716e7228b37428b4934d0b82f3e76ac3..52e9656520b16321a400e74a4125835b4700b84c 100644 GIT binary patch delta 3584 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 G2mjeL`$moc delta 7459 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 diff --git a/server/tests/orientation_test_2_expected_thumb.jpeg b/server/tests/orientation_test_2_expected_thumb.jpeg index 480098e2f4000690a988d04b7608aac2aedc26fc..3ed1010dc91c0454e37547259ff334ef284a542b 100644 GIT binary patch delta 3572 zcmVS5(n2wEZRQI0vtUm`%B6M^1&U{(tlQ&(*Tu_c~wUMy{J>Bv_JL$>wk{R874;y$3a=yV%z+ z3_dB2*?had52TFeb0xI9F@ewr>)x>ST{iyi7}rg?hfk4T=XSD5vN6yDj2z(R zuJ_dl=_8qDK=F|x9*nJ!e-Td4v92N=AH|Cts{SHGQj#odZ>KC_Nm3QLC!ry+?cX({ z;d?D#Nzg3qH7!DIPWmMxOQ-86CmA>yz`)K1anhri^K#qg(0{&F%guk0xLu$qCA&~e znZpGefjA5K@$Xjm`x?t{InG!!9uF&?ohjSyePsNq$Uhow?53949y?Z%0*5Xvw+=}h zws{*3Uq z#NvG^Ab*zLDHc|@Q5lNq*;H=ZfF0E5JQIxduaT{n;Z)$IE5GkbPfoVG?XRj$?0a-^ z6{g%_9eX6c{XE^j;mn&a4`{bi2L9U6roXq9CXyJGDD#lx;1wxNH-OwSu6gr^`=P)6;!!l7H6M((g@PrAl>GG`;lJ{jF^}U%y?A=xuGR zbo(oNG+6CoXwo!JfkEI`H?DYQ!%B*I;f;%2T*-AHby*(PX7^Q1lx9E8--Q4ADwSNI- zVOU~ig$_{`DAW#f*)l6;+r^Sx&kTNCk@<%knZ_5ds2-JHLbbKMhDU30xmYgSi+I$J zrqvvOg=n1?$c!6HVm%Bi{uN?0ZSG}x;|4-OJu6QFvTftpJXj+EfWWPK0Q_W%?%2Z^ zk4?TYk@9W53cM0{7~pi{*wi=o_J3a@-D%gSB$V?nH-AdQX(L4&RyTj*4-oh7o@xd= zn6}ki_ECXf({ZA&f7Sm0nfP<4?QilwO}}8*5AYlvjF0`Vd%QbtJGYGF{cGBq`%^lg zMAkHBw-c2xv~A}F$@wxQ#_ruabnRXn{{RI2 z#z0gfZ6%5jy-I>UUD+DC-R`n{J%4{?t!OsU&1-QjwxxR+bV5k`Hh--gyYoRLW;hYqJ`Vbx3x3X7C`gXKjqOmE*Ik6<8fB|!A67aBi+{8x1^pJ}Jw z%jG?kjUo^N1`;%6oDaOAvDf9#V_0&umVfJZU4UKXGY>#Fa!AexJvN(n;tTm;)U3QmpljIzCkHx?c3Uj^$Tx?*zmJN7?tf6#(NHBB(*)&xRHny}pRX z$4=BPUgJ%-wz{==8gdjgu}8T^;6np|dCwWA7OFVONm|#@_kY>>t6yKZZ{3S_*G=~R zuVcH@S5jRYPa3(mZA>&`;Mx*mFP=)|1CPR}_|j?Mw6%CG+Uxg(JW;zWj5eRSw2pEI zT6EgQz2=jo-05?PEhW5$C3PGX4YZDV?T^Bt@y)W`+gL_mHw4abBa}xf{G<|u{dxAS zAvn$obluZeO@C{3-sV!jGrF@SwYOL!`FzZ_2@*)oLC5<<)YzpX2NYI>l3I`SnEwFY zt(wNQ{{WAe{{Y^tngIMeZ@k}ANml;=vhLlOt-G+v=^}Br<(A^0<-#o&bx1M(s*Ez4}eDD57SdZ~P%>9on{{V8M z{uTKdx7XU;lvCbIcj3ExL@l~`%!&erz%1Fo>x1rVooj7g=UW$ddcT9_wOvhq%Es6k zqqKA+D1Tz#>r0XbI3u2?71&SUe-2!=(VIlmrTbKVRO;61M5&zNhe9(@pNC!)Y1U@& z?vm21%W@prAtF^6R~&udI0vb;4~BjaT{=xXcxy-&G9gE{7HQ?Ol1T+|gUd1eO*Yrzhl8xH zWVpBR#*Ym0NgS^tS;iTjHQ5^zj;g#5K~kw}7TfnyR=$qiUv}@S>tuDTQ|07vj=Q^R zwSVdTcQ_4pZ-}dN1lGErgXLv~yvCA6R%sR3{H##m>=@24Fi8fwpA6}KB$5bk?|-qb zWtlCcKV=AGSwv(_DmafU7@qv&fsXsLd_M5K$NJp|O_1zp_dU9j6}N5~>(1u?0KSi{ zY}#7e=~fZjS-~7O@JF&MctBNE1BFr0SARqjrw2`It?u{PD_^%;ce&(Iq3oNNG@E_h z()26pT5M85X&hid95+$Qs~UhZ8#u?kKK}quhf-M9;@{3#oH}P5Fz9;J%*K7H$jAX# z&OsT^Pr|1e1E~C|B$Bc^ipye*GD9i!CYSp@KT}pY^&gdH>z*Xjyf+L|>Q{+r9DlE| z3o9MXjN^cNQvz6^*y!FgS zI-H)E%HaN$)%kx~0Q^#uP`b7|A-S3)Z<&=OAQS3wO*+N<{p;(N?aa)0JQ3HpsILD2 z*00i_AJl(3{*zIQ)uZv0-H*|q*nf6LUx1eQVn5<*dC>m=w6*X4bf4dE&c1&Ahri^4 z+y4OAR`dS=LR$Cg{0}$(0Fi}%@juM{TQC0rbfxHr`O<%VzdAhWKfd3cGK%sKK!2Sl z_uKQM&XfD?`O_$%2l>)}eZM+9*Z%u{bjm0K2V?!Buam#a#_ssYt6p@U-(_#ksz3aH zFZ-X=Rf=p#f1M}y+w-hn6k0*3+CZ0Z$8@VEh%?Yi{ChakCZ^zD^&rw7KEZO0CTX(w1)OoV*q>MHk2cg91%lHZuoyrS&pS%W#h< z4;rOCew1dB-Jb7#DGr|4m4i&U1AYYxoN3&x8{IA9>F8fm??=S!WHq z1M1OCHW^Tx$_=E&vDnGN)dQ(p>SucS%*G#ufu5_=D%OZiiB)YYaFqazC2p+zR2Te& z0{ilyQ0Ug!yMvB0Xa{+0N@T71+DnpKD>n5Y0XWtqp8xS8Y@$;5u^ZE0FJM2kE>K=x z2vh3AYqIZ!u&bynDX}{_J(&)L)fyXhQXxv7-L;;pKcM_oc*|lHI;BK;a^9%HUz~;f zBb_P0{(L;8mA&8D8z^1ij^MlZZoIv~Gw3fWGQYUKDz7@82 zO}mG5A&ePa0AH+Ns(7i;;z}+hLVR8&{G%#qXWdqflOzFXk+U{Z_j>`)K^CNWQwVhA zr6cEx3m!|gn&diit0_pN)2_?nQ*MmxZ!M$~0E0ML!vg}at)rR-Tjd2~mAAUsh}_O8 zS{)gbW`j}{^v|M~)F}swdrG%20<*U?eIGgSw=&r#UzQEO#HVCy=zg@5lxFj=DIt!$ z(Dq2$nD2*EN1NsshNf|%AMVx8P@VQ{Ys^BQ#ow1P>mzdCWu{nXz^8PoSWi(>y`ZXa zPHq>M=Luj^9#Q!@*AnUKz1ZfTy6h9hY0M>^23{=Z%i1+OuW#iLt&+Q`2e?P|BN2l& ziql%@Eb=bNd=-sR35FpXcbH-&`7!Jo0+GCox0gjqAuv!y`9A1G0IuSS)O{%?Y=4$xR_0?z~9pu9>(;ubI??WfAxfNVL!RADjO>$ z7^kgc=TM9^0R2bDkH>5;I`)9Ya4ad53MuJoyfvpadK%aM7*r! zRr9wz-wP_R)JLm-NqgkAM)iH0`e#w;!Jv<^5)GCr;g`JHOWcvUdVo$|=fmfV*K+Af z$xxq3E5kdMTnDM1X0>r{LOB$5J${Eq9IdavpV_Ylkb&RzWydPw(Ds>ywJ*&8^r_ki zJT$)flZeT1Moi#S(MhTFM&ziox8vB}nSD^R3fYGW$z=z>qLY@vh4t#`=_~%)VCc@2 z=bv0X_5&`eun&a#eg`a-KGmv?Qc$$mN0$u6fYo zwYouXbuemMv3c@At5kKfLzj}-Cnbxd4=N%plVGNI0IV_eFV9-xl4l)SRropiRvIP? zsv39$)sVn8)L&s{BRNaA*<`EBC*woaP)yx!W$n2JK_n zD+eJ{gA9BGfI_q}(rE!tZRBb*|990>{(62L@=7>~R_C8NKsn zYqnza{1hlK>*Hw-rAiW+*>dACG) z&}sSm?vbdTl(U)xMB2}Lub>{cz7!XYo6(p=@TzQkt1KjQlfH3nF5-|U5pFTrLrE~E zZpiNfP`ZSNbk5l@pTVAv0qHCT#rB6Jc~a&F`o3jxqvv&iVB7Y}KaSeKcw zTZ-JREr5%MewPC)`uX-Vr#*sQ4Y6Ix99Ui;&I*8?bbA9J-;=-CF_na`15x;&9>ou3J}6zOKr^`-A2n}R4OaeuI! zqbD(W?~swagpB1s?iwIVUI%CBb;5_8`M6(w4!PdRchB>izzv7(1aQOnzZ4GgnN7A|08nDzQNsCtfrx-?gt<~*Bb2Nj_|wCsjT`&Nwx6=nPKDL>INQkTWaLk#AVW5 zZD%*&25h|yv>UTk&f)w4p{}0(V)a7h0ZqL3T`1Wu{ia~>A*Y3@V*&tFpoy=R*7j~@9?A+ALdd(_7lkydo!YHI- z`eXC{07HerTRV=C|3LeLA8cTAj*B{L6%D$0d&H0}dzX({pe(|LjD@p`FW&wXLI$N9q&BSZmrsFLH^j9 zdxf0iRhaVHq2+t5f&{?sr^)#D?Bqu0J#a1P$x8ZBELmA?dPo-n_SgNscrA*nzeHx` z)~)?L6I&2$6CnU=-@uu0{8UxA-_)!L?%iSH{sa6h)q)Tb#kHemJUTFV) zFw^(lu$`Z8v}rJrTL$>-c(1R6Dpy@*>hP)=RjVw%dOnZOvU7$UK%meZc;f;N-(s*+ zyrlwpy4_GQoign)O+5Gowu1aTI zmj?J1-i+htm@+E@kcM|UT$J~xNbG>+r|wY=<1jU{T%AUgqcP@CFa~zlSf~1p`?7Vz z)FTP3o(7SgL>4o<Emzu1FN$%gBTZZLgFR#p;d(GvL<-e#6+)c+rOZg_Ps+{hgpAASW9C}SA> zV^KU4_C-M(wmwDJZ&n+n@ZM6`U~-?7y&G z=)<$?qnBPZj=|#IB5E4bwr!L8tvI+`Rs;o#9wgFALJxj3@XYQklVJA7#H!;u^-#ap zAi{|5$IcldbpbOCuECOht>xdYOmRbvRt3=4{?&-aNH||X`i<2j4qlcx*EY@hQU?OS z7{I-BO>wD}<{zEGw@2Om78MQhuhp@?>LdDAy|N$gs+?Uw%6mEp-<@wh4y?d$KRw>S zc)Nv0871#I4;oHVZ@BqfAI0Bccr!mn-yG~<$5+mJ^Tw^RcLM6SLRweIaSmCyTWH!O zlZP*&cK*)aZqXepM5Nuv&i>rhh!ctZ>?GO4;O0=2w+x2E5uAu5ez|9$Djj0n?*zsy zzNFFeq4Uv4iKW*>x2W&w;MRK*_O{&fKR@1$YahP+_%7ak zCFPQOO#%mwi46I<#!!N42>*9UTZZqa63!o3;`e+4DBUE)LY5$rPi$h21C=|}KJ9;r z7M30Fh+s%X)|AJ@c7&oTDIC66HnG|D^T2p2HKx4%@sG!*J*FzdX{@-E+FgJ0>Uq=? zfXY2RJa?EHN%2?m!ryw*SS8PK3-c*TgdsS?*TB7@A%zxwmJU0g{`R&BpXF888 z=&4JFQN-a@7rD~pT3LK2WA>wM9H}-R7pvn8ec0#FEo5)<1HE+(SE?>ez5;GSb`4*f z|LT%i{=74^m;?peA>l+t%%5JOVIDt3<4HxUBVep+a)E8?#V#T`0jUJQ;jpmJ&Db@pY(WJX=zbnfkqeQ%jw5-KTcv zN>j?}%K8317!3U5LxYR$kU#h-M;9e>`W}geFdm;WT|KbECM{$CYrFgDk;Bcz$Maf2 z1R!?Sx&`!)~aCUnYA$!e>>3NDNlg^ zD1QsNs4zx2Vva6Up7nY&<%?-oi2SV7GGera&u$u-SxZ#r+Ke291fbDWn;agSZem4 z*v^wq;wMW)%`pzq=G$HsyD|Gim*xnqk2O2KCCBNDoQs zepNwL9{LYu3_W`hs+Xsa*v*MwwceZJjNvtT8lcjM`-&K|O?S2DIIzu?tgXr$ASJE- zk7dzmmdHIpN_#TLLQQi@t<2~uNsR!w{=-GdF#?Fgn#(`UB>~DRlr#o*u0Agh-;E>O zeir9f6I0LDq-9#h%4>tEx~}dWuAxQ>!A-tq`$Q`B=<(Btg8HP{@Ys~AlF-8&6Q=v) z5;AKUx$KzAN>2yR5rLhSK`MX4Oy!h%vnz?=ex=PkC}uY?=%P5)&X>Iw^Ff`u7c)hw zqZmoY(|XFlYuoOMm`0VPR}HV3Z)w_f4_*Iz?*Y$nmAs4HV=x3eC@*a!-~Oj^cgLz; z=_b9urtnoETlMstOPewY_?+Zq7Y1`LI`T%_5QU#E_des+5XpG@hhRjAjd%8r`MsFZ z-yft}UR%V(IQ9+k%t!n}SU5{(I6)A_jUiz>#a!)ml0C2P{15MlBi0^!_Gv+>CThkP zsmMx2NALb{8Wc*NU4D96?$P>=RFK;?{~m+%^=ks)S25`b`9H}B305d+_L+`;(}>}k zF1_D=Hw3QBr|upPrv@vW%ZjSDB+6NFX~(3O;rP3G1VHTndPi9k7XtAAy2}h~{P{x+ z0YLqao2-9)6~lc+06>nw0<3t=6ZUEQ7rb^>!spceod8inM&I#Ve0R;2bcK(F%1^|& z=$v)CULOnX*p@h_Y#8LVK@e+8^>}Th&4lR-ar@Eo?q`Q?Dy5pJmb)Y~bd?_lI_K}y zW8g_-#H#Y|ctkeU>A8Em-9n!(=V8z{Ynq2KYLQK@OB=gu2r$|3M--M7v7EN_J~T-> zahB?srZ+(2`Wv3%iebc2tm@%e()568L*pg6W;ufZ=$w zd8}!BK#BfWchZ=kOl;>DRuYn1xs!>@&ma2SRKK%ziVC7La_UjhZpoV1q-B3iYW05W z^SjGS7T@T&C|a{uUAEl z%@qwLNjrjFPwRF?%DwlWcRaBh)w$F|jjv*yy7SELEgcl)uIJ71h*RuR(&8;%nicp& zw_b#ymkei|N$kC*=2^e&@}Zoys1io24?6w=%=dx?iNM>moMI$hdvsTj@c`Chb?o!I z9p!(f7eq1WkBK@e{t>|meNQXAD}ukQ+?S_N1eUWYBTFKyo{C9wO1`jc_``WF3gsGt z8>BE-alOf}NSnF4Hzb1>IY zrNhUw1L;_~Em+t0i)yQHw&OYvI9 zMbBniKP$eAiEeArxi8o@$F;`cIU13fm>7`lka_FY99X39O@phgv$9B6{ zL#rx{%} zJaPoa<=(-FHA~AGIZ4a9zegAjI0|2IqUw@3Qn8wd)|Dowo5#x%Z8Q@bLG0sKZEe2K@*i(Dp3$^IfnS4X|1JN+$NHk?-BayUISU6OXi%n#gMk7`_! z)~`s`(J$n&n%K2^-NU1I-ww}=n=rV-jP+WEDT>r6{-7tJqhrRo{DVIuy$^wW001nA zVEp>x)Jf_@qIsst(-|}yR+KSjI<<$cS-k$Ti4&3oOOa7}# z0EQtGx-$znRYPB9ru$7@+{tD!1YpMRJc!HTk^^^xf~Jc$Yuq z53tCPU~wGZ;XVkdCMi4o;#WDkEkC+_fw32kZb-g@ybYW2Lgs!2nfiN@jIQMN?^Tv~ z+oSIy=*(5Qi~S?!S(1O$Qb%hqCt3cYm2sl$=EALmop}$H3hg+ae?Gl<>!!l?W^gU` zW#5yG_G)b?&^Ehh!Ki;+WjM_>%`>58;nX~!8E~3bj#7UvE2}Ou*`yTc=LFvkxFJwt z{X9S1LY`K_A)deF*)s6?zct1t8g!YbSM^H)64s!124)F)et+W7968t#a? zXb0dsm>)aGL|X-&mIV#O;|<0(mHK(6bVj;`Vw^p)_hy3T(cxu8cF4GDUV~O04r*p0 z0jlsf5{s9UQ4TIeG1Wx*vi3DlC@udSJgR^7ZQ|Y62W?yK3yhP*cdZMu7O4`f6R6Ij za`fA8%T!0PL~7MTEA^_|wiM~g#KGEyuYfox!5Wbi@i4cpWbETVa)XxoKRW*#qzkO` zXN5g`265u$4+diE?RlQjD?!sIm4yt6*&IUL5OJX#Q~#)5Fe;at)D=r+^n2O$qYeH% zpQ3VXURvwG+$b^shOT65**0Z+&@B;@l zJri@VO}4@3aNCLiAj;Pzz%U+3BV%pnZ~~yLfJ%{GE?XEru=#_Ye&841ACDT`g7CoQ zg1CZ`^zkFv6G2*_t?K`lfdB9MGGM;&ptRC5>p=Ju*3eCI;l}g=rVuRYnruliZgbe^ zqsDvoF66i-PvE%!HTw^X`DnjB&E8gd^$1;SgU1zK%7c5P<#K?PPhPuMu4o!YWwX-U z|9!hSGTG){%zEhcs9rSAU7jR*@EthQO8~GA$k4Oz8kk@nALkBC%dPRO8Ff1=mCScz oV&i*`zcr@fT6L;uPks@Ax%dOfvQjAl_>Q_@+SIa7U?TkaUpqiJ!~g&Q diff --git a/server/tests/orientation_test_3_expected_thumb.jpeg b/server/tests/orientation_test_3_expected_thumb.jpeg index aada2f26aa83dcb96a64806a927a4c3e1784b002..22f00c0f9797fad6a53f30978cd231073c145a0e 100644 GIT binary patch delta 3572 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 diff --git a/server/tests/orientation_test_4_expected_thumb.jpeg b/server/tests/orientation_test_4_expected_thumb.jpeg index 1367c9eaa7ea3ebe5aaaa06a3c205bb3a19cbc93..1523bca93bc3b48caa53bbd7455e0f7130a3da19 100644 GIT binary patch delta 3576 zcmVS5wh1wEZRQI0vy7Kmyl>#EU9I-e9Je>R2(4x-ke$lIv$1At(yyx5G>OCvNKVq#T zNbyI&6ANkPEi?Om?&99oNzAPQSyiL`<^f`-A2tSkE8Jz$HCNPTniHWcLD<8((6qaW zZdtR}?)3CNynYp&D`qv<_kW+}eyx`O0J+lt017p9+bJT%lHN}GkM2tu5Zh zxp-mmOm@rV-S~YZXFHiKrP+)QfIlZ8yY$DsHcOuq`D$a-yglZ5Wr%2H!yU(w`_2Y7 z`tzFcB{;|8c0Dwk*y^`?8aI0y;Wev&8eVA+9iNDFi!DUW4%dPZ0Dn+PbtS`tyXEbi z2Ehb^J5|27E1$GPa1Kaujym_Om3nSYH{0$l(`qVR{_<_!#+f$vjD%wwV}{$DR5R+< zHla+{mhlE)s$NwYC!ielH7DCG{{ZK_UH<@#cI)|8zS0X@qAbQVg$Ug?K2W4!edFG% zMXFnF+;uBwOmq?;{C{(rn*1wUtg!_w&X{xnlh3bu!_{=#`?zCWHs&2ZMSQ!pl1-70 zfE-}w2Q_!Ts7Fa0%Q6Ryi4gQy#g0{f5h5u`7B#oimN2BL3fz;> zkl6O`n$hsRman8}7Iu1;p*E*|5|Jg-j$f0EoDAS#X9GCtQGd+&xoz|4Un=G1zsTG! z&=eBgfJ~Xg0K0)W3;FTyR`>fF%WpZ(STi0EE1sPx+wOg2{Hn-58ep=XTXcBsT0~V0 zTv=}FNaeH0DPWqm8|59N1erO3~B)GPx#eGnlwekQ9A*G3~Ucm$vNk(Rboje z7zeQFU(?ZyuYY^~2jQ}6);~-?U>Ea0XZYBKQrf-g!i)j)uR+*XqFnfXDZEcK>#X=| z&;HXAM;lrvo{P@pCw^K@{mAXpCcNkV3H|>7CixHjg|C0~C9hJ}*GJVg`)E&yg`Cmq zB1X54)mB$3G35z1~QhIzV zbf4XS_y%Hla@tG9xQkfuqTehsCg|-`aJet?H{aucK^V?+S@#|j(WQzw;MMd$vPPmO z5yZ?*u6JA^A&v=h4tkGKT|R?x;oT-!pp#jS?&1}hq&G19>_ZnU%)=vS^*slrM-Ps^ z9Z4KcCx6nC32ma0Wova2n690bM(wx(-A;4CIL})78rTdfoD`*Z{pm^R*4KTt^+~;t zZjK_f+l(Wxl3#wFZr||cO_zssOQ{2YZD>MoV zbUXVCSC(x`Ju=$b<4QYC#Br-fv=sZQvM$%?Gr`7dcf;N+@Xot=6_%M1GThpm{iea< z0ykp2pK^_*wzmy}aaOQY6-7Q;dbXaM>wk2Ty|1O-n!QSt>Z)mb_gnV0wCR5Rb~mB5 zwz1Rft?bcbwTYuh(K-bOfn46V;hPO6Dd&bZEpc-t)PdDy`Po2hZ&QFkAC+}eM3BP- zajK#$h!s>|0iJ+XZ;Ar7yb8gXJMG%BtLG!33<$x-Gw)wV2&ly?THU`x$!_lFD}QCE z3o{DC6D%llh_ObXbDqhOTQ=S-lID10^5l=qByMK_FJDkSD!zqlYkLfi*5h)pUAGqT zsa`v6QOEdJiP3C`!L+s`(89mrRwG8<=2xCDWF!;PwD2n?-aV7Wf-o2i3fG_y#z?O1 zj8Ta6+w&P8Cfm@Xf=>e+4xD=$hJXJ4%j8?FI`rg{o^9su$E9Jkk)n;M8^7@fhw||CH#MhEt z-{~{nNpKbmcZwk-5)KFl87y0pPkR1+&a}*{ukSz1{eLZY!BYPK3NJ@_t6k0#J!e9> zg`_BASXi?z;u(L|AD9k0brr>GP2-rZwENvV#QqVB!>b+A-Md>cED2?^2v;k$Sg2x1 z0I9$`zFw{GybXOk@H^;_Jb#SPN`+$%OMHYLGtP1N*AejV$KMA$Lu|Hw4~I{h$sTJ0 zmbzS#Lm7>?Nf``^01R`CW1cI-c6v)=)Y)Bc_k@|lOA8@VKB1D=~ryYU75w)&Nqi1aJXHD;Jd zscKWrgLlXaf=Fa+u0X-uPXuyG-wuzJJFb`JCDeB)yMK5lASyo3z0jx!7{L`n4;Fkd zu+{DKMm9Qjp>p>cZN0VCtH9Hcp{0sF$~OWS90SgH%{aAD#(zpm*1nIv&$Cv(zj069 zi+0yd_WrM9yVF-vT^mmtxwmahG-BY|5@Ii&O5_8N!l?MtY2dWAcrDuN_k=uAyDW@0 zpSiS-atB&;+Qq%*lce0~bBQe_yoM!p92E_;j(P2m!lCiavfbNQMqoDt&Tu1?M=JcJ z5`_JE_N^f}&VLGY-P2c1Yjxh{Qol30vn92*SR?s-%(e*<$j(8>`$W{(r6UIvR)msT zkMx-T0N$;d#{gZkB06x-mC+_-n zuj)Q%_df}7eUH*#_$TlDo8&+C7QO!f(3ZW?+gfc&c7MK#_M&n=VE%HhPaSc)72$ud zBE7%t`3PnCzqM~ZT#xT9d&~G|Mwb0<-$t}ILQgl(FsAM2oy7IdYx&3+^GKmg?>hD_4c)86!((d_-@|O3vQlsB7mW=3pQ{%;QN~ATGv;(*2Uf4ui*J@ zS5sfIv46G(Xzd*d3K+Ng(&T}T2lyDrY!h(2UeA z@aMvfGR)o`(ppuSZbP-A5+zZEamU^RfO}WZRHy9{SGV53Bh}{jWd^i%^;UP$+sey_!xt7G zY=P||x7x(SV{C>E(TOR8$>FiV0CWT4r-TnoWqE&MT~!#t8lE6E+4VVUDyk+C@HtHAUXDvq&jzjY;R=$|qAUZ2-Mnux1i1NXS@6I?F@4Gj{?+e_2tU2cHy49 z?r;0(`qs^*t-h6E9krYh!*2w8BDaJERew-8RUHL%K`L-`*1F#BeUi2Nb+>z-MH(K- zxpPUk-Q6!jzNMzcBo>jz1QEk^9ICOX10l1Fd(-dq__ZaCZf*SKiNmIG!w!e7Ow4E6 ztc3t7`N$(apM^{^2i_l*B$8G~QCVzJhDc>Tgwp>2XUFPl&pxB_tj%-8nsxWNi5PBWNeBe`oKsG*e*XY^`sKTGD|9>& z*SM%|zt$)FwFv&B`PcN9EMB%h8h=gL{Tcm-WM%jXZ-yiOCbyjr`%7N`0Ov{l_WbMT z@7R0(NG-qpg>OIfC9i(3!83pP7+3!Q6a3HBa{mDLN?wS6ohSF(^P|p_`|bJDD6b&& z2l>)}eZM+9=|8^Toid65f1M}y+w-H&ll$%Y(LUBeyHtecf)P~aS6BQ>vC+UNXx$Nu;9 yq%$MKx)z%bv27%JeXMdLZbw)Y6(gYs92)d5HU9v<-<@$<7yN|b`qyVbAOG1#MMTB` delta 7443 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 D8KOp} delta 7448 zcmY+IWmJ@J)b(#fMG--fZb@kn7-|3kX#weOkdlr;!W%IFDd`Typ&N!8Vvugh(E%B0 z0qKTe=JENz>;3S2y3V!N*`Ll@d;QifV9SyJ6i@63AZioah`_`11~Ae$RCsFr!-)pe zfenU?t|EIOeWMRz*I^^j6T~5i%-6GQI(ZRMUHh(>XSb@9oCL32vQ#@|`M}55Hmsjd z@bt}il?va+g_h{(;&a)nY=uh+Pql^!S&oMS>tWtk&k2_%7{q;D? z?9~oIM$Q$X1u+z^ti9E$p|kS?bplDoujsL$O%k{IRpC?Jt!E_mu?C@V{Kl0l6w&9? zU!@HwP}$f24G0r6Y(X~FcOZ~?6FnxPiZV#0m21=}&eARt5~lkmp@^d^SL`oxaeVWLsUx~j8)0!2LZ4&1lhIf9phHnS{}k4dZjQOj>#jOhi!DHrzLNT zI37@PTf<((q7t6jhtsHLXl5JI?fL3n4>s^vX%6i9UZE9V&bXRM^;ebChxM`ID%oZjX|GUjhvQz0R&1HSCwN?X| z?@+E`RMUsC!u4ifv!5AsA8gca%HZ=~T%;_hWDR?hU|26px2||0U#fmgTjnOoh)qTG zT=88GDGcFj&=ib_h$lDA!|7iY{YdCgFppnaBnx`8Os>wD?*qW3c8`kKEg;Q7(amuV zp+~9%y}EBV%udqpuFYSSsgr>g1i)wI1K9)C{=D;X&H9rVn_U7R1K=E{j-|geHogxC z5;T^~h+1o0;Fvez%q^C!-HmInH{qHtN@FYTF%M)vUpA`aQ@ox-yh`S)8|wFQxDhd0 zH-LGT&aUd6%vm8x&DKQx{hk7Y;TwA+%0Ef9zdglT-(Hv;HI#NCj|m{q1RCrMxe6+r zb7=336qN1@Zzn)$3}?+HBcB1GGp!?gQT z{UcdJK#CX<`Vf4%H$aDJ{~}3RrEziKzKuQO9!VTl=!yKmTHiBjYb>~WLV?{+9<0t@ zk`akFGIq7vs7%W{0{tff>Mj%9xk`B*HhRxb@g~@d=}QH(sVSpc$gYoI$stFgQ&jlS zz~1qj1DzAWs_!LfVOSHWpCa8tj&**X6_^iL%2MApLQedDJ) zxve`$vEe&&nVg+M6FauODa)%bOIUS82S?Nv<8$2w9xFs4j*~}B$Sw+jMN`P63^fn^ z@wl~nEZYAJtZIn)r3WQ0XPj+&nnuT&Ce6iJFS|`~D72f>7%B@QBxWi_* zNs1-)kLnI!N&kt8-YXj(G}_-iEF~TUmGvohryR0R!fQpX!<0p0u5>dO%Mc)I|tB*@na#u4lhvo`BgvCLPoIXkRtG~-Gf8Ck5?aXt+-plYxgvp)O zp{{%60nw8VtZu-y}K3Z^u zskJQmQ}>xSf5qgHyA8s{{O($IxhVngcpKtBQlDO*Lh_UT)5AC-Cc816;1$x{()ba( zpnmeNNA>!th`QPDpxfz;8Gn7EUU&QE+>9_@s|j1XbMs_g_FVhnh?}TIqDe4ZUtdjy6t@+3zE@{gslSYb&Jv z`?PPwJ86bJxXX(rmM!=zLSg`7kNI09B(f&eaJS71wtbd2<*pwBn`ngvUVtj}eL)+E z`C~1}e6q$!C%8pRLub|`dO(uaq~0Q#p=tPAEeUX-8ybv;SB`mN(Z>V;sOY?bgEVpL z73t94iE7(`@RCR~t$%lr>ZdDqBLKG=;*4eK-bq5dF@@c$bKBQUvlKa0f9eOOJrC*? zjOhNVED%`hdY>~}@oxDLh)Tqt_;f+z+l=wq)rv2ZyqasmkvEBia41wb(J+hHAAY`u zQuN#RD*mIcM!EF7Q-Lp{Kj>>5%;leGvpmf|93=p|$=bU2x;bMQewjDKP0*-tUfp!- zKY7>r7jIOXNRh~cI|MIRCRQ{E02GTqmnd`<)1`mW=NHfC2H-$LMC04R4;n|q8xwiY zog%b9@0sl2ig#AluNJ4M&Q-H-rDi{yUW!eu4?_XuQeMembw$`Px_@q@FJCOtc{`90yax`P= z9RKW6%_i;SE}yITX`>eWk+L-<`<-UbG3m>e{to_+?fbJ$1#U9W%zOJIzchBFvd4YS zvOh?(Z8qxSNRoyIj=9(GGwpzT%<{JS$Hv!k_V_VD*Jl(I46%w;I4!{wkhLUUc)+zvMk1N320g#e$P{!LUkI_ zwKZwHUuLHq0*B;6-uT(Mz7qT_mYu;#R!pSMJ0^YJXB58NAudtc79^e$24QBfSc5&M z{-M?YZXe92trM>a6eb_MSt!$5vbpxB*7~QVbrb=ZWYJ*H(6nskWNveejkqawR2hxu zJo6pa``$nRn$*_ZSq0O+iOf^B1$1GaNcA%vUvRd2V@RjZmWm;@2xN4nz~^+L)g*3yHm2o>;`Zlg zJoFz|T`-@N3Y^l4m@RO{Mtjj%jCzBbZ<0t<90r$JmQs0?s7!XVEq=9!Y+jmO^~(iI zwJx_=#zt&a6-nvc+7iob~k`R9q>#A}`QR3`1 z+MX})H`NC*oZD!|&zdU7_>Q-zN^R7{^-C>RY5S+MGUDVsO64jN-FQj=j8=i!Xap}& z6KUK*8e6?xKX6Y(k!{9{JTz=?J^ILlN3Q`fgKO6^!S|@YkI|g4T!!tEg`^sIah-ZF zMfl#TU|~pgF)C&_JUwbntDO)II0_33klB!#<_(clk%gDX{Yq}%T}QXd-ci`DeJnSg zWbjujW4Vg}sEkStFmsW=H0BZ$B%efJF`+JtJNt-*_YvyVsF6Rn+b;RnDuV^B^wMyc<4# z1q<%qfA;v9p(=Iupe;4ra8RI`^>M!P_#a=zC3E~-LLiI#%R|zddb%H} z@?p&aa^Up-5BskZ&W*{&@wdgx`JHdX`p$I;ZC~w~Qxk8swqm(J4DJtcVvP3m_O5-i z1y_bD?0VAL{jquSPhiBY3w-J%Y7+WrvX4C_A(Q&_hI}S!)a=0Is(LKpKj*cze0%`` zXg794g!kykG0kKFIG-4ej|*IJ62p%QU0+<2)-zkisNM;UWUTWU{1a@D)+g01f<8K- zAH4dOJYJh{ZX)T$BuLJvowlU zKE;0*O#n0$9vIQ;PS3P`7xY{a6l!uDqvaU3Dmd*Ym0s)UBLETpRa*&B$(c{jwi?du8j`?=z>`D@|=CzQ?h-Zh5D*;n#$U_45P2k zU()oAHv)~Cz{sYkfe8omPSotS|Rl{!z~J4B!4>XZN8 z^*ia1j@UA3debIZsp!WB3`>Nwm?udK++LQC{P-uJJZ8&EMningbXTaG`-fxlus$-} zEBmJ}NV;~EKpPZk+>GE|oHMCO-d(V8D;2kOz7CcG&MbL-our-0$4b59@zCs+MX$SC zN$2`>xSl$)DiT%eS0q{MZEDMMLX&;ip7Gzq<+=Jps{&s_vgu}*=0+AXEpy&6c6b!? za00s2o$`pKId|kco4e+}=63wZ5;rv?T@)U951%GjOR>UjgQ}N=V~?~=x=(^(-NV~P zLLgkZQD7?{yP`xte-B zz(t%5h46I-oqR~`GF@Ef>|)gMn$hAH&dNL zQ>COhBy{nVAhX8OwZtGNS{20P`{iNrO`i5vr=_22>K}7f7T+vi_pjhm>HGR(bq6!w zxV3=K3S@FC?bBNgox={-Sp}TuRKJmjx-LALI3EA&!7eqHc-`c-2Xkr&ED17qX_OgiWVIz<7X<|S!0^rjB)r{HUIYR4R1WfcivFw8-wDQfk;<&Uv zzk@b9)S^roZawdk|KsB+nNY(|N3G1ZoY2ZO{u`=;^h`(ch{z?c=!HighkINLgZND@ zjdLbq%&G)qDlzq~Vtoa;InBs9FelaSdycV>Zvacjc51pH@)vf;xH0WeNUV5p82LKH zt;zWK5*H8a&S$0VWuetJFg^3A{FA;F#vSh;r}@)*6(*qO0@(6beDwAfiIn3Le6WoD zpjx>!e&@`&n^IfhZM3UDl94A|h({Fp`F_+M`SQDY_3LN@hb1htZq?jv&|jKzOj|^o zk5RvrxqmlG`|^~A%l^g_)Lk@BEWZs?s1|ZB6*1|O?&GF<;F2fZ@VRrCl(bfv{kP{l zvEL^dqnWHYXbpH~2C;tKEmeK{(oGcz=n74eNq z%Xi4!DM^Cf*vP7P?!)p;ur+}w=%9P)X1ZTk@$P+PKdu(?*y2?vYX*5CNqlD4x_HmN z5F)^@+(PIL%;Ur*1~Wfo2p^_c?0c=R`|M(^$v@_FM!Z~WP_U@()sh(lW>ItSJ_na6 z%QD=9P6vWCJ~}u)$BkHNdPx1m{$sM=rQmF7~^2I?Q~gmL%r+pqm(i+$?o zF=F7-r|TE%w@?Kd5Q#iO!M}uy`|lo;Ty54H{bQT|h9|61eOlh{9*?d?U>^@aj+bLW z^D5K4byjmu0$_?Y(6E{IF;-g?+@wCG_+OIz{~%eu!+ORI>PF>TP+V2pi1xA`@c!%2 zJpToo`l+w*Ii11(Vx)49m!r5=!?Y)8JUQfaz?B*WkUSJk-a@j*Ii0~w_xjRZ-HTjX zN8i;ZJr#vdztjmKdmYh$Qwwt_cBLFIL3zHMDKv>yURz0jUhEZ0Nzo`~2~Ur1yYE+N z!AV1!6`Nt`JedbENQ_;*Dc!G7`TB-aNPb1`gR|xC39C^L?j}3x9yRxV!Ec{I5>6OL zGshvVxkN&R*P-Z`+XbAQNHl&%qalLENFb->u zPF?{qCgtmw9C)2LTqmHI!Egp#KjmGeG1`!`>(XKZpSly9mGMq1OBP-B+OGHyKAf`(BPr zdv4{Sw)@E-wPRCr)NQiFA*{^6Eo;T=wkzS}(luvUL0S9V21$O&fm)SGV6w`$*v*+z zr8^5n=Z;9N+AYdZwY_;0^lYSIRC^4&L<~jE)xy? z#jI!HzFPN1KpNb4a^6xXm+j+{tc7#xOtjv&l0jBUy?&C(wy9oLI_O2E^%b?(2+A?c2|g}ma?3bgP^$9TSpyKrt()A9KQ zOTzwC7eilDu}gVnzjKuv&G0LaBAcF*Q_824ZJL42OzCkb<{%O}_SRgAo>nj_$-zN1 zd5}$=o-}n}U~AjjWD&OKSxTN+ZF9zLi^zMk;&2=McuOnuF*-woTPZuI2R z3b>B0a5cY~{Uz*k!{wuw`0rgS_l17-kde!$7#dwwDmZ&;$-6I{Zg|F2?t&bXmW`>W z8yoA`Ju&EgeEGjZv!)%3k2Gp?yNES0)-CQ!f6AF%NvC!>p8hsnnr_7|cxU}1a#7Z- zBH7psEaY>V-f>dw=QF+Mif7xKHpk6Q4mf^L7pqgRVI-laXWR4s*Z6!Npt@TC0DuEA zT+j?cnWRfBo^P9s$)NsI&ie07s2R+0be;?s*dPF#6qhqE3hHC~=?w;(At7o69|7KxNcJV0*Fm~NbrTp;&XN=6~RbOUtdoLokHFjv=MwPD2WXzmd;8>wdyU^3!*jRCAE+EnZ>i@#maNq zB&z1j;-?n3aNz!Zo>ggin_Ur6RIjr0@?D4CI&F_ioIuNmA=#Oa4?-O>Wu1OM@;W*n=C>K1vKE|<35Z% z`hheNdTwpL&obYV#C1#cvM`+`FGY)c@C=>lfnU`)!Mdjc3y!*Vszo9dMkatr;@C~m z)x?E%FPB1>ay?DR);vOT^pzXZ|KMl&p0+Wi&!8ns8ffc*(u+yzMWq0kSiml995P;aj=cDaqLqo{8%JrG3|%ne_Cc) zrD|H+wW&^D3IQ9ixd23pBP!`5RbF%P&Hss>~_%V+Xc_IrOK1Ff0eRKrf~?_zy;WiX zk%=^_bc^EK>xWJIf+=VS+PKLr>6OzqeWoHxN;Z5wYrgBWK+9m?bKJDG1_b4A#yKW> z&n=meIG}9R%yWXO^=`yp`XNgowfAJbA^T?F!8hSkwSyw^nJeZ;syf@O@hS}!nH8aW zCAH00D;(po%4`-cAD;U&2{Q-BGF+hXw^w1D%KdND*Z*2|ZXrV5WYItJ_jJ9^^9aE9 zFadBk8S^1C^c`v|!&2Z=zyz;HXl5Nem@Gef8QM{JP`G_?kuX%QXY-NuYuan9a0#yD zKfP@F`HlRh;Y|fT`TrHm5L86Y|E(tcCswKeX8*_kgyuhU8Gkf)du%~-+I&0=rPOp> zvZ>zMbXgP^fu2avI!AMWuYLM-4N%4ZSbO|x(THTht5Og!$4}&6eoNSW#a8XP2w(>0uMmq;0mPc`_Vo&ilO9X1|=73*NBLEMq8d!Vv;~R(!x?i&( z_PBFqF(F!fmP0QRtMWrUzs0u&UPFM5&iKDzA^~8~R=YCly#1X3XciiV6Mp^=NL42R diff --git a/server/tests/orientation_test_6_expected_thumb.jpeg b/server/tests/orientation_test_6_expected_thumb.jpeg index 2aa6b6727b39da1c8d9137f573db27a025324aa4..4af5241aaf3344565bf143f9b90529878b9c1e35 100644 GIT binary patch delta 3582 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 VIVza?`vquxLw;IHtxArc`yXl!MjrqG diff --git a/server/tests/orientation_test_7_expected_thumb.jpeg b/server/tests/orientation_test_7_expected_thumb.jpeg index 453402e8c3db30995bf2fe0872deebce14ed582f..00f63dc42b7e0f3d579bba238fbc4de483f993fa 100644 GIT binary patch delta 3574 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 delta 7448 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 Pocs`iDw$w|5T^eRIJ6?6 diff --git a/server/tests/orientation_test_8_expected_thumb.jpeg b/server/tests/orientation_test_8_expected_thumb.jpeg index 78f156c416b82cd681df27bca83a912e32b5cc2c..a583d0b334e64e415998fe330db329176e6dc158 100644 GIT binary patch delta 3571 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 delta 7450 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 La`uNWxXJ$q97ht` diff --git a/server/tests/test_expected_tiff_thumb.jpeg b/server/tests/test_expected_tiff_thumb.jpeg index 36d4ab758b02c77b00de6b134b6f9c50ca9703e6..313f483b0a5b5a99696e5e992b9725a546aae97a 100644 GIT binary patch delta 2466 zcmZXUX*8RO8pmH^Ym8D$EhVW*m6j;AjxAbMTc@ZREhU|?bSjOdB{D@`7q@DSrDa4- zP?Vw>wM~r*Vwozn4OPoDv6Na9OZt*++;i`jd+&$em*+X>|D5wX=lSPqPO4^S!GeIG z`kX#7kg{bEIxwJeH7J(|`>U;`M+7uEbs@zs596pu_!hx;pUH)psVzKqFTG&kv}lj0 zcD#o?+^$2!%?&-!=BOs`UYLk-DJRaoPP1@c(2JOkshSb{|E4`q zP)iS^9U=`H+hyW4AZj0Y#j)L1;}D^u3bhzpC`Ew%d0cXm0Bk(vt_W)LxVNDgt>z4l z+k9P=jn$1SK-ajmqQBLbL)pp*^*`1$=z1iXI4ur#-JO$&mU_2>D|Yb6*=)jxvI{fY z{8EY{PuVmm+QTp=XS1Z7ffc?Vhc-`Je>}IjX1TE&AHQ)J0{IptD2HJ9t(vlIbModu z-)eveUUI2ZMEPF948fYoc!FVAC=!M9#B{Ng7*Nnoeh z(h<^RyPO0^r@4%}cS>9MNQ`GPCjykO6LrBZO5eliGZs8+mj=rILPybzqlW6;=T=Wn z&A)bH4r%-dD)3F7LFtV970nH0p+^qY(eT*2&d+uw5Hgm>6J;d4v8kkE)L!i2IPVfa zQ(WZp&pzK7HH7+88>d^cDr8vmHrVR0sZATjKsxl!>2O#afK_uB7Xf#mc0%jfoNaXZ zrI8M*L+Xhy+qN~F?eILrxKOf#FA3UX8sv&!r>rfqyN-EC$g=7zGhd&@4^#i706QxX zPY74#1-P+gJBJ~6hN=`s3rdvwaYN}v5iYkbQpnS+C9#U22vUbFsLw$O;TADf{-jBS zxu2l(W>&wxx2*&+II{rJQ#f>xw^uh?PPi39_~BZEqKj^>i>=Ept&Gn6#Y;ftc0dA^_6A z)p;ydpC%UvULC9JzU%L7>VKmIX)TGypW3y&j?x{zXzlYkVOjqZ8PemDrD}KxXvO7` z>Pw#1%moo3TQ}pdXN=4QB9Ux2a^}4_N9fo+7TT3L^qgoF-H`cYkBx4wCQq}>I*ytxpsOC z8H3fQE{4)&R@S66+-!|}Uw}#rXDG30^RPeDcZI7o>FWIM=(P`rL_lAIJ@Va8m~S>r zu+13uWpb)f+8$@I|gd1ic%9J4~KP@y-0F zSK)x5g_es6lb;MdGv$xA`IhzjG#=S!6;J<=5X{M-BuOvE znvVGgbWQE|e$szy{qw|+VaFplV1LHh+S-485~}Wci9DlF1Td)>By-|ou?T>3=X}tO zH~PR({1CnHQ-*xiP!lOd*hR0`7Elbr+nnZbMR=z^t6K5do>H_FH9Wgl`3EsV2;847 z-Cq)MmekxaLDRE0B|A?`w-hAy>2W5X=1+ZBYMM;&(s;HViEUKbBOh#& zAe`yG2*_#!<82)AB`xU=jf4R8+2k=M?{o)->AfFmFRAQlFRAP6s|VZ46T)+N=I$(c zEhmnjV-va*x0W3`r!zMN$c5&`jte~QFPMbVbu_afv+_#i9ZozZ@Lj5ThG zca>^xZF~}Z;^K-e`Mk`6f=s6h^p+PO>_+GcK+0}@aU70YmPHt)ho5-7PC{3|7>%3vWh3Uxx;j0Mq_iK%|uuH8I(dqBE*4OTo zopsaZ!hYSj3~1&`l3oiL*k1=}YwJJQ_{`OZSMeR%lKXgN2(8m6k*1y&9OwHsNwisP zflh)ggNuiB19^6QO|}R~TvylqWfXfrM8r%m^xl|959|AWWu z)Hx83ZW=J2@f&#X&DW0|P}ORu&oL9NH7IESG&GOpE3UE%x?_tn-MaE-_;%yLI#afG z#%4*z8~DjgDtGWvtWQ6};NYM~9Cjomd=2l;2tc(A^}mhLDNl|qe`qfP+A~S7N9>Uq z<{*}R2}$udXce<%R SR#lb&*ZY5z{&$EGefS$8gVEdo delta 3040 zcma);X*|?h1IPc?DP&Z1BW4mIl%<#wMhipsx)P}=`;sP+k!Aj*Qkb!oZk9$NDq~-= zTw{#5l|m(qWyVt1-i#*x%=XNEKF^Ei^LgGpFTUrzJ?H#>=X=iZZ`taZB&ir6rY5UL z0!-Bdo@HiQ6u1}kOAgp71MdIBP1uqN&nX7G>d)2+YgyR!!EUDB`(lPvk`=cjNQzh9 zEK|TPB9$cCSjl&{Td+j{JwtIkY(n>|A$LFGOW^tUb0;IJir&um)TZYQd(xnCl=cai z$n+%W%ORWy95p3;hP5N(fxQbtYsByQuO)9mtR7JO!p9 zOgOU5Qx`(_#?)Upy*`uXl(_OVr>tOXhj6x&gb(^eP$l$|<=f$-T~AclE;(gBnB>*J zo3@YFX!NdJy&m_g${BwytMHzOd$vP|WTL61-}Dw_2jaIuOWP@VsQ$w)=cLN3mERAa z8^D0NV_ZPdVYi~QFCPI_J&VUdk;Tvu{Z&++b$RWfeF;jb0V7&=vP4~gx{^_MZhhb(_R6IF9&0rtq?rx z++d%7_xy-$!gsqW$IC!R%3|JkM!rFSPXnsFO8R|zzMqJcT2E#FWwCUnO8=O&BwS@s z*bCM(@1jGPl0@7|o%g>tjP7_*>@@kj_5n!(-9^0R(Lo1dm27}jeZ6Oia{s}&Eppmf zcd{?}SH|{*CdYu{IrG{J<1Wn3d#2Zp=JYGhBu!9d!C)MT@ncDaa{@fWiEixMcFM_u zKyKaV7rJ?65=+3F2z9hK{C?md1AMnvRE9i+oh-cl9raaxo{{&0X3jAmcHsZdVMKb~l&P$|{l}X_5+ADA}6NE`qnCS&zxJGS4Zva86414ui;@ z4@5vG%J14^rx$eaV(pW%YX*qeOVl-cfw7cI{v=s(PPmo5{PwZdKK~I0!85Ip%yB&3=>6N+F z=qguG0bd+v&l_lL8Q@1u$z*GwqIY_A7i~W9IBsc7G8v>@x42^l)#340f-h^HXB;9U zEs2J8z27D|My!jWa zhD89hH+=%PSQ^+Y0z4_9@**HhLRc@cNNzxNl#761>a7iCvh`Th=twXAtmnyqZQpg6 z2#_F&;fOh|AjmGO`hYL|K80B`*SxDv=5h~~ zX~C})_p3f$Et%eK$!2yXSWBpT^TW$R&%)AQ*W^Pu z1D>{FU1NhQtuJz=-nV`kcus&vh77cdhI*`$#JFcT7Tb|OF#Eng%lx8 zY>Yy@*BR;&n44|vwUJSFw~^62EdA*d>VysQ9+mBm-ib~V0b!tO<;v=YP2;D_(tih& zRDz_03_&AD;8x-DQtnRMDC8Z*KS~YZlsDJEL~99B=(d$|19{^dX2A*Pe?#1 z5dL_DuIVBALLkpA9`*Hrwi1KrW%xadBw5;7FHOD_027yKBB?{UKCS8==&H(C=mpxE|YO7vO7MrA6>q2`9V|N9G9n?~j~HKF2@Bb|LG$qJ*s8 z>ht(Sc@(u~KJN%(3>^o@QO5d5^zBSNVJj{64Aq&tw!zyU6n{Uc(%GVeLB;r-9ZHO1epCAkH?7s84r%7h0!8S@Q1&9M8(3{ z=(mWQ2C5;$0^lCOH_;jPGLKT|JXr{HW()3X65Ah#XtZpf zKQ58892T4EG?geBfz8CSe|IJI$De{e1hK~TS*|59N3`$aPdv;PI^FC*2)$oo7AG!M zy#lX-qf{rzq$Csp%CT*^o+3c0Qi*QXrEM8&nssYAR<&l$Z;=q#0ib3KKRZMiyf@4+ ztTn-B+ZlfBnyJwhODQ`x#|CLDZnu>sLTD_Y@D(L@B%cZ+dIw4!J*#(aA9{6Q8c8HD zlM-bJc#x(g+~W8g0^gvw<5+r(;w?z0z@5EY&F99zxI_78gu{7)ZAFr)djCejNF6eA zfYMk3Kf1-z%Zb?yN=5D?Hxx%JT^-SN16Bj9R?)}|B+IUqXTf*-!q=h{zgPGFP&O}f z?a|kg%p9XDB0wHKc?t6zEV5XEGyGPA*gZ=qmU(}}pm{8@CM4?5Kxx@H)qCBTH887M zO7rj~*l`H}c}rz59tD+7_1(7CPQ$XJ|GZfgS}ysRg8lX|vM^io-Cxwj>OC!R60>fI z2nOMHw5Lo7j5|rah7FF_yg#nPIJP<#(=XLc*EIU_`eCzGon*+Mz1S~&OIa6Irm|#S zvhl^_+-(>7Am!W9NZ~@#(#5ssAV@nyki~W);`)?Asz|=g10{jT^njEFERpL5Tc}E< zvMR`%xM^OBX{FGkF4T$TJzo1Og63CVYq8H@wfRxvYnB)90#U*uOQ8r&DB)?Zobl%X zQ>J}NolmAYIBIrAI2fN~3mh3QiN^abchwzK&lLx_?C|3vk!Q^Z6^5w6;C)6=GFLm8 zKmDDFU3zzpam(^;{#=2cP)FbD8dXvR1of#A1`zw5)Kaz*9sU$X6CPa*k^ z4GbMC8$7Y2KOD4ul2O7aEv?rox83>HYPcXfF55Mh`79OC`!8smrlfc)4wByF4ZqKg zv%+JVcjkWF(9{l}y%uY{NSBT_W8=HAkoMh-mwi@Zofs)w-(Ggyg7i82x)JMN2*wl( zSmJk502hlysqL}|kp2Pvn%s;P_g^@k<-i|39QeBmV;UCJbl*