From 0a5c35b9221dd9ad49c3f190f8e432b1a8131165 Mon Sep 17 00:00:00 2001 From: David Wells Date: Mon, 21 Apr 2025 14:38:13 -0400 Subject: [PATCH] Fix the pictures of oriented faces. --- doc/doxygen/custom.css | 13 ++ doc/doxygen/headers/reordering.h | 69 +++++- doc/doxygen/headers/simplex.h | 13 +- doc/doxygen/images/quadrilateral-0.svg | 260 ++++++++++++++++++++++ doc/doxygen/images/quadrilateral-1.svg | 260 ++++++++++++++++++++++ doc/doxygen/images/quadrilateral-2.svg | 260 ++++++++++++++++++++++ doc/doxygen/images/quadrilateral-3.svg | 260 ++++++++++++++++++++++ doc/doxygen/images/quadrilateral-4.svg | 261 +++++++++++++++++++++++ doc/doxygen/images/quadrilateral-5.svg | 261 +++++++++++++++++++++++ doc/doxygen/images/quadrilateral-6.svg | 261 +++++++++++++++++++++++ doc/doxygen/images/quadrilateral-7.svg | 261 +++++++++++++++++++++++ doc/doxygen/images/reference_cells_1.png | Bin 25503 -> 0 bytes doc/doxygen/images/triangle-0.svg | 115 ++++++++++ doc/doxygen/images/triangle-1.svg | 217 +++++++++++++++++++ doc/doxygen/images/triangle-2.svg | 217 +++++++++++++++++++ doc/doxygen/images/triangle-3.svg | 218 +++++++++++++++++++ doc/doxygen/images/triangle-4.svg | 218 +++++++++++++++++++ doc/doxygen/images/triangle-5.svg | 218 +++++++++++++++++++ 18 files changed, 3366 insertions(+), 16 deletions(-) create mode 100644 doc/doxygen/images/quadrilateral-0.svg create mode 100644 doc/doxygen/images/quadrilateral-1.svg create mode 100644 doc/doxygen/images/quadrilateral-2.svg create mode 100644 doc/doxygen/images/quadrilateral-3.svg create mode 100644 doc/doxygen/images/quadrilateral-4.svg create mode 100644 doc/doxygen/images/quadrilateral-5.svg create mode 100644 doc/doxygen/images/quadrilateral-6.svg create mode 100644 doc/doxygen/images/quadrilateral-7.svg delete mode 100644 doc/doxygen/images/reference_cells_1.png create mode 100644 doc/doxygen/images/triangle-0.svg create mode 100644 doc/doxygen/images/triangle-1.svg create mode 100644 doc/doxygen/images/triangle-2.svg create mode 100644 doc/doxygen/images/triangle-3.svg create mode 100644 doc/doxygen/images/triangle-4.svg create mode 100644 doc/doxygen/images/triangle-5.svg diff --git a/doc/doxygen/custom.css b/doc/doxygen/custom.css index f0679877e5..bf630e8493 100644 --- a/doc/doxygen/custom.css +++ b/doc/doxygen/custom.css @@ -78,6 +78,19 @@ div.image img[src="fe_enriched_h-refinement.png"] { width:500px; } +/* + * environment for aligning pictures in four columns. + */ +.fourcolumn { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-column-gap: 25px; + grid-row-gap: 25px; + margin-left: auto; + margin-right: auto; + margin-bottom: 25px; +} + /* * environment for aligning pictures in three columns. */ diff --git a/doc/doxygen/headers/reordering.h b/doc/doxygen/headers/reordering.h index 64eb888ac3..97be0a700f 100644 --- a/doc/doxygen/headers/reordering.h +++ b/doc/doxygen/headers/reordering.h @@ -119,14 +119,14 @@ * For a quadrilateral, these values correspond to * - *orientation* : `true` is the default orientation and `false` means * vertices 1 and 2 are swapped. - * - *rotation* : all vertices are rotated by 90 degrees clockwise. - * - *flip* : all vertices are rotated by 180 degrees clockwise. + * - *rotation* : all vertices are rotated by 90 degrees counterclockwise. + * - *flip* : all vertices are rotated by 180 degrees counterclockwise. * * For a triangle, these values correspond to * - *orientation* : `true` is the default orientation and `false` means * vertices 1 and 2 are swapped. - * - *rotation* : all vertices are rotated by 120 degrees clockwise. - * - *flip* : all vertices are rotated by 240 degrees clockwise. + * - *rotation* : all vertices are rotated by 120 degrees counterclockwise. + * - *flip* : all vertices are rotated by 240 degrees counterclockwise. * * Here, 'clockwise' is relative to the vector defined by the cross product of * two lines adjacent to the zeroth vertex in their standard orientation (which, @@ -158,6 +158,67 @@ * transform the cell-local vertices so that they match the first cell's * vertex ordering: i.e., the inverse orientation. * + *

Orientations as Permutations of Vertices

+ * As discussed above, TriaAccessor::combined_face_orientation() returns a value + * less than ReferenceCell::n_face_orientations() which describes how the + * bounding object (i.e., a face) should be rotated to match the cell-local + * definition of that object. The encoding of triangles is + * + *
+ *
+ *
+ * @image html triangle-0.svg + * @image html triangle-1.svg + *
+ *
+ *
+ *
+ * @image html triangle-2.svg + * @image html triangle-3.svg + *
+ *
+ *
+ *
+ * @image html triangle-4.svg + * @image html triangle-5.svg + *
+ *
+ *
+ * + * Similarly, quadrilaterals are encoded as + * + *
+ *
+ *
+ * @image html quadrilateral-0.svg + * @image html quadrilateral-1.svg + *
+ *
+ *
+ *
+ * @image html quadrilateral-2.svg + * @image html quadrilateral-3.svg + *
+ *
+ *
+ *
+ * @image html quadrilateral-4.svg + * @image html quadrilateral-5.svg + *
+ *
+ *
+ *
+ * @image html quadrilateral-6.svg + * @image html quadrilateral-7.svg + *
+ *
+ *
+ * + * The numbers on each edge are the line numbers with the two bounding vertices + * as subscripts: e.g., $0_0^1$ is the first line of a triangle and when it + * appears as $0_1^0$ then the line is in the reversed orientation (i.e., + * numbers::reverse_line_orientation). + * *

Orientation of Quadrilateral Meshes

* * Purely quadrilateral meshes are a special case, since deal.II will (with the diff --git a/doc/doxygen/headers/simplex.h b/doc/doxygen/headers/simplex.h index e1c4283087..179d23d93e 100644 --- a/doc/doxygen/headers/simplex.h +++ b/doc/doxygen/headers/simplex.h @@ -65,10 +65,8 @@ * * @section simplex_reference_cells Reference cells * - * In 2D, we provide triangles and quadrilaterals with the following possible - * orientations in 3D: + * In 2D, we provide triangles and quadrilaterals: * - *
*
*
* @image html reference_cells_0.png @@ -77,15 +75,6 @@ * 2D: triangle and quadrilateral *
*
- *
- *
- * @image html reference_cells_1.png - *
- *
- * Possible orientations of triangles and quadrilaterals in 3D - *
- *
- *
* * In 3D, tetrahedra, pyramids, wedges, and hexahedra are available: * diff --git a/doc/doxygen/images/quadrilateral-0.svg b/doc/doxygen/images/quadrilateral-0.svg new file mode 100644 index 0000000000..c4cec7b5de --- /dev/null +++ b/doc/doxygen/images/quadrilateral-0.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 0 + 1 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + 1 + 1 + 3 + + + + + + + + + + + + + + + + + + + + 0 + 0 + 2 + + + + + + + + + + + + + + + + + + + + 3 + 2 + 3 + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + 0 + + + + + + + + + diff --git a/doc/doxygen/images/quadrilateral-1.svg b/doc/doxygen/images/quadrilateral-1.svg new file mode 100644 index 0000000000..6d98fcd257 --- /dev/null +++ b/doc/doxygen/images/quadrilateral-1.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 2 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + 3 + 2 + 3 + + + + + + + + + + + + + + + + + + + + 2 + 0 + 1 + + + + + + + + + + + + + + + + + + + + 1 + 1 + 3 + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + 1 + + + + + + + + + diff --git a/doc/doxygen/images/quadrilateral-2.svg b/doc/doxygen/images/quadrilateral-2.svg new file mode 100644 index 0000000000..43c4ec5ce0 --- /dev/null +++ b/doc/doxygen/images/quadrilateral-2.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 2 + 0 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + 2 + 0 + 1 + + + + + + + + + + + + + + + + + + + + 3 + 2 + 3 + + + + + + + + + + + + + + + + + + + + 1 + 3 + 1 + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 2 + + + + + + + + + diff --git a/doc/doxygen/images/quadrilateral-3.svg b/doc/doxygen/images/quadrilateral-3.svg new file mode 100644 index 0000000000..32f86530b5 --- /dev/null +++ b/doc/doxygen/images/quadrilateral-3.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + 2 + 3 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 3 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + 1 + 3 + 1 + + + + + + + + + + + + + + + + + + + + 0 + 2 + 0 + + + + + + + + + + + + + + + + + + + + 2 + 0 + 1 + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 3 + + + + + + + + + diff --git a/doc/doxygen/images/quadrilateral-4.svg b/doc/doxygen/images/quadrilateral-4.svg new file mode 100644 index 0000000000..b068442b02 --- /dev/null +++ b/doc/doxygen/images/quadrilateral-4.svg @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + 3 + 2 + + + + + + + + + + + + + 3 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + 0 + 2 + 0 + + + + + + + + + + + + + + + + + + + + 1 + 3 + 1 + + + + + + + + + + + + + + + + + + + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 4 + + + + + + + + + diff --git a/doc/doxygen/images/quadrilateral-5.svg b/doc/doxygen/images/quadrilateral-5.svg new file mode 100644 index 0000000000..b1994a53aa --- /dev/null +++ b/doc/doxygen/images/quadrilateral-5.svg @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 3 + 1 + + + + + + + + + + + + + 3 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + 3 + 3 + 2 + + + + + + + + + + + + + + + + + + + + 0 + 2 + 0 + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 5 + + + + + + + + + diff --git a/doc/doxygen/images/quadrilateral-6.svg b/doc/doxygen/images/quadrilateral-6.svg new file mode 100644 index 0000000000..3203914c0c --- /dev/null +++ b/doc/doxygen/images/quadrilateral-6.svg @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 3 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 3 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + 3 + 3 + 2 + + + + + + + + + + + + + + + + + + + + 2 + 1 + 0 + + + + + + + + + + + + + + + + + + + + 0 + 0 + 2 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 6 + + + + + + + + + diff --git a/doc/doxygen/images/quadrilateral-7.svg b/doc/doxygen/images/quadrilateral-7.svg new file mode 100644 index 0000000000..702de7788f --- /dev/null +++ b/doc/doxygen/images/quadrilateral-7.svg @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 1 + 0 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + 0 + 0 + 2 + + + + + + + + + + + + + + + + + + + + 1 + 1 + 3 + + + + + + + + + + + + + + + + + + + + 3 + 3 + 2 + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 7 + + + + + + + + + diff --git a/doc/doxygen/images/reference_cells_1.png b/doc/doxygen/images/reference_cells_1.png deleted file mode 100644 index db5c43bba27a03cac656836fbd0f96660609a593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25503 zcmd3ORaBL0)Gm^XMnD?rMmnTJK)O35r9?mwk?uyMkrJd^T0o>*LMiD6l@gHnW;PjaGxtHr>+Q%;)Y>|*&&Sk%Gh+}NVRk-eF^F>X_W8A)P zd~3O*|Btmz>Y@Z0KKiJvo?7_P$f6K;$#f!`H92fEcvVk_2wDZfboZs64WQtPeB9A(1 zW;}EMNyHETl=5=lTT1-Zwwqe(M8ol)=FUzt)apL3QIHvg8Js!*N# zFt-O-cX;wFsgu7w&i;B?V#_|o#C4SwKpNkka=j`3r(b2ss@HIgCN1&Uef9hDwS&UH zzgHUk{*q&2pN2QDK3klOiTyTs<@K+O|De{Nt$y~8Vt~|G$KP`g??2A%e_B0fsAIfqkCPfah50-tI$`+8Wu?fuh(7>%O{Pa0=FbbgWR>#^USF0G#OQH+Re zsaD%Z6i=giu>_;Jo$EeaxNWmoDbLQ2iIS#%)27cjbSU~|2|8L)2aO``o_ zsW8BiC`{?RPulu}+4NIe9iMD3qkGnGn~{Hgnrsb!?&@jc9Lp2E>{q)WzFqS&cT4(! z!EeyfpkmQTA}67k^xpceaq*~Dph?C+B5X_{$r1)%UTosruP=}D+Tqd=Nw)fkQI+e zG``N*Arsjf|2{acQ&ThNC~qu|M1GnzVL$4A>!QS?{>ir%Cw}v~$3MEde$N&UY}nj6 z@EThr4=?LTwf%@oBm9kj{x1IJ8|xGQTGF5P&PT{O%FDgR6y46>VsTXJR^1Cs3MNy= zj*P}W*$YM-viV}wCo@9MO5ewc{vLlWE^O@8@Mzmufl{ql?=FpK@7}S*)^u6E zmebFZEY04n9f3znPDhRC9R2xfeEgl|D^#s}o~XYWt|; zBo`ZzN+S^0{C>MW^sPgT)$E%7Pk$=&ow6zX?pLmi4#cKo>N##BA55Pk(+i04H8ohBsh{EjQqKVVJz{2i8!#Yk{!Z~h@ z*A-lNITuQ`@rExG=g2>)8FLraN2aDV%q!2?7&I~e%yM@(z}oxvemt+AeZXd}E5??3 zGwj)b7RjfHiQQb>#>Nab;sYy%VGVqq@=Q5Kt@UmE1**>&+AMs(*(e2MO*h)+%!cdk zRg0)Qh|*qF%p+Y)i|bo(I#N3Qnc@MYE0R5xr_k_SbAek%u{gDyVGeC=#E7 zS_qxgFxdWBx26yhF@Gr^l;3a(Vo?-`*HEpS_KB-Me_7Z2>rsb~ItvYsM>aUA_TTziU)3e8e93_1Vjj4X8Q*OkSU*Fo<64z#oh-aLrplTX- zqIQbjSL~Er`sC@sF(y$(Ok&6W1$~2%c#T&UrN!-$e?)7?7p#2?P8?eY)t3t+zHgqh zuDCCBIHUJJ|LgQsNg*)x%X|4%(ob#2dcs)Exx;MO(qSA0YW!)z_?)X>f8y%I@>#kt zaTY##FpZvA`99t|T_4$u43WiVsU95H_=q5skNUg)m|OBOef>wdZ>-aX?!TQQ{0qmu zTVFAjFJ3yIRBv^ayUNo);-Tbr>sk9LKw3yedS0xAQx|m?E#4s8Rm5mrje`?APMTKW zTkR@l<=U~&U{8=7P3zY`t?$NYMIwXxVz*-`ELi<_-qa0s#wvcxea>*3I^0RN3r|!3 zDw(3Pgg~)T{yz2{n%tzwg#%HN$D@&0f*tN(zM#ZoK7E=e-lnbDx)?a-R~_zjnC;JY zN3c~v|A&TK|NiZyD2z38#i``%k}Uj?J|dQvT&P&dDZ&%W1fFVO^zQ4Ef z<71nwuh zx}_szsxDGx0-r6ATnRq{-JFuU`| ze?#M`(Q3UXuSAaYi!qh=ncSyjHG65oFAto0t%7abI;9Oz>AhS@I;1sfOn$k(Ma!=i zsmO`I>MZI?!_M3 z^~}&>;~D0RmT{$f=I`*^XDvRzoxvC#YNaIJ!Zn(>-#4D7yHWS#*{OoWo(1!m#H%f4 zypP=vQ#BMVC#Vv3tHY4G?%!(S{88DSx;P*=gWyY8E(-k=FLpPJ(oe>EFk5b59K#lk z4{uAm(?efYL5mGly-_m~$Ns@v%+eL_z3$!Z?2FiyfhJmfeiM6TKa&Rz&(s%tSWjtE zc$w!uc;MT<7+BFI5~J_>HM4n1*S30Da%)2EwmzmDD{p4ewg*=&icbD(MH3Y460Ox5 zwPTaSE>iC3zot;?R6*dFMPwnP>$!C9vZ?F)-U!^gF2&zbSD-(?-MF~KmI&5RvL z)Qr71|BB3}E_BDS$GI#%!K30*jcNEIidDT=u_y}niHH*eLhosyzE+TGMcjUKI2}i8C5CHQ^V{8EZ+Ci@C`CqJmk}ek z>P(6GBMP<-E2=&VuL@|2g5>T$6TLE5mp#?dbomFgDC_Z1^P&=2b122*RV(` z=uFy2_BqQv*hTYk31k)84K6ue`n*3n{P*uO|KYTUkBuzsW;fIS(0KJew%fNGllU`y z@B0!RPhVsNydKWeniwPD!%IVFrCS*O{aU{(!sRZ!D&Uzvy zbdXI5ydt1iN@Ps&MszZv%2>prAqR=d6Qa@)Ad=hTEy+UT6WhzvEn>;TJIREH5?z(7 z0}S{r$--$7g1V+=9W}RQw||lIaLOuraX+oi6ijEXm(*pEv#(G*i9iGv{VWPolch}K z>crf>EDk@6V-L4XKBn7jFLg7n{(&dYx>0g-`^>VLT0fS*m>!6$aJB+;cs;& zxJWt8+gj6m8A1`k_n-gJR8>_~SC9MfLHN?reZL}CE|}KM%`Go4Z!|~B#o5{U@#DfK zZ|T>n%qF!qgJV+HSs57=1O!OS-*s&~JWfvc=3moDsS||O)z$GyqI!6JAI)xU6@T*N ziTYxkpWDIGr^|r^h8HhhY;A1~84}XfyDYb%VBisxl6wC55;U=mp6iqN_AM6yqQ{EY z6Kx7@du=F%L+r)w%hTQT4<9}#GOkrA(Bd((u#9Dkd0w9Gahtd8E`Agi*u79j<<%}F zUWhGnFfcHv@(ZVpJUTkMXVTcy*SG!i=j{AE$2vc%43+px9%g1{ZtnNi{c((W*=YR(xIXh z;v_&gQP%%hTN7pkymyd5@+lx{GatFEqo5P`S3xp}fZ z#UUtohwV8f;x@nSaOCUP80!I-dmkKKcZY_C>g>kU--7TNlbA3qwO&UdlcjlK17bwvu9G@v)VLqxQ`v%^7vz`H9x z;6H#yyS2agae8{1FCEAFYBS9|jzSPi*k-Vzg45mo_tlke?639y*J^5Nh1zUeeTl9n z;g_UE9(C)_j`|0b;dd@BE}(FP1qJ01gEo9Y(zFSR1i~SB zhR0;W&Ze-Ij~_o)`0w?>d6Aenf>!}iSX2ZxYHVUMA+WcyB26Htpn$$s#Db>m>*x1p zca|aT^KIFwsVN>lZB44HdRX+((9qo6+{8q}6zp>B=NxNmYpt!Va`d<5wYtM`eJ+mK zWEEMj4ugfRxU8+$cfP%+q@*MzCSGWImakK+jvR#KF8<-Z%|Lvm$p=vp5t(ZP35(bd zPv^J3f5*7CAyY6n&&jXNJ-s~sNkmDRnUfQ+J5!^UDKwHLLNs;2Z{ez;G4?r)`}5`z zd}u*I0j#Tg0l`#N;h(*E&zTFxfY^*1PPa z2TyjsbrP@4{Mlc8aPl3wgNcoe4Sqf~HB~@OOhm*owyw68_^RF(dHuCsxqfede`b36 zpiM3FLV-~_i-jLHc1(3OPpGD^?-g_wsq+mY78aH`5`kPfF)^{wFP$M6?HAh|;gxZPbU4<2{m zvxg5KW|1kOHY z;JoyLj&oa<=VVx(?SK@kH!LE8A@otZzr@qIdMH2~YSCm%vVB69mCp3+>`%~)9=^Ui zk|RYkMYBFrTv}7}%+2j66qD$!gimUGeBk|<`zteMEzg4joM&qvf6bHU<>kdvMooYR zL_qJn)GFe!Jqi72va>U2LU3$t%?kR6s}ub7a+?Eh86G~Ya9Q9EL1$imJ_AWirl~pm zn@d}=qLvo#=?bGH7L9-3+W$4!j!>L%D&UjzF>-M^uXF_Q+l@N8rYaj4q!l?t=aGdc z4BEIgXMKE2T;>t^!DSh?@yorrhJfq8o;Eg&eNCOIV_UCEG2Uqo;90zrDzxcM&&YUt z|JfSMA9Mfn$Ii}Na=!b|`EYcMj7rr%=g!?4+MX(heR1&pJIo@wo?o)5rd)PpMKCDR zxXqV7dUC5qvGc3#Zf(7Q1!;KlO+8ywk3Gfh+lBNX^e7J2=hvVq>hBa$f=fCmqiW@e& z6~X{kN4b9rJBmd;Yv6?&TXf=}%}EL(Elb?X4SIY_ON+j~ex2>e(C{!PJNufwCBZ&) zC314|^I5wbDB6?VSt7xW8J@&UaW6jEA8?;J{ugX({u&{fnI!%hLGL;4V zBs~83@gofL2kwDXEM%MI@0f(V#J_PebTJ4(y)iS}e#w;q2ryq`{Sca#mzT(zQ_$Ui z-+zxuX{f1<3=LhZM$pjqK9pJfBJkA8ijay*-0NrqhPyf}3N(x_G~e@_R~liTsA*_; zy1C7L^7#`-Efz;3Rdq!TGpRtkbSP{pj8Q4}S4R*E;F;HVC5*MTYaOS`YOMS7!dn*> z7JQ+bMc~tLv9g}Q$8Nfba6T%fYwRNA_*R%ZXPO3WFNMPZ9Rnjr($5=^5G*7-7rCs; zG>h1f;9&I}$xpT;8Bk#I3JQ2+JRLJLO>M<&zV?oeEl#twnZhp6@VL!dCSfXdbp_{d zBlSP};A{r%qO|lUZ1fkqGtah$$$Qh{8PntAU15vdLP3{~ocZYKA}^1&)|bdbfP;;# zqORTsW5v>PwZ&sc^52;?TAFku4?jPp_{+lrr6gLpSW02_hYut23A9MVEu&*%GE>*` zg3Z#%*1vrDQc}Wt7EogdO)}uYgYK>6bH7~YwyUGhv9Ym-hpvf?5)u;M-kZOFxlbuO zbwm(YbirYkWKnW_ZW{wdBY{sgt5is$^R`uz>X|}-f1O4$ z1fTEm6(J`e=+aeBFAv%Sjs{tzpr)YS`rhaypvr7O#TwV!uk}QI{rWX>-RlL?bUf@G zK!m${d(`CQ>4}M5W*!~cmh5f-I3*<|u}L@sTi4Oc^Xu!6;X(a@_S}B976YxSsvO1o z>iFjbCJ{5>=t`qHg~4e9ZSA9zZ{`?iXd~(TEW*O1&bsb*+B=daNr9+wxj&-Ir1rKck4ZkBC{- z!sW;J@85=fgd$a$-QC@-Rj#(n-&c2y5L>*Dk0&@KkI#pwjOZ#8_8pX4T-PyWXm2iBT(FVngB7oGxsZB7>dg=A_Sk)#% zFz{_ZpPZa**2|fG+RWtPQv2hq`AE_4HCgLQqWB)_P-7Zj;}>-T8=+ zn7F55U}#9$$LCTZs=&d!Bk#0jEU2D8 zlt5k!s`;6RN1=o9=I?j$9+}C>$Lp`9y51nHog5rsG4jgGW26Mgf-H4yZHqE9Dc_)v zJ}_)_O8@v#OuR&oOPiB~g^|%|p(#O4ud%v1(C-$OoUNVR$EGIfF={$Ftx4|otF_(T z;cO-#a=-~3rxT%BRm-Rc4J<5}+S%EqtD;YY5zGGtLZz;*{>4kT5*~;=y_S{L8k8F# zLQdX>r}L*U2Y3tye*R*Bw+XYO+~HpixRz)VeJJS;_XPzOazYMm1opy(KU<`#hDLk1h~ zmOsaPdgNq!g7AB-0NRCTms=>2l9Jy17^l)iy(TLsE332zXK8*uip+UP8bL#Z@24dB za(ERN_lKoT2;56hv`{9U5_zj8VU!Xc9*&NV&cwvDGQ+5Zj)pcnH|O@9A312{wbZ}B z?eKe-SdE&U5!DAMFA9Uknm&G<|L^<23`$Pp38M3kPfj}RD2R=K3K$f;dWGvr|NH1j z^Qkev(~-TVO{UP(c%8> zLIy0m!v&`kVbfc1lS_CDe8VCSxAd%H2=%|*6Nc@9yb!S7_sXeRC6#lvUM?_OVq$7a z;@KLiewUqog<)s()mjYqB(2*(Je^Y%5FI^E!hgDdY;;ay7CyM-@X>#(H0gg-3zS(f z^6E$a>)iVi5}$xju#ucgj^HjgoxVwdHUWszX6&s*(+m121`A#p<|KJ}`LNJXQy}Ub z&nB^bR{>Md_#NM-l125jZo0J}%NrLJl@7=eem8}b91x!U7uplUM9ViB85z)6@F|6M z0XpJF+XSotfPlGE_hN4jWRZ-|k691500bPgT>?Zvs2@3gNo2pJtfZ<+1)9eB@9)p{ z=&`;@)QV|h_O#R@0_wF6+WZdXba}4?j9P%U3TT0Y6V2(p; zsftxR#fF*&`0(lZ&&0X1%lGa7G6WpP0pcXzKF4E6EH^chBKZjmB1zS@w1|p|QhW=D zpAicj0HML6p+0~$59pB={VF>_DSB>GbTrnFx2$Z0Gc6vlT>mIbZoX2@`0ek0i?k6S z$^PvV^80-cll+QWTd6Jr{`t0~x8c)%0mpO<`f-ojZ48$K8D^m@G{)D3DZuJFvSb-E^#! zl$33e2-FvhBzNxU>FR!2I0!Ds-r zVr*Uhk&8VukraW-s8qH$65*V@Jji^Izplco(C$IE&`N#EZqfj%&nP7)!wWDu~xGP-&piXccN4FV3u3`QanM92`J z$_#9}QBzZU7;AH-ag-9sVWA=i(?YjeVRj^Nu&~H&C5LMuHqh1W;fbB|ErOSpBud=9 zq(Ptsw31~qjAxCBl?T)biuWW@=ue#G1D+jmvC%x)LbNMn;B;fnoRfG21%-`$wO!aB&6U#+KW! zyCd+8a#pKOvL$>P-M^38+S&ry=HlYgH>IZK19?skSO~3%h!HORSe6J1{SBODk_YPh z9^?R!8?r?`TArBZeUOltXSrspt&e0C5gQWuie`SphmwB!GSP9N$0AO|T z;3y>mtHs2`lzkUpZx%sQWV$bcMEz3asDWf2p*1VT@%O-rz`xp~jLZK1pS0auzk-T$Di0UJI7Ho_=EBDm@Fw{P)M zLj&4imhXB|>QIurWX0nJ?N*o><^1eFb-QfpN%b{Q4>fy0DY6l7q z=9270y&_}u>(^<@g(rWttFHkFI4`%2MEk;Z04~kW%IeT(CuJi*0PZR)E6WvCOcW3J z*Q&})6w`|(*XI8>;|?1!mP`RCJf8IH>+9uZWfqu0jDy&uT&x6`%Ssv=0U+r<83ZN? z#BphMHa%v$$ievGLySIm3#AfgGZA4Bsf)df|%FOK?&on61# zB2+r?&9EW|z*Z^BPo11#zq?8hUDJ*OHJ_dqx_1wE%gf{WbKuzUz|i&!-4Ym;UTjY~ z02L>emx+SM33|oJoql70X^bo^5e+srHU*WH_dHYUKYUn*L5PZ7&G>Q*gZmaPlsaqx z7-j(ExYCGFZ|QySCN&8OiI9*G z$RC;^@av#pfjGLdR&y(E6(sR*<^hA7ZmeHNM$|Y-I8Mm{nE?$B4n{sC2cr05*HA@8 zB@Vh>Fth{k43bXBK|ee-s*)~}qlrUeOkzTpY!+3Q65%8Hv;ZEbDG89+t& zECGK0b#)sM9YAK=(HFkd)IC)g*}Z;XaGewIFX#?tFfFKU6T?32-D&3jm=`0%!(66K zfp_pkS2V!B06kd&K~6ydt8Ru%Z%}0lHAx@~yB@T*z6Kp9EICktNQ+DfWXlcS>xT?* zx1AwJ^9u<%e@V;@09~Zwn$xsN6PLdKH4T1mRPWk)+d;>(s_7(>%0mS~VQ&aK?Ow?e&SLHw|a{}nGK-J?=OAI%vQPD z`>;I82Hu9YQUY`*XmBChOW+4k$Z;9fq85FI60oQ&*K#*Ub$-E(Zmmin=j^->-EOY& z>CXQC(v^=8j276zu%v)r;b!}ACFoYM0WL$wbOVE`#7CR-Wi$yX>GzF|4tG7J1lZl+ zZM}dZgI$uh{1*>ZM%?d0Kuqi-v{Fzdl%v5q^F98N07@2UvfVr-jV@JgJbm#;pwgrR z9R(G{%g4vv%+u*Bs!VcPT5)ml{Ol|g$1`KDdWvA$w^9MndG^=W^M~(Kv>k%#M#}vN zu*OSo@3P_(iGY9NVq){3KdYpx3;5D;b02^q0n0%(ve(MZ$Hi4uUk@3qs-b$%Gg%K0 z4`btukdTm|pdfEqIe2pZ{%xS9Nz>XpMU^R0$ssm3Hf(HdL0s>YYObP;t;xwTcXO)+ zn~AR*H<*?+y0*Hyq^hc_v~+dOhxUiAu5Ol?XH`*AADB){OOFPhfTER=p6*~}73}yM z(M*IXJT^Q$JUCd>*cdLG@(vaRp6D0;Oh7_t^M2;j>+Sr)J=s%IfMue0Y8;f8>R^LouGVo|r)Cql8$h>MA-tFMPU2-Qe#W@lk322c(AW=)rl z((|@1XjAdO5>r#Re*8cX84Z!8TE2n3Cn_dZ{_dyD_SX`v{HwozAHJg4{P{B- zq_8H@6_%Ud?C-Z5N@j!4zY!3PS?U|WUokN@2HL(JE{hszT5q2a64G6qYKqPfuxX-~+9vX_;z>F6h39TKv&!bP?cdT3eE?>~l&fsLNmO)hex8z!n36K4`S`A)*kZkd4mb|0Nx)cqCrh+;bCx2i)GmYs z1fWPd$;>}_PYn%WNq+BobNCxJ6`ngX+4{_kAu!`~Rekf5nsYt4elR`A)|;B{gYx)& zEXUfJirNO`B@;tK)7F=_t;Ip`gbP`{xL3-)^8M`c^1azd5^G;vMA^yzW&y7M`GJ}8 zIIA+9smi>4skV#u>P(S^dai)w!E)bty4aL}k$lYpZ7{T>l+ zqU-lRJA9XrpylBq*mt(l83Oa-4L^Ua@2_4`SaN9Xz{R6uLZo20fOX`$1yVc_Q4)BJ zmd;d^!wrDoz#`~m0lPD>r&B@XMV&SpPaiZ5uOm77gya3i%)Ao#tUJ(QzJKp_Efo?CjL@;X{ zPIqUUPIF&h1h&}$#Fdurfaju-Em{bgl>=kt$5GXiU&9R5C~6aj8eD|)%MsM1908bO z_d2r6TBOsEr{0>P>*cHd1YsY{o6E6)fBc^Nrlq<=+14npaBuSnH(B*YLnFthk@STh za8!IPgFr(?1;K=qhez|ApmUtl(*|P&P&yd(bg13JGi$>?xg%0`6a-mL39HIcgFk~c z0@lh?N5}2W%?7wL5Jd7WJ}SBng2Qv87(&;DxDJFd?hq5V`kp7|JFqqt>$2nG~j2|Q3wtQuCZ3tEam}_SFB;><|d8ljVB-RkjQxRCbD-e zFOObV?8(ND9|IoEYKPhlB0?)08_AiO*kRDffcWKKuq3bihWY&WS3eCv!MAVUF8lsg zb98hB)2sM*c}W5tviB^I89?x(aQ7tKkA_Q?Iys>!i~F2%hDL%oBy6c)ZB&UDr}x~` zQ<#@GDjN3mjjaN-%<+a}8E)alKJ)VOvX;n&+OAnV?L+oR%E^(k?u!K<0JJ?^N}=c5 zlbBOKhx`a&*SWNvqc93v63gnFw-;PN31&)4 zgRNe_VG;;Aj2A#C0bp0JRGEnMJT?NM2;UqWyp0tGM$M1$LTtx@#F0>1#LUDz*rHG{ znEy?V1VvPAHOC(z&?Gv7QH#?ANX}M)aYx3)`21Q6(`AQ=G4Y1iTJyncfp?ns;nM*_ zfV~N50es`fr;Y+NOb<|d_Tj5HTJlX`L|IuB77L!2#iPiN^4S3Rz;PueCf3#0cV1|! zf#+C~5LX!-Wf4r<=&~&7cX135lmPWMHFafpvMq)2g zU0GQrcU9HdihJiOCizd#5K?V+op z#_^v6T)?dQ<|dS*r-ydiR073ON=jz~RfmDeV+O|$+W7nXn+N9~>oW<12Xu&u5)bS|MoKYGy*sbU@ZN}+)!ToCYa$^aIQ-1r4)H-M=3gRrO2t=r zK$ZD>aq@X^@aMPp%i*|`FvDJavfY6Kp2b@$;c;22CO?hI*Ml{>*dw#tv-xyyz77-@&gcJ zUw^-tsHnby!H49;i$IZ5;6u=8Qc_cw+Wanme9Z@VqnM1xP3FsY>0*HhuKadWdMX@lQJO8{9G2-ci9Fup=={Wdq(0(?pK z-653izoXCGkn0mx%hXpuK+?w#HV;(f-b@Wc>!D))#_C+l1Vms^f}U`>F_;8W0?@=))ia~?{1`4IEDTgpONu0JF- zc-=M>akJ*NFjvT61h_S~mXsit3PDP=IdP1fUzroucts=S-y40WSUr0ip4K>-7m`nb zF$k?1Z^ga-?3+O6qI6VSIHD+8?YF0Yjw$fwhc*}04$@Ujv^a_c76Mo&-A$%*r1ri}Juk)5OC z+{zQF1`3`_c<>5wROj$mAOr$2Lrb+XJVSibcK=ThfPl?%1v)gyJBPp`gU1BzEUO`< z$p)1F@S36!6w!3m=|YvX_iY#KY-|oQ)s~v1&bUiVgM7C@Kn<4oBZT%8 zlUktEEMkG7??6J}&K-}n9!$`J;9E7^kDVQY5Ok<@PQbSSSpS8P4ZxG_?d=w?-?j;g zlNF(ic!8DP^a-ru;#6^aQ>)+>=b^6INMfdR z78mYbOks6o2z=J3F{Vodo2S9PXW>I)aoGn%^(u1TlZ@04Jzddq9;1)GNLy&mj)tlhvjW^tOUP zek6=4px(Dpd7Wmeq505-+GjXBI9#LkLE2KWa9k^2LBjhOL06z<>y%;<3kn2`I8h*- zU0t%em(|~>I(*VNjX*Z91@;e{02=BOW1^7zH^Cd22}z71kP!kgq`*t9B5GwC(anR? z4W183vHQ#IG}c#;qz0K7iq$gK@@-Y`Eppg;;H7{(K(-EW8ypvewW^jbc1$_SkJ#vF z$K^H&*&o2D46U7JjBowE8MeSapfil+NcB_Lx)c0f=|o9n1WhK4SJL;ax}m`X;ym?j zsU(rSeY6Y=4Bg}7d>kCu*1!O^?n-!D;PTrhIW&B738n>byEU3kNk|yX3z>c)Vc~Bj zk8lQ>{4N`ll9Cbz(`W{Cokxf2(53_ zT*;S*9fO0VaAAda{Kztj3@VK`cXwk6un>q2GL=H@k@U2{XB{vVoc?>UMuQhOG%`|I zRfUfIp}u2_-pS!s780I~l~pZdI&Pfg|IxsKqI}5;!#;cqK~$iAu{D~klM@r&WWYoq z0M=07a*Y!Eb89P{VEpS>2Q>Bf_h7g+n^vWxM<`6*u(510hEO+m_lI#*3Q9CHR3)iVKX52d+sn$Uho&ctD138L+_8Cm)x&dL{Rkhn(~YCC)_MWHG&K zsU(FI#&!pkbf{*5P{L0kBn?CaaN{AIuX1iQ06h$Gos*PgZEugDMjiQzNzhPVAAcf;5r>eb?7;Z= z5#+zXCCSJqDQX2F_WN+U`%1?xPtQMqtgT`NpN1DZ)Nh%kRU5p`Rt6RPc1&-E{?m$l z9bzWp#?fLnjVEYDi915PQF3{7L7DRIZ<*L1)>)-v1xa$sYjGGXki4d5n_^Eb={8TRgz zx7GtTwGhj!p@$WFB{yU_os!P4$nS!VC#!$xA4o>;^OZ>qb-l+CXT^x0Sj#2oJLm8&Q&5tYP7Y0LcldBV8!ATaaj@vwRNP%h6BZE3C_$wRfdd^ha0s#hroPI zk%$5yIbeAG(U6zrR#R0K=;t*|xCs_<9F@Os8)sF4o6Fn|iY-Eg$&?CcDd%X(zsh1I>Avs|$68A8dzjUWmR$FXdk z_g&BeM<9I;Dn;Y-pW0`x0AQDvmUwE4Farl5UIgK2S)zPa;1GJ$qR+o%T^SI7RgsyM zg+ssTb`GJZ8F+BhyaD5)EE=?@)c0L!85u)wf>mIL!Rf2GyAoLIr8n!b_iPa4B{D%r z;>aE{2&12UdG{cLfsoS+a2kx!AjL#RpObA5z}X|WXNN4F-X$l;6ncm_0V^EtI>Xw1 z+6Rt8Nf&6cLihL%^hiK$17_mGSh8F65J!Z4C7^8MZXdQvi8tZ};X#mYsUnK<^SgOe z+x`E-Nr~*FBoq#^dt6}JgN?2UZT!hMJZqeY^YhC~XoWx+^@+46cj`7^)wFeVptTBg z!unL7L&O8Jp0hf4$-^-b2v{nJfKQ@khWwHAIzqKxfb{y|qi{=fTnZ>a_xs%sAINph z%fq8HOaK|sAI`mnM>;WA^7x|M3?Kj&Vmbt%o85O^2@G!~K((f#q{OD**+-)mbex16 z672sFMo8%#h5*?%m3p}*wH|Vq{fUrH_S^!U{oa#7ee{`|Kri$=Nbr|t z{sy`W#uzXP80rF@yj*528*6LYfBx1uWki^AK|Uaz`9JrpynF{ke#oX4T%aeH#L94C z2s)rcFkm2rP9{;4)BU^$nxID3{jb3qW~>kgqvz$l4WdYN=v^65aA9YfTxB(1aAMMf ze&}~~_KPI>+YnMeD+dQC;CCx#C#jQamVCh2Ac?(CTMGn1Qu1!=hbqNsUZ8i=+E`x$ zVnU4${yUt8<;>{&B7gpHn-0;tvJu!Nw|UHKoO z&n!$%)`QUjjrb{Bf1pt$sF$ed=xsUZC`k?wDgXf;OnC>kexwB0We~ja4tP%#S>Mpm z@Zm$d_eq()kIN3`GLPgCIL1m!z;{-}s1=aP*f}|Offyc+DhPUZchdXEp?AaiJO{(Z_tUrH;HZzjw)QxvMrd)j zDJU|MlXV|Gs`^)I;)-J^18`cGmQPKWod{t0?|etv#9F}3X@LLUjEoRLFY#X({< zQ;iS{8(Sxf_Z~^iCD{D*4u%zqGv|3o09fGY7m3kb8~3i8oa0O)WETPNK>dH+=89!T zlKBo>+SN8a*dIx{DwrKJUv?gvSo{G5Q;FAD?1gKR$&g7oBM8w-n-?QN_Bj#3RqwTZ*(L#OTwrg2>8_e;lr5#M`2(>FMtTj?rmIL+z~xI{Dw&%6QwhBsHK1Y zEqZ>{4u;#i)L#VrAT;nN32hnUij9x&2=3T1slThpgsqYB%41_7AtUKaQQ^Sm5#(v4 zznPF{K9rM#!>t5UZ*i*bl7+(wEMfuP$B%pnNl1$Pp+trRcrBo>&+UAwr1PyySB2of z5S238q5{Ov{QUmH^^_I6U{l|Skzm5YaXgL*W%BSEX!5nSkj2v(qfJ)(0I>-DElu|7 z0th$)Mh>`^lnNV1?by0W_s=zy^Svi$Km->#KVDg2ZK9O{P~YB817xfk#Y!fGP08I$>;=Lum->$*#oxjXMUN6{{p7q zaKNq^(@|B2hJnEm5J~vb1>ia;eK@m)S)%B}vQ(na?IE{6l%vzP^|Ph9*{sPm=t;jt z<_w%KqT~SmX?$b^SKFfDvrmJVZ-_P6Z;x$kCesFWX?V7&gq&u;as50r)RcJ@%)kLh zP65KhvQ=4#Z2ILs1{82}mA>~4=h{YPY@u;Tp@#e2qa+uX)a{vVyf-JkPizB13g=f1eE?l%zj_?*V7R$r*bt# zi!!Xl@KKQy4cJY4FuFlLB9I*tBf*v-0F5V$tG?DwAUq;Mcn{C2<|W)Kg@RqLL zTLYsW(m}viUwLmJ6WDtn|IpIbhD=1C{DP%>7bhnt5ciD3IQ&Bvh$h@u4vr~g-@I8U z8#44bm4CFl3rI+0cW(Z_0Kh_Dr50J15>?-v-CGjLdg#@$1&Vtm>~bZg)lpu^IX#6w zy|y-P)Bgju0r1)X)53MfQ{BE{N_JMpA(fpykJYfUWt9q1I7XCNkzNWRqID1vS(zCn zMMlP(LlmNnWMoA|35n`=o%i$W&+^eZ-|zk0&vjqpHVS^O7z4tYsHTST*2jJuY4+Ys zfx&PwKAJGn))2_jhJtk~6HbEm9h#hOoBR%~u_%^X%Id?BEuE%Ukm3l^J?{v6=+{KdPN+e(q0%xk2(iR#mGuYnOImr z4)V!ceVh}CfxSRcHlh`>1Fj*|SCMHh?}G*}x1Z5$qOQuSe?KNIR{20b!@L7g|43zE z<5VQP`^5av_gij|t;XVBr3{XEe4sWL|$qfyKT(4aw8OLG@C9jgy70?Dc-y!+rI20Z9tlMH!VWpVKb`0XH+q&b;LL&$OAbO)p! zd?@`yA>_b|OidHLWnHo>(o4)E+2?Q$+$`8UW#?o@Ql-dy&5DGx%!@TIZCp5eG*%nV zHY5k6_hnPBjn^j3KZW$NIBuBPWEm%^E3F(fdcAr=j%8%AwIr=Ax5(?tur84OX)iCN z)CcZmZA;ts9@ba<;rYe8Hc}RHI?wn$8TW(a(1cS>bPT9{gtZ@H*>5A~y1kgY;%6QZM(eDq%HRzUfv4xAULbw5}sGO#4?LL&Lg zU9U57G?PC2%8}$O$25~-zHQ)D7{_L#SMh?HhbC_{4hlXtOB*LB-<^Y*1Hsn|$_Y^p6Fj zbJa~eHBa>^zn`fig}PV+_+s66(MxNT9uX;=Uzq#OJS2hKo81SmCngZ23U8U__ga;Z zH1_O)B?em4730Yr<2!D{D%acBH*K7YC|zu!U?f) zmuTbnfJ(+?2W~+s$rJ|u7R~-Fof9X9VFFuPT7rhzS=b6uL;FAH;$8)Xn?j7@`%@}i zkuxzhWzN6zF9DZ3ysyOwR7fP~s#pc<3RpN&5X(H`>FJ65rRHNzyLI{+U{0WZ=>>ui zS+$iCdcraH)V%HO?C!P%D;W9YN(=G+_|kWiXKrjv zIH65L?n!25!`ruHIe&~S1k$x^?wG{(NkCJQ!lQ}`l1!Q?R7aNP<3h5s4|Q)Z*izYv z|6Atq*tp})nCl4L`p*_$5E!;FF##6&rDrwH(|M11A>`>5C*+(kbZg6Da*xxcJe=4N=qoe5+yAbPxIe1(1CkWwE( zp9Yjnn&_xMDN=hwSwX>4lG`PoDFO_i3+w_J89V=U2`a_FV~O=L?gqHLFz)sKXM8Vq z0O00|oxoTEITQ8N2Bl9`QW@c`QgJ-7UvOL%s?F#6#4a5F4weR+CO{JJ;>MZ3*w)&5 z0gj#1OE_>;m)XmgQF|#>P=}5j;rT*9Q6DO_fjs0FkAL4SA@Nvb7v?uG6(HTe3W{Q; zDJY2H35Id*?m-FOI3DV&Dwa{!)C`8aifhRsCfCzmk{c-|*!22%q>|eWL~c)AC^Nk3 zn<4?;1EC4fTX&4b6q$JV`3ncn2=gw=85vOkp^)C=jl&55ogO;ed5x&9PIVU{>j2o( zKFJm93Ve@7z{+s;tY0TO2TCR`TT-%nV8G7ED8K%bPA*s^Y+k_59Y?b!{~*CwaJ55E zy|*_jf_RfoLe;$M(?7mTf4-PTR!$DDBQq6c4ZzIg(eB4tj|2j6HPj8MYg}hIMbfyulF9J^CNmSGpKGiMe9fN}x;o5vi>K`1`bMUdEMoVSzCCP_x zLx7`NVGg;rXTB-Dv@I;l^x#3(b%}KBzbMQa+QP!C;}6_{=H1N9V7{1-&>a+S;YhT! zr)LJT>2Fi>oV7I+DAah%1k#p-BB217jpn8^B$jqB-lZ9ds zye`z8i04<)$&HG73B1Q0XQQ23FT?%LhYjgb><7Ra7(ai1>nrXNLZ8OR;qIV9=?*rQ zpL%%SUS36UadDNEsxcGUX-q*agak1=D=TC`zs$_ESy&Mzl~q)h007X$;gNQTcNz{C ziUFfCJv9ZN&~Qsjp6=}u)}M8_1OfFPS5|tzxqHKum*K{3OrQ7fkCZy@HKsk(qLcv> zHJSVgcxYy(FhgPm{SCQiaDZ-mx*x6rGrUDP=XfTp8i0V>!NzViZy}SE*`2WaJSQU^ znh-B@6g;UhY2~(jsd>MD|AvIK#q7gYUWT|)yf6Ik0o8)?W5#0fuT02j9O^zp2&?Ka z0)0pY2csj`S~tFXm-NM1NIx9s5)O47Nk98L5=%e7!Q3+u7Dj{9U)mng`yA5({H|Pd z-MB>Q6=)aGJnQP~wQ?T>OxMw97{Z!#;zS0p?5mpHFXiwVRfFH3jwqdkIV7=1&b4?CG7K1 z&u12Xkc9}NqGCDhI8+aosw!x;vQK(rmT|mt0e*fdTA|M?DwdGufxG&=O88!g=GA~w zRLl0WXL#RkgyS_h7WQna|AP@rE@5q5VT5N;zh~&sso|YYc zy?B^GbN!sc=YIY0?0B%+_w_Aw=P(#pW5WS8+8Y)1TDxcY zN*D=i5PUyA=Mik~>MGYg-OLAvLoi?sHbPL-s#sK{(E|Oo=G=@3SFGeUY>Tr&5YVet z$(TF@JcLBNUTas^t-}ijm4_2Y5Lm{L10^!|kW`SHD!*LHdh~!REK9cODvFAdva%D; zyAU?WG_2Bn?!t4l}EkRIl zDC+=&g~t!f=jfk`a3jEk!7&(SDEG&Yf$lTdO-3RjtXPC2)&|BE6jDc{2%%TB=Gi1# zCw03PoS~I>{g_L)Ts`(7p%Q5u2#2Etpc8a{-Q~UXAwKTz^uuXnvNB|8-7EBsZ+2Kr z=RhD+UF*`7V;or!rUF6iV?o@ataLMh9G`yXBz8{EuREn`e_-mYDmo;F3)k080axnX<67Z80IVg=OB zq_|LMQb!kG>k4u7dUwBa*z|D)F#9XQ`Uo%JNgO>e#nfUOrC?>FY0ps)N)g^hJP^1% zIrPwA;GuEgW0qMk%{caM!Yq|uBNXV=*4FmI1&#GP-{_Z0jmaAuOPxJEJy4>nHHu2) z{Xk1i11C3+Q+4Y8e!{!2pT`OuUen4t`T8P5x3#7ij0#gk*kQV=c1bx1BP=Z2Roq$c z2^NRg&0^>5z<{Q_{Eht`EGv0^>Vf)|S}-nyqwNJ>OArtcsbn4RH++3w*Bo|L+FPCa zWLJzlN6Su_Tlaz;ng|HSLrR*lBHjm_ZPEHC4IBRcGaBI4xOsS>`J^KlK$Y^!P9F1P zy6_i{CDacQFAe5*xU}H{dYqlT$-m+n%}#A#U6A3FmoKq)3fCLJu29spSEa=0hBmG@ zQPCXK=3C-#ta?Bk<#j_t*wK%t4QDq!yMFDOH2eXKj4{`*gY5bYoRak7ia;%&ps0oh zx;_Q%>rml2v^of<1(&qx7DB;iBcS&OeGY%iQp@-LLDfzrr+5s3sy&{nb*o!Rox3h? zP(Ag!y1E#NsgC%MV_p|lRuGDR6e@oC@@1@UFm!xt8#DN<2kDj0G<9~cCkIgnka)OH z+S=J+iN<~E){?F_OcDJrE^Bv~7dyxaR-N+p{*7~jq>T~mIcN+^)1AjU&mKD~WD)?J zg3BLLOu4>D_>+BK)#!vGL0XV}eYGLXr3C!={(TncoE-IQZEc{xUr4@=F9Tj{JdTny zSP5}&BR9);GNe0`1QQ}19i5Ik+XU5M1XXxwU>nwPp~xpc&Hb6m*-|5K_vhq4(_C*2 z`Cfk8Yu?LBFRLfj$XCTepI}u7Xpf_R1v&&4T+aEM~M}$_}_t!C2Lb#=X`XA1M$z~>xM`svAxi_9AjIwTynNWFtig0Pr zd7>n_M&V7{$ZNk5ov!!V;Kl&^VAnl!lXkdmdHMX6#`2n)c12dAmf_^MQEa^tw2_rfzkbesQ~EnDy?YkZKYw1p=E>PvY2Bx%=$V58 z18t;v%zIdyKQI4!`c%!>&hYq0&CH6jvYUCH4-PR=e%#U-e*QsorrtPHl;({=PIv$O z3d#?O)nDii1+1GNHq8gBuvS!87alD(mpBX)qfQOGsAf;TWDyME4<1BW=Ea20D4!B) zQ{BJ+|GdnA!^4LD7W|xDEp~>3CA|f3b8L;TFvzF z=oarHMu(^lw(TWQ#=`^UyWcPWZ8*NVRj1}ySznxo{30LG96lAmO+>E|eW|oJS9}m# zo$KuGK7~e(V9@@Zmhe36j0%~=@<1`J#=t$Pd09zLPYluzr1Ly(r|uwhA_@S#x)B99 zGa{##FIL*m!&!^2H{`PlanP!bWy`RHWtcH9ISK&%E1XnlE9e`D0cOjGZ1M2wLteYFH8h1zu2G3{N$6 z)`htnYffYJv*wPlGXUFR0qVJG2iQrgtJgqBLvf@?kkxe@T|ij4xMZIw!^a3lfDQnj z5k{Euou|~&<^$J3o>=6Q?9`;B3QJ4b0<;JlqVY%2zjbwKh5wy7hY+*vDT8c9eLD1* z?)MxgMunxguOXrp;n~FK>v{3w^MexWKfmR?^TPD|b#@ktO>;#L+b0_MVQi!!AYt@% zkYAXcjrg@kOk|BAx0XK|JP$ccOK%z()EjaqJY! z2A>A;s@niyc4{8XI%-k6SHz89R1U@1HC*T57j5w#KU(G6|Kz6F?1qBFW+`K%(Q}FS zjAKUpuTAiGN$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + 0 + 1 + 2 + + + 1 + 1 + 2 + + + 2 + 2 + 0 + + + + + + + + + + + + 0 + + + + + + + + + diff --git a/doc/doxygen/images/triangle-1.svg b/doc/doxygen/images/triangle-1.svg new file mode 100644 index 0000000000..a0577d2d67 --- /dev/null +++ b/doc/doxygen/images/triangle-1.svg @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 0 + 2 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + 1 + 2 + 1 + + + + + + + + + + + + + + + + + + + + 0 + 1 + 0 + + + + + + + + + + + + + 1 + + + + + + + + + diff --git a/doc/doxygen/images/triangle-2.svg b/doc/doxygen/images/triangle-2.svg new file mode 100644 index 0000000000..38e8d86e7a --- /dev/null +++ b/doc/doxygen/images/triangle-2.svg @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 2 + 0 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + 1 + 1 + 2 + + + + + + + + + + + + + 2 + + + + + + + + + diff --git a/doc/doxygen/images/triangle-3.svg b/doc/doxygen/images/triangle-3.svg new file mode 100644 index 0000000000..a7a9a72222 --- /dev/null +++ b/doc/doxygen/images/triangle-3.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 1 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + 0 + 1 + 0 + + + + + + + + + + + + + + + + + + + + 2 + 0 + 2 + + + + + + + + + + + + + 3 + + + + + + + + + diff --git a/doc/doxygen/images/triangle-4.svg b/doc/doxygen/images/triangle-4.svg new file mode 100644 index 0000000000..d75b56fc96 --- /dev/null +++ b/doc/doxygen/images/triangle-4.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 2 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + 2 + 2 + 0 + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + + + + + + + + 4 + + + + + + + + + diff --git a/doc/doxygen/images/triangle-5.svg b/doc/doxygen/images/triangle-5.svg new file mode 100644 index 0000000000..c631cc6eaa --- /dev/null +++ b/doc/doxygen/images/triangle-5.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 0 + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + 2 + 0 + 2 + + + + + + + + + + + + + + + + + + + + 1 + 2 + 1 + + + + + + + + + + + + + 5 + + + + + + + + + -- 2.39.5