grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 \Eã@sòdZddlZddlmZddlmZddlTdddd gZejj d ƒd d d gZ ejj dƒdddgZ dd„Z d+dd„Z d,dd„Zd-dd„Zd.dd„Zd/dd„Zd0dd„Zd1d d!„Zd2d"d#„Zd3d$d%„Zd4d&d„Zd5d'd„Zd(d)„Zed*k�rîeƒdS)6z dyld emulation éN)Úframework_info)Ú dylib_info)Ú*Ú dyld_findÚframework_findrrz~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libcCs.|dkrtj}|j|ƒ}|dkr$gS|jdƒS)Nú:)ÚosÚenvironÚgetÚsplit)ÚenvÚvarZrval©rú,/usr/lib64/python3.6/ctypes/macholib/dyld.pyÚdyld_envs  rcCs|dkrtj}|jdƒS)NZDYLD_IMAGE_SUFFIX)rr r )r rrrÚdyld_image_suffix'srcCs t|dƒS)NZDYLD_FRAMEWORK_PATH)r)r rrrÚdyld_framework_path,srcCs t|dƒS)NZDYLD_LIBRARY_PATH)r)r rrrÚdyld_library_path/srcCs t|dƒS)NZDYLD_FALLBACK_FRAMEWORK_PATH)r)r rrrÚdyld_fallback_framework_path2srcCs t|dƒS)NZDYLD_FALLBACK_LIBRARY_PATH)r)r rrrÚdyld_fallback_library_path5srcCs(t|ƒ}|dkr|S||fdd„}|ƒS)z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNcssJxD|D]<}|jdƒr2|dtdƒ …|dVn ||V|VqWdS)Nz.dylib)ÚendswithÚlen)ÚiteratorÚsuffixÚpathrrrÚ_inject=s    z)dyld_image_suffix_search.._inject)r)rr rrrrrÚdyld_image_suffix_search8s rccsdt|ƒ}|dk r6x$t|ƒD]}tjj||dƒVqWx(t|ƒD]}tjj|tjj|ƒƒVq@WdS)NÚname)rrrrÚjoinrÚbasename)rr Ú frameworkrrrrÚdyld_override_searchFs r!ccs2|jdƒr.|dk r.tjj||tdƒd…ƒVdS)Nz@executable_path/)Ú startswithrrrr)rÚexecutable_pathrrrÚdyld_executable_path_searchWsr$ccsÌ|Vt|ƒ}|dk r@t|ƒ}x |D]}tjj||dƒVq$Wt|ƒ}x$|D]}tjj|tjj|ƒƒVqNW|dk rž| ržx tD]}tjj||dƒVq‚W|sÈx$tD]}tjj|tjj|ƒƒVq¨WdS)Nr) rrrrrrrÚDEFAULT_FRAMEWORK_FALLBACKÚDEFAULT_LIBRARY_FALLBACK)rr r Zfallback_framework_pathrZfallback_library_pathrrrÚdyld_default_search^s    r'cCsPxs: