intellecton/venv/lib/python3.12/site-packages/matplotlib/__pycache__/textpath.cpython-312.pyc

162 lines
16 KiB
Text
Raw Normal View History

<EFBFBD>
<00>Rj<>3<00><00><><00>ddlmZddlZddlZddlZddlmZm Z ddl
m Z m Z m ZddlmZddlmZddlmZddlmZdd lmZej2e<1A>ZGd
<EFBFBD>d <0B>Ze<1C>ZGd <0C>d e<14>Zy)<0E>)<01> OrderedDictN)<02> _text_helpers<72>dviread)<03>FontProperties<65>get_font<6E> fontManager)<01> LoadFlags)<01>MathTextParser)<01>Path)<01>
TexManager)<01>Affine2Dc<00>r<00>eZdZdZdZdZd<04>Zd<05>Zd<06>Zd<07>Z d<08>Z
dd <09>Z dd <0B>Z dd <0C>Z dd <0A>Zed<0E><00>Zy
)<11>
TextToPathz'A class that converts strings to paths.gY@<40>Hc<00>2<00>td<01>|_d|_y)N<>path)r
<00>mathtext_parser<65> _texmanager<65><01>selfs <20>V/home/antigravity/intellecton/venv/lib/python3.12/site-packages/matplotlib/textpath.py<70>__init__zTextToPath.__init__s<00><00>-<2D>f<EFBFBD>5<><04><1C><1F><04><18>c<00><><00>tj|<01>}t|<02>}|j|j|j
<00>|S)zX
Find the `FT2Font` matching font properties *prop*, with its size set.
)<06> _fontManager<65>_find_fonts_by_propsr<00>set_size<7A>
FONT_SCALE<EFBFBD>DPI)r<00>prop<6F> filenames<65>fonts r<00> _get_fontzTextToPath._get_fonts9<00><00>!<21>5<>5<>d<EFBFBD>;<3B> <09><17> <09>"<22><04> <0C> <0A> <0A>d<EFBFBD>o<EFBFBD>o<EFBFBD>t<EFBFBD>x<EFBFBD>x<EFBFBD>0<><13> rc<00>"<00>tjS)N)r <00>
NO_HINTINGrs r<00>_get_hinting_flagzTextToPath._get_hinting_flag's<00><00><18>#<23>#<23>#rc<00>`<00>tjj|j<00>d|d<02><04><03>S)zO
Return a unique id for the given font and character-code set.
<20>-<2D>x)<04>urllib<69>parse<73>quote<74>postscript_name)rr"<00>ccodes r<00> _get_char_idzTextToPath._get_char_id*s-<00><00><16>|<7C>|<7C>!<21>!<21>T<EFBFBD>%9<>%9<>$:<3A>!<21>E<EFBFBD>!<21>9<EFBFBD>"E<>F<>Frc<00><00>|j<00>}|dk(rt<00>j||<04>S||jz }|rZ|j <00>}|j |j<00>|j j|d|<02>^}}}} ||z||z||zfS|j|<02>}
|
j|dtj<00><04>|
j<00>\} } | dz} | dz} |
j<00>} | dz} | |z| |z| |zfS)N<>TeXrg<00><01>flagsgP@)<0E>get_size_in_pointsr <00>get_text_width_height_descentr<00>copyrrr+r#<00>set_textr r%<00>get_width_height<68> get_descent)r<00>sr <00>ismath<74>fontsize<7A>scale<6C>width<74>height<68>descent<6E>_r"<00>w<>h<>ds rr5z(TextToPath.get_text_width_height_descent0s<00><00><17>*<2A>*<2A>,<2C><08> <11>U<EFBFBD>?<3F><1D><<3C>=<3D>=<3D>a<EFBFBD><18>J<> J<><18>4<EFBFBD>?<3F>?<3F>*<2A><05> <11><17>9<EFBFBD>9<EFBFBD>;<3B>D<EFBFBD> <10>M<EFBFBD>M<EFBFBD>$<24>/<2F>/<2F> *<2A><14>$<24>$<24>*<2A>*<2A>1<EFBFBD>b<EFBFBD>$<24>7<> '<27>E<EFBFBD>6<EFBFBD>7<EFBFBD>Q<EFBFBD><18>5<EFBFBD>=<3D>&<26>5<EFBFBD>.<2E>'<27>E<EFBFBD>/<2F>A<> A<><13>~<7E>~<7E>d<EFBFBD>#<23><04> <0C> <0A> <0A>a<EFBFBD><13>I<EFBFBD>$8<>$8<> <0A>9<><13>$<24>$<24>&<26><04><01>1<EFBFBD> <09>T<EFBFBD> <09><01> <09>T<EFBFBD> <09><01> <10> <1C> <1C> <1E><01> <09>T<EFBFBD> <09><01><10>5<EFBFBD>y<EFBFBD>!<21>e<EFBFBD>)<29>Q<EFBFBD><15>Y<EFBFBD>.<2E>.rc<00><><00>|dk(r|j||<02>\}}}n@|s(|j|<01>}|j||<02>\}}}n|j||<02>\}}}gg} }|D]9\}
} } } ||
\}}|j || z| | gz<00>| j |<0F><00>;|D]'\}}|j |<0E>| j |<0F><00>)|st j d<02>}|| fS)a<>
Convert text *s* to path (a tuple of vertices and codes for
matplotlib.path.Path).
Parameters
----------
prop : `~matplotlib.font_manager.FontProperties`
The font properties for the text.
s : str
The text to be converted.
ismath : {False, True, "TeX"}
If True, use mathtext parser. If "TeX", use tex for rendering.
Returns
-------
verts : list
A list of arrays containing the (x, y) coordinates of the vertices.
codes : list
A list of path codes.
Examples
--------
Create a list of vertices and codes from a text, and create a `.Path`
from those::
from matplotlib.path import Path
from matplotlib.text import TextToPath
from matplotlib.font_manager import FontProperties
fp = FontProperties(family="Comic Neue", style="italic")
verts, codes = TextToPath().get_text_path(fp, "ABC")
path = Path(verts, codes, closed=False)
Also see `TextPath` for a more direct way to create a path from a text.
r1)r<00>)<07>get_glyphs_texr#<00>get_glyphs_with_font<6E>get_glyphs_mathtext<78>extend<6E>np<6E>empty)rr r:r;<00>
glyph_info<EFBFBD> glyph_map<61>rectsr"<00>verts<74>codes<65>glyph_id<69> xposition<6F> ypositionr=<00>verts1<73>codes1s r<00> get_text_pathzTextToPath.get_text_pathHs<00><00>H <12>U<EFBFBD>?<3F>+/<2F>+><3E>+><3E>t<EFBFBD>Q<EFBFBD>+G<> (<28>J<EFBFBD> <09>5<EFBFBD><17><17>><3E>><3E>$<24>'<27>D<EFBFBD>+/<2F>+D<>+D<>T<EFBFBD>1<EFBFBD>+M<> (<28>J<EFBFBD> <09>5<EFBFBD>+/<2F>+C<>+C<>D<EFBFBD>!<21>+L<> (<28>J<EFBFBD> <09>5<EFBFBD><19>2<EFBFBD>u<EFBFBD><05>5?<3F> !<21> 1<>H<EFBFBD>i<EFBFBD><19>E<EFBFBD>&<26>x<EFBFBD>0<>N<EFBFBD>F<EFBFBD>F<EFBFBD> <11>L<EFBFBD>L<EFBFBD><16>%<25><1E>9<EFBFBD>i<EFBFBD>*@<40>@<40> A<> <11>L<EFBFBD>L<EFBFBD><16> <20> !<21>$<24> !<21>N<EFBFBD>F<EFBFBD>F<EFBFBD> <11>L<EFBFBD>L<EFBFBD><16> <20> <11>L<EFBFBD>L<EFBFBD><16> <20> !<21> <15><16>H<EFBFBD>H<EFBFBD>V<EFBFBD>$<24>E<EFBFBD><14>e<EFBFBD>|<7C>rNc<00><><00>|<03>
t<00>}|r t<00>}n|}g}g}tj||<01>D]}|j|jt |j <00><00>} |j| <09>|j|j<00>| |vs<01>c|jj<00>|| <<00><>dgt|<06>z}
dgt|<06>z} g} tt|||
| <0B><00>|| fS)zW
Convert string *s* to vertices and codes using the provided ttf font.
rg<00>?) rr<00>layoutr/<00> ft_object<63>ord<72>char<61>appendr)<00>get_path<74>len<65>list<73>zip) rr"r:rN<00>return_new_glyphs_only<6C> glyph_map_new<65>
xpositions<EFBFBD> glyph_ids<64>item<65>char_id<69>
ypositions<EFBFBD>sizesrOs rrHzTextToPath.get_glyphs_with_font<6E>s<><00><00> <15> <1C>#<23> <0A>I<EFBFBD> !<21>'<27>M<EFBFBD>M<EFBFBD>%<25>M<EFBFBD><17>
<EFBFBD><16> <09>!<21>(<28>(<28><11>D<EFBFBD>1<> C<01>D<EFBFBD><1A>'<27>'<27><04><0E><0E><03>D<EFBFBD>I<EFBFBD>I<EFBFBD><0E>G<>G<EFBFBD> <15> <1C> <1C>W<EFBFBD> %<25> <16> <1D> <1D>d<EFBFBD>f<EFBFBD>f<EFBFBD> %<25><16>i<EFBFBD>'<27>)-<2D><1E><1E>)@<40>)@<40>)B<> <0A>g<EFBFBD>&<26>  C<01><18>S<EFBFBD>3<EFBFBD>z<EFBFBD>?<3F>*<2A>
<EFBFBD><13><04>s<EFBFBD>:<3A><EFBFBD>&<26><05><12><05><14>S<EFBFBD><19>J<EFBFBD>
<EFBFBD>E<EFBFBD>B<>C<><1D>u<EFBFBD>&<26> &rc<00>"<00>|j<00>}|j|j<00>|jj ||j
|<01>\}}}}} |s
t <00>}|r t <00>}
n|}
g} g} g} g}|D]<5D>\}}}}}|j||<11>}||vrj|j<00>|j|j|j
<00>|j|tj<00><01>|j<00>|
|<| j|<12>| j|<13>| j|<14>||jz }|j|<15><00><>g}| D]<5D>\}}}}||f|||zf||z||zf||z|f||fdg}tjtj tj tj tj tj"g}|j||f<02><00><>t%t'| | | |<0E><00>|
|fS)zW
Parse mathtext string *s* and convert it to a (vertices, codes) pair.
r2<00>rr)r6rrrr+rrr/<00>clear<61> load_charr r%r^r]r <00>MOVETO<54>LINETO<54> CLOSEPOLYr`ra)rr r:rNrbr>r?r@<00>glyphsrOrcrdrhrerir"r<r.<00>ox<6F>oyrg<00>size<7A>myrectsrBrC<00>vert1<74>code1s rrIzTextToPath.get_glyphs_mathtext<78>s<><00><00> <14>y<EFBFBD>y<EFBFBD>{<7B><04> <0C> <0A> <0A>d<EFBFBD>o<EFBFBD>o<EFBFBD>&<26>04<30>0D<30>0D<30>0J<30>0J<30> <0A>t<EFBFBD>x<EFBFBD>x<EFBFBD><14>1<1F>-<2D><05>v<EFBFBD>w<EFBFBD><06><05><19>#<23> <0A>I<EFBFBD> !<21>'<27>M<EFBFBD>M<EFBFBD>%<25>M<EFBFBD><17>
<EFBFBD><17>
<EFBFBD><16> <09><12><05>-3<> <1F> )<29>D<EFBFBD>(<28>E<EFBFBD>2<EFBFBD>r<EFBFBD><1A>'<27>'<27><04>e<EFBFBD>4<>G<EFBFBD><16>i<EFBFBD>'<27><14>
<EFBFBD>
<EFBFBD> <0C><14> <0A> <0A>d<EFBFBD>o<EFBFBD>o<EFBFBD>t<EFBFBD>x<EFBFBD>x<EFBFBD>8<><14><0E><0E>u<EFBFBD>I<EFBFBD>,@<40>,@<40><0E>A<>)-<2D><1D><1D><1F> <0A>g<EFBFBD>&<26> <16> <1D> <1D>b<EFBFBD> !<21> <16> <1D> <1D>b<EFBFBD> !<21> <15> <1C> <1C>W<EFBFBD> %<25><1B>d<EFBFBD>o<EFBFBD>o<EFBFBD>-<2D>D<EFBFBD> <11>L<EFBFBD>L<EFBFBD><14> <1E> <1F><15><07>!<21> +<2B>L<EFBFBD>B<EFBFBD><02>A<EFBFBD>q<EFBFBD><18>"<22>X<EFBFBD><02>B<EFBFBD><11>F<EFBFBD>|<7C>b<EFBFBD>1<EFBFBD>f<EFBFBD>b<EFBFBD>1<EFBFBD>f<EFBFBD>-=<3D><18>1<EFBFBD>f<EFBFBD>b<EFBFBD>\<5C>B<EFBFBD><02>8<EFBFBD>V<EFBFBD>5<>E<EFBFBD><19>[<5B>[<5B><19>[<5B>[<5B>$<24>+<2B>+<2B>t<EFBFBD>{<7B>{<7B>D<EFBFBD>K<EFBFBD>K<EFBFBD><19>^<5E>^<5E>%<25>E<EFBFBD> <14>N<EFBFBD>N<EFBFBD>E<EFBFBD>5<EFBFBD>><3E> *<2A>  +<2B><15>S<EFBFBD><19>J<EFBFBD>
<EFBFBD>E<EFBFBD>B<>C<><1D>w<EFBFBD>(<28> (rc<00><><00>t<00>j||j<00>}tj||j
<00>5}|\}ddd<01>|<03>
t <00>}|r t <00>}n|}ggggf\} }
} } jD<00>]<5D>} t| j<00>}|j|| j<00>}||vr<>|j<00>|j|j|j
<00>| j}t|t <00>r3|j#|<10>}|j%|t&j(<00><02>nQt|t*<00>r3|j-|<0E>|j/|t&j(<00><02>nt1d|<10><02><02><00>|j3<00>||<| j5|<0F>|
j5| j6<00>| j5| j8<00>| j5| j:|jz <00><00><01><>g}|j<D]<5D>\}}}}||f||z|f||z||zf|||zf||fdg}t>j@t>jBt>jBt>jBt>jBt>jDg}|j5||f<02><00><>tGtI| |
| | <0C><00>||fS#1swY<00><02><>xYw)z?Convert the string *s* to vertices and codes using usetex mode.Nr2zGlyph spec of unexpected type: rk)%r <00>make_dvirr<00>Dvirr<00>textr<00> font_pathr/<00>glyphrlr<00>glyph_name_or_index<65>
isinstance<EFBFBD>str<74>get_name_index<65>
load_glyphr <00> TARGET_LIGHT<48>int<6E>_select_native_charmaprm<00> TypeErrorr^r]r)<00>y<> font_size<7A>boxesr rnrorpr`ra)rr r:rNrb<00>dvifile<6C>dvi<76>pagercrerdrhrir{r"rgr~<00>indexrurrrsrCrBrvrws rrGzTextToPath.get_glyphs_tex<65>s<><00><00>
<1D>,<2C>'<27>'<27><01>4<EFBFBD>?<3F>?<3F>;<3B><07> <14>[<5B>[<5B><17>$<24>(<28>(<28> +<2B> <18>s<EFBFBD><17>E<EFBFBD>D<EFBFBD> <18> <15> <1C>#<23> <0A>I<EFBFBD> !<21>'<27>M<EFBFBD>M<EFBFBD>%<25>M<EFBFBD>35<33>r<EFBFBD>2<EFBFBD>r<EFBFBD>><3E>0<> <09>:<3A>z<EFBFBD>5<EFBFBD><19>I<EFBFBD>I<EFBFBD> ;<3B>D<EFBFBD><1B>D<EFBFBD>N<EFBFBD>N<EFBFBD>+<2B>D<EFBFBD><1A>'<27>'<27><04>d<EFBFBD>j<EFBFBD>j<EFBFBD>9<>G<EFBFBD><16>i<EFBFBD>'<27><14>
<EFBFBD>
<EFBFBD> <0C><14> <0A> <0A>d<EFBFBD>o<EFBFBD>o<EFBFBD>t<EFBFBD>x<EFBFBD>x<EFBFBD>8<>&*<2A>&><3E>&><3E>#<23><1D>1<>3<EFBFBD>7<> <20>/<2F>/<2F>0C<30>D<>E<EFBFBD><18>O<EFBFBD>O<EFBFBD>E<EFBFBD><19>1G<31>1G<31>O<EFBFBD>H<><1F> 3<>S<EFBFBD>9<><18>/<2F>/<2F><04>5<><18>N<EFBFBD>N<EFBFBD>+<2B>9<EFBFBD>3I<33>3I<33>#<23>K<01>$<24>&E<>':<3A>&=<3D>%?<3F>@<01>@<01>)-<2D><1D><1D><1F> <0A>g<EFBFBD>&<26> <15> <1C> <1C>W<EFBFBD> %<25> <16> <1D> <1D>d<EFBFBD>f<EFBFBD>f<EFBFBD> %<25> <16> <1D> <1D>d<EFBFBD>f<EFBFBD>f<EFBFBD> %<25> <11>L<EFBFBD>L<EFBFBD><14><1E><1E>$<24>/<2F>/<2F>9<> :<3A>- ;<3B>0<15><07> <20>J<EFBFBD>J<EFBFBD> +<2B>L<EFBFBD>B<EFBFBD><02>A<EFBFBD>q<EFBFBD><18>"<22>X<EFBFBD><02>Q<EFBFBD><06><02>|<7C>b<EFBFBD>1<EFBFBD>f<EFBFBD>b<EFBFBD>1<EFBFBD>f<EFBFBD>-=<3D><18>"<22>q<EFBFBD>&<26>\<5C>B<EFBFBD><02>8<EFBFBD>V<EFBFBD>5<>E<EFBFBD><19>[<5B>[<5B><19>[<5B>[<5B>$<24>+<2B>+<2B>t<EFBFBD>{<7B>{<7B>D<EFBFBD>K<EFBFBD>K<EFBFBD><19>^<5E>^<5E>%<25>E<EFBFBD> <14>N<EFBFBD>N<EFBFBD>E<EFBFBD>5<EFBFBD>><3E> *<2A>  +<2B><15>S<EFBFBD><19>J<EFBFBD>
<EFBFBD>E<EFBFBD>B<>C<><1D>w<EFBFBD>(<28> (<28>c <18> <18>s <00>K<03>K!c<00><><00>dD]} |j|<01>ytj d|j
<00>y#ttf$rY<00>JwxYw)N)iCBDAiBODAz#No supported encoding in font (%s).)<06>select_charmap<61>
ValueError<EFBFBD> RuntimeError<6F>_log<6F>warning<6E>fname)r"<00> charmap_codes rr<>z!TextToPath._select_native_charmaps[<00><00>
<EFBFBD> L<01>L<EFBFBD> <16><14>#<23>#<23>L<EFBFBD>1<><16> L<01> <11>L<EFBFBD>L<EFBFBD>><3E><04>
<EFBFBD>
<EFBFBD> K<><4B> <1F> <0C>-<2D> <15><14> <15>s<00><<02>A<05> A)F)NF)<11>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__rrrr#r&r/r5rWrHrIrG<00> staticmethodr<64><00>rrrrsn<00><00>1<><15>J<EFBFBD>
<0C>C<EFBFBD> <20><14>$<24>G<01> /<2F>0:<1C>x7;<3B>49<34>&<26>>6:<3A>38<33>1(<28>f15<31>.3<EFBFBD>8(<28>t<12>L<01><12>Lrrc<00>Z<00><00>eZdZdZ d<08>fd<02> Zd<03>Zd<04>Zed<05><00>Zed<06><00>Z d<07>Z
<EFBFBD>xZ S) <09>TextPathz&
Create a path from the text.
c<00>.<00><01>ddlm}tj|<04>}|<03>|j <00>}||_|j |<03>d|_||<06><04>j|<02>\}}t<00> |<00>(tj|||<08><05>|dd<07><02>d|_ y) a
Create a path from the text. Note that it simply is a path,
not an artist. You need to use the `.PathPatch` (or other artists)
to draw this path onto the canvas.
Parameters
----------
xy : tuple or array of two float values
Position of the text. For no offset, use ``xy=(0, 0)``.
s : str
The text to convert to a path.
size : float, optional
Font size in points. Defaults to the size specified via the font
properties *prop*.
prop : `~matplotlib.font_manager.FontProperties`, optional
Font property. If not provided, will use a default
`.FontProperties` with parameters from the
:ref:`rcParams<customizing-with-dynamic-rc-settings>`.
_interpolation_steps : int, optional
(Currently ignored)
usetex : bool, default: False
Whether to use tex rendering.
Examples
--------
The following creates a path from the string "ABC" with Helvetica
font face; and another path from the latex fraction 1/2::
from matplotlib.text import TextPath
from matplotlib.font_manager import FontProperties
fp = FontProperties(family="Helvetica", style="italic")
path1 = TextPath((12, 12), "ABC", size=12, prop=fp)
path2 = TextPath((0, 0), r"$\frac{1}{2}$", size=12, usetex=True)
Also see :doc:`/gallery/text_labels_and_annotations/demo_text_path`.
r)<01>TextN)<01>usetex)r;T)<02>_interpolation_steps<70>readonlyF)<0E>matplotlib.textr<74>r<00> _from_anyr4<00>_xyr<00>_cached_vertices<65>_preprocess_math<74>superr<00> text_to_pathrW<00>_should_simplify)
r<00>xyr:rtr r<>r<>r<>r;<00> __class__s
<20>rrzTextPath.__init__*s<><00><><00>Z )<29><1D>'<27>'<27><04>-<2D><04> <0F><<3C><17>*<2A>*<2A>,<2C>D<EFBFBD><15><04><08> <0C> <0A> <0A>d<EFBFBD><1B> $<24><04><1D><18><06>'<27>8<>8<><11>;<3B> <09><01>6<EFBFBD> <0A><07><18> <19> '<27> '<27><04>a<EFBFBD><06> '<27> ?<3F>!5<><19> <1B>!&<26><04>rc<00> <00>||_d|_y)zSet the text size.TN)<02>_size<7A>_invalid)rrts rrzTextPath.set_sizehs<00><00><19><04>
<EFBFBD><1C><04> rc<00><00>|jS)zGet the text size.)r<>rs r<00>get_sizezTextPath.get_sizems <00><00><13>z<EFBFBD>z<EFBFBD>rc<00>:<00>|j<00>|jS)zH
Return the cached path after updating it if necessary.
)<02>_revalidate_pathr<68>rs r<00>verticeszTextPath.verticesqs<00><00>
<0A><1D><1D><1F><13>$<24>$<24>$rc<00><00>|jS)z"
Return the codes
)<01>_codesrs rrQzTextPath.codesys<00><00>
<14>{<7B>{<7B>rc<00>P<00>|js |j<00><>t<00>j|jt
j z <00>j|j<00>}|j|j<00>|_d|jj_ d|_yy)z<>
Update the path if necessary.
The path for the text is initially create with the font size of
`.FONT_SCALE`, and this path is rescaled to other size when necessary.
NF) r<>r<>r r=r<>r<>r<00> translater<65><00> transform<72> _verticesr3<00> writeable)r<00>trs rr<>zTextPath._revalidate_path<74>s<><00><00> <10>=<3D>=<3D>D<EFBFBD>1<>1<>9<><1D>(<28>*<2A><18>5<EFBFBD><14><1A><1A>l<EFBFBD>&=<3D>&=<3D>=<3D>><3E><1C>9<EFBFBD>d<EFBFBD>h<EFBFBD>h<EFBFBD>(<28>B<EFBFBD>%'<27>L<EFBFBD>L<EFBFBD><14><1E><1E>$@<40>D<EFBFBD> !<21>49<34>D<EFBFBD> !<21> !<21> '<27> '<27> 1<>!<21>D<EFBFBD>M<EFBFBD> :r)NN<4E>F) r<>r<>r<>r<>rrr<><00>propertyr<79>rQr<><00> __classcell__)r<>s@rr<>r<>%sM<00><><00><08>/3<>05<30><&<26>|<1D>
<1A><0E>%<25><0E>%<25><0E><1B><0E><1B> "rr<>)<1F> collectionsr<00>logging<6E> urllib.parser*<00>numpyrK<00>
matplotlibrr<00>matplotlib.font_managerrrrr<00>matplotlib.ft2fontr <00>matplotlib.mathtextr
<00>matplotlib.pathr <00>matplotlib.texmanagerr <00>matplotlib.transformsr <00> getLoggerr<72>r<>rr<>r<>r<>rr<00><module>r<>sg<00><01>#<23><0E><13><12>-<2D><02><02>)<29>.<2E> <20>,<2C>*<2A><18>w<EFBFBD><18><18><18>"<22><04>KL<01>KL<01>\<1A>|<7C> <0C>h"<22>t<EFBFBD>h"r