IX; foreach ($messages as $id => $message) { unset($this->messages[$altDomain][$id]); $this->messages[$domain][$id] = $message; } if ([] === ($this->messages[$altDomain] ?? null)) { unset($this->messages[$altDomain]); } } public function addCatalogue(MessageCatalogueInterface $catalogue): void { if ($catalogue->getLocale() !== $this->locale) { throw new LogicException(\sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s".', $catalogue->getLocale(), $this->locale)); } foreach ($catalogue->all() as $domain => $messages) { if ($intlMessages = $catalogue->all($domain.self::INTL_DOMAIN_SUFFIX)) { $this->add($intlMessages, $domain.self::INTL_DOMAIN_SUFFIX); $messages = array_diff_key($messages, $intlMessages); } $this->add($messages, $domain); } foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } if ($catalogue instanceof MetadataAwareInterface) { $metadata = $catalogue->getMetadata('', ''); $this->addMetadata($metadata); } if ($catalogue instanceof CatalogueMetadataAwareInterface) { $catalogueMetadata = $catalogue->getCatalogueMetadata('', ''); $this->addCatalogueMetadata($catalogueMetadata); } } public function addFallbackCatalogue(MessageCatalogueInterface $catalogue): void { // detect circular references $c = $catalogue; while ($c = $c->getFallbackCatalogue()) { if ($c->getLocale() === $this->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } } $c = $this; do { if ($c->getLocale() === $catalogue->getLocale()) { throw new LogicException(\sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale())); } foreach ($catalogue->getResources() as $resource) { $c->addResource($resource); } } while ($c = $c->parent); $catalogue->parent = $this; $this->fallbackCatalogue = $catalogue; foreach ($catalogue->getResources() as $resource) { $this->addResource($resource); } } public function getFallbackCatalogue(): ?MessageCatalogueInterface { return $this->fallbackCatalogue; } public function getResources(): array { return array_values($this->resources); } public function addResource(ResourceInterface $resource): void { $this->resources[$resource->__toString()] = $resource; } public function getMetadata(string $key = '', string $domain = 'messages'): mixed { if ('' == $domain) { return $this->metadata; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX])) { if ('' === $key) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX]; } if (isset($this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key])) { return $this->metadata[$domain.self::INTL_DOMAIN_SUFFIX][$key]; } } if (isset($this->metadata[$domain])) { if ('' == $key) { return $this->metadata[$domain]; } if (isset($this->metadata[$domain][$key])) { return $this->metadata[$domain][$key]; } } return null; } public function setMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->metadata[$domain][$key] = $value; } public function deleteMetadata(string $key = '', string $domain = 'messages'): void { if ('' == $domain) { $this->metadata = []; } elseif ('' == $key) { unset($this->metadata[$domain]); } else { unset($this->metadata[$domain][$key]); } } public function getCatalogueMetadata(string $key = '', string $domain = 'messages'): mixed { if (!$domain) { return $this->catalogueMetadata; } if (isset($this->catalogueMetadata[$domain])) { if (!$key) { return $this->catalogueMetadata[$domain]; } if (isset($this->catalogueMetadata[$domain][$key])) { return $this->catalogueMetadata[$domain][$key]; } } return null; } public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages'): void { $this->catalogueMetadata[$domain][$key] = $value; } public function deleteCatalogueMetadata(string $key = '', string $domain = 'messages'): void { if (!$domain) { $this->catalogueMetadata = []; } elseif (!$key) { unset($this->catalogueMetadata[$domain]); } else { unset($this->catalogueMetadata[$domain][$key]); } } /** * Adds current values with the new values. * * @param array $values Values to add */ private function addMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setMetadata($key, $value, $domain); } } } private function addCatalogueMetadata(array $values): void { foreach ($values as $domain => $keys) { foreach ($keys as $key => $value) { $this->setCatalogueMetadata($key, $value, $domain); } } } } JFIF``;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 90 C     C   " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?SȠJZ)0(hSJZ(-ȥ-PIKI@ EPdQK@ KE'Q@ EPIKE&EPQ@Q@ KIPFE-Q@ih"Z(2)h ( ( ( ( ((((LZ("LZ(-PEPEPPIKE2E斊((NQ@!R‚#4148Sw䌁Wo\0&Zz[{?")Ԁ(((L Z(((KHzPKEQ@ FE-dR(dR@ FE-2KE2KER@ Eh-QEQE-PEQEQI@ EPH:R@!n(I"i\7 .q v[GSi`,ǜbz +J(;k驭xYgI ` 6c #߷Oj)s6W@gw+jA wNcm9>|X0IЌ lrݽï cHԞDUFzWV᣶ಆ/Qh:IUpqh/3$:\nJI+'^`x}k7^ӠK %hd?lS_68/kJ>a$Wn'be~9\5~VxBFA]\Em-n.C,C^e{HId=z~qeQ *,I GC5<QE!Q@Q@Q@!KHzPޖ(((KEi;`Qږ ( (tҊZLZ(((((((((((J!Lj݊d8_P~]Hv+d~K{B0{8a2 ~:wٮQԯFs<:.ǘ)92ru~ŋ!5NƯhYmfw]w_ uAqg5ˀd{_y|dMH+ħ)Q1L.-$۲Y9<>AN@YonYu(gbڰ9ǯWJr:Eu.cM(oxiYE˙$lw8)?U綸twՊPG0+> koKQ[ؼl[c\ڼwoszh1;VJWʎ&G_HqV;w#ү[g1f)A.uk婹א+Ü3/mů@-x_ta?:개_qs5Al'$忕O^QE((()JZ(-RQEh@ Eh((AҊJ(ht(0)h ( ( ( ( ( ( ( (7JyL#$Rb">|P+Q_B@X3' <r: W1\V OΤMzOyF!,0C< \l !2+^"v埊.גƑA?ɮJq+o[U 1Ӂ\Ҩ$S5%,[K_x?I$p(ތּcFoYPpGھ7$h5u[ŒÃYX JE_ 1S_~Pkx:+gcO>sj@=Ϛ+@bt[N0+F~űQzԕ (b ( ( ( CҖ(tր();PE'zZ( )(@(tPEPE-Q@Q@Q@Q@Q@Q@Q@Q@zSOJ}F[jG#`E|9Gؾ'nr~R ?|}%D]UUi"\n|'+:+,>&F~Y!;A98|yF;UxQdL'sy?Z__.VfB##NkʎOA×OcuH 㑮,B=Ox_9t_IpǷqX7Zg#[fMv~˖i,+0tu~W")bFh_yiUszls~&V }+-"iPiz"/%G=0Fc^xYo;~eī$eVVϷzKu!+sgA7O #V ͡4OWsO :T?.SHȼCrbA|d<L2ZA%FSB1vaϜα0/'SSTQ-u>QEQEQEQE-!@zZN- K@Q@'jZ(J;wL Z( (t1E-!K@ E-QEQEQEQEQEQEQEQES@sN &2 dds_Vo;w5ZjAI޿DeRk+e <#m 1 _wV5/m hTW?'|#1]xIn&i6xV+2A'8Y\Wk{|7l%WHҼmʁ~mV z-]KGj #EFg-'޺ߎ5kDAB1 /A֣ VoСR.~躾[}{n-ٌ:D%WQi֧jH̱7p0~m//g{|3P*gcaG^=+/xLLj,!X-ogHaS#zYdOx Ş"[ki,aH=>7MFgo Jm+EG5u }sxf@A㢽*g'x>%G_Ï ^g` Jȶ|'l=D՟Nv ?i,͚?,3-%&Us//o:+Ppq]/ŰCl- ngPs'>5K8P.2Z; /^6ʀJ8Gf{ B8db:}lrQxsdʜW)DwCp|?М_W?v ~s_ѯ§xt>Em \4:$Ԕ$vVQEQEQEQE-!@zENte>( :CҎPQ@S(QLP:Q@@KEQEQEQEQEQEQEQEQEQEQE=EOP#vx,}ʽ]YZOoz1l/v<'kaomg\Bsz')ls],^lp.Tq^~yrNOlo,s>"x'g$ 2pkwa7_y\I72g4~~{B?tc, {A@1Lo'tצ0 "qGj[A~^?V>'4?ְ._ 8 @bFzzWO6K+ۏ_q g·}SL֟MSNAEP0(((=)iJ;E KE}2@7i{w(((J((t ( ( ( ( ( ( ( ( ( ( ( f7'Ӵ5 B F +t~Hk;toqԎ%_C:+9'M#O=?wGsAgPd_kϙ3@ һ*h_?_j'<w//,jۼtOW33_n|@R&5 G#N>Sw5t}8o6s?-DGׯ?l(~Ox6V'qC gש~Ğ#t 6R.ñ#לu+K g ٴ$xTpZC+ 7"\FOˍr1 b?aٟX)l|'/ F1O)kbQE ((()JZCҀ}-P)})hJZ((S)(J(((;EQEQEQEQEQEQEQEQEQE斚4 _?lKsƳ ' _`sA7k=3N?cPrOƻ+|RF&8;IE/=) 9%#?>Q{-LW?/}Zy\ `' d3pT>!p#RSUp^[ĩk&X:z58x:ߴ/642<~LڳU⍓Y v"pZ=h@ūڀקW/Q{٧E39॑~5oRiJ\JOVq}rM-5zujf(aEPEPEPHzRw()hCҖ NԴ=(AGzZ(N (tҊJZCҖ ( ( ( ( ( ( ( ( ( ( AҖL\#qjbe`; !_߷L&Um]|wĒa7v6 ^?P% c n\ךv"+gV6Hj'=O3yAwݿ~|]mߌ0=zųK[- |AE=n@WO`>??i.6/9ƽkߌT2OXL㹮Nkj,ޭ5/mEo[M+t߁*! ly?%;k w(nm&>8cBr1_JC7{jNJ\y[d}ć+Ԕ=if(aEPEPEPHzRwM-2LMu'jZNw^(Sih((tҖ((" ( ( ( ( ( ( ( ( )JA`Er"vE&np?iW|#"O(~ހ҃H+g<_hJ/&EXR>ev׫~n6|^Q׮~mAG{7_{\}5R3UE1_{|[Tz啷##|9t4ōƗ1Im ??kI`UWP1+.;zΙJ&F=Iyo8ן$Ex[ĖF+ 9?#7$ˋUl*w-~ARTi٩+QL(((=(@GzZjRQESIڀNKEQE2)RPP:Q@-QIRE-Q@Q@Q@Q@Q@Q@Q@Q@zSW}7)0*jLR7?;_hs4L0r1b^ j-dakڷBoK呏\j)Pt^>&fnK^J7W~K/y^0ԷH5Eh\i9~jf g׵|;LYH\Wڿ?sx{[JG$ ukmæֲa-lB9K>-F9Q9QUoGئ\$ j`;3_r!((((t(((((((((((|y hɿj?xVY TBΫk eEz1=Oֿj>;WEYqs_Gm>e?.)>L*E 7Pg0,v~g^$'d] *k ?m#•IP9$ ]p={j-c^S[ᶺ6(ׅR+:殒r zjZNOp-܇jSrr={W߷ρ | a`F)|Xo. -^0"_F'_Z\uyXG6XV@GǙ΄1wھyx?axK(t2!7kxÙ9.;L;˓GZ(>j[rΛc6zFb׬^Xp4ZW=~3h:H0 ϮgMw hU~g=ȯ {&yeȌP@ z_0xEe j\+{ < %'[242|)\kt DʾbcAi'umWle0l۶g?ݻV>r$|fW_NM'[_ip.2_%Dc>ppqҿ*W|UcwqO5Y>QWpzzwb&A-'AQ"EQEQERht)h(KIڀҎh((@(t)JZ( ( ( ( ( ( ( ( (JuFyc_M>4e5oRX>U$56q3q ̀~XK5kf,<}:VsTyj|{5ʀz+1O[կPGNSc<<ڲscKE:ڀ.wWg G~~'qc&53br?Z41_~#&F_?"O_Eπf|(M=@_my@+zW[E:ҺLJzRCd˷'=&Qdp%c7';|VﴯݍJyȶ#ˀ9O]OûtN.vp6'2-bv5ψm 2J:d^KEM=u)rp!RUI3sۥy.(ڷnaVda&ߚ3&::"{ocW<.i|8y晻:6XFu>:wQk? 7lD==L:$+$:w9_K/-oÚb3ig(AC=lt}Y 2i#QE(()JZCҀNQE2E2@SE5iQLEpEPEPEPEPEPEPEPEPEPEP ʂqyJ~[?Zť\\H#UFIJ-s_)??Vnľ% ?ֿuG U ,}Ͻ{GrǯV cmt}V8#o\cϚ/$E$>t|(v zЙcNBTS>緽s[I|/YsI 'cȚXu+oxUH5m)I[ys**2 ~G½s*E sŧIckxcJ,&1I#-[ a2>\3ߧjMտk X *.9dֻhr=>{C/ aI8ۜ~c|"6)6/мao՝IɊ\bT?aWS_IgHwO٦j*ݧ_pI]wFrVv&t ( ( CҖhJZo/-}i@ zQރҎRQE'-Q@:Q@E--'zZ(L Z(((((((Oxu'a l!\g2,uz|Sdcx[_.mNUsg{񚗰ӱVܱW=ؒbNs9$6J~YgұP9Hv@qҞ8g4[oG- |9K71zl iS9CZ(܃(r9d5~([ƱXbwnEADy\V"ˈ3hn./'9%΅ %:K<巓$=};]γW/d;g p*f<'n\/zIqs迍߶>0xmtHўqqwo9ѕs9QЎ!Vm`G@ s ~Bo٣^GŖm;yּFko#oug2}H{%%@gqn=j`d5x|/wK-ZmQyRr߯_|G+ZAr1KWr@1KE((=(KIޖ )J2(e> NԴQEQE&E-Q@:Q@E--2EQEQEQEQEQEQEQEQE =~lh|E%| I$CZ' dђo vfX/xL~P؞H/ )V:} ]UHDpGL)w|ᕲ}rj;fVعl`]5g)Dn5bg)4Vڏ?0sj?u%F`\iCWQ ke,-bPsn9޾m׿m?Li96IQmkOYY[1";{#POj|ӘEB6zύj+H٤YflGs[|ַ&bS4X4{4jAy-:|u4NRp&i fW[5yIUՕki>/K.Iq~ZHƛFIGێ1ҮW`)B@QE4ES=)iJ;ih֝H:R)}Rv-'zm>tS(AҊJ(=()h ( ( ( ( ( ( ( (nqG dޙ3-%%s$C}q^'WxN]Zv59bc*Z"Mu1ib;8 I_^$\gN)FVU{ iG៉ltMWv{=(/.2^5( s|fQVMtr-'z0~haj$ ^T )]jc@[_ kg%6r~F쪊K3<>TᏇב 9mule_F~>b[yzދB[p>*Raʟ5T*|d$b|߀ZWiiˍïpq~}j~?U zΝ7mbb;FZw~~wßQĪڥp%vayOK+ÿ+Rk0c6VִZb:9FsV<7.cA \_]p?J.bM}p:*ךw{cut%U.JCsp}eXdKjJY%}ۥU.#{UtuQi5">a~ Z*fT &NI`#-uAt6 >HPЯzq\$g0I2pE{x|T.*p[V+3/i}:\`uUbx:N%ttH] MG)B rfaW?_x⧌<%mXn*>T8=c)ciZ[J. [-v$(h(HzRwt- KEQLMu'jZNPEP(@Q@:Q@E-Q@ RE-&E-dPIFE-dPIFE-QIFE-!FEBk?hD u||H!5|UF n2>|J89S]S.|&17 ,8lzWxce>-ֹ 9 9U~sסiuY8 C9\ԝ NڟoUNѕV?[ XgP^fX#ӱܱ#Qv66 ^0:|kT/׵b^>-+Nնx'>\5=*hZjnyFN=w`ּs-VGwoi7-2Kq#+GUVֻm fдZ8fx,Y*4Ëy}F i}GiVE)5xcAMChVt;<Jf#P<UlY&7ܜ-~u,m\-WjZTNgxZveKRP{ Տ+ĿUMNqg]"&$ f~ +ڣ8ڱY]H뫚rG¶xȳ$eAS}m־g&zm7EJI7?k㓎濤r(Jg0KIQ_IL2)L2)wAҖt(-'jJ;Fh@ EPEPEPP:Q@ E-Q@Q@Q@Q@S(QEQEQESvӨ&_BOYH]{83Uu qse<_ߍPErW=RC&VK:G%k>(~ϫkV( '@bdsZąr+;ˎ3i{ {m}koMǿ^7M^h<9wuF[לぃ^i,ʸҬxH# fYn:iWN,||=IYu~4漓X->nHHQ،_JkD扨j%~enj ~a:?i:{,쭹ِirUA +76~/2K>wo8L| KHjvzl2zfUawsԟR$r*q*"0'\=jP>'AKs/N}39Ri&IW29=}Pl^]88ak#+,.쏒NWjZe.`:L OQLEPEPEPEPEPEPEPEPEPHzR@zR}Q@Q@&-R`R@ KE`R@ GjZ(0)hGG!;x5)*' ͯv½OfĿ[HYneB1˻f0ۀ;POZwv6%R9R%? JW G?$M'G2> +F2gSӑZ bkſ |ysuoScDU(3E}S|-uGN#\$8jUWsmu!##<ĸJTJ_Q!J⬏#~UybHӏ%ITpn쿵Ŕe u*}bF] =_n cn!%\(RO$vWg|i;OlRy J#BA2q⺪j.pvKs(byj:OjoU忈M5+us[ y'ԼuuxƅxvN+w@ av 7>%|,8XBpq^:s^w+xηR6\&Iֽ>|ɥhXY1<>y!tgxZϱ,m).U<;«V &3,x]Xvޯj$NXk,J#8䪎:~Uk߲߄uA.06IP{.T~x_:Ne$_j0y593'vJ{ԍ-| v.G~#ɍE;s52GӮ[fa>4_~ic_Ǫ@ t$aTƕgfn`iS,)c ( 㹯L.;5Z.1 Β?A~Í$&hHנ>> %!ӠLBsAS-p)iJZ n\ Z(ip)h((((((()JZ(((Jm8(((O (Oe>((ҡ'3*R3ZY RH\xFOC _Ъ4ޘ`۾?+ .N5~g)J*LlI~Kwnǧ$,HPTU=^l(yWH=6 l[jb!YzggoJۯh_/[h7؝?MI;W+=a?xpq=үt;ۍBit[.o624.<؀l+^jxK¾7H4taHzaqt5 *3BN.&nID/`-/ ?Z2! U; V)gK]qw=U2i% mfxϿ~g!Et]m"YԮ'ަh5F. mb) R@X3:d!$n}p}k"4j$ӭh#˥qO8| 8TGZ]IjnHt9TinXFXczWRhZwάwӜ7WK*|At'еk9oc 3yAڽgWU5Z V,$y h<=kYgU>Z+Sȼ5Ev-Ŗ[X.2yOj>.-LLeC0b $fGCA|6.?mu!yGko?j [^w OEVcCAPT28<0ei98ǝMb(ߴen,/D]Hr#|CYt|@̲i$\V"RO㞂dҭKZUJDs~l@`U -Qu_ m_da0XVvZ񫉥&s7"}VgH?|\x;K- M4Jâ\OQҺ/-8e]D6P\1ag8׵s-ϙ E*H`10ˑ=k%JX(bN\Sќgcf~;5sp˿ϓϚ+VN=~s%1p@Eu_&DmCic!K̲J 8 `k RT.ڜ:jq_> u}P)QIǵ-QIǵ-Q@Q@Q@Q@Q@Q@Q@Q@Q@Rv=)h);EQEQEQ@Q@Q@ KIϵ-34\t=jjc?&}Ӥ>݌w fv9g UQc ?:v9A_^"Yolfx3_Ozz]’$M}+rY7OG5=|S SRUbyT8y=bǞ+\]Xoܰ(^kkc.j#aS$55M&hjlqh_p#נ־c&3`]*HkxW y dL2ҼUեu %0A[a"ea9' 9?OҼ_-:I1 w_th5(T˘JO<Bn~ѠK&x(}զޢK݇llxDŽ:EԶvYTT^#ăP۵_.TU$|zW>4=7vdVy Gf9%|5ݜBY$+P|@~bUt\ygg$zbMU`Ƿ<+ Aus{Ibo hd2^>:V>1߅@MOup%܃$ ϵc/}8!MkRhHiiuXt SWK8Ǚd @G,\6wW|um&L[?xi"fIyQNngϬXiYik9Mq'׭pM5`kG )%%FsΎ-VDϩIg7S@..pw* <½{ |u鋿Emdaҿ<tʑڿ|HqxgVu xpm6a0`:m9"`RӠHn"K%BHOGHxnɆҽJ͋>[ ˨^=ޥFY؆gN1Ey ; *@6K vNqT\J 1_:;SRR?/0V̶ $ w 'ZtcUu+TCl"#-Iّ?s}wk_,DD}|Qcu;?5_R}cSP]Y24xgu:k܆N7ֳlDVkm,0 I#w5NQ\ԮQMNʉ>kֹٷ Zc$cGjebq䍙q9⾵/Lc){[l8)җmcOW㨢!)? m>o@(((((((((((Jm>@(((Oƀ(4NԴQES)P)Q@'QKEDҔ8(Iϩh9iҤ#@>҂(2Dl(?AS@*YSO )NQ@ EQEQEQEQEQEQEQEQEQEQEQE!KHzR)Q@Q@Q@S(QES)QEQE&-Q@Q@Q@(S)QEQEQE2EPE2@Q@}Rw((((((((((=)h NQ@Q@Q@FPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPFPEQEQEQEQEQEQEQEQE