From d323f79d214fd4a51c15afa3f825fd59ebc67994 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Tue, 4 Aug 2026 23:56:21 +0200 Subject: [PATCH 1/6] add more special morphism rules --- .../categories/walking_commutative_square.yaml | 5 +---- .../data/categories/walking_composable_pair.yaml | 5 +---- .../data/categories/walking_coreflexive_pair.yaml | 3 --- database/data/categories/walking_fork.yaml | 3 --- database/data/categories/walking_morphism.yaml | 5 +---- database/data/categories/walking_pair.yaml | 5 +---- database/data/categories/walking_span.yaml | 5 +---- database/data/categories/walking_splitting.yaml | 3 --- database/data/special-morphism-rules.yaml | 15 +++++++++++++++ 9 files changed, 20 insertions(+), 29 deletions(-) diff --git a/database/data/categories/walking_commutative_square.yaml b/database/data/categories/walking_commutative_square.yaml index 9af90108..36cbce01 100644 --- a/database/data/categories/walking_commutative_square.yaml +++ b/database/data/categories/walking_commutative_square.yaml @@ -51,7 +51,4 @@ special_objects: products: description: $b \times c = a$, $x \times x = x$, $a \times x = a$, $d \times x = x$ -special_morphisms: - isomorphisms: - description: the four identities - proof: This is trivial. +special_morphisms: {} diff --git a/database/data/categories/walking_composable_pair.yaml b/database/data/categories/walking_composable_pair.yaml index 026b7935..6fe5a57b 100644 --- a/database/data/categories/walking_composable_pair.yaml +++ b/database/data/categories/walking_composable_pair.yaml @@ -48,7 +48,4 @@ special_objects: products: description: infimum taken in $\{0 < 1 < 2\}$ -special_morphisms: - isomorphisms: - description: the three identities - proof: This is trivial. +special_morphisms: {} diff --git a/database/data/categories/walking_coreflexive_pair.yaml b/database/data/categories/walking_coreflexive_pair.yaml index a652f7c0..5be92d6c 100644 --- a/database/data/categories/walking_coreflexive_pair.yaml +++ b/database/data/categories/walking_coreflexive_pair.yaml @@ -75,9 +75,6 @@ special_objects: description: $[1]$ special_morphisms: - isomorphisms: - description: the two identities - proof: This is obvious. monomorphisms: description: the identities and $i$, $j$ proof: Since $pi = \id$, but $ip \neq \id$, we conclude that $i$ is a monomorphism, but $p$ is not. Likewise, $j$ is a monomorphism. Since $p$ is not a monomorphism, $ip$ and $jp$ are also no monomorphisms. diff --git a/database/data/categories/walking_fork.yaml b/database/data/categories/walking_fork.yaml index f5d44606..362188c5 100644 --- a/database/data/categories/walking_fork.yaml +++ b/database/data/categories/walking_fork.yaml @@ -68,9 +68,6 @@ special_objects: description: $0$ special_morphisms: - isomorphisms: - description: the three identities - proof: This is trivial. epimorphisms: description: the identities and $f,g$ proof: This is easily checked. diff --git a/database/data/categories/walking_morphism.yaml b/database/data/categories/walking_morphism.yaml index 05c5fdd6..1eb68c2e 100644 --- a/database/data/categories/walking_morphism.yaml +++ b/database/data/categories/walking_morphism.yaml @@ -53,7 +53,4 @@ special_objects: products: description: $0 \times x = 0$, $1 \times x = x$ -special_morphisms: - isomorphisms: - description: the two identities - proof: This is trivial. +special_morphisms: {} diff --git a/database/data/categories/walking_pair.yaml b/database/data/categories/walking_pair.yaml index 7df4c306..bb8c929e 100644 --- a/database/data/categories/walking_pair.yaml +++ b/database/data/categories/walking_pair.yaml @@ -50,7 +50,4 @@ unsatisfied_properties: special_objects: {} -special_morphisms: - isomorphisms: - description: the two identities - proof: This is trivial. +special_morphisms: {} diff --git a/database/data/categories/walking_span.yaml b/database/data/categories/walking_span.yaml index 265ec318..424548f4 100644 --- a/database/data/categories/walking_span.yaml +++ b/database/data/categories/walking_span.yaml @@ -50,7 +50,4 @@ special_objects: products: description: '[binary case] $1 \times 2 = 0$, $x \times x = x$, $0 \times x = 0$' -special_morphisms: - isomorphisms: - description: the three identities - proof: This is trivial. +special_morphisms: {} diff --git a/database/data/categories/walking_splitting.yaml b/database/data/categories/walking_splitting.yaml index eaca453e..0be80008 100644 --- a/database/data/categories/walking_splitting.yaml +++ b/database/data/categories/walking_splitting.yaml @@ -64,9 +64,6 @@ special_objects: description: $0$ special_morphisms: - isomorphisms: - description: the two identities - proof: This is obvious. monomorphisms: description: the identities and $i$ proof: The morphism $i$ is even a split monomorphism. The morphism $p$ is not a monomorphism since $p \circ \id_1 = p \circ ip$. The morphism $ip$ is not a monomorphism since it would imply that $p$ is a monomorphism. diff --git a/database/data/special-morphism-rules.yaml b/database/data/special-morphism-rules.yaml index 0c72983f..b65d572a 100644 --- a/database/data/special-morphism-rules.yaml +++ b/database/data/special-morphism-rules.yaml @@ -3,6 +3,11 @@ description: every morphism proof: The category is a groupoid. +- property: gaunt + type: isomorphisms + description: only the identities + proof: The category is gaunt. + - property: thin type: monomorphisms description: every morphism @@ -57,3 +62,13 @@ type: regular epimorphisms description: same as epimorphisms proof: The category is epi-regular. + +- property: regular-subobject-trivial + type: regular monomorphisms + description: same as isomorphisms + proof: The category is regular-subobject-trivial. + +- property: regular-quotient-trivial + type: regular epimorphisms + description: same as isomorphisms + proof: The category is regular-quotient-trivial. From d9b4f66782ebfdf861e55fe2468df557b8daa28f Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Tue, 4 Aug 2026 15:22:02 +0200 Subject: [PATCH 2/6] add extremal monos and epis --- .../morphism-implications/mono-epi-iso.yaml | 82 +++++++++++++++---- .../extremal epimorphism.yaml | 15 ++++ .../extremal monomorphism.yaml | 15 ++++ .../strong epimorphism.yaml | 3 + .../strong monomorphism.yaml | 3 + 5 files changed, 103 insertions(+), 15 deletions(-) create mode 100644 database/data/morphism-properties/extremal epimorphism.yaml create mode 100644 database/data/morphism-properties/extremal monomorphism.yaml diff --git a/database/data/morphism-implications/mono-epi-iso.yaml b/database/data/morphism-implications/mono-epi-iso.yaml index ec2e03a3..bd5f893c 100644 --- a/database/data/morphism-implications/mono-epi-iso.yaml +++ b/database/data/morphism-implications/mono-epi-iso.yaml @@ -15,6 +15,17 @@ proof: 'Let $f : A \to B$ be a split monomorphism, and choose a morphism $g : B \to A$ with $g \circ f = \id_A$. Then it is easy to check that $f$ is an equalizer of $\id_B, f \circ g : B \rightrightarrows B$.' is_equivalence: false +- id: split_mono_epi_is_iso + # This implication follows strictly from the others, but we add it + # because the other proofs use it and also to prevent long chains. + assumptions: + - split monomorphism + - epimorphism + conclusions: + - isomorphism + proof: 'Assume that $f : A \to B$ is a split monomorphism, and choose a morphism $g : B \to A$ with $g \circ f = \id_A$. Then $f \circ g \circ f = f = \id_B \circ f$. Thus, if $f$ is also an epimorphism, we conclude $f \circ g = \id_B$, showing that $f$ is an isomorphism with inverse $g$.' + is_equivalence: false + - id: mono_is_iso assumptions: - monomorphism @@ -146,39 +157,80 @@ where $e$ is an epimorphism and $m$ is a strict monomorphism. We need to show that $D \to B$ factors through $m$. It suffices to show that it equalizes all pairs $B \rightrightarrows T$ that are equalized by $m$. Since $e$ is an epimorphism, it suffices to check this for the composite $C \to D \to B$. This is equal to $C \to A \to B$, which factors through $m$ and hence equalizes the pair. is_equivalence: false -- id: strong_monos_are_regular_in_coregular_category +- id: extremal_mono_is_mono + assumptions: + - extremal monomorphism + conclusions: + - monomorphism + proof: This holds by definition. + is_equivalence: false + +- id: strong_mono_is_extremal assumptions: - strong monomorphism + conclusions: + - extremal monomorphism + proof: >- + Assume that $m : A \to B$ is a strong monomorphism that factors as $m = g \circ e$, where $e : A \to C$ is an epimorphism and $g : C \to B$ is any morphism. Then the commutative diagram + $$\begin{CD} A @>e>> C \\ @V{\id_A}VV @VV{g}V \\ A @>>m> B \end{CD}$$ + can be filled with a morphism $h : C \to A$. In particular, $h \circ e = \id_A$. Thus, $e$ is an epimorphism and a split monomorphism, hence an isomorphism. + is_equivalence: false + +- id: extremal_mono_epi_is_iso + assumptions: + - extremal monomorphism + - epimorphism + conclusions: + - isomorphism + proof: This is obvious. + is_equivalence: false + +- id: extremal_monos_are_regular_in_coregular_category + assumptions: + - extremal monomorphism mapped_assumptions: category: - coregular conclusions: - regular monomorphism - proof: >- - Let $m : A \to B$ be a strong monomorphism in a coregular category. We may factor it as $m = i \circ e$, where $i : C \to B$ is a regular monomorphism and $e : A \to C$ is an epimorphism. The orthogonality condition applied to the diagram - $$\begin{CD} A @>e>> C \\ @V{\id_A}VV @VV{i}V \\ A @>>m> B \end{CD}$$ - shows that $e$ is a split monomorphism, hence an isomorphism. But then $m = i \circ e$ is a regular monomorphism as well. + proof: 'Let $m : A \to B$ be an extremal monomorphism in a coregular category. By coregularity, we may factor it as $m = i \circ e$, where $i : C \to B$ is a regular monomorphism and $e : A \to C$ is an epimorphism. Since $m$ is an extremal monomorphism, $e$ is an isomorphism. Therefore, $m \cong i$ is a regular monomorphism.' is_equivalence: false -- id: strong_monos_are_no_epis +- id: extremal_mono_strong_criterion assumptions: - - strong monomorphism - - epimorphism + - extremal monomorphism + mapped_assumptions: + category: + - pushouts conclusions: - - isomorphism + - strong monomorphism proof: >- - Assume that $m : A \to B$ is a strong monomorphism which is also an epimorphism. Then we apply the orthogonality condition to - $$\begin{CD} A @>m>> B \\ @V{\id_A}VV @VV{\id_B}V \\ A @>>m> B \end{CD}$$ - to conclude that $m$ is a split epimorphism, and hence an isomorphism. + Let $m : A \to B$ be an extremal monomorphism and consider a diagram + $$\begin{CD} C @>{e}>> D \\ @V{f}VV @VV{g}V \\ A @>>{m}> B \end{CD}$$ + in which $e : C \to D$ is an epimorphism. Choose a pushout + $$\begin{CD} C @>{e}>> D \\ @V{f}VV @VV{u}V \\ A @>>{v}> P. \end{CD}$$ + Here, $v$ is an epimorphism since $e$ is an epimorphism. Moreover, by the universal property of the pushout, there is a unique morphism $h : P \to B$ such that $h \circ v = m$ and $h \circ u = g$. Since $m$ is an extremal monomorphism, $v$ is an isomorphism. Then $v^{-1} \circ u : D \to A$ is the required filling of the first diagram, since + $$v^{-1} \circ u \circ e = v^{-1} \circ v \circ f = f.$$ + is_equivalence: false + +- id: extremal_mono_balanced + assumptions: + - monomorphism + mapped_assumptions: + category: + - balanced + conclusions: + - extremal monomorphism + proof: Assume $m$ is a monomorphism that factors as $m = g \circ e$, where $e$ is an epimorphism. But then $e$ is also a monomorphism, and since the category is balanced, $e$ must be an isomorphism. is_equivalence: false -- id: strong_monos_collapse +- id: every_mono_strong_criterion assumptions: - monomorphism mapped_assumptions: category: - - quotient-trivial + - epi-regular conclusions: - strong monomorphism - proof: This is because any morphism is right orthogonal to any isomorphism. + proof: Any monomorphism is right orthogonal to any regular epimorphism because regular epimorphisms are strong (by combining this result and this result). is_equivalence: false diff --git a/database/data/morphism-properties/extremal epimorphism.yaml b/database/data/morphism-properties/extremal epimorphism.yaml new file mode 100644 index 00000000..1aa7fbfa --- /dev/null +++ b/database/data/morphism-properties/extremal epimorphism.yaml @@ -0,0 +1,15 @@ +id: extremal epimorphism +relation: is an +description: >- + A morphism $e : A \to B$ is an extremal epimorphism if it is a epimorphism and whenever $e = m \circ g$ is a factorization in which $m$ is a monomorphism, then $m$ is an isomorphism. The condition that $e$ is an epimorphism follows from the factorization property when the category has equalizers, but in general, we need to explicitly demand it. + + By the implications below, extremal epimorphisms are closed related to strong epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. +nlab_link: https://ncatlab.org/nlab/show/extremal+epimorphism +invariant_under_equivalences: true +dual: extremal monomorphism +related: + - strong epimorphism + - epimorphism + +tags: + - types of epimorphisms diff --git a/database/data/morphism-properties/extremal monomorphism.yaml b/database/data/morphism-properties/extremal monomorphism.yaml new file mode 100644 index 00000000..a229bc8d --- /dev/null +++ b/database/data/morphism-properties/extremal monomorphism.yaml @@ -0,0 +1,15 @@ +id: extremal monomorphism +relation: is an +description: >- + A morphism $m : A \to B$ is an extremal monomorphism if it is a monomorphism and whenever $m = g \circ e$ is a factorization in which $e$ is an epimorphism, then $e$ is an isomorphism. The condition that $m$ is a monomorphism follows from the factorization property when the category has coequalizers, but in general, we need to explicitly demand it. + + By the implications below, extremal monomorphisms are closed related to strong monomorphisms: every strong monomorphism is extremal, and the converse holds when pushouts exist. +nlab_link: https://ncatlab.org/nlab/show/extremal+monomorphism +invariant_under_equivalences: true +dual: extremal epimorphism +related: + - strong monomorphism + - monomorphism + +tags: + - types of monomorphisms diff --git a/database/data/morphism-properties/strong epimorphism.yaml b/database/data/morphism-properties/strong epimorphism.yaml index 94b80d57..72beead0 100644 --- a/database/data/morphism-properties/strong epimorphism.yaml +++ b/database/data/morphism-properties/strong epimorphism.yaml @@ -6,11 +6,14 @@ description: >- in which $m : C \to D$ is a monomorphism, there is a unique morphism $B \to C$ such that both triangles commute. Uniqueness is actually for free, and it suffices to demand commutativity of one triangle, as the other one follows. $$\begin{CD} A @>e>> B \\ @VVV \swarrow @VVV \\ C @>>m> D \end{CD}$$ If the category has equalizers, the orthogonality condition already implies that $e$ is an epimorphism, but in general, we need to demand this. + + By the implications below, strong epimorphisms are closed related to extremal epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. nlab_link: https://ncatlab.org/nlab/show/strong+epimorphism invariant_under_equivalences: true dual: strong monomorphism related: - strict epimorphism + - extremal epimorphism - epimorphism tags: diff --git a/database/data/morphism-properties/strong monomorphism.yaml b/database/data/morphism-properties/strong monomorphism.yaml index d12800f1..22646378 100644 --- a/database/data/morphism-properties/strong monomorphism.yaml +++ b/database/data/morphism-properties/strong monomorphism.yaml @@ -6,11 +6,14 @@ description: >- in which $e : C \to D$ is an epimorphism, there is a unique morphism $D \to A$ such that both triangles commute. Uniqueness is actually for free, and it suffices to demand commutativity of one triangle, as the other one follows. $$\begin{CD} C @>e>> D \\ @VVV \swarrow @VVV \\ A @>>m> B \end{CD}$$ If the category has coequalizers, the orthogonality condition already implies that $m$ is a monomorphism, but in general, we need to demand this. + + By the implications below, strong monomorphisms are closed related to extremal monomorphisms: every strong monomorphism is extremal, and the converse holds when pushouts exist. nlab_link: https://ncatlab.org/nlab/show/strong+monomorphism invariant_under_equivalences: true dual: strong epimorphism related: - strict monomorphism + - extremal monomorphism - monomorphism tags: From f27b4e84380e7ddb12ae078085abbcb4419771a9 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Wed, 5 Aug 2026 00:03:15 +0200 Subject: [PATCH 3/6] add the forked commutative square category --- .../categories/forked_commutative_square.yaml | 79 +++++++++++++++++++ .../walking_commutative_square.yaml | 1 + database/data/categories/walking_fork.yaml | 1 + database/data/categories/walking_pair.yaml | 1 + database/data/macros.yaml | 1 + 5 files changed, 83 insertions(+) create mode 100644 database/data/categories/forked_commutative_square.yaml diff --git a/database/data/categories/forked_commutative_square.yaml b/database/data/categories/forked_commutative_square.yaml new file mode 100644 index 00000000..b86cd4bb --- /dev/null +++ b/database/data/categories/forked_commutative_square.yaml @@ -0,0 +1,79 @@ +id: forked_commutative_square +name: forked commutative square +notation: $\ForkSquare$ +objects: $A,B,C,D,E$ +morphisms: 'The morphisms are generated by $e : A \to B$, $f : A \to C$, $g : B \to D$, $m : C \to D$ and $u,v : D \rightrightarrows E$, subject to the relations $g \circ e = m \circ f$, $u \circ g = v \circ g$, and $u \circ m = v \circ m$.' +description: >- + This finite category is generated by the graph + $$\begin{array}{ccccc} + A & \xrightarrow{\hspace{1em} e \hspace{1em}} & B & & \\ + \text{\scriptsize $f$}\bigg\downarrow\;\, && \;\,\bigg\downarrow\text{\scriptsize $g$} && \\ + C & \xrightarrow{\hspace{1em} m \hspace{1em}} & D & + \begin{array}{c} + \xrightarrow{\hspace{1em} u \hspace{1em}}\\ + \xrightarrow{\hspace{1em} v \hspace{1em}} + \end{array} & E + \end{array}$$ + and the evident relations: the square commutes, and the parallel pair $u,v$ is equalized by both $g$ and $m$. We have added this category to the database solely as an example of an extremal monomorphism (namely $m$) that is not a strong monomorphism. There is probably no common name for this category, but "forked commutative square" seems like a good fit. +nlab_link: null +tags: + - category theory + +related: + - walking_fork + - walking_commutative_square + +satisfied_properties: + - property: small + proof: This is obvious. + + - property: finite + proof: This is obvious. + + - property: skeletal + proof: The five objects are clearly pairwise non-isomorphic. + + - property: one-way + proof: This is obvious. + + - property: strict initial object + proof: Clearly, $A$ is an initial object. Since $\id_A$ is the only morphism with codomain $A$, it is strict. + + - property: generator + proof: 'The only parallel pair of distinct morphisms is $u,v : D \rightrightarrows E$. It follows that $D$ is a generator.' + + - property: cogenerator + proof: 'The only parallel pair of distinct morphisms is $u,v : D \rightrightarrows E$. It follows that $E$ is a cogenerator.' + + - property: left cancellative + proof: 'The only parallel pair of distinct morphisms is $u,v : D \rightrightarrows E$. Thus, it is sufficient to prove that every morphism with domain $E$ is a monomorphism. But there is only one such morphism, namely $\id_E$.' + + - property: regular-subobject-trivial + proof: 'The only parallel pair of distinct morphisms is $u,v : D \rightrightarrows E$, so it suffices to prove that they do not have an equalizer. This is proven in the list of unsatisfied properties.' + # TODO: add proof reference + +unsatisfied_properties: + - property: semi-strongly connected + proof: There is no morphism $B \to C$ and no morphism $C \to B$. + + - property: equalizers + proof: 'The morphisms $u,v : D \rightrightarrows E$ do not have an equalizer: the four morphisms with codomain $D$ are $g$, $m$, $g \circ e = m \circ f$, and $\id_D$. But $\id_D$ does not equalize $u,v$. The other three morphisms equalize $u,v$, but they are not universal: $m$ is not universal since $g$ does not factor through it, $g$ is not universal since $m$ does not factor through it, and $g \circ e$ is not universal since $g$ does not factor through it.' + + - property: pullbacks + proof: 'Any two parallel morphisms with codomain $D$ are equal. It follows that a pullback of the cospan $D \xrightarrow{u} E \xleftarrow{v} D$ would be an equalizer of $u,v : D \rightrightarrows E$, which we know does not exist.' + # TODO: add proof reference + + - property: extremal generator + proof: 'Since both $m$ and $g$ equalize $u,v$, it is easy to see that $D$ is the only generator. But it is not extremal since $e$ induces a bijection $e_* : \Hom(D,A) \to \Hom(D,B)$ (both sets are empty), without $e$ being an isomorphism.' + + - property: extremal cogenerator + proof: 'We already saw that $E$ is a cogenerator, and it is also the only one because any cogenerator must admit a morphism from $E$ to be able to distinguish $u,v$. But $E$ is not extremal since $f$ induces a bijection $f^* : \Hom(C,E) \to \Hom(A,E)$ (both sets are singletons), without $f$ being an isomorphism.' + +special_objects: + initial object: + description: $A$ + +special_morphisms: + epimorphisms: + description: all morphisms except for the three non-identity morphisms with codomain $D$, namely $g$, $m$, and the diagonal $g \circ e$ + proof: 'Every one of the three non-identity morphisms with codomain $D$ equalizes $u,v$, and thus cannot be an epimorphism. Conversely, the identity morphisms are of course epimorphisms, and if a morphism does not have codomain $D$, then it is an epimorphism because the only parallel pair of distinct morphisms is $u,v : D \rightrightarrows E$.' diff --git a/database/data/categories/walking_commutative_square.yaml b/database/data/categories/walking_commutative_square.yaml index 36cbce01..39504d5c 100644 --- a/database/data/categories/walking_commutative_square.yaml +++ b/database/data/categories/walking_commutative_square.yaml @@ -14,6 +14,7 @@ tags: related: - walking_fork - walking_morphism + - forked_commutative_square satisfied_properties: - property: small diff --git a/database/data/categories/walking_fork.yaml b/database/data/categories/walking_fork.yaml index 362188c5..fd3401c2 100644 --- a/database/data/categories/walking_fork.yaml +++ b/database/data/categories/walking_fork.yaml @@ -15,6 +15,7 @@ related: - walking_commutative_square - walking_composable_pair - walking_pair + - forked_commutative_square satisfied_properties: - property: small diff --git a/database/data/categories/walking_pair.yaml b/database/data/categories/walking_pair.yaml index bb8c929e..2f09cf63 100644 --- a/database/data/categories/walking_pair.yaml +++ b/database/data/categories/walking_pair.yaml @@ -15,6 +15,7 @@ related: - walking_coreflexive_pair - walking_fork - walking_morphism + - forked_commutative_square satisfied_properties: - property: small diff --git a/database/data/macros.yaml b/database/data/macros.yaml index 4d7178e6..652f1e18 100644 --- a/database/data/macros.yaml +++ b/database/data/macros.yaml @@ -123,6 +123,7 @@ \Cone: \mathbf{Cone} \SemiGrp: \mathbf{SemiGrp} \Square: \mathbf{Square} +\ForkSquare: \mathbf{ForkSquare} \Comp: \mathbf{Comp} \Fork: \mathbf{Fork} \Isom: \mathbf{Isom} From 980ec9ac371e5d75b07baebb906de84f85f84188 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Wed, 5 Aug 2026 00:12:15 +0200 Subject: [PATCH 4/6] add example of a non-strong extremal monomorphism --- .../extremal-not-strong-example.yaml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 database/data/morphisms/extremal-not-strong-example.yaml diff --git a/database/data/morphisms/extremal-not-strong-example.yaml b/database/data/morphisms/extremal-not-strong-example.yaml new file mode 100644 index 00000000..1c050c12 --- /dev/null +++ b/database/data/morphisms/extremal-not-strong-example.yaml @@ -0,0 +1,22 @@ +id: extremal-not-strong-example +name: example of a non-strong extremal monomorphism +notation: $m$ +category: forked_commutative_square +description: 'This is the morphism $m : C \to D$ from the forked commutative square, see details there. It provides an example of an extremal monomorphism which is not strong, and this is the only reason we have added this morphism and its category to the database.' +nlab_link: null + +tags: + - category theory + +related: [] + +satisfied_properties: + - property: extremal monomorphism + proof: It is a monomorphism because, in fact, every morphism in the forked commutative square is a monomorphism. The only factorizations of $m$ are $m \circ \id_C$ and ${\id_D} \circ m$, and $m$ is not an epimorphism (because $u \circ m = v \circ m$ but $u \neq v$). + +unsatisfied_properties: + - property: strong monomorphism + proof: >- + The category contains a commutative diagram + $$\begin{CD} A @>e>> B \\ @V{f}VV @VV{g}V \\ C @>>m> D \end{CD}$$ + in which $e$ is an epimorphism, but there is no morphism $B \to C$ at all. From 95e4ee5111bb40bfe1191901989e4237bc43cb28 Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Wed, 5 Aug 2026 12:54:36 +0200 Subject: [PATCH 5/6] add page with relationships between epimorphisms and monomorphisms --- content/relationships-epis-monos.md | 42 ++++++++++++++++++ .../effective epimorphism.yaml | 2 +- .../effective monomorphism.yaml | 2 +- .../extremal epimorphism.yaml | 2 +- .../extremal monomorphism.yaml | 2 +- .../strict epimorphism.yaml | 2 +- .../strict monomorphism.yaml | 2 +- .../strong epimorphism.yaml | 2 +- .../strong monomorphism.yaml | 2 +- src/routes/[type]-implications/+page.svelte | 6 +++ src/routes/content/[id]/+page.svelte | 11 +++++ static/img/epis.webp | Bin 0 -> 42172 bytes static/img/monos.webp | Bin 0 -> 44692 bytes 13 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 content/relationships-epis-monos.md create mode 100644 static/img/epis.webp create mode 100644 static/img/monos.webp diff --git a/content/relationships-epis-monos.md b/content/relationships-epis-monos.md new file mode 100644 index 00000000..06893a10 --- /dev/null +++ b/content/relationships-epis-monos.md @@ -0,0 +1,42 @@ +--- +title: Relationships between epimorphisms and monomorphisms +description: A graphical overview of the relationships between the various types of epimorphisms and monomorphisms +--- + +## Relationships between epimorphisms and monomorphisms + +There are several [properties of morphisms](/morphism-properties), including various types of epimorphisms and monomorphisms. The [implications](/morphism-implications) establish various relationships between these types. Here we present a graphical overview of these relationships. + +### The various types of epimorphisms + +![Diagram showing the types of epimorphisms](/img/epis.webp) + +In the diagram, an arrow $X \Longrightarrow Y$ means that every morphism with property $X$ also has property $Y$. If it is labelled with a category property $P$, the implication does not hold in general, but it holds in categories satisfying $P$. For example, in a category with pullbacks, every strict epimorphism is effective. + +Fun fact: This describes a category in itself, the composition of $P : X \Rightarrow Y$ and $Q : Y \Rightarrow Z$ is $P \wedge Q : X \Rightarrow Z$. + +### The various types of monomorphisms + +This diagram is just the dual of the previous diagram. The same notation applies. + +![Diagram showing the types of monomorphisms](/img/monos.webp) + +### TeX code + +``` +\begin{tikzcd}[column sep=-30pt, row sep=40pt,nodes={inner sep=10pt}] +& \text{isomorphism} \ar[Rightarrow]{dr} \ar[Rightarrow]{dl} & & \\ +\text{split monomorphism} \ar[Rightarrow]{dr} && \text{effective monomorphism} \ar[Rightarrow]{dl} & \\ + & \text{regular monomorphism} \ar[Rightarrow]{rr} & & \text{strict monomorphism} \ar[Rightarrow]{ul}[swap]{\text{pushouts}} \ar[Rightarrow]{d} \\ + & \text{extremal monomorphism} \ar[Rightarrow]{u}{\text{coregular\;}} \ar[Rightarrow]{d} & & \text{strong monomorphism} \ar[Rightarrow]{ll} \\ + & \text{monomorphism} \ar[Rightarrow]{urr}[swap]{\text{epi-regular}} && +\end{tikzcd}$$ + +$$\begin{tikzcd}[column sep=-30pt, row sep=40pt,nodes={inner sep=10pt}] +& \text{isomorphism} \ar[Rightarrow]{dr} \ar[Rightarrow]{dl} & & \\ +\text{split epimorphism} \ar[Rightarrow]{dr} && \text{effective epimorphism} \ar[Rightarrow]{dl} & \\ + & \text{regular epimorphism} \ar[Rightarrow]{rr} & & \text{strict epimorphism} \ar[Rightarrow]{ul}[swap]{\text{pullbacks}} \ar[Rightarrow]{d} \\ + & \text{extremal epimorphism} \ar[Rightarrow]{u}{\text{regular\;}} \ar[Rightarrow]{d} & & \text{strong epimorphism} \ar[Rightarrow]{ll} \\ + & \text{epimorphism} \ar[Rightarrow]{urr}[swap]{\text{mono-regular}} && +\end{tikzcd} +``` diff --git a/database/data/morphism-properties/effective epimorphism.yaml b/database/data/morphism-properties/effective epimorphism.yaml index 2726981f..13b0e611 100644 --- a/database/data/morphism-properties/effective epimorphism.yaml +++ b/database/data/morphism-properties/effective epimorphism.yaml @@ -3,7 +3,7 @@ relation: is an description: >- A morphism $p : A \to B$ is an effective epimorphism if the pullback $A \times_B A$ exists and $p$ is the coequalizer of the two projections $p_1,p_2 : A \times_B A \rightrightarrows A$. - By the implications below, effective epimorphisms are closely related to strict and regular epimorphisms. Every effective epimorphism is regular and hence strict, and in a category with pullbacks, every strict epimorphism is effective. Thus, in categories with pullbacks, all three mentioned classes of epimorphisms coincide. + By the implications below, effective epimorphisms are closely related to strict and regular epimorphisms. Every effective epimorphism is regular and hence strict, and in a category with pullbacks, every strict epimorphism is effective. Thus, in categories with pullbacks, all three mentioned classes of epimorphisms coincide. See also this overview. nlab_link: https://ncatlab.org/nlab/show/effective+epimorphism invariant_under_equivalences: true dual: effective monomorphism diff --git a/database/data/morphism-properties/effective monomorphism.yaml b/database/data/morphism-properties/effective monomorphism.yaml index 29c7449f..370bc44c 100644 --- a/database/data/morphism-properties/effective monomorphism.yaml +++ b/database/data/morphism-properties/effective monomorphism.yaml @@ -3,7 +3,7 @@ relation: is an description: >- A morphism $m : A \to B$ is an effective monomorphism if the pushout $B \sqcup_A B$ exists and $m$ is the equalizer of the two coprojections $i_1,i_2 : B \rightrightarrows B \sqcup_A B$. - By the implications below, effective monomorphisms are closely related to strict and regular monomorphisms. Every effective monomorphism is regular and hence strict, and in a category with pushouts, every strict monomorphism is effective. Thus, in categories with pushouts, all three mentioned classes of monomorphisms coincide. + By the implications below, effective monomorphisms are closely related to strict and regular monomorphisms. Every effective monomorphism is regular and hence strict, and in a category with pushouts, every strict monomorphism is effective. Thus, in categories with pushouts, all three mentioned classes of monomorphisms coincide. See also this overview. nlab_link: https://ncatlab.org/nlab/show/effective+monomorphism invariant_under_equivalences: true dual: effective epimorphism diff --git a/database/data/morphism-properties/extremal epimorphism.yaml b/database/data/morphism-properties/extremal epimorphism.yaml index 1aa7fbfa..78dbb4e0 100644 --- a/database/data/morphism-properties/extremal epimorphism.yaml +++ b/database/data/morphism-properties/extremal epimorphism.yaml @@ -3,7 +3,7 @@ relation: is an description: >- A morphism $e : A \to B$ is an extremal epimorphism if it is a epimorphism and whenever $e = m \circ g$ is a factorization in which $m$ is a monomorphism, then $m$ is an isomorphism. The condition that $e$ is an epimorphism follows from the factorization property when the category has equalizers, but in general, we need to explicitly demand it. - By the implications below, extremal epimorphisms are closed related to strong epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. + By the implications below, extremal epimorphisms are closely related to strong epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. See also this overview. nlab_link: https://ncatlab.org/nlab/show/extremal+epimorphism invariant_under_equivalences: true dual: extremal monomorphism diff --git a/database/data/morphism-properties/extremal monomorphism.yaml b/database/data/morphism-properties/extremal monomorphism.yaml index a229bc8d..7e3a2893 100644 --- a/database/data/morphism-properties/extremal monomorphism.yaml +++ b/database/data/morphism-properties/extremal monomorphism.yaml @@ -3,7 +3,7 @@ relation: is an description: >- A morphism $m : A \to B$ is an extremal monomorphism if it is a monomorphism and whenever $m = g \circ e$ is a factorization in which $e$ is an epimorphism, then $e$ is an isomorphism. The condition that $m$ is a monomorphism follows from the factorization property when the category has coequalizers, but in general, we need to explicitly demand it. - By the implications below, extremal monomorphisms are closed related to strong monomorphisms: every strong monomorphism is extremal, and the converse holds when pushouts exist. + By the implications below, extremal monomorphisms are closely related to strong monomorphisms: every strong monomorphism is extremal, and the converse holds when pushouts exist. See also this overview. nlab_link: https://ncatlab.org/nlab/show/extremal+monomorphism invariant_under_equivalences: true dual: extremal epimorphism diff --git a/database/data/morphism-properties/strict epimorphism.yaml b/database/data/morphism-properties/strict epimorphism.yaml index 25162d5c..e6262297 100644 --- a/database/data/morphism-properties/strict epimorphism.yaml +++ b/database/data/morphism-properties/strict epimorphism.yaml @@ -3,7 +3,7 @@ relation: is a description: >- A morphism $p : A \to B$ is a strict epimorphism if it is the joint coequalizer of all pairs of morphisms $g,h : C \rightrightarrows A$ that it coequalizes. That is, $p$ is an epimorphism, and a morphism $t : A \to T$ factors through $p$ if we have $t \circ g = t \circ h$ for all morphisms $g,h : C \rightrightarrows A$ that satisfy $p \circ g = p \circ h$. That is, the minimal requirement for a morphism to factor through $p$ is actually sufficient. - By the implications below, strict epimorphisms are closely related to effective and regular epimorphisms. Every effective epimorphism is regular and hence strict, and in a category with pullbacks, every strict epimorphism is effective. Thus, in categories with pullbacks, all three mentioned classes of epimorphisms coincide. + By the implications below, strict epimorphisms are closely related to effective and regular epimorphisms. Every effective epimorphism is regular and hence strict, and in a category with pullbacks, every strict epimorphism is effective. Thus, in categories with pullbacks, all three mentioned classes of epimorphisms coincide. See also this overview. nlab_link: https://ncatlab.org/nlab/show/strict+epimorphism invariant_under_equivalences: true dual: strict monomorphism diff --git a/database/data/morphism-properties/strict monomorphism.yaml b/database/data/morphism-properties/strict monomorphism.yaml index df2623ec..fec5812f 100644 --- a/database/data/morphism-properties/strict monomorphism.yaml +++ b/database/data/morphism-properties/strict monomorphism.yaml @@ -3,7 +3,7 @@ relation: is a description: >- A morphism $m : A \to B$ is a strict monomorphism if it is the joint equalizer of all pairs of morphisms $g,h : B \rightrightarrows C$ that it equalizes. That is, $m$ is a monomorphism, and a morphism $t : T \to B$ factors through $m$ if we have $g \circ t = h \circ t$ for all morphisms $g,h : B \rightrightarrows C$ that satisfy $g \circ m = h \circ m$. That is, the minimal requirement for a morphism to factor through $m$ is actually sufficient. - By the implications below, strict monomorphisms are closely related to effective and regular monomorphisms. Every effective monomorphism is regular and hence strict, and in a category with pushouts, every strict monomorphism is effective. Thus, in categories with pushouts, all three mentioned classes of monomorphisms coincide. + By the implications below, strict monomorphisms are closely related to effective and regular monomorphisms. Every effective monomorphism is regular and hence strict, and in a category with pushouts, every strict monomorphism is effective. Thus, in categories with pushouts, all three mentioned classes of monomorphisms coincide. See also this overview. nlab_link: https://ncatlab.org/nlab/show/strict+monomorphism invariant_under_equivalences: true dual: strict epimorphism diff --git a/database/data/morphism-properties/strong epimorphism.yaml b/database/data/morphism-properties/strong epimorphism.yaml index 72beead0..9af2d3f0 100644 --- a/database/data/morphism-properties/strong epimorphism.yaml +++ b/database/data/morphism-properties/strong epimorphism.yaml @@ -7,7 +7,7 @@ description: >- $$\begin{CD} A @>e>> B \\ @VVV \swarrow @VVV \\ C @>>m> D \end{CD}$$ If the category has equalizers, the orthogonality condition already implies that $e$ is an epimorphism, but in general, we need to demand this. - By the implications below, strong epimorphisms are closed related to extremal epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. + By the implications below, strong epimorphisms are closely related to extremal epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. See also this overview. nlab_link: https://ncatlab.org/nlab/show/strong+epimorphism invariant_under_equivalences: true dual: strong monomorphism diff --git a/database/data/morphism-properties/strong monomorphism.yaml b/database/data/morphism-properties/strong monomorphism.yaml index 22646378..1d42dc23 100644 --- a/database/data/morphism-properties/strong monomorphism.yaml +++ b/database/data/morphism-properties/strong monomorphism.yaml @@ -7,7 +7,7 @@ description: >- $$\begin{CD} C @>e>> D \\ @VVV \swarrow @VVV \\ A @>>m> B \end{CD}$$ If the category has coequalizers, the orthogonality condition already implies that $m$ is a monomorphism, but in general, we need to demand this. - By the implications below, strong monomorphisms are closed related to extremal monomorphisms: every strong monomorphism is extremal, and the converse holds when pushouts exist. + By the implications below, strong monomorphisms are closely related to extremal monomorphisms: every strong monomorphism is extremal, and the converse holds when pushouts exist. See also this overview. nlab_link: https://ncatlab.org/nlab/show/strong+monomorphism invariant_under_equivalences: true dual: strong epimorphism diff --git a/src/routes/[type]-implications/+page.svelte b/src/routes/[type]-implications/+page.svelte index c3ba82ca..46c8dbca 100644 --- a/src/routes/[type]-implications/+page.svelte +++ b/src/routes/[type]-implications/+page.svelte @@ -47,6 +47,12 @@ each morphism whenever applicable. Moreover, implications are automatically dualized when the corresponding dual properties exist.

+ +

+ See this page for a graphical + overview of the relationships between the various types of epimorphisms and + monomorphisms. +

{/if}

diff --git a/src/routes/content/[id]/+page.svelte b/src/routes/content/[id]/+page.svelte index 8c722cbb..3d6fa10c 100644 --- a/src/routes/content/[id]/+page.svelte +++ b/src/routes/content/[id]/+page.svelte @@ -96,5 +96,16 @@ :global(p:has(span.qed:only-child)) { height: 1lh; } + + :global(pre) { + padding: 1rem; + border-radius: 0.75rem; + font-size: 0.875rem; + background-color: var(--secondary-bg-color); + } + + :global(pre code) { + white-space: pre-wrap; + } } diff --git a/static/img/epis.webp b/static/img/epis.webp new file mode 100644 index 0000000000000000000000000000000000000000..a2a62d3c81bb9d1c826cf017131177d3a70de7ee GIT binary patch literal 42172 zcmeFXRa9MBx(157ySuw!B zAMSpEF&2BRIsf_ppDh$6#l>s$fPmD*gymJ`xrmB>`TcSqG#!{m6H)@4KUyMFIzNw; zglOh4stN`Av(2mN#8Kw$2&&k~8^e3#R^g76JzX$6k^5Aa`B|fRm0kKoKD5 zU2R(LmGH`Iw=L|==#}zi;~KC9FyZg?%J6aqgg;2$JiJCOdR-D&@qYz)y$N(8-ejI{ z+zSi>%HI~B)!wxLgwF!^nYHV)0vrHpK;)a;b7WNHzTT3+x|bJ#7jW>p0QlwO>;(Y0 zy?^kW|K(>QU}F#Uz6Jnzs|0MJ?grXli*P*=r@2Rs^Glc!lCeg{U=Iwz?fif6!eB;f zP43zN;-+Kvr%{XYGLR*O^PS)a``&Mj+kC6`1m|3l&UhbNB1qQ;kbiQaSrL@T06Z>w|^<{`Utkq$Z7 zY~#^Td+=uMHieGa__zq`TdB+Ey^vg5lra^A>N-fA<^NONK0p{Ou*H<-Qe)dsZ6vy_ zQUjOiLHf9b!!HTllBUIMuOQ`iBFKbsvjTR5fa&d-0-9bic&A25aIi~mn0`?Z!R#l8Q>rZ7!B-Zw{8`{iid4KZ4A1uXuH)A{|_ zwmep`!Xbu)7E$*AXvfOm8arC8rx~to3u}lJuuLV^tpE2D{{0@m6-Iwfr%An)L<6aM z=s~sOmt7DFeDbS^dd{2Gs!B23Y|H%bkIfG#><3x_TP@t}G%mA|UBfSv5^|4;%ewre zh2e+^@80r0!zCxKQ}>^`@SkfuVb>?Qu+-OBBqln2dHQt%a}UROY9&O&j8c46&YmZC zZ1Skd1P=c5B&I*uD<)d>r!%54E!0mb{5lLP>09K!ptUp#PI)BDKtEA^w2rSQl7+9g8e_=PA~Ng zX*DG0sHI?NH9X(47)BEDpU0Wz9*Uebh8)J@#`2#AcI#a*kTao8P7y7J z@a8xC&D{-x4Rv_dJNwUVACCHG93Y`R%dbG!9_oT*`Nyuv@>zrw@uxbjkjB2{S~vah&Y6$@9VjWb&Y7%zB=^5~7X%%VPSp35xWcn-m<(?b*U z?ZvO5AYsWEG96zJB`*#wOMk2Cm6P_}q0dsC{M8Tt5``wXV_m;$giQUdEoSWKv!$pP zjpJMaSIqK84OWMX_W6pH>n8IY3kMY{rPEUkGsoAhvCk91W=&ld^}<924+p(b>|}Br z7Y%-AEg+F^_$+tv)Y{38gqgx3E&YCyJy~cV#STsnwJC<`JBY-?NUD3?L+F2{mua58 zy(hqw5U2s3cegbnP4Da>g=b~NmjFA;zMOuxyow2Hxoh(pt^sA|a#k67lEVOT#*plY zF9(NZ=eA>IgcORp!2?5lyuh46;=3)F)1PS${8l7=&ut1G!+hpT8X zOw=z^?PINWY=u#2iJB2I5CkPj>qDR-M`)^X7}g8{E3;LlB-5*iA$59gvgF4BQRG!# z>DP@HUNZTx&n$=GbR({iP+}?S_OFv>G2fD(b+*)}YY{ z^)+np=GiHPtYV7};nr*NKM*?p$XeeG2`k7aZ2qaJSJb(U4TQ$X@~^~_#DM<_JAM%| zSuFoXjGr?Z9-Kz%pJfA=vg+z@DD(60{6i~AE^Wb-PCtG!dXULf6@dPuY6_X8gW3?> ztkW~}MzbgQ;jI?7kJxe6fi<*aHU3@qZpQ{sf=D>slrk^2@o2-q}b{UVN@APmtd# zs=sZ~fc(&x5pc1H`YGE+^RD6_yu14#s0|sjjd6{zEcEpxnZZ)rREr!O$YnXjkjA6^2-ChEU4r=<7JX>;|vb}0l#lac*z zV-a#P+l>Mjl%!~o3=ihNDuY^P& z@rHg^N3mP%;QdC0>x#R!r&X6Ebs3NDx( z!f{19qkNYp(s7&t9V@@9$gNk!2r|%z(xW~Xvosm8<$sp%ceekNvj{oL&J`dHpEMvU zqFgfihfvZGOxJj;hRjDIR|LqE)BHgu{(`)+x?hAxr7^kUYca0=?zXv}J+|>w&eM28xF)XA$_K?b(B9)=>I!@>RRmA2l;&di7CSv z#`)>&=@FVg3oZ?O4nS@A>aCY)T!BjnW+Fnq;smwJ4AMpkF z7*@DlDxgh_myS@&Z&nRL$hzo*n0zW2GrPL%g?3&lx#&$BF zVODb9{gqc$2`lp+X-BPn%DWp^X;opayZ=~Lf34YG}9 zUgVZIJb-%qHe>qQoG=aMNVF;=5ZJ&rRo5;AQ?D&wU`dpRcUG{3Va;q{*Qe8Kaw?J8 zEDkC39GLBXx6h+9anUR8iCi4E$a&pZ*U)$vA<3VLXhqslOtLqiStc+1lg*vGKUqr- zMr))wsB_eN#Oy<7(GALXki&UT5})Kjau>LzmhygK*jY9t3hSbO51kVYhbnCFi~<#p zyH6v`fy2wWy&$x~CSe|Ngyb#vp0P6DUQXzkV5tY!z3Jv|CMz2JHqNAYYMQ?2Va+mi z94nL-G@#Moqao-7hm;f*@gPGKHNv3{2oiBfSHeK4flx0A0&mh`RN;U12KFBE?hMN6c_S? zJNAx$jfsXX$$||n=KUxB0|@-;e|O^oY#A?nyqz2?iJ}KdCXH1@oI|9nN5kKV^mZ*H zE1)hVO+}8OO?A@1UN`w&$eU6{^AfNBKmfnVF`&OIjRKnvbDVxmcCyU))I{SwZ|LIr$(W8C1{9HDFO{wzw zx3p>gozk(A0kJZo^}wk7d0W z=zbRgAL=tsECIq$u3i*Dby-Iz*(k~#U)v5xs|%{UyBpGa-o>w)_?N5p(;dyP@pf1W z7Ee`VgZ1tTAhl29C-!A*r;YZ*Mt;?-f|1*)G@1z*ZZ%jy*BM%3b2=@^xfY6tSB26= z>Q)lu*`NhYcxw74j&C3uLF2Q)rB-8GmN7kENqcnTMyU`tp>4WVQtX>9^8 zG%QlTcK#*HP7a^QPK6})oZHv16}Wu3dTsl}&QKJT&tR!)%Yojj^s5VhqkHcQQf!Ja zhYK?67Gk>fvAS)N$Gb&49^Hu#B9{3KU2hp^zLjeLRWC6QZefos9l}j~g|AWvf;g$- zHql@o2Gwz1yAL5?OyYjXy>Ydk`{=U-s@)qJlIo&?o%VEC4b#>KmyAD{mVZG^0df!WKv@9Pr^_AI z-3W+&5XOBy#1&}<7;`X9HPE=3oseC{B{~KQg4U`&PWDwfu7D)?*jE#h|0QnitrMW8$* z$0<6uYf0V+u-s+!oxDY^sk}Cb{O#qVW;fkYgP;H;P*lHrncoS8CO0byEmZ3LWjtIw zizOPVO#5FraCBykUPB0zh0qUT!G7|SRQfMe^B1ZA`$PU5Ep9(Pr0t3S#(e*r)GNy> ziqh9u{Qy7Y;sw6zpFqu@6C%?2qsu=#85~rl7EHB z|H*?)cw~P#a?|{;9HAXgp`bKb0RDEbeVtc~4-EWu|0#zI_!I2nY*?o6!4KKKp2L9s z0C0m70xB9U|BDi?6#s!2W#hd80OGQ%zUt@^)9mvqtD_eM@FvRNsQ2$gx@k6M-*3*K zY;VK#)1tFkB0Z;xp6DuI6M)sfcoO`)@N>8Mr(OczKKhKI}cE+XLKh6t{=6kzJOlRhul#J10~eHYx*(AX?bS=8@Ay zqELd5*Z$)$NWMD{6q>syfs@vdT^q!s1YuT(0&c5wR-l*Z5xvhHT5ii}bIAYbpPyvG zT7_MW|A?CTMix$~(#U-!Fa!3rR(?Esy$RP^T#~c>5^R$yJ_>pUPbd6mT46GbQe*$H zTFN&Gw^9rvZeiN{Z3ggM^Br$G!7#HUr!|QL(gQ|Z`B#LAkNl}n{2zS9H}WjAP=iT= z7K1_W-k+6o%=zB`q6f&CgGTwkya$7)%nN$GM*d?`_1A3h&ld4#@1*|Y^atHs-Oj?V~xwOk9n9F$b8L z4Sue`%eAxTs&iqTm_ahRI;k0%UPy%RO}Qwtu@dnB;v#ZZnSN|oFHwaEM)|ZO3)7C5 z?6VC1`5J0NiAr`6!gw~%eq}C>-{YzODJFlix^4faSWpIRe>~M;azQ-bGRS!fCSWEY z>6ACubv~WhsH-sbvF3Hh@kiR3=latsko;ln&nhnS*G&Oe1F%U?mj*1<>VG3&fAYkm zdB1uadDx@>Rh9k!7k=yf4}w7NfSq)p-#+ZBluGP)xs$D(*`RMAo>6a!f_}-V{xpDM z-aAw;3{DUGSVTMHYjDk7oKI#*nj7%FWk85gRI}n;@@^7SM{fbxTFTe%PIr6$C;K&KcPw9M0orDAiQxqw-T+qx&8$+tU;P0>?2BDPYLM4F2^m{koFXT}OZb|EyLPG6Feh#R%Qw6l(cawDWeFmY z^je76=@9G4{$>fIH=Xv@pn&I)aK!IxKe?0~qlkC3!BZO2iQp`FW92N5m0QQ@RfNuhrv*DZn1kgHLx4(_- z<_r$My&B2wYU7NyHF9cBB&tw6qFn=etkhuL1phbEW!BDiddy-Y^dGYk_)MkLLX(Uf zGaScmaG9X!bov+%Y?&QU&j3;z~GT0V*Fw*7sr?Re~n~8z+Rm z)gv%1KCYkAM4vn(Sal;s@LdUE@JT0i_jSy`?IEKA31aD3LP=6rDo$)bqC{jq!gMHG zEA+IKK5TPLCSOe1i&b zD%rN|3mmAtC7`7mM9<^xaxlpIT%m39={X>qYQdtEpPN)3P*lOYQ{a(){BV}O_GyZ; zvdc+Mcq^D=3>aTNOK1rP&VRf9lAn3#jn;tTV%bZ7k+WxTAN~;6%3Y$lH0GEgFA(oE zVc@CF_STcPA0YA=Lf8oegy;>tNCfoFRQePBGdMWHx^$_M$&ru=9-pzTJ5)nf(;9d$_>_ZQy~%5tBs!xrVEW37gxp~zR97VbTX;BQVdlvwzNZ=~2Fh(`sxoa_mangA=!Kuw_JUJV1G$WX zbuRAt`bYL&MW|8RCIq``!G&RN?b$rCqsGvNQDGX@UZYvWP;YRCQR<_%S2AkE>A?`~ z9o$9a$?;&m|Hw9Vo2Ne!y!Po+y4<1T=JiaY$?sTGZ&0vGz%x;^1_8Mfku^ zo5(EC4yv7$*PS-F*yZ+TW}^Ch7_g9ZgeKc4gwYxcgU3BJ&lF;^4P{}C)}KRfpHr_S!t9tyUS~v?!PeE{k*7- z=;!qpPcKfWlgP|{9U;9I*{y-%Tk#1rlfGZ6PX8^+A|UtaOLK}z!K?*M=%KaCK0rqO z?g7^td7sJQaKHSjeLLK^`Qv+1^5JLJ0eh8?5b{<;`^+{?CSLI5$!0ElZkd(gd7_z) zB7%4C)J2X!AT_vQ{WO<`hkCd!6&G$B|%-{e;{lNFXE`wPzlzzGdTzr-6lN>+2)E&<;M&2?4-+?`-6nR43#|F!iPgjwc>0W_S%L@@o;AG%{Bo@C5f=2*XYG;)cG!1~ z=>l=O7PZvEZ$4H)mxyDPF%eNEn1pj{S`Z}VG}qW|1S2VtW|3^cKtPJ*%=UxCSTv|x zHhNp=!XFZKRp}DC7BGOyv;3=c<3ntl7!9NNXQDU^ASQmHL>GN z%|E>&>I&`qQ%_M;b-E&bs+gm$K#U0y>zmUlMX3$F5{vL>{oD#Gob{E#IGzS`@`V(< z5z7LdlaD)6lbsj^iPjF(57Yp^rG!&h8F?Tc!DCL7$Ur6+-1)&vj>hQp>e$`V*5W{&2qc$hX>1r#|GcA=+ol&O>^R z9-3F(0T0X zEhEX!H;(QzTU14nj3$yXjYW%V{?dpef^Cp#B*)7N%4EfASPO)z4xFOq8|WM8{zNrZ z$Ov@jhaD)a8wU0vJ|<9LLC7pyX*49b>(pYyLe@>ZK5F2DT4hOrGjv-^gJ^r>Rg@Ko41d#|;%2u8W4R+0s>yn>Q`sJTK15fF$O z1mYbbCW4O7FqutUG@qRWBuLW(Zb`NbHZ|#;FZYOgpvdqt3AS@DOyoUUcg1|ZCY_pL zI!l2w^kmQBC<`fXa*hV;nY%Syvu=&IMi<$EGxJD-Lchq->b?13N!)ga2%3faVuM(u zpmYX1INvofCKRe7rw)XeI-Nvi^oXu&{Gw`r^cdTSe|B+S7z$VTXGN1T1MF-LB>1<8Cd>2rm)TXZA=9G_}D) zIMGgc4>rw{OG>zw=KFxjQMc9UY6599q>QW4jJwb;H+!pM$B<06qxcZr-y2w%flkpH z;Jb%|SH+T8M5#wEjA;7Zx!9vcGe?yg;->ls1OXrLy522#9ZmihpsM4>O{N0JI@QAY z7(otq2ra+Uh_BzB9+SjVUF4yFHi6(#p`eob_6bC;47;jUPX@M=VCcf^X8aNd3FF1R zG9B4S8psAz!M{1_`q^Uv)xYOQ(yT$`(&N0woAX6ho_+Dv7q*V)?3`Yob0khV?f^4> zO5|JsZc|Jd#+Aez6R1g9L!b3<@LCzHrW+k*;qwYLVW6R5vu3AWrF*Tr8Msxt;G&jER?u>f!sv2m0 z=N3YbMrT5Mv7`|A62)t?b6ZW5lEfep*lP|Pzkfb2sy0rmu~Ln}w4^Ndpqc@NZ#=V- z`8t;-RdKu(=5FvRyMeFs`rNGHefJeGOy>yHXFDpq_^-*x-ay>v0LU;=r-PvM3qda+ zya!iD%^>zPA;`0r$l}^OZDR{aWn1kQ9-y78Tgz+8vS|G z5#n7_h^g&!D->)wySl|5Rl+xAh*gH(MmyWQ=2U*WEz8QQwZ%ILYIH2UvF}R?G}!OLzf!JJ>hGw2{JzINdMcYH z`xXr}+=U~(?kzeJq-djeIs|5b%AV!EU^H(y6C@3D#27Z0*4soW@(uc4c9)WJ>)dcN zkyOz{eamBMBs}46S_#WzV`qi554U>JE%P=9PGC~T(dX=4UmLsY<9%Esk23WK@sFxf zi`L)u2>N9~e!zUcdq%-snSjVgEh8Qfb!K|{cBclB0po>t4TPh0e0Os=mQc)WsUrZG zJXl9rm#9BBwT0!iu_thGX;$Bptq@DW{D|9+rh`#2KKp1lYl(w{mkV& znlLWxcu0vEuZyhb(&`jvL*wLC}{ng^RWgiIia%kk) zc14w+-+UHb%KBvo_PUIAGTc(|;{)UCi|CJp@@>S2V)v28$vlkJL$-S$tPM1BU0Ngz zKUF2}uW{hUN87$>xpbW91Af1f8n=O_R4+UxIinc(Nv+U0A<$ zUOqK`DFrH|EtwNs!)af#;W5*IY+Jiyk5mMM0gDX)O$zp~@00K|a~K`NyS?H97V`#y z%11MU7g}QAn)V`G`^tLu(If-Hz_9bN;x5JG?sNtGkV3)z!s!(1x)0rp26!NBG{_aG zBi3*Z3h5~%-}4i5Ld{ut!iZiQou2eEFLvNGX>D(yPT(O6zAY|GospmS-mq&5!_Cx( znGt*+=^nG?&Y>Ed0PpJu=L8-KNWz0&I-UFSA)h@a9SRs(Om@3jAoiYR|0)ao^7~z3 z=URr(+T|0aC+Cu?9B_M87b$c&flMh+K3M6#P$1oI1!QpzEh9dw$54Qh3=*GTs5 z**c#UeB=t)>_W7Bd$Su}8z&mh&$7*abUna5nZueg&9D;@JUNspv#kBF4p&CvD=a5& zfaK2Et;q*f_k{_UJp#AAm_ob9s%}Cmz#X^VZglcFK?}oRB`_=vp6uwdx&$ zC{}f0d<(O*PJ{W7U(e7#RXKrPQh($~w{2g%t2H+bLBg9U!K{un?Wqd?I#BX`>}lv} zpo5b2o#4v!1}HcQXvgLKlu+TVPE4r%>nDtay+dpa0^lbP3psy;wmiA&Ot>x`32HCw zubitnszD^@&Np8TC9^-cbByB414o;Gjgd718IVa44Z3ciZq;J$;(4bqIyz3jOJuRe zc#@5;QwE0i{#?;T4UVRRtqtyAg5Y|0+jNiQg#40F`-9F|OI}UQh0GPTK8gVTX?V^6 zjG*d!MeY+7&#$gP#?GWpUHIzxZE(SVeLXoj(tsy~s1xjYA;hJq8qJS#y7GOMqpBI7|JblM!%RdQb+;>;fKbsSc>@+rzk-9Xe7k-Jwa2)*Q-K+CgCIdj@*(aH&z zLPOoL-k@qj8?7|+`9SI`kgYFy-odcfph3y;Exf1jG&*9P>9F9B#WNZm%%64P)TNz5 z)Pa42CDhr0Lw+dHoHe4{=4P3O0mneO4vFH63oZ{1a;P;%Ci0Aq$|*4j{>u^33g8Gm zp9vvU!rb6RG!O)J=Xu`82gB$_x9I%n^~GrGF1l%lR#*y`?BLmsNzV!f&5I7lVK}#3 zFKY^OG^v+1$!68YZ@X3r)5^-xBYe#yGg!}DKsukD2(RFEJ?Kr33ro}c#OcJbjv}-i zy#%WYY_TW^`xwJbn0vj%w-98OKboRZ_3F0?uyclKt#a65 zm;n%tT!NN-Sr%AE%v{PwC`H;dp6gnR6oGq$j3ltCk>?6ApM;Sxe)EfRR(nURc5|AkeG!UF{A-AKv)Q zSDOI#J0jxk>`lfhQ8V@V`P7}~81olB8joJWT)NWC6bf>St=6=cb32Bn%0hOobb!j~ z4U1n(KW#aAT_lTvLZLE^<+-TXOSubgK8;4GJ@N&$SlmE zt6hbkumZsv`LaA+NtM?Iq$*H8_=Gss-^-EFMP^sTbp%?wx%Q`7^Gb43DNf|TYC_(2 zBTm&#d|)S9DiO`!;BQC-1IHR60Yea{4Gs9H3;C*TRL06b$XHXjf?x_o4yCOX*vh9T zwE+1M8e}^}>~h+fi^1WA7!+c6SC`pB|DN5xD>2c?M>+h5s{9YOsHN46(3U5~n+UcW z!HgAie8WyY1iX^~#7%w9{RxAsnTJqxy<0Z$=}?1D%3rccb+1qkFuxya;TN_!uQkP! zeuPy{cJ7M>JL{6RG&-KxL?0hRQ(v8LOVA|CN<0nU1+q&^hltrd5 zaX&BFBbeOkg@+qtlODSO#l!4NZ(YAZ@8fZOUL`bu+2%C4qAc@`(X*XHw>+IcZ_sB< zaZ#X2b2NFOkukTnsJ`a@gRV{C#|-L68)S}CN6NfCc^A6l1&{_sM*9|{=XM&nk>EMt z9C>gpRsoQcSlC~pmWJDsJ@YT>??Pe1#B(p)-D%|c&nFvFzC-33C8t$A=1@s_H{ZCO zU`KW#ho)NCrlhIo(uZryksGs^Yu=|)1viZzLj-F$!DWKYg7r}~^Vv>8YYx}Na>;!o zFpCgo8;>zCTLOrodm}p2-iQ`jc_ptHm#<<~mFX>?Jo6*j;atr}zN=iSDJ`x;y{Q2m zBU-nSl6z##((E^1dUwL!j7RpKatnfy90d4QF!Q`W(os6r7)6@W+W;wh#ekI<74nKN z#<9$oHX2GQA`YaQsr70yb0`#}CDbxIw{9*HMOC}So5bQ4HVu_J5hh8|GK)3-x&WTPbyOY(JqB}K*$viwxjnhYEra?{~`<>cw;cWX2X+bopX6TcgZ)n_@a#=~4$p-}Vhr+-X!MlI|K_ z)^%gmLw~XG2)eLK44{^+b4x6O&QmvQ8_1b~05|fd+D7FBKrmmNp|=kd7}=?{wibtW zYP(9U^-~N5uByG3ID*XUf>2y+u=EXC3Q^M(8uKw}*hCu-VBgpDA6<0Ks z0c?Q^0_XUkj||D%^qHAHzZUdn_h8t773=gPiv<-o>Di4GAnx23`{BZYY(N{+Ei-Pn zDwEiob#qCwT5^?&!I#eSK#DZ`YosU``K&zDY8i&;K$)VN$w2dWa#Y!mH8mGrDHI}M zmWD;B!-b+BiKyK!?_#Lct=Fy17LN-19;^J2GlpWgAzo(!!FQi1hMET}9o}OGYeu3P z-c;{*L0{ujEa6G=xE-5^x3-mr5t-I5jGw+t$g%Ol3Z7_ z2!WUYj(mXYCsh$xN8qV5Bk}JxI+zT2c5v30FI zvKmPEJv;$yOaH=JcJgcaUbN&9aXpHjOIwpz{A#5s2jIxc7xs+9^-;u=gVnpcsf~lx zH+WdpisZUsj?MNK$JY_`@X7FoHx0#dNZUG`HS>wWq~T68C5cilSD;&MT;Oxi9G%g~ zN^30Kh;`%u^%ZJFC3?C4I|Kc))KHruxlHPNM8y{RB-;{#`<*1`TyjF7$#;pJw*$4hcv0#Zr+005sJ;yMF??B6jTO>lh<(#6E zo=wu1x6{7etShiF_(&5*)5^_r+SskdrW+mKWnd9|c0S;+-&RAU!P=$u0EAr-mhLv0 zxux=8S08)`A4qRV#$lKwG9V#8j|{N@o6i$BN4U;!w@l`d`apCZ$tA_J`lEAeqI)ov zv~(e6?|6KL^_`tuc+R5o332er=b!RLEp>$&R9nb4O6WODxg`sA{lOX>`bF?ju#iFD zKS5C3b-_>tsl zgp;rvM-t#LhS1b**nBNtDH5pECdES8Gsz{{pW0l=T_$nU=nLn7r?7C-R)x5xTW=QU zea|p+0xH{sBv6>>@f~C08hv&MeeJE0E0;ReyzCi`O8BJ($3f)fpY5&{=E9+Eou7ML zOf~NBTXPFRMEKTlbkan)zl$0)5+|^b|w3i#U;6dkt%a;`d z<9lBAHjIp}=SydPo|&vZSN?C{L}vN4vH8} z$2kR~ueX@^ENt_vwpGO;1a`g?p{JOq2I@HM9*|)N$|5Rao1J~ifi1I#O50GRQxgpQ z!S20qjvCLTsVX@>HQL;{pw#@afMXn*Stxu}I?xmGn-AAQhGy=3c6OkWhP5%PL!d*A z*<+;PuwTpZ6-ApL2zDaRN;m>?#&=hSeY*nWuTHzN;j{+G1}zIjfy^reAh`;|3siCe z6PL2$9vG&1K#PiSKs)J^%&JI=3%BmbBYU&DyfG{kIUi4D<6&*$2iZsUC{JHpS}KrF z#i^yneUp|I1o1yv89CMOzT31DLzM4QGZKi?xLa$wzATe`7lbQRpd|uVfo?O+(gy$BKU+^% zG%io*kCmCxC9$l=dUO;8cE3)fk1A*eoY$w%o-EFM5aGl3?QXI%v>*;``Ot-L4&b9` z5Ed1uxzTIwPnJdSX#b!X!623w35m{WrczHz*z@+|0#2Fg9y_Lr=tjEk^lT`YS%T(! zaR}my6XCQMDo#N!Fke@*Udw^}7fKU9A~pV;ys!F&q4Q&glGGr4gTa z5(PgxSjzgL?>?QP`DDaZ$Rb26Sem7WxD99L;kCn_a8fZ@;WFtE?x;ipv>vv6 zs6`mXGz3H{{YfL4KWSclFo6xLo{|t9Yxcymnw^TUYCIIJCo+>c;J&nwyX;3zHI2R0 zp`xCtx{-|R7ieH0?p4WX2Rt9QQ}1fo1~1SW($5VeX+)`2-&>bDcbX_EZj9Bs#}Io3 zP#PTdJoF&8UAuqjaIjT4Sf3@=!Q#K$#dbJumo7 zs{kq|E*4zYwZx@LYb$K+0a313pqE==?O?T1{jRDoD(7}f6(tz|*BuG+A8(gNN}M>z zT%d0FCU>N9p9P6=(3g`uP~G03#2Z6(K0iFmDecSh=c};8H4gbHm{oGYjqM_K<#a*d zWH&44ASJr@EP{g3f1)>X`Wg}(?zZlal#!%T;TSNBe!_3as&0_ic92xrv`e^0d9znS z{>AmB$pZ`3=>XU!DdCv@qS`%1P7@Z)BK z^R(HkYtQD5I=9(l=?dK1_>k4iAt6hV0kKpu?+8Kx0qw&PjhEepP$6dXu8(;Zqmq{YytJ!K$hFoVdJ zoS7(LykEo<_DP!xNEw0W{#gOpjNB!+QI9+*L*1}(pj+-H)MHB#Xy0QMhsMNWJ3hcb zGBK2S&Nd6_;&Z9+2W)Ito5~=*tR)Wm;g26wi)KGyw$TD@pqGFxL)TojZG`f4r?6GZ zw~Nx_b1%RQYD%tNV4`W!>Zxu+Lr)UIQS9=Ws`sHrOj<7A!y-jWBQ6@5oKf`iREd=} zBx;LM*}@VO$-~ld`;7XJRcSxRB1dSenh`p36Hceitf#e?p9wRRf5bIKxN*CEe}SRu zTq+^r42ahWd_@aAhEhXbG5r__EjdhFVijF==-de!f&qCm1F1YGdvxd-O8G$+=GQAiM=5`bB}H zDA?(8c<{82^F%8OvGESlYD)e)QU!34OyE%*Ioo2gFjx2SH1f5})(ni2dHAkv@vSa$ z&delR5$aI$8uQpNQyjZVQGxUYs`ll~_MQqseVWG_6K)nnXRHodUP;T)Qdpc`d6J|w zgRcf~C4v>TlGR@i4R=-TwN#8Zu5>G=Dx1K);Zk61A~lyD=Uv7t3nO^CYhGgsDS0?b zpcLr0@KXsn_v5`$Hw8EeQT7(k&Z8+5mZ4eXbm~!Z>Nr3Kkwn&X**j(H zE~TAgiHzX4HFp(fdtX4GcUmx_UY+2!6o(fC$J#(#f9999(9J_}kXP?4OFqM~CF$&l zs=n%*Q?+2f@~NE^n+5Nu8aXkJ)eL7os%IKwTBW}$)m}3>V$3jX;Ou12p<*0QK#A&( z-JY}`ZS<7{4JD3N=*)O_d&d4+GY+wsGZ)bXq@j~hJUF@d;c=-ownC6=T=*)Kq%I7T z^r}8fEt`GxpxYD`t7eg4C<5;?HiCvRp&C`guHyD|H`OXekvQ9xRHI(HW~^h~}DhkcT-peM@C82#8U{28Tip_H8Fx2~G$A)>T*MI_L@pn-ur zJf7%CUfFEH%h5qAi1;VRt^?UJgIXyR(9(ox|43SA&bKuW@HN+^RZpI9V?RgfgzKrf z_ehI<0Z`Z$Cu3&mNp)J&Ap=kjbnbvyqIfpb|M04gNls33U?9 zYHodPd(J&DQ4! z=W>?*w?gN;@mkI<9I7j$a?7G>?Z9+fHb1+H?=3?jUa9ptWPb5Y?b%`)7ScXix)x_| zO!S)U>CDE#+}b!E;u_%Q5i<_Fz>!uav_gPM8_#J zd2+;*uQOl$zFww;cVfx^OJ1v+{vNKY07G#KoE?Tu?>-z0RB=Ozzp^FRp z5C4h42L9y$d5#K&bYz42c3CJ4=eDP%K;5K{_C5K*Ujp*Z15LLX1iA*N1Bx_|(tjpP z`mmzgo+EbooNP5Tf9HcJ3Wo5J&X}TFZPOHfkP zG_zl^U>G)OlGpOPB^+5NDw+4WqI)3~=49i?+8S?X^=5un?>EhlplC{bJR^1L=GC9M#$$Od>!{+M zPb?!~Dd%9Pm+cJ1Es=w10}uwQH!2NiDuVQpw85yz-0eg%SL>m!(@vSACNInb*50`^ zIUrD044(#INhO?y!lk2k_9mHJ$lOx>+`KsLRo}i+YVS?nEw}U9uMgUDYNTT@#*s)X z%t9m0k0H96->ohe+*HQq;YoEhn$TEf{Fni!m18aA`)2U5o_>PB6Uc>cdWpnS=#(@Svn;`myEUNadcX)c&8~KSU?j6$0q3cjC*D65u0qh#FEyB zd)+Xlz8Zmr16kotqUUjH5=z*0#;^a2n5ZMzsLKM&$Iev);$lpEpg;~EZv2>7F&*ci z2-IG>m&6$X#b)R3fc@U1s8Ndr(n`M)Kh}q{0|FNq_-!DNq$Uq-TvwKFV8bAbARv+Y zz9mH%5F?#X^)eh<$6uu{I$ySQYLiG-uDGSZmJ2~vZ=u}z9nNPQ&t9cuBj zY&$|7lT<8%HHSI{RAW2Z(P;}i4~p$ibK6gabH0&m#KWsMFhnO(Xqw)T=#(}dL=`1@ zdtBxfM~v2pgGX3a8aI(ncqTp&NCuS0JQp!;Yzj_`QI~}ch2RkF=GPFogdoPpS|lp+ zrZ2LX2e&v>UGAE-*$o6Q_sUGYa0tZ2nA?`TClaz9OgwlK2r3G^UjQ-<9rSJ0O0+_t zY7wpBTP8PnBfDyfx?EnAQOpfuMYBeFJ@R1*uF#{hW$yz@rA*2&@l>=wON`!TB>Cq|QDg&asZ! z>{Z_(G-%Cl@f5&Y&p{B=W3NIQ6xv#{Te5{VPF}tgdUi_lPl8S;HX&5G{}MOi^mx>$ z*{mOs)4zU4AcPwWyd3VF%jDecFA414_+5(Jmf76_dO;lh-~L!Wzg|a1pEFNWp0b@X z=9UB4xItvmeA^e*J5Q4Z68kB)Evo|x-S)44jkQG%GDrp%640oti38js<95iXj9FkD%1Rws9IRtfK^a5n$VyYZVpmO(q&M7NjS z6@Wur{Aqq{X~tmvoSB%7?f13XJR`8!kN2l3%h(sjDbU)yBbAjA%S& ztJ-E{+NPS1n{flWBzgLMNF}oFzBzyG&7qn*lKKja$DO8V*%b%i4mGovf zz{aUH?z!;}eN+?cX8>#3I;;f&ukk*P*jFF`*TWq!4TSp&hGXljf?P|&!zR~QSWL-g zQko>;0Fdy8Th1DbyAJvdn!_^#1GZJ%0V~{FuO}TmQ@@yLXQqh0!ed@w-s$4H%*iGc zi&vOf(&m-9V;b^F%wieb&q-2LV_;vC|B0yr-X9PYBOeC(5AYxeG@nu!Rm}mp#wpUX zNO^65_aLt9XVH(c{j~#%Cqd#I@+=~sE}YQQTfIXyG2+Jt^^df01^287;?bik>_P-j z5aCzIt406`mdIWak6g&c*e;sFns$Vd1{faIk!K3e-NdUrz71Mpe&Gzmq~A!dv1mtN z<3IvjHu2dev&IP1Zz)Mrx6olv^4kL&O8dQm3UU^q^)s4CSBUC}0sg+IseRMzR6B%1OB0h4wwJsH?ft>dsSY{eJvgMhx2uG4{;n zYt!Sirn&UVLTjC&-@ip=TI{4bc@W8VuZDJo`CRk5#k=~?KYN;6$<+n-wK z=aO6=9Bk&6az~DE$^%W%ucK2X9e+>lzS`503hSNAC4s)m7q_Nm2#6(`i7RgF5gA*? z$2xa(rnusH;nU0Hyh_k2Kg?;~wV+o8*~BFcMLO~wMkWM+64D~!;{n3?FF_N>6`xIzw-FB2D&qK}{_zIiW0s5S_~=1fc}gS+Ub) zRu#=KxO<9)0aZxTs6y292h+hJnwiuF@-$tx(=LD z%#(kEiLskq`0?~&cD{s*lHKSqCxOq*Qm++C*tikxAO*lP;)!wI=0$E-Y~;6e7MQ;69`5jdiB9%VpSwo12BGM`1ANDRdDW6HA2IlxXZ;Nl-BQ(WL^3+5`~ zZ8eZZfxF~k>TxpJYLgbV&x8@Q6rN@z>2SvfnbfU!qm*j%SlUoODt?-KsQVoouxky~ zhK5p`--oI^nEX%y6YOjMuId=!dPjrlwo$Q~ zGQwq=s`ZpUc>)(|T>O!;D_CkNI41xvZd>V@XcY&lbkuWTe4KX%{vR;>N53&~MvEzm zT$`3>wFw^RxZKPgj~dp6%$sL$rW9v2^O%0im&Rm5NmDD<1ywd*;8zX=nF9fly_=+mLoAwyg|sc!9r(#&GymT$ z5y(id=PmnZQ!Pnb4tH_<5z7cSnE>aSeC-A`eR8~^xaugK%sx`~vGbV};}Jj7>)F8A zcSv0?UABv7QWSAUE0Fw?NIknbfwt3`Uat??i6wSIZ6ygO7CZQ|LAyZ!ZxYG243@rS zNq~Gkm~#+q$aoUE`#NKzaE8%}VB7AxA_0X;@e;pEA_~ixUT4rj*;2ptgFTRF@XX>> zfp-=%c7|0+63~q9H}SL*^nnaf-d$1dyAH@X>xwcf7blB~IgJ84KUyy3{mAO9p;tExtb z)1pkAI3+B?a?p9>Vpo@*`H?nViIC(^mLj&*2?=DA3J=*nSCA}D}`^64#&DNK0KIcbq|AWE;v{Q6YAmx?fE*iMD zlrt%pz9x=6mgoHD-YbR~tW&72qf2r!Zw}i?c^N;R$(#bJVij_4NoF2p>s_+R}(b&g;f1ozn)tyanXNCkHhOmci}`0fWOWiWal4f;>-v4 z-Kec5*{-dTVGu+%n6Mp|-WQ$*5_*=+ZImA7rmFwX8-`jfvb;`+^DehB_ixLo<)(R& zKSqp;jJSY%+IoY|PAolXZcxNJ{#xLqaOucQU;tiV=NR#74Vsv+rxRQ3k-sNs8-L!z zMRe~ zOA?lsnQrtQL!3zXXRvcE=HoZW?S6wsnun)9H0ZWnpDPMs_OszzMP@r}0G%^>X3_y7 zF8-R20&I={U8h7%RK?JVWPrb$zqbskKV~Iv$cUuB<%bPUM|Ju|19LCGl}CXWj33BC zk)B>#?#ktd_zZWSmYTJ!HcuX+7K1Lajgf>d$<-tpx*bkU8xN15IisRf^581pxcNwh zw$bGtAMkz9Ic#N4oDBL7lprq9u_;YF*G z1ECZwLito-rCm@X{;sXS3+P}WImH?1Dvi4J7{Ve4jj`oQg81K+Zl(tE*}HF77kJ@% z*U>9?_A@es9`0_C5+zeB?pL?xhi#MFhu*;;CRDQ{$uw$h>+J2K&fj0u!=j3xW9$HMUkEef$hIvQP&fd zU(G46x(ofoXZUvp8?O|3W<66dj7Mp`nqQc4y{R%%6oR6rk=Ky3CultYA~BR zH6|PP|HCQcQln_7u`T?U3*DTFDqRt2esfP*==)vctkLK4x64uIYd7nBkTaDEFr`%O zzM*R&0+v;|&@sTX1=Y29ZD7gr)spW+Tct(6qIZ~Hj&=LBZ&48Oj8?rxC5t3OMkupi z7;EY&=MFl(=Xx2&AK!MOvvNk$z)y$YZj2CDS~1zSl{m$Rd$|?ynlh~dzcUdxMW^?O zk)FKCFcU9EI+iHPAzpE~WwJBA_8f?L*Uwj_(f3Ce{=Co@(E5Jk=>1GOqH54v@!nE~ z0oBqS(OZ@CtIk+$v48AbXD7Ty01UO^pB7?yBlM{#^iUF@KzID7Xn2sDkfiYyf^ZaW zwkh7ZQ`!a78qCKgW-2jriSPyuAc}=~Y=wQzbf42nb1V08bxRKvda>*q`lHsSp|2P1 zUV~KvA@%UErXIwi-Uzvg-pQ8CgV`rFFe6h)8@8_ichAenAdrb8`17pWMW}=O%l(rA zqYk?yFS)%GGKQ8uiok7q?%$#!tU_ypmvAxfUMTcub?$%>wctJzi4@IK0bJ;-PD7W3 zkn-ES<&T3+j{0NC|NR7U?Zm^~`+xud006?iFu05$zEGJfny9z7sL+7##qY~U(Y9pXUD1CZ_X(2888~H&ajF( zIVM3ZQ$yCP|83Q$`HpK4>9rb)qcP|wyu7Wvl?Q8M0=QN0=>e+N)B~0Aj8pvaM%Go@ zaz5zYPDrKvTO@${F*`609N`cgsKjOgoYLWM@1sbMRmeKWsql1Ffpk?2b)jTw@OqS; zbp{5snG8Sw*aWG3QtI$0Qhk?AO#NZfrAi=)t4CR)h_}jFYU@CYysy-BGlXm_UPpNZ z>+aHsnz&Iyyq!-LsmU>dG5%uAUT5Gbw36n@PCaAQd5Vbnb#sFBXo!CG;#6(l_LDGM zbB)R%$)J?@LN2T}%!_@t^rEryo$w@7y$mYr((%ubI`SygUe_xjX}L+=05Z>o*{bmc zYB`Fbs%5kuKd@dC3ogFDBDH8JZ(+EIo+q0yLvL1Jq_n`thUR0^_{~J6NH)jKeNo6> zhD5?#L_vv{!L=C=Kp(p>&W@AE+>|nNDI@YTf%almnz``#fn6d;Y{>Yp;rQ9bb8%Pu zRdF8Ir>?<_gypkP2j*fG6_w zzm%3z<=|0G$a!oDLVh>#o{$Yprt;Tj-&lbADriS(!B-hpCt$E#K)RIcZ5wFdJt!w; z+ALDc06K1tP91vZkDFqs$#ooAqFbL`oB$ICAMFPqAa!au159hKi(wBBbRR>^aY)1r zz)b~wPqpk8gg~8AcO@74awpD~F8)9dOy((GBU*1A?B77%=)1yMVO{*>buAecwrro^ zgctGhdD?$hR=vM*%0W?m5koMPropvBD1K?ml#}5G=7xDQU{1w3`WTdYRnj~EYNUmI zCKXY42LIi;QGMg`uME$XXC-s}8D?@tX)r=LOcX-L3{QT=;}W}hy&(4*sgYP`EXYxx zD_1sB*tqvRGnXy#tRzBPNwK(qh@`q_;AM9H>KRJe(G*F~CfhmR_ltNh=SH4^H}( zb*EL-rb~Q7G3{&dzXfTA8S<$Co)68bM=dTcoSvH(9y4`@VRiA`9o-9%kkuZ;T}Ob{ zIc&K;aZ!P;UD&uixp*#h#H^C5q8;4e!&Hglt<6<={Hs-{P^N+D&6pvu9vLP_k|E52( z+17RZC~x!L^;$RztGi4I&9!v?bl2Y731R&pw0CUCYa2n2{(2+fpZ#%sx_Az2Z&!Cg z7E|$5A@uCd%Gse!IJ9zo3=L3LWGRO~6?*)6g_kG{7g*LEDh0*)$49CapGqC`i~sG? zV21?4DD5wOA05`H)xH3;$uAfw%=NLX{YRH(C9vnWC`Fqa3Fl#_CjF$E$*QpG`f_jS z7pKH((C8VoGk$w?O_Zl|Z2MjcTD42`J+8XRM(gKWU**dj8>VxhyYX;l0C8^-?E!tY zIeGd-6TubBIIyVJth8Deai07WcvI8UcB!C7PZ>dyG z_uVQE&rWCL`!j@5?I(S7L>nJdavE}V2l1tHyB>?@Z)SqVjg4KQ>p4k9-3aHHKX5E} zGHax|M)OjFNxK#nhOKA8H+bbTX9jng@0rC4GAc;~z!2CVo)icurALZYayanmJZF-z zCAo}q7cCO$>dp2jHEBZrR^Lz@pO3*;Gtc>`_=iEXB?6%Y40{q})MQf^!LF_Ls6n*Y z-gV)Y%DzT$36AwtuLq*c&}ezS;Audct5t_v0=EjS;<8dDTeJ0Pk=m5jPgj6}aA}g& z*RYX&^+Axf78jFo>%2rIZqS*qA1fis_h(Ed&0Ip8L*gF;TO92jom@ZWD_>YtpCf53 zxiWU?H{qmpA39Q>#GBBM@!!-(;cjqY&kL)ZUFVUnM=$mL6pq*ZvO|ilWxcnJt5P~^ zjfIId2Wrd5zy9N~E!%BNbl{5gKhg-pBOYQLSJ%Xp+xHf)NaipyptmI!DA&QOX*dql z$D3)lGu>vynwB(r0fQ8Ejc)8Ee}Sr*op!@VNmE+WX=N=}Ya6&3=K4gcUZ*Q8@cYxp zUrF#%?WwUz3?$1DWehV@2#Tw%+5Xyn1Wo;cy|yQjg`$Ubhc5WfD}tMM!ex^!VF`#Y z&0cejojTT#3KDB%ns!4(f4cs76S{X~`?p>{D6{(6D}x-6dri?@a7NgQe?`57aoof~ zWaSGJGJ4i7+9fbuQIzI_Dl-^)4!l*Ue2$f;lL^;6HlI0^2V;1aofL@@AUa^we#9qP zZ@g{vduvY|0#(XU4K@9T%vOi^qV~V8`6~8CZRaQzUvD8HDyW;5FUFzvP8Jt{0Gg-|Hi?sjh$6rgwSs!8}U-G z_A(o+8ONSn?MzXLBq%cI)QO7INE0W=wzHZyx3XlRhewHDQloev128c`Q$=$%GziH5 zjWvB7?-B6O{;VgHIJW8Xs)>b=c{;S%esz9Dt~3Kn1P=J$@5#UC_ydwTy0?}a&3&NE z>z*d~JMJ*}2UAdU9T>V3X3f6hcLfI zadwAm`Njl0?SB|J?wYWJr zGh`;OShjG)L=lB100Kz8rE01HjAc8S4VW{p?WS|xP9%4mbzAdy0WAUH!Yu{fMB-E& zbg_Lh$oP%-*uWV_S-zuIl8`v>=5&Lylae`9y#H{fhXueus{!Bun14%#_LY!KVaRZ_ znv&@^Md^xhLa0qWxyNwp122DjJv4&(brg3c3>aJnjojTp*4bN&f(#mx9+bT0lI#UA zdvE)>@N_>OJ3g6mb>D8xA*!A?^a78msJfyzN-sdj7%s`wdX{ST8)|ak^uVb`^=rM8 zX+3w|>;Zlp!6rJ|da0ZNN~2sfQLf5QU7$q-KpnD#N2>r|Q8GLk{%up$i8t%1PK?Bm z%4_wAB87Q$6Wd7pCMMcheKs4%_q%!eY*5o6wvK ze%uLGrYq*WLrXC4?4@Tlb1Ws)T(6^JHoXrp_-^6@afD1d!fiX6fL$08*@HeVwWy4y zv=?5gskWe{YMAU&UuG4dwV*~jO?!Y~vpKp$aANQi=A|QmjP)i*TcE1zyzx@B;5?gE zkkxh19`_u%60YgBZSDb-8>|WZD~N=-B3^#Cw}Snq%{IEE>|0JoXiYb1FuKEK)SN#L zbK9&yI$mCKq+?%(7JEISRVS*kTL%|g^Q=iFXDiAOg5PV*>?~1fX2(*I7HgX#;rz1ghIb@{7zyHgT9jhOUE4|o*dw!rD=5jg3ZhX z3!FWrI^QotTOHV6I~Ddmf|#oZ2C3UV!E|*rcE8F8)F=4p5CjRe9Odqd)vO;Lt$%k7 zcy3!`1vqRXXTtRaU-SvS10Lb_`AOMhj)URMfgBGBZRxq;BU5^Yf@d-wh-im;oi|Om zv1xSm$u7zVVo=3BFs6~3QGuKcD;K|rhWt19+7 z?MW_}((}2r_)5-UO9!|h{fa3qylf5VGs&&!c*9!Vknd3Lf>5>_2%7a7yp3>18XP^5 z{$lJYHTh!T=q)KwjuRy>8_7WFNaQ+1&D_L_2A_kF{0A+VTxBO0)^5v0$T_4$i%P6P z3F~_r+r5gkVeeXg0w)(sDO>-^&@)Makv1Lvr~}`=?vg+Po;CXTM!rPwg-`iMMh|TMP-CBM1{fpK^N*u z04}PQ9qZ1n;ZaK+6#~HB6c%&+3E^6%D zoA0H5BBGLKlsJ1M{KiDcc+Mz&raFgBQ+IQ4&oWgAC*OYcl*cjjRkCO4A6 zhB-lco0og^-&gxWL;FtgCFSqYQHK}ogJ+|D><=n7ryhU|4yGVP4e>hHBI8$Dju6NQ z{_-V6&_%N)S-+PjPzwQW-`a4?O7zMD=qt6VJN42dDt+i2j2@c*K~h+-?`RT3kj)F= z8#ZmI^FaJE2dFxpjgo9?GsMmMP81rVZksthLct`of+h*?T>wdenDa6t43~$(Uee`D z9L2ci4#eylJmbXjc)!tj<7%0#&|z0uiI%BYT4hu%_LA)+3vHJT)@EvlC1_B&5@L_U zEQ`^$U{zt*Av+Q9own?a?KJ6-FfZT8S26nB2^hW_@w(@NhAq4%alA&v2&IhNY%_ z*j;cBk+Z$Y`OpqTXUaO!rRsSXZm1Jc*BhhMBbCM_yXcvgz40td72^s$NkhsjkLbDaZ9^ZV#)>pX2AT^D?v(@)6RmZ9P;j**-dHzLh12m-7P z5_DSF55<88Gc;x0#_veVkzAMkcpUgZ=@p)!Bur)+X<}~y^k7l$>ZP_9u%`ekAi?x? znO`0y;Y7AD#X`|?fAfHvafms?jLFRHMZbXpZZJb!ix;wH=$50WOO-1h}D$hm~c(QaKprlS=6|Ed#(x) zy1d+<^$0nK_d2Kf-xSVR-lwG${Q~K0d;^KyFbMb(atB>A%)Yb58jOQ<1N0ICgeE1f z+KqO!A-0rn5NI9oD0X)N$@jmRbf|-;uu_5M*0mKg#yy4yZ60?Hy~x;{X^#~FHp)~y zScL){O4$z+yXP@Ne<7CRLD%M&wbW9ukysGx!^E0g%#a0`s`ZqADssv^`gX%}aseeK zKMY~1a1XF}HH@EUd`=UCyHQgItqUh?X|gx{tj2%osUjMrz2~-kR79+9XwSV(-I!ME z#MlS@vL*5qv$=m4H+FmM=U3}An;o7sxbHVJ3@nXMv6nSA4~=t0&nJcY-h?VnC*AVr z0fnol#JwrqEd`MQA}m!Yg($TX?gOEJ^Hq?2*bQUI%DBj6I#h5KF<%D%#HlMzFBe>q z>Au)t4~}W{u$}z)(*P%RMw&{v2HUh`(jCNw7}3K>EG-fz>(4h1RmT&KN%z2Lbb0sq z{58v1(&h(82>AI#1fS@QbI)zYBn9E+yW`&2bBb@k!e0rj?o0AAVBY$(GP{z8`h=Y+ zvuR5Xd6>|6yw^oZXpL1mlIZaJ*f|#S;E@o_5hX)V)|QCYc3w_ zptEjUhMD4w%pJ5M$p)j&kua`h(Wt+^b-k{^}3q6G38S$!#Pb-2vD4iP;`aLL^Pw><={ zQm5B!_GhUucA__kNpsQGo1lvVeQcRjqUxv0piX3K^0#l$u~m=RJK%I`pU7X`UaxE# z>B1a!$@UwwgS;@xn%Zb z=&)~X@_Q`9?$UALt|eh5NjJOO!d8d6igbmo$uBBM727ZHIqi7!M9al7fAEZYafB;N zBD^U{3>Ird$K+XN$I_N_?I19UU!4-u^d|Wq!0lK41)$`(A}c9zY@y6phoDdI+Uj&m zKBM#z+N7cF9sUzu3Ys#HgU8myWtb;O(x$61YybT$JWu+`Kw8k4u)IzO4u*VsVi_uI zt|cKaEX>$aK*sv@M-;2S$_3UlH%=2_%|LivXUzO_6I&E=A(|fj@?C=5m2fEok}>>3 z-b%^G4YfjoZUPFf-CsDi0Kz^LU(kfyKR03cdHXSB#LF64g@VsLFCQgsi-V{hz=ws+ zRVlh8Cl;qyvGfl1stI!DTQ!jYT(tugtxL!iohf{VAO>mLNekL#VS5LJ*d*rLUzrN! z`nL@_c!963Y`eHEP!gE~F+&f3RAw8VTP2vuONyXzXct(x7wxqv8u;(`6~X!JkIm4b z*ml$L?`wdF2_I}>HoOaeurqzBd2b)lh!N$AtBHWVPy$<`M`Ms&X?6^t+QFyg?NdfW zn^`OYAaw(m|5wG;&y})_U?rx=H^;H_ohH(UjCCE^R01l0fM1|(6$NpS%`eu$4^aCGVC6*>?V6hIa2|&{A3lj9OeJe@}&6HtA{Lc71mw+ugzV`Kv1&{$-P{UHL zGWBMrVr*P*uA$Npp=v))(@T}ao20l#;4$G7Wyy~W8J`#cn=n}c5fOBl^Qzkc0v?0TsIc zxcmVwr6Abl+!=Z5NvDs*E}DY2aB<|q5x%A1x-_{gvG!V+ZWu_1B#Op-e+@EJMFoDg zW7L6^C)novAk%=Ns{#r~Pyhe`00002H+0E&+pAv*9c-QNSaiXO%**E;RZi-RHk~*! zX%CWU3rI8w5X+RJT(^HnS7d%UmKgR$_$BNKDH!V!b<@pchJh};_v4clRvfr&eE?X^ z_0LD{aV>ceL|(BHczWS9mMe-mU}JgS)s=tz=}ISwSpWbl9b zKgzvdn!s3`-t>FQ0B9%!uCgv7bivc`mZ;M>$U}ZWwN>pmF-)u-r)+_4L>DzhNzDP$ zK9B(I0y_Wz0001QR~e?J*fIJp2Qi7(YJ5~~BkBf*@|=9X;!MJ6+W8U{D+2p7yZ4ax zT+vV_a+g1kH?QI zlpvdZE3*Bx2DUQnR()TlD>#n6S5iobqiQTh;RvlN>TeJta$wX_OL^mrwgDr5#=8HZ zv-!>zkncW^>aNH6t(~lNAOHt6eF40HV8z-ZH3m|@Yk@>}QHKNp=uAr7K5wzRk^!FG zR>0rFNd%qxX?*8-s+rz4^f5eZIZ4pDbXMgcGBvPsyIyW!5$cHNxR0{TAFgn@%GzCf zj^4bqWr@B}Bt=THMYYL;Q@Em` zl}VetJxF>tO1egp%HkZlKp~PW10hk?q`OEh*?C>49`e3~S;09wzdK@2^QRtB`6dQ~ zsEiphad4=bopiG>5=yENC+ z@I@8N*(Y@Kq=CF=-pK#MlB(?{*`*&By#|YA|KD@UO(E&ET=N|@gZ`wi0PuK1RxMGP zaspfi3uB%;#-}qqQn4ydMAp$V6ti^j-&#(}OsH-c*CCURqH_sjKi141$aqyHV@1?)3hzr29gWnnfCihO6Q=f%qA8X4#HnuJ4ZmbB&UnUHL4-A46 zv}gbTE-*xBsC_}DI9%~NyRkigEjCB9Ap%9@rUrY#(>w+=mb@r=GU9Epk(16-gdITy zAsdJ|fB*mh000000008VD~m3EjGw`)NAqt$re6Cy$(JUF+>=tZ^HN59{yow*rlC*2 zGlIr>ucKt)?-1D&yFi54M{Zi6JlaisJIE|3d`ai(W?6o>en+n$61e%pAONOO1lc_% z2;sDm%Z>>e)E-QR01E{&sO;ZR!u{VRf@_S{2G@GNOoW~5`YK$wH$ep@IP)TJ+7jGu zC;$Ke00000VVh3{wM(+@8QuuJJleKWrdoLQ59Swq3_(r^L_{# z@mUKE9RUrKyWbUnis1-(nY>a}#ZO(dU&{qZRD|79BnA@=bBh1s<{}8m*RN)Gw0uDE z_uz-`Vs*jA=vY;+DT1M;y@hDwY)B&gglcHAO{+&(h6PoK;+Hmho3zCE4++wtS=eujD z!OWe%I=Mk#ik1Q4Y#PizIx(DBec4jU=7aT9RAL+C>O_AtGtPEpThR(eIduOdk)3-M z#CdD2lh#^bv^o_L&bPl*@GFm-iEG7JTcTB>f^pOI8zt1|@T`reD-)f%LN1Q404fwr zh(a&Vym`d0C1RM0D=!t4NrqYmB$Vp6pWVB>mdw7qAmH+NO5?dR6h&tQj@X$mLQQqwap9U=JSXagKrNEu zOWB%0NUJ;`#ISSlw-7Kmkxk;qkIk~ZD%#e*9GG(}zwT2HOhK?hhMtXAw{ebm$JRF% zZ!oB_P)crN9l2)y;l~>89Ffsu)FT2`nUs7B9ED85_V(C2L)EU+=vK2{@loQj`1sZX z0rPU_TE_UkGFS{_eTTAPzU5wrKbI`3b!Bfa-oc3|0DI(qpMjL5DDB|J-BEr~ob!uj z&+KrpS*cJFcy>_oM<7Ob{sTfk4AE1hM7(A1B)d}x*yA_?$p4TrOZ<{-@$HSi)C~pW zIsVET(yl_w4WJP%6_KyM@_d+_rUq{5&v5eAt<$D?)^+Zs_BewNQR+BA@*%9*KIeUn zz1F?dh_B`cw7tR0HmRsdl4!7Iyqo-2UcOy=zW{!jsbvpzPHWLzf#1+@OMK4g#ff0G zgs;tX;o(lYN6ePe>;GFwn_CMyKm&i?lC@p#ZGx?#BjG*4IeRpZD$YLm7u@bad9u8r zbSIk^Bc9&lBYDcaNHITwFcl#Mc)IG^ZXr!C?QR)S5`2+3ExI*2;KizXvyw#AO0SB> zCVS9~po+Iqt{-aGlKo(Dms^s7!TNaB=cR?;Ip+J&W^6! zdXmi@bZj%d$k#T6KmJ0hqguYKR>eWatH!r-?TNp#Yi&k#EH@%Umxx8<-S*jnT@fwZ zZz0TqrBXUtOdY@+!N>zoqJLseS!tU?HKC~Ty6l!)1-fk!XW3m+^M2CMW)Pd@0gwcV zZ#PvDU_flsZM*bnJ&hS4Y)83QsKrT@iB9n^>8x@HK?IWqi;`}5#Ak0gMDTSrHbBh* zg&?`X!;u8uxhcBVj8Ke#^@QkZ;21W@ceJYcy|JWKu;mgbUpm{{39~sC8WrawkNkT+ z5_F)##(P||%$C?v`T=PC`YC1-i-DY7wMZv%sMY@Lc0%anz+aHxx4yy}wq1U|DH{sJ z`nb+1c&w$+t8J_iD>Qjq0*niy3+L?HphsV+V?L%nN_u0DVWJ+wv|y4oA$~gw7lxt$ z;(NsYC+qVTYf4=s>CxlYF_};<2H2EE^pd#oADeX!P9e&1efGc-Gw$@~d+b$a^s0*I zSn~ZId|HC;--8cu<_6pr921fdEbXps)CT&XwrnC6s6}UrZjM^F`um$h*~h_~^GInmuHNk%>eQLY%sZ1u5B zQ9#c|cbA5Wnh9W?m@N7VZnuP9XSVkAO`G?&I;8OH;l=qA%rylKg*VlBHtPor2Z!@( zt_ALO)G>lTTiil$mO0NW156|-)y1^O2hR8@Qb_9jKk0UamyTF(?&0?4%9pRt_Eh33 za?&1WoA<&n@vH$R9MU-?&C*~{6AW9VP9sP8xzoBMpOGENh;0dPNIu%#W~lPb{S6P`_F zva#}P`3Tgiisd?DZu-`kq-Ft z!se|{!l%38=7fJ@ z+vZ!uZpyT$fYBWDzSNr=LE^FazsutW>zpu@VHBZ{Bsh?IM-1r^WZX^x?t7Icy_{L! zRa^Dc6y+f=P#`29`9YHXnIlIg-tppmFBndWQ$=oxA&y@}O$4l=#baMgj8OjauKQ^2 zI$h@4Nxmk9cGq{4D;G0T{N1MYu78RgZhGMrt@!)K4sNKetX&-jrx0HFaD*M(*0{Ge zbDCy2d3ee_NHQ`mhRrz8e$?IhF`O! zrW6)DpYfE-{36{xkQnaOc{x#5Lmy>KeY+dG=UxLm*gg)>`R2|sYk)>CNhM zuc4t~OBpKfcnbbqUP{3u~CLhuNl(mRe zoNL_}^4XwJfFvL0*2C0nx@R#r;Q9MeaW;hehvzx%OOR0Y#yI7cQf!LeAQJ`J<;Y4l zz?H%R9ZX$r*1=S^=`}qF?E?c19QQ$)=S;%{x7;qQol+ml7tr>qFM8%=HJ8 z!xH@ew6DUwq8A5xL7D)+mJ{w5KD=Zu7}P{N-E2Bv2!a?7%>-RX)|Msz2341p_)uKM zn6xTW<8=hfxR=9PHt<#{0)CFupH!JSr)VUgnzs8)|32xup}y-Lu>_J=4DAo#^2=*F zDKCBFN~L>w3iQEhk4Bxb*bTS;Z2;dlt{gSvfX|V4&eMh7R5sKwltPDuOKbQSqZG=K9^h3k`}Jk(PPqK8x12~? z#a4`;jBcMX_) zwu0wt2?n()&0Gtc?^k{(#u@4i9{&D6CUv-8{{M?t7Dd8Me@qC;RFLS;?&YKSR}T-; ziK@Y%R2yE7LmvDdbmruM^SZyPyUolwo5cz4kkSEHD#)SSL+Dj*_xetvO`wwmCRayL?d_{-_k~+Ii6tI2 z9tOzVK!Wz^u=l9T=u{kOev@K)dJ6&)-jo^%Xf>rz&eOV5`eh0J0 zEmvi(+B{-ZpkbHTKm`PjLViRymIr3$&-I8hFK~dlPK)V)tTYeOJc3Uy$Poo4c7n(1 zlaf1HoQar`c3Z@3%zOsM%o$b?CHadzX5f6v&+5m3AE$n}_!8{91TBpJExy(rV_Yq% z;YP>A_T(pGvJM_004Uybo-*xTjIp%LUiY`E$QEXxsI^-a5fIBaA0zOjp(Ad92yw*{o ztae%hKoMsGt;iUkJqCNlQ!s#Z*6F(j+H7J`P%K+oot^(x%unAbhUy;-H_UuYovMn| z(fd6S+3=(&Ixe7i{}2K(x^N)@-T;w49%ZE>&Zw$C zBdODSr-hA6>mOrlF;sW{(ovxp6mmWRKoLc095SW0n*RCHy=QwB@Z+^`Q#2wR_ z7Rt+$+}!g4UV(sHbsf+Q>MlnzV|O=zOe=ZTB2;s)_zuVN9pQ!e?Z~(1t4+g5PBeWM z4dDPg`{~>!$PWB6x43_PY`R=ctrh|(B%8zOMa!tC`_!yLM>g@9)6Ob1!KHEGVFQ68 ztx-@nvXtMnm|Ic|SI*>nzf>icGDSW3*_SQv{I1!gHd&_Z8)>-RvpgJsx+g^))=nik zDqCxj1WB)?s*xRp1@TEom09|3eFea3Vva(dgI}ne%YgZCVN?V6$?6x}F&D<`Go|AT zzc7stwh-ieEu3(*=Dd~M*M=jD`%6c$|5kVTdt{_o8(8m?UXvN(Ox@Vwq1Dm^k`g@$ zPo==XR*rB92EI^SBT)HBOyz~vgXMXGQss-H5P zp*4c^d>=ay>jNS@2J0itK^7#e=YAP^sK?&5UBi(d03m)F*NwhuOm;TU77Kg4U~5?( zQ|L0GwO=#&i17Zq$XUQm`kHF7?8W>6Jg)bj+cCCEP!iI%xrvHHne5lC)Gc0V*50fY z7kJs7xT84ZsP6P48!LZB?f)GT;o|f-c>D7GBTNz53j)8_i0$~r|3P8$Mr*krc;bTD zxL`N@>8r#*VEy8@z)l*GG#%p`2Z1t!c6gaEXFXzD-1qzNM%= zo%K8ueC5mkA_~|{zwf4!M5Yi|;{fq_>@F7QmD@z8fe;ej?QM|$7AbPC^T99XP&MSI2EGRz(tnwS>t0&x8XXDq_#dFyBdCh46ix6 za2=S+eo$mLXMmUa>>`D~msmuq2|CD{=1tx#W&j&tx;pNcR0W*yrc}^zgFIA%_pq2* zkXarr3wgoKqV-K)0!q<1@}+GA0fComU)Uf78NtxqX4;mKt-J4r|8`q$1=(5MF+KM0 z$`?MyWCCc5AXn7;{9OZ8lJ#)($64~QSa1GUKcniw7F+>3_AKXPBPN!*v>z@h?tG0; z0YWj$+j_p7M~m%0&_E!xj)a@DsMqg-C^Pu1PyfS&EpCUJ22*QmcrDsU7&zW|lN8WtE$+r=;5Q`z3$5K~ ze_t8f(u*c3*6m+4&JZp`n_qIOz4C(y^*WGy5#3AsCL3JRHZ^;fPEuD*P*AO}d#fd8 zll|qb#zySAq4#&tJKifvxzjo$@xNJQeY^;(#7B&a@8V@GoYR~TQ36Lg?n2-e4721` z^f}Pj$i44+tnlpbsG$C|d>B-KKLEZBR?td9?*+};X+{&%pfmL_i6AxUeI=aG%?b(V zf_rf&1ot)OUxN&210nPCv|H#sb-@(pk$!^BXm$NgfI@y)EhO5Ng(%6!^bIzz81_m$;;euobYf~-&*yG$CtL_OHe;kg_-GcHgDq6_?0agsSs4(o; z0C9V|TZ4ZMTi-AKu7xvdyqW4BBm&4&u$r8KIwk z42P~QeaW<24?l>Fm zBi!l0Z+oq>$xPFS&X1LaTeQbA-N0pmDVk<2Hsgi3%ohov@PJLqEA6I`tnvVOTMr^cSX7>A?Il-7z(J93xeH4Xe()VN zf0Bd9(?7uX`#}D+K;si1=9aZ6+IXM}g!J}mKtZqmT$_?&bv&!Y?fpD7_!fFl z6;s?P5@=?XG>~aEgMc4QmU<55E(Mi*rjs}g_MX5Ur*x0|40`zv>MR8XqrSpOV^0?X zf-P2JA%myv>~_v009q6Wgh+-5j})eSNd*QBr_bz6l2uhIKJu|li79l z<0BopJW2og2UHY|VWwc}F+2HhoRgs2P~ooj_Bmq;e3!!wxo|>>AGDAi4u%#BAIbeU z|C9I+HVY0Rg~t~1>oY?+_f7ZuSk(22yaqAUqz^3^tO*k1MWsurOO!*;iM{>^0AllG z*kf3b@>8^Q3>a<)v^7wC`%w`c|4Xn~RCg{;wk8%S_6KE?gFALQLx8bgf6wW|y z)lID!0UMX~jIV^Fc7-e`Ax$#a7z+xTyzZy)l`0LCt>$^0sV-6ca^P??16GC9To{eW^z8HFmPx3kPi~C3PT&X!5I_)0KtiB3gyccK+R*^&)*DJ$25;D z6eRa&zx)gM*>nXx$*h&U(prynxB4cEHJdT?V#cmhYz(FDqyJ*Dv0vb$w%lU#z!WSX z5UKz}jW2UW$1pLhUeAg9Y+$;2xbWkA+B*g9xU;1k*+=yFS1}Dxf@+abFzNmeDvn2j z=ced9{#x;MptA!qtP5vh66UaGQdD`x%+s?0vlwT*O|^9#U%ubTJ`)Nw7;f-gBEwRzy>LqXvZPm^mtB2yo3T(r{rCf95hr$?bfX` zHN4(LDVEB^YXD|$%vj;*Hllz4A=Pd8P6pVC^IKp}SQKMH;^WSKeh>1=qHK<_PVBVB zJlai`aKC?O!r?gMM5q#M>+3mnN&vq?iHc3m(%xR(llK_e_<05lZ2X0p(_+U_8dShp z;B;d6GPrK|A6X4z5EZk!t^Nv;3~c;TO9v)4y_Dpbdu$F13b<)A>a=I_Sif`&SsPGz zVTb|OVa46VaWlf!>BFz|7IkxGHxl^8S@qA0ikF0C(!5Z(6^McY_{!O(Hf^N+o5X7> zK6a4>eYMq`-pB(U3Nf*ucRR-SU}ZF~IYJG!o=X8tS(8(JB z5c%G&^DQrb)HqB*)2XBBv{%k`0$FWSn-5RUs@o{OlqN|<9p+9lTUCFUWU{i3E|nrr z5?&}|XA$(^SsCamITuGx&gnzkT5746{qrW)VtT(&4Nk%!5uFF@NstWF`f!Lc>5!u5 z-c#aX6nuA@+{<2YYybz>H!plWy`~u`JhmTe{CJmc*I zI+v|CGtY0U!4O9GAHkc0Qn8=h1yy`7e(lbdk2p;#aP#Vj9SXGEb9?`+$%1nNdCUolQ3Wz0M#sC-%YjJ9JWkNp#mtLx@}5kG}BzYDMocB8QZ1 zQRat_fTpB_f1(N>XVGpVOF>4xihZ?QXm(!~U54X9UYDsiJIgOqDb zQFX}WIVWEIS;h;ZcL7#x<*Gjh*pkPd&SY7Rd0aG3Nd_qTA&*}n-9={EE2f?EZJC_F zjF%l$)~g=b{10TVW+L7ec%NtlnF10ZCPQDc1Ju<>gx==b=w_OFRzFByw;sVbxjDzq z7kBupz-9qBYwrJjErtOUqAP{K+!d+45&bGb;cE4|Bmi-^@R?-h6o^I52@VMbM@R zUhI7mmabBjgPkLW-0%!{Z^ysV4V^1dSJ^1n4ct*N^k(l~Xb&i2zVf!imScuB_I3^> zi1hQ}WFzr#afl z!H-#EXP#M^1wO>nCUgw0QR(Z9aguH_#jkU`<>xkP;lo)MWRG9RfEbR!Nt@iZvtMbo z-4{tTua%@Y=1EI-Q~Y_Ig3UQ3N<|Zv@dR_P(9>j1E7l-+S0=7)g-&@mYQrw_J{HCw;q z4ldN$I~xx2^L=<}07{LuS6eVKM9$E8FtuHyDJxa8&rQ~7{ocr}T^i|rRcq7G1wc55 z=lO?zt|kS{KnZuqI<%mJ;j4?Da~eRr2DL%PhMy~uIq=C zXoVxv7T72jXlHl;)v$ydK8B!~@6${5XYD_8D(2xyk^I&~Ik5I01|ty{v72$SrhpXCTDNFNFwYqoTflEO;KeU*orKVi;xg053<;n!iG(3uvz2h z0GdTN8lPvEk$GM1Ueu4bOL4LEx%LIg=dt)?Mf=VrQPzOw4_l=y)ZuzNIP-3sbrNWv z{8)ofyW*M_qB|7+X5FFO~4!ZJ3U%_nvvcYOl%?ZkJgO>;+gEgxlVLc zfsyW(jT|w{f#V)lZ+O(LeH zzmbf{qOwu>uVzI&SCaesbG*L+P)27M(POJbjWAKIpG9x7xrZ7%_zRG@4nG!jwgxe} zwl$|)jogAuF(U8W;;Aue37xG3&k_$f3?&RoAZ0-2S_yWfX&+VjqzuF^M4%RAfB+Yt z=Z4}aR4_Ru8OUhyxATWb%>*Z`+Mis*N)LF# z%(>1FE)%cIJvmL2G>a3))-L`oz`8u?siBS8yd53S9Y;K2+O&m{9}K`1oW$A<`R~$X z3zp&XwJIGpr@*`pOW7E?Szam=6^qs57W>6OJGQLgs(ST6%R)kW@C4{ZJX4$J!ee)=>d-v000000000J7%F$uhBVdn#Z9_UpRHU4 zZII#zYI-M*L{zL(D*Y?{)Fo4URDH@-Wb%^#$`n7IzH1}`EzEgfCKrt9#lOJdLOE@) z!9l&4@#=4&pyo^8NuL1wdZE&PcOW zczIbS{@JcuT4qNGBl^TiqKe`WU-SQqk_^r84wVObS3|)kKbzpTgB~9N@=l=|a7UPX z<9X5|F8MD(jkWx{_i#hdeDDuMo8$o2@=_0F^XYivSrJo&lc$xL>18z;0+!3zphe`; zjN4CWlt0xRx^Xu2Rk|={3n!5aI@qZQ;nG|aZJ}t+UD;(%q=lV;)ouRWi5~f9NS;?3 ztHhP_7}eN1!4(hCVNJzE4c-9PV}$>t@@q23Q;F0bdVJMQvppSE`c}nl2Yj zX=e@|^%v>cI7Udllhgaoe%HF0I6DEf_wjhymU~9XnUc?lF4Xb)&j)+;m3~}1b36r& zKaM1{*pLYE*Xi>Ir;#EIvn@a#z(+EK;)xL9s%6gzo7>BD*Y&`5!5e81Ky2h|L(a*F z!JklU6O`^I@?PEa>S^!e{Jj)d>DF`XIJ;wz_ae&p6vVfJxNXTdaf)*=w_%wgYg`BY zrn9?*h{>7T)DIKj15$D!%!Vfxd^cz_KWePgAqRMo0T;@tKTCJiovY7vS=irFSXL9+ zn>xeXYsSo@#TUJ`*5$|Pl~!W!jIZmgeqE2LJYYn<7xzW+JiLRp{XjDFoM12M}h0T~FD~8M^$q8tDTdc{Wb_x3|>My~O zl;6X+;fQjf#l81HKl6cJyODtBEAl&<-5+oEWsA~T;Qbo%})nhl7_rzBfjZA#OfDEYSjsU{=YP@NaIeLd$Pjf zChAJ>HDLL7;@z8lSyzF$H?_2zihMQ`FtbXJ<OIc>i|eFpF8&9{n$rE@w~owfH0O z>#sY9gF;KsRz~<1&+{Jj)N=G~7{p(f92uXm*JHZ82+oKc$OkGhSm5{Wj_e;rvDv+O zbQe8uVc2daFynG*T~5nl^)k3Q)a)ecHOQz0}kY?A$2b5ZnP8ecLV#X1k_*w?2-3f}iG0`%VKq z0nz}0x2dAXN8Lj{sdvja*H_z{oMc};f@wgL@8o;j6Y2-zPunK}4%=zpp7)X`;1A#T zxevf|)nrvs&H>=oHx6L_8h0*t>w81+44C=Qc@Oes{OJ35eSLi1`p7v3{PKG30suY$ zfY9NtH39(Oy6fhx@MHa#<1>IaQr|l;@FORjX2 zO2Y-eb(H&Slmz*~%lMHGiCks^`4u8}AKU7^=U!{^*4@@O&$}^K=8m4g(JlD-!*<<^ zpo#7ju-pp0QTO}WITwEQ6YqKl{$FM4hBz6<{{JGe)~Mhu|GRPsP6~~tk{l~ef4U{d zB#l`A@9V718S^KFyyi9Feb44@2is3%!2g= zkb9>v=BZPEcu_m{G^EI2O4AsKko*4Vh| zfqc>atGb1scJ+M(-RN0&S@r2XR~{lx{j~%@UDRg5&8>dIXc7^8ns$5>{cjLNj!3cd zX=`v>LdChWS|oT%=C|<3if34k=p{~ZR=udA-h?URFaBo;I@ab4?S;q>+wYV&+>ZGJ zMu|^J_h@r+G{rWihYKyPD%}4^Fsq8jifHdX?=+4mN?YC4n!TaSCw z!elGWtaknD)(SI6URLLGf9%9WI{@_zXbAWWK1 z1jbx>I`#JTw}AZ}ua}B+cb*LV;{OwF&xZm21?>gC0{!KhO+>6hl~u`9ews=CjW@Wo zG#S6629@iKbMLv%CTxr18Ft&JioXT+1|1gV-&%)r_|30RbF4=(f2FXRWFm`Jj_yGs z=`@MBWpdYkSsMi;DhDIfuhvv=EbiHh8=9?$jV@+sh7=kX4PE4hb^I7+2pfOzomRMC zL#iPpY<&zwg&fyTgG!*>6z3r0v?n&ob7hjPLX*ozdcqW&4F5<|X|^EzMEa|Fh>&Bt z6{#ldsLycLjwP+~KYH^Q7NdU3gVVe1-A7I-5tIS_ab2iM(0>SLDxd#I zTy$@1&@>&NR}|B$=R88#9@QYr5Dht%w|2F-A&FH>Tg_D7QlT{;91 zm?wNN4m@tMe!K?A=30gak7p!puBu%kJ3YAPgx|rBygtnFVjko#;@~|OU7L2vhst7z zv@-NqJZpQpP(=S^c+<#8i8X@=iYD?TCxT+yIo|eeg6OFn^mtQp;^W*(BbTMOS#3I7T# zIIEizCZcQsO2E*HOo^q$^6JlN#XNNCOB%;LbW2mM+J6R14kFl?$!fN*3j@N|wZ+gtr?@Cn6{(@Kpv1KMqu zm~$y6Y)eirVJ?&>QQj(_w&F`XcH6lgfvF3bkgY)@@*wzjk)}vHg~Q$yT>+Ng@%hV? zKbqygNS$F(ao`f{?-cE6vat7%)A$G&{SAA8CcQwKzm~lY$e<$#)^crp?Q*pza^G1~ zm#^pK!AiK|A26Z^D;?y2!EpZ~x;U$4`JDbukRkZdl>H4@dDVn*O14?_f$07m$jbKX zQHy|tqtQh5^WZu3>i9 zF!KHOv-p@;^XtFe*KdG@)PpVea3RK~<~zO&p><^j{5xIevW}e4>2?|ieKM(AGw@`4 zEfWOPME$IF=MKdL+1?M*A##_GQV*t}Fouz~^XDoRxvn{Iy;Urp@`Qx&e9kjG?l+by z&U{Kih24=s&Qtw1A}+>`^tar_M)#L+w#L^SdIzI_SryAg^Gc%^Y@F$XXpzp>pE?d_ z$s9?{jm5w2U?fLV>4|8ons8y0?(x8<>9Si_kx7%N$DO5STM|=Q&W2C@CJy~CDgKA9 zjw_NrxzIdxS_iSm?2yDX>n}zBr>X+A9Y^lu1NgOzpZLC2aw!Nl{gcz4<(X*6xI&;> zi}T}Iq|lc1vA$(LSLe(vMMlych}ru`8*&}>m#3k1|7mq#ec&QYd??fWY!WYG{Lqi*%7^k-RRiOO) z6cWVYipv7d&u^&viQ4XZ^B;;JtG8(lgVGCDy5{ZC#|XhQ66$v)b3?$>BvAxMEjsum zhJ33*b%61&v^l8bdBp()qRT)bz*POq2edpTrpa!Sm*ppw=f1Z(Yd zbiU$uWKZqg#%CKJ7<<3op0mFcpc?~cxnC`rC9yzN8*#;Bt`~nH(|Am!m8$nQHMZcD zle#&@bClnj;O|l=Cq?~1@3R*D2SueA3vrI%pNIUHPO=#>$tRW*`5UcClr4)tEH4-u z+5GF-I3=-$iN%k}2!D~fzwSt=@#()-twudz|BxUR7tt325mto1%EAAMMA_cwxqlmp z_D~|+7}QBxR}TbvV!{x$E6+R^CS1AfV%DB0>rLvlSybry+RDdEqDV7^b%rl;JK0hh z$?9~S1_xDZsqm*G(*xc=PGZyEzI(_-EbMcm6vifM)WhNV0(KNyu(MY!eiSoLw_xcd*+`$;7Z~$ z>x1@PH3~C6-wjlHz$ltYFd;ZVgJK^oZ4qrc_q@IDMc5%t&~_4mO-r}+8KlBK*+fxH zQCWlb)nU8fLJeDM>T34uNbl!e_Z+T#`eU$i#Psh0pXjmEP5Kr~U zPo{>Rmd|gmr(xJp~@xtpL6n!?H~oa4wN{g(l=u zFn&E?0+em`sc^Mk1hS`ljyxvi$^wu?35ax7brnzz_nd>R$z7#G&fr8V0M*#`U~2pp z$XDh&Gk$re!1S%U@U4m*({GE*TxB)AKrRk48_(vGT+}&#IBiy&aURvq#Rx?qK{{oJ zYy&KNL{j?Z0%;O7~97X$+3pCyBZ$*Yfu!^tis zCPhg%;ccZmay+WQTe zgSURp56G++ZTovyf#*Mi4t5xiw0+Wu!iZ{4`(Mr8|8E;Ad4Z~a*hqr|1Pxw4|9lLf z^Ib}`T>9I*`{y>!1&}0IRD6E5#DG2Xud?p<1`tKyza#T+-V4*6i|C(2i6$z`UoLr5 z+#e447uXycBlR0c|G`#)7zI6X;11D4HzifcW#cvhDqk zRQ>%usg4A^5cQL>$}@{F8e6!U(xE*gJ;HpdqwyRrVyK-eo|3KxfCurKD`NFWXT|FD zt7zR%lj#OYQc@bB>IAGNBHHW)w)!uGY;XQ~Oxq3r0=}&-S|YmZoNMzkBdo5t`N;p& zYct}-`DC(d%J z57wWSvvj1uHU)oGUN=>7WaO;_UtD&i*{B|1Ue04b5uK$P0>W zY5VeKpQXT>PenX%wziToT2*-VA`*oSdEwFSVs1=CalfJ#BNOjZrJ>e{^Mjkd2tp^F zSp-1~N#f94p&x*<;Q)nZqZ;_eL)00F48ubn_(?WGH|GCS!|9^okiunuzLw`l8C8YZ z9pr>+NXV-Vzk@b7bQ(6ODvMZ@XOL2n`>K&crrv&LVJG>cR5EH@t>Yk21S#mv^&1q0 zc!~f&m_Tw*2+JR=y9iRr^-abPj??qr7iD=qhX zqD_{d^dIjE0wd}e=0I#a>DEY(ASO9-^97P6{u3WxK>{6d;<7c~uaCVYPjmGPD?#7 zv4k42!_)CcZi)33)D9C0!Pv=x#b55`zKkO&uGw?Y=~30UQTxIgm|))eTU?uzSIwJV|G*T zZ0^s0r|nIVrL3arh$Z8XiXPQzfmr{(_e|Nk6}E)EB8`O$%t&_O@icp?R4^LsO$owg z5qo3C(_qy8Q4)3{E2{sk6egW!6v;`|q|OPW8iH#`M^>zrglO-r*B{~Bi_0TQr@Dg* zLla?fGq2b?$)ZF?hYQI`?Td@swdBqsW(`}J41!`0C zNmu}a8|shF@g#0XC2xxkx^TuY-58m3N^p8G0M?hL~_i+Wp-W@n=k> zIzi^81oZ3B^fwQsbk9A_qeCZYsVhtx+z0xV;)R9Yi}1A8#PPJ?%YOhJ>VUpKQX7$C z(?Z`%C}j25?7DcbPhwI?@$b_-SsHzn!;h^lNbc zbO!w!6kCamkN@g3v2{8)ZoMl2J`nU(w{vQJ3zvP3oAb}~a83Rj3tJfj`&UL9R<5}B zeJt{QA=lRp@EHM|>s1|ziiNNdB9DlY7#qt(PV(pPFa_-P!kPJqe4a-aBmF z?2K|OtN@S9Kg)o%9W5O#fav2;5UxjSW- zSTJJB1q;L)tWv8U?^Hj{Da%MQaZ*nEPrrd_BHjL7>HIz!zAsB}rK)ES1qm}WG>8u$ zFP+KpMIC}X5XM&+vM*vhc{KR(F1w6fMmeCZUJD|#Q%-=FB$s}vg>!ZKR^GUZ13N# z{C{!kFzb$PP4JKAB*pJ~77)1#z-5R;Y?mX#)6i0%8#ZyuU+!>ck>HRs;bjfl4dLT$ zL=Pc9{%Do{i^Tuk-sdKqq6jL3tYrz17K2^*Dph@qP2X+2!BaKSkB z_e?{f(PogfcS9HtlbS;!R7~8d?-d{ScS?O7`6k8GS^3exooI>gpid=M7o{1Cs2G16Y6WUM(cg>vf zEnp7)@2@F76iP0o+mxA`tV)xQQ(;+lWB%OdhSdE~Ck6-QZP}zz8T)O=ap8Uas7*pYsHZWS13RwS_Ui-av{u7M<7en}3J{`l7^E_Cg}$F7-&d3&ymzQ0s+U!3NFbEEs+5?O{Q8 z+~p>h9v%i(B2K)LE&s~M!M_11s{o`>@O}-v{7e^c8V5c3vh1ZkRApM{!sU{pJEwWWq( zh3BvoJN)y*o>Yy+>m4WD*<+RouHtZj#tcTD|0jxq^=sj3dv*&~f9S<|-zMnRelVa1 zW?%B5L!fR*BihIK?zNyj6iifgBml*guQK5R_%nNFEp)zDbJ9 zC#fqyekX&$ge3=G+?=QIlO#v|obWx`l&UNdZ*Ie z#tO6hA=6?>Y>{I-lSID_b`Tn-R`eGe{kb>av&-TrLf7f`Sp}2CFUayUi&;$8)T&9b zQ<6DIuVlf^t<_?M)Vr}6Wa1c=E9sU{M)SKziGg-~oV3qdxv)KLA#_jU8F-0#V`jsf5#h_y@k zqoK;%z`_nWp$r{X>>o)R^SW*!ao{n+3>$?#-m*C~Zk8Jhpmf2AYob#p*MlkJfgf8A z*-TnM6GBE@5mx8rL6?k1P<5)PGvpDFjZfhTL2Hgcq%pQSJ;Is=xag=6AU^}w^^_?T z;%CgY^lH6E<*DNd0L~i9#GnG6HNjgZ{8U5xt2A4#{+3pFN-E~H%Di9w@Yqoz{r3X* zw)Aql@>8?Adypq@Dwu`Oqu&`>3Ed8`=JLbMQH#(P85p*1zU;EI;dR4#_6Q{mb9~&V zZo-G^^Y&cwrG14ho-~n4X)Bmi?>@bjV|KKnOyrlq2hlarV2no!nEzJU?qd$AoZrFh z9#Lqn*+ku6o3U0!|AOCJaCO=b44jjv?*#pE1<3*tXjG_n{n9d9|LyBnf&L(4Xq6-+ z4+Hr;yIMVM>vLf@umFA5Qf{+Fhx8Vq^@`A8^~u?|;?~$gU^va!ZV_N^VR&NxW*{IC z58J*)(XJ@$tuGmAnhUL}Q*P)Ar2u-10{I{6L{?UY>DTl?V^wu%0F{|zyEmy)FpM~f zGf~dYd3OfO11)unYhiWi6n#M`K~DNzY#=TskPyLfr{D`?VCdJM7nIb~^>=$6Qo4CFF3JF{D}{g^jSqBiP@xsLQB-=-{N z)Kl3ZmAnV5Jk}ucx2ABBn}>_dt5WaL6m4etVEx0XWj>5)>Q{YW+$Ou9egN(!?`qw`&daZlxlkcE zj3?VbrPaFvka6~Z6--teZeO2{jgF)`DsnH>h%w|-XGP5&En)9z!YufiX0uK(s@Z%0 z13#!|Rp7Q=!ak=AxF46($1f6eXcl<%r5lR09ir-c9_vprU!eIQCp3LCmPU0icwyD? zVidPBwQM|whgJ>ucCzcHa=jrt;(X}XsIWl}y6oJXz1REFie&BeA9@B6tD=_}(Q@ts z3l1;RW^sJ+pO6a7H|!V);(cGX4Lzio>;`zFEjZb!P9J zah~maCv(k7N3g?)Wrq==pI2wVd31uHug#+aXTrjIKptlB+;!`eLwQzmYU^_4nln3B z45C-D#YFW+B(&kvWA1WRaiD6%rcMvxCXV0WJNd2?Sj?Y@tTGNtN}*4eUF zkBx5Sg*{6iktuW9aS)2!xxMQLA6VuxdxKs~M0${9GPzk^9a8X{SrCTaOuX4k$b3Jo z4}#bHberfS><0vdJkedy(OAG7namB^J!#!jpUl;bu^yn{CH!|DqvrM0Ple^w1`A)A zi>J~To0O=H{#;hO$V%+T@5+#9wu4Ioh$MP7F%z@}^Fxj6-Fv^+o0%205v|eQ2qXhI3#6dYIox{oq2ujIyd@A&;?O|4g1WNe z*It_{=E8zVUmV>ByZa$AV&}EO&oVuAmU=rq0*dEg;Z;1+C{O&xMncN1I3EyfuI2vQ z4CPpRS*#X*R#eixeRpRQ!dw=(_)-SmQ3MGI!^c>`WbDfh^4YdxNs{87{?={QEdk3` z^w`Oi#T}w#3i=&5ei2v36*Gqx;t2&yXldVZ5;LY_Y=6QZdgy&zcUO46#x>N=Ys{Rt`A~p> zRAZ_ku}^NnAb+^yff_D)#s#fp!rn{>N}pBqLf1oG-9%q&{GQz@&Zn$r_1Y{;&!o^K zqhcUM4~lj~B}aOk(;e!JvvRqXnCVE}TYTL0h!YDp)>_7l;b7966EoJE~~Ktuy3+=1braKCV$u;@c3|C z^ZHQCtnBE08jFu#GC!-n-d#R%_JG(@5>W&>21~=p2<$4D>GWbOOm~o`G^fC`C)wnZ zT?F>X+YZ)h1IISh*7Cypr8=a+Y5X`7A4y1+^b}45HmruNWHKIdY+Ja_gbo_Op`-Q@ znOc<1)Uu2#)h6?zJGY`rHy>(TmN# zrL*~T9;_36&S0X_!BwTkOlYVcts~A8NDU`85N#mTi@gsjs}Bp2KtSmj5k$&z+SVVj zMDPKtbr*bN&C>`8{m~0k`yrHN_qLRdBwOa+Rv{#=4{5sX=$g%iJFuCo0l!#1lOr-dgSurx5^=1JKgbV3qiWWuz$wSsr7o zHLk@WM)4+f!QFVmgI{eXliB+_KUPw)xGDB&(3(uE3I+_V8oO)dZ9qctjq&yw%E}a>)%Yk>Rx!flFAn?!HS7x)X}+2wZiA&#hVv$zEqqx z_v9?F+lArgq=woJn1*WHoQ$$EC+LWuI+N4^^*)Y~S+{m#i)v3VlfrzYFI9b2HTEV_ z992>l8ck1~opgbe8;xcZ?^~4))He{hNc{QTqImV^D;nC{VB3qN(y6f1?s7FhCgLI^ z?zJ!c-`kiIZ*kpbY^6ona-5Qbo}X?Dso*b7QU)s+ZsrFsjCl$CSV(E?Ciw+s)L?aWlO)YvnO$_7bOan#by-aE ziS}*o*tq?{lVD%uJN%8)LYO3BwWg)ZHly zEMf3XS+NZi#0Y(|Qt_5w!E?v*kI{EZzk?zWGE9tB+bJ4}8QfzHYGY2LOHvo2Q21sJ zmG|t(im;89wd%2J^d+1@se|0`^+YU_mMO53yt&%owIi|2E@#^$jWe_xNK2Hv=nI1GjgR>gF->3aCuB+4Mo396{UfI)vW-2} zM0lAEUY82%ThWSa;?iA>AMUIfq_L9#3`rKtg|1bivHW%w4{G)`M};b8)!0NcHZYf(LyJ~8mL*KpUkAN(^&UVSI# znVW5?%16XfSt@=IosSU=Q3@Vy1O#V>)qY|E!b7OAppNYv1Ia+AF0k(ieIy=Ty+5WN zVI7<{7reP$8yewzG3j}9TQfW@HTaKwi~JsWH`6H(()ONPlS#&SInyePaXutvf~%8* zzSQXv*CsWcp_|^InA?OjITw@|$pz{G9|acGRc8~O<4QwCYB0ra6qLyBQZMQGG=2sG zs&?93uE{^@O#VDD^P(-MM$Z*+5lFgcnLKaag=M z=v`f)CHb76d-Jxf8P(TVh1lQx!&A!Q3MO-y8M|p>cMet}O7=Ub%d?A1rrvCvex}zg zxX37mE~M{wP(L7B%4z%0H&{euF5?mwkC^AlvZ2%g;13c%-3HsF!WI>tWiV02zwC-q zq5B7p#BXD0e9EY*0^3rXa?!9;;CRS$P!ViAOR#su8gqHnoz9aAEkiGG zW%InT@)EhA3A#VrzfD_bEM*&^3GDqSZy#7AmL1+2urhqZ%zq6G=?415DfshaB9WGL zmAX4k|Il_KAa6gndRY`Pj>#^#(>vii@b->9z+7`aA)7R)*%ZN`6_PZ{JgRP7p~;oW z!V)_c0@pf@H=a#aj*un&GdT(pv_D=&t!bAPu;n&60A{};M>1Qw5W&NhUykr9EhRU=ajBGLVh;MkUDjNXs%T`CHM=*t0{X}X*u6E!|O zDjj`COiW0^XTJm*^IXv5A7>JI@rB-_)~pAW`=Lk-$iYkb4CUbyuORZIVtPc1H7V?c zngN`HKS#fqJ>d=CMQmsC4w?bDuSSS1AvJqR2K(o)k+F9LJs{$=;G-L~`5j_2Goc^( zs>@}Nm|@~Z^p@g6C^<-mb{Uk4NWuwuTVt(m`1!a%QJ-HK%Glb|C#ac7qd!UZsl8$S zTybC&@mPWB!~usdhnKDf0<+GD9Ss{`Ia3)k?4_-{=a)<9f_ZTtwkNOf1=q!@OKuXa zrB1C?1t#>bZN=yjS!!A7cUx$@){b-+mzKVyp?DDqLupxobgZ@eZW2+-E7!HQt-L!; zX>pz^SBVD`+@Ni3Z&kE10oKL_d!Yb%+}D8ac;lWdaeQwDQ&aB1HYF2Qr=LY?iFva( zv;NJT{Hw?D;1JYIo)q%59gypSw=5M{O%1nKran?;Bo=R+gJyU-W~d)aFMn~og(@=c zH?6wlmUKXB@f)=^J}S}fb%X|<sm0OdG*mCX?=M%Pa5=0`>QtT4b(HeH8G}n+3FFfF3hldb! z##6LIT~|L`oynj(@BN3$2|1tqU99aJPnNYNNt(3#?s{;NKM!EoIa^o*zl-!o`6bl@T~!se?@f)9v{AQq(B6%@B|JP`d)j)F zD)K-3_D);F;mu_dGu>mPIC2wn$>vFff@S6@7bfLNcBn}0Rhw$uhchx)C!qhA>ExowbzkN8-W2vGL z)J<2s@TQ0O_8d=bAveRlaHrF_x|YO)>ts-8b`X--f%i3rx{-q0*RTcOh(X~?Uh8q7 z_gA!~yG)8{{GFxK0-QQ`LB{+mKQYKz$g`pLT&!4rvtW>inb|TR;G4XY`g2y&AmbXJ zha zR%%WV-@{l+ZlHPW*si6=1Vq1)5qj8#c94Z_M9sBl>yP}+O&>lnbY&{t>NA_@Ot4YJ z_a9-xD~;AUgLx!>(FL)=Z0Vk@z-_*}gcm~?!YLb;c2t^S&mfZ9K;ZN}K9qecg1~2u zbOXb;(S$4YW7=Jg`r(?SWzCgHF5{Je+pX_|u@rgFIGSTPi0);q1@3U1o{2TD#B4pJ zlO}U0Q~Jo+# zWe>A<$l&QDN|^4n_h_}XK|3(=TTe1*z5a>M^{Rr$+(%(CY@*0_6Oxyewx&RO#hmlJ z-8K(je2nr{D^b(z+d203&+vShL?{&=U)Jf(G-K8@bY=Rz^+4CmOTHE$VtYh` zWe!6ZKCblicK{Ls=MnvGa5y7YL1MFQtr#5@OLNw9^RCkcU5B25+>HmJfev`iTA?7b zttzK-10ZKb<2hkQ)=aqG#0*Ep6~ zM7~cb(FK$T6LTwFeMK=6E1~fct30<20Btu;X<n>Got%Fi}KzAxWCRjRa{$9r_P@jMfmc^q8BgAwwGsw z-T7-4O4V*YN3ltv-2kR4>?>Q*-3?Ul7K;L&)J(1iw)952!ueOI0bSYxlzY^!mGGm- zj{(_LYs>yZoNG)_VkX|Pp%U-idP7x6&Y#AoLPz7$Kh@EW79yK9eyCO%l1dT8u%Yx$ ziGuH@I@tuBx(_!vS$kq#_kpUuU<`Ku)a>KR{(Q&_x`e;TSKP0^(g+q0?m`237!X<= z%%|xz4KATn!af=-ss0p7q=TA}_OMA4MJr>6r~PGxT{u&{$J3_}NqaqB8ENg1y?9Qp zu+7BhY)E8MtUrPg_noWMNZUyKboLXmSV6eaq0fe~*xrF(ehS@-MF*aB%8PegkC(=$t4lkT5BjZf%F)K5J5*3agi z6yRo6kGMb?#D$YLLbJob;p{^8#)+U?op-t2jOg^+9%FTq9aBr+K&}xXT{W;FBbD7# zIRtui9?VrG+jHO^reJtI8v9ZpvXE?cy{u{XuX-5^Ri_lUU)ji{7wp~v_I#`*{i@y~ zMZwlL!z5tgsfCUa-aFJ=AZYbcA}5#kg#y@bwK0f-Q54RJM~g(0!d2abm_#+mIYEcs(oCi z*zpcdl_|)@RrV#F8f{r()$ODo{$)PwcOP_#O+8Dk5u{Q3pDG0jJEsLZ?9krR`j%c>)i`;#yy`A#r57|!?6U9c#qX*uVI6aDuy7wZQc%>)RcLx%ch?RdWJ^2n^J*E!0{YQB>)g$qnw~wLw8cXN$2Cfx9OHjKk}n1 zaK32B$8KPN3VA=Jy)x93_ar8)7eJZ7B$aX-60;U=N0tV;~KyDn7mo5M{nsA*~@^_LpCvgcV7 zjsy{LtzF4HLo;J^q3edYN_Izfgm?!_)GH%+3s(yDIjMGBpkAn~)Cb$d#{zvx&)7z5 zAD0vEnMzD~8YoQ1)x|}$Y_&V8q3~H#u~&|vU|&LED}H9`_q%0t@$1jb%vYg-NNgP! zr=^e|0WNHv8C}HcVC*3Mw3gpa8Wr$qhOTS$7;RjiKe#~M-J`k4j<_cbBy(RU%q8+( zD6lQkKkUBCQgniGzca%iV1tp1A=MH;s^r6{QR7WCnyz@s=c4m)I|=FApnPJ__)#2! z=P+EYvqp_RUuxUYIPI5kNh#5F*hCd za&tqiCgMr?ru(S1kAFVCpPj!*Zwfi(JlA;ULq4^a9w|4EwbUyeo>5nxe6bO|r9hNI zIC(6zAjlmfy$QV9;OGJ2dA4YHEQ!})DpATlnNc50XQ1C?ux(nm4oHD!#VzwWjO-8J zWrK!hd}&S26jN^;An1Ip&XJODzO?=s=9pvUOYLwN0T+jJ#Z!#zW|{<7;MjQ-UOZ2* zp+FkiE{uq0zPb#{lJ!YTS(@Q8>2?DWPAte1SEt|?m}&B`TQxI8Lx^Z{Kf|#X4a$(w zw$Bt#@Urf)b+>>actnO?9&3*g?mz7c9~6j_u~a$*bLOuqH$MPZdTx!sD3i|mG;f{Z z=s1Lj-oQ0uJW8K*=F9dETFekni>N&}Y)O zHO)U_TC#;qKRUiWy}R`}=VO3!E|z1?f>D9F za1Jq>U|)R;)=bO9(hqSeDnUmjsW$;Q#vuTaTgP(KKR*H6g-xC2l6_og0M49YH z{9(T_BWuAine)KK@X;oVdK;5xqSf$DKdc7T@Ol4R&$^ zN-mC9WAflkE?&o4ZRF<#)e&s`WqZ?Jyg*Pq%n9xHa4W~yrleO6!zPL zk!gI;ZHsJ43^e9|AzM%>LJ>KIUQ>zrEDyI=Zd*FW+X{7rTtLhAKDvrq`IiSO zjq%kf+%Ud|YukD(@`+{sZTH)xH`7ID?QdW=I0w@dFj34T3|OTx(n6|w&5@0)Lkr6`@L9h zkZHo>&~ONdkp{~RJbA24sn<{n;6)Cvvwe`)t@)*yv$|s)CTsAsSbT%SVPJFapq&kz zYv^t;2J=qTF^^*6&uXCbc^IUpR1D+gVIZwS4g4_-o9RhddfP19JLJ_RKPF2Uy=4sr zzICsmeGXLms|`w`&J5X$+S{&UkYGj@JR3s@Y)l2Ao#sb4bN=rfKo7^WB%W6y`-1Dv zKE#t2$rYG*BtCXSmCzDGJPRg--;VKqxw9SD}t%p-+sE#qd zMkFrxpb8^^DJ@&3X>BSPk6mRMH;9+W331cpmX_TAw0fLmtSV!{#Bkmkw^e5|=Zu*J zrxh8;{{_!m-wmdp8nlpS!y=n`&QI~Ej|n|8RNeyORw+DdPZUguE0L4qbUd_ehqD31 zI)Z*?D-p#1>H^35rzvZ}s#;)A^Gz&IbLNYJQo`l)Am9_^3;8-kr@a1gSX`UZvSGqn zoNu)XUW6vb?OVfvg%&H6hFdr5{PDukevGt!ax2N{S79;VmgxK?@pk9iabHEV&n8Ae zYV|$zDm{Qu4fYA?Dms^SbMO&PYU6Su76@xPwA5@ZmrngzADa9Q5AUu8o5d-68GjKu z#x|j%s&Vxf0x&lHZJHu9`$eW*=hqBWnDpZ^an#Ijxl=#v3}H1_+CYobHIaoZJDpCx z-F&LsAvu3F1nNIO%Wltk3z%>Um%Ncw8UE$L>MIr^RGZU0aOhn2;}wl%{K&&4u|&!D zuup}VVS99ne7C7nsq8G19(tl5h-NS|$|UC9v)Eq(p!q;oyCRv7kYd9(udHsW_Z9p?>{;absNB4X6B``Dumc(AbRb6DHcwyPXM9B*5ABdD5vN4+ZFbn;RS=+ zPF$JM?{u5P7%(bGuxci5m1HDz*8ARjDNU!cxoFe-BaDMiWJGbI^{gEQ#U{QPX}JO; zK4(@>keUh;wSG5=YX-z*z12sFwzOHG9nqL2Vy3H#q{wexlhLAI1o^g@G(8r0tf1Ev zQ#;(UWt6wBn>6mTQS)32%D1W_EM%Ra^q#=a231>tFYgoA({}wySRHyhpE<}uuFH_? zPFHjklJD-1mCnUzwfsy*z_%U&XGGw4SZb0+IlC8U>#)2r0gZB4W$0;FT6A7Q0}xqG zke=qFlntPSb88n2ZSW(mimN(S2B|gssiI7wu`7K~3buU>;ITScvqkBci*{C4x6?G8 zYnAWz8tf$aaYbugYS3QV6PbQ+-g+O5Rb}yWt^By?n;3=aTLP$NV8ES|c6g$0NJ<+8 zlKGJFN^l}Qd3H)S2tm5C)av-y$kyt1<=ay?gxEYI-`|zm zxjB1252SAcvLJcmLNGrlIc(Z$4@7wA(K6Jn1aAc)_(#DCYrr$%vn-3LU3!147uj8^ z0xr^oQOvO-0va>RVwxn_lsX1(8Hg6!)f)@FO}EM!DHl(qjq$#X*CsUG!bwv|BqzG^ zNygPfnYlY-XY(?;cEu+c<`lnLR|6S*tEY)1xltEj;p--Xq`*nQ9We97_vZHu~QY)7RDgzqy);sI{&S2((96n z6f7ZYYC*k>&VaJ?@u!SX!J)8QP$R7x5FhgN7nPYt+JM)TvBJoN;;H-(m0kg~WD<5* zen@H!U&N(|9Xth97Un=h4oqr}^VQ}jpK$=eh{F3 zyDk~g(v#yZx0K>j0(5-IfyAyYkA3E5vUT3Cnw++sjWrIa#L@1+0Pc%LyZl(6L*%$n zVXsS#05UH2kcpaRY;+p*0tS4NgQGTDEkzh%vH^|~*{h=z9FusM`XaQTTxV~#z1x8< z%>`9%^eT3@2}(Xsd#~F%>2H`UOObVk_M`2}$MbE#0U1axDsdSA-4jvzLjMTtz#pcZ z0C=pzm9R;1EyTblyK34~4}5yvn_xNxo(qXsWLPGSR%69~2byHVW4u z`f{gEzoq6LvOS~9_BIf@AMnJj0DJse@n!K^wxLa$`m^{1Wm`th(6yos5rb>B8FKzWf zepC64`=P%XwAN3c0;C;8+b)3;lheZ8KcdY|H(^@Q@3AjIz%1d2dau6ih`3S8?@YpG zRWb-MXWVu-C2`Y&{+!khe8>qQ5q{XgRmXlay-=6nMbOt>=SaJ@++|QYX)8$CgZgWp zPqo9tu2JWS*zbgtj@O0gqJDB0JO$x#_YI;ZT-16k-cYkg^#yAx8pg7iz3)vgL@%bs zgO}0`T25FlX6ZJHor+c*K`bDJv$1CPE=;Sc6q zJt~wl8pPVx6Bvl>ngeX*yd3`z1OmN6;&}AQe;AC8=@^}C)+Dz~bAF`SP642Jn?kCN z_k_LXC(g3HwuyDq+M@;l^nq`;0d`7DBPyzFbUij5M+5~;av^ti@NYCSH=<%?nI}zw zkL1-5xZzko5;vU!k4vZ?Gqjb(FRaj2Pp&($Ygc zA2Gp-nL0*(P;S+kn7XdI*deeByUOi0yxjLd0_maYM?`cVH7>q~@fY9#eHdEATOXxL z=7@4VQNWK$=X@M^s^dWceCvpYfY1W<5FV?~YqsjeYd4K{*Ds~t933ViIy36}tko;q zES+*Tc_1nVAbW6cEY!vK;9AAd!9%LHxBPGu>2u>F^2XFNw{ERHaAk21JzE6jUv&+k zY%Yy_!8Z_tR>j1QA%=Q`S;euS(na6vxCS)YEt!I78gA zLb2}Ct7ZTI@-3sGj6~Bz<8~oJpJ>ByNmo4Z+*8dnd!VHZSeOmF5pk4-*FA`;T>36@Hq;~=dKfYkkIFAmjRwOMT`$9xba`R zufK@DY6LU1LPevSF~wJzrpenW4UKB)c9!QNA@UxS=~iDqn$X|!yE3eC<($Y@sW*&! zl!|y-0j**yR({uWPy9q^`2MLaTWpUUGcSV6U}3R zf54WIc28JO&&HkIhwC6QH0jz+AI75M$51h&m*rQzW=y2HG=pvs02wd#W(N8+Ko|oT z%i5=DDM%Lpn1W)KX=Svdi&l{6n67%1j!tyVNMx% zu?MqptDLk|@-3i#_7P;Z6)R$U66d=bR|xvDkmc|KnzE+}vo2l@ot=&@E^Et83{5FY z@yE9Smr*w}G&s!%(G%I186Mve+0s4Q2B4@^Nnrm)({r)ILx&7juckvJkf%HT55-LNsWh0!E1 z1yJaK;17Vg8)v#*hOD|?g|DqO zTZ(y96%h$qiPopSHaMNqaTBd}mq&gLcs|(rn!&F*tKUzlBVTyk#-@oZeBQk{g;G%f z;Q4nT6Q8m_eV!@(5W1esJ+Qk;+v=HH$~wB!Y%)|NHolvEl|?Ruy>DD|!0S(`_r`pA za54=xCZM__Bom#qYkOzBqvFW^L?(Qe07Oamw5gOd_oA+P%|}Jt_uo zTpd^AH*kMqzck~ao1Py)Xf$*O2Q@Q&AI3io##3D)8_#^SAH;7b-wQ<@jv5R75bRXE zQo@1vtcBqv~-X3N~Z#IQ}ecoM%%kX8>a>X^q=+{In-uxhP7 z$nLIF!`YK`LL&jA30nE>>@Wobr9DVAhhDC_!v9)=HRxpS8G9DN)54WUHUd8Kw=$!a zhy_ULJygOUeRfXnS{tSP*YObglBLlNIxdTKvaSP1?G)aD&Su9^#)+ZeETnFR$U$}u z_J~tKbs$o^Y~Gp0oWW zI<^$;G$&QL-h}^JztUADWVW_z0Drq-p`$LZ>YJ5*fgYSR^cXf~3eTS?^qhQ+Y58iL z$qo<6oJ0Pt9ev=cyVn_pQ~bF z=GIVTn;XDB0$AS1FA~dDm}lyoW`2x!KYdK9xJ>EM=}u59v&#$8tD3JFutJJ z(!p+oE`KzY^tgZ~^J%#|kl(T-;DfyPCX3n5E%#?AcqbT8E>vvc5`mm9?3YH)o} z=5CB%o{YfhRH2xZPfQfmG^~@DHYKPgTz6M9CC_Y=IF3UnRc2z#?Ra}x3@(}SNFLXO z@|+KTx*K~6$OVAi2gK=*fUi6v{HIES{u+!v2W?7l4YO3(W(OQ3tWg9Es`@;jC9mX>k6!vf^ZP~LD%W;{jh!tl|>k0vRAX9I}| zer)^1_g`krChPMriNjSEPb@z9zvu0Q`40iKUwNQyfz^H%aW89;WfvQFt(*!?*k|)T zl=U}QGQ5r)fB>x12)xunKRynOspHda-~%JT&@NVJ38ktYbRV{y2Ohz`E#>(NQr08AZ9*%^$mqFQ8Ss0RWlQkWpA(> zVQrB^LnO`r4v@PH6u}B_;f%F9XpiVOCA!>N0L#4qI0tz>{USU;>IC;RJ7^XZ&uY%clf8sgm7QPNEc7QPd)$daGa z=iBrnv$1D@vj7yNT`(`#xqK~2Cr$$an|+87@>EW;gBi{@!&VGO6GT3nFBkP6QwFET z4v5kLy-=4g(QiRY#J9TU;Gi;w37nmLChyTK(fNfpG77-K%tZ&1m-PY!1EK#j3_d!m z@sGkzuEB4e#&FV=t{HSN0xasFzDtcyJCCY3>YlIXott;DjaPb%+x7>9)Si)Jg7?;f zULt-0B89BSx-hXeDEm2UqKfQIu@FI$q?PTbfqFlZDaxHhyNC=Ay#)49mXO}j3n8Hx#;ggp1I{#NzX z65$HqicZ-!=-SebuJ)aVtw2(lnE=b0x|;{9307Hf*<3EwOeC7)9Jg1)y2gjM@fL1- z+0iO;P{lW5)0KyjPc!5r>n-Xl%LGmo1O6*e@wl6aLL_TXx_4lsz?ILqk$4begS_TW zz{vYNGQ%Yi>bRsB+>%zuyxBUMeo)ygCT4-#pl(?GT8OANT2%a`S(UCV)9+T!h99}v zf|(XDH*Oatq~V^6;ty!+dPJJJ6yP{*!@DTq!!VA9Db|Xb05naBWU9K(a>MEFCqe!X zKP0SyCom|_%Ot|ri6F~~tW1`}Zt@dZm8CZRY)NR5^wo`WM=u*<&VCRuUJcUSvMDw* z?qKi?+IH2-o`h-Zs$NwCbcudQrh4Tc!_qd9za=fee8Q9wq4yP>k`BOE5Z{d#F1daywTz$(l2ueE?cMU9(bV0|o zV(mpyMo6Ybr_*F5XOr8dCt^;aQg{S*;lvHyx_%WoxG`0Rf8MJ#^NdEi3E&^YzS2(< z8*AFP+CGK`TnXZRpE|+>r3|!u4pm0dGpqPg3BIuaI3G_oEQ>zLja}@`i2A=%nkkr*evY7M6kIJvE0p6rRz3+Yfb>G8aLvXm^HKD zaT9&j9mU3A`4Xo=IO})`ITy(U{jN>$69PjY&kW;Tp(mr1IEXTE737qPbfT5k+o7=f zN~&PFavCV&H=uWuzJ&h6REL0AQP(P)nyth(p5qMp%W)O}yGJkA977cfj5PmNUH>O> z=;HsF-pPmAu?vk@1jFAkFj3tpZ~geCXMk+Rs#1MYYi-tkDo|4tv0*uw=qML4<%E}p zAML8a8kg@r`giHL(>Csi&eF(-CPTV?5~&P$5#Cq4aGjp{@J%{ZWe;@0%?UP|$zyWU z7k`a^vS%(`irQXM;K-s+LQY3A?DTEkyC(^SuM$C*6NeU)r+%AQ`zIJIE4FVYmx}Xp ze@;(rlcV)%ft!SaCa+*Fh>H_?-Yz|j#dms2v*L5VbI!nM`E+#w(yw`-8cHKwJ$_G^ zqFBHQZU0y;;8+>(v_G1MGwW-3l)cen*Mf3h}y5G!*Zne8Z8Kd^*5J(U+N~k zwc0P;zhB#lbDbVp8X4eg2FNg)7S9$Ax^j&UXTfy_3kt1DLx^_}Sq>9gQYHvOm#@Pcw^hW8J6IEhQWDsLHEp^I*W2k7ifi_-^3uU=l+Q^UkG>w;7 zU0;p$(t1Jw*52Qj>0FC2zm(m>{z%>(=5c-eh579q~}7Tk9&D4Eyk%LJ*{~@cTOxgDn&1`90Xy+>Vv94Slb7*cpz@c)0S?B zIQiVs;^lJW4b8g!V^vd#Z`68h5UlkCM|>chcs~RB6iNJ%axe!qhurZ51%InhTKd=j zti9TM*-c7CnnQxe+mS%fZ1qCj5X5gL*mRDv*aA+J00000bLN@(9r`_Xi{(UYDn( zILpuFWSB|48l4$6fo6JeL9k2C)W7G-$1A58#m(*h#9A>YWL0y-T4~b$pMSak2E%>Ne zSxM_sJxuyA+AJjolE36-BZvbe-H<#VaL^@U9};k#VP5V2+-x3f{24DgJoY!zepnM& z%IOu6;pC8P-1$!oVVp{Z-|;tVIWZqU+5-Xnb9>V}RBa;|!oYw#we=7C-uy92&tlw=hol=U8L!Z6bG!Mgr?`OPycEW-#_KrzL32`| z7>(?~XhGu*K+lp={jT7jB2U}CvHdPjtVSF%4dj3G1B1IF0c9 z)G>?1M@r$%M-OspJ6lc6aEpuf_$F{Ua_XDd{|9XX`kKIc+WZ{j0DeSM6+m)(Dr__R zd^v)ZbiwOTG&M00?kX;x^+ePUUjB}IO!sJNL=YLsij2znq#wUOi?&{3RRm`O(x7bN3L-pTT> z$Q0)U&l6T4-NOY;E3`g%rIjX4fo&qLFz0tKY`T%L-K&I)f*8;iEnLy%D>l0Gk6u>` zs@tRP(uvA*O%aBX<#Yv0H4)&Isxj61ovJolOz2g&@A{&lN$hxSUY2G z5{J~XN+xJaA-d#{4$6%b9)`{`Uq)s!i<*F2f$< zr5HkXX7SOr+GL=4P%-U|zw{YavNg$E_Z}BA3?<2G(aM@-l-IJ}BsxA6QXwwf+?? zq_3$vwK|^<(%ds(v_gTMinh4jrB<%2xsd-=s6o_r zMnO%#Aq`$E=?75Y%^?&6>_Em*$$xY0K%tGswe;)BqFGyQqVXWDwFkA?an0PrySt`5 zBBMV?=M+={T=YJ}y}O7S!qWbfU;FuNG)Q+M^1qs*wuako99X(rQ#-ECm`8zgM*UBN zmrQmF1AQc{s2D2Rh02Ow3vN^ik13{=)L(vlTpW_MS2PYoEIdcEpZ40j*GV{6qR*mI zVsL5-PI_M^&Yq5u53E;bpp+VuQW6WO%%)pU!X2f+W+mbKM}{Hkqt1o{$Hn-}JRrt$ ztZ;vbD|1o2t8Nh{@j$>La~D%!8FNkbUMSnA2;hQFo%*x1G|xhK%h=8dp#uD~GKJ|D zXr7OU%YUT@x7v!P$Bj1NAl$_U$8VoK;)1t@0)N4dGZNrt_n2kg!$ZPN@+Q>z zCI62TcB;6+xny`w3=LawSa0i(Dqua0VvnKS?1Vz0*#vWaHpR>P3{_KMn?Dv7%ekxFs_pS_fv zT9XL($|bBJdn%n|P4JQ@dJz`hIa(*%w?p5SR}acHNYO{{ZtX!?6bF*5qPEnoQ_-OQ zV6<`fbRZ}i$!A12PS4Nu&DdTm4)K&PS5u@wKiL8&1i=aJZ15y zA5h4>x!qkLiZ5`bIb5^y%UxkaW}BlNt>+$Y%NCC406w0)D@R6zUMz%bD?Q+pDfMu7 z&Dd2tfYp%^ps9P_51dxxm^{T`3y=K@7O(b(6SB-<=v#BB41l&5ul(SL`6yrUo)zKSO&A)mDsJ2KS<`{4vACQN-(x+aPSwXRju)JO|WocwA&G%6I z^=RtEL&!a~D6Hn=r64Jx549hHyQoZ0{Zh}#U8qZ1OD0R_t|t+S2SGx*^-VPLo+Ske zQ)1r6{POhwB!Od_vtg=q&1$bo!_!x*$G(YRGGlUwvDG2x`n$C5&=vv%tGL~XxM9-u z&Aev1Zpk5CXMbZXBLdBGEBipU+%u5jtOdVgyz56F0U*n>fS?Q-a-NYFp~ClSdYcUS zYC|u_#Mi5%{1>K-+Wj<*^DH!@b`wS^JqC&BIwL1GsT&l-1gnDNmD-O|8*c1XF}w{?(2vMsnUT-mUH&{m`PBB2mC zv1VMl-7)nPpa={kqu&Me>m&PT-v1xjsZ@ThaUvZ2?$G$d(!jSnvp4_Zc0W;A@q*vD zhWI1S(;b`vzcW3D7#~V#lxfT_igk=HX1jai516(vlc>cJ{jsGo`x0Obmknd-M{Ayz zwLRqxi0uR(q4Rj@**N^P6Alx~@ARD`gbq)w@@q9(>wPTchD(;u6j&l4y-rmfHKuk1 zIn#_3a{aqw*03W8ZPZwdpPDxYFmgCFQyUXc;HLFm%E`OOI*!>0`^ zE*>l*p}^6@$DQs&*s{e(Qbn8Is6A*%lUjP;0vJer!rSCxCULox^=)qkE8Vn>f0YeB z?|=eu-hvlK11m@|kTWjH*HAor*UtqBh5U3f#S6_ndQP<3l=5>AFX?N?#c0eH*E{Gm z!9(b{@sza@o%&p8TT0*s{^cm2gq>{O77CN7g#}@4^ZHMV1$r z?B0?U6ZBRqITfrZAYTGQw0OxB1E>juIQ-jtUCZ(#7MMk42@S``rov=;NgQEjK$$3l zmkuTKs|9?1dVZUT{U{Rv4VfglBpUf$Zg62PTCXAB5XQoNW=eAWriLr{8}=!#?J^1b zL$csu`^_Y0moqLKi2k7b%|uumWz6YG*snvCZ0r{~HQlrm+U0@9i1ono!S&O7&8mVr zyJn>AxAEJVkMipkC$5RCQWZ_QPZP@3=mwYQ!xi%T20Xet?8HTxD*gw4u@sA!#)qpY zY_bVXs?>?wzE+THw@4ez)$Pc=G~=kjGQ@Jx>;LwN=sDuPD=no7HBGGr_XjfI5BTaL zlE%D=#?OGCL!9g~*86W{H^zjbpf2H=Bym4X7w>JB-B_~SG?!Z&(3OlKeDK!>7vW`- zW_|^RkUk3Ogyy`Vn>e5#x=MWv#v2_gL8rJQ(GY4mtvJx&p4ij*LabrW{0jBuYFe}I zDdoD}UdsI9|MaC0!loBO1GsUnJX=C$Jgq+EXxF?Ic4Ck)V9~Jw7Ke`kfg%}I?_Gw% zIaMmjR;-@D-_IXnWcfe0CcrAOzWD@~#MsJx)2-X~d^Yjfq!8=x#a!D#9X;!*ut3p0 zf1)sPTZo@)n-DSkC!Wrb^iAimQx2|zhE}x)t?AtDp8jZjI#&!IgZm%U%=;ObFcphB z3pzLee&vJv&h1V(jT0P$@qgvoj#jg2yqkih!~7v;9lU6@w1e zIM^t9o;HWYk)i|>0+F01)7cjyX<=@a>s05}{c145?E`2QIY&FKx8}I5A+m(I24SSc zTIb@vrc~ZFn2gz7Cg+?hyTi!fl7OCyg^>FH($W54#%O zGB-r3NW1T5C@or_zEhj>Hx7ysJZd7A6@$%)Hjc>nv&(Iq_;0L+*_lCOd3m9~{v2*U z=L|fwgln)G+R>j;wyL}Y~R|HK}>`PQVbc@jz}Jl zYU}m#itU(L(WG-~X&IQT`5J{H6%}GRQHU{AgtL~&(J*uJDS1*P7*!sWT{L(-g{i^) zojASVh-n16XBYkuvkzWpL8+1XlcLenPmc7v)+{tx(Hod`CP<4%QpEbygI6!^isteN zLlMtKU|FJB;Fc=bBlQaGY|jNYtlUIDgUBQiC4fCCE*yRcLKkqGux&}ijZ?>G@!#m< zIeKZx86TnvKmsFoB8)8jONk#rH`kTUjJh%bG#N2xL}0JFvz1B`?m)AAt@3RU)xe(2 z+a~8u=CBJlz_$WAVaJLG2~AANiSr57Uf+2n;Hg-up6W=3s7ct$^ zSD_gIF%Zn;Itj$IJhOQ|V0tH{8rBr|s};Tk8=M)}ay-aw_~2xn1h5EG%`asYVsRd) zFUEHBhmY>BZ4PR;_Zv}jSgg)Fw1$55I&n}&Sun5RL$epD-WE$e5;$HP*6~si>S*^(;Xr!`kmch`>TjKgem>`Z?f8Yq6R(x=$;CZP3HKdknox)Ny@AhE>9Umw) ztBid6%+*n9!L~MF=*Bd72Hg4~uNnlLwK+C~A#1e@N3xax`#+1eit#9bMR~kz%LaVD zO)v{y2^ny^vU3bMu$^`+!;SeTy+!DXtQiJ`9(BKxAl~1Jbq{%a$!#CXBz&V-NcG#r zfz_f{STy(OqLu4>jB}=fi73ydh1^-jpe&k>3VTd8%~3W*nUxPmT1ye~dd?q|l*QUa zp&$aa1seGO@fw5WB-GW-2|AV`(1Q9EW&cvS<+Z7F>nc)kCgOYXz^z5!PvkA_{yM7I z1ZTyND`hfA*~uX3>N~^(12(wwXHH5?IcPY%q$)X|$QY5?juyKfy@ypmB?9U|%SJ(- zArJSUMu{i~8q=ckWrxlKXgQ9(h3y}}ce_I0+r&$R)$jS{BMJb7F3$VcjBVRL%mV^} zSOr>ix!F;8uLBEm72Is=tn>d+7TW&pKs7tX=$AZ;@PYiAXy?;15%G zYli+rhkwhQw?Qa|ox)&(jjWtQOLJSthQ>i4yCK5R@qGcom_7991_#1&GMZI<$-qYw z3ZGW@6qO13>y*qYj#+ym`)P$aJMOYfM9GFho?tHwknbZ6n(I=z8Ub*}9_;d^NqvU?y^=R1%`CFgm)+$e3 z6K9xjQ!8mb6DUfDS8*!;gXA^;-6v5TX36p88i+p(XGLVy)!LS-|y7R(?rUwFTiknt=gYgJu zhJsNa^~@nMs@-gyE;W+gx=l}L*PRnCA06)4vQc?G-UVR5$#*;0q6dl`&;g#JIZ- zCsJL8UJ->)PikK+ljI|E!fLPI@Bjb+00009v1Pl`4Pa77o8MGGH=BPocKIpp_+SY` zCh*`g$B+;HiH}2%w+X)m_hfxbK}p|nRoZXqD-Y&(u8tcTAqXLKok5L+JNM!I{o{|C zGWiSwJrVs6;7+-XU&Ya%857MT6aU6m^MqO>aoDi94N`4Y9smGd1dD&MX&JpU79I4a zCB3kL&Q_EOOKzUFH_u1DcD=;ca}NQ}WrrkefBBj2c8&s1t05b}@3%%mu16-%ypajnit8k1 zfxr*EcLg1RTT8v5)U7>9-BN6Pb)OpucLnt%6Vb)4(ZdF!PkzY@cgZ$-Xy9@wt{}_$ zLbd2GN>FKaJY3!yitnGuX82!zE_njmO^AH&17Ehv2e&}i;2HvDw>mwyUV7Ua10~Ta zQ)*-7;u>XE1^%+Oho(5@Whx(qB?T?Iy+E&f^n1+Bt>A*7g%rGR%%!vu zx{u~92m^VgQxCljX?wg{EvNXPQBO@e%|GZwJ}{gmSMYNYL&nc6<@H`d;_sp6?#ESMn~X`+$<(v6wKb^J zxZVISK74_-kcMK;m*y^G5(+ca5*(`7@}B)fa|f*dW*G z33%!5WBs0%uG6;1u)=#&3!WyVucVQ{3q@V06w{&Q{>^rIyJUe9NVcn1X(J7>_+D(j zb6^YEg)*PiA&hU02s4>0V}WQ_&1MBX>`v44SHAtNkT4v6+_htx_KmdTbxuRHMDXP3 zm%M6JTjo{5j>{_R+YU@F7C`1(7pghsFmnGx)APXtKch%tY3?aIk z5Ii|1%HLQ-5|&dZ{$tAD{?(4*t}WF7qaHNPYOHv9!gwS!ButHZnEkS}8Cm=O-Yd5+ zLViCx?l`-BU~769F)0IllU(3jnv!`1KwS-Z=U0*P9pg|?9(#B<*&yy^KOkacyX}k{ z(pD^X&e-prHMCe2LYKbw9AeSbQ4RWf*0^03$lRe4y91d-70-eGT9^O;7Mk3#5d&1P zWY~WvC0&)4hEcUiUSIhp#K_MDmuEnsEC2ui4p;yH9AE$dK}a9x}Y+)Lv%oIHmP9&%=!>wLyd)zQ;sNz>9x>t%L5Umy00000002hPjfENNz?_cbDB~=~9*ZCMdJImB zsocY|*GF zL{AgRw@36iulDE1h;s^gj6D`V?(`U)7gM>1Wv-6oq)8N#RiH4-yM=D-l^Z49pOjMR zFeFJB9P1R3J`M#G!7QuN91^Ov7VVR<%4i_AP#Z=yI&t(j9-tuc@9Ucha^;R;)rw^8!&gjKBO`cOq z_<-$^`*wF*Tll28*@(d{50j5`XIQE5I-CPCNf#;}OglR?F~{s$1z23UOLScE#ggEeKwzo{h!ExdP+v=4{nhPakh+&GRKimCaGn3v)6T^)IgL%KvwkVw ze=CJceV?l-z&CEo+gnlC`x9MT%Qq`*wihi-{DOAzyGTKWUv>{!rgwz7;8T1F7Kk+w z(T#6@x?8T73Eakhpe|CvS08qKDvER6OCib0c3)bjiu;&BsF~w0cHx2LOZhD&#>fFN zHW-4&+=sax2>g!Jhtl?-$4g$m-ZJ+H>UV`Z3Pz%oSr?8PEdU#*#~he@*ZqY}#cr*# z(mf!JQuZtLL%}N1tAiZfqa866njGN6@n)BdNYv{Cd6B&kXb`lFz~Hp^8Rrv;LL4b< znK`{;z=j(Oec;9m192X#eGm_aHOE?Co>>Jd{0}j@jk#xdJ#$MOOL%)C*U)(`X z#88T=SU_jnUFi~sU-T}pTtQVA0J(v|G`p_9F-J(}=0BQ>LxJDlNZO{a+O+6?AIzE=YJq9D_jW7y8DkIy0!lh5X>OK<|%p!FmFy5 zcsD!-!99$_ZSLB{Al!BhTx}jW&$UK0@1ag{vQOGh`ZgdJ!lC`%l)$9-v+rfNMr@*k zfWG^kK<&~g<>46Vk~@K`(3B?T>BYU%RHX3jNQ&p|WQ$^tB`s5@jAY!Q;fF}S3x~Lc zB|65!0Zp8@T^ZjByYkEp><{57qWD3na)q`+xDZD?vR^JUxEIVVA?S*SYsZ#;*Q^0d zRM%#&{ug~W{b+}HEh1}r8-1EPGvIbkjuXIJnL=>Tt|jNr*8872`GIoe)v^-1x-AL2 z7}7Ib%ic^dhnexzVaADCkN|^fS*Tq)af@&%OWLcj?-_s9TbeI?Y>DNU0xfE^T!kh} z%3wWUuH!_hy5ehmv z@YFJGL0UIj+o1*QJAeDh>WsPvj&=-@PKLG&pFQ%I^9Pb@%FcBPjsj@?(JGhV4t{4F zQY~K}o`?e-xc>w9GD%%vz?Y<}YO^5PK<25-tS=oAVK6s`I^A9Bq?r-a2cR-Fgo*We zf|7z3)rc8gpMVJyw+U@1Kbvt4>^c07QjvhP=>O^Ejl2%iba;-X!&H$m+5v=D(b(GFU3P&r3%XGRvR$ziF$H z=6j@VeKvHs=Voay!Cqc7(Ox*Xy@T35tvu|2zv}d|YCJn!`LUcqgjW$?@I5O!Ck>z-v2)*qEMrHsjpE#8w ztfQw9KlG$HUcrW+PS6~>>@To1HG_ihK!TeU{Fa_u9SZ~`7dpB zp{%}U5d+|ND&+OOj7= zjp>~H)3wvilP%g~H{r?}x|D0f6UzS5p{iz(hHw@7jhJPfs22?aE;35XdFN8%g%39$K5+C{_IP}`ZB6i*{!DPI%coV2 z>}ktsDV^Ffs_9?Pug*Mg6T&FAyKrJ*q8k{yivZy|Ih44hdGH-TJl~AP`2_RzmygZr zya7xbI>%&;WP@;lC{4}f;gQ~wkS8sk_<7q%tlIFWlaz7Z--SWiQz5leZ?5I4qN?!8 z&OBU9-rLaVZ%%;AafxbS(FbP(NAXm}APOa-A}vPpEJ%o8 z>@E(qtvB|QzfL#?mX0Z;5~f_H{X*(YA_*zRA%5kqr2&?k7u`5V1f@cr9mxZ1M}4Tq zF2ym)lUi4xTLGc%(4~~~_8%qiEoy=KVVcX+r9jmezO3dYl{x@ZKwbify|Pi7@ETsT z4?ZyT$7az4!U@ll1LaC~5$3sRqwg=3)GWER%XX$`0GrnpfUC397Xsdyn9f~9u2i{< zl~^g{xZ$&*ZuyvpC#)1AGR*6cpAGf_75>+Vjw4?IXGd}|&kIT-oQ`iZ9`D7}uZQ+y zMuy1w7(BaA>kZHNe<_Pm3sQn;xocZe5Zl~& zudaVPxbpQ%CnHAK4)#FIa%r+l7oDnurPOV(s#AjiJ1LW3)gu8k2b3? znJ{{6|0EVSB|h0ByiTo1x!5`)-JAs1ZE7G|6exd~(LeKQ}^`WT1{y;yCLZG;>slI%}+ z&NllaTioKUvn;A3VNr5;L#r8w5ku#12n1!R{SxD}-~G!Gk@J?T<| z@gU^gAtT@3FwMjDU73<}6qYEFuv`a^Eb6i>CU=rX<>O?k=!x~NNN)M*AkUEV1bjTw z)oiu_=Lp8!XEznJ!^d*vQaOV3ibt8-K<5DJ!wUzMYX(w8=ec8{jAY$Sv_;cP+ZHjc zX1Xz|+e(4unZ(cy$=7?woKZ^H7+yE}sX9LnP7d6*&ho)Z&_dsxzQvpwrB?E=I-ZPdx zW49IgHo(`i@T+>MmP+bbkCCB>4I|MCK8oyBAvJm`9O6AsvN`RQ*?1Eg<(xh`8^i^w zijg{d$t>gP9Qeg|xxgsByy)xoYlQG0rVHMMH&i%#;<+nHi&p@2JCeJXH=M!qqD)PU z=XD)uso}vJ{55M0-Z?jYVtMo)y{_(eAEuALdd^l7KRk9wNWP=XBK1&~R*(=yjRK+S zxi7Z-310J~JQM-=2`{9!woqA%0yJ7VAYD^a_Kn6`6p4praxh~q(vJm+12<7?j$L#G zdy=|@n~N&9!!XI4ZW7XB;Ijq{jj0Tqa~`c$mmV~`mQqZXwu8yC2fWESTP+po_f2Y< zmMra1lD}lJd4ekf%sK3(f}9qt@6)RhJ`3VFdL6Cf|EL)#1@M7YwcG5;RP>OQ2<8`1m}j5Q6GEmQz}<8=Sp2>yhXXoJNMRHI z!d(a#+{pNko`=(D%PfE)O+QryECl(J9*O7iKlq>gPyQ$YnMd5gCaR5+XFBj**z2zI zjvS)~7ILe4LTM%5|K(oS+3&k=dLdu9x?BEVIE25J>|61rtTLF;{tK!G#3WbGDlzdY z6Jb!dS1g1+EtTZLW}axhLE@XX^Wn>nu-L%uj?jAEEArq;1=Js(#yb#8=dD{cdU z%2`DYSl%Q>9DLkhDjslT%$X)HhHbvsz`YsE;JNQr|Hb=)+5veSMC zjqNN~q`Y5*dAOX7u*Gmi`z#VOMG85J?r)o5(Q*L#+QmM)bf6dq`?5iqaLC_Vjjogj z&0RIO1p&}wuYnelk(5P>;(4+g4=>q8K5b%pcXVQ5T;aOO!Xr2uc^pw$Z8G-@pJ?J_^5jcHnQ2QrW-xu_jVI@!7mBnuV(Yz>X z4CSd&sZr*!(fuqvQ0qxa50|W}9h#|;n}<`bt6M%EKnol!!5>Rz^PL+cK(D-s|Rl*E6d)u%z)rQ4csiE6Zf)6|KPMKEw6fn8rT) zD4+t0ZqRSTEh?jfcDV^U<*H_hHdpGZXZf;J5VfXO2MIHj|w}D zYQSfEA$7k7Bll57X{wNvm~iX&>y}n^qg&ek`uVLPWH0tao~ny9U5Luuj-N{Lk%-+= z2K$N#M&w^b_tARdko#16aQ5KGM1hL=H)jatGp1D?J&RD6r*YZ-X9($WKPV50fJG5< zh(AV?zeP7JOZTzlZ)I%O9C`b(7~h@vY(S?D-$Jl_8-fcyuT z*`$K$?k?kg=AIPd)QGA8QeNrk`(g6COVTfA`Ev|sdAIzjNMj2LylJo}Ww0qZxw(kA zlYc~rf$#jbpx7O=VJEy;PjDx`l+wMb`}HbabB^>Nd5~-z?VnJ#qy(v0j0cpzNLs~J zwvNnDZ&0y<$FlwpT`XUAdT#uTws#XAePBdG(LLuzEdbadP9>!?rPZnbQ?X=0Xom16 z(Tz|Wlsb2D5FdUe1%bd9puiH;)4ofUYVT466db29IUnhcca+ExLpKc24Y6>cGOgeT z-D=olB~7X8O&BV0nDv^=mBQ=0Nm0+H%S&@E>u%vQwOC zDy^i$3eW6%LY__*c18K0C?@2>zwOS8swUgQi?f^%&i4;t2rgUG$F9-{`y1$(DnxCK zd{;b12&x_|Lu>?C!%e!1!i zG8H|-&WFD6#hUWV`I>OuQ#F-YJGF_KN%>9Yj~>AAX094P?W^IUeSD5<#D=NJp13)J z06;2mHwEzGu@mo`GuzsC=#qWM%tZ?i8{2^jQeyugFXLZp`P?Yid*4)rN5_Y=FSqe@ z*YP{MT&Y2R#5|-D=$O_N{IJj88ppewb9HGaqet;%$)*H&zNB-4Xtt`XR~(B(g^S`^ z!C7oE{Wn{OG`Gwy6&o;RoO4=U=E+<>EPfPN8Pp#7{T?}(uo2OLt;z8rZPE7I({;N+U`J?cCkOR12aRF ze1^WOX8b;2D*mYrGk7B3s1ar^POI$Ge}%(SB4PuAn}1h>C@+Y#?cbn;!^Hl4ZF3@2 zRDM=xyse_}!hB;qmlQ>GkwIhx)OMKA_o09MXue_mHO4u+&k;`Ljd%i27~f60&Yjtb zv`uHYn#Jl!g`iE#|He`b$NzFU6|>r~j=`IF5su=J8GTxSAfVUVJOkA@X*ro;l$8D~ z#FHtt@*WXUhOFITDw?V7juzy|Xcj9**sRCxb7C8Uq(hRZ9kx5?_Dai2E-a}mcQ=#( zfjDxR?19tM1sE{uL)32LoIYHdK#c5wTjLlM%gR6+-G=6F>k_%dI~_cRvJb_sF|`~y z#!7zg=Uf3k=dlZp!$^xa9c*tAx&o~77aMLF1%{t*Y3-AA8`k70zdpC7iK#ks> z% z!Gy#n)_T4%N3fnG$n?$D2%NV40Twu8AogLLQh2*Oza323iYH~#X!8d@>tt2azTG`c z=?6KF82MHBsVV?no|>vu82KQBu}7lkBt~zk+`+4N@~rB4|Vmosk+18c|^WtxG79WOUoW+gwldT1w7h#t8}UPz-mLljQA7) z6**!5aMsRX?-@+ff+jv$e_++c(URQgvi!a61hK^VK!O8G-!U{(3LI;F7MfCMI;&8O zDYuqH07kS=(YZ_UJJpq5pH>{qu-*P`J%@S(y+~drgZ|Vs6Th$X+~Ilk$hg|!GE9I#5x|EJ1|tj=iyMb6FLW*bZ{>Y0COS+{}`L(M_|x#_wW3-=wkB< z#!a8TZZR486xcX%>?aFmn)b+F2oW2o9?=3E)*};w#(hJWiA@gv@~&&?h4fL{Tg7Yy zuj`4PKIeUtE)6w|)dXk2&6g>;6MNwHy&T4PXa*$mM@l{*I??#2WquE064duS)l{+% z?Y~u0CKsVT%&uB8^y2!3vKvOWc%SAl2UAxoi&ss6^{K3XI|_$MAQS0H`yx;l2jf-- z4FS`NUzJTrg;;H*2_EfJ6t<=$*Y?gw_V}K376OPZbS5Di-2H8vMFd|BIPd9hv+`#C z^mmraBH;JR-YD#aUhIh_uHgcM7#$CJ7qE-JcF@ef`w;PMI;b-8Ac+GVvT5H+jw;f% z;1-UejnnD-a318fP`-%$R=V4}kvY;b#P7}7PA&FX_GRfvA2go8#AYj*HVVR0z0$Yo zI?n3c{^_aXp;cOSS7AT0--Em_;Mu)$Wo!1J+gY=|(9)t}wpdT`&qVylLK4OVqgo$_ z8ln*MeS6jKZ?*TxO~G<;rE@=z$rbLQa{{^Ftfz#8Gq<{9@mRUp&TMJyL>b4eeiLt} z(_@{RsIAt%ePh*;~V5pl-fug({!j5zw?)oUg{ZcX# zEiagh{M9eQ?suPTA!b7c%yU^bm0xU(&tPDPlK)reL$Kdm3Xp4B`hqIwv?TvxPo=35 zt_(9D5)0?Me_T{rsSQoQQo8_CV+dx#cf@HY< zzTOovP(^7LWBCh7oGnQjx^mAc*42w{5(ym(N|t9E^w{VL@E8*W`yh>yEykO8)7P`i zdU_53!hIC(G^Ha%4izE2@!`1oLo;Ttl|C9n?aT&|xJ+uXAf58n|rZTInJ2IF#!Gn+*1U% zYO(&q%KuBbpw8#NI6d=G#C}f^Jwel5%TanS>M~uGS@=^XU?%0(dkm&L`B;tI0T9h*wO1a=g3)U*X#J$7PbP3qsl7a5V6~TTc&p>(W(Y*F$@PT z2Pm2fR-Nd{QwL&m#t0I$7n*>9f#b8N%%h4H$t>D^6e^_c`X(@3t$5AdzntCz0*S)| zh~IhrD;Yb9r-r_Hu%9=cf@IWwUXj;|6~IhRmGZXe!M%P9YB`mriL4BcrZ3MUuoG%w=o`dXq`>M*Bux zb)sT$rBs{O@~`UXhJj79_ZC3ki>snB|3>d|3~D#f&NrVgs=ot=fOCr0{2Z_6`=2FA zn^b@@`UqEYXQ&0N;ET?=Z#$w>2iqG|uzC}auw3I5c|WT2WGJPslfXPi!N9nIDfs!3 zpZ|kfp$x>?(gly63WQJD!h1NT^BLMe6+^aj%9E=_Vs?toH4musT}`I_6^K>xqM7GQf%CWEB#CmM)3tG2%p6cmc#d*14x+>=^)r67FFKH8Un6 zDv$iZ+K)Qdpk7!R>R$96K8_o3&!hQ#M!kLEZJz*NX$B0=aKKfvFj%3FFZfdq5W4`t z;8UAVX3keaMbeDVUkwTomu<8I{~Ne=D&+Nlg52#s;53YY&b;rAb))7QJ}(@vZh{Q8Fqn1(AQIFabp#v$SibTA-MdJr}YPL zkdL!)EYCG2H%%as0d9VHXTE1C0vxY z`X$>G`%XfgZ>dU$0!wv1sC!dS+^XqtO~NEXW%a9t)VZ|!r)n2b#|f*;SdEfPTKB|S zI!c?-UGHz)rG}-3m00C3l2@8UH^z+Z=d}cUUwY^56z5B#sm)s$0fgKtu~~*Bg}|%3 zBp2YEfv|YT!ooYC7VCB8Xn{RMOz{U$&SlMNW%CTEf!YE+Ry)gmHNt{+S$<8g5tT(d z>O9}3R+CZ79ed_P5z#j`oh9)cmOwPJjZks~onlhU-Hr3NJ{Svl6+qV*Gc!wDgjXtQ zG3Amw_bd0sy|=lR5Ai~$)axjj5}PV24R0n3KW&UPG3ec2h7pE=Z2|(R#>xpY-?u{8 zZai~WJtk6|Kp_R-DNcDIR#DI|QgsNKHccshg&y$Bb3iNmZVsp4y-_LTrlOBjlAg;B zroz^soEXJ5pH&@d<#NQ52_e9W2*j;_nyo0_gIx?yawUK2D=Lu?9MRbeY$oyMhk^s> z?W?a;ECxt)@TP2(nSoO^|MA+;$O7{Szd{OoYhKlj(A<608=h-1~0u5ESbAS&foC>&4Aw0=64EKl@% zufHf+DF)|Vp`Ok)nJ#DeGUXON=-I1IXM)GC{trH6q9{Wmi67)k7>xNj@f0noPhII7 zf+X=&)f7I=5XWBUFifQi`pmV#cBPZIc;;2Ztz9lq@551`-osKJ8xowSXTWDjjR~_h z6Mj|m;y=mk`&w9!amEl=#1;P<(l`MamXyRKjicfzUlpYUYM64;7kqxJ$ZOUgIY9Yy zB5Mgo)Y4mo3@!V&7aLLWuzKHTNil+lc@oh;?fo<#zKY*^?HAXihp&H4h%oP+M^cxFKdhw)j#o;Hi6q{7%F_G*f9f7R%`_dnA%j}O(c%0H=o+HHekw&@IT zCzqjHjp1KpkpSkm+Jn|5UEG5M>SwuGfx3Axk4;YEL$#p-P^vA~Y}4}a z(0Os@prTYPhXS!g=`y}kQ?@7A)^|vecqh0yNhgoXBb!MhI(AjUn=r-w@Gp;=%_Y3A z$E^{p-EFUla9fOfCF_jPo4o~o$MD32uE|G*UhB{M%y@`wr%iK%)`Y+L%S-DXT0?=5 z628o)Uwn?cCI+|O>TGtD%oiL@_wA1iosgMvbGJDG40fR#U_CCP_2yuBD{uF;xn7wQq&3aHL<+YOCUWVPT#u8}6QvU9JkYcktXc?XS zr8Hy?Dpr$H6K+;biKnunVZ7pKS5ggr``konCpXQ&dorJZ3|wpEHMC)dDyvM2A|<6Y zkosphOSTD@jp3^8ykFbs^@*H1Vo8o8Mo$q$fk$iv`zi=dq2-$p%9`iBZ7Gwh9^qL@v$NAl^=p7SGc}p_DCa6jD#eA) zc9HLHWR`%rr17Q6mL7a|r4LvJ;q1g*uV_D)bw4ZcTe+Z8#LWrk)wOh3k*ReS1cc9y zVieY~x7h2R1M=k#%E?P7mPs*vka;t9UrluLVFx3)m(p49J;N}5^fnO6J!~*0qmR7> zgMqI;f5$;T>0Q#CcU-vd6v2lM_hohe)kXi2*w8V-0)>P9GHn z5g}_2jVT^)+WQ{Gme(c>dlbB!M!^4mBD6ATzPm9l;5c8vZ z=VK@49>vv{qWA#n0+O+++9_@Yq<`>?VB(`f-zMWwfMpRgE$&ZNCgy;&^W4IebBT5D z3#a}%W=$MDXg!P0v@`Ipu_FJJ*h9Re|C!?}zE7dz)2_VTk9c9+VNymNHW6|6VKy#Z z{_4J?{=z#-WL3aF4V{tn<{d|A^J=yj@h~xU@^6dCS+4NbgB1a6=_F4m(b0n2k}T`# zm*c}t8b52Oa|T^)+h3W9%M_J~JU2nkB5~LMoyot(Kid?}f^Cn6Bp zg4zD|{udBKs~2L*(0`Km>DHu!>c)cfxl>t@I@ot+_s?k#rWEK7d*^H(6NJ+9%3Xeb z&JoOeI);ocvGVDE$N%4fjGo~8Lyi#{@;NGx3hD>{18-OEi9xUyFh<|oWs?{aIPpH zl8Q_4MfCkAL1dJ9SI%&VlEufrI@qt%sn+{r$Ds&RSY52h4y6aJ)~pTQA`n|8o574HRR^~ zLo#ens$4w8(^rOT#_)clR3!EzMN8hw26jbL|QeJU7)G|)#g$iatBi`FQ zW1VoG&e~J3x{eR(g#$q?!SKFq_UuG&jX9ZLM?3UsWJxX<3_3Hr!4eQoHYOc`v7Q+k z!15VOTCGt<&2&IA+nb0cCk08%G=_G%2cQ3xadyMXbFIGhgPc_bP+nf@E1tM@o1(2+ zKww-oHpihy(z57F>nkcZ4Xxs6joTws66Ykaf7jkVB_eUdAkhbtgm(k(RAWatFpW(_ zm?T8&Vvdb%i4ncHU4G6KSsGfOdINr&6>kq3JZHJ_a3XfOq|Cl3Y8BEk%LqbZfd_ZY zCt}jL5jC5zfpxK|H^mHfG+WFrv=cYbh@LWQ zK zTbl^8&zczZZ;d&z2>YoUkG(rDB@%eN13PFOVT7}=-Q~OR2$G((jIzBlFK5!=z6<`{ zUAGB#yIggHu5&G2v&ABSlG(&jp>L&^e4=^!QRf>yZd@?}wfZ#Jk4S3NfqM85*0&p1 ziyJ@4xW;3a@b76CH?@WaW3&SXx}7+K(gC+t5LzLa>~PE`{2gB#V>h@Yf{Dz|?&C{Y z8Du!fQ?*ZHxENQ@6w#DBHwp=5-hQNm`YIHot0Vua%iMq9eUVCDgJ8)RUG48Pz<$(4 zdm!ZW-G5p>KqC8p*!X930sY%+BVsk_0YORB8nH_G##n8F`{^y2t`=mtn)(u?)t zMXq^q>0hWFWGPLo(QHI&6Kby70+?GT*QUCZarhEp3_;@~a4`#@O06{*vL-7S#1WJ3 zTv)AQ&_(RUciZrxX*_EF?GN_yU@$0fEV&Md##ahdDUBX+YH;rSXY7yPIQpyG44Wl? zUL zZ3c3$?zd~i?U=M)R6VYIqF7sd?)7{?*TAbw>3Dp&YGbdVL-C}ts7-WM(m z_b0e#=8it200t(J>z@amdenlt6;@49@CeSo&0ZS%=psFGouUZGn!h&5vQ>YY`{c}+ zKYee0%YS8=n_tA+&!DGzfg>R6wHP4cGTwyHkS`-2<=Z*8h>;_;bg*f*Z_5v^ubG>x zY-q2D^}Rux?@LbW6M)XAk&5NL9o!;9l>a#xs1~@KXx#+fC@RA7dwl_|nQ~xqu%u{0 z7Ok~00=iI^58qjl#EcZ|l_w&_MbSu;)0JpiC)W}5IJ+&kEg6f&hU$q3WBehhEDD_U=By66AnGk7eE+k6h7+(1*ft#{P zLLFOmAoqK#asx$MOSCz@w$DBF;yDO9|0K(iT}Ml#Haaa`#e1&1w9$&7{<&bgNigCj ziq{D^3$EeewHDhF)3(D2Bl2~R=$g3xLVByhDIOM%=arPANj|;qMN8!3H`rT|8z|W2 zp9%mBEi?=u;VB+7x^=K^7?8AI3I19^NPs2rNT&PSd(y>ZE#>ZnP~xzntCp;cqj5g{ sBq=q_FojSgWgL8RFL-Ovw7NG0jCUNmR9g8IKX!2dt}FHq@?PXGV_ literal 0 HcmV?d00001 From 6179a7715490614fcf6d0dec57be6cca45b19bcd Mon Sep 17 00:00:00 2001 From: Script Raccoon Date: Wed, 5 Aug 2026 16:22:31 +0200 Subject: [PATCH 6/6] small improvements for morphism properties - notation for morphisms is $m$ - notation for epimorphisms is $p$ - add more related properties - fix some grammar - add small remarks in the definitions --- database/data/categories/walking_splitting.yaml | 2 +- .../morphism-implications/mono-epi-iso.yaml | 17 ++++++++++------- .../effective epimorphism.yaml | 2 +- .../data/morphism-properties/epimorphism.yaml | 2 +- .../extremal epimorphism.yaml | 5 +++-- .../extremal monomorphism.yaml | 3 ++- .../data/morphism-properties/isomorphism.yaml | 2 ++ .../data/morphism-properties/monomorphism.yaml | 2 +- .../morphism-properties/normal epimorphism.yaml | 2 +- .../normal monomorphism.yaml | 2 +- .../regular epimorphism.yaml | 3 ++- .../regular monomorphism.yaml | 3 ++- .../morphism-properties/split epimorphism.yaml | 3 ++- .../morphism-properties/split monomorphism.yaml | 3 ++- .../morphism-properties/strict epimorphism.yaml | 2 +- .../strict monomorphism.yaml | 2 +- .../morphism-properties/strong epimorphism.yaml | 6 ++++-- .../strong monomorphism.yaml | 4 +++- 18 files changed, 40 insertions(+), 25 deletions(-) diff --git a/database/data/categories/walking_splitting.yaml b/database/data/categories/walking_splitting.yaml index 0be80008..5b26c59e 100644 --- a/database/data/categories/walking_splitting.yaml +++ b/database/data/categories/walking_splitting.yaml @@ -69,4 +69,4 @@ special_morphisms: proof: The morphism $i$ is even a split monomorphism. The morphism $p$ is not a monomorphism since $p \circ \id_1 = p \circ ip$. The morphism $ip$ is not a monomorphism since it would imply that $p$ is a monomorphism. epimorphisms: description: the identities and $p$ - proof: The morphism $p$ is even a split monomorphism. The morphism $i$ is not an epimorphism since $\id_1 \circ i = ip \circ i$. The morphism $ip$ is not a epimorphism since it would imply that $i$ is an epimorphism. + proof: The morphism $p$ is even a split monomorphism. The morphism $i$ is not an epimorphism since $\id_1 \circ i = ip \circ i$. The morphism $ip$ is not an epimorphism since it would imply that $i$ is an epimorphism. diff --git a/database/data/morphism-implications/mono-epi-iso.yaml b/database/data/morphism-implications/mono-epi-iso.yaml index bd5f893c..659e1515 100644 --- a/database/data/morphism-implications/mono-epi-iso.yaml +++ b/database/data/morphism-implications/mono-epi-iso.yaml @@ -12,7 +12,7 @@ - split monomorphism conclusions: - regular monomorphism - proof: 'Let $f : A \to B$ be a split monomorphism, and choose a morphism $g : B \to A$ with $g \circ f = \id_A$. Then it is easy to check that $f$ is an equalizer of $\id_B, f \circ g : B \rightrightarrows B$.' + proof: 'Let $m : A \to B$ be a split monomorphism, and choose a morphism $e : B \to A$ with $e \circ m = \id_A$. Then it is easy to check that $m$ is an equalizer of $\id_B$ and the idempotent morphism $m \circ e : B \to B$.' is_equivalence: false - id: split_mono_epi_is_iso @@ -23,7 +23,7 @@ - epimorphism conclusions: - isomorphism - proof: 'Assume that $f : A \to B$ is a split monomorphism, and choose a morphism $g : B \to A$ with $g \circ f = \id_A$. Then $f \circ g \circ f = f = \id_B \circ f$. Thus, if $f$ is also an epimorphism, we conclude $f \circ g = \id_B$, showing that $f$ is an isomorphism with inverse $g$.' + proof: 'Assume that $m : A \to B$ is a split monomorphism, and choose a morphism $e : B \to A$ with $e \circ m = \id_A$. Then $m \circ e \circ m = m = {\id_B} \circ m$. Thus, if $m$ is also an epimorphism, we conclude $m \circ e = \id_B$, showing that $m$ is an isomorphism with inverse $e$.' is_equivalence: false - id: mono_is_iso @@ -81,7 +81,7 @@ - regular monomorphism conclusions: - strict monomorphism - proof: 'Let $m : A \to B$ be the equalizer of $g,h : B \rightrightarrows C$. In particular, $m$ is a monomorphism. Let $t : T \to B$ be a monomorphism which equalizes all pairs that are equalized by $m$. In particular, $t$ equalizes $g,h$, i.e. $g \circ t = h \circ t$. By definition of an equalizer, this means that $t$ factors through $m$.' + proof: 'Let $m : A \to B$ be the equalizer of $f,g : B \rightrightarrows C$. In particular, $m$ is a monomorphism. Let $t : T \to B$ be a morphism that equalizes all pairs that are equalized by $m$. In particular, $t$ equalizes $f,g$, i.e. $f \circ t = g \circ t$. By definition of an equalizer, this means that $t$ factors through $m$.' is_equivalence: false - id: effective_mono_implies_regular_mono @@ -102,9 +102,9 @@ - effective monomorphism proof: >- Let $m : A \to B$ be a strict monomorphism in a category with pushouts. In particular, the pushout $B \sqcup_A B$ exists (and actually, we only need this pushout) with coprojections $i_1,i_2 : B \rightrightarrows B \sqcup_A B$ satisfying $i_1 \circ m = i_2 \circ m$. - To show that $m$ is the equalizer of $i_1,i_2$, let $t : T \to B$ be a morphism with $i_1 \circ t = i_2 \circ t$. If $g,h : B \rightrightarrows C$ is any parallel pair with $g \circ m = h \circ m$, it induces a morphism $(g;h) : B \sqcup_A B \to C$ with $(g;h) \circ i_1 = g$ and $(g;h) \circ i_2 = h$. + To show that $m$ is the equalizer of $i_1,i_2$, let $t : T \to B$ be a morphism with $i_1 \circ t = i_2 \circ t$. If $f,g : B \rightrightarrows C$ is any parallel pair with $f \circ m = g \circ m$, it induces a morphism $(f;g) : B \sqcup_A B \to C$ with $(f;g) \circ i_1 = f$ and $(f;g) \circ i_2 = g$. By composing these equations with $t$, we get - $$g \circ t = (g;h) \circ i_1 \circ t = (g;h) \circ i_2 \circ t = h \circ t.$$ + $$f \circ t = (f;g) \circ i_1 \circ t = (f;g) \circ i_2 \circ t = g \circ t.$$ Thus, $t$ equalizes every parallel pair that is equalized by $m$. Since $m$ is a strict monomorphism, $t$ factors through $m$. is_equivalence: false @@ -135,7 +135,7 @@ - preadditive conclusions: - normal monomorphism - proof: 'The equalizer of $g,h : B \rightrightarrows C$ is the kernel of $g-h : B \to C$.' + proof: 'The equalizer of $f,g : B \rightrightarrows C$ is the kernel of $f-g : B \to C$.' is_equivalence: false - id: strong_mono_is_mono @@ -193,7 +193,10 @@ - coregular conclusions: - regular monomorphism - proof: 'Let $m : A \to B$ be an extremal monomorphism in a coregular category. By coregularity, we may factor it as $m = i \circ e$, where $i : C \to B$ is a regular monomorphism and $e : A \to C$ is an epimorphism. Since $m$ is an extremal monomorphism, $e$ is an isomorphism. Therefore, $m \cong i$ is a regular monomorphism.' + proof: >- + Let $m : A \to B$ be an extremal monomorphism in a coregular category. By coregularity, we may factor it as $m = i \circ e$, where $i : C \to B$ is a regular monomorphism and $e : A \to C$ is an epimorphism. Since $m$ is an extremal monomorphism, $e$ is an isomorphism. Therefore, $m \cong i$ is a regular monomorphism. + + The proof shows that the assumption of coregularity can be relaxed to the existence of (Epi, RegMono)-factorizations. is_equivalence: false - id: extremal_mono_strong_criterion diff --git a/database/data/morphism-properties/effective epimorphism.yaml b/database/data/morphism-properties/effective epimorphism.yaml index 13b0e611..8a9095c0 100644 --- a/database/data/morphism-properties/effective epimorphism.yaml +++ b/database/data/morphism-properties/effective epimorphism.yaml @@ -1,7 +1,7 @@ id: effective epimorphism relation: is an description: >- - A morphism $p : A \to B$ is an effective epimorphism if the pullback $A \times_B A$ exists and $p$ is the coequalizer of the two projections $p_1,p_2 : A \times_B A \rightrightarrows A$. + A morphism $e : A \to B$ is an effective epimorphism if the pullback $A \times_B A$ exists and $e$ is the coequalizer of the two projections $p_1,p_2 : A \times_B A \rightrightarrows A$. By the implications below, effective epimorphisms are closely related to strict and regular epimorphisms. Every effective epimorphism is regular and hence strict, and in a category with pullbacks, every strict epimorphism is effective. Thus, in categories with pullbacks, all three mentioned classes of epimorphisms coincide. See also this overview. nlab_link: https://ncatlab.org/nlab/show/effective+epimorphism diff --git a/database/data/morphism-properties/epimorphism.yaml b/database/data/morphism-properties/epimorphism.yaml index a03edcc3..e9fb934b 100644 --- a/database/data/morphism-properties/epimorphism.yaml +++ b/database/data/morphism-properties/epimorphism.yaml @@ -1,6 +1,6 @@ id: epimorphism relation: is an -description: 'A morphism $f : A \to B$ is an epimorphism if it is right-cancellative, i.e. if $g \circ f = h \circ f$ for two morphisms $g,h : B \rightrightarrows T$, then $g = h$. In many concrete categories appearing in practice, these are are a bit harder to understand than monomorphisms; in particular, epimorphisms usually are not to be confused with surjective structure-preserving maps.' +description: 'A morphism $e : A \to B$ is an epimorphism if it is right-cancellative, i.e. if $f \circ e = g \circ e$ for two morphisms $f,g : B \rightrightarrows T$, then $f = g$. In many concrete categories appearing in practice, these are are a bit harder to understand than monomorphisms; in particular, epimorphisms usually are not to be confused with surjective structure-preserving maps. Stronger types of epimorphisms (such as regular epimorphisms) are often much better understood.' nlab_link: https://ncatlab.org/nlab/show/epimorphism invariant_under_equivalences: true dual: monomorphism diff --git a/database/data/morphism-properties/extremal epimorphism.yaml b/database/data/morphism-properties/extremal epimorphism.yaml index 78dbb4e0..a49b054a 100644 --- a/database/data/morphism-properties/extremal epimorphism.yaml +++ b/database/data/morphism-properties/extremal epimorphism.yaml @@ -1,15 +1,16 @@ id: extremal epimorphism relation: is an description: >- - A morphism $e : A \to B$ is an extremal epimorphism if it is a epimorphism and whenever $e = m \circ g$ is a factorization in which $m$ is a monomorphism, then $m$ is an isomorphism. The condition that $e$ is an epimorphism follows from the factorization property when the category has equalizers, but in general, we need to explicitly demand it. + A morphism $e : A \to B$ is an extremal epimorphism if it is an epimorphism and whenever $e = m \circ g$ is a factorization in which $m$ is a monomorphism, then $m$ is an isomorphism. The condition that $e$ is an epimorphism follows from the factorization property when the category has equalizers, but in general, we need to explicitly demand it. By the implications below, extremal epimorphisms are closely related to strong epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. See also this overview. nlab_link: https://ncatlab.org/nlab/show/extremal+epimorphism invariant_under_equivalences: true dual: extremal monomorphism related: - - strong epimorphism - epimorphism + - strong epimorphism + - regular epimorphism tags: - types of epimorphisms diff --git a/database/data/morphism-properties/extremal monomorphism.yaml b/database/data/morphism-properties/extremal monomorphism.yaml index 7e3a2893..027b7f1f 100644 --- a/database/data/morphism-properties/extremal monomorphism.yaml +++ b/database/data/morphism-properties/extremal monomorphism.yaml @@ -8,8 +8,9 @@ nlab_link: https://ncatlab.org/nlab/show/extremal+monomorphism invariant_under_equivalences: true dual: extremal epimorphism related: - - strong monomorphism - monomorphism + - strong monomorphism + - regular monomorphism tags: - types of monomorphisms diff --git a/database/data/morphism-properties/isomorphism.yaml b/database/data/morphism-properties/isomorphism.yaml index ec0bb647..58cad247 100644 --- a/database/data/morphism-properties/isomorphism.yaml +++ b/database/data/morphism-properties/isomorphism.yaml @@ -7,6 +7,8 @@ dual: isomorphism related: - monomorphism - epimorphism + - split monomorphism + - split epimorphism tags: - invertibility diff --git a/database/data/morphism-properties/monomorphism.yaml b/database/data/morphism-properties/monomorphism.yaml index d9340302..7eb1cd30 100644 --- a/database/data/morphism-properties/monomorphism.yaml +++ b/database/data/morphism-properties/monomorphism.yaml @@ -1,6 +1,6 @@ id: monomorphism relation: is a -description: 'A morphism $f : A \to B$ is a monomorphism if it is left-cancellative, i.e. if $f \circ g = f \circ h$ for two morphisms $g,h : T \rightrightarrows A$, then $g = h$. In many concrete categories appearing in practice, these are injective structure-preserving maps.' +description: 'A morphism $m : A \to B$ is a monomorphism if it is left-cancellative, i.e. if $m \circ f = m \circ g$ for two morphisms $f,g : T \rightrightarrows A$, then $f = g$. In many concrete categories appearing in practice, these are injective structure-preserving maps.' nlab_link: https://ncatlab.org/nlab/show/monomorphism invariant_under_equivalences: true dual: epimorphism diff --git a/database/data/morphism-properties/normal epimorphism.yaml b/database/data/morphism-properties/normal epimorphism.yaml index 4c012743..7af486b9 100644 --- a/database/data/morphism-properties/normal epimorphism.yaml +++ b/database/data/morphism-properties/normal epimorphism.yaml @@ -1,6 +1,6 @@ id: normal epimorphism relation: is a -description: 'A morphism $f : A \to B$ in a category with zero morphisms is a normal epimorphism if it is the cokernel of a morphism $g : C \to A$, i.e. the coequalizer of $g$ and the zero morphism $0 : C \to A$.' +description: 'A morphism $e : A \to B$ in a category with zero morphisms is a normal epimorphism if it is the cokernel of a morphism $f : C \to A$, i.e. the coequalizer of $f$ and the zero morphism $0_{C,A} : C \to A$.' nlab_link: https://ncatlab.org/nlab/show/normal+epimorphism invariant_under_equivalences: true dual: normal monomorphism diff --git a/database/data/morphism-properties/normal monomorphism.yaml b/database/data/morphism-properties/normal monomorphism.yaml index 77d421ff..ee55c46e 100644 --- a/database/data/morphism-properties/normal monomorphism.yaml +++ b/database/data/morphism-properties/normal monomorphism.yaml @@ -1,6 +1,6 @@ id: normal monomorphism relation: is a -description: 'A morphism $f : A \to B$ in a category with zero morphisms is a normal monomorphism if it is the kernel of a morphism $g : B \to C$, i.e. the equalizer of $g$ and the zero morphism $0 : B \to C$.' +description: 'A morphism $m : A \to B$ in a category with zero morphisms is a normal monomorphism if it is the kernel of a morphism $f : B \to C$, i.e. the equalizer of $f$ and the zero morphism $0_{B,C} : B \to C$.' nlab_link: https://ncatlab.org/nlab/show/normal+monomorphism invariant_under_equivalences: true dual: normal epimorphism diff --git a/database/data/morphism-properties/regular epimorphism.yaml b/database/data/morphism-properties/regular epimorphism.yaml index 46069ac4..8b133b85 100644 --- a/database/data/morphism-properties/regular epimorphism.yaml +++ b/database/data/morphism-properties/regular epimorphism.yaml @@ -1,6 +1,6 @@ id: regular epimorphism relation: is a -description: 'A morphism $f : A \to B$ is a regular epimorphism if it is the coequalizer of a pair of morphisms $g,h : C \rightrightarrows A$. In many categories appearing in practice, this is the same as a quotient.' +description: 'A morphism $e : A \to B$ is a regular epimorphism if it is the coequalizer of a pair of morphisms $f,g : C \rightrightarrows A$. In many categories appearing in practice, this is the same as a quotient. This property is strongly related to other types of epimorphisms by the implications below; see also this overview.' nlab_link: https://ncatlab.org/nlab/show/regular+epimorphism invariant_under_equivalences: true dual: regular monomorphism @@ -9,6 +9,7 @@ related: - effective epimorphism - strict epimorphism - normal epimorphism + - extremal epimorphism tags: - types of epimorphisms diff --git a/database/data/morphism-properties/regular monomorphism.yaml b/database/data/morphism-properties/regular monomorphism.yaml index 4d7834bc..9ec53f56 100644 --- a/database/data/morphism-properties/regular monomorphism.yaml +++ b/database/data/morphism-properties/regular monomorphism.yaml @@ -1,6 +1,6 @@ id: regular monomorphism relation: is a -description: 'A morphism $f : A \to B$ is a regular monomorphism if it is the equalizer of a pair of morphisms $g,h : B \rightrightarrows C$. In many categories appearing in practice, this is the same as an embedding.' +description: 'A morphism $m : A \to B$ is a regular monomorphism if it is the equalizer of a pair of morphisms $f,g : B \rightrightarrows C$. In many categories appearing in practice, this is the same as an embedding. This property is strongly related to other types of monomorphisms by the implications below; see also this overview.' nlab_link: https://ncatlab.org/nlab/show/regular+monomorphism invariant_under_equivalences: true dual: regular epimorphism @@ -9,6 +9,7 @@ related: - effective monomorphism - strict monomorphism - normal monomorphism + - extremal monomorphism tags: - types of monomorphisms diff --git a/database/data/morphism-properties/split epimorphism.yaml b/database/data/morphism-properties/split epimorphism.yaml index 8f25c30a..71867c70 100644 --- a/database/data/morphism-properties/split epimorphism.yaml +++ b/database/data/morphism-properties/split epimorphism.yaml @@ -1,11 +1,12 @@ id: split epimorphism relation: is a -description: 'A morphism $f : A \to B$ is a split epimorphism if there is a morphism $g : B \to A$ with $f \circ g = \id_B$.' +description: 'A morphism $e : A \to B$ is a split epimorphism if there is a morphism $m : B \to A$ with $e \circ m = \id_B$.' nlab_link: https://ncatlab.org/nlab/show/split+epimorphism invariant_under_equivalences: true dual: split monomorphism related: - epimorphism + - isomorphism tags: - types of epimorphisms diff --git a/database/data/morphism-properties/split monomorphism.yaml b/database/data/morphism-properties/split monomorphism.yaml index 5c63ebd9..914ef0ff 100644 --- a/database/data/morphism-properties/split monomorphism.yaml +++ b/database/data/morphism-properties/split monomorphism.yaml @@ -1,11 +1,12 @@ id: split monomorphism relation: is a -description: 'A morphism $f : A \to B$ is a split monomorphism if there is a morphism $g : B \to A$ with $g \circ f = \id_A$.' +description: 'A morphism $m : A \to B$ is a split monomorphism if there is a morphism $e : B \to A$ with $e \circ m = \id_A$.' nlab_link: https://ncatlab.org/nlab/show/split+monomorphism invariant_under_equivalences: true dual: split epimorphism related: - monomorphism + - isomorphism tags: - types of monomorphisms diff --git a/database/data/morphism-properties/strict epimorphism.yaml b/database/data/morphism-properties/strict epimorphism.yaml index e6262297..d8010a8b 100644 --- a/database/data/morphism-properties/strict epimorphism.yaml +++ b/database/data/morphism-properties/strict epimorphism.yaml @@ -1,7 +1,7 @@ id: strict epimorphism relation: is a description: >- - A morphism $p : A \to B$ is a strict epimorphism if it is the joint coequalizer of all pairs of morphisms $g,h : C \rightrightarrows A$ that it coequalizes. That is, $p$ is an epimorphism, and a morphism $t : A \to T$ factors through $p$ if we have $t \circ g = t \circ h$ for all morphisms $g,h : C \rightrightarrows A$ that satisfy $p \circ g = p \circ h$. That is, the minimal requirement for a morphism to factor through $p$ is actually sufficient. + A morphism $e : A \to B$ is a strict epimorphism if it is the joint coequalizer of all pairs of morphisms $f,g : C \rightrightarrows A$ that it coequalizes. That is, $e$ is an epimorphism, and a morphism $t : A \to T$ factors through $e$ if we have $t \circ f = t \circ g$ for all morphisms $f,g : C \rightrightarrows A$ that satisfy $e \circ f = e \circ g$. That is, the minimal requirement for a morphism to factor through $e$ is actually sufficient. By the implications below, strict epimorphisms are closely related to effective and regular epimorphisms. Every effective epimorphism is regular and hence strict, and in a category with pullbacks, every strict epimorphism is effective. Thus, in categories with pullbacks, all three mentioned classes of epimorphisms coincide. See also this overview. nlab_link: https://ncatlab.org/nlab/show/strict+epimorphism diff --git a/database/data/morphism-properties/strict monomorphism.yaml b/database/data/morphism-properties/strict monomorphism.yaml index fec5812f..7ed0f4ba 100644 --- a/database/data/morphism-properties/strict monomorphism.yaml +++ b/database/data/morphism-properties/strict monomorphism.yaml @@ -1,7 +1,7 @@ id: strict monomorphism relation: is a description: >- - A morphism $m : A \to B$ is a strict monomorphism if it is the joint equalizer of all pairs of morphisms $g,h : B \rightrightarrows C$ that it equalizes. That is, $m$ is a monomorphism, and a morphism $t : T \to B$ factors through $m$ if we have $g \circ t = h \circ t$ for all morphisms $g,h : B \rightrightarrows C$ that satisfy $g \circ m = h \circ m$. That is, the minimal requirement for a morphism to factor through $m$ is actually sufficient. + A morphism $m : A \to B$ is a strict monomorphism if it is the joint equalizer of all pairs of morphisms $f,g : B \rightrightarrows C$ that it equalizes. That is, $m$ is a monomorphism, and a morphism $t : T \to B$ factors through $m$ if we have $f \circ t = g \circ t$ for all morphisms $f,g : B \rightrightarrows C$ that satisfy $f \circ m = g \circ m$. That is, the minimal requirement for a morphism to factor through $m$ is actually sufficient. By the implications below, strict monomorphisms are closely related to effective and regular monomorphisms. Every effective monomorphism is regular and hence strict, and in a category with pushouts, every strict monomorphism is effective. Thus, in categories with pushouts, all three mentioned classes of monomorphisms coincide. See also this overview. nlab_link: https://ncatlab.org/nlab/show/strict+monomorphism diff --git a/database/data/morphism-properties/strong epimorphism.yaml b/database/data/morphism-properties/strong epimorphism.yaml index 9af2d3f0..b3b1cb43 100644 --- a/database/data/morphism-properties/strong epimorphism.yaml +++ b/database/data/morphism-properties/strong epimorphism.yaml @@ -1,10 +1,12 @@ id: strong epimorphism relation: is a description: >- - A morphism $e : A \to B$ is a strong epimorphism if it is a epimorphism that is left orthogonal to any monomorphism. That is, for every commutative diagram + A morphism $e : A \to B$ is a strong epimorphism if it is an epimorphism that is left orthogonal to any monomorphism. That is, for every commutative diagram $$\begin{CD} A @>e>> B \\ @VVV @VVV \\ C @>>m> D \end{CD}$$ - in which $m : C \to D$ is a monomorphism, there is a unique morphism $B \to C$ such that both triangles commute. Uniqueness is actually for free, and it suffices to demand commutativity of one triangle, as the other one follows. + in which $m : C \to D$ is a monomorphism, there is a unique morphism $B \to C$ such that both triangles commute. $$\begin{CD} A @>e>> B \\ @VVV \swarrow @VVV \\ C @>>m> D \end{CD}$$ + Uniqueness is actually for free, and it suffices to demand commutativity of one triangle, as the other one follows. + If the category has equalizers, the orthogonality condition already implies that $e$ is an epimorphism, but in general, we need to demand this. By the implications below, strong epimorphisms are closely related to extremal epimorphisms: every strong epimorphism is extremal, and the converse holds when pullbacks exist. See also this overview. diff --git a/database/data/morphism-properties/strong monomorphism.yaml b/database/data/morphism-properties/strong monomorphism.yaml index 1d42dc23..2b244eb4 100644 --- a/database/data/morphism-properties/strong monomorphism.yaml +++ b/database/data/morphism-properties/strong monomorphism.yaml @@ -3,8 +3,10 @@ relation: is a description: >- A morphism $m : A \to B$ is a strong monomorphism if it is a monomorphism that is right orthogonal to any epimorphism. That is, for every commutative diagram $$\begin{CD} C @>e>> D \\ @VVV @VVV \\ A @>>m> B \end{CD}$$ - in which $e : C \to D$ is an epimorphism, there is a unique morphism $D \to A$ such that both triangles commute. Uniqueness is actually for free, and it suffices to demand commutativity of one triangle, as the other one follows. + in which $e : C \to D$ is an epimorphism, there is a unique morphism $D \to A$ such that both triangles commute. $$\begin{CD} C @>e>> D \\ @VVV \swarrow @VVV \\ A @>>m> B \end{CD}$$ + Uniqueness is actually for free, and it suffices to demand commutativity of one triangle, as the other one follows. + If the category has coequalizers, the orthogonality condition already implies that $m$ is a monomorphism, but in general, we need to demand this. By the implications below, strong monomorphisms are closely related to extremal monomorphisms: every strong monomorphism is extremal, and the converse holds when pushouts exist. See also this overview.