§
    æ˜ºh‘7  ã                   óŠ   — d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 d dl
mZ d dlmZmZmZ d dlmZ dgZ G d„ d	ee¦  «        ZdS )
é    N)ÚPath)ÚAnyÚDictÚListÚOptionalÚSequenceÚUnion)ÚDocument)Ú	BaseModelÚroot_validatorÚ	validator)Ú
BaseLoaderz.https://www.googleapis.com/auth/drive.readonlyc                   ó6  — e Zd ZU dZ ej        ¦   «         dz  dz  Zeed<   	  ej        ¦   «         dz  dz  Zeed<   	  ej        ¦   «         dz  dz  Z	eed<   	 d	Z
ee         ed
<   	 d	Zeee                  ed<   	 d	Zeee                  ed<   	 dZeed<   	 d	Zeee                  ed<   	 dZeed<   	 d	Zeed<   	 i Zedef         ed<   	 edeeef         deeef         fd„¦   «         Z ed¦  «        dededefd„¦   «         Zdefd„Zdedee         fd„Zdedefd„Z d	dœd
edeee                  dee         fd„Z!d ed
edeeee"eee         f         f                  fd!„Z#dee         fd"„Z$dedee         fd#„Z%dee         fd$„Z&dee         fd%„Z'd	S )&ÚGoogleDriveLoaderz%Load Google Docs from `Google Drive`.z.credentialsz	keys.jsonÚservice_account_keyzcredentials.jsonÚcredentials_pathz
token.jsonÚ
token_pathNÚ	folder_idÚdocument_idsÚfile_idsFÚ	recursiveÚ
file_typesÚload_trashed_filesÚfile_loader_clsÚstrÚfile_loader_kwargsÚvaluesÚreturnc           	      óÆ  ‡‡— |                      d¦  «        r9|                      d¦  «        s|                      d¦  «        rt          d¦  «        ‚|                      d¦  «        s9|                      d¦  «        s$|                      d¦  «        st          d¦  «        ‚|                      d¦  «        }|�r*|                      d¦  «        s|                      d¦  «        rt          d¦  «        ‚dd	d
dœŠt          ‰                     ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        z   }d                     d„ ‰                     ¦   «         D ¦   «         ¦  «        }d                     d„ ‰                     ¦   «         D ¦   «         ¦  «        }|D ]}||vrt          d|› d|› d|› �¦  «        ‚Œdt          dt          fˆfd„Šˆfd„|D ¦   «         |d<   |S )zDValidate that either folder_id or document_ids is set, but not both.r   r   r   zICannot specify both folder_id and document_ids nor folder_id and file_idsz8Must specify either folder_id, document_ids, or file_idsr   zdfile_types can only be given when folder_id is given, (not when document_ids or file_ids are given).ú$application/vnd.google-apps.documentú'application/vnd.google-apps.spreadsheetúapplication/pdf)ÚdocumentÚsheetÚpdfz, c                 ó   — g | ]}d |› d �‘Œ	S ©ú'© ©Ú.0Úxs     úx/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/document_loaders/googledrive.pyú
<listcomp>z5GoogleDriveLoader.validate_inputs.<locals>.<listcomp>P   s    € Ð$KÐ$KÐ$K°! X¨ X X XÐ$KÐ$KÐ$Kó    c                 ó   — g | ]}d |› d �‘Œ	S r'   r)   r*   s     r-   r.   z5GoogleDriveLoader.validate_inputs.<locals>.<listcomp>Q   s    € Ð#LÐ#LÐ#L° H¨ H H HÐ#LÐ#LÐ#Lr/   zGiven file type z) is not supported. Supported values are: z; and their full-form names: r,   r   c                 ó    •— | ‰v r‰|          n| S )Nr)   )r,   Útype_mappings    €r-   Ú	full_formz4GoogleDriveLoader.validate_inputs.<locals>.full_form[   s   ø€ Ø*+¨|Ð*;Ð*;�| A”�ÀÐBr/   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r)   r)   )r+   Ú	file_typer3   s     €r-   r.   z5GoogleDriveLoader.validate_inputs.<locals>.<listcomp>^   s#   ø€ Ð#UÐ#UÐ#U¸Y I I¨iÑ$8Ô$8Ð#UÐ#UÐ#Ur/   )ÚgetÚ
ValueErrorÚlistÚkeysr   Újoinr   )	Úclsr   r   Úallowed_typesÚshort_namesÚ
full_namesr5   r3   r2   s	          @@r-   Úvalidate_inputsz!GoogleDriveLoader.validate_inputs2   sb  øø€ ð �:Š:�kÑ"Ô"ð 	Ø�JŠJ�~Ñ&Ô&ð	Ø*0¯*ª*°ZÑ*@Ô*@ð	õ ð)ñô ð ð
 —
’
˜;Ñ'Ô'ð	Yà—J’J˜~Ñ.Ô.ð	Yð —J’J˜zÑ*Ô*ð	Yõ
 ÐWÑXÔXÐXà—Z’Z Ñ-Ô-ˆ
Øñ 	VØ�zŠz˜.Ñ)Ô)ð ¨V¯ZªZ¸
Ñ-CÔ-Cð Ý ðFñô ð ð
 CØBØ(ðð ˆLõ
 ! ×!2Ò!2Ñ!4Ô!4Ñ5Ô5½¸\×=PÒ=PÑ=RÔ=RÑ8SÔ8SÑSˆMØŸ)š)Ð$KÐ$K°|×7HÒ7HÑ7JÔ7JÐ$KÑ$KÔ$KÑLÔLˆKØŸšÐ#LÐ#L°l×6IÒ6IÑ6KÔ6KÐ#LÑ#LÔ#LÑMÔMˆJØ'ð ð �	Ø MÐ1Ð1Ý$ð?¨9ð ?ð ?Ø1<ð?ð ?à2<ð?ð ?ñô ð ð 2ðC�Sð C¥Sð Cð Cð Cð Cð Cð Cð $VÐ#UÐ#UÐ#UÈ*Ð#UÑ#UÔ#UˆF�<Ñ Øˆr/   ÚvÚkwargsc                 óT   — |                      ¦   «         st          d|› d�¦  «        ‚|S )z&Validate that credentials_path exists.zcredentials_path z does not exist)Úexistsr7   )r;   r@   rA   s      r-   Úvalidate_credentials_pathz+GoogleDriveLoader.validate_credentials_patha   s4   € ð �xŠx‰zŒzð 	EÝÐC°ÐCÐCÐCÑDÔDÐDØˆr/   c                 ó¸  — 	 ddl m} ddlm} ddlm} ddlm} ddlm	} n# t          $ r t          d¦  «        ‚w xY wd}| j                             ¦   «         r3|j                             t          | j        ¦  «        t          ¬	¦  «        S | j                             ¦   «         r-|                     t          | j        ¦  «        t          ¦  «        }|r|j        sÿ|r,|j        r%|j        r|                      |¦   «         ¦  «         n}d
t,          j        vr, |¦   «         \  }}|                     t          ¦  «        }|r|S nC|                     t          | j        ¦  «        t          ¦  «        }|                     d¬¦  «        }t9          | j        d¦  «        5 }	|	                     |                     ¦   «         ¦  «         ddd¦  «         n# 1 swxY w Y   |S )zLoad credentials.r   )Údefault)ÚRequest)Úservice_account)ÚCredentials)ÚInstalledAppFlowz‡You must run `pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib` to use the Google Drive loader.N)ÚscopesÚGOOGLE_APPLICATION_CREDENTIALS)ÚportÚw)Úgoogle.authrF   Úgoogle.auth.transport.requestsrG   Úgoogle.oauth2rH   Úgoogle.oauth2.credentialsrI   Úgoogle_auth_oauthlib.flowrJ   ÚImportErrorr   rC   Úfrom_service_account_filer   ÚSCOPESr   Úfrom_authorized_user_fileÚvalidÚexpiredÚrefresh_tokenÚrefreshÚosÚenvironÚwith_scopesÚfrom_client_secrets_filer   Úrun_local_serverÚopenÚwriteÚto_json)
ÚselfrF   rG   rH   rI   rJ   ÚcredsÚprojectÚflowÚtokens
             r-   Ú_load_credentialsz#GoogleDriveLoader._load_credentialsh   sj  € ð	Ø+Ð+Ð+Ð+Ð+Ð+Ø>Ð>Ð>Ð>Ð>Ð>Ø5Ð5Ð5Ð5Ð5Ð5Ø=Ð=Ð=Ð=Ð=Ð=ØBÐBÐBÐBÐBÐBÐBøÝð 	ð 	ð 	Ýð2ñô ð ð	øøøð ˆØÔ#×*Ò*Ñ,Ô,ð 	Ø"Ô.×HÒHÝ�DÔ,Ñ-Ô-µfð Iñ ô ð ð Œ?×!Ò!Ñ#Ô#ð 	XØ×9Ò9½#¸d¼oÑ:NÔ:NÕPVÑWÔWˆEàð 	-˜EœKð 	-Øð 6˜œð 6¨5Ô+>ð 6Ø—’˜g˜g™iœiÑ(Ô(Ð(Ð(Ø1½¼ÐCÐCØ!( ¡¤‘��wØ×)Ò)­&Ñ1Ô1�àð !Ø �Lð!ð (×@Ò@Ý˜Ô-Ñ.Ô.µñô �ð ×-Ò-°1Ð-Ñ5Ô5�Ý�d”o sÑ+Ô+ð -¨uØ—’˜EŸMšM™OœOÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð ˆs   ‚! ¡;Æ(GÇGÇGÚidc           	      óæ  — ddl m} |                      ¦   «         } |dd|¬¦  «        }|                     ¦   «                              |¬¦  «                             ¦   «         }|                     dg ¦  «        }g }|D �]r}|d         d         }	|                     ¦   «                              ¦   «                              ||	¬	¦  «                             ¦   «         }
|
                     d
g ¦  «        }|sŒw|d         }t          |dd…         d¬¦  «        D ]Ù\  }}d|› d|d         d         › �|d         d         › d|	› �|dœ}g }t          |¦  «        D ]`\  }}t          |¦  «        |k    r||          	                    ¦   «         nd}| 
                    |› d| 	                    ¦   «         › �¦  «         Œad                     |¦  «        }| 
                    t          ||¬¦  «        ¦  «         ŒÚ�Œt|S )z%Load a sheet and all tabs from an ID.r   ©ÚbuildÚsheetsÚv4©Úcredentials)ÚspreadsheetIdÚ
propertiesÚtitle)rr   Úranger   é   N)Ústartz'https://docs.google.com/spreadsheets/d/z
/edit?gid=ÚsheetIdz - )Úsourcert   ÚrowÚ z: ú
©Úpage_contentÚmetadata)Úgoogleapiclient.discoveryrm   ri   Úspreadsheetsr6   Úexecuter   Ú	enumerateÚlenÚstripÚappendr:   r
   )rd   rj   rm   re   Úsheets_serviceÚspreadsheetrn   Ú	documentsr$   Ú
sheet_nameÚresultr   ÚheaderÚirz   r   ÚcontentÚjr@   rt   r~   s                        r-   Ú_load_sheet_from_idz%GoogleDriveLoader._load_sheet_from_id–   s:  € ð 	4Ð3Ð3Ð3Ð3Ð3à×&Ò&Ñ(Ô(ˆØ˜˜x¨¸5ÐAÑAÔAˆØ$×1Ò1Ñ3Ô3×7Ò7ÀbÐ7ÑIÔI×QÒQÑSÔSˆØ—’ ¨2Ñ.Ô.ˆàˆ	Øð 	Yñ 	YˆEØ˜|Ô,¨WÔ5ˆJà×+Ò+Ñ-Ô-ß’‘”ß’ 2¨Z�Ñ8Ô8ß’‘”ð	 ð —Z’Z ¨"Ñ-Ô-ˆFØð Øà˜A”YˆFÝ# F¨1¨2¨2¤J°aÐ8Ñ8Ô8ð Yð Y‘��3ðEÀ"ð Eð EØ$)¨,Ô$7¸	Ô$BðEð Eð !,¨LÔ 9¸'Ô BÐSÐSÀzÐSÐSØðð �ð �Ý% c™NœNð <ð <‘D�A�qÝ14°V±´¸q²°˜F 1œIŸOšOÑ-Ô-Ð-Àb�EØ—N’N eÐ#:Ð#:¨q¯wªw©y¬yÐ#:Ð#:Ñ;Ô;Ð;Ð;à#Ÿyšy¨Ñ1Ô1�Ø× Ò ¥°|ÈhÐ!WÑ!WÔ!WÑXÔXÐXÐXñYð" Ðr/   c                 óT  — ddl m} ddlm} ddlm} ddlm} |                      ¦   «         } |dd|¬¦  «        }| 	                    ¦   «          
                    |d	d
¬¦  «                             ¦   «         }| 	                    ¦   «                              |d¬¦  «        }	 |¦   «         }
 ||
|	¦  «        }d}	 |du r|                     ¦   «         \  }}|du °ng# |$ r_}|j        j        dk    r#t!          d                     |¦  «        ¦  «         n"t!          d                     |¦  «        ¦  «         Y d}~nd}~ww xY w|
                     ¦   «                              d¦  «        }d|› d�| 
                    d¦  «        › | 
                    d¦  «        › dœ}t)          ||¬¦  «        S )zLoad a document from an ID.r   ©ÚBytesIOrl   )Ú	HttpError©ÚMediaIoBaseDownloadÚdriveÚv3rp   TzmodifiedTime,name)ÚfileIdÚsupportsAllDrivesÚfieldsz
text/plain)r™   ÚmimeTypeFi”  zFile not found: {}zAn error occurred: {}Nzutf-8z#https://docs.google.com/document/d/z/editÚnameÚmodifiedTime)ry   rt   Úwhenr}   )Úior“   r€   rm   Úgoogleapiclient.errorsr”   Úgoogleapiclient.httpr–   ri   Úfilesr6   r‚   Úexport_mediaÚ
next_chunkÚrespÚstatusÚprintÚformatÚgetvalueÚdecoder
   )rd   rj   r“   rm   r”   r–   re   ÚserviceÚfileÚrequestÚfhÚ
downloaderÚdoner§   ÚeÚtextr   s                    r-   Ú_load_document_from_idz(GoogleDriveLoader._load_document_from_idÁ   sõ  € àÐÐÐÐÐà3Ð3Ð3Ð3Ð3Ð3Ø4Ð4Ð4Ð4Ð4Ð4Ø<Ð<Ð<Ð<Ð<Ð<à×&Ò&Ñ(Ô(ˆØ�%˜ °5Ð9Ñ9Ô9ˆð �MŠM‰OŒOßŠS˜¨dÐ;NˆSÑOÔOßŠW‰YŒYð 	ð
 —-’-‘/”/×.Ò.°bÀ<Ð.ÑPÔPˆØˆW‰YŒYˆØ(Ð(¨¨WÑ5Ô5ˆ
Øˆð	9Ø˜%�-�-Ø)×4Ò4Ñ6Ô6‘�˜ð ˜%�-�-øøð ð 	9ð 	9ð 	9ØŒvŒ} Ò#Ð#ÝÐ*×1Ò1°"Ñ5Ô5Ñ6Ô6Ð6Ð6åÐ-×4Ò4°QÑ7Ô7Ñ8Ô8Ð8øøøøøøøøøð		9øøøð �{Š{‰}Œ}×#Ò# GÑ,Ô,ˆàE¸BÐEÐEÐEØŸš Ñ(Ô(Ð*Ø—x’x Ñ/Ô/Ð1ð
ð 
ˆõ
  T°HÐ=Ñ=Ô=Ð=s   Â9C ÃD=ÃAD8Ä8D=©r   c                óH  ‡— ddl m} |                      ¦   «         } |dd|¬¦  «        }|                      ||¦  «        }‰rˆfd„|D ¦   «         }n|}g }|D ]Ê}	|	d         r| j        sŒ|	d         d	k    r/|                     |                      |	d
         ¦  «        ¦  «         ŒM|	d         dk    r/|                     |                      |	d
         ¦  «        ¦  «         Œˆ|	d         dk    s| j	        �/|                     |  
                    |	d
         ¦  «        ¦  «         ŒÊŒË|S )zLoad documents from a folder.r   rl   r—   r˜   rp   c                 ó(   •— g | ]}|d          ‰v ¯|‘ŒS )rœ   r)   )r+   Úfr   s     €r-   r.   zAGoogleDriveLoader._load_documents_from_folder.<locals>.<listcomp>ò   s'   ø€ ÐFÐFÐF˜A¨!¨J¬-¸:Ð*EÐ*E�aÐ*EÐ*EÐ*Er/   Útrashedrœ   r    rj   r!   r"   )r€   rm   ri   Ú_fetch_files_recursiver   r†   r´   Úextendr�   r   Ú_load_file_from_id)
rd   r   r   rm   re   r¬   r£   Ú_filesÚreturnsr­   s
     `       r-   Ú_load_documents_from_folderz-GoogleDriveLoader._load_documents_from_folderç   sa  ø€ ð 	4Ð3Ð3Ð3Ð3Ð3à×&Ò&Ñ(Ô(ˆØ�%˜ °5Ð9Ñ9Ô9ˆØ×+Ò+¨G°YÑ?Ô?ˆàð 	ØFÐFÐFÐF ÐFÑFÔFˆFˆFàˆFàˆØð 	ð 	ˆDØ�IŒð  tÔ'>ð ØØ�jÔ!Ð%KÒKÐKØ—’˜t×:Ò:¸4À¼:ÑFÔFÑGÔGÐGÐGØ�jÔ!Ð%NÒNÐNØ—’˜t×7Ò7¸¸T¼
ÑCÔCÑDÔDÐDÐDà�ZÔ Ð$5Ò5Ð5ØÔ'Ð3à—’˜t×6Ò6°t¸D´zÑBÔBÑCÔCÐCÐCàØˆr/   r¬   c                 ót  — |                      ¦   «                              d|› d�dddd¬¦  «                             ¦   «         }|                     dg ¦  «        }g }|D ]Z}|d         d	k    r7| j        r/|                     |                      ||d
         ¦  «        ¦  «         ŒE|                     |¦  «         Œ[|S )z+Fetch all files and subfolders recursively.r(   z' in parentsiè  Tz:nextPageToken, files(id, name, mimeType, parents, trashed))ÚqÚpageSizeÚincludeItemsFromAllDrivesrš   r›   r£   rœ   z"application/vnd.google-apps.folderrj   )r£   r8   r‚   r6   r   r»   rº   r†   )rd   r¬   r   Úresultsr£   r¾   r­   s          r-   rº   z(GoogleDriveLoader._fetch_files_recursive  sÓ   € ð
 �MŠM‰OŒOßŠTØ-�iÐ-Ð-Ð-ØØ*.Ø"&ØSð ñ ô ÷ ŠW‰YŒYð 	ð —’˜G RÑ(Ô(ˆØˆØð 	%ð 	%ˆDØ�JÔÐ#GÒGÐGØ”>ð UØ—N’N 4×#>Ò#>¸wÈÈTÌ
Ñ#SÔ#SÑTÔTÐTøà—’˜tÑ$Ô$Ð$Ð$àˆr/   c                 óV   ‡ — ‰ j         st          d¦  «        ‚ˆ fd„‰ j         D ¦   «         S )z"Load documents from a list of IDs.zdocument_ids must be setc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r)   )r´   )r+   Údoc_idrd   s     €r-   r.   z>GoogleDriveLoader._load_documents_from_ids.<locals>.<listcomp>&  s'   ø€ ÐTÐTÐT¸�×+Ò+¨FÑ3Ô3ÐTÐTÐTr/   )r   r7   ©rd   s   `r-   Ú_load_documents_from_idsz*GoogleDriveLoader._load_documents_from_ids!  s:   ø€ àÔ ð 	9ÝÐ7Ñ8Ô8Ð8àTÐTÐTÐTÀ$ÔBSÐTÑTÔTÐTr/   c                 ó@  ‡‡— ddl m} ddlm} ddlm} |                      ¦   «         } |dd|¬¦  «        }|                     ¦   «                              ‰d¬	¦  «         	                    ¦   «         Š|                     ¦   «          
                    ‰¬
¦  «        } |¦   «         } |||¦  «        }	d}
|
du r|	                     ¦   «         \  }}
|
du °| j        �y|                     d¦  «          | j        dd|i| j        ¤Ž}|                     ¦   «         }|D ]7}d‰› d�|j        d<   d|j        vr‰                     d¦  «        › |j        d<   Œ8|S ddlm} |                     ¦   «         } | ||¦  «        ¦  «        }ˆˆfd„t)          |j        ¦  «        D ¦   «         S )zLoad a file from an ID.r   r’   rl   r•   r—   r˜   rp   T)r™   rš   )r™   FNr­   ú https://drive.google.com/file/d/ú/viewry   rt   r�   )Ú	PdfReaderc           	      ó”   •— g | ]D\  }}t          |                     ¦   «         d ‰› d�‰                     d¦  «        › |dœ¬¦  «        ‘ŒES )rË   rÌ   r�   )ry   rt   Úpager}   )r
   Úextract_textr6   )r+   r�   rÏ   r­   rj   s      €€r-   r.   z8GoogleDriveLoader._load_file_from_id.<locals>.<listcomp>J  sz   ø€ ð 
ð 
ð 
ñ �A�tõ Ø!%×!2Ò!2Ñ!4Ô!4à"NÀRÐ"NÐ"NÐ"NØ$(§H¢H¨VÑ$4Ô$4Ð!6Ø !ðð ðñ ô ð
ð 
ð 
r/   r)   )r    r“   r€   rm   r¢   r–   ri   r£   r6   r‚   Ú	get_mediar¥   r   Úseekr   Úloadr   ÚPyPDF2rÍ   rª   rƒ   Úpages)rd   rj   r“   rm   r–   re   r¬   r®   r¯   r°   r±   r§   ÚloaderÚdocsÚdocrÍ   rŽ   Ú
pdf_readerr­   s    `                @r-   r¼   z$GoogleDriveLoader._load_file_from_id(  s
  øø€ àÐÐÐÐÐà3Ð3Ð3Ð3Ð3Ð3Ø<Ð<Ð<Ð<Ð<Ð<à×&Ò&Ñ(Ô(ˆØ�%˜ °5Ð9Ñ9Ô9ˆà�}Š}‰Œ×"Ò"¨"ÀÐ"ÑEÔE×MÒMÑOÔOˆØ—-’-‘/”/×+Ò+°2Ð+Ñ6Ô6ˆØˆW‰YŒYˆØ(Ð(¨¨WÑ5Ô5ˆ
ØˆØ�eˆmˆmØ%×0Ò0Ñ2Ô2‰LˆF�Dð �eˆmˆmð ÔÐ+Ø�GŠG�A‰JŒJˆJØ)�TÔ)ÐMÐM¨rÐM°TÔ5LÐMÐMˆFØ—;’;‘=”=ˆDØð Bð B�Ø)UÈBÐ)UÐ)UÐ)U�”˜XÑ&Ø #¤,Ð.Ð.Ø/3¯xªx¸Ñ/?Ô/?Ð,A�C”L Ñ)øØˆKð )Ð(Ð(Ð(Ð(Ð(à—k’k‘m”mˆGØ"˜ 7 7¨7Ñ#3Ô#3Ñ4Ô4ˆJð
ð 
ð 
ð 
ð 
õ  )¨Ô)9Ñ:Ô:ð
ñ 
ô 
ð 
r/   c                 óš   — | j         st          d¦  «        ‚g }| j         D ]*}|                     |                      |¦  «        ¦  «         Œ+|S )zLoad files from a list of IDs.zfile_ids must be set)r   r7   r»   r¼   )rd   r×   Úfile_ids      r-   Ú_load_file_from_idsz%GoogleDriveLoader._load_file_from_idsV  sY   € àŒ}ð 	5ÝÐ3Ñ4Ô4Ð4ØˆØ”}ð 	:ð 	:ˆGØ�KŠK˜×/Ò/°Ñ8Ô8Ñ9Ô9Ð9Ð9Øˆr/   c                 ó°   — | j         r!|                      | j         | j        ¬¦  «        S | j        r|                      ¦   «         S |                      ¦   «         S )zLoad documents.rµ   )r   r¿   r   r   rÉ   rÜ   rÈ   s    r-   rÓ   zGoogleDriveLoader.load_  sc   € àŒ>ð 	.Ø×3Ò3Ø”¨4¬?ð 4ñ ô ð ð Ôð 	.Ø×0Ò0Ñ2Ô2Ð2à×+Ò+Ñ-Ô-Ð-r/   )(Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úhomer   Ú__annotations__r   r   r   r   r   r   r   r   r   Úboolr   r   r   r   r   r   r   r   r?   r   rD   ri   r
   r�   r´   r¿   r	   rº   rÉ   r¼   rÜ   rÓ   r)   r/   r-   r   r      sR  € € € € € € Ø/Ð/à ) ¤	¡¤¨nÑ <¸{Ñ JÐ˜ÐJÐJÑJØ/Ø&˜TœY™[œ[¨>Ñ9Ð<NÑNÐ�dÐNÐNÑNØ'Ø �t”y‘{”{ ^Ñ3°lÑB€J�ÐBÐBÑBØ!Ø#€Iˆx˜Œ}Ð#Ð#Ñ#Ø%Ø(,€L�(˜4 œ9Ô%Ð,Ð,Ñ,Ø(Ø$(€Hˆh�t˜C”yÔ!Ð(Ð(Ñ(Ø$Ø€IˆtÐÐÑØLØ*.€J�˜ #œÔ'Ð.Ð.Ñ.ØGØ$Ð˜Ð$Ð$Ñ$ØNð  €O�SÐÐÑØ'Ø+-Ð˜˜U C˜ZÔ(Ð-Ð-Ñ-Ø(àð, T¨#¨s¨(¤^ð ,¸¸SÀ#¸X¼ð ,ð ,ð ,ñ „^ð,ð\ €YÐ!Ñ"Ô"ð¨#ð ¸ð Àð ð ð ñ #Ô"ðð, 3ð ,ð ,ð ,ð ,ð\) cð )¨d°8¬nð )ð )ð )ð )ðV$>¨ð $>°ð $>ð $>ð $>ð $>ðN HLðð ð ØðØ-5°h¸s´mÔ-Dðà	ˆhŒðð ð ð ð@ØðØ'*ðà	ˆd�3˜˜c 4¨¤9˜nÔ-Ð-Ô.Ô	/ðð ð ð ð4U¨$¨x¬.ð Uð Uð Uð Uð, Sð ,¨T°(¬^ð ,ð ,ð ,ð ,ð\ T¨(¤^ð ð ð ð ð	.�d˜8”nð 	.ð 	.ð 	.ð 	.ð 	.ð 	.r/   r   )r\   Úpathlibr   Útypingr   r   r   r   r   r	   Úlangchain_core.documentsr
   Úlangchain_core.pydantic_v1r   r   r   Ú)langchain_community.document_loaders.baser   rV   r   r)   r/   r-   ú<module>rê      sÜ   ðð 
€	€	€	Ø Ð Ð Ð Ð Ð Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à -Ð -Ð -Ð -Ð -Ð -Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kà @Ð @Ð @Ð @Ð @Ð @à
:Ð	;€ðR.ð R.ð R.ð R.ð R.˜
 Iñ R.ô R.ð R.ð R.ð R.r/   