JFIF     ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----  "       H    !1AQaq" 2B #R Tbr 3cs DS $C    %  !1AQa"23   ? p  Y  \?  p  Y  \?  0  [  i~T bq 8O p O O ` R i  < Ft I  8 Df  }  6  F y j h / : c "Y l> te:q \o e 󲍷 HT4& 6   7 i j|  >b  S?*  *h r U S炟[A a [   & j? +EzP We rJFt B  χ%#tE z O۫!1 ͏ % ] ( :@<  t + % Á h O J tM  >  w3Y 牋4Ǎ  T > = why ,  a ѪQ|%6  A %: j<>ɗ _ Cb  ݃|R c f溪 t.С T *Ŀ -{  czů _ ^X  miB[X d 1,  zE & 9g f 9 '.; i}! q ٤ё A   e"A$˝ s # x (l 3  5m! rt` 0~'j2 (]S kv, l JA J3E8 i :cɞ eZ \ k (79 : X & * . ( 2 Hi TF  [ R 䢍mg .  < S0  U f#V ;Ֆ P@3 o< - .L|k f 6@ eu | a Ɵ  >  ?cK 6 T Ɣ  sĤ ;H2 Rچ \ַ n' # I  % 7 qT 3I  5I7 ! O  $Tc [ ֳ ';A g A 2Z"i vd  .i ) ] & {V i .  ?h Mt  [ V( }=ibԡ b L􁥇piη_Z< z )i wi 2h 3 = d 8 1 c 7 7 \ ) } f pA L% c2  Qz ;T8s  q )QFM X ±N aF 8 !U  Z R PV in -G  ˊ z } F }Uw # 5B { } < D  &  Db M ."  * 'V | gll klz[ A b E dѻXx9 ܣ T/` vI ݵ ˂ G *  r|*}<  @ mĒM  . Y |6 U j qO kD 5 ;   G k \  = =S  S  p Qű ? 1ѕ Z ?h L l{Y*K ٛzc + - k % E A'} >< I bp /q voX w,\ 6Z[Xd @֗ $ J # >' <)4 ry٣| A n5 y  M 2{"}  l WX\l g O / B f [.P Zs * T܈ QN V ( *eՓ 5T F D [8'ҥa ڶk7a * 'ҷ\8 \@\  q+D r m΅_ 滊Ӝ R 9M D l lffc+ ,  Ǥ=Œ 7 /  + ,u M bm: P { Gz[ KH ` ؊  P8Aq.C  k pj k N q , N - {Z 44 s V R m" 6? D9 T  ꋇ`4 orqК Z x4 u f [P ,Q aX `P Z Y g A x 6L x  * Q  ϒ h = ,6 #r < , ꕀ a s '% " B H 3߰ $ Xn ֒ 2 Te x K { t Ϋ j Z[ 7L 4V CE ]m y 4-dz   x.*  b h: s`BT R g⻩ j sF J Fl ȕXᓁ ~*j +( 6- G y <ǒ . F H w(+) z T Fߘ ;DmV 3 u@m  X 3B   <· z, @ ŷd2] 8s I ޯ^ 9 u ~ A  4 M? K]  Pl@s_ p: ZR JC[CS.h ˜ ]  wR k7X k   =  ') 71 c ` .{ p j\ {1h{o  = U G֌ -B m+AZX H Jm ; 䡟   i g $ Mk5 L v ,=f "  5 x6{ɏ ID0e v mi'  9$ *£ 9 Tԅ >JV } }$p[bԮ*[jzS*8 T ͖ U wo$ =LT ~  $榍q + kFm) i qފ ( #5  ﯅ X *F#TXJ u JV &=i s1 3 'f  5 <=[ ޭ P ;  _~ģ 8r w; hDT > G 8 z  q ZcqJ - [ܘbň b 31 n i ;1 X , q $>  Z Z 1{  + յ T$ K] * tMI Zb iҘ}b 0 5 [5 ^ݜW h OWun 5 a2Z.G2 YL]j t   ӑ%" <  s UZv i M . V #k i ̖ ) T[)B xB B T . ~ @VĶr# * ZND H; i ], p ( T.uC 4@ G ) Cx 0 #: F bR\(  f 4މF HX , E ] v ?tL vBY 6 u5 AQ 1 x H Ї ^ KwJ ֎5 C  vܫ/B0$ k = b ( )w A 11 = Q 626 /`G <} - 7KEH  Ȥmݱ  Snm = 䫚mݱ ~ U J  B|E L y jD $G 7 R8 ҅Ǜ WVe# p Fx~ ݤF 0 K S<6 WШ; ʐ \ u  ݖVN k 7o X F  g M~ =p,X ŋ j . q Q ZE =6 ]  s >v ^ \wq9r \ kUR $ * Nq?Þ *!s :TU_u T+ X , BTs $؛4m椴z K] P @ # `  =I fiV  nRm+ FPOh 0B  + 5c v :P' y V~ ӆ u kDoh$ \* %Ю= aȼ .- V 'ly 1 3 # E S gV m = \ " WU Ǽ n G  N D õN ;H y ȩP {:?R Ԩ F  b JS | R iv 賴Iئ T! ت @q wn CW @JU m6] : x' + XvӦ m= 7 $ B ~ p%՟U N@  ~w 5  ' e 5 // ~ T  7 # p $ e * ӊE WE s g v SsLp W EW  H; !CY Z f #1W. \uW \,\ f j <qTb n [vxx  ' 1  M P H)  A7s,| F  k 9  * ; ! $Ei   S $ N z 5r D ! &@m ^ d q5Ln N;.6 N|# "1N x <3('& t ~ u 1Tb㫨9ꖛ b d$ߣ=#  mU e $EF 5ýY   Ǘ ssM] 0 JRӪ i +O58  x" \  i i M+M 9 A Q K~ Ñg ִ~ [3GU ҽ# k ԮҔ dWV IP 8u E  qLj  CB {A^ ; ` ˼ t  .tƐm*n y4o& x n aup j8 m !o ; 0y^ ^Eѿ jz )v nÄL ^  3k h ]i *  C j j zn  #b'F v ' 'T H %M & nj 1 i s R-  k  7: 0 /a٬ #  aiVc . 㵔 Yg f 7 h᷸ }&D9 s C bFC| ( -% 'a ̿)  n ގX 4 H^ Α @ Eh L8 j V R 5u V4lZ  = x    __yM1t ?u Ik g @ [ X J j :nkŢu } Gz /I 芬 48q F R = { R icS ۠ Nt £,w4r 쮻~x( U  # & դ>  9  {9eV [ j u] 2 qњ J 0 sÄ|  0튔b > { _F`ة :  ,v fc1 " n1#= v~H A  ܀Ӛ] ; I  Qi  9yw KG zQY Z07 X h; M)i CH- T |A0{  LږT  kܒd  rmm جPF cbE T x  K Ӯ7 (\4 øUu@j yĵ; ! b.W =m  K k K^ #p* 14qkZ 5  5 % <   ԥ C մ $ ֓ ]٬q [4 ! ϗ b쳐X A ~` r 8   < > ?xs / ;   {"@ z [ ߂ U_<ǟ 4 N 61 q u F J_  ~ A ݄ϗr D;xT `ɫ su O`? L # c5 o ؂y ZR <&J + i! 0 Ao L -2 W. t^ (K mH V@x  y  ^: 3w 7 ⹮:', M n + b Lȑ nR  % Q: f "P t  c l & ژ kv + v ,= v 6 Xy* t < : a ϲ= 6rO]XI zڭ 6 w\d ~v k ^m< \) ; l E cѾ@vnM ,  Bx  z %3 "}ٕ > B ; ]V+P F_ > ؚe| OmF  q $/x x z` 9 "  ij !7.\Td 9M i 50ގn 4 O * ^ Q 8=  s ' ٫ %P [O P V s . ,kc A9n X -ޚN[" QՉ M  XJ aLj m ڠu Q  / Ux: ܒ Đ 3V n 6 * K c U hs j j#, m R lb UT 8 0 r` Ї " 6 f oܱԷ-< ) a 'ڻ TXq Y Hy 9 IW Y uMF ϒAq 4 / 'i$ = | K 4 0 | 6p 0 )o ct H+CA- x | X l8  3 :  KX U /* * profile.h */ #ifndef _KRB5_PROFILE_H #define _KRB5_PROFILE_H #if defined(_WIN32) #include #endif #if defined(__MACH__) && defined(__APPLE__) # include # if TARGET_RT_MAC_CFM # error "Use KfM 4.0 SDK headers for CFM compilation." # endif #endif #ifndef KRB5_CALLCONV #define KRB5_CALLCONV #define KRB5_CALLCONV_C #endif typedef struct _profile_t *profile_t; /* Used by profile_init_flags(). */ #define PROFILE_INIT_ALLOW_MODULE 0x0001 /* Allow module declaration */ /* * Used by the profile iterator in prof_get.c */ #define PROFILE_ITER_LIST_SECTION 0x0001 #define PROFILE_ITER_SECTIONS_ONLY 0x0002 #define PROFILE_ITER_RELATIONS_ONLY 0x0004 #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef char* profile_filespec_t; /* path as C string */ typedef char* profile_filespec_list_t; /* list of : separated paths, C string */ typedef const char * const_profile_filespec_t; /* path as C string */ typedef const char * const_profile_filespec_list_t; /* list of : separated paths, C string */ long KRB5_CALLCONV profile_init (const_profile_filespec_t *files, profile_t *ret_profile); long KRB5_CALLCONV profile_init_flags (const_profile_filespec_t *files, int flags, profile_t *ret_profile); long KRB5_CALLCONV profile_init_path (const_profile_filespec_list_t filelist, profile_t *ret_profile); long KRB5_CALLCONV profile_flush (profile_t profile); long KRB5_CALLCONV profile_flush_to_file (profile_t profile, const_profile_filespec_t outfile); long KRB5_CALLCONV profile_flush_to_buffer (profile_t profile, char **bufp); void KRB5_CALLCONV profile_free_buffer (profile_t profile, char *buf); long KRB5_CALLCONV profile_is_writable (profile_t profile, int *writable); long KRB5_CALLCONV profile_is_modified (profile_t profile, int *modified); void KRB5_CALLCONV profile_abandon (profile_t profile); void KRB5_CALLCONV profile_release (profile_t profile); long KRB5_CALLCONV profile_get_values (profile_t profile, const char *const *names, char ***ret_values); void KRB5_CALLCONV profile_free_list (char **list); long KRB5_CALLCONV profile_get_string (profile_t profile, const char *name, const char *subname, const char *subsubname, const char *def_val, char **ret_string); long KRB5_CALLCONV profile_get_integer (profile_t profile, const char *name, const char *subname, const char *subsubname, int def_val, int *ret_default); long KRB5_CALLCONV profile_get_boolean (profile_t profile, const char *name, const char *subname, const char *subsubname, int def_val, int *ret_default); long KRB5_CALLCONV profile_get_relation_names (profile_t profile, const char **names, char ***ret_names); long KRB5_CALLCONV profile_get_subsection_names (profile_t profile, const char **names, char ***ret_names); long KRB5_CALLCONV profile_iterator_create (profile_t profile, const char *const *names, int flags, void **ret_iter); void KRB5_CALLCONV profile_iterator_free (void **iter_p); long KRB5_CALLCONV profile_iterator (void **iter_p, char **ret_name, char **ret_value); void KRB5_CALLCONV profile_release_string (char *str); long KRB5_CALLCONV profile_update_relation (profile_t profile, const char **names, const char *old_value, const char *new_value); long KRB5_CALLCONV profile_clear_relation (profile_t profile, const char **names); long KRB5_CALLCONV profile_rename_section (profile_t profile, const char **names, const char *new_name); long KRB5_CALLCONV profile_add_relation (profile_t profile, const char **names, const char *new_value); /* * profile_init_vtable allows a caller to create a profile-compatible object * with a different back end. */ /* * Mandatory: Look up all of the relations for names, placing the resulting * values in *ret_values. If no relations exist, return PROF_NO_RELATION, or * PROF_NO_SECTION to indicate that one of the intermediate names does not * exist as a section. The list will be freed with free_values. */ typedef long (*profile_get_values_fn)(void *cbdata, const char *const *names, char ***ret_values); /* Mandatory: Free a list of strings returned by get_values. */ typedef void (*profile_free_values_fn)(void *cbdata, char **values); /* Optional: Release any data associated with the profile. */ typedef void (*profile_cleanup_fn)(void *cbdata); /* * Optional (mandatory if cleanup is defined): Generate a new cbdata pointer * for a copy of the profile. If not implemented, the new profile will receive * the same cbdata pointer as the old one. */ typedef long (*profile_copy_fn)(void *cbdata, void **ret_cbdata); /* * Optional: Create an iterator handle. * * If flags contains PROFILE_ITER_LIST_SECTION, iterate over all of the * relations and sections within names. Otherwise, iterate over the relation * values for names, or produce a single section result if names is a section. * * If flags contains PROFILE_ITER_SECTIONS_ONLY, produce only sections. * * If flags contains PROFILE_ITER_RELATIONS_ONLY, produce only relations. */ typedef long (*profile_iterator_create_fn)(void *cbdata, const char *const *names, int flags, void **ret_iter); /* * Optional (mandatory if iterator_create is defined): Produce the next * relation or section in an iteration. If producing a section result, set * *ret_value to NULL. The returned strings will be freed with free_string. */ typedef long (*profile_iterator_fn)(void *cbdata, void *iter, char **ret_name, char **ret_value); /* * Optional (mandatory if iterator_create is defined): Free the memory for an * iterator. */ typedef void (*profile_iterator_free_fn)(void *cbdata, void *iter); /* Optional (mandatory if iterator is defined): Free a string value. */ typedef void (*profile_free_string_fn)(void *cbdata, char *string); /* * Optional: Determine if a profile is writable. If not implemented, the * profile is never writable. */ typedef long (*profile_writable_fn)(void *cbdata, int *writable); /* * Optional: Determine if a profile is modified in memory relative to the * persistent store. If not implemented, the profile is assumed to never be * modified. */ typedef long (*profile_modified_fn)(void *cbdata, int *modified); /* * Optional: Change the value of a relation, or remove it if new_value is NULL. * If old_value is set and the relation does not have that value, return * PROF_NO_RELATION. */ typedef long (*profile_update_relation_fn)(void *cbdata, const char **names, const char *old_value, const char *new_value); /* * Optional: Rename a section to new_name, or remove the section if new_name is * NULL. */ typedef long (*profile_rename_section_fn)(void *cbdata, const char **names, const char *new_name); /* * Optional: Add a new relation, or a new section if new_value is NULL. Add * any intermediate sections as necessary. */ typedef long (*profile_add_relation_fn)(void *cbdata, const char **names, const char *new_value); /* * Optional: Flush any pending memory updates to the persistent store. If * implemented, this function will be called by profile_release as well as * profile_flush, so make sure it's not inefficient to flush an unmodified * profile. */ typedef long (*profile_flush_fn)(void *cbdata); struct profile_vtable { int minor_ver; /* Set to structure minor version (currently 1) * if calling profile_init_vtable. */ /* Methods needed for a basic read-only non-iterable profile (cleanup is * optional). */ profile_get_values_fn get_values; profile_free_values_fn free_values; profile_cleanup_fn cleanup; profile_copy_fn copy; /* Methods for iterable profiles. */ profile_iterator_create_fn iterator_create; profile_iterator_fn iterator; profile_iterator_free_fn iterator_free; profile_free_string_fn free_string; /* Methods for writable profiles. */ profile_writable_fn writable; profile_modified_fn modified; profile_update_relation_fn update_relation; profile_rename_section_fn rename_section; profile_add_relation_fn add_relation; profile_flush_fn flush; /* End of minor version 1. */ }; /* * Create a profile object whose operations will be performed using the * function pointers in vtable. cbdata will be supplied to each vtable * function as the first argument. */ long KRB5_CALLCONV profile_init_vtable (struct profile_vtable *vtable, void *cbdata, profile_t *ret_profile); /* * Dynamically loadable profile modules should define a function named * "profile_module_init" matching the following signature. The function should * initialize the methods of the provided vtable structure, stopping at the * field corresponding to vtable->minor_ver. Do not change the value of * vtable->minor_ver. Unimplemented methods can be left uninitialized. The * function should supply a callback data pointer in *cb_ret; this pointer can * be cleaned up via the vtable cleanup method. */ typedef long (*profile_module_init_fn)(const char *residual, struct profile_vtable *vtable, void **cb_ret); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* _KRB5_PROFILE_H */ /* * et-h-prof_err.h: * This file is automatically generated; please do not edit it. */ #include #define PROF_VERSION (-1429577728L) #define PROF_MAGIC_NODE (-1429577727L) #define PROF_NO_SECTION (-1429577726L) #define PROF_NO_RELATION (-1429577725L) #define PROF_ADD_NOT_SECTION (-1429577724L) #define PROF_SECTION_WITH_VALUE (-1429577723L) #define PROF_BAD_LINK_LIST (-1429577722L) #define PROF_BAD_GROUP_LVL (-1429577721L) #define PROF_BAD_PARENT_PTR (-1429577720L) #define PROF_MAGIC_ITERATOR (-1429577719L) #define PROF_SET_SECTION_VALUE (-1429577718L) #define PROF_EINVAL (-1429577717L) #define PROF_READ_ONLY (-1429577716L) #define PROF_SECTION_NOTOP (-1429577715L) #define PROF_SECTION_SYNTAX (-1429577714L) #define PROF_RELATION_SYNTAX (-1429577713L) #define PROF_EXTRA_CBRACE (-1429577712L) #define PROF_MISSING_OBRACE (-1429577711L) #define PROF_MAGIC_PROFILE (-1429577710L) #define PROF_MAGIC_SECTION (-1429577709L) #define PROF_TOPSECTION_ITER_NOSUPP (-1429577708L) #define PROF_INVALID_SECTION (-1429577707L) #define PROF_END_OF_SECTIONS (-1429577706L) #define PROF_BAD_NAMESET (-1429577705L) #define PROF_NO_PROFILE (-1429577704L) #define PROF_MAGIC_FILE (-1429577703L) #define PROF_FAIL_OPEN (-1429577702L) #define PROF_EXISTS (-1429577701L) #define PROF_BAD_BOOLEAN (-1429577700L) #define PROF_BAD_INTEGER (-1429577699L) #define PROF_MAGIC_FILE_DATA (-1429577698L) #define PROF_FAIL_INCLUDE_FILE (-1429577697L) #define PROF_FAIL_INCLUDE_DIR (-1429577696L) #define PROF_UNSUPPORTED (-1429577695L) #define PROF_MAGIC_NODE_ITERATOR (-1429577694L) #define PROF_MODULE (-1429577693L) #define PROF_MODULE_SYNTAX (-1429577692L) #define PROF_MODULE_INVALID (-1429577691L) extern const struct error_table et_prof_error_table; extern void initialize_prof_error_table(void); /* For compatibility with Heimdal */ extern void initialize_prof_error_table_r(struct et_list **list); #define ERROR_TABLE_BASE_prof (-1429577728L) /* for compatibility with older versions... */ #define init_prof_err_tbl initialize_prof_error_table #define prof_err_base ERROR_TABLE_BASE_prof