Files
google-mcp/gcalendar/__pycache__/calendar_tools.cpython-312.pyc

132 lines
17 KiB
Plaintext
Raw Normal View History

<EFBFBD>
<00>uhY:<00><00><><00>ddlZddlZddlmZmZddlmZddlmZddl m
Z
ddl m Z m Z mZddlmZmZmZddlmZd Zd
Zej.ej0<00> <0B>ej2e<1A>Zej8<00>d ed efd<0E><04>Zej8<00>d ed efd<0F><04>Zej8<00>d eded efd<11><04>Z ej8<00>d ed efd<12><04>Z!ej8<00> d d ededeedeede"d ef d<17><05>Z#ej8<00> d!d edededededeedeedeeedeed efd<1F><05>Z$y)"<22>N)<02>List<73>Optional)<01> Credentials)<01>build)<01> HttpError)<03>get_credentials<6C>start_auth_flow<6F>handle_auth_callback)<03>start_oauth_flow<6F>check_auth_status<75>stop_oauth_flow)<01>serverz1https://www.googleapis.com/auth/calendar.readonlyz/https://www.googleapis.com/auth/calendar.events)<01>level<65>user_id<69>returnc<00><00><>K<00>tjd|<00><00><02>tg} t||<01>}|S#t$r'}tj d|<03><00><02>d|<03><00>cYd}~Sd}~wwxYw<01>w)a<>
Start the Google OAuth authentication process with automatic callback handling.
This tool provides a smoother authentication experience by automatically
opening a browser window and handling the callback process.
Args:
user_id: The unique identifier (e.g., email address) for the user.
Returns:
Instructions for completing the authentication.
z-Starting OAuth authentication flow for user: z$Error starting authentication flow: z Failed to start authentication: N)<06>logger<65>info<66>CALENDAR_READONLY_SCOPEr <00> Exception<6F>error)r<00>scopes<65>result<6C>es <20>I/Users/taylorwilsdon/git/google_workspace_mcp/gcalendar/calendar_tools.py<70>
start_authrsl<00><00><><00> <0B>K<EFBFBD>K<EFBFBD>?<3F><07>y<EFBFBD>I<>J<>&<26> &<26>F<EFBFBD>6<>!<21>'<27>6<EFBFBD>2<><06><15> <0A><> <14>6<><0E> <0C> <0C>;<3B>A<EFBFBD>3<EFBFBD>?<3F>@<40>1<>!<21><13>5<>5<><35>6<>s0<00> A$<01> 1<00>A$<01> A!<03>A<03>A!<03>A$<01>A!<03>!A$c<00><00><>K<00>tjd|<00><00><02> t|<00>}|S#t$r'}tj d|<02><00><02>d|<02><00>cYd}~Sd}~wwxYw<01>w)z<>
Check the status of an ongoing authentication process.
Args:
user_id: The unique identifier (e.g., email address) for the user.
Returns:
A status message about the authentication process.
z)Checking authentication status for user: z&Error checking authentication status: z'Failed to check authentication status: N)rrr rr)rrrs r<00> auth_statusr3s`<00><00><><00> <0B>K<EFBFBD>K<EFBFBD>;<3B>G<EFBFBD>9<EFBFBD>E<>F<>=<3D>"<22>7<EFBFBD>+<2B><06><15> <0A><> <14>=<3D><0E> <0C> <0C>=<3D>a<EFBFBD>S<EFBFBD>A<>B<>8<><11><03><<3C><<3C><>=<3D>s0<00>A<01> )<00>A<01> A<03>A<03>A<03>A<01>A<03>A<01>authorization_codec<00><00><>K<00>tjd|<00><00><02> tg}d}|<03>d|<01><00>}td|||<03><05>\}}|j <00>|j <00>k7r'tj d|<00>d|<05><00><04>d|<05>d |<00>d
|<05>d <0B>Stjd |<05><00><02>d |<05><00>S#t $r)}tjd|<07><00>d<0F><10>d|<07><00>cYd}~Sd}~wwxYw<01>w)aG
Completes the OAuth flow by exchanging the authorization code for credentials.
Args:
user_id: The unique identifier (e.g., email address) for the user.
authorization_code: The authorization code received from Google OAuth.
Returns:
A string indicating success or failure.
z0Attempting to complete authentication for user: zhttp://localhost:8080/callbackz?code=<3D>client_secret.json)<04>client_secrets_pathr<00>authorization_response<73> redirect_urizUser ID mismatch: provided z, authenticated as zWarning: You authenticated as z , but requested credentials for z. Using authenticated email z for credentials.z0Successfully completed authentication for user: zPAuthentication successful! You can now use the Google Calendar tools with user: z!Error completing authentication: T)<01>exc_infoz#Failed to complete authentication: N)rrrr
<00>lower<65>warningrr)rrrr$<00>full_callback_url<72>
user_email<EFBFBD> credentialsrs r<00> complete_authr+Hs<00><00><><00> <0B>K<EFBFBD>K<EFBFBD>B<>7<EFBFBD>)<29>L<>M<>9<>)<29>*<2A><06>8<> <0C>+<2B>n<EFBFBD>F<EFBFBD>3E<33>2F<32>G<><19>#7<> 4<><19>#4<>%<25> #
<EFBFBD><1F>
<EFBFBD>K<EFBFBD> <16> <1B> <1B> <1D><17><1D><1D><1F> 0<> <12>N<EFBFBD>N<EFBFBD>8<><17> <09>AT<41>U_<55>T`<60>a<> b<>4<>Z<EFBFBD>L<EFBFBD>@`<60>ah<61>`i<>j0<>0:<3A>|<7C>;L<>N<01> O<01> <0F> <0B> <0B>F<>z<EFBFBD>l<EFBFBD>S<>T<>a<>bl<62>am<61>n<>n<><6E> <14>9<><0E> <0C> <0C>8<><11><03><<3C>t<EFBFBD> <0C>L<>4<>Q<EFBFBD>C<EFBFBD>8<>8<><38>9<>sA<00>C<01>A)B#<00>C<01>B#<00>"C<01># C<03>,C<03>
C<03> C<01>C<03>Cc<00><00>bK<00>tjd|<00><00><02>tg}tjd|<00>d|<01><00><04> t ||d<04><05>}tjd|<02><00><02>|r |js'tjd
|<00><00><02> t||<01>}|S td d|<02><0F>}tjd|<00><00><02>|j<00>j<00>j<00>}|jdg<00>}|syd}|D]%} | jdd<15>}
| d} |d|
<EFBFBD>d| <0B>d<19>z }<08>'tjdt|<07><00>d|<00><00><04>|j!<00>S#t
$r'}tj d|<03><00><02>d|<03><00>cYd }~Sd }~wwxYw#t
$r'}tj d |<03><00><02>d |<03><00>cYd }~Sd }~wwxYw#t"$r+} tj d|<00>d| <0C><00><04>d| <0C>d<1F>cYd } ~ Sd } ~ wt
$r*}tj%d |<00>d|<03><00><04>d!|<03><00>cYd }~Sd }~wwxYw<01>w)"z<>
Lists the Google Calendars the user has access to.
Args:
user_id: The unique identifier (e.g., email address) for the user.
Returns:
A string listing the calendars or an authentication prompt.
z'Attempting to list calendars for user: z&Calling get_credentials with user_id: z
, scopes: r!<00>r"<00>get_credentials returned: <20>Error getting credentials: <20>Failed to get credentials: N<>)Missing or invalid credentials for user: <20>Failed to start auth flow: <20>%Failed to start authentication flow: <20>calendar<61>v3<76>r*<00>.Successfully built calendar service for user: <20>itemsz/You don't seem to have access to any calendars.z+Here are the calendars you have access to:
<EFBFBD>summaryz
No Summary<72>id<69>- <20> (ID: <20>)
zSuccessfully listed z calendars for user: <20>An API error occurred for user <20>: zAn API error occurred: <20>$. You might need to re-authenticate.z9An unexpected error occurred while listing calendars for <20>An unexpected error occurred: )rrr<00>debugrrr<00>validr'r r<00> calendarList<73>list<73>execute<74>get<65>len<65>stripr<00> exception) rrr*rr<00>service<63> calendar_listr8<00>outputr4r9<00>cal_idrs r<00>list_calendarsrOrsA<00><00><><00> <0B>K<EFBFBD>K<EFBFBD>9<>'<27><19>C<>D<>%<25> &<26>F<EFBFBD>
<EFBFBD>L<EFBFBD>L<EFBFBD>9<>'<27><19>*<2A>V<EFBFBD>H<EFBFBD>U<>V<>1<>%<25>g<EFBFBD>v<EFBFBD>K_<4B>`<60> <0B><0E> <0C> <0C>1<>+<2B><1D>?<3F>@<40>
<17>k<EFBFBD>/<2F>/<2F><0E><0E><0E>B<>7<EFBFBD>)<29>L<>M<> ?<3F>%<25>g<EFBFBD>v<EFBFBD>6<>F<EFBFBD><19>M<EFBFBD>
4<><17>
<EFBFBD>D<EFBFBD>k<EFBFBD>B<><07><0E> <0B> <0B>D<>W<EFBFBD>I<EFBFBD>N<>O<><1F>,<2C>,<2C>.<2E>3<>3<>5<>=<3D>=<3D>?<3F> <0A><1D>!<21>!<21>'<27>2<EFBFBD>.<2E><05><14>D<>?<3F><06><1D>H<EFBFBD><1E>l<EFBFBD>l<EFBFBD>9<EFBFBD>l<EFBFBD>;<3B>G<EFBFBD><1D>d<EFBFBD>^<5E>F<EFBFBD> <12><02>7<EFBFBD>)<29>6<EFBFBD>&<26><18><13>5<> 5<>F<EFBFBD><1E> <0F> <0B> <0B>*<2A>3<EFBFBD>u<EFBFBD>:<3A>,<2C>6K<36>G<EFBFBD>9<EFBFBD>U<>V<><15>|<7C>|<7C>~<7E><1D><>= <15>1<><0E> <0C> <0C>2<>1<EFBFBD>#<23>6<>7<>,<2C>Q<EFBFBD>C<EFBFBD>0<>0<><30>1<><31><19> ?<3F> <12>L<EFBFBD>L<EFBFBD>6<>q<EFBFBD>c<EFBFBD>:<3A> ;<3B>:<3A>1<EFBFBD>#<23>><3E> ><3E><> ?<3F><>, <15>U<01><0E> <0C> <0C>6<>w<EFBFBD>i<EFBFBD>r<EFBFBD>%<25><17>I<>J<>(<28><15><07>/S<>T<>T<><54> <14>4<><0E><18><18>T<>U\<5C>T]<5D>]_<>`a<>_b<5F>c<>d<>/<2F><01>s<EFBFBD>3<>3<><33>4<>s<EFBFBD><00>;H/<01>&E!<00>$&H/<01> F<00>H/<01>A&G<00>H/<01>AG<00> H/<01>! F<03>*F <03>F<03>H/<01> F<03>H/<01> G<03>F?<03>9G<03>:H/<01>?G<03>H/<01> H,<03> G6<03>0H,<03>1H/<01>6 H,<03>H'<03>!H,<03>"H/<01>'H,<03>,H/<01> calendar_id<69>time_min<69>time_max<61> max_resultsc<00><00><>K<00>tjd|<00>d|<01><00><04>tg} t||d<03><04>}tj d|<06><00><02>|r |j
s'tj d|<00><00><02> t||<05>}|S td d |<06><0E>} tjd|<00><00><02>|<02>Itjj<00>j<00>dz}
|
}tjd|<02><00><02>| j<00>j||||dd<13><14>j!<00>} | j#dg<00>} | sd|<01>d<17>Sd|<01>d<19>} | D]<5D>}|dj#d|dj#d<1C><00>}|dj#d|dj#d<1C><00>}|j#dd<1F>}|d }|j#d!d"<22>}| d#|<11>d$|<12>d%<25>z } | d&|<0F>d'<27>z } | d(|<10>d'<27>z } | d)|<13>d'<27>z } <0A><>tjd*t%| <0C><00>d+|<00>d|<01><00><06>| j'<00>S#t$r'}tjd|<08><00><02>d|<08><00>cYd }~Sd }~wwxYw#t$r'}tjd
|<08><00><02>d |<08><00>cYd }~Sd }~wwxYw#t($r+}tjd,|<00>d-|<14><00><04>d.|<14>d/<2F>cYd }~Sd }~wt$r*}tj+d0|<00>d1|<08><00><04>d2|<08><00>cYd }~Sd }~wwxYw<01>w)3a<33>
Lists events from a specified Google Calendar within a given time range.
Args:
user_id: The unique identifier (e.g., email address) for the user.
calendar_id: The ID of the calendar to fetch events from. Defaults to 'primary'.
time_min: The start time for the event query (RFC3339 format, e.g., '2025-04-27T10:00:00-04:00').
Defaults to the current time if not provided.
time_max: The end time for the event query (RFC3339 format). Optional.
max_results: The maximum number of events to return. Defaults to 25.
Returns:
A string listing the events or an authentication prompt.
z#Attempting to get events for user: <20> , calendar: r!r-r.r1r2r3Nr/r0r4r5r6r7<00>Zz%Defaulting time_min to current time: T<> startTime)<06>
calendarId<EFBFBD>timeMin<69>timeMax<61>
maxResults<EFBFBD> singleEvents<74>orderByr8z&No upcoming events found in calendar 'z'.z+Here are the upcoming events for calendar 'z':
<EFBFBD>start<72>dateTime<6D>date<74>endr9zNo Titler:<00>location<6F>N/Ar;r<r=z Start: <20>
z End: z Location: zSuccessfully retrieved z events for user: r>z getting events: z-An API error occurred while fetching events: r@z6An unexpected error occurred while getting events for r?rA)rrrrrBrCr'r rrr<00>datetime<6D>utcnow<6F> isoformat<61>eventsrErFrGrHrIrrJ)rrPrQrRrSrr*rrrK<00>now<6F> events_resultrhrM<00>eventr^rar9<00>event_idrbrs r<00>
get_eventsrm<00>sH<00><00><><00>, <0B>K<EFBFBD>K<EFBFBD>5<>g<EFBFBD>Y<EFBFBD>l<EFBFBD>;<3B>-<2D>X<>Y<>%<25> &<26>F<EFBFBD>1<>%<25>g<EFBFBD>v<EFBFBD>K_<4B>`<60> <0B><0E> <0C> <0C>1<>+<2B><1D>?<3F>@<40><1A>+<2B>"3<>"3<> <12>N<EFBFBD>N<EFBFBD>F<>w<EFBFBD>i<EFBFBD>P<> Q<> C<01>)<29>'<27>6<EFBFBD>:<3A><06><1D> <0A> #4<>,4<><17>
<EFBFBD>D<EFBFBD>k<EFBFBD>B<><07><0E> <0B> <0B>D<>W<EFBFBD>I<EFBFBD>N<>O<> <14> <1B><1A>#<23>#<23>*<2A>*<2A>,<2C>6<>6<>8<>3<EFBFBD>><3E>C<EFBFBD><1A>H<EFBFBD> <12>K<EFBFBD>K<EFBFBD>?<3F><08>z<EFBFBD>J<> K<><1F><0E><0E>(<28>-<2D>-<2D>"<22><1C><1C>"<22><1D><1F> .<2E>
<EFBFBD> <12>'<27>)<29> <16><1F>"<22>"<22>7<EFBFBD>B<EFBFBD>/<2F><06><15>;<3B>K<EFBFBD>=<3D><02>K<> K<>><3E>{<7B>m<EFBFBD>4<EFBFBD>P<><06><1B>E<EFBFBD><19>'<27>N<EFBFBD>&<26>&<26>z<EFBFBD>5<EFBFBD><17>><3E>3E<33>3E<33>f<EFBFBD>3M<33>N<>E<EFBFBD><17><05>,<2C>"<22>"<22>:<3A>u<EFBFBD>U<EFBFBD>|<7C>/?<3F>/?<3F><06>/G<>H<>C<EFBFBD><1B>i<EFBFBD>i<EFBFBD> <09>:<3A>6<>G<EFBFBD><1C>T<EFBFBD>{<7B>H<EFBFBD><1C>y<EFBFBD>y<EFBFBD><1A>U<EFBFBD>3<>H<EFBFBD> <12><02>7<EFBFBD>)<29>6<EFBFBD>(<28><1A>3<EFBFBD>7<> 7<>F<EFBFBD> <12> <09>%<25><17><02>+<2B> +<2B>F<EFBFBD> <12> <09>#<23><15>b<EFBFBD>)<29> )<29>F<EFBFBD> <12> <0C>X<EFBFBD>J<EFBFBD>b<EFBFBD>1<> 1<>F<EFBFBD><1C> <0F> <0B> <0B>-<2D>c<EFBFBD>&<26>k<EFBFBD>]<5D>:L<>W<EFBFBD>I<EFBFBD>Ua<55>bm<62>an<61>o<>p<><15>|<7C>|<7C>~<7E><1D><>W<1D> C<01><16> <0C> <0C>:<3A>1<EFBFBD>#<23>><3E>?<3F>><3E>q<EFBFBD>c<EFBFBD>B<>B<><42> C<01><> <15>1<><0E> <0C> <0C>2<>1<EFBFBD>#<23>6<>7<>,<2C>Q<EFBFBD>C<EFBFBD>0<>0<><30>1<><31>T <15>k<01><0E> <0C> <0C>6<>w<EFBFBD>i<EFBFBD>?P<>QV<51>PW<50>X<>Y<>><3E>u<EFBFBD>g<EFBFBD>Ei<45>j<>j<><6A> <14>4<><0E><18><18>Q<>RY<52>QZ<51>Z\<5C>]^<5E>\_<>`<60>a<>/<2F><01>s<EFBFBD>3<>3<><33>4<>s<EFBFBD><00>#K1<01>A I<00>3 H#<00>K1<01>B=J <00>K1<01>C!J <00>"K1<01># I<03>,I<03>I<03> I<00> K1<01>I<03>I<00> J<03>J<03>;J<03><K1<01>J<03>K1<01> K.<03> J8<03>2K.<03>3K1<01>8 K.<03>K)<03>#K.<03>$K1<01>)K.<03>.K1r9<00>
start_time<EFBFBD>end_time<6D> descriptionrb<00> attendees<65>timezonec <00><00><>K<00>tjd|<00>d|<04><00><04>tg} t|| d<03><04>}
tj d|
<EFBFBD><00><02>|
r |
j
s(tj d|<00>d<07><03> t|| <09>} | S td d|
<EFBFBD><0F>} tjd|<00>d<11><03>|d|id|id<13>}|r||d<|r||d<|r|D<00>cgc]}d|i<01><02>c}|d<|r||dd<||dd<tj d|<0E><00><02>| j<00>j||<0E><1C>j<00>}|jdd<1E>}|jdd<1E>}tjd |<11>d!|<00><00><04>d"|<11>d#|<04>d$|<12><00>S#t$r'} tjd| <0C><00><02>d | <0C><00>cYd
} ~ Sd
} ~ wwxYw#t$r'} tjd | <0C><00><02>d | <0C><00>cYd
} ~ Sd
} ~ wwxYwcc}w#t$r+}tjd%|<00>d&|<13><00><04>d'|<13>d(<28>cYd
}~Sd
}~wt$r*} tj!d)|<00>d*| <0C><00><04>d+| <0C><00>cYd
} ~ Sd
} ~ wwxYw<01>w),a<>
Creates a new event in a specified Google Calendar.
Args:
user_id: The unique identifier (e.g., email address) for the user.
summary: The title of the event.
start_time: The start time of the event (RFC3339 format, e.g., '2025-04-28T10:00:00-04:00').
end_time: The end time of the event (RFC3339 format, e.g., '2025-04-28T11:00:00-04:00').
calendar_id: The ID of the calendar to create the event in. Defaults to 'primary'.
description: An optional description for the event.
location: An optional location for the event.
attendees: An optional list of email addresses for attendees.
timezone: The timezone for the event start/end times (e.g., "America/New_York").
If not provided, the calendar's default timezone might be used.
Returns:
A confirmation message or an authentication prompt.
z%Attempting to create event for user: rUr!r-r.r1z (write access needed)r2r3Nr/r0r4r5r6r7z (with write access)r_)r9r^rarprb<00>emailrqr^<00>timeZonerazCreating event with body: )rX<00>bodyr9rc<00>htmlLinkzSuccessfully created event 'z ' for user: zSuccessfully created event: 'z' in calendar 'z '.
Link: r>z creating event: z0An API error occurred while creating the event: z6. Ensure you have write permissions for this calendar.z6An unexpected error occurred while creating event for r?rA)rr<00>CALENDAR_EVENTS_SCOPErrBrCr'r rrrrh<00>insertrFrGrrJ)rr9rnrorPrprbrqrrrr*rrrK<00>
event_bodyrt<00> created_event<6E> event_summary<72>
event_linkrs r<00> create_eventr~s<><00><00><><00>< <0B>K<EFBFBD>K<EFBFBD>7<><07>y<EFBFBD> <0C>[<5B>M<EFBFBD>Z<>[<5B>#<23> $<24>F<EFBFBD>1<>%<25>g<EFBFBD>v<EFBFBD>K_<4B>`<60> <0B><0E> <0C> <0C>1<>+<2B><1D>?<3F>@<40><1A>+<2B>"3<>"3<> <12>N<EFBFBD>N<EFBFBD>F<>w<EFBFBD>i<EFBFBD>Oe<4F>f<> g<> C<01>*<2A>'<27>6<EFBFBD>:<3A><06><1D> <0A> #4<>-4<><17>
<EFBFBD>D<EFBFBD>k<EFBFBD>B<><07><0E> <0B> <0B>D<>W<EFBFBD>I<EFBFBD>Ma<4D>b<>c<><1F> <20>*<2A>-<2D><1E><08>)<29>
<EFBFBD>
<EFBFBD> <17>(3<>J<EFBFBD>}<7D> %<25> <13>%-<2D>J<EFBFBD>z<EFBFBD> "<22> <14>EN<45>&O<>Y<EFBFBD>E<EFBFBD><07><15>'7<>Y<EFBFBD>&O<>J<EFBFBD>{<7B> #<23> <13>.6<EFBFBD>J<EFBFBD>w<EFBFBD> <1F>
<EFBFBD> +<2B>,4<>J<EFBFBD>u<EFBFBD> <1D>j<EFBFBD> )<29><0E> <0C> <0C>1<>*<2A><1C>><3E>?<3F><1F><0E><0E>(<28>/<2F>/<2F>"<22><1B>0<>
<EFBFBD> <12>'<27>)<29> <16>
&<26>)<29>)<29>)<29>U<EFBFBD>;<3B> <0A>"<22>&<26>&<26>z<EFBFBD>5<EFBFBD>9<>
<EFBFBD><0E> <0B> <0B>2<>=<3D>/<2F><1C>g<EFBFBD>Y<EFBFBD>W<>X<>,<2C>M<EFBFBD>?<3F>/<2F>+<2B><1D>W<15><1F>L<EFBFBD> "<22>
<EFBFBD><EFBFBD>O<1D> C<01><16> <0C> <0C>:<3A>1<EFBFBD>#<23>><3E>?<3F>><3E>q<EFBFBD>c<EFBFBD>B<>B<><42> C<01><> <15>1<><0E> <0C> <0C>2<>1<EFBFBD>#<23>6<>7<>,<2C>Q<EFBFBD>C<EFBFBD>0<>0<><30>1<><31>&'P<01><>, <15>@<02><0E> <0C> <0C>6<>w<EFBFBD>i<EFBFBD>?P<>QV<51>PW<50>X<>Y<>A<>%<25><17>H~<7E><><><7F> <14>4<><0E><18><18>Q<>RY<52>QZ<51>Z\<5C>]^<5E>\_<>`<60>a<>/<2F><01>s<EFBFBD>3<>3<><33>4<>s<EFBFBD><00>#I<01>A F0<00>4 E=<00>I<01>AG(<00> G#<04>B(G(<00><I<01>= F-<03>F(<03>"F-<03>#F0<00>'I<01>(F-<03>-F0<00>0 G <03>9G<03>G <03>I<01>G <03> I<01>#G(<00>( I <03>1 H<03>I <03>I<01> I <03>#I<03>I <03>I<01>I <03> I)<04>primaryNN<4E>)rNNNN)%re<00>logging<6E>typingrr<00>google.oauth2.credentialsr<00>googleapiclient.discoveryr<00>googleapiclient.errorsr<00>auth.google_authrr r
<00>auth.oauth_managerr r r <00> core.serverrrrx<00> basicConfig<69>INFO<46> getLogger<65>__name__r<00>tool<6F>strrrr+rO<00>intrmr~<00><00>r<00><module>r<>s/<00><01><0F><0E>!<21>1<>+<2B>,<2C>S<>S<>S<>S<><1E>N<01><17>I<><15><14><07><13><13>'<27>,<2C>,<2C>'<27> <1A><17> <1A> <1A>8<EFBFBD> $<24><06> <0A><16><1B><1B><1D>6<>c<EFBFBD>6<>c<EFBFBD>6<><0F>6<>4 <0A><16><1B><1B><1D>=<3D>s<EFBFBD>=<3D>s<EFBFBD>=<3D><0F>=<3D>( <0A><16><1B><1B><1D>(9<><13>(9<>#<23>(9<>#<23>(9<><0F>(9<>R <0A><16><1B><1B><1D>64<>#<23>64<>#<23>64<><0F>64<>n <0A><16><1B><1B><1D>!<21>"<22>"<22><19> T4<> <10>T4<><14>T4<><17>s<EFBFBD>m<EFBFBD>T4<><17>s<EFBFBD>m<EFBFBD> T4<>
<15> T4<>  <09> T4<><0F>T4<>n <0A><16><1B><1B><1D> !<21>!%<25>"<22>%)<29>"<22>_4<> <10>_4<> <10>_4<><14>_4<><12> _4<>
<15> _4<> <1A>#<23><1D> _4<><17>s<EFBFBD>m<EFBFBD>_4<><18><04>S<EFBFBD> <09>"<22>_4<><17>s<EFBFBD>m<EFBFBD>_4<> <09>_4<><0F>_4r<34>