ó
    �®žjqF  ã                  ó¶  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  SS	KJrJrJrJrJrJrJr  SS
KJr  SSKJr  SSKJr  SSKJ r J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'J(r(  Sr)S\*S'   Sr+S\*S'    SSK,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  Sr)\Rl                  " \75      r8Sr9S\*S'    " S S\5      r:g! \4 a  r5\5r+ Sr5C5N2Sr5C5ff = f) aÕ  Backend to parse XBRL (eXtensible Business Reporting Language) documents.

XBRL is a standard XML format used for business and financial reporting.
It is widely used by companies, regulators, and financial institutions worldwide
for exchanging financial information.

This backend leverages the Arelle library for XBRL processing.

Warning:
    This implementation uses DoclingDocument's GraphData object to represent
    key-value pairs extracted from XBRL numeric facts. The design of key-value
    pairs (and therefore the GraphData, GraphCell, GraphLink class) may soon
    change in a new release of the `docling-core` library. This implementation
    will need to be updated accordingly when that release is available.
é    )ÚannotationsN)Údefaultdict)ÚBytesIO)ÚPath)ÚTemporaryDirectory)ÚFinal)ÚDoclingDocumentÚDocumentOriginÚ	GraphCellÚGraphCellLabelÚ	GraphDataÚ	GraphLinkÚGraphLinkLabel)Úoverride)ÚDeclarativeDocumentBackend)ÚHTMLDocumentBackend)ÚHTMLBackendOptionsÚXBRLBackendOptions)ÚInputFormat)ÚInputDocument)ÚDocumentLoadErrorÚOperationNotAllowedFÚboolÚ_XBRL_AVAILABLEzImportError | NoneÚ_XBRL_IMPORT_ERROR)ÚCntlr)ÚType)ÚModelConcept)Ú	ModelXbrlTé
   z
Final[int]Ú_WEB_CACHE_TIMEOUTc                  óî   ^ • \ rS rSrSr\ S       SU 4S jjj5       r\SS j5       r\\SS j5       5       r	\S 5       r
\\SS j5       5       r    SS jr        SS	 jr\SS
 j5       rSrU =r$ )ÚXBRLDocumentBackendéD   až  Backend to parse XBRL (eXtensible Business Reporting Language) documents.

XBRL is a standard XML-based format for business and financial reporting.
It is used globally by companies and regulators for exchanging financial
information in a structured, machine-readable format.

The backend parses an XBRL instance file given a taxonomy package passed
as a backend option.

Refer to https://www.xbrl.org for more details on XBRL. In particular, refer to
https://www.xbrl.org/Specification/taxonomy-package/REC-2016-04-19/taxonomy-package-REC-2016-04-19.html
for details on how to provide a taxonomy package.

This backend leverages the Arelle library for XBRL processing.
c                ó  >• Uc
  [        5       n[        (       d  [        S5      [        e[        TU ]  X5        X0l        S U l        SU l        / U l	        / U l
        0 U l        [        [        5      U l        [        5       U l         U R                  R"                  (       d&  U R                  R$                  (       d  ['        S5      e[)        5        n[+        U5      n/ nU R                  R,                  (       aõ  U R                  R,                  R/                  5       nUR1                  5       (       d  [3        S5      e[4        R6                  " XuSS9nUR9                  5        V	s/ s Hb  n	U	R;                  5       (       d  M  U	R<                  R?                  5       S:X  d  M:  [@        RB                  " U	5      (       d  MW  [E        U	5      PMd     nn	U(       a  [F        RI                  SU 35        [K        U[L        5      (       a%  US	-  n
U
RO                  URQ                  5       5        O@[K        U[*        5      (       a   [+        [4        RR                  " X%5      5      n
O[U        S
5      e[V        RV                  " 5       nU R                  R$                  (       d#  SURX                  l-        SUR\                  l/        OA[`        URX                  l1        [F        RI                  SURX                  Rd                   35        UR\                  Rg                  [E        U
5      US9n[K        U[h        5      (       a  U(       a  URj                  (       d  [3        S5      eURj                  Rl                  [n        Rp                  :w  a  [3        S5      eURr                  (       a  [3        SURr                   35      e S S S 5        WU l        SU l:        g s  sn	f ! , (       d  f       N"= f! [v         a  n[y        SU Rz                   S35      UeS nAff = f)Nz‰The 'arelle-release' package is required to process XBRL documents. Please install it using `pip install 'docling-slim[format-xml-xbrl]'`r   zÔFetching local or remote resources is only allowed when set explicitly. Set 'options.enable_local_fetch=True' or 'options.enable_remote_fetch=True'. Either one or the other needs to be enabled to load taxonomies.z1The 'taxonomy' backend option must be a directoryT)Údirs_exist_okz.zipz)Files to be passed as taxonomy packages: zinstance.xmlz&path_or_stream must be Path or BytesIOFz"Web Cache for remote taxonomy is: )ÚtaxonomyPackageszInvalid or unreadable XBRL filez Document is not an XBRL instancezXBRL loaded with errors: z5Could not initialize XBRL backend for file with hash Ú.)>r   r   ÚImportErrorr   ÚsuperÚ__init__ÚoptionsÚ
model_xbrlÚ_kv_idxÚ_cellsÚ_linksÚ_hierarchy_cell_idsr   ÚlistÚ_fact_cell_idsÚsetÚ_created_linksÚenable_local_fetchÚenable_remote_fetchr   r   r   ÚtaxonomyÚresolveÚis_dirÚ
ValueErrorÚshutilÚcopytreeÚiterdirÚis_fileÚsuffixÚlowerÚzipfileÚ
is_zipfileÚstrÚ_logÚdebugÚ
isinstancer   Úwrite_bytesÚgetvalueÚcopy2Ú	TypeErrorr   ÚwebCacheÚworkOfflineÚmodelManagerÚvalidateDisclosureSystemr!   ÚtimeoutÚcacheDirÚloadr   ÚmodelDocumentÚtyper   ÚINSTANCEÚerrorsÚvalidÚ	Exceptionr   Údocument_hash)ÚselfÚin_docÚpath_or_streamr,   ÚtmpdirÚtmp_pathÚ	zip_pathsr8   Útaxonomy_pathÚitemÚinstance_pathÚcntlrÚmodelÚexcÚ	__class__s                 €Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/backend/xml/xbrl_backend.pyr+   ÚXBRLDocumentBackend.__init__U   s\  ø€ ð ‰?Ü(Ó*ˆGçŠÜðXóô &ð&ô
 	‰Ñ˜Ô0Ø+2ŒØ,0ˆŒØˆŒØ')ˆŒØ')ˆŒØ35ˆÔ Ü4?ÄÓ4EˆÔÜ47³EˆÔðL	à—L‘L×3×3ØŸ™×8×8ä)ð?óð ô $Ô%¨Ü!% f£�Ø')�	Ø—<‘<×(×(Ø%)§\¡\×%:Ñ%:×%BÑ%BÓ%D�HØ#Ÿ?™?×,Ñ,Ü(ØOóð ô %+§O¢OØ ¸$ñ%�Mð
 %2×$9Ñ$9Ô$;ó!â$;˜DØŸ<™<Ÿ>ó "ð !ŸK™K×-Ñ-Ó/°6Ñ9ó "ô $×.Ò.¨t×4ó	 "œ˜Dž	Ù$;ð ð !ö !ÜŸ
™
ØGÈ	À{ÐSôô ˜n¬g×6Ñ6Ø*2°^Ñ*C�MØ!×-Ñ-¨n×.EÑ.EÓ.GÕHÜ ´×5Ñ5Ü$(¬¯ª°nÓ)OÓ$P‘Mä#Ð$LÓMÐMô Ÿš›�à—|‘|×7×7Ø15�E—N‘NÔ.ØBG�E×&Ñ&Õ?ô .@�E—N‘NÔ*ä—J‘JØ<¸U¿^¹^×=TÑ=TÐ<UÐVôð ×*Ñ*×/Ñ/Ü˜Ó&¸ð 0ð �ô # 5¬)×4Ñ4Þ Ø ×.×.ä$Ð%FÓGÐGØ×&Ñ&×+Ñ+¬t¯}©}Ó<Ü$Ð%GÓHÐHØ—<—<Ü$Ð'@ÀÇÁÀÐ%OÓPÐPð  ÷q &ðv $ˆDŒOØˆD�Jùòa!÷ &Õ%ûôz ó 	Ü#ðØ×&Ñ&Ð' qð*óð ðûð	úsW   ÂAO" ÃBOÅ%OÆOÆ"OÆ?OÇG&OÎ5O" ÏOÏ
OÏO" Ï"
PÏ,PÐPc                ó   • U R                   $ ©N)rW   ©rZ   s    rg   Úis_validÚXBRLDocumentBackend.is_valid½   s   € à�z‰zÐó    c                ó   • g)NF© ©Úclss    rg   Úsupports_paginationÚ'XBRLDocumentBackend.supports_paginationÁ   s   € ð rn   c                ó\   • U R                   (       a  U R                   R                  5         g g rj   )r-   Úcloserk   s    rg   ÚunloadÚXBRLDocumentBackend.unloadÆ   s   € à�?�?Ø�O‰O×!Ñ!Õ#ð rn   c                ó$   • [         R                  1$ rj   )r   ÚXML_XBRLrq   s    rg   Úsupported_formatsÚ%XBRLDocumentBackend.supported_formatsË   s   € ô ×$Ñ$Ð%Ð%rn   c           	     óT  • [        UR                  5      nX R                  ;  av  U R                  nU R                  R                  [        [        R                  UUR                  R                  US95        X0R                  U'   U =R                  S-  sl        U R                  U   $ )z3Get existing or create new cell for a concept node.©ÚlabelÚcell_idÚtextÚorigé   )
rD   Úqnamer1   r.   r/   Úappendr   r   ÚKEYÚ	localName)rZ   ÚconceptÚ	qname_strr€   s       rg   Ú_get_hierarchy_cellÚ'XBRLDocumentBackend._get_hierarchy_cellÐ   sŒ   € ô
 ˜Ÿ™Ó&ˆ	Ø×4Ñ4Ó4Ø—l‘lˆGØ�K‰K×ÑÜÜ(×,Ñ,Ø#Ø Ÿ™×0Ñ0Ø"ñ	ôð 3:×$Ñ$ YÑ/Ø�LŠL˜AÑ�LØ×'Ñ'¨	Ñ2Ð2rn   c                ó¨   • X#4nX@R                   ;  a@  U R                   R                  U5        U R                  R                  [	        UUUS95        gg)z'Add a link if it doesn't already exist.©r   Úsource_cell_idÚtarget_cell_idN)r5   Úaddr0   r…   r   )rZ   r   ÚsrcÚtgtÚkeys        rg   Ú	_add_linkÚXBRLDocumentBackend._add_linkä   sS   € ð ˆjˆØ×)Ñ)Ó)Ø×Ñ×#Ñ# CÔ(Ø�K‰K×ÑÜØØ#&Ø#&ñõð *rn   c                óP  • [         R                  S5        U R                  5       (       a  U R                  (       d  [	        SU R
                   35      e[        U R                  R                  =(       d    SSU R
                  S9n[        U R                  R                  =(       d    SUS9nUR                  nSnSnSnU R                  R                   H¬  nUR                  R                  S:X  a  UR                  (       a  UR                  nUR                  R                  S	:X  a  UR                  (       a  UR                  nUR                  R                  S
:X  d  M�  UR                  (       d  M   UR                  nM®     U SU SU 3R                  5       nU(       a  UOU R                  R                   R"                  nUR%                  US9  ['        SSSSSS9n	[         R                  S5        U R                  R                   GH¾  nUR(                  c  M  UR(                  R*                  bÇ  UR(                  R*                  R                  S:X  a£  UR                  (       a’  [,        R.                  " SSUR                  5      R                  5       n
[1        [3        U
SS95      n[5        U[6        R8                  [:        U	SS9n[;        UUU	S9nUR=                  5       n[        R>                  " X.4S9nUR(                  R@                  (       d  GM  UR                  (       d  GM#  UR                  (       d  GM7  SnURB                  b¯  URB                  RD                  (       a.  [G        URB                  RH                  RK                  5       5      nOfURB                  RL                  (       aK  URB                  RN                  RK                  5        SURB                  RP                  RK                  5        3nSnURR                  b_  URR                  RT                  (       aD  URR                  RT                  S   (       a&  URR                  RT                  S   S   R                  nURV                  b  [G        URV                  5      OSn/ nURB                  b  URB                  RX                  (       ad  URB                  RX                  R[                  5        H<  u  nnUR]                  UR                   SUR^                  R                   3S45        M>     U R`                  nU Rb                  R]                  [e        [f        Rh                  U[G        UR                  5      [G        UR                  5      S95        U Rj                  [G        UR                  5         R]                  U5        U =R`                  S-  sl0        UR                  (       a  SUR                   3OSS4U(       a  S U 3OSS!4U(       a  S"U 3OSS#4U(       a  S$U 3OSS%4/nU H¦  u  nnU Rb                  R]                  [e        [f        Rl                  U R`                  [G        U5      [G        U5      S95        U Rn                  R]                  [q        [r        Rt                  UU R`                  S&95        U =R`                  S-  sl0        M¨     GMÁ     [         R                  S'5        [w        5       nU R                  Ry                  S(5      nU R                  R                   GH�  n[G        UR                  5      nUR(                  bC  UR(                  R@                  (       a(  UR                  (       a  UR                  (       a  UU;   a  Mk  UR{                  U5        UU Rj                  ;   aZ  U R}                  UR(                  5      nU Rj                  U    H,  nUU:w  d  M  U R                  [r        R€                  UU5        M.     UR(                  n URƒ                  U5      nU(       d  GM  US   R„                  n U R}                  U5      n!U R}                  U 5      n"U R                  [r        R€                  U"U!5        [G        U R                  5      n#U#U;   a  GM~  UR{                  U#5        U nM      [         R                  S)5        U R                  Ry                  S*5      n$U$R†                   HÜ  n%U R}                  U%R„                  5      n"U R}                  U%R‚                  5      n!U R                  [r        R€                  U"U!5        U R`                  n&U Rb                  R]                  [e        [f        Rl                  U&S+U%Rˆ                   3S,S95        U =R`                  S-  sl0        U R                  [r        Rt                  U!U&5        MÞ     X2l        U Rb                  (       a>  U Rn                  (       a-  [‹        U Rb                  U Rn                  S-9n'UR�                  U'S.9  U$ )/zÎConvert XBRL document to DoclingDocument using Arelle library.

This is a placeholder implementation that creates a basic document structure.
Full XBRL parsing using Arelle library can be implemented here.
z$Starting XBRL instance conversion...zInvalid document with hash Úfilezapplication/xml)ÚfilenameÚmimetypeÚbinary_hash)ÚnameÚoriginÚ ÚDocumentTypeÚEntityRegistrantNameÚDocumentPeriodEndDateÚ )r�   F)r6   r7   Úfetch_imagesÚinfer_furnitureÚ	add_titlez/Parsing text block items and key-value items...ÚtextBlockItemTypez\s+zutf-8)Úencodingztext_block.html)r\   ÚformatÚbackendÚbackend_optionsr˜   )r[   r\   r,   )Údocsz - r   z: Ú	dimensionr~   rƒ   zvalue: Úvaluezperiod: Úperiodz
currency: Úunitz
decimals: Údecimalsr�   z+Building presentation linkbase hierarchy...z-http://www.xbrl.org/2003/arcrole/parent-childz.Building calculation linkbase relationships...z/http://www.xbrl.org/2003/arcrole/summation-itemzweight: Úweight)ÚcellsÚlinks)Úgraph)GrE   rF   rl   r-   ÚRuntimeErrorrY   r
   r—   r›   r	   ÚstemÚfactsr„   r‡   r¬   ÚstriprS   Úbasenamer¤   r   rˆ   rT   ÚreÚsubr   Úbytesr   r   ÚHTMLr   ÚconvertÚconcatenateÚ	isNumericÚcontextÚisInstantPeriodrD   ÚinstantDatetimeÚdateÚisStartEndPeriodÚstartDatetimeÚendDatetimer®   Úmeasuresr¯   Ú	qnameDimsÚitemsr…   ÚmemberQnamer.   r/   r   r   r†   r3   ÚVALUEr0   r   r   ÚTO_VALUEr4   ÚrelationshipSetr�   rŠ   r”   ÚTO_CHILDÚtoModelObjectÚfromModelObjectÚmodelRelationshipsr°   r   Úadd_key_values)(rZ   rœ   ÚdocÚdoc_nameÚdoc_typeÚdoc_orgÚ
doc_periodÚfactÚtitleÚhtml_optionsÚcontentÚstreamr[   Úhtml_backendÚhtml_docÚperiod_textÚ	unit_textÚdecimals_textÚ
dimensionsÚ	dim_qnameÚ	dim_valueÚkey_idÚvalue_cellsr�   r‚   Úvisited_conceptsÚ	pre_linksÚ
fact_qnameÚconcept_cell_idÚfact_cell_idÚcurrent_conceptÚparentÚparent_conceptÚchild_cell_idÚparent_cell_idÚparent_qnameÚ
calc_linksÚlinkÚ	weight_idÚ
graph_datas(                                           rg   r½   ÚXBRLDocumentBackend.convertö   s÷  € ô 	�
‰
Ð9Ô:Ø�}‰}�‰ d§o§oÜÐ!<¸T×=OÑ=OÐ<PÐQÓRÐRäØ—Y‘Y—^‘^×- vØ&Ø×*Ñ*ñ
ˆô
  4§9¡9§>¡>×#;°VÀFÑKˆØ—8‘8ˆð ˆØˆØˆ
Ø—O‘O×)Ô)ˆDØ�z‰z×#Ñ# ~Ó5¸$¿*¿*ØŸ:™:�Ø�z‰z×#Ñ#Ð'=Ó=À$Ç*Ç*ØŸ*™*�Ø�z‰z×#Ñ#Ð'>Õ>À4Ç:Ç:Á:Ø!ŸZ™Z’
ñ *ð �*˜A˜g˜Y a¨
 |Ð4×:Ñ:Ó<ˆÞ‘ D§O¡O×$AÑ$A×$JÑ$JˆØ�‰˜5ˆÑ!ô *Ø$Ø %ØØ!Øñ
ˆô 	�
‰
ÐDÔEà—O‘O×)Õ)ˆDØ�|‰|Ñ#Ùà—‘×!Ñ!Ñ-Ø—L‘L×%Ñ%×*Ñ*Ð.AÓAØ—J—JäŸ&š& ¨¨d¯j©jÓ9×?Ñ?ÓA�Ü ¤ w¸Ñ!AÓB�Ü&Ø#)Ü&×+Ñ+Ü/Ø$0Ø.ñ�ô  3Ø!Ø#)Ø(ñ �ð
 (×/Ñ/Ó1�Ü%×1Ò1¸°ÑG�à�|‰|×%×%Ò%¨$¯.¯.ª.¸T¿Z¿ZºZà �Ø—<‘<Ñ+Ø—|‘|×3×3Ü&)¨$¯,©,×*FÑ*F×*KÑ*KÓ*MÓ&N™ØŸ™×6×6Ø)-¯©×)CÑ)C×)HÑ)HÓ)JÐ(KÈ3ÈtÏ|É|×OgÑOg×OlÑOlÓOnÐNoÐ&p˜ð �	à—I‘IÑ)ØŸ	™	×*×*ØŸ	™	×*Ñ*¨1×-à $§	¡	× 2Ñ 2°1Ñ 5°aÑ 8× BÑ B�Ið 7;·m±mÑ6O¤ D§M¡MÔ 2ÐUW�ð  �
Ø—<‘<Ñ+°·±×0F×0FØ04·±×0FÑ0F×0LÑ0LÖ0NÑ,˜	 9Ø"×)Ñ)à#,×#6Ñ#6Ð"7°r¸)×:OÑ:O×:YÑ:YÐ9ZÐ [Ø +ðöñ 1Oð Ÿ™�Ø—‘×"Ñ"ÜÜ,×0Ñ0Ø &Ü  §¡Ó0Ü  §¡›_ñ	ôð ×#Ñ#¤C¨¯
©
£OÑ4×;Ñ;¸FÔCØ—’ Ñ!•ð 04¯z¯z�w˜tŸz™z˜lÑ+¸rÀ7ÐKÞ1<�x ˜}Ñ-À"ÀhÐOÞ1:�z ) Ñ-ÀÀFÐKÞ5B�z - Ñ1ÈÈJÐWð	�ó #.‘J�D˜$Ø—K‘K×&Ñ&Ü!Ü"0×"6Ñ"6Ø$(§L¡LÜ!$ T£Ü!$ T£ñ	ôð —K‘K×&Ñ&Ü!Ü"0×"9Ñ"9Ø+1Ø+/¯<©<ñôð —L’L AÑ%—Lô! #.ñY *ô~ 	�
‰
Ð@ÔAÜ›5ÐØ—O‘O×3Ñ3Ø;ó
ˆ	ð —O‘O×)Õ)ˆDÜ˜TŸZ™Z›ˆJà—‘Ñ$Ø—|‘|×-×-Ø—~—~Ø—z—zØÐ!1Ó1áð × Ñ  Ô,Ø˜T×0Ñ0Ó0Ø"&×":Ñ":¸4¿<¹<Ó"H�Ø$(×$7Ñ$7¸
Ô$C�LØ# Õ6ØŸ™Ü*×3Ñ3Ø+Ø(öñ %Dð #Ÿl™lˆOØØ"×0Ñ0°ÓA�ÞÚØ!'¨¡×!:Ñ!:�Ø $× 8Ñ 8¸Ó I�Ø!%×!9Ñ!9¸.Ó!I�Ø—‘Ü"×+Ñ+Ø"Ø!ôô
  # >×#7Ñ#7Ó8�ØÐ#3Ó3ÚØ ×$Ñ$ \Ô2Ø"0�ñ! ñ3 *ôX 	�
‰
ÐCÔDØ—_‘_×4Ñ4Ø=ó
ˆ
ð ×1Ô1ˆDØ!×5Ñ5°d×6JÑ6JÓKˆNØ ×4Ñ4°T×5GÑ5GÓHˆMØ�N‰NÜ×'Ñ'ØØôð
 Ÿ™ˆIØ�K‰K×ÑÜÜ(×.Ñ.Ø%Ø# D§K¡K =Ð1Ø!ñ	ôð �LŠL˜AÑ�LØ�N‰NÜ×'Ñ'ØØöñ% 2ð0 ŒØ�;�;˜4Ÿ;Ÿ;Ü$-°D·K±KÀtÇ{Á{Ñ$SˆJØ×Ñ ZÐÑ0àˆ
rn   )	r/   r5   r3   r1   r.   r0   r-   r,   rW   rj   )r[   r   r\   zBytesIO | Pathr,   zXBRLBackendOptions | NoneÚreturnÚNone)r÷   r   )r÷   zset[InputFormat])rˆ   r   r÷   Úint)r   r   r‘   rù   r’   rù   r÷   rø   )r÷   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r+   rl   Úclassmethodrs   rw   r{   rŠ   r”   r½   Ú__static_attributes__Ú__classcell__)rf   s   @rg   r#   r#   D   s  ø† ñð  ð
 .2ð	eàðeð 'ðeð +ð	eð
 
÷eó ðeðN óó ðð Øóó ó ðð ñ$ó ð$ð Øó&ó ó ð&ð3àð3ð 
ô3ð(àðð ðð ð	ð
 
ôð$ ó^ó ö^rn   r#   );rþ   Ú
__future__r   Úloggingr¹   r<   rB   Úcollectionsr   Úior   Úpathlibr   Útempfiler   Útypingr   Údocling_core.types.docr	   r
   r   r   r   r   r   Útyping_extensionsr   Ú docling.backend.abstract_backendr   Údocling.backend.html_backendr   Ú!docling.datamodel.backend_optionsr   r   Údocling.datamodel.base_modelsr   Údocling.datamodel.documentr   Údocling.exceptionsr   r   r   Ú__annotations__r   Úareller   Úarelle.ModelDocumentr   Úarelle.ModelDtsObjectr   Úarelle.ModelXbrlr   r)   ÚeÚ	getLoggerrú   rE   r!   r#   rp   rn   rg   Ú<module>r     sÂ   ðòõ  #ã Û 	Û Û Ý #Ý Ý Ý 'Ý ÷÷ ñ õ 'å GÝ <ß TÝ 5Ý 4ß Eà€�Ó Ø)-Ð Ð&Ó -ðÝÝ)Ý2Ý*à€Oð ×Ò˜Ó"€ð "$Ð �JÓ #ôQÐ4õ Qøð ó ØÕûðús   ÂC ÃCÃCÃC