pax_global_header00006660000000000000000000000064113432700350014510gustar00rootroot0000000000000052 comment=d6c824bc110a9f2c475d125acfcbcbcf399539fe splitbrain-dokuwiki-d6c824b/000077500000000000000000000000001134327003500161215ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/.gitignore000066400000000000000000000004751134327003500201170ustar00rootroot00000000000000/conf/*.local.conf /conf/acl.auth.php /conf/local.php /conf/local.protected.php /conf/users.auth.php /conf/user*.css /conf/user*.js /conf/words.aspell .htaccess *.swp *.bak *.old *~ /data/attic/* /data/cache/* /data/index/* /data/locks/* /data/media/* /data/meta/* /data/pages/* /data/tmp/* /lib/tpl/* /lib/plugins/* splitbrain-dokuwiki-d6c824b/.htaccess.dist000066400000000000000000000026761134327003500206740ustar00rootroot00000000000000## Enable this to restrict editing to logged in users only ## You should disable Indexes and MultiViews either here or in the ## global config. Symlinks maybe needed for URL rewriting. #Options -Indexes -MultiViews +FollowSymLinks ## make sure nobody gets the htaccess files Order allow,deny Deny from all Satisfy All ## Uncomment these rules if you want to have nice URLs using ## $conf['userewrite'] = 1 - not needed for rewrite mode 2 #RewriteEngine on # ## Not all installations will require the following line. If you do, ## change "/dokuwiki" to the path to your dokuwiki directory relative ## to your document root. #RewriteBase /dokuwiki # ## If you enable DokuWikis XML-RPC interface, you should consider to ## restrict access to it over HTTPS only! Uncomment the following two ## rules if your server setup allows HTTPS. #RewriteCond %{HTTPS} !=on #RewriteRule ^lib/exe/xmlrpc.php$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] # #RewriteRule ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L] #RewriteRule ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L] #RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] #RewriteRule ^$ doku.php [L] #RewriteCond %{REQUEST_FILENAME} !-f #RewriteCond %{REQUEST_FILENAME} !-d #RewriteRule (.*) doku.php?id=$1 [QSA,L] #RewriteRule ^index.php$ doku.php splitbrain-dokuwiki-d6c824b/COPYING000066400000000000000000000431101134327003500171530ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. splitbrain-dokuwiki-d6c824b/README000066400000000000000000000003761134327003500170070ustar00rootroot00000000000000All documentation for DokuWiki is available online at http://www.dokuwiki.org/ For Installation Instructions see http://www.dokuwiki.org/install DokuWiki - 2004-2010 (c) Andreas Gohr See COPYING and file headers for license info splitbrain-dokuwiki-d6c824b/_cs/000077500000000000000000000000001134327003500166655ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/000077500000000000000000000000001134327003500204135ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/DokuWikiCodingStandard.php000066400000000000000000000070211134327003500254570ustar00rootroot00000000000000 */ if (class_exists('PHP_CodeSniffer_Standards_CodingStandard', true) === false) { throw new PHP_CodeSniffer_Exception('Class PHP_CodeSniffer_Standards_CodingStandard not found'); } /** * DokuWiki Coding Standard. * * @category PHP * @package PHP_CodeSniffer * @author Andreas Gohr */ class PHP_CodeSniffer_Standards_DokuWiki_DokuWikiCodingStandard extends PHP_CodeSniffer_Standards_CodingStandard { /** * Return a list of external sniffs to include with this standard. * * @return array */ public function getIncludedSniffs() { return array( 'Generic/Sniffs/Classes/DuplicateClassNameSniff.php', 'Generic/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php', 'Generic/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php', 'Generic/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php', 'Generic/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php', 'Generic/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php', 'Generic/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php', 'Generic/Sniffs/CodeAnalysis/EmptyStatementSniff.php', 'Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php', 'Generic/Sniffs/Commenting/TodoSniff.php', 'Generic/Sniffs/Files/LineEndingsSniff.php', 'Generic/Sniffs/Formatting/DisallowMultipleStatementsSniff.php', 'Generic/Sniffs/Metrics/NestingLevelSniff.php', // 'Generic/Sniffs/Metrics/CyclomaticComplexitySniff.php', //FIXME we might need to tune this first 'Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php', 'Generic/Sniffs/PHP/LowerCaseConstantSniff.php', 'Generic/Sniffs/PHP/DisallowShortOpenTagSniff.php', 'Generic/Sniffs/PHP/ForbiddenFunctionsSniff.php', 'Generic/Sniffs/WhiteSpace/DisallowTabIndentSniff.php', 'DokuWiki/Sniffs/WhiteSpace/ScopeIndentSniff.php', 'Zend/Sniffs/Files/ClosingTagSniff.php', 'PEAR/Sniffs/Functions/ValidDefaultValueSniff.php', 'Squiz/Sniffs/PHP/EvalSniff.php', 'Squiz/Sniffs/PHP/NonExecutableCodeSniff.php', // 'Squiz/Sniffs/PHP/CommentedOutCodeSniff.php', //FIXME should ignore oneliners 'Squiz/Sniffs/WhiteSpace/SuperfluousWhitespaceSniff.php', 'Squiz/Sniffs/PHP/NonExecutableCodeSniff.php', 'Squiz/Sniffs/CSS/LowercaseStyleDefinitionSniff.php', 'Squiz/Sniffs/CSS/MissingColonSniff.php', 'Squiz/Sniffs/CSS/DisallowMultipleStyleDefinitionsSniff.php', 'Squiz/Sniffs/CSS/ColonSpacingSniff.php', 'Squiz/Sniffs/CSS/ClassDefinitionClosingBraceSpaceSniff.php', 'Squiz/Sniffs/CSS/SemicolonSpacingSniff.php', 'Squiz/Sniffs/CSS/IndentationSniff.php', 'Squiz/Sniffs/CSS/EmptyClassDefinitionSniff.php', 'Squiz/Sniffs/CSS/ClassDefinitionNameSpacingSniff.php', 'Squiz/Sniffs/CSS/EmptyStyleDefinitionSniff.php', 'Squiz/Sniffs/CSS/OpacitySniff.php', 'Squiz/Sniffs/CSS/ColourDefinitionSniff.php', 'Squiz/Sniffs/CSS/DuplicateClassDefinitionSniff.php', 'Squiz/Sniffs/CSS/ClassDefinitionOpeningBraceSpaceSniff.php', 'Squiz/Sniffs/Commenting/DocCommentAlignmentSniff.php', ); } }//end class splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/Sniffs/000077500000000000000000000000001134327003500216435ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/Sniffs/Functions/000077500000000000000000000000001134327003500236135ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/Sniffs/Functions/OpeningFunctionBraceSniff.php000066400000000000000000000052431134327003500313600ustar00rootroot00000000000000getTokens(); if (isset($tokens[$stackPtr]['scope_opener']) === false) { return; } $openingBrace = $tokens[$stackPtr]['scope_opener']; // The end of the function occurs at the end of the argument list. Its // like this because some people like to break long function declarations // over multiple lines. $functionLine = $tokens[$tokens[$stackPtr]['parenthesis_closer']]['line']; $braceLine = $tokens[$openingBrace]['line']; $lineDifference = ($braceLine - $functionLine); if ($lineDifference > 0) { $error = 'Opening brace should be on the same line as the declaration'; $phpcsFile->addError($error, $openingBrace); return; } // Checks that the closing parenthesis and the opening brace are // separated by a whitespace character. $closerColumn = $tokens[$tokens[$stackPtr]['parenthesis_closer']]['column']; $braceColumn = $tokens[$openingBrace]['column']; $columnDifference = ($braceColumn - $closerColumn); if ($columnDifference > 2) { $error = 'Expected 0 or 1 space between the closing parenthesis and the opening brace; found '.($columnDifference - 1).'.'; $phpcsFile->addError($error, $openingBrace); return; } // Check that a tab was not used instead of a space. $spaceTokenPtr = ($tokens[$stackPtr]['parenthesis_closer'] + 1); $spaceContent = $tokens[$spaceTokenPtr]['content']; if ($columnDifference == 2 && $spaceContent !== ' ') { $error = 'Expected a none or a single space character between closing parenthesis and opening brace; found "'.$spaceContent.'".'; $phpcsFile->addError($error, $openingBrace); return; } }//end process() }//end class ?> splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/Sniffs/PHP/000077500000000000000000000000001134327003500222725ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/Sniffs/PHP/DiscouragedFunctionsSniff.php000066400000000000000000000033041134327003500301130ustar00rootroot00000000000000 * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @version CVS: $Id: DiscouragedFunctionsSniff.php 265110 2008-08-19 06:36:11Z squiz $ * @link http://pear.php.net/package/PHP_CodeSniffer */ if (class_exists('Generic_Sniffs_PHP_ForbiddenFunctionsSniff', true) === false) { throw new PHP_CodeSniffer_Exception('Class Generic_Sniffs_PHP_ForbiddenFunctionsSniff not found'); } /** * DokuWiki_Sniffs_PHP_DiscouragedFunctionsSniff. * * @category PHP * @package PHP_CodeSniffer * @author Greg Sherwood * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @version Release: 1.2.2 * @link http://pear.php.net/package/PHP_CodeSniffer */ class DokuWiki_Sniffs_PHP_DiscouragedFunctionsSniff extends Generic_Sniffs_PHP_ForbiddenFunctionsSniff { /** * A list of forbidden functions with their alternatives. * * The value is NULL if no alternative exists. IE, the * function should just not be used. * * @var array(string => string|null) */ protected $forbiddenFunctions = array( 'date' => 'dformat', 'strftime' => 'dformat', ); /** * If true, an error will be thrown; otherwise a warning. * * @var bool */ protected $error = false; }//end class ?> splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/Sniffs/WhiteSpace/000077500000000000000000000000001134327003500236775ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_cs/DokuWiki/Sniffs/WhiteSpace/ScopeIndentSniff.php000066400000000000000000000277521134327003500276260ustar00rootroot00000000000000 * @author Greg Sherwood * @author Marc McIntyre * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @version CVS: $Id: ScopeIndentSniff.php 270281 2008-12-02 02:38:34Z squiz $ * @link http://pear.php.net/package/PHP_CodeSniffer */ /** * Generic_Sniffs_Whitespace_ScopeIndentSniff. * * Checks that control structures are structured correctly, and their content * is indented correctly. * * @category PHP * @package PHP_CodeSniffer * @author Greg Sherwood * @author Marc McIntyre * @copyright 2006 Squiz Pty Ltd (ABN 77 084 670 600) * @license http://matrix.squiz.net/developer/tools/php_cs/licence BSD Licence * @version Release: 1.2.0 * @link http://pear.php.net/package/PHP_CodeSniffer */ class DokuWiki_Sniffs_WhiteSpace_ScopeIndentSniff implements PHP_CodeSniffer_Sniff { /** * The number of spaces code should be indented. * * @var int */ protected $indent = 4; /** * Does the indent need to be exactly right. * * If TRUE, indent needs to be exactly $ident spaces. If FALSE, * indent needs to be at least $ident spaces (but can be more). * * @var bool */ protected $exact = false; /** * Any scope openers that should not cause an indent. * * @var array(int) */ protected $nonIndentingScopes = array(); /** * Returns an array of tokens this test wants to listen for. * * @return array */ public function register() { return PHP_CodeSniffer_Tokens::$scopeOpeners; }//end register() /** * Processes this test, when one of its tokens is encountered. * * @param PHP_CodeSniffer_File $phpcsFile All the tokens found in the document. * @param int $stackPtr The position of the current token * in the stack passed in $tokens. * * @return void */ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr) { $tokens = $phpcsFile->getTokens(); // If this is an inline condition (ie. there is no scope opener), then // return, as this is not a new scope. if (isset($tokens[$stackPtr]['scope_opener']) === false) { return; } if ($tokens[$stackPtr]['code'] === T_ELSE) { $next = $phpcsFile->findNext( PHP_CodeSniffer_Tokens::$emptyTokens, ($stackPtr + 1), null, true ); // We will handle the T_IF token in another call to process. if ($tokens[$next]['code'] === T_IF) { return; } } // Find the first token on this line. $firstToken = $stackPtr; for ($i = $stackPtr; $i >= 0; $i--) { // Record the first code token on the line. if (in_array($tokens[$i]['code'], PHP_CodeSniffer_Tokens::$emptyTokens) === false) { $firstToken = $i; } // It's the start of the line, so we've found our first php token. if ($tokens[$i]['column'] === 1) { break; } } // Based on the conditions that surround this token, determine the // indent that we expect this current content to be. $expectedIndent = $this->calculateExpectedIndent($tokens, $firstToken); if ($tokens[$firstToken]['column'] !== $expectedIndent) { if($this->exact || $tokens[$firstToken]['column'] < $expectedIndent){ $error = 'Line indented incorrectly; expected '; $error .= ($expectedIndent - 1).' spaces, found '; $error .= ($tokens[$firstToken]['column'] - 1); $phpcsFile->addError($error, $stackPtr); }elseif((($tokens[$firstToken]['column'] - 1) % $this->indent)){ $error = 'Line indented not by multiple of '.$this->indent.'; expected '; $error .= ($expectedIndent - 1).' spaces, found '; $error .= ($tokens[$firstToken]['column'] - 1); $phpcsFile->addError($error, $stackPtr); } } $scopeOpener = $tokens[$stackPtr]['scope_opener']; $scopeCloser = $tokens[$stackPtr]['scope_closer']; // Some scopes are expected not to have indents. if (in_array($tokens[$firstToken]['code'], $this->nonIndentingScopes) === false) { $indent = ($expectedIndent + $this->indent); } else { $indent = $expectedIndent; } $newline = false; $commentOpen = false; $inHereDoc = false; // Only loop over the content beween the opening and closing brace, not // the braces themselves. for ($i = ($scopeOpener + 1); $i < $scopeCloser; $i++) { // If this token is another scope, skip it as it will be handled by // another call to this sniff. if (in_array($tokens[$i]['code'], PHP_CodeSniffer_Tokens::$scopeOpeners) === true) { if (isset($tokens[$i]['scope_opener']) === true) { $i = $tokens[$i]['scope_closer']; } else { // If this token does not have a scope_opener indice, then // it's probably an inline scope, so let's skip to the next // semicolon. Inline scopes include inline if's, abstract // methods etc. $nextToken = $phpcsFile->findNext(T_SEMICOLON, $i, $scopeCloser); if ($nextToken !== false) { $i = $nextToken; } } continue; } // If this is a HEREDOC then we need to ignore it as the // whitespace before the contents within the HEREDOC are // considered part of the content. if ($tokens[$i]['code'] === T_START_HEREDOC) { $inHereDoc = true; continue; } else if ($inHereDoc === true) { if ($tokens[$i]['code'] === T_END_HEREDOC) { $inHereDoc = false; } continue; } if ($tokens[$i]['column'] === 1) { // We started a newline. $newline = true; } if ($newline === true && $tokens[$i]['code'] !== T_WHITESPACE) { // If we started a newline and we find a token that is not // whitespace, then this must be the first token on the line that // must be indented. $newline = false; $firstToken = $i; $column = $tokens[$firstToken]['column']; // Special case for non-PHP code. if ($tokens[$firstToken]['code'] === T_INLINE_HTML) { $trimmedContentLength = strlen(ltrim($tokens[$firstToken]['content'])); if ($trimmedContentLength === 0) { continue; } $contentLength = strlen($tokens[$firstToken]['content']); $column = ($contentLength - $trimmedContentLength + 1); } // Check to see if this constant string spans multiple lines. // If so, then make sure that the strings on lines other than the // first line are indented appropriately, based on their whitespace. if (in_array($tokens[$firstToken]['code'], PHP_CodeSniffer_Tokens::$stringTokens) === true) { if (in_array($tokens[($firstToken - 1)]['code'], PHP_CodeSniffer_Tokens::$stringTokens) === true) { // If we find a string that directly follows another string // then its just a string that spans multiple lines, so we // don't need to check for indenting. continue; } } // This is a special condition for T_DOC_COMMENT and C-style // comments, which contain whitespace between each line. $comments = array( T_COMMENT, T_DOC_COMMENT ); if (in_array($tokens[$firstToken]['code'], $comments) === true) { $content = trim($tokens[$firstToken]['content']); if (preg_match('|^/\*|', $content) !== 0) { // Check to see if the end of the comment is on the same line // as the start of the comment. If it is, then we don't // have to worry about opening a comment. if (preg_match('|\*/$|', $content) === 0) { // We don't have to calculate the column for the // start of the comment as there is a whitespace // token before it. $commentOpen = true; } } else if ($commentOpen === true) { if ($content === '') { // We are in a comment, but this line has nothing on it // so let's skip it. continue; } $contentLength = strlen($tokens[$firstToken]['content']); $trimmedContentLength = strlen(ltrim($tokens[$firstToken]['content'])); $column = ($contentLength - $trimmedContentLength + 1); if (preg_match('|\*/$|', $content) !== 0) { $commentOpen = false; } }//end if }//end if // The token at the start of the line, needs to have its' column // greater than the relative indent we set above. If it is less, // an error should be shown. if ($column !== $indent) { if ($this->exact === true || $column < $indent) { $error = 'Line indented incorrectly; expected '; if ($this->exact === false) { $error .= 'at least '; } $error .= ($indent - 1).' spaces, found '; $error .= ($column - 1); $phpcsFile->addError($error, $firstToken); } } }//end if }//end for }//end process() /** * Calculates the expected indent of a token. * * @param array $tokens The stack of tokens for this file. * @param int $stackPtr The position of the token to get indent for. * * @return int */ protected function calculateExpectedIndent(array $tokens, $stackPtr) { $conditionStack = array(); // Empty conditions array (top level structure). if (empty($tokens[$stackPtr]['conditions']) === true) { return 1; } $tokenConditions = $tokens[$stackPtr]['conditions']; foreach ($tokenConditions as $id => $condition) { // If it's an indenting scope ie. it's not in our array of // scopes that don't indent, add it to our condition stack. if (in_array($condition, $this->nonIndentingScopes) === false) { $conditionStack[$id] = $condition; } } return ((count($conditionStack) * $this->indent) + 1); }//end calculateExpectedIndent() }//end class ?> splitbrain-dokuwiki-d6c824b/_cs/README000066400000000000000000000007131134327003500175460ustar00rootroot00000000000000This directory contains the Coding Standard tests to be used with PHP CodeSniffer on DokuWiki's code. 1. Install PHP CodeSniffer: #> pear install PHP_CodeSniffer 2. Link the Coding Standard to the CodeSniffer directory: #> ln -s /path/to/dokuwiki/_cs/DokuWiki /usr/share/pear/PHP/CodeSniffer/Standards/DokuWiki 3. Set DokuWiki to be the default standard: #> phpcs --config-set default_standard DokuWiki The coding standard is work in progress. splitbrain-dokuwiki-d6c824b/_test/000077500000000000000000000000001134327003500172375ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/README000066400000000000000000000056661134327003500201340ustar00rootroot00000000000000-------------------------------------------------------------------------------- Dokuwiki Unit Test Suite -------------------------------------------------------------------------------- $Date: 2004/02/14 02:14:50 $ Credits: to the WACT team - http://www.phpwact.org, from whom the basis of this test suite was stolen -------------------------------------------------------------------------------- INSTALLING & SETUP 1. Grab a copy of the SimpleTest unit testing framework an extract somewhere http://www.lastcraft.com/simple_test.php or http://sourceforge.net/projects/simpletest 2. Edit ./tests.ini - TEST_ENABLED - set to "1" to allow the test suite to be used by vistors to your site. Generally best to leave as 0 for a productive site - running tests alot will hammer the server Note: you will still be able to run the tests from the command line even when this is set to 0 - WEB_TEST_URL - this is for running "web tests" where SimpleTest acts as a web browser and executes HTTP requests against pages. Should point at your Dokuwiki URL e.g. http://localhost/dokuwiki - PROXY - if you're behind a proxy, specify it here Note: username / password are optional e.g. http://proxyuser:proxypwd@proxy.yourdomain.com:8080 - REMOTE_TEST_URL - it's possible to run the full test suite remotely (over HTTP) with some XML goodness. This should point at the URL of the test suite you want to test See the following URL for more info; http://www.sitepoint.com/blogs/2004/06/15/simple-test-remote-testing/ - Simple Test Update the library_path to point at the directory where you installed Simple Test -------------------------------------------------------------------------------- RUNNING THE TESTS You can run the tests in three ways. From the command line: $ ./runtests.php -h Using a web browser; http://localhost/dokuwiki/_test/index.php As remote tests run on a remote serveri (specified in tests.ini with REMOTE_TEST_URL) and driven locally from the command line using; $ ./remotetests.php -h -------------------------------------------------------------------------------- ADDING TESTS The test cases are kept in the './cases' directory in a directory structure mirroring that of the Dokuwiki's Files with the extension .group.php are group tests (collections of one or more seperate unit test files) - there should be one group test per file in Dokuwiki's real directory. Individual tests files have the extension .test.php To add tests, create a .test.php file in the correct directory under ./cases Probably best to use one of the existing scripts as a basis The test will not be executable via one of the test runners (see above). To add it to a group of tests, modify the corresponding .group.php file. One exception to the naming convention - files named .webtest.php and .webgroup.php are run using SimpleTest's browser simulator. splitbrain-dokuwiki-d6c824b/_test/cases/000077500000000000000000000000001134327003500203355ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/cases/inc/000077500000000000000000000000001134327003500211065ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/cases/inc/auth_aclcheck.test.php000066400000000000000000000267201134327003500253620ustar00rootroot00000000000000assertEqual(auth_aclcheck('page', '',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); // user with no matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); // user with matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); // super user $this->assertEqual(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); } function test_restricted_ropage(){ global $conf; global $AUTH_ACL; $conf['superuser'] = 'john'; $conf['useacl'] = 1; $AUTH_ACL = array( '* @ALL 0', '* @user 8', 'namespace:page @user 1', ); // anonymous user $this->assertEqual(auth_aclcheck('page', '',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); // user with no matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); // user with matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_READ); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); // super user $this->assertEqual(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); } function test_aclexample(){ global $conf; global $AUTH_ACL; $conf['superuser'] = 'john'; $conf['useacl'] = 1; $AUTH_ACL = array( '* @ALL 4', '* bigboss 16', 'start @ALL 1', 'marketing:* @marketing 8', 'devel:* @ALL 0', 'devel:* @devel 8', 'devel:* bigboss 16', 'devel:funstuff bigboss 0', 'devel:* @marketing 1', 'devel:marketing @marketing 2', ); $this->assertEqual(auth_aclcheck('page', '' ,array()) , AUTH_CREATE); $this->assertEqual(auth_aclcheck('page', 'bigboss' ,array('foo')) , AUTH_DELETE); $this->assertEqual(auth_aclcheck('page', 'jill' ,array('marketing')) , AUTH_CREATE); $this->assertEqual(auth_aclcheck('page', 'jane' ,array('devel')) , AUTH_CREATE); $this->assertEqual(auth_aclcheck('start', '' ,array()) , AUTH_READ); $this->assertEqual(auth_aclcheck('start', 'bigboss' ,array('foo')) , AUTH_READ); $this->assertEqual(auth_aclcheck('start', 'jill' ,array('marketing')) , AUTH_READ); $this->assertEqual(auth_aclcheck('start', 'jane' ,array('devel')) , AUTH_READ); $this->assertEqual(auth_aclcheck('marketing:page', '' ,array()) , AUTH_CREATE); $this->assertEqual(auth_aclcheck('marketing:page', 'bigboss' ,array('foo')) , AUTH_DELETE); $this->assertEqual(auth_aclcheck('marketing:page', 'jill' ,array('marketing')) , AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('marketing:page', 'jane' ,array('devel')) , AUTH_CREATE); $this->assertEqual(auth_aclcheck('devel:page', '' ,array()) , AUTH_NONE); $this->assertEqual(auth_aclcheck('devel:page', 'bigboss' ,array('foo')) , AUTH_DELETE); $this->assertEqual(auth_aclcheck('devel:page', 'jill' ,array('marketing')) , AUTH_READ); $this->assertEqual(auth_aclcheck('devel:page', 'jane' ,array('devel')) , AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('devel:funstuff', '' ,array()) , AUTH_NONE); $this->assertEqual(auth_aclcheck('devel:funstuff', 'bigboss' ,array('foo')) , AUTH_NONE); $this->assertEqual(auth_aclcheck('devel:funstuff', 'jill' ,array('marketing')) , AUTH_READ); $this->assertEqual(auth_aclcheck('devel:funstuff', 'jane' ,array('devel')) , AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('devel:marketing', '' ,array()) , AUTH_NONE); $this->assertEqual(auth_aclcheck('devel:marketing', 'bigboss' ,array('foo')) , AUTH_DELETE); $this->assertEqual(auth_aclcheck('devel:marketing', 'jill' ,array('marketing')) , AUTH_EDIT); $this->assertEqual(auth_aclcheck('devel:marketing', 'jane' ,array('devel')) , AUTH_UPLOAD); } function test_multiadmin_restricted(){ global $conf; global $AUTH_ACL; $conf['superuser'] = 'john,@admin,doe,@roots'; $conf['useacl'] = 1; $AUTH_ACL = array( '* @ALL 0', '* @user 8', ); // anonymous user $this->assertEqual(auth_aclcheck('page', '',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); // user with no matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); // user with matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); // super user john $this->assertEqual(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); // super user doe $this->assertEqual(auth_aclcheck('page', 'doe',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','doe',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'doe',array('foo')), AUTH_ADMIN); // user with matching admin group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','admin')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','admin')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','admin')), AUTH_ADMIN); // user with matching another admin group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','roots')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','roots')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','roots')), AUTH_ADMIN); } function test_multiadmin_restricted_ropage(){ global $conf; global $AUTH_ACL; $conf['superuser'] = 'john,@admin,doe,@roots'; $conf['useacl'] = 1; $AUTH_ACL = array( '* @ALL 0', '* @user 8', 'namespace:page @user 1', ); // anonymous user $this->assertEqual(auth_aclcheck('page', '',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','',array()), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', '',array()), AUTH_NONE); // user with no matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE); // user with matching group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_READ); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD); // super user john $this->assertEqual(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN); // super user doe $this->assertEqual(auth_aclcheck('page', 'doe',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','doe',array('foo')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'doe',array('foo')), AUTH_ADMIN); // user with matching admin group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','admin')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','admin')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','admin')), AUTH_ADMIN); // user with matching another admin group $this->assertEqual(auth_aclcheck('page', 'jill',array('foo','roots')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','roots')), AUTH_ADMIN); $this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','roots')), AUTH_ADMIN); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/auth_admincheck.test.php000066400000000000000000000031451134327003500257070ustar00rootroot00000000000000assertEqual(auth_ismanager('jill', null,false), false); // admin or manager users $this->assertEqual(auth_ismanager('john', null,false), true); $this->assertEqual(auth_ismanager('doe', null,false), true); // admin or manager groups $this->assertEqual(auth_ismanager('jill', array('admin'),false), true); $this->assertEqual(auth_ismanager('jill', array('managers'),false), true); } function test_isadmin(){ global $conf; $conf['superuser'] = 'john,@admin,doe,@roots'; // anonymous user $this->assertEqual(auth_ismanager('jill', null,true), false); // admin user $this->assertEqual(auth_ismanager('john', null,true), true); $this->assertEqual(auth_ismanager('doe', null,true), true); // admin groups $this->assertEqual(auth_ismanager('jill', array('admin'),true), true); $this->assertEqual(auth_ismanager('jill', array('roots'),true), true); $this->assertEqual(auth_ismanager('john', array('admin'),true), true); $this->assertEqual(auth_ismanager('doe', array('admin'),true), true); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/auth_nameencode.test.php000066400000000000000000000023451134327003500257200ustar00rootroot00000000000000assertEqual(auth_nameencode($in),$out); } function test_quote(){ $in = 'hey"you'; $out = 'hey%22you'; $this->assertEqual(auth_nameencode($in),$out); } function test_complex(){ $in = 'hey $ you !$%! foo '; $out = 'hey%20%24%20you%20%21%24%25%21%20foo%20'; $this->assertEqual(auth_nameencode($in),$out); } function test_complexutf8(){ $in = 'häü $ yü !$%! foo '; $out = 'häü%20%24%20yü%20%21%24%25%21%20foo%20'; $this->assertEqual(auth_nameencode($in),$out); } function test_groupskipon(){ $in = '@hey$you'; $out = '@hey%24you'; $this->assertEqual(auth_nameencode($in,true),$out); } function test_groupskipoff(){ $in = '@hey$you'; $out = '%40hey%24you'; $this->assertEqual(auth_nameencode($in),$out); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/auth_password.test.php000066400000000000000000000025661134327003500254710ustar00rootroot00000000000000 '$1$abcdefgh$SYbjm2AEvSoHG7Xapi8so.', 'apr1' => '$apr1$abcdefgh$C/GzYTF4kOVByYLEoD5X4.', 'md5' => '8fa22d62408e5351553acdd91c6b7003', 'sha1' => 'b456d3b0efd105d613744ffd549514ecafcfc7e1', 'ssha' => '{SSHA}QMHG+uC7bHNYKkmoLbNsNI38/dJhYmNk', 'crypt' => 'ablvoGr1hvZ5k', 'mysql' => '4a1fa3780bd6fd55', 'my411' => '*e5929347e25f82e19e4ebe92f1dc6b6e7c2dbd29', ); function test_cryptPassword(){ foreach($this->passes as $method => $hash){ $info = "testing method $method"; $this->signal('failinfo',$info); $this->assertEqual(auth_cryptPassword('foo'.$method,$method,'abcdefgh'),$hash); } } function test_verifyPassword(){ foreach($this->passes as $method => $hash){ $info = "testing method $method"; $this->signal('failinfo',$info); $this->assertTrue(auth_verifyPassword('foo'.$method,$hash)); } } function test_verifyPassword_nohash(){ $this->assertTrue(auth_verifyPassword('foo','$1$$n1rTiFE0nRifwV/43bVon/')); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/common_clientip.test.php000066400000000000000000000126701134327003500257620ustar00rootroot00000000000000assertEqual(clientIP(),$out); } function test_proxy1_all(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = '77.77.77.77'; $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; $out = '123.123.123.123,77.77.77.77'; $this->assertEqual(clientIP(),$out); } function test_proxy2_all(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77'; $out = '123.123.123.123,77.77.77.77'; $this->assertEqual(clientIP(),$out); } function test_proxyhops_all(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66'; $out = '123.123.123.123,77.77.77.77,66.66.66.66'; $this->assertEqual(clientIP(),$out); } function test_simple_single(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; $out = '123.123.123.123'; $this->assertEqual(clientIP(true),$out); } function test_proxy1_single(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = '77.77.77.77'; $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; $out = '77.77.77.77'; $this->assertEqual(clientIP(true),$out); } function test_proxy2_single(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77'; $out = '77.77.77.77'; $this->assertEqual(clientIP(true),$out); } function test_proxyhops_single(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66'; $out = '66.66.66.66'; $this->assertEqual(clientIP(true),$out); } function test_local_all(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1'; $out = '123.123.123.123,127.0.0.1'; $this->assertEqual(clientIP(),$out); } function test_local1_single(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1'; $out = '123.123.123.123'; $this->assertEqual(clientIP(true),$out); } function test_local2_single(){ $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '123.123.123.123'; $out = '123.123.123.123'; $this->assertEqual(clientIP(true),$out); } function test_local3_single(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1,10.0.0.1,192.168.0.2,172.17.1.1,172.21.1.1,172.31.1.1'; $out = '123.123.123.123'; $this->assertEqual(clientIP(true),$out); } function test_local4_single(){ $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = '192.168.0.5'; $out = '192.168.0.5'; $this->assertEqual(clientIP(true),$out); } function test_garbage_all(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; $out = '123.123.123.123'; $this->assertEqual(clientIP(),$out); } function test_garbage_single(){ $_SERVER['REMOTE_ADDR'] = '123.123.123.123'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; $out = '123.123.123.123'; $this->assertEqual(clientIP(true),$out); } function test_garbageonly_all(){ $_SERVER['REMOTE_ADDR'] = 'argh'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; $out = '0.0.0.0'; $this->assertEqual(clientIP(),$out); } function test_garbageonly_single(){ $_SERVER['REMOTE_ADDR'] = 'argh'; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222'; $out = '0.0.0.0'; $this->assertEqual(clientIP(true),$out); } function test_malicious(){ $_SERVER['REMOTE_ADDR'] = ''; $_SERVER['HTTP_X_REAL_IP'] = ''; $_SERVER['HTTP_X_FORWARDED_FOR'] = ''; $out = '0.0.0.0'; $this->assertEqual(clientIP(),$out); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/common_obfuscate.test.php000066400000000000000000000014351134327003500261230ustar00rootroot00000000000000assertEqual(obfuscate('jon-doe@example.com'), 'jon-doe@example.com'); } function test_hex(){ global $conf; $conf['mailguard'] = 'hex'; $this->assertEqual(obfuscate('jon-doe@example.com'), 'jon-doe@example.com'); } function test_visible(){ global $conf; $conf['mailguard'] = 'visible'; $this->assertEqual(obfuscate('jon-doe@example.com'), 'jon [dash] doe [at] example [dot] com'); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/form_form.test.php000066400000000000000000000102311134327003500245600ustar00rootroot00000000000000 'dw__testform', 'action' => '/test')); $form->startFieldset('Test'); $form->addHidden('summary', 'changes &c'); $form->addElement(form_makeTextField('t', 'v', 'Text', 'text__id', 'block')); $form->addElement(form_makeCheckboxField('r', '1', 'Check', 'check__id', 'simple')); $form->addElement(form_makeButton('submit', 'save', 'Save', array('accesskey'=>'s'))); $form->addElement(form_makeButton('submit', 'cancel', 'Cancel')); $form->endFieldset(); return $form; } function _realoutput() { global $lang; $realoutput = '
'; $realoutput .= "\n"; $realoutput .= '
'; $realoutput .= ''; $realoutput .= "\n"; $realoutput .= "
Test\n"; $realoutput .= '
'; $realoutput .= "\n"; $realoutput .= ''; $realoutput .= "\n"; $realoutput .= ''; $realoutput .= "\n"; $realoutput .= ''; $realoutput .= "\n"; $realoutput .= "
\n
\n"; return $realoutput; } function _ignoreTagWS($data){ return preg_replace('/>\s+<',$data); } function test_form_print() { $form = $this->_testform(); ob_start(); $form->printForm(); $output = ob_get_contents(); ob_end_clean(); $form->addHidden('sectok', getSecurityToken()); $this->assertEqual($this->_ignoreTagWS($output),$this->_ignoreTagWS($this->_realoutput())); } function test_get_element_at() { $form = $this->_testform(); $e1 =& $form->getElementAt(1); $this->assertEqual($e1, array('_elem'=>'textfield', '_text'=>'Text', '_class'=>'block', 'id'=>'text__id', 'name'=>'t', 'value'=>'v', 'class'=>'edit')); $e2 =& $form->getElementAt(99); $this->assertEqual($e2, array('_elem'=>'closefieldset')); } function test_find_element_by_type() { $form = $this->_testform(); $this->assertEqual($form->findElementByType('button'), 3); $this->assertFalse($form->findElementByType('text')); } function test_find_element_by_id() { $form = $this->_testform(); $this->assertEqual($form->findElementById('check__id'), 2); $this->assertFalse($form->findElementById('dw__testform')); } function test_find_element_by_attribute() { $form = $this->_testform(); $this->assertEqual($form->findElementByAttribute('value','Cancel'), 4); $this->assertFalse($form->findElementByAttribute('name','cancel')); } function test_close_fieldset() { $form = new Doku_Form(array('id' => 'dw__testform', 'action' => '/test')); $form->startFieldset('Test'); $form->addHidden('summary', 'changes &c'); $form->addElement(form_makeTextField('t', 'v', 'Text', 'text__id', 'block')); $form->addElement(form_makeCheckboxField('r', '1', 'Check', 'check__id', 'simple')); $form->addElement(form_makeButton('submit', 'save', 'Save', array('accesskey'=>'s'))); $form->addElement(form_makeButton('submit', 'cancel', 'Cancel')); ob_start(); $form->printForm(); $output = ob_get_contents(); ob_end_clean(); $this->assertEqual($this->_ignoreTagWS($output),$this->_ignoreTagWS($this->_realoutput())); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/html_hilight.test.php000066400000000000000000000051061134327003500252530ustar00rootroot00000000000000assertPattern( '/Foo bar<\/span> Foo/', html_hilight($html,'bar') ); } function testHighlightTwoWords() { $html = 'Foo bar Foo php Foo'; $this->assertPattern( '/Foo bar<\/span> Foo php<\/span> Foo/', html_hilight($html,array('bar','php')) ); } function testHighlightTwoWordsHtml() { $html = 'Foo bar Foo php Foo'; $this->assertPattern( '/Foo bar<\/span><\/b> Foo<\/i> php<\/span> Foo/', html_hilight($html,array('bar','php')) ); } function testNoHighlight() { $html = 'Foo bar Foo'; $this->assertPattern( '/Foo bar Foo/', html_hilight($html,'php') ); } function testHighlightPHP() { $html = 'Foo $_GET[\'bar\'] Foo'; $this->assertEqual( 'Foo $_GET[\'bar\'] Foo', html_hilight($html,'$_GET[\'bar\']') ); } function testMatchAttribute() { $html = 'Foo bar Foo'; $this->assertPattern( '/Foo bar<\/b> Foo/', html_hilight($html,'class="x"') ); } function testMatchAttributeWord() { $html = 'Foo bar Foo'; $this->assertEqual( 'Foo bar Foo', html_hilight($html,'class="x">bar') ); } function testRegexInjection() { $html = 'Foo bar Foo'; $this->assertPattern( '/Foo bar Foo/', html_hilight($html,'*') ); } function testRegexInjectionSlash() { $html = 'Foo bar Foo'; $this->assertPattern( '/Foo bar Foo/', html_hilight($html,'x/') ); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/init_fullpath.test.php000066400000000000000000000073041134327003500254430ustar00rootroot00000000000000 '/foo/bar/baz', '/foo//bar/baz' => '/foo/bar/baz', '/foo/../bar/baz' => '/bar/baz', '/foo/./bar/baz' => '/foo/bar/baz', '/foo/bar/..' => '/foo', '/foo/bar/../../../baz' => '/baz', 'foo/bar/baz' => '/absolute/path/foo/bar/baz', 'foo//bar/baz' => '/absolute/path/foo/bar/baz', 'foo/../bar/baz' => '/absolute/path/bar/baz', 'foo/./bar/baz' => '/absolute/path/foo/bar/baz', 'foo/bar/..' => '/absolute/path/foo', 'foo/bar/../../../baz' => '/absolute/baz', ); foreach($tests as $from => $to){ $info = "Testing '$from' resulted in '".fullpath($from)."'"; $this->signal('failinfo',$info); $this->assertEqual(fullpath($from),$to); } $_SERVER['SCRIPT_FILENAME'] = $base; unset($GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS']); } function test_windows_paths(){ $base = $_SERVER['SCRIPT_FILENAME']; $_SERVER['SCRIPT_FILENAME'] = '/absolute/path/self.php'; $GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS'] = true; // paths to check $tests = array( 'c:foo/bar/baz' => 'c:/foo/bar/baz', 'c:foo//bar/baz' => 'c:/foo/bar/baz', 'c:foo/../bar/baz' => 'c:/bar/baz', 'c:foo/./bar/baz' => 'c:/foo/bar/baz', 'c:foo/bar/..' => 'c:/foo', 'c:foo/bar/../../../baz' => 'c:/baz', 'c:/foo/bar/baz' => 'c:/foo/bar/baz', 'c:/foo//bar/baz' => 'c:/foo/bar/baz', 'c:/foo/../bar/baz' => 'c:/bar/baz', 'c:/foo/./bar/baz' => 'c:/foo/bar/baz', 'c:/foo/bar/..' => 'c:/foo', 'c:/foo/bar/../../../baz' => 'c:/baz', 'c:\\foo\\bar\\baz' => 'c:/foo/bar/baz', 'c:\\foo\\\\bar\\baz' => 'c:/foo/bar/baz', 'c:\\foo\\..\\bar\\baz' => 'c:/bar/baz', 'c:\\foo\\.\\bar\\baz' => 'c:/foo/bar/baz', 'c:\\foo\\bar\\..' => 'c:/foo', 'c:\\foo\\bar\\..\\..\\..\\baz' => 'c:/baz', '\\\\server\\share/foo/bar/baz' => '\\\\server\\share/foo/bar/baz', '\\\\server\\share/foo//bar/baz' => '\\\\server\\share/foo/bar/baz', '\\\\server\\share/foo/../bar/baz' => '\\\\server\\share/bar/baz', '\\\\server\\share/foo/./bar/baz' => '\\\\server\\share/foo/bar/baz', '\\\\server\\share/foo/bar/..' => '\\\\server\\share/foo', '\\\\server\\share/foo/bar/../../../baz' => '\\\\server\\share/baz', ); foreach($tests as $from => $to){ $info = "Testing '$from' resulted in '".fullpath($from)."'"; $this->signal('failinfo',$info); $this->assertEqual(fullpath($from),$to); } $_SERVER['SCRIPT_FILENAME'] = $base; unset($GLOBALS['DOKU_UNITTEST_ASSUME_WINDOWS']); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/init_getbaseurl.test.php000066400000000000000000000237671134327003500257740ustar00rootroot00000000000000 */ function test1(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php?do=debug'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['PATH_INFO'] = null; $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; $this->assertEqual(getBaseURL(),'/dokuwiki/'); } /** * Apache, CGI, mod_userdir, subdirectory * * data provided by Hilko Bengen */ function test2(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/var/www/localhost'; $_SERVER['HTTP_HOST'] = 'localhost'; $_SERVER['SCRIPT_FILENAME'] = '/usr/lib/cgi-bin/php4'; $_SERVER['REQUEST_URI'] = '/~bengen/dokuwiki/doku.php?do=debug'; $_SERVER['SCRIPT_NAME'] = '/cgi-bin/php4'; $_SERVER['PATH_INFO'] = '/~bengen/dokuwiki/doku.php'; $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php'; $_SERVER['PHP_SELF'] = '/~bengen/dokuwiki/doku.php'; $this->assertEqual(getBaseURL(),'/~bengen/dokuwiki/'); } /** * Apache, FastCGI, mod_userdir, subdirectory * * data provided by Hilko Bengen */ function test3(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/var/www/localhost'; $_SERVER['HTTP_HOST'] = 'localhost'; $_SERVER['SCRIPT_FILENAME'] = '/var/run/php-fastcgi/fcgi-bin/bengen/php4'; $_SERVER['REQUEST_URI'] = '/~bengen/dokuwiki/doku.php?do=debug'; $_SERVER['SCRIPT_NAME'] = '/fcgi-bin/php4-bengen'; $_SERVER['PATH_INFO'] = '/~bengen/dokuwiki/doku.php'; $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php'; $_SERVER['PHP_SELF'] = '/~bengen/dokuwiki/doku.php'; $this->assertEqual(getBaseURL(),'/~bengen/dokuwiki/'); } /** * Apache, mod_php, mod_userdir, subdirectory * * data provided by Hilko Bengen */ function test4(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/var/www/localhost'; $_SERVER['HTTP_HOST'] = 'localhost'; $_SERVER['SCRIPT_FILENAME'] = '/home/bengen/public_html/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/~bengen/dokuwiki/doku.php?do=debug'; $_SERVER['SCRIPT_NAME'] = '/~bengen/dokuwiki/doku.php'; $_SERVER['PATH_INFO'] = null; $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php'; $_SERVER['PHP_SELF'] = '/~bengen/dokuwiki/doku.php'; $this->assertEqual(getBaseURL(),'/~bengen/dokuwiki/'); } /** * IIS * * data provided by David Mach */ function test5(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = null; $_SERVER['HTTP_HOST'] = 'intranet'; $_SERVER['SCRIPT_FILENAME'] = null; $_SERVER['REQUEST_URI'] = null; $_SERVER['SCRIPT_NAME'] = '/wiki/doku.php'; $_SERVER['PATH_INFO'] = '/wiki/doku.php'; $_SERVER['PATH_TRANSLATED'] = 'C:\\Inetpub\\wwwroot\\wiki\\doku.php'; $_SERVER['PHP_SELF'] = '/wiki/doku.php'; $this->assertEqual(getBaseURL(),'/wiki/'); } /** * Apache 2, mod_php, real URL rewriting, useslash (bug #292) * * data provided by Ted */ function test6(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/home/websites/wiki/htdocs'; $_SERVER['HTTP_HOST'] = 'wiki.linuxwan.net'; $_SERVER['SCRIPT_FILENAME'] = '/home/websites/wiki/htdocs/doku.php'; $_SERVER['REQUEST_URI'] = '/wiki/syntax?do=debug'; $_SERVER['SCRIPT_NAME'] = '/wiki/syntax'; $_SERVER['PATH_INFO'] = null; $_SERVER['PATH_TRANSLATED'] = null; $_SERVER['PHP_SELF'] = '/wiki/syntax'; $this->assertEqual(getBaseURL(),'/'); } /** * lighttpd, fastcgi * * data provided by Andreas Gohr */ function test7(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['HTTP_HOST'] = 'localhost'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php?do=debug'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['PATH_INFO'] = ''; $_SERVER['PATH_TRANSLATED'] = null; $_SERVER['PHP_SELF'] = ''; $this->assertEqual(getBaseURL(),'/dokuwiki/'); } /** * Apache, mod_php, Pseudo URL rewrite, useslash * * data provided by Andreas Gohr */ function test8(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php/wiki/syntax?do=debug'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['PATH_INFO'] = '/wiki/syntax'; $_SERVER['PATH_TRANSLATED'] = '/var/www/wiki/syntax'; $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php/wiki/syntax'; $this->assertEqual(getBaseURL(),'/dokuwiki/'); } /** * Apache, mod_php, real URL rewrite, useslash * * data provided by Andreas Gohr */ function test9(){ global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $conf['canonical'] = 0; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/wiki/syntax?do=debug'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['PATH_INFO'] = null; $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; $this->assertEqual(getBaseURL(),'/dokuwiki/'); } /** * Possible user settings of $conf['baseurl'] & absolute baseURL required * * data provided by Andreas Gohr */ function test10(){ // values for $conf['baseurl'] and expected results $tests = array( 'http://www.mysite.com' => 'http://www.mysite.com/dokuwiki/', 'http://www.mysite.com/' => 'http://www.mysite.com/dokuwiki/', 'http://www.mysite.com/path/to/wiki' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', 'http://www.mysite.com/path/to/wiki/' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', ); global $conf; $conf['basedir'] = ''; $conf['baseurl'] = ''; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/wiki/syntax?do=debug'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['PATH_INFO'] = null; $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; foreach ($tests as $test => $correct_result) { $conf['baseurl'] = $test; $this->assertEqual(getBaseURL(true),$correct_result); } } /** * Possible user settings of $conf['baseurl'] & absolute baseURL required * * data provided by Andreas Gohr */ function test11(){ // values for $conf['baseurl'] and expected results $tests = array( 'http://www.mysite.com' => 'http://www.mysite.com/dokuwiki/', 'http://www.mysite.com/' => 'http://www.mysite.com/dokuwiki/', 'http://www.mysite.com/path/to/wiki' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', 'http://www.mysite.com/path/to/wiki/' => 'http://www.mysite.com/path/to/wiki/dokuwiki/', ); global $conf; $conf['basedir'] = '/dokuwiki'; $conf['baseurl'] = ''; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/wiki/syntax?do=debug'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['PATH_INFO'] = null; $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php'; $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php'; foreach ($tests as $test => $correct_result) { $conf['baseurl'] = $test; $this->assertEqual(getBaseURL(true),$correct_result); } } } //Setup VIM: ex: et ts=2 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/mail_isvalid.test.php000066400000000000000000000100571134327003500252350ustar00rootroot00000000000000@example.com', false); // Disallowed Characters $tests[] = array('test@.', false); $tests[] = array('test@example.', false); $tests[] = array('test@.org', false); $tests[] = array('12345678901234567890123456789012345678901234567890123456789012345@example.com', false); // 64 characters is maximum length for local part. This is 65. $tests[] = array('test@123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012.com', false); // 255 characters is maximum length for domain. This is 256. $tests[] = array('test@example', false); $tests[] = array('test@[123.123.123.123', false); $tests[] = array('test@123.123.123.123]', false); foreach($tests as $test){ $info = 'Testing '.$test[0]; $this->signal('failinfo',$info); if($test[1]){ $this->assertTrue((bool) mail_isvalid($test[0])); }else{ $this->assertFalse((bool) mail_isvalid($test[0])); } } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/mail_quoted_printable_encode.php000066400000000000000000000032021134327003500274740ustar00rootroot00000000000000assertEqual(mail_quotedprintable_encode($in),$out); } function test_spaceend(){ $in = "hello \nhello"; $out = "hello=20\nhello"; $this->assertEqual(mail_quotedprintable_encode($in),$out); } function test_german_utf8(){ $in = 'hello überlänge'; $out = 'hello =C3=BCberl=C3=A4nge'; $this->assertEqual(mail_quotedprintable_encode($in),$out); } function test_wrap(){ $in = '123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789'; $out = "123456789 123456789 123456789 123456789 123456789 123456789 123456789 1234=\n56789 123456789"; $this->assertEqual(mail_quotedprintable_encode($in,74),$out); } function test_nowrap(){ $in = '123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789'; $out = '123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789'; $this->assertEqual(mail_quotedprintable_encode($in,0),$out); } function test_russian_utf8(){ $in = 'Ваш пароль Ð´Ð»Ñ ÑиÑтемы Доку Вики'; $out = '=D0=92=D0=B0=D1=88 =D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8C =D0=B4=D0=BB=D1=8F =D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D1=8B =D0=94=D0=BE=D0=BA=D1=83 =D0=92=D0=B8=D0=BA=D0=B8'; $this->assertEqual(mail_quotedprintable_encode($in,0),$out); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/mail_send.php000066400000000000000000000033531134327003500235560ustar00rootroot00000000000000', 'dokuwiki1@spam.la, dokuwiki2@spam.la', 'Test User 1 , Test User 2 ' ); $run = 0; foreach($addr as $ad){ $run++; $data = array( 'to' => $ad, 'subject' => 'mailtest 1-'.$run, 'body' => "Mailtest run 1-$run using to: $ad from:", ); $this->assertTrue((bool) _mail_send_action($data)); $data = array( 'to' => $ad, 'from' => 'dokuwiki1@spam.la', 'subject' => 'mailtest 2-'.$run, 'body' => "Mailtest run 2-$run using to: $ad from: dokuwiki1@spam.la", ); $this->assertTrue((bool) _mail_send_action($data)); $data = array( 'to' => $ad, 'from' => '"Foo Bar" ', 'subject' => 'mailtest 3-'.$run, 'body' => "Mailtest run 3-$run using to: $ad from: \"Foo Bar\" ", ); $this->assertTrue((bool) _mail_send_action($data)); } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/pageutils_clean_id.test.php000066400000000000000000000106551134327003500264170ustar00rootroot00000000000000assertEqual(cleanID($test[0],$test[1]),$test[2]); } $conf['useslash'] = 1; $tests = array(); $tests[] = array('page/page',false,'page:page'); $this->teardown(); foreach($tests as $test){ $this->assertEqual(cleanID($test[0],$test[1]),$test[2]); } } function test_sepchar(){ // we test multiple cases here // format: $id, $ascii, $correct_output $tests = array(); global $conf; $conf['sepchar'] = '-'; $conf['deaccent'] = 1; $tests[] = array('pa-ge',false,'pa-ge'); $tests[] = array('pa%ge',false,'pa-ge'); foreach($tests as $test){ $this->assertEqual(cleanID($test[0],$test[1]),$test[2]); } } function test_deaccent_keep(){ // we test multiple cases here // format: $id, $ascii, $correct_output $tests = array(); global $conf; $conf['sepchar'] = '_'; $conf['deaccent'] = 0; $tests[] = array('pàge',false,'pàge'); $tests[] = array('pagÄ–',false,'pagÄ—'); $tests[] = array('pagĒēĔĕĖėĘęĚě',false,'pagēēĕĕėėęęěě'); $tests[] = array('Úš',false,'Úš'); $tests[] = array('ښ侧化并곦à¦à´ˆÎ²',false,'ښ侧化并곦à¦à´ˆÎ²'); foreach($tests as $test){ $this->assertEqual(cleanID($test[0],$test[1]),$test[2]); } } function test_deaccent_romanize(){ // we test multiple cases here // format: $id, $ascii, $correct_output $tests = array(); global $conf; $conf['sepchar'] = '_'; $conf['deaccent'] = 2; $tests[] = array('pàge',false,'page'); $tests[] = array('pagÄ–',false,'page'); $tests[] = array('pagĒēĔĕĖėĘęĚě',false,'pageeeeeeeeee'); $tests[] = array('Úš',false,'Úš'); $tests[] = array('ښ侧化并곦à¦à´ˆÎ²',false,'ښ侧化并곦à¦à´ˆÎ²'); foreach($tests as $test){ $this->assertEqual(cleanID($test[0],$test[1]),$test[2]); } } function test_deaccent_ascii(){ // we test multiple cases here // format: $id, $ascii, $correct_output $tests = array(); global $conf; $conf['sepchar'] = '_'; $conf['deaccent'] = 0; $tests[] = array('pàge',true,'page'); $tests[] = array('pagÄ–',true,'page'); $tests[] = array('pagĒēĔĕĖėĘęĚě',true,'pageeeeeeeeee'); $tests[] = array('Úš',true,''); $tests[] = array('ښ侧化并곦à¦à´ˆÎ²',true,''); foreach($tests as $test){ $this->assertEqual(cleanID($test[0],$test[1]),$test[2]); } $conf['deaccent'] = 1; foreach($tests as $test){ $this->assertEqual(cleanID($test[0],$test[1]),$test[2]); } $conf['deaccent'] = 2; foreach($tests as $test){ $this->assertEqual(cleanID($test[0],$test[1]),$test[2]); } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/pageutils_getid.test.php000066400000000000000000000076131134327003500257550ustar00rootroot00000000000000 */ function test1(){ global $conf; $conf['basedir'] = '//'; $conf['userewrite'] = 2; $conf['deaccent'] = 0; // the default (1) gives me strange exceptions $_SERVER['SCRIPT_FILENAME'] = '/lib/exe/fetch.php'; $_SERVER['REQUEST_URI'] = '/lib/exe/fetch.php/myhdl-0.5dev1.tar.gz?id=snapshots&cache=cache'; $this->assertEqual(getID('media'), 'myhdl-0.5dev1.tar.gz'); } /** * getID with internal mediafile, urlrewrite=2, no basedir set, apache, mod_php */ function test2(){ global $conf; $conf['basedir'] = ''; $conf['userewrite'] = '2'; $conf['baseurl'] = ''; $conf['useslash'] = '1'; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['HTTP_HOST'] = 'xerxes.my.home'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/lib/exe/detail.php'; $_SERVER['PHP_SELF'] = '/dokuwiki/lib/exe/detail.php/wiki/discussion/button-dw.png'; $_SERVER['REQUEST_URI'] = '/dokuwiki/lib/exe/detail.php/wiki/discussion/button-dw.png?id=test&debug=1'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/lib/exe/detail.php'; $_SERVER['PATH_INFO'] = '/wiki/discussion/button-dw.png'; $_SERVER['PATH_TRANSLATED'] = '/var/www/wiki/discussion/button-dw.png'; $this->assertEqual(getID('media',true), 'wiki:discussion:button-dw.png'); $this->assertEqual(getID('media',false), 'wiki/discussion/button-dw.png'); } /** * getID with given id in url and userewrite=2, no basedir set, dokuwiki not in document root. */ function test3() { global $conf; $conf['basedir'] = ''; $conf['userewrite'] = '2'; $conf['baseurl'] = ''; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['SCRIPT_FILENAME'] = '/usr/share/dokuwiki/doku.php'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php/wiki:dokuwiki'; $_SERVER['PATH_INFO'] = '/wiki:dokuwiki'; $_SERVER['PATH_TRANSLATED'] = '/var/www/wiki:dokuwiki'; $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php/wiki:dokuwiki'; $this->assertEqual(getID(), 'wiki:dokuwiki'); } /** * getID with given id in url and userewrite=2, no basedir set, Apache and CGI. */ function test4() { global $conf; $conf['basedir'] = ''; $conf['userewrite'] = '2'; $conf['baseurl'] = ''; $_SERVER['DOCUMENT_ROOT'] = '/var/www/vhosts/example.com/htdocs'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/vhosts/example.com/htdocs/doku.php'; $_SERVER['SCRIPT_NAME'] = '/doku.php'; $_SERVER['REQUEST_URI'] = '/doku.php/wiki/dokuwiki'; $_SERVER['PATH_INFO'] = '/wiki/dokuwiki'; $_SERVER['PATH_TRANSLATED'] = '/var/www/vhosts/example.com/htdocs/doku.php'; $_SERVER['PHP_SELF'] = '/doku.php/wiki/dokuwiki'; $this->assertEqual(getID(), 'wiki:dokuwiki'); } /** * getID with given id / in url and userewrite=2, no basedir set, Apache and CGI. */ function test5() { global $conf; $conf['basedir'] = ''; $conf['userewrite'] = '2'; $conf['baseurl'] = ''; $_SERVER['DOCUMENT_ROOT'] = '/var/www/'; $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php'; $_SERVER['SCRIPT_NAME'] = '/dokuwiki/doku.php'; $_SERVER['REQUEST_URI'] = '/dokuwiki/doku.php/?do=debug'; $_SERVER['PATH_INFO'] = '/'; $_SERVER['PATH_TRANSLATED'] = '/var/www/index.html'; $_SERVER['PHP_SELF'] = '/dokuwiki/doku.php/'; $this->assertEqual(getID(), 'start'); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/pageutils_resolve_id.test.php000066400000000000000000000030401134327003500270020ustar00rootroot00000000000000assertEqual(resolve_id($test[0],$test[1]),$test[2]); } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/pageutils_resolve_pageid.test.php000066400000000000000000000040741134327003500276470ustar00rootroot00000000000000assertEqual($page,$test[2]); } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/000077500000000000000000000000001134327003500224025ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/.htaccess000066400000000000000000000001051134327003500241740ustar00rootroot00000000000000## no access to the inc directory order allow,deny allow from all splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/lexer.group.php000066400000000000000000000005601134327003500253660ustar00rootroot00000000000000GroupTest('LexerGroupTest'); $this->addTestFile(dirname(__FILE__).'/lexer.test.php'); } } ?> splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/lexer.test.php000066400000000000000000000526231134327003500252200ustar00rootroot00000000000000UnitTestCase(); } function testNoPatterns() { $regex = &new Doku_LexerParallelRegex(false); $this->assertFalse($regex->match("Hello", $match)); $this->assertEqual($match, ""); } function testNoSubject() { $regex = &new Doku_LexerParallelRegex(false); $regex->addPattern(".*"); $this->assertTrue($regex->match("", $match)); $this->assertEqual($match, ""); } function testMatchAll() { $regex = &new Doku_LexerParallelRegex(false); $regex->addPattern(".*"); $this->assertTrue($regex->match("Hello", $match)); $this->assertEqual($match, "Hello"); } function testCaseSensitive() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("abc"); $this->assertTrue($regex->match("abcdef", $match)); $this->assertEqual($match, "abc"); $this->assertTrue($regex->match("AAABCabcdef", $match)); $this->assertEqual($match, "abc"); } function testCaseInsensitive() { $regex = &new Doku_LexerParallelRegex(false); $regex->addPattern("abc"); $this->assertTrue($regex->match("abcdef", $match)); $this->assertEqual($match, "abc"); $this->assertTrue($regex->match("AAABCabcdef", $match)); $this->assertEqual($match, "ABC"); } function testMatchMultiple() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("abc"); $regex->addPattern("ABC"); $this->assertTrue($regex->match("abcdef", $match)); $this->assertEqual($match, "abc"); $this->assertTrue($regex->match("AAABCabcdef", $match)); $this->assertEqual($match, "ABC"); $this->assertFalse($regex->match("Hello", $match)); } function testPatternLabels() { $regex = &new Doku_LexerParallelRegex(false); $regex->addPattern("abc", "letter"); $regex->addPattern("123", "number"); $this->assertIdentical($regex->match("abcdef", $match), "letter"); $this->assertEqual($match, "abc"); $this->assertIdentical($regex->match("0123456789", $match), "number"); $this->assertEqual($match, "123"); } function testMatchMultipleWithLookaheadNot() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("abc"); $regex->addPattern("ABC"); $regex->addPattern("a(?!\n).{1}"); $this->assertTrue($regex->match("abcdef", $match)); $this->assertEqual($match, "abc"); $this->assertTrue($regex->match("AAABCabcdef", $match)); $this->assertEqual($match, "ABC"); $this->assertTrue($regex->match("a\nab", $match)); $this->assertEqual($match, "ab"); $this->assertFalse($regex->match("Hello", $match)); } function testMatchSetOptionCaseless() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("a(?i)b(?i)c"); $this->assertTrue($regex->match("aBc", $match)); $this->assertEqual($match, "aBc"); } function testMatchSetOptionUngreedy() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("(?U)\w+"); $this->assertTrue($regex->match("aaaaaa", $match)); $this->assertEqual($match, "a"); } function testMatchLookaheadEqual() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("\w(?=c)"); $this->assertTrue($regex->match("xbyczd", $match)); $this->assertEqual($match, "y"); } function testMatchLookaheadNot() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("\w(?!b|c)"); $this->assertTrue($regex->match("xbyczd", $match)); $this->assertEqual($match, "b"); } function testMatchLookbehindEqual() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("(?<=c)\w"); $this->assertTrue($regex->match("xbyczd", $match)); $this->assertEqual($match, "z"); } function testMatchLookbehindNot() { $regex = &new Doku_LexerParallelRegex(true); $regex->addPattern("(?assertTrue($regex->match("xbyczd", $match)); $this->assertEqual($match, "c"); } } class TestOfLexerStateStack extends UnitTestCase { function TestOfLexerStateStack() { $this->UnitTestCase(); } function testStartState() { $stack = &new Doku_LexerStateStack("one"); $this->assertEqual($stack->getCurrent(), "one"); } function testExhaustion() { $stack = &new Doku_LexerStateStack("one"); $this->assertFalse($stack->leave()); } function testStateMoves() { $stack = &new Doku_LexerStateStack("one"); $stack->enter("two"); $this->assertEqual($stack->getCurrent(), "two"); $stack->enter("three"); $this->assertEqual($stack->getCurrent(), "three"); $this->assertTrue($stack->leave()); $this->assertEqual($stack->getCurrent(), "two"); $stack->enter("third"); $this->assertEqual($stack->getCurrent(), "third"); $this->assertTrue($stack->leave()); $this->assertTrue($stack->leave()); $this->assertEqual($stack->getCurrent(), "one"); } } class TestParser { function TestParser() { } function accept() { } function a() { } function b() { } } Mock::generate('TestParser'); class TestOfLexer extends UnitTestCase { function TestOfLexer() { $this->UnitTestCase(); } function testNoPatterns() { $handler = &new MockTestParser($this); $handler->expectNever("accept"); $handler->setReturnValue("accept", true); $lexer = &new Doku_Lexer($handler); $this->assertFalse($lexer->parse("abcdef")); } function testEmptyPage() { $handler = &new MockTestParser($this); $handler->expectNever("accept"); $handler->setReturnValue("accept", true); $handler->expectNever("accept"); $handler->setReturnValue("accept", true); $lexer = &new Doku_Lexer($handler); $lexer->addPattern("a+"); $this->assertTrue($lexer->parse("")); } function testSinglePattern() { $handler = &new MockTestParser($this); $handler->expectArgumentsAt(0, "accept", array("aaa", DOKU_LEXER_MATCHED, 0)); $handler->expectArgumentsAt(1, "accept", array("x", DOKU_LEXER_UNMATCHED, 3)); $handler->expectArgumentsAt(2, "accept", array("a", DOKU_LEXER_MATCHED, 4)); $handler->expectArgumentsAt(3, "accept", array("yyy", DOKU_LEXER_UNMATCHED, 5)); $handler->expectArgumentsAt(4, "accept", array("a", DOKU_LEXER_MATCHED, 8)); $handler->expectArgumentsAt(5, "accept", array("x", DOKU_LEXER_UNMATCHED, 9)); $handler->expectArgumentsAt(6, "accept", array("aaa", DOKU_LEXER_MATCHED, 10)); $handler->expectArgumentsAt(7, "accept", array("z", DOKU_LEXER_UNMATCHED, 13)); $handler->expectCallCount("accept", 8); $handler->setReturnValue("accept", true); $lexer = &new Doku_Lexer($handler); $lexer->addPattern("a+"); $this->assertTrue($lexer->parse("aaaxayyyaxaaaz")); $handler->tally(); } function testMultiplePattern() { $handler = &new MockTestParser($this); $target = array("a", "b", "a", "bb", "x", "b", "a", "xxxxxx", "a", "x"); $positions = array(0,1,2,3,5,6,7,8,14,15); for ($i = 0; $i < count($target); $i++) { $handler->expectArgumentsAt($i, "accept", array($target[$i], '*', $positions[$i])); } $handler->expectCallCount("accept", count($target)); $handler->setReturnValue("accept", true); $lexer = &new Doku_Lexer($handler); $lexer->addPattern("a+"); $lexer->addPattern("b+"); $this->assertTrue($lexer->parse("ababbxbaxxxxxxax")); $handler->tally(); } } class TestOfLexerModes extends UnitTestCase { function TestOfLexerModes() { $this->UnitTestCase(); } function testIsolatedPattern() { $handler = &new MockTestParser($this); $handler->expectArgumentsAt(0, "a", array("a", DOKU_LEXER_MATCHED,0)); $handler->expectArgumentsAt(1, "a", array("b", DOKU_LEXER_UNMATCHED,1)); $handler->expectArgumentsAt(2, "a", array("aa", DOKU_LEXER_MATCHED,2)); $handler->expectArgumentsAt(3, "a", array("bxb", DOKU_LEXER_UNMATCHED,4)); $handler->expectArgumentsAt(4, "a", array("aaa", DOKU_LEXER_MATCHED,7)); $handler->expectArgumentsAt(5, "a", array("x", DOKU_LEXER_UNMATCHED,10)); $handler->expectArgumentsAt(6, "a", array("aaaa", DOKU_LEXER_MATCHED,11)); $handler->expectArgumentsAt(7, "a", array("x", DOKU_LEXER_UNMATCHED,15)); $handler->expectCallCount("a", 8); $handler->setReturnValue("a", true); $lexer = &new Doku_Lexer($handler, "a"); $lexer->addPattern("a+", "a"); $lexer->addPattern("b+", "b"); $this->assertTrue($lexer->parse("abaabxbaaaxaaaax")); $handler->tally(); } function testModeChange() { $handler = &new MockTestParser($this); $handler->expectArgumentsAt(0, "a", array("a", DOKU_LEXER_MATCHED,0)); $handler->expectArgumentsAt(1, "a", array("b", DOKU_LEXER_UNMATCHED,1)); $handler->expectArgumentsAt(2, "a", array("aa", DOKU_LEXER_MATCHED,2)); $handler->expectArgumentsAt(3, "a", array("b", DOKU_LEXER_UNMATCHED,4)); $handler->expectArgumentsAt(4, "a", array("aaa", DOKU_LEXER_MATCHED,5)); $handler->expectArgumentsAt(0, "b", array(":", DOKU_LEXER_ENTER,8)); $handler->expectArgumentsAt(1, "b", array("a", DOKU_LEXER_UNMATCHED,9)); $handler->expectArgumentsAt(2, "b", array("b", DOKU_LEXER_MATCHED, 10)); $handler->expectArgumentsAt(3, "b", array("a", DOKU_LEXER_UNMATCHED,11)); $handler->expectArgumentsAt(4, "b", array("bb", DOKU_LEXER_MATCHED,12)); $handler->expectArgumentsAt(5, "b", array("a", DOKU_LEXER_UNMATCHED,14)); $handler->expectArgumentsAt(6, "b", array("bbb", DOKU_LEXER_MATCHED,15)); $handler->expectArgumentsAt(7, "b", array("a", DOKU_LEXER_UNMATCHED,18)); $handler->expectCallCount("a", 5); $handler->expectCallCount("b", 8); $handler->setReturnValue("a", true); $handler->setReturnValue("b", true); $lexer = &new Doku_Lexer($handler, "a"); $lexer->addPattern("a+", "a"); $lexer->addEntryPattern(":", "a", "b"); $lexer->addPattern("b+", "b"); $this->assertTrue($lexer->parse("abaabaaa:ababbabbba")); $handler->tally(); } function testNesting() { $handler = &new MockTestParser($this); $handler->setReturnValue("a", true); $handler->setReturnValue("b", true); $handler->expectArgumentsAt(0, "a", array("aa", DOKU_LEXER_MATCHED,0)); $handler->expectArgumentsAt(1, "a", array("b", DOKU_LEXER_UNMATCHED,2)); $handler->expectArgumentsAt(2, "a", array("aa", DOKU_LEXER_MATCHED,3)); $handler->expectArgumentsAt(3, "a", array("b", DOKU_LEXER_UNMATCHED,5)); $handler->expectArgumentsAt(0, "b", array("(", DOKU_LEXER_ENTER,6)); $handler->expectArgumentsAt(1, "b", array("bb", DOKU_LEXER_MATCHED,7)); $handler->expectArgumentsAt(2, "b", array("a", DOKU_LEXER_UNMATCHED,9)); $handler->expectArgumentsAt(3, "b", array("bb", DOKU_LEXER_MATCHED,10)); $handler->expectArgumentsAt(4, "b", array(")", DOKU_LEXER_EXIT,12)); $handler->expectArgumentsAt(4, "a", array("aa", DOKU_LEXER_MATCHED,13)); $handler->expectArgumentsAt(5, "a", array("b", DOKU_LEXER_UNMATCHED,15)); $handler->expectCallCount("a", 6); $handler->expectCallCount("b", 5); $lexer = &new Doku_Lexer($handler, "a"); $lexer->addPattern("a+", "a"); $lexer->addEntryPattern("(", "a", "b"); $lexer->addPattern("b+", "b"); $lexer->addExitPattern(")", "b"); $this->assertTrue($lexer->parse("aabaab(bbabb)aab")); $handler->tally(); } function testSingular() { $handler = &new MockTestParser($this); $handler->setReturnValue("a", true); $handler->setReturnValue("b", true); $handler->expectArgumentsAt(0, "a", array("aa", DOKU_LEXER_MATCHED,0)); $handler->expectArgumentsAt(1, "a", array("aa", DOKU_LEXER_MATCHED,3)); $handler->expectArgumentsAt(2, "a", array("xx", DOKU_LEXER_UNMATCHED,5)); $handler->expectArgumentsAt(3, "a", array("xx", DOKU_LEXER_UNMATCHED,10)); $handler->expectArgumentsAt(0, "b", array("b", DOKU_LEXER_SPECIAL,2)); $handler->expectArgumentsAt(1, "b", array("bbb", DOKU_LEXER_SPECIAL,7)); $handler->expectCallCount("a", 4); $handler->expectCallCount("b", 2); $lexer = &new Doku_Lexer($handler, "a"); $lexer->addPattern("a+", "a"); $lexer->addSpecialPattern("b+", "a", "b"); $this->assertTrue($lexer->parse("aabaaxxbbbxx")); $handler->tally(); } function testUnwindTooFar() { $handler = &new MockTestParser($this); $handler->setReturnValue("a", true); $handler->expectArgumentsAt(0, "a", array("aa", DOKU_LEXER_MATCHED,0)); $handler->expectArgumentsAt(1, "a", array(")", DOKU_LEXER_EXIT,2)); $handler->expectCallCount("a", 2); $lexer = &new Doku_Lexer($handler, "a"); $lexer->addPattern("a+", "a"); $lexer->addExitPattern(")", "a"); $this->assertFalse($lexer->parse("aa)aa")); $handler->tally(); } } class TestOfLexerHandlers extends UnitTestCase { function TestOfLexerHandlers() { $this->UnitTestCase(); } function testModeMapping() { $handler = &new MockTestParser($this); $handler->setReturnValue("a", true); $handler->expectArgumentsAt(0, "a", array("aa", DOKU_LEXER_MATCHED,0)); $handler->expectArgumentsAt(1, "a", array("(", DOKU_LEXER_ENTER,2)); $handler->expectArgumentsAt(2, "a", array("bb", DOKU_LEXER_MATCHED,3)); $handler->expectArgumentsAt(3, "a", array("a", DOKU_LEXER_UNMATCHED,5)); $handler->expectArgumentsAt(4, "a", array("bb", DOKU_LEXER_MATCHED,6)); $handler->expectArgumentsAt(5, "a", array(")", DOKU_LEXER_EXIT,8)); $handler->expectArgumentsAt(6, "a", array("b", DOKU_LEXER_UNMATCHED,9)); $handler->expectCallCount("a", 7); $lexer = &new Doku_Lexer($handler, "mode_a"); $lexer->addPattern("a+", "mode_a"); $lexer->addEntryPattern("(", "mode_a", "mode_b"); $lexer->addPattern("b+", "mode_b"); $lexer->addExitPattern(")", "mode_b"); $lexer->mapHandler("mode_a", "a"); $lexer->mapHandler("mode_b", "a"); $this->assertTrue($lexer->parse("aa(bbabb)b")); $handler->tally(); } } class TestParserByteIndex { function TestParserByteIndex() {} function ignore() {} function caught() {} } Mock::generate('TestParserByteIndex'); class TestOfLexerByteIndices extends UnitTestCase { function TestOfLexerByteIndices() { $this->UnitTestCase(); } function testIndex() { $doc = "aaabcdeee"; $handler = &new MockTestParserByteIndex($this); $handler->setReturnValue("ignore", true); $handler->setReturnValue("caught", true); $handler->expectArgumentsAt( 0, "caught", array("", DOKU_LEXER_ENTER, strpos($doc,'')) ); $handler->expectArgumentsAt( 1, "caught", array("b", DOKU_LEXER_SPECIAL, strpos($doc,'b')) ); $handler->expectArgumentsAt( 2, "caught", array("c", DOKU_LEXER_MATCHED, strpos($doc,'c')) ); $handler->expectArgumentsAt( 3, "caught", array("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d')) ); $handler->expectArgumentsAt( 4, "caught", array("", DOKU_LEXER_EXIT, strpos($doc,'')) ); $handler->expectCallCount("caught", 5); $lexer = &new Doku_Lexer($handler, "ignore"); $lexer->addEntryPattern("", "ignore", "caught"); $lexer->addExitPattern("", "caught"); $lexer->addSpecialPattern('b','caught','special'); $lexer->mapHandler('special','caught'); $lexer->addPattern('c','caught'); $this->assertTrue($lexer->parse($doc)); $handler->tally(); } function testIndexLookaheadEqual() { $doc = "aaabcdeee"; $handler = &new MockTestParserByteIndex($this); $handler->setReturnValue("ignore", true); $handler->setReturnValue("caught", true); $handler->expectArgumentsAt( 0, "caught", array("", DOKU_LEXER_ENTER, strpos($doc,'')) ); $handler->expectArgumentsAt( 1, "caught", array("b", DOKU_LEXER_SPECIAL, strpos($doc,'b')) ); $handler->expectArgumentsAt( 2, "caught", array("c", DOKU_LEXER_MATCHED, strpos($doc,'c')) ); $handler->expectArgumentsAt( 3, "caught", array("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d')) ); $handler->expectArgumentsAt( 4, "caught", array("", DOKU_LEXER_EXIT, strpos($doc,'')) ); $handler->expectCallCount("caught", 5); $lexer = &new Doku_Lexer($handler, "ignore"); $lexer->addEntryPattern('(?=.*)', "ignore", "caught"); $lexer->addExitPattern("", "caught"); $lexer->addSpecialPattern('b','caught','special'); $lexer->mapHandler('special','caught'); $lexer->addPattern('c','caught'); $this->assertTrue($lexer->parse($doc)); $handler->tally(); } function testIndexLookaheadNotEqual() { $doc = "aaabcdeee"; $handler = &new MockTestParserByteIndex($this); $handler->setReturnValue("ignore", true); $handler->setReturnValue("caught", true); $handler->expectArgumentsAt( 0, "caught", array("", DOKU_LEXER_ENTER, strpos($doc,'')) ); $handler->expectArgumentsAt( 1, "caught", array("b", DOKU_LEXER_SPECIAL, strpos($doc,'b')) ); $handler->expectArgumentsAt( 2, "caught", array("c", DOKU_LEXER_MATCHED, strpos($doc,'c')) ); $handler->expectArgumentsAt( 3, "caught", array("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d')) ); $handler->expectArgumentsAt( 4, "caught", array("", DOKU_LEXER_EXIT, strpos($doc,'')) ); $handler->expectCallCount("caught", 5); $lexer = &new Doku_Lexer($handler, "ignore"); $lexer->addEntryPattern('(?!foo)', "ignore", "caught"); $lexer->addExitPattern("", "caught"); $lexer->addSpecialPattern('b','caught','special'); $lexer->mapHandler('special','caught'); $lexer->addPattern('c','caught'); $this->assertTrue($lexer->parse($doc)); $handler->tally(); } function testIndexLookbehindEqual() { $doc = "aaabcdeee"; $handler = &new MockTestParserByteIndex($this); $handler->setReturnValue("ignore", true); $handler->setReturnValue("caught", true); $handler->expectArgumentsAt( 0, "caught", array("", DOKU_LEXER_ENTER, strpos($doc,'')) ); $handler->expectArgumentsAt( 1, "caught", array("b", DOKU_LEXER_SPECIAL, strpos($doc,'b')) ); $handler->expectArgumentsAt( 2, "caught", array("c", DOKU_LEXER_MATCHED, strpos($doc,'c')) ); $handler->expectArgumentsAt( 3, "caught", array("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d')) ); $handler->expectArgumentsAt( 4, "caught", array("", DOKU_LEXER_EXIT, strpos($doc,'')) ); $handler->expectCallCount("caught", 5); $lexer = &new Doku_Lexer($handler, "ignore"); $lexer->addEntryPattern('', "ignore", "caught"); $lexer->addExitPattern("(?<=d)", "caught"); $lexer->addSpecialPattern('b','caught','special'); $lexer->mapHandler('special','caught'); $lexer->addPattern('c','caught'); $this->assertTrue($lexer->parse($doc)); $handler->tally(); } function testIndexLookbehindNotEqual() { $doc = "aaabcdeee"; $handler = &new MockTestParserByteIndex($this); $handler->setReturnValue("ignore", true); $handler->setReturnValue("caught", true); $handler->expectArgumentsAt( 0, "caught", array("", DOKU_LEXER_ENTER, strpos($doc,'')) ); $handler->expectArgumentsAt( 1, "caught", array("b", DOKU_LEXER_SPECIAL, strpos($doc,'b')) ); $handler->expectArgumentsAt( 2, "caught", array("c", DOKU_LEXER_MATCHED, strpos($doc,'c')) ); $handler->expectArgumentsAt( 3, "caught", array("d", DOKU_LEXER_UNMATCHED, strpos($doc,'d')) ); $handler->expectArgumentsAt( 4, "caught", array("", DOKU_LEXER_EXIT, strpos($doc,'')) ); $handler->expectCallCount("caught", 5); $lexer = &new Doku_Lexer($handler, "ignore"); $lexer->addEntryPattern('', "ignore", "caught"); $lexer->addExitPattern("(?", "caught"); $lexer->addSpecialPattern('b','caught','special'); $lexer->mapHandler('special','caught'); $lexer->addPattern('c','caught'); $this->assertTrue($lexer->parse($doc)); $handler->tally(); } /** * This test is primarily to ensure the correct match is chosen * when there are non-captured elements in the pattern. */ function testIndexSelectCorrectMatch() { $doc = "ALL FOOLS ARE FOO"; $pattern = '\bFOO\b'; $handler = &new MockTestParserByteIndex($this); $handler->setReturnValue("ignore", true); $handler->setReturnValue("caught", true); $matches = array(); preg_match('/'.$pattern.'/',$doc,$matches,PREG_OFFSET_CAPTURE); $handler->expectArgumentsAt( 0, "caught", array("FOO", DOKU_LEXER_SPECIAL, $matches[0][1]) ); $handler->expectCallCount("caught", 1); $lexer = &new Doku_Lexer($handler, "ignore"); $lexer->addSpecialPattern($pattern,'ignore','caught'); $this->assertTrue($lexer->parse($doc)); $handler->tally(); } } ?> splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser.group.php000066400000000000000000000021741134327003500255460ustar00rootroot00000000000000GroupTest('ParserGroupTest'); $this->addTestFile($dir . 'parser_eol.test.php'); $this->addTestFile($dir . 'parser_footnote.test.php'); $this->addTestFile($dir .'parser_formatting.test.php'); $this->addTestFile($dir .'parser_headers.test.php'); $this->addTestFile($dir .'parser_i18n.test.php'); $this->addTestFile($dir .'parser_links.test.php'); $this->addTestFile($dir .'parser_lists.test.php'); $this->addTestFile($dir .'parser_preformatted.test.php'); $this->addTestFile($dir .'parser_quote.test.php'); $this->addTestFile($dir .'parser_replacements.test.php'); $this->addTestFile($dir .'parser_table.test.php'); # $this->addTestFile($dir .'parser_tocsections.test.php'); $this->addTestFile($dir .'parser_unformatted.test.php'); } } ?> splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser.inc.php000066400000000000000000000021161134327003500251570ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser'); } function setup() { $this->P = & new Doku_Parser(); $this->H = & new Doku_Handler(); $this->P->Handler = & $this->H; } function tearDown() { unset($this->P); unset($this->H); } } function stripByteIndex($call) { unset($call[2]); if ($call[0] == "nest") { $call[1][0] = array_map('stripByteIndex',$call[1][0]); } return $call; } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_eol.test.php000066400000000000000000000070151134327003500262270ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Eol'); } function testEol() { $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("Foo\nBar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("Foo".DOKU_PARSER_EOL."Bar".DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testEolMultiple() { $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("Foo\n\nbar\nFoo"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("Foo")), array('p_close',array()), array('p_open',array()), array('cdata',array("bar".DOKU_PARSER_EOL."Foo".DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testWinEol() { $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("Foo\r\nBar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("Foo".DOKU_PARSER_EOL."Bar".DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testLinebreak() { $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); $this->P->parse('Foo\\\\ Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nFoo")), array('linebreak',array()), array('cdata',array("Bar\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testLinebreakPlusEol() { $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse('Foo\\\\'."\n\n".'Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("Foo")), array('linebreak',array()), array('p_close',array()), array('p_open',array()), array('cdata',array("Bar".DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testLinebreakInvalid() { $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); $this->P->parse('Foo\\\\Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo\\\\Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_footnote.test.php000066400000000000000000000354421134327003500273120ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Footnote'); } function setup() { parent::setup(); $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote()); } function testFootnote() { $this->P->parse('Foo (( testing )) Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' testing ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotAFootnote() { $this->P->parse("Foo (( testing\n Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nFoo (( testing\n Bar\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteLinefeed() { $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("Foo (( testing\ntesting )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array('Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(" testing\ntesting ")), array('footnote_close',array()), ))), array('cdata',array(' Bar'.DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteNested() { $this->P->parse('Foo (( x((y))z )) Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' x((y')), array('footnote_close',array()), ))), array('cdata',array('z )) Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteEol() { $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("Foo \nX(( test\ning ))Y\n Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array('Foo '.DOKU_PARSER_EOL.'X')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(" test\ning ")), array('footnote_close',array()), ))), array('cdata',array('Y'.DOKU_PARSER_EOL.' Bar'.DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteStrong() { $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse('Foo (( **testing** )) Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' ')), array('strong_open',array()), array('cdata',array('testing')), array('strong_close',array()), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteHr() { $this->P->addMode('hr',new Doku_Parser_Mode_HR()); $this->P->parse("Foo (( \n ---- \n )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' ')), array('hr',array()), array('cdata',array("\n ")), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteCode() { $this->P->addMode('code',new Doku_Parser_Mode_Code()); $this->P->parse("Foo (( Test )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' ')), array('code',array('Test',null,null)), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnotePreformatted() { $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->parse("Foo (( \n Test\n )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' ')), array('preformatted',array('Test')), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnotePreformattedEol() { $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("Foo (( \n Test\n )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array('Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' ')), array('preformatted',array('Test')), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'.DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteUnformatted() { $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); $this->P->parse("Foo (( Test )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' ')), array('unformatted',array('Test')), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteNotHeader() { $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); $this->P->parse("Foo (( \n====Test====\n )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(" \n====Test====\n ")), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteTable() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse("Foo (( | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('table_open',array(3, 2, 8)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(123)), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteList() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse("Foo (( *A * B * C )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteQuote() { $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); $this->P->parse("Foo (( > def >>ghi )) Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('nest', array ( array ( array('footnote_open',array()), array('quote_open',array()), array('cdata',array(" def")), array('quote_open',array()), array('cdata',array("ghi")), array('quote_close',array()), array('quote_close',array()), array('cdata',array(' ')), array('footnote_close',array()), ))), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testFootnoteNesting() { $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse("(( a ** (( b )) ** c ))"); $calls = array( array('document_start',array()), array('p_open',array()), array('cdata',array("\n")), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array(' a ')), array('strong_open',array()), array('cdata',array(' (( b ')), array('footnote_close',array()), ))), array('cdata',array(" ")), array('strong_close',array()), array('cdata',array(" c ))\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_formatting.test.php000066400000000000000000000371671134327003500276350ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Formatting'); } function testStrong() { $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse('abc **bar** def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('strong_open',array()), array('cdata',array('bar')), array('strong_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotStrong() { $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse('abc **bar def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc **bar def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEm() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc //bar// def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('emphasis_open',array()), array('cdata',array('bar')), array('emphasis_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEmColon() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc //ТеÑÑ‚: // def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('emphasis_open',array()), array('cdata',array('ТеÑÑ‚: ')), array('emphasis_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEmSingleChar() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc //b// def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('emphasis_open',array()), array('cdata',array('b')), array('emphasis_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEmWithUnknownSchema() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc //foo:// bar// def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('emphasis_open',array()), array('cdata',array('foo:')), array('emphasis_close',array()), array('cdata',array(' bar// def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEmWithKnownSchema() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); $this->P->parse('abc //foo http://www.google.com bar// def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('emphasis_open',array()), array('cdata',array('foo ')), array('externallink',array('http://www.google.com', NULL)), array('cdata',array(' bar')), array('emphasis_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotEm() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc //bar def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc //bar def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotEmSchemaAtOpen() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc foo://bar// def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc foo:')), array('emphasis_open',array()), array('cdata',array('bar')), array('emphasis_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotEmSchemaAtClose() { $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc //http:// def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc //http:// def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEmWithMultiOccurence() { // Case from #763 $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('//text:// Blablabla Blablabla //text:// another Blablabla Blablabla'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n")), array('emphasis_open',array()), array('cdata',array('text:')), array('emphasis_close',array()), array('cdata',array(" Blablabla Blablabla\n\n")), array('emphasis_open',array()), array('cdata',array('text:')), array('emphasis_close',array()), array('cdata',array(" another Blablabla Blablabla\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEmWithUnicode() { // Case from #1468 $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('//ТеÑÑ‚://'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n")), array('emphasis_open',array()), array('cdata',array('ТеÑÑ‚:')), array('emphasis_close',array()), array('cdata',array("\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testUnderline() { $this->P->addMode('underline',new Doku_Parser_Mode_Formatting('underline')); $this->P->parse('abc __bar__ def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('underline_open',array()), array('cdata',array('bar')), array('underline_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotUnderline() { $this->P->addMode('underline',new Doku_Parser_Mode_Formatting('underline')); $this->P->parse('abc __bar def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc __bar def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMonospace() { $this->P->addMode('monospace',new Doku_Parser_Mode_Formatting('monospace')); $this->P->parse("abc ''bar'' def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('monospace_open',array()), array('cdata',array('bar')), array('monospace_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotMonospace() { $this->P->addMode('monospace',new Doku_Parser_Mode_Formatting('monospace')); $this->P->parse("abc ''bar def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc ''bar def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSubscript() { $this->P->addMode('subscript',new Doku_Parser_Mode_Formatting('subscript')); $this->P->parse('abc bar def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('subscript_open',array()), array('cdata',array('bar')), array('subscript_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotSubscript() { $this->P->addMode('subscript',new Doku_Parser_Mode_Formatting('subscript')); $this->P->parse('abc bar def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc bar def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSuperscript() { $this->P->addMode('superscript',new Doku_Parser_Mode_Formatting('superscript')); $this->P->parse("abc bar def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('superscript_open',array()), array('cdata',array('bar')), array('superscript_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotSuperscript() { $this->P->addMode('superscript',new Doku_Parser_Mode_Formatting('superscript')); $this->P->parse("abc bar def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc bar def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testDeleted() { $this->P->addMode('deleted',new Doku_Parser_Mode_Formatting('deleted')); $this->P->parse('abc bar def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('deleted_open',array()), array('cdata',array('bar')), array('deleted_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotDeleted() { $this->P->addMode('deleted',new Doku_Parser_Mode_Formatting('deleted')); $this->P->parse('abc bar def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc bar def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNestedFormatting() { $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->addMode('emphasis',new Doku_Parser_Mode_Formatting('emphasis')); $this->P->parse('abc **a//b//c** def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('strong_open',array()), array('cdata',array('a')), array('emphasis_open',array()), array('cdata',array('b')), array('emphasis_close',array()), array('cdata',array('c')), array('strong_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testIllegalNestedFormatting() { $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse('abc **a**b**c** def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('strong_open',array()), array('cdata',array('a')), array('strong_close',array()), array('cdata',array('b')), array('strong_open',array()), array('cdata',array('c')), array('strong_close',array()), array('cdata',array(' def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_headers.test.php000066400000000000000000000256651134327003500270760ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Headers'); } function testHeader1() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n ====== Header ====== \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',1,6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader2() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n ===== Header ===== \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',2,6)), array('section_open',array(2)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader3() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n ==== Header ==== \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',3,6)), array('section_open',array(3)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader4() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n === Header === \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',4,6)), array('section_open',array(4)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader5() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n == Header == \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',5,6)), array('section_open',array(5)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader2UnevenSmaller() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n ===== Header == \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',2,6)), array('section_open',array(2)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader2UnevenBigger() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n ===== Header =========== \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',2,6)), array('section_open',array(2)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeaderLarge() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n ======= Header ======= \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',1,6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeaderSmall() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n= Header =\n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n= Header =\n def\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader1Mixed() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n====== == Header == ======\n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('== Header ==',1,6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeader5Mixed() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n== ====== Header ====== ==\n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('====== Header ======',5,6)), array('section_open',array(5)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeaderMultiline() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n== ====== Header\n ====== ==\n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n== ====== Header\n")), array('p_close',array()), array('header',array('',1,23)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } # function testNoToc() { # $this->P->addMode('notoc',new Doku_Parser_Mode_NoToc()); # $this->P->parse('abc ~~NOTOC~~ def'); # $this->assertFalse($this->H->meta['toc']); # } function testHeader1Eol() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("abc \n ====== Header ====== \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array('abc '.DOKU_PARSER_EOL)), array('p_close',array()), array('header',array('Header',1, 6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array(' def'.DOKU_PARSER_EOL)), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testHeaderMulti2() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("abc \n ====== Header ====== \n def abc \n ===== Header2 ===== \n def"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc \n")), array('p_close',array()), array('header',array('Header',1,6)), array('section_open',array(1)), array('p_open',array()), array('cdata',array("\n def abc \n")), array('p_close',array()), array('section_close',array()), array('header',array('Header2',2,39)), array('section_open',array(2)), array('p_open',array()), array('cdata',array("\n def\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()) ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_i18n.test.php000066400000000000000000000155241134327003500262330ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_i18n'); } function testFormatting() { $formats = array ( 'strong', 'emphasis', 'underline', 'monospace', 'subscript', 'superscript', 'deleted', ); foreach ( $formats as $format ) { $this->P->addMode($format,new Doku_Parser_Mode_Formatting($format)); } $this->P->parse("I**ñ**t__ë__r//n//âtiôn''à''lizætiøn"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nI")), array('strong_open',array()), array('cdata',array('ñ')), array('strong_close',array()), array('cdata',array('t')), array('underline_open',array()), array('cdata',array('ë')), array('underline_close',array()), array('cdata',array('r')), array('emphasis_open',array()), array('cdata',array('n')), array('emphasis_close',array()), array('cdata',array('â')), array('superscript_open',array()), array('cdata',array('t')), array('superscript_close',array()), array('cdata',array('i')), array('subscript_open',array()), array('cdata',array('ô')), array('subscript_close',array()), array('cdata',array('n')), array('monospace_open',array()), array('cdata',array('à')), array('monospace_close',array()), array('cdata',array('liz')), array('deleted_open',array()), array('cdata',array('æ')), array('deleted_close',array()), array('cdata',array("tiøn\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testHeader() { $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->parse("Foo\n ==== Iñtërnâtiônàlizætiøn ==== \n Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nFoo\n")), array('p_close',array()), array('header',array('Iñtërnâtiônàlizætiøn',3,5)), array('section_open',array(3)), array('p_open',array()), array('cdata',array("\n Bar\n")), array('p_close',array()), array('section_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testTable() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse(' abc | Row 0 Col 1 | Iñtërnâtiônàlizætiøn | Row 0 Col 3 | | Row 1 Col 1 | Iñtërnâtiônàlizætiøn | Row 1 Col 3 | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Iñtërnâtiônàlizætiøn ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Iñtërnâtiônàlizætiøn ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(153)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testAcronym() { $t = array('Iñtërnâtiônàlizætiøn'); $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym($t)); $this->P->parse("Foo Iñtërnâtiônàlizætiøn Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nFoo ")), array('acronym',array('Iñtërnâtiônàlizætiøn')), array('cdata',array(" Bar\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testInterwiki() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[wp>Iñtërnâtiônàlizætiøn|Iñtërnâtiônàlizætiøn]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('interwikilink',array('wp>Iñtërnâtiônàlizætiøn','Iñtërnâtiônàlizætiøn','wp','Iñtërnâtiônàlizætiøn')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInternalLink() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[x:Iñtërnâtiônàlizætiøn:y:foo_bar:z|Iñtërnâtiônàlizætiøn]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internallink',array('x:Iñtërnâtiônàlizætiøn:y:foo_bar:z','Iñtërnâtiônàlizætiøn')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_links.test.php000066400000000000000000000570251134327003500265760ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Links'); } function testExternalLinkSimple() { $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); $this->P->parse("Foo http://www.google.com Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externallink',array('http://www.google.com', NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testExternalLinkCase() { $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); $this->P->parse("Foo HTTP://WWW.GOOGLE.COM Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externallink',array('HTTP://WWW.GOOGLE.COM', NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testExternalLinkJavascript() { $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); $this->P->parse("Foo javascript:alert('XSS'); Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nFoo javascript:alert('XSS'); Bar\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testExternalWWWLink() { $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); $this->P->parse("Foo www.google.com Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externallink',array('http://www.google.com', 'www.google.com')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testExternalFTPLink() { $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); $this->P->parse("Foo ftp.sunsite.com Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externallink',array('ftp://ftp.sunsite.com', 'ftp.sunsite.com')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testEmail() { /* $this->fail('The emaillink mode seems to cause php 5.0.5 to segfault'); return; //FIXME: is this still true?*/ $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); $this->P->parse("Foo Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('emaillink',array('bugs@php.net', NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testEmailRFC2822() { $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); $this->P->parse("Foo <~fix+bug's.for/ev{e}r@php.net> Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('emaillink',array("~fix+bug's.for/ev{e}r@php.net", NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testEmailCase() { $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); $this->P->parse("Foo Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('emaillink',array('bugs@pHp.net', NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInternalLinkOneChar() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[l]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internallink',array('l',NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInternalLinkNamespaceNoTitle() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[foo:bar]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internallink',array('foo:bar',NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInternalLinkNamespace() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[x:1:y:foo_bar:z|Test]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internallink',array('x:1:y:foo_bar:z','Test')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInternalLinkSectionRef() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[wiki:syntax#internal|Syntax]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internallink',array('wiki:syntax#internal','Syntax')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testExternalInInternalLink() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[http://www.google.com|Google]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externallink',array('http://www.google.com','Google')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInterwikiLink() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[iw>somepage|Some Page]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('interwikilink',array('iw>somepage','Some Page','iw','somepage')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInterwikiLinkCase() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[IW>somepage|Some Page]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('interwikilink',array('IW>somepage','Some Page','iw','somepage')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testInterwikiPedia() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[wp>Callback_(computer_science)|callbacks]] Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('interwikilink',array('wp>Callback_(computer_science)','callbacks','wp','Callback_(computer_science)')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testCamelCase() { $this->P->addMode('camelcaselink',new Doku_Parser_Mode_CamelCaseLink()); $this->P->parse("Foo FooBar Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('camelcaselink',array('FooBar')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testFileLink() { $this->P->addMode('filelink',new Doku_Parser_Mode_FileLink()); $this->P->parse('Foo file://temp/file.txt Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('filelink',array('file://temp/file.txt ',NULL)), array('cdata',array('Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testFileLinkInternal() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse('Foo [[file://temp/file.txt|Some File]] Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externallink',array('file://temp/file.txt','Some File')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testWindowsShareLink() { $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink()); $this->P->parse('Foo \\\server\share Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('windowssharelink',array('\\\server\share',NULL)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testWindowsShareLinkInternal() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse('Foo [[\\\server\share|My Documents]] Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('windowssharelink',array('\\\server\share','My Documents')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInternal() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{img.gif}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInternalLinkOnly() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{img.gif?linkonly}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','linkonly')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaNotImage() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{foo.txt?10x10|Some File}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('foo.txt','Some File',null,10,10,'cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInternalLAlign() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{img.gif }} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('img.gif',NULL,'left',NULL,NULL,'cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInternalRAlign() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{ img.gif}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('img.gif',NULL,'right',NULL,NULL,'cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInternalCenter() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{ img.gif }} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('img.gif',NULL,'center',NULL,NULL,'cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInternalParams() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{img.gif?50x100nocache}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('img.gif',NULL,NULL,'50','100','nocache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInternalTitle() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{img.gif?50x100|Some Image}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia',array('img.gif','Some Image',NULL,'50','100','cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaExternal() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{http://www.google.com/img.gif}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,NULL,NULL,'cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaExternalParams() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{http://www.google.com/img.gif?50x100nocache}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,'50','100','nocache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaExternalTitle() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{http://www.google.com/img.gif?50x100|Some Image}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('externalmedia', array('http://www.google.com/img.gif','Some Image',NULL,'50','100','cache','details')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInInternalLink() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[x:1:y:foo_bar:z|{{img.gif?10x20nocache|Some Image}}]] Bar"); $image = array( 'type'=>'internalmedia', 'src'=>'img.gif', 'title'=>'Some Image', 'align'=>NULL, 'width'=>10, 'height'=>20, 'cache'=>'nocache', 'linking'=>'details', ); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internallink',array('x:1:y:foo_bar:z',$image)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaNoImageInInternalLink() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[x:1:y:foo_bar:z|{{foo.txt?10x20nocache|Some Image}}]] Bar"); $image = array( 'type'=>'internalmedia', 'src'=>'foo.txt', 'title'=>'Some Image', 'align'=>NULL, 'width'=>10, 'height'=>20, 'cache'=>'nocache', 'linking'=>'details', ); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internallink',array('x:1:y:foo_bar:z',$image)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testMediaInEmailLink() { $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); $this->P->parse("Foo [[foo@example.com|{{img.gif?10x20nocache|Some Image}}]] Bar"); $image = array( 'type'=>'internalmedia', 'src'=>'img.gif', 'title'=>'Some Image', 'align'=>NULL, 'width'=>10, 'height'=>20, 'cache'=>'nocache', 'linking'=>'details', ); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('emaillink',array('foo@example.com',$image)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testNestedMedia() { $this->P->addMode('media',new Doku_Parser_Mode_Media()); $this->P->parse('Foo {{img.gif|{{foo.gif|{{bar.gif|Bar}}}}}} Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('internalmedia', array('img.gif','{{foo.gif|{{bar.gif|Bar',NULL,NULL,NULL,'cache','details')), array('cdata',array('}}}} Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_lists.test.php000066400000000000000000000354631134327003500266160ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Lists'); } function testUnorderedList() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse(' *A * B * C '); $calls = array ( array('document_start',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testOrderedList() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse(' -A - B - C '); $calls = array ( array('document_start',array()), array('listo_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('listcontent_close',array()), array('listo_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listo_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listo_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMixedList() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse(' -A * B - C '); $calls = array ( array('document_start',array()), array('listo_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listo_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testUnorderedListWinEOL() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse("\r\n *A\r\n * B\r\n * C\r\n"); $calls = array ( array('document_start',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testOrderedListWinEOL() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse("\r\n -A\r\n - B\r\n - C\r\n"); $calls = array ( array('document_start',array()), array('listo_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('listcontent_close',array()), array('listo_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listo_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listo_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testNotAList() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse("Foo -bar *foo Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nFoo -bar *foo Bar\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testUnorderedListParagraph() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse('Foo *A * B * C Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("Foo")), array('p_close',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('p_open',array()), array('cdata',array("Bar".DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } // This is really a failing test - formatting able to spread across list items // Problem is fixing it would mean a major rewrite of lists function testUnorderedListStrong() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse(' ***A** *** B * C** '); $calls = array ( array('document_start',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('strong_open',array()), array('cdata',array("A")), array('strong_close',array()), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('strong_open',array()), array('cdata',array(" B\n * C")), array('strong_close',array()), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listu_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } // This is really a failing test - unformatted able to spread across list items // Problem is fixing it would mean a major rewrite of lists function testUnorderedListUnformatted() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); $this->P->parse(' *%%A%% *%% B * C%% '); $calls = array ( array('document_start',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('unformatted',array("A")), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('unformatted',array(" B\n * C")), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listu_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testUnorderedListLinebreak() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); $this->P->parse(' *A\\\\ D * B * C '); $calls = array ( array('document_start',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('linebreak',array()), array('cdata',array("D")), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' C')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testUnorderedListLinebreak2() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); $this->P->parse(' *A\\\\ * B '); $calls = array ( array('document_start',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array("A")), array('linebreak',array()), array('listcontent_close',array()), array('listitem_close',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(' B')), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testUnorderedListFootnote() { $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote()); $this->P->parse(' *((A)) *(( B * C )) '); $calls = array ( array('document_start',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('nest', array( array( array('footnote_open',array()), array('cdata',array("A")), array('footnote_close',array()) ))), array('listcontent_close',array()), array('listu_open',array()), array('listitem_open',array(2)), array('listcontent_open',array()), array('nest', array( array( array('footnote_open',array()), array('cdata',array(" B")), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(" C )) ")), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('cdata',array("\n\n")), array('footnote_close',array()) ))), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('listitem_close',array()), array('listu_close',array()), array('document_end',array()) ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_preformatted.test.php000066400000000000000000000215751134327003500301530ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Preformatted'); } function testFile() { $this->P->addMode('file',new Doku_Parser_Mode_File()); $this->P->parse('Foo testing Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('p_close',array()), array('file',array('testing',null,null)), array('p_open',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testCode() { $this->P->addMode('code',new Doku_Parser_Mode_Code()); $this->P->parse('Foo testing Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('p_close',array()), array('code',array('testing', null, null)), array('p_open',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testCodeWhitespace() { $this->P->addMode('code',new Doku_Parser_Mode_Code()); $this->P->parse("Foo testing Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('p_close',array()), array('code',array('testing', null, null)), array('p_open',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testCodeLang() { $this->P->addMode('code',new Doku_Parser_Mode_Code()); $this->P->parse("Foo testing Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('p_close',array()), array('code',array('testing', 'php', null)), array('p_open',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testPreformatted() { $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->parse("F oo\n x \n y \nBar\n"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nF oo")), array('p_close',array()), array('preformatted',array("x \n y ")), array('p_open',array()), array('cdata',array('Bar'."\n\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testPreformattedWinEOL() { $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->parse("F oo\r\n x \r\n y \r\nBar\r\n"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nF oo")), array('p_close',array()), array('preformatted',array("x \n y ")), array('p_open',array()), array('cdata',array('Bar'."\n\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testPreformattedTab() { $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->parse("F oo\n\tx\t\n\t\ty\t\nBar\n"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nF oo")), array('p_close',array()), array('preformatted',array("x\t\n\ty\t")), array('p_open',array()), array('cdata',array("Bar\n\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testPreformattedTabWinEOL() { $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->parse("F oo\r\n\tx\t\r\n\t\ty\t\r\nBar\r\n"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nF oo")), array('p_close',array()), array('preformatted',array("x\t\n\ty\t")), array('p_open',array()), array('cdata',array("Bar\n\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testPreformattedList() { $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $this->P->parse(" - x \n * y \nF oo\n x \n y \n -X\n *Y\nBar\n"); $calls = array ( array('document_start',array()), array('listo_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(" x ")), array('listcontent_close',array()), array('listitem_close',array()), array('listo_close',array()), array('listu_open',array()), array('listitem_open',array(1)), array('listcontent_open',array()), array('cdata',array(" y ")), array('listcontent_close',array()), array('listitem_close',array()), array('listu_close',array()), array('p_open',array()), array('cdata',array("F oo")), array('p_close',array()), array('preformatted',array("x \n y \n-X\n*Y")), array('p_open',array()), array('cdata',array("Bar\n\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } // test for php function testPHP() { $this->P->addMode('php',new Doku_Parser_Mode_PHP()); $this->P->parse('Foo testing Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('php',array('testing')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } // test with for HTML function testHTML() { $this->P->addMode('html',new Doku_Parser_Mode_HTML()); $this->P->parse('Foo testing Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('html',array('testing')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testPreformattedPlusHeaderAndEol() { // Note that EOL must come after preformatted! $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); $this->P->addMode('header',new Doku_Parser_Mode_Header()); $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("F oo\n ==Test==\n y \nBar\n"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("F oo")), array('p_close',array()), array('preformatted',array("==Test==\n y ")), array('p_open',array()), array('cdata',array('Bar')), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_quote.test.php000066400000000000000000000066401134327003500266100ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Quote'); } function testQuote() { $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); $this->P->parse("abc\n> def\n>>ghi\nklm"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc")), array('p_close',array()), array('quote_open',array()), array('cdata',array(" def")), array('quote_open',array()), array('cdata',array("ghi")), array('quote_close',array()), array('quote_close',array()), array('p_open',array()), array('cdata',array("klm\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testQuoteWinCr() { $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); $this->P->parse("abc\r\n> def\r\n>>ghi\r\nklm"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc")), array('p_close',array()), array('quote_open',array()), array('cdata',array(" def")), array('quote_open',array()), array('cdata',array("ghi")), array('quote_close',array()), array('quote_close',array()), array('p_open',array()), array('cdata',array("klm\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testQuoteMinumumContext() { $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); $this->P->parse("\n> def\n>>ghi\n "); $calls = array ( array('document_start',array()), array('quote_open',array()), array('cdata',array(" def")), array('quote_open',array()), array('cdata',array("ghi")), array('quote_close',array()), array('quote_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testQuoteEol() { $this->P->addMode('quote',new Doku_Parser_Mode_Quote()); $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse("abc\n> def\n>>ghi\nklm"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("abc")), array('p_close',array()), array('quote_open',array()), array('cdata',array(" def")), array('quote_open',array()), array('cdata',array("ghi")), array('quote_close',array()), array('quote_close',array()), array('p_open',array()), array('cdata',array("klm".DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_quotes.test.php000066400000000000000000000222421134327003500267670ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Quotes'); } function testSingleQuoteOpening() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse("Foo 'hello Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('singlequoteopening',array()), array('cdata',array('hello Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleQuoteOpeningSpecial() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse("Foo said:'hello Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo said:')), array('singlequoteopening',array()), array('cdata',array('hello Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleQuoteClosing() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse("Foo hello' Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo hello')), array('singlequoteclosing',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleQuoteClosingSpecial() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse("Foo hello') Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo hello')), array('singlequoteclosing',array()), array('cdata',array(') Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleQuotes() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse("Foo 'hello' Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('singlequoteopening',array()), array('cdata',array('hello')), array('singlequoteclosing',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testApostrophe() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse("hey it's fine weather today"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'hey it')), array('apostrophe',array()), array('cdata',array('s fine weather today'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleQuotesSpecial() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse("Foo ('hello') Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo (')), array('singlequoteopening',array()), array('cdata',array('hello')), array('singlequoteclosing',array()), array('cdata',array(') Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testDoubleQuoteOpening() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse('Foo "hello Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('doublequoteopening',array()), array('cdata',array('hello Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testDoubleQuoteOpeningSpecial() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse('Foo said:"hello Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo said:')), array('doublequoteopening',array()), array('cdata',array('hello Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testDoubleQuoteClosing() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse('Foo hello" Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo hello')), array('doublequoteclosing',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testDoubleQuoteClosingSpecial() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse('Foo hello") Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo hello')), array('doublequoteclosing',array()), array('cdata',array(') Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testDoubleQuotes() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse('Foo "hello" Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('doublequoteopening',array()), array('cdata',array('hello')), array('doublequoteclosing',array()), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testDoubleQuotesSpecial() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse('Foo ("hello") Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo (')), array('doublequoteopening',array()), array('cdata',array('hello')), array('doublequoteclosing',array()), array('cdata',array(') Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testAllQuotes() { $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes()); $this->P->parse('There was written "He thought \'It\'s a man\'s world\'".'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'There was written ')), array('doublequoteopening',array()), array('cdata',array('He thought ')), array('singlequoteopening',array()), array('cdata',array('It')), array('apostrophe',array()), array('cdata',array('s a man')), array('apostrophe',array()), array('cdata',array('s world')), array('singlequoteclosing',array()), array('doublequoteclosing',array()), array('cdata',array(".\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_replacements.test.php000066400000000000000000000320451134327003500301330ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Replacements'); } function testSingleAcronym() { $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOOBAR'))); $this->P->parse('abc FOOBAR xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('acronym',array('FOOBAR')), array('cdata',array(' xyz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testAlmostAnAcronym() { $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOOBAR'))); $this->P->parse('abcFOOBARxyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abcFOOBARxyz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testPickAcronymCorrectly() { $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOO'))); $this->P->parse('FOOBAR FOO'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'FOOBAR ')), array('acronym',array('FOO')), array('cdata',array("\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultipleAcronyms() { $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOO','BAR'))); $this->P->parse('abc FOO def BAR xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('acronym',array('FOO')), array('cdata',array(' def ')), array('acronym',array('BAR')), array('cdata',array(' xyz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultipleAcronymsWithSubset1() { $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('FOO','A.FOO','FOO.1','A.FOO.1'))); $this->P->parse('FOO A.FOO FOO.1 A.FOO.1'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n")), array('acronym',array('FOO')), array('cdata',array(" ")), array('acronym',array('A.FOO')), array('cdata',array(" ")), array('acronym',array('FOO.1')), array('cdata',array(" ")), array('acronym',array('A.FOO.1')), array('cdata',array("\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultipleAcronymsWithSubset2() { $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym(array('A.FOO.1','FOO.1','A.FOO','FOO'))); $this->P->parse('FOO A.FOO FOO.1 A.FOO.1'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n")), array('acronym',array('FOO')), array('cdata',array(" ")), array('acronym',array('A.FOO')), array('cdata',array(" ")), array('acronym',array('FOO.1')), array('cdata',array(" ")), array('acronym',array('A.FOO.1')), array('cdata',array("\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleSmileyFail() { $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)'))); $this->P->parse('abc:-)xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc:-)xyz\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleSmiley() { $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)'))); $this->P->parse('abc :-) xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('smiley',array(':-)')), array('cdata',array(' xyz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultipleSmileysFail() { $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)','^_^'))); $this->P->parse('abc:-)x^_^yz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc:-)x^_^yz\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultipleSmileys() { $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-)','^_^'))); $this->P->parse('abc :-) x ^_^ yz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('smiley',array(':-)')), array('cdata',array(' x ')), array('smiley',array('^_^')), array('cdata',array(' yz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testBackslashSmileyFail() { // This smiley is really :-\\ but escaping makes like interesting $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-\\\\'))); $this->P->parse('abc:-\\\xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\nabc".':-\\\\'."xyz\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testBackslashSmiley() { // This smiley is really :-\\ but escaping makes like interesting $this->P->addMode('smiley',new Doku_Parser_Mode_Smiley(array(':-\\\\'))); $this->P->parse('abc :-\\\ xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('smiley',array(':-\\\\')), array('cdata',array(' xyz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleWordblock() { $this->P->addMode('wordblock',new Doku_Parser_Mode_Wordblock(array('CAT'))); $this->P->parse('abc CAT xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('wordblock',array('CAT')), array('cdata',array(' xyz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testWordblockCase() { $this->P->addMode('wordblock',new Doku_Parser_Mode_Wordblock(array('CAT'))); $this->P->parse('abc cat xyz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('wordblock',array('cat')), array('cdata',array(' xyz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultipleWordblock() { $this->P->addMode('wordblock',new Doku_Parser_Mode_Wordblock(array('CAT','dog'))); $this->P->parse('abc cat x DOG yz'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'abc ')), array('wordblock',array('cat')), array('cdata',array(' x ')), array('wordblock',array('DOG')), array('cdata',array(' yz'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testSingleEntity() { $this->P->addMode('entity',new Doku_Parser_Mode_Entity(array('->'))); $this->P->parse('x -> y'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'x ')), array('entity',array('->')), array('cdata',array(' y'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultipleEntities() { $this->P->addMode('entity',new Doku_Parser_Mode_Entity(array('->','<-'))); $this->P->parse('x -> y <- z'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'x ')), array('entity',array('->')), array('cdata',array(' y ')), array('entity',array('<-')), array('cdata',array(' z'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultiplyEntity() { $this->P->addMode('multiplyentity',new Doku_Parser_Mode_MultiplyEntity()); $this->P->parse('Foo 10x20 Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('multiplyentity',array(10,20)), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testMultiplyEntityHex() { // the multiply entity pattern should not match hex numbers, eg. 0x123 $this->P->addMode('multiplyentity',new Doku_Parser_Mode_MultiplyEntity()); $this->P->parse('Foo 0x123 Bar'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo 0x123 Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testHR() { $this->P->addMode('hr',new Doku_Parser_Mode_HR()); $this->P->parse("Foo \n ---- \n Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('p_close',array()), array('hr',array()), array('p_open',array()), array('cdata',array("\n Bar\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testHREol() { $this->P->addMode('hr',new Doku_Parser_Mode_HR()); $this->P->parse("Foo \n----\n Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('p_close',array()), array('hr',array()), array('p_open',array()), array('cdata',array("\n Bar\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_table.test.php000066400000000000000000000553551134327003500265510ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Table'); } function testTable() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse(' abc | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(121)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testTableWinEOL() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse("\r\nabc\r\n| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |\r\n| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |\r\ndef"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(121)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testEmptyTable() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse(' abc | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(0, 1, 6)), array('tablerow_open',array()), array('tablerow_close',array()), array('table_close',array(7)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testTableHeaders() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse(' abc ^ X | Y ^ Z | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 1, 6)), array('tablerow_open',array()), array('tableheader_open',array(1,NULL,1)), array('cdata',array(' X ')), array('tableheader_close',array()), array('tablecell_open',array(1,NULL,1)), array('cdata',array(' Y ')), array('tablecell_close',array()), array('tableheader_open',array(1,NULL,1)), array('cdata',array(' Z ')), array('tableheader_close',array()), array('tablerow_close',array()), array('table_close',array(19)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testCellAlignment() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse(' abc | X | Y ^ Z | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 1, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'right',1)), array('cdata',array(' X ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Y ')), array('tablecell_close',array()), array('tableheader_open',array(1,'center',1)), array('cdata',array(' Z ')), array('tableheader_close',array()), array('tablerow_close',array()), array('table_close',array(23)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testCellSpan() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse(' abc | d || e | | f ^ ^| |||| def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 3, 6)), array('tablerow_open',array()), array('tablecell_open',array(2,'right',1)), array('cdata',array(' d ')), array('tablecell_close',array()), array('tablecell_open',array(1,NULL,1)), array('cdata',array(' e ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,NULL,1)), array('cdata',array(' f ')), array('tablecell_close',array()), array('tableheader_open',array(2,NULL,1)), array('cdata',array(' ')), array('tableheader_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablerow_close',array()), array('table_close',array(31)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testCellRowSpan() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->parse(' abc | a | c:::|| |:::^ d | e| |b ^ ::: |:::f| def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 3, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,NULL,2)), array('cdata',array(' a ')), array('tablecell_close',array()), array('tablecell_open',array(2,'right',1)), array('cdata',array(' c:::')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tableheader_open',array(1,'left',2)), array('cdata',array(' d ')), array('tableheader_close',array()), array('tablecell_open',array(1,NULL,1)), array('cdata',array(' e')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array('b ')), array('tablecell_close',array()), array('tablecell_open',array(1,NULL,1)), array('cdata',array(':::f')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(51)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testCellAlignmentFormatting() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse(' abc | **X** | Y ^ Z | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 1, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'right',1)), array('cdata',array(' ')), array('strong_open',array()), array('cdata',array('X')), array('strong_close',array()), array('cdata',array(' ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Y ')), array('tablecell_close',array()), array('tableheader_open',array(1,'center',1)), array('cdata',array(' Z ')), array('tableheader_close',array()), array('tablerow_close',array()), array('table_close',array(27)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testTableEol() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); $this->P->parse(' abc | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array(DOKU_PARSER_EOL."abc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(121)), array('p_open',array()), array('cdata',array('def'.DOKU_PARSER_EOL)), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } // This is really a failing test - formatting able to spread across cols // Problem is fixing it would mean a major rewrite of table handling function testTableStrong() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); $this->P->parse(' abc | **Row 0 Col 1** | **Row 0 Col 2 | Row 0 Col 3** | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' ')), array('strong_open',array()), array('cdata',array('Row 0 Col 1')), array('strong_close',array()), array('cdata',array(' ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' ')), array('strong_open',array()), array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), array('strong_close',array()), array('cdata',array(' ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(129)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } // This is really a failing test - unformatted able to spread across cols // Problem is fixing it would mean a major rewrite of table handling function testTableUnformatted() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); $this->P->parse(' abc | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' ')), array('unformatted',array('Row 0 Col 1')), array('cdata',array(' ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' ')), array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')), array('cdata',array(' ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(155)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } function testTableLinebreak() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); $this->P->parse(' abc | Row 0\\\\ Col 1 | Row 0 Col 2 | Row 0 Col 3 | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0')), array('linebreak',array()), array('cdata',array('Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 0 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(123)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } // This is really a failing test - footnote able to spread across cols // Problem is fixing it would mean a major rewrite of table handling function testTableFootnote() { $this->P->addMode('table',new Doku_Parser_Mode_Table()); $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote()); $this->P->parse(' abc | ((Row 0 Col 1)) | ((Row 0 Col 2 | Row 0 Col 3)) | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | def'); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n\nabc")), array('p_close',array()), array('table_open',array(3, 2, 6)), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array('Row 0 Col 1')), array('footnote_close',array()), ))), array('cdata',array(' ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' ')), array('nest', array ( array ( array('footnote_open',array()), array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), array('footnote_close',array()), ))), array('cdata',array(' ')), array('tablecell_close',array()), array('tablerow_close',array()), array('tablerow_open',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 1 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 2 ')), array('tablecell_close',array()), array('tablecell_open',array(1,'left',1)), array('cdata',array(' Row 1 Col 3 ')), array('tablecell_close',array()), array('tablerow_close',array()), array('table_close',array(129)), array('p_open',array()), array('cdata',array('def'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/parser_unformatted.test.php000066400000000000000000000026271134327003500300040ustar00rootroot00000000000000UnitTestCase('TestOfDoku_Parser_Unformatted'); } function testNowiki() { $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); $this->P->parse("Foo testing Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('unformatted',array('testing')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } function testDoublePercent() { $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); $this->P->parse("Foo %%testing%% Bar"); $calls = array ( array('document_start',array()), array('p_open',array()), array('cdata',array("\n".'Foo ')), array('unformatted',array('testing')), array('cdata',array(' Bar'."\n")), array('p_close',array()), array('document_end',array()), ); $this->assertEqual(array_map('stripByteIndex',$this->H->calls),$calls); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/xhtml_htmlphp.test.php000066400000000000000000000130131134327003500267570ustar00rootroot00000000000000purge = isset($_REQUEST['purge']) ? $_REQUEST['purge'] : null; $_REQUEST['purge'] = 1; if (!isset($conf['cachedir'])) { $conf['cachedir'] = ''; $this->cachedir = false; } else { $this->cachedir = true; } if (function_exists('io_makefiledir')) { runkit_function_rename('io_makefiledir', 'io_makefiledir_real'); } runkit_function_rename('xhtml_htmlphp_test_io_makefiledir','io_makefiledir'); if (function_exists('io_savefile')) { runkit_function_rename('io_savefile', 'io_savefile_real'); } runkit_function_rename('xhtml_htmlphp_test_io_savefile','io_savefile'); runkit_method_rename('GeSHi','parse_code','parse_code_real'); runkit_method_add('GeSHi','parse_code','', '{ return hsc($this->source); }'); parent::setup(); } function teardown() { global $conf; // restore purge if (is_null($this->purge)) unset($_REQUEST['purge']); else $_REQUEST['purge'] = $this->purge; // restore $conf['cachedir'] if necessary if (!$this->cachedir) unset($conf['cachedir']); // restore io_functions runkit_function_rename('io_makefiledir','xhtml_htmlphp_test_io_makefiledir'); if (function_exists('io_makefiledir_real')) { runkit_function_rename('io_makefiledir_real', 'io_makefiledir'); } runkit_function_rename('io_savefile','xhtml_htmlphp_test_io_savefile'); if (function_exists('io_savefile_real')) { runkit_function_rename('io_savefile_real', 'io_savefile'); } // restore GeSHi::parse_code runkit_method_remove('GeSHi','parse_code'); runkit_method_rename('GeSHi','parse_code_real','parse_code'); parent::setup(); } function _run_parser($modes,$data) { foreach ($modes as $mode => $name) { $class = 'Doku_Parser_Mode_'.$name; $this->P->addMode($mode,new $class()); } $R = new Doku_Renderer_tester(); $this->P->parse($data); foreach ( $this->H->calls as $instruction ) { // Execute the callback against the Renderer call_user_func_array(array(&$R, $instruction[0]),$instruction[1]); } return str_replace("\n",'',$R->doc); } function test_html_off(){ $test = array('bold','

<b>bold</b>

'); global $conf; $conf['htmlok'] = 0; $result = $this->_run_parser(array('html'=>'html'),$test[0]); $this->assertEqual($result,$test[1]); } function test_html_on(){ $test = array('bold','

bold

'); global $conf; $conf['htmlok'] = 1; $result = $this->_run_parser(array('html'=>'html'),$test[0]); $this->assertEqual($result,$test[1]); } function test_htmlblock_off(){ $test = array('bold','
<b>bold</b>
'); global $conf; $conf['htmlok'] = 0; $result = $this->_run_parser(array('html'=>'html'),$test[0]); $this->assertEqual($result,$test[1]); } function test_htmlblock_on(){ $test = array('bold','bold'); global $conf; $conf['htmlok'] = 1; $result = $this->_run_parser(array('html'=>'html'),$test[0]); $this->assertEqual($result,$test[1]); } function test_php_off(){ $test = array('echo(1+1);','

echo(1+1);

'); global $conf; $conf['phpok'] = 0; $result = $this->_run_parser(array('php'=>'php'),$test[0]); $this->assertEqual($result,$test[1]); } function test_php_on(){ $test = array('echo(1+1);','

2

'); global $conf; $conf['phpok'] = 1; $result = $this->_run_parser(array('php'=>'php'),$test[0]); $this->assertEqual($result,$test[1]); } function test_phpblock_off(){ $test = array('echo(1+1);','
echo(1+1);
'); global $conf; $conf['phpok'] = 0; $result = $this->_run_parser(array('php'=>'php'),$test[0]); $this->assertEqual($result,$test[1]); } function test_phpblock_on(){ $test = array('echo(1+1);',"2"); global $conf; $conf['phpok'] = 1; $result = $this->_run_parser(array('php'=>'php'),$test[0]); $this->assertEqual($result,$test[1]); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/parser/xhtml_links.test.php000066400000000000000000000027741134327003500264370ustar00rootroot00000000000000emaillink('foo@example.com',''); $expect = '<script>alert('"alert"');</script>'; $this->assertEqual($p->doc,$expect); } function test_emaillink_with_media(){ global $conf; $conf['mailguard'] = 'visible'; $conf['userewrite'] = 2; $image = array( 'type'=>'internalmedia', 'src'=>'img.gif', 'title'=>'Some Image', 'align'=>NULL, 'width'=>10, 'height'=>20, 'cache'=>'nocache', 'linking'=>'details', ); $p = new Doku_Renderer_xhtml(); $p->emaillink('foo@example.com',$image); $expect = 'Some Image'; $this->assertEqual($p->doc,$expect); } } splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_correctidx.test.php000066400000000000000000000056341134327003500257210ustar00rootroot00000000000000assertEqual(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); } } function test_twobyte(){ // we test multiple cases here - format: in, offset, length, out $tests = array(); // two byte, should move to boundary, expect even number $tests[] = array('aaживπά우리をã‚öä',2,false,2); $tests[] = array('aaживπά우리をã‚öä',3,false,2); $tests[] = array('aaживπά우리をã‚öä',4,false,4); $tests[] = array('aaживπά우리をã‚öä',2,true,2); $tests[] = array('aaживπά우리をã‚öä',3,true,4); $tests[] = array('aaживπά우리をã‚öä',4,true,4); foreach($tests as $test){ $this->assertEqual(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); } } function test_threebyte(){ // we test multiple cases here - format: in, offset, length, out $tests = array(); // three byte, should move to boundary 10 or 13 $tests[] = array('aaживπά우리をã‚öä',10,false,10); $tests[] = array('aaживπά우리をã‚öä',11,false,10); $tests[] = array('aaживπά우리をã‚öä',12,false,10); $tests[] = array('aaживπά우리をã‚öä',13,false,13); $tests[] = array('aaживπά우리をã‚öä',10,true,10); $tests[] = array('aaживπά우리をã‚öä',11,true,13); $tests[] = array('aaживπά우리をã‚öä',12,true,13); $tests[] = array('aaживπά우리をã‚öä',13,true,13); foreach($tests as $test){ $this->assertEqual(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); } } function test_bounds(){ // we test multiple cases here - format: in, offset, length, out $tests = array(); // bounds checking $tests[] = array('aaживπά우리をã‚öä',-2,false,0); $tests[] = array('aaживπά우리をã‚öä',128,false,29); $tests[] = array('aaживπά우리をã‚öä',-2,true,0); $tests[] = array('aaживπά우리をã‚öä',128,true,29); foreach($tests as $test){ $this->assertEqual(utf8_correctIdx($test[0],$test[1],$test[2]),$test[3]); } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_html.test.php000066400000000000000000000032651134327003500245150ustar00rootroot00000000000000assertEqual(utf8_tohtml($in),$out); } function test_from_2byte(){ $in = "\xc3\xbc"; $out = 'ü'; $this->assertEqual(utf8_tohtml($in),$out); } function test_from_3byte(){ $in = "\xe2\x99\x8a"; $out = '♊'; $this->assertEqual(utf8_tohtml($in),$out); } function test_from_4byte(){ $in = "\xf4\x80\x80\x81"; $out = '􀀁'; $this->assertEqual(utf8_tohtml($in),$out); } function test_to_1byte(){ $out = 'a'; $in = 'a'; $this->assertEqual(utf8_unhtml($in),$out); } function test_to_2byte(){ $out = "\xc3\xbc"; $in = 'ü'; $this->assertEqual(utf8_unhtml($in),$out); } function test_to_3byte(){ $out = "\xe2\x99\x8a"; $in = '♊'; $this->assertEqual(utf8_unhtml($in),$out); } function test_to_4byte(){ $out = "\xf4\x80\x80\x81"; $in = '􀀁'; $this->assertEqual(utf8_unhtml($in),$out); } function test_without_entities(){ $out = '&#38;&#38;'; $in = '&#38;&amp;#38;'; $this->assertEqual(utf8_unhtml($in),$out); } function test_with_entities(){ $out = '&&#38;'; $in = '&#38;&amp;#38;'; $this->assertEqual(utf8_unhtml($in,HTML_ENTITIES),$out); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_kanaromaji.txt000066400000000000000000016164261134327003500247510ustar00rootroot00000000000000ã„ã¤ã‹;itsuka ã„ã¤ã‹;itsuka ã„ã¤ã¤;itsutsu ã„ã¤ã§ã‚‚;itsudemo ã„ã¤ã®ã¾ã«ã‹;itsunomanika ã„ã¤ã¾ã§ã‚‚;itsumademo ã„ã¤ã‚‚;itsumo ã„ã¦ã‚“;iten ã„ã¨;ito ã„ã¨ã“;itoko ã„ã¨ã“;itoko ã„ã¨ã¾;itoma ã„ã©;ido ã„ã©;ido ã„ã©ã†;idou ã„ãªã„;inai ã„ãªã‹;inaka ã„ã«ã—ãˆ;inishie ã„ã¬;inu ã„ã­;ine ã„ã­ã‚€ã‚Š;inemuri ã„ã®ã¡;inochi ã„ã®ã‚‹;inoru ã„ã¯ã‚“;ihan ã„ã°ã‚‹;ibaru ã„ãµã;ifuku ã„ã¾;ima ã„ã¾;ima ã„ã¾ã«;imani ã„ã¾ã«ã‚‚;imanimo ã„ã¿;imi ã„ã‚‚ã†ã¨;imouto ã„ã‚„;iya ã„ã‚„ãŒã‚‹;iyagaru ã„よã„よ;iyoiyo ã„らã„;irai ã„らã„;irai ã„らã„ら;iraira ã„らã£ã—ゃる;irassharu ã„りãã¡;iriguchi ã„りょã†;iryou ã„ã‚‹;iru ã„ã‚‹;iru ã„ã‚‹;iru ã„ã‚‹;iru ã„れもã®;iremono ã„れる;ireru ã„ã‚;iro ã„ã‚ã„ã‚;iroiro ã„ã‚;iwa ã„ã‚ã„;iwai ã„ã‚ã†;iwau ã„ã‚ã°;iwaba ã„ã‚ゆる;iwayuru ã„ã‚“;in ã„ã‚“;in ã„ã‚“ã•ã¤;insatsu ã„ã‚“ã—ょã†;inshou ã„ã‚“ãŸã„;intai ã„んよã†;in_you ã„んりょã;inryoku ã†ãˆ;ue ã†ãˆã;ueki ã†ãˆã—ãŸ;ueshita ã†ãˆã‚‹;ueru ã†ãˆã‚‹;ueru ã†ãŠ;uo ã†ã‹ãŒã†;ukagau ã†ã‹ã¶;ukabu ã†ã‹ã¹ã‚‹;ukaberu ã†ãŒã„;ugai ã†ã;uku ã†ã‘ãŸã¾ã‚ã‚‹;uketamawaru ã†ã‘ã¤ã‘;uketsuke ã†ã‘ã¨ã‚Š;uketori ã†ã‘ã¨ã‚‹;uketoru ã†ã‘ã‚‚ã¤;ukemotsu ã†ã‘ã‚‹;ukeru ã†ã”ã‹ã™;ugokasu ã†ã”ã;ugoku ã†ã•ãŽ;usagi ã†ã—;ushi ã†ã—ãªã†;ushinau ã†ã˜;uji ã†ã™ã„;usui ã†ã™ãらã„;usugurai ã†ã™ã‚ã‚‹;usumeru ã†ãšã‚ã‚‹;uzumeru ã†ã;uso ã†ãŸ;uta ã†ãŸã†;utau ã†ãŸãŒã†;utagau ã†ã¡;uchi ã†ã¡ã‚ã‚ã›;uchiawase ã†ã¡ã‚ã‚ã›ã‚‹;uchiawaseru ã†ã¡ã‘ã™;uchikesu ã†ã¡ã‚…ã†;uchuu ã†ã£ã‹ã‚Š;ukkari ã†ã£ãŸãˆã‚‹;uttaeru ã†ã¤;utsu ã†ã¤;utsu ã†ã¤;utsu ã†ã¤ãã—ã„;utsukushii ã†ã¤ã™;utsusu ã†ã¤ã™;utsusu ã†ã¤ã™;utsusu ã†ã¤ã‚‹;utsuru ã†ã¤ã‚‹;utsuru ã†ã¤ã‚‹;utsuru ã†ã¤ã‚;utsuwa ã†ã§;ude ã†ã©ã‚“;udon ã†ãªãšã;unazuku ã†ãªã‚‹;unaru ã†ã°ã†;ubau ã†ã¾;uma ã†ã¾ã„;umai ã†ã¾ã‚Œ;umare ã†ã¾ã‚Œã‚‹;umareru ã†ã¿;umi ã†ã‚€;umu ã†ã‚;ume ã†ã‚„ã¾ã†;uyamau ã†ã‚‰;ura ã†ã‚‰;ura ã†ã‚‰ãŒãˆã™;uragaesu ã†ã‚‰ãŽã‚‹;uragiru ã†ã‚‰ãã¡;uraguchi ã†ã‚‰ãªã†;uranau ã†ã‚‰ã¿;urami ã†ã‚‰ã‚€;uramu ã†ã‚‰ã‚„ã¾ã—ã„;urayamashii ã†ã‚‰ã‚„ã‚€;urayamu ã†ã‚Šã‚ã’;uriage ã†ã‚Šãれ;urikire ã†ã‚Šãれる;urikireru ã†ã‚Šã°;uriba ã†ã‚‹;uru ã†ã‚‹;uru ã†ã‚‹ã•ã„;urusai ã†ã‚Œã—ã„;ureshii ã†ã‚Œã‚†ã;ureyuki ã†ã‚Œã‚‹;ureru ã†ã‚ã†ã‚;urouro ã†ã‚ãŽ;uwagi ã†ã‚ã•;uwasa ã†ã‚ã¦;uwate ã†ã‚ã‚‹;uwaru ã†ã‚“;un ã†ã‚“ãŒ;unga ã†ã‚“ã¦ã‚“;unten ã†ã‚“ã©ã†;undou ãˆ;e ãˆ;e ãˆ;e ãˆ;e ãˆã„ãˆã‚“;eien ãˆã„ãŒ;eiga ãˆã„ãã‚…ã†;eikyuu ãˆã„ãょã†;eikyou ãˆã„ãŽã‚‡ã†;eigyou ãˆã„ã”;eigo ãˆã„ã›ã„;eisei ãˆã„ã¶ã‚“;eibun ãˆã„よã†;eiyou ãˆã„ã‚;eiwa ãˆãˆ;ee ãˆãˆã¨;eeto ãˆãŒãŠ;egao ãˆãŒã;egaku ãˆã;eki ãˆã;eki ãˆããŸã„;ekitai ãˆã•;esa ãˆã ;eda ãˆã®ã;enogu ãˆã‚‰ã„;erai ãˆã‚‰ã¶;erabu ãˆã‚“;en ãˆã‚“;en ãˆã‚“;en ãˆã‚“;en ãˆã‚“;en ãˆã‚“ã‹ã„;enkai ãˆã‚“ã;enki ãˆã‚“ãŽ;engi ãˆã‚“ã’ã„;engei ãˆã‚“ã’ã;engeki ãˆã‚“ã—ã‚…ã†;enshuu ãˆã‚“ã—ã‚…ã†;enshuu ãˆã‚“ã˜ã‚‡;enjo ãˆã‚“ãœã¤;enzetsu ãˆã‚“ãã†;ensou ãˆã‚“ãã;ensoku ãˆã‚“ã¡ã‚‡ã†;enchou ãˆã‚“ã¨ã¤;entotsu ãˆã‚“りょ;enryo ãŠ;o ãŠã„;oi ãŠã„ã‹ã‘ã‚‹;oikakeru ãŠã„ã“ã™;oikosu ãŠã„ã—ã„;oishii ãŠã„ã¤ã;oitsuku ãŠã„ã§ã«ãªã‚‹;oideninaru ãŠã†;ou ãŠã†;ou ãŠã†ãˆã‚“;ouen ãŠã†ã•ã¾;ousama ãŠã†ã—ょã;oushoku ãŠã†ã˜;ouji ãŠã†ã˜ã‚‡;oujo ãŠã†ã˜ã‚‹;oujiru ãŠã†ãšã‚‹;ouzuru ãŠã†ã›ã¤;ousetsu ãŠã†ãŸã„;outai ãŠã†ã ã‚“;oudan ãŠã†ãµã;oufuku ãŠã†ã¹ã„;oubei ãŠã†ã‚ˆã†;ouyou ãŠãˆã‚‹;oeru ãŠãŠã„;ooi ãŠãŠã„ã«;ooini ãŠãŠã†;oou ãŠãŠãã„;ookii ãŠãŠã”ã¨;oogoto ãŠãŠã–ã£ã±;oozappa ãŠãŠã©ãŠã‚Š;oodoori ãŠãŠã‚„;ooya ãŠãŠã‚ˆã;ooyoso ãŠã‹;oka ãŠã‹ã‚ã•ã‚“;okaasan ãŠã‹ã’;okage ãŠã‹ã’ã•ã¾ã§;okagesamade ãŠã‹ã—ã„;okashii ãŠã‹ãš;okazu ãŠã‹ã¾ã„ãªã;okamainaku ãŠã‹ã‚り;okawari ãŠãŒã‚€;ogamu ãŠã;oki ãŠãã‚‹;okiru ãŠãŽãªã†;oginau ãŠã;oku ãŠã;oku ãŠã;oku ãŠããŒã„;okugai ãŠãã•ã‚“;okusan ãŠãã˜ã‚‡ã†;okujou ãŠãりãŒãª;okurigana ãŠãりもã®;okurimono ãŠãã‚‹;okuru ãŠãã‚‹;okuru ãŠãれる;okureru ãŠã“ã•ã‚“;okosan ãŠã“ã™;okosu ãŠã“ãŸã‚‹;okotaru ãŠã“ãªã†;okonau ãŠã“ã‚‹;okoru ãŠã•;osa ãŠã•ãˆã‚‹;osaeru ãŠã•ãã«;osakini ãŠã•ãªã„;osanai ãŠã•ã‚ã‚‹;osameru ãŠã•ã‚ã‚‹;osameru ãŠã•ã‚ã‚‹;osameru ãŠã—ã„;oshii ãŠã—ã„れ;oshiire ãŠã—ãˆã‚‹;oshieru ãŠã—ゃã¹ã‚Š;oshaberi ãŠã—ゃれ;oshare ãŠã˜;oji ãŠã˜ã„ã•ã‚“;ojiisan ãŠã˜ãŽ;ojigi ãŠã˜ã•ã‚“;ojisan ãŠã˜ã‚ƒã¾ã—ã¾ã™;ojamashimasu ãŠã˜ã‚‡ã†ã•ã‚“;ojousan ãŠã™;osu ãŠã›ã‚“;osen ãŠãã„;osoi ãŠãらã;osoraku ãŠãれる;osoreru ãŠãã‚ã—ã„;osoroshii ãŠãã‚ã‚‹;osowaru ãŠã ã„ã˜ã«;odaijini ãŠã ã‚„ã‹;odayaka ãŠã¡ã¤ã;ochitsuku ãŠã¡ã‚‹;ochiru ãŠã£ã—ゃる;ossharu ãŠã£ã¨;otto ãŠã¦ã‚らã„;otearai ãŠã¦ã¤ã ã„ã•ã‚“;otetsudaisan ãŠã¨;oto ãŠã¨ã†ã¨;otouto ãŠã¨ã†ã•ã‚“;otousan ãŠã¨ã“;otoko ãŠã¨ã“ã®ã²ã¨;otokonohito ãŠã¨ã—ã‚‚ã®;otoshimono ãŠã¨ã™;otosu ãŠã¨ã¨ã„;ototoi ãŠã¨ã¨ã—;ototoshi ãŠã¨ãª;otona ãŠã¨ãªã—ã„;otonashii ãŠã¨ã‚;otome ãŠã¨ã‚‹;otoru ãŠã©ã‹ã™;odokasu ãŠã©ã‚Š;odori ãŠã©ã‚‹;odoru ãŠã©ã‚ã‹ã™;odorokasu ãŠã©ã‚ã;odoroku ãŠãªã‹;onaka ãŠãªã”;onago ãŠãªã˜;onaji ãŠã«;oni ãŠã«ã„ã•ã‚“;oniisan ãŠã­ãˆã•ã‚“;oneesan ãŠã­ãŒã„ã—ã¾ã™;onegaishimasu ãŠã®ãŠã®;onoono ãŠã®ãŠã®;onoono ãŠã¯ã‚ˆã†;ohayou ãŠã°;oba ãŠã°ã‚ã•ã‚“;obaasan ãŠã°ã•ã‚“;obasan ãŠã²ã‚‹;ohiru ãŠã³;obi ãŠã¼ãˆã‚‹;oboeru ãŠã¼ã‚Œã‚‹;oboreru ãŠã¾ã„り;omairi ãŠã¾ã¡ã©ãŠã•ã¾;omachidoosama ãŠã¾ã‚りã•ã‚“;omawarisan ãŠã‚ã§ã¨ã†;omedetou ãŠã‚‚;omo ãŠã‚‚ã„;omoi ãŠã‚‚ã„ãŒã‘ãªã„;omoigakenai ãŠã‚‚ã„ãり;omoikiri ãŠã‚‚ã„ã“ã‚€;omoikomu ãŠã‚‚ã„ã ã™;omoidasu ãŠã‚‚ã„ã¤ã;omoitsuku ãŠã‚‚ã„ã§;omoide ãŠã‚‚ã†;omou ãŠã‚‚ã—ã‚ã„;omoshiroi ãŠã‚‚ãŸã„;omotai ãŠã‚‚ã¡ã‚ƒ;omocha ãŠã‚‚ã¦;omote ãŠã‚‚ãªã‚‹;omonaru ãŠã‚‚ã«;omoni ãŠã‚‚ã‚„ã;omoyaku ãŠã‚‚ã‚ãš;omowazu ãŠã‚„;oya ãŠã‚„;oya ãŠã‚„ã™ã¿;oyasumi ãŠã‚„ã¤;oyatsu ãŠã‚„ゆã³;oyayubi ãŠã‚ˆãŽ;oyogi ãŠã‚ˆã;oyogu ãŠã‚ˆã;oyoso ãŠã‚ˆã¼ã™;oyobosu ãŠã‚Šã‚‹;oriru ãŠã‚Šã‚‹;oriru ãŠã‚‹;oru ãŠã‚Œã‚‹;oreru ãŠã‚ã™;orosu ãŠã‚ã™;orosu ãŠã‚り;owari ãŠã‚ã‚‹;owaru ãŠã‚“;on ãŠã‚“ãŒã;ongaku ãŠã‚“ã‘ã„;onkei ãŠã‚“ã—ã¤;onshitsu ãŠã‚“ã›ã‚“;onsen ãŠã‚“ãŸã„;ontai ãŠã‚“ã ã‚“;ondan ãŠã‚“ã¡ã‚…ã†;onchuu ãŠã‚“ã©;ondo ãŠã‚“ãª;onna ãŠã‚“ãªã®ã“;onnanoko ãŠã‚“ãªã®ã²ã¨;onnanohito ã‹;ka ã‹;ka ã‹;ka ã‹;ka ã‹;ka ã‹;ka ã‹ã„;kai ã‹ã„;kai ã‹ã„;kai ã‹ã„ã„ã‚“;kaiin ã‹ã„ã‹ã„;kaikai ã‹ã„ã‹ã‚“;kaikan ã‹ã„ãŒ;kaiga ã‹ã„ãŒã„;kaigai ã‹ã„ãŒã‚“;kaigan ã‹ã„ãŽ;kaigi ã‹ã„ã‘ã„;kaikei ã‹ã„ã‘ã¤;kaiketsu ã‹ã„ã”ã†;kaigou ã‹ã„ã•ã¤;kaisatsu ã‹ã„ã•ã‚“;kaisan ã‹ã„ã—;kaishi ã‹ã„ã—ゃ;kaisha ã‹ã„ã—ゃã;kaishaku ã‹ã„ã˜ã‚‡ã†;kaijou ã‹ã„ã™ã„よã;kaisuiyoku ã‹ã„ã™ã†;kaisuu ã‹ã„ã™ã†ã‘ã‚“;kaisuuken ã‹ã„ã›ã„;kaisei ã‹ã„ã›ã„;kaisei ã‹ã„ã›ã¤;kaisetsu ã‹ã„ãœã‚“;kaizen ã‹ã„ãžã†;kaizou ã‹ã„ã ã‚“;kaidan ã‹ã„ã¤ã†;kaitsuu ã‹ã„ã¦ã;kaiteki ã‹ã„ã¦ã‚“;kaiten ã‹ã„ã¨ã†;kaitou ã‹ã„ã¨ã†;kaitou ã‹ã„ãµã;kaifuku ã‹ã„ã»ã†;kaihou ã‹ã„ã»ã†;kaihou ã‹ã„ã‚‚ã®;kaimono ã‹ã„よã†;kaiyou ã‹ã„ã‚;kaiwa ã‹ã†;kau ã‹ã†;kau ã‹ãˆã™;kaesu ã‹ãˆã™;kaesu ã‹ãˆã£ã¦;kaette ã‹ãˆã‚Š;kaeri ã‹ãˆã‚‹;kaeru ã‹ãˆã‚‹;kaeru ã‹ãˆã‚‹;kaeru ã‹ãˆã‚‹;kaeru ã‹ãˆã‚‹;kaeru ã‹ãˆã‚‹;kaeru ã‹ãŠ;kao ã‹ãŠã;kaoku ã‹ãŠã‚Š;kaori ã‹ã‹ãˆã‚‹;kakaeru ã‹ã‹ã;kakaku ã‹ã‹ã‚Š;kakari ã‹ã‹ã‚‹;kakaru ã‹ã‹ã‚ã‚‹;kakawaru ã‹ãŒã;kagaku ã‹ãŒã;kagaku ã‹ãŒã¿;kagami ã‹ãŒã‚„ã;kagayaku ã‹ãã¨ã‚;kakitome ã‹ãã¨ã‚Š;kakitori ã‹ãã­;kakine ã‹ãŽ;kagi ã‹ãŽã‚Š;kagiri ã‹ãŽã‚‹;kagiru ã‹ã;kaku ã‹ã;kaku ã‹ã;kaku ã‹ã;kaku ã‹ãã†;kakuu ã‹ãã”;kakugo ã‹ãã˜;kakuji ã‹ãã˜ã¤;kakujitsu ã‹ãã˜ã‚…ã†;kakujuu ã‹ãã™;kakusu ã‹ãã ã„;kakudai ã‹ãã¡;kakuchi ã‹ãã¡ã‚‡ã†;kakuchou ã‹ãã©;kakudo ã‹ãã«ã‚“;kakunin ã‹ãã¹ã¤;kakubetsu ã‹ãりã¤;kakuritsu ã—ã³ã‚Œã‚‹;shibireru ã—ã¸ã„;shihei ã—ã»ã‚“;shihon ã—ã¼ã†;shibou ã—ã¼ã‚€;shibomu ã—ã¼ã‚‹;shiboru ã—ã¾;shima ã—ã¾;shima ã—ã¾ã„;shimai ã—ã¾ã†;shimau ã—ã¾ã£ãŸ;shimatta ã—ã¾ã‚‹;shimaru ã—ã¿ã˜ã¿;shimijimi ã—ã¿ã‚“;shimin ã—ã‚ã„;shimei ã—ã‚ãり;shimekiri ã—ã‚ãã‚‹;shimekiru ã—ã‚ã™;shimesu ã—ã‚ãŸ;shimeta ã—ã‚ã‚‹;shimeru ã—ã‚ã‚‹;shimeru ã—ã‚ã‚‹;shimeru ã—ã‚ã‚‹;shimeru ã—ã‚‚;shimo ã—ã‚‚ã¹;shimobe ã—ゃã‹ã„;shakai ã—ゃã‹ã„ã‹ãŒã;shakaikagaku ã—ゃãŒã‚€;shagamu ã—ゃã“;shako ã—ゃã—ょã†;shashou ã—ゃã—ã‚“;shashin ã—ゃã›ã„;shasei ã—ゃã›ã¤;shasetsu ã—ゃã£ãã‚“;shakkin ã—ゃã£ãり;shakkuri ã—ゃã¶ã‚‹;shaburu ã˜ã‚‡ã†ã¯ã¤;jouhatsu ã˜ã‚‡ã†ã²ã‚“;jouhin ã˜ã‚‡ã†ãµ;joufu ã˜ã‚‡ã†ã»ã†;jouhou ã˜ã‚‡ãŠã†;joou ã˜ã‚‡ãょã†ã˜ã‚…;jokyouju ã˜ã‚‡ã—ã‚…;joshu ã˜ã‚‡ã˜ã‚‡ã«;jojoni ã˜ã‚‡ã›ã„;josei ã˜ã‚‡ã‚†ã†;joyuu ã˜ã‚“;jin ã˜ã‚“ã“ã†;jinkou ã˜ã‚“ã“ã†;jinkou ã˜ã‚“ã—ã‚…;jinshu ã˜ã‚“ã˜;jinji ã˜ã‚“ã˜ã‚ƒ;jinja ã˜ã‚“ã›ã„;jinsei ã˜ã‚“ãžã†;jinzou ã˜ã‚“ã¶ã¤;jinbutsu ã˜ã‚“ã¶ã‚“ã‹ãŒã;jinbunkagaku ã˜ã‚“ã‚ã„;jinmei ã˜ã‚“ã‚‚ã;jinmoku ã˜ã‚“ã‚‹ã„;jinrui ã™;su ã™;su ã™ã„ãˆã„;suiei ã™ã„ã•ã‚“;suisan ã™ã„ã˜;suiji ã™ã„ã˜ã‚…ã‚“;suijun ã™ã„ã˜ã‚‡ã†ã;suijouki ã™ã„ã›ã‚“;suisen ã™ã„ã;suiso ã™ã„ã¡ã‚‡ã;suichoku ã™ã„ã¦ã„;suitei ã™ã„ã¦ã;suiteki ã™ã„ã¨ã†;suitou ã™ã„ã©ã†;suidou ã¡ã‚…ã†ãŒã;chuugaku ã¡ã‚…ã†ã’ã‚“;chuugen ã¡ã‚…ã†ã“;chuuko ã¡ã‚…ã†ã—;chuushi ã¡ã‚…ã†ã—;chuushi ã¡ã‚…ã†ã—ゃ;chuusha ã¡ã‚…ã†ã—ゃ;chuusha ã¡ã‚…ã†ã—ょã†;chuushou ã¡ã‚…ã†ã—ょã;chuushoku ã¡ã‚…ã†ã—ã‚“;chuushin ã¡ã‚…ã†ã˜ã‚…ã‚“;chuujun ã¡ã‚…ã†ã›ã„;chuusei ã¡ã‚…ã†ã›ã„;chuusei ã¡ã‚…ã†ã¨;chuuto ã¡ã‚…ã†ã­ã‚“;chuunen ã¡ã‚…ã†ã‚‚ã;chuumoku ã¡ã‚…ã†ã‚‚ã‚“;chuumon ã¡ã‚‡ã†;chou ã¡ã‚‡ã†ã‹;chouka ã¡ã‚‡ã†ã;chouki ã¡ã‚‡ã†ã“ã;choukoku ã¡ã‚‡ã†ã•;chousa ã¡ã‚‡ã†ã—;choushi ã¡ã‚‡ã†ã—ょ;chousho ã¡ã‚‡ã†ã˜ã‚‡;choujo ã¡ã‚‡ã†ã˜ã‚‡ã†;choujou ã¡ã‚‡ã†ã›ã„;chousei ã¡ã‚‡ã†ã›ã¤;chousetsu ã¡ã‚‡ã†ãŸã‚“;choutan ã¡ã‚‡ã†ã ã„;choudai ã¡ã‚‡ã†ã¦ã‚“;chouten ã¡ã‚‡ã†ã©;choudo ã¡ã‚‡ã†ãªã‚“;chounan ã¡ã‚‡ã†ã»ã†ã‘ã„;chouhoukei ã¡ã‚‡ã†ã¿ã‚Šã‚‡ã†;choumiryou ã¡ã‚‡ã†ã‚;choume ã«ã‚“ã;ninki ã«ã‚“ãŽã‚‡ã†;ningyou ã«ã‚“ã’ã‚“;ningen ã¬ã†;nuu ã¬ã;nuku ã¬ã;nugu ã¬ã‘ã‚‹;nukeru ã¬ã™ã‚€;nusumu ã¬ã®;nuno ã¬ã‚‰ã™;nurasu ã¬ã‚‹;nuru ã¬ã‚‹ã„;nurui ã¬ã‚Œã‚‹;nureru ã­;ne ã­;ne ã­ãŒã„;negai ã­ãŒã†;negau ã­ã“;neko ã­ã˜;neji ã­ã˜ã‚‹;nejiru ã­ãš;nezu ã­ã ã‚“;nedan ã­ã£ã—ã‚“;nesshin ã­ã£ã™ã‚‹;nessuru ã­ã£ãŸã„;nettai ã­ã£ã¡ã‚…ã†;necchuu ã­ã¤;netsu ã­ã¼ã†;nebou ã­ã¾ã;nemaki ã­ã¾ã;nemaki ã­ã‚€ã„;nemui ã­ã‚€ã‚‹;nemuru ã­ã‚‰ã„;nerai ã­ã‚‰ã†;nerau ã­ã‚‹;neru ã­ã‚“ã‹ã‚“;nenkan ã­ã‚“ã˜ã‚…ã†;nenjuu ã­ã‚“ã›ã„;nensei ã­ã‚“ã ã„;nendai ã­ã‚“ã©;nendo ã»ã†ãã;housoku ã»ã†ãŸã„;houtai ã»ã†ã¡ã‚‡ã†;houchou ã»ã†ã¦ã„ã—ã;houteishiki ã»ã†ãµ;houfu ã»ã†ã»ã†;houhou ã»ã†ã‚ã‚“;houmen ã»ã†ã‚‚ã‚“;houmon ã»ã†ã‚Šã¤;houritsu ã»ã†ã‚‹;houru ã»ãˆã‚‹;hoeru ã»ãŠ;hoo ã»ã‹;hoka ã»ã‹ã;hokaku ã»ãŒã‚‰ã‹;hogaraka ã»ã‘ã‚“;hoken ã»ã“り;hokori ã»ã“り;hokori ã»ã“ã‚‹;hokoru ã»ã“ã‚ã³ã‚‹;hokorobiru ã»ã—;hoshi ã»ã—ã„;hoshii ã»ã—ょã†;hoshou ã»ã™;hosu ã»ãã„;hosoi ã»ãã†;hosou ã»ãžã‚“;hozon ã»ã£ãょã;hokkyoku ã»ã¨ã‚“ã©;hotondo ã»ã©;hodo ã»ã©ã†;hodou ã»ã©ã;hodoku ã»ã®ãŠ;honoo ã»ã»ãˆã‚€;hohoemu ã»ã¼;hobo ã»ã‚ã‚‹;homeru ã»ã‚Š;hori ã»ã‚‹;horu ã»ã‚‹;horu ã»ã‚“;hon ã‹ãªã‚‰ãšã—ã‚‚;kanarazushimo ã‹ãªã‚‰ãšã—ã‚‚ãªã„;kanarazushimonai ã‚ã‘;wake ãã’;kuge ã¶ã‘;buke ã¸ã„ã¿ã‚“;heimin ã„ãªã‹;inaka ãŸ;ta ãŸã¨ãˆã°;tatoeba ã‚„ã¾;yama ã‚ãŸãªã¹;watanabe ã‹ã‚;kawa ã‚ãŸã‚‹;wataru ã„ã¿;imi ã¤ã¥ã;tsuduki ã‚ããŸ;akita ã‚ããŸã‘ã‚“;akitaken ã‹ã„ã¬ã—;kainushi ã¤ã‹ãˆã‚‹;tsukaeru ãã®ã†ã¡ã«;sonouchini ãªããªã‚‹;nakunaru ã¾ã„ã«ã¡;mainichi ã‚ã„ã ;aida ã­ã‚“ã‹ã‚“;nenkan ã‚ã‚‹;aru ã—ã¬;shinu ãŸã¦ã‚‹;tateru ã²ã¨ã³ã¨;hitobito ゆã†ã‚ã„;yuumei ã«ã»ã‚“ã˜ã‚…ã†;nihonjuu ã¯ã„;hai ã—ょるã„;shorui ã›ã¤ã‚ã„;setsumei ã“ãã›ã;kokuseki ã†ã¾ã‚Œã‚‹;umareru ゆã¿;yumi オーストラリア;oosutoraria スペイン;supein ã˜ã‚…ã†ã—ょ;juusho ã—ょããŽã‚‡ã†;shokugyou ãょã‹ã—ょã†;kyokashou ãŸã„ã–ã„;taizai ãŸã‚;tame ã«ã‚…ã†ãŒãã™ã‚‹;nyuugakusuru クラブ;kurabu テニス;tenisu ã•ã›ã‚‹;saseru ã¦ãŒã¿;tegami りょã†ã—ã‚“;ryoushin ã©ã†ã¶ã¤ãˆã‚“;doubutsuen ã‚‚ãよã†ã³;mokuyoubi ãŠãŠã‚ˆã‚ã“ã³;ooyorokobi ã¯ã˜ã‚ã¦;hajimete ã‚ãŸã—ãŸã¡;watashitachi ã„ã˜ã‚‡ã†;ijou ãªã‚‰ã¶;narabu ãã›ã¤;kisetsu ã“ãŸãˆã‚‹;kotaeru ãりん;kirin ãã³;kubi ã—ã‚;shiwa ãžã†;zou ã ã‚‰ã‘;darake ã¨ã†;tou アフリカ;afurika インド;indo ã¿ã¿;mimi ã‚ã„ãょã†;aikyou ãã¾;kuma ピーナッツ;piinattsu ã‚€ã—ゃむã—ゃ;mushamusha ãˆã ;eda ã•ã‚‹;saru ã¨ã³ã†ã¤ã‚‹;tobiutsuru ã­ã‚€ã„;nemui ã‚;me ゆã£ãり;yukkuri らãã ;rakuda ã„ã‚‚ã†ã¨;imouto ãŠã©ã‚ã;odoroku ãŠã‚Š;ori ã“ã‚ã„;kowai ã¡ã‚ƒã‚“;chan ãªã;naku ã»ãˆã‚‹;hoeru ライオン;raion ã‹ãれる;kakureru ã‹ã;kagu ã‹ã;kagu ã‹ã‘ã–ã‚“;kakezan ã‹ã‘ã¤;kaketsu ã‹ã‘ã‚‹;kakeru ã‹ã‘ã‚‹;kakeru ã‹ã’;kage ã‹ã’ã¤;kagetsu ã‹ã’ã‚“;kagen ã‹ã“;kako ã‹ã“ã†;kakou ã‹ã“ã†;kakou ã‹ã“ã‚€;kakomu ã‹ã”;kago ã‹ã•;kasa ã‹ã•ã„;kasai ã‹ã•ã­ã‚‹;kasaneru ã‹ã–り;kazari ã‹ã–ã‚‹;kazaru ã‹ã–ã‚“;kazan ã‹ã—;kashi ã‹ã—;kashi ã‹ã—ã“ã„;kashikoi ã‹ã—ã“ã¾ã‚Šã¾ã—ãŸ;kashikomarimashita ã‹ã—ã ã—;kashidashi ã‹ã—ã¤;kashitsu ã‹ã—ã¾;kashima ã‹ã—ã‚„;kashiya ã‹ã—ã‚…;kashu ã‹ã—ょ;kasho ã‹ã—ょã†;kashou ã‹ã˜;kaji ã‹ã˜;kaji ã‹ã˜ã¤;kajitsu ã‹ã˜ã‚‡ã†;kajou ã‹ã˜ã‚‹;kajiru ã‹ã™;kasu ã‹ã™ã‚‹;kasuru ã‹ãš;kazu ã‹ã›ã;kasegu ã‹ã›ã‚“;kasen ã‹ãœ;kaze ã‹ãœ;kaze ã‹ãœã„;kazei ã‹ãã;kasoku ã‹ããã©;kasokudo ã‹ãžãˆã‚‹;kazoeru ã‹ãžã;kazoku ã‹ãŸ;kata ã‹ãŸ;kata ã‹ãŸ;kata ã‹ãŸã„;katai ã‹ãŸã„;katai ã‹ãŸã„;katai ã‹ãŸã„;katai ã‹ãŸã‹ãª;katakana ã‹ãŸãŒãŸ;katagata ã‹ãŸã;kataki ã‹ãŸã¡;katachi ã‹ãŸã¥ã;kataduku ã‹ãŸã¥ã‘ã‚‹;katadukeru ã‹ãŸãª;katana ã‹ãŸã¶ã;katabuku ã‹ãŸã¾ã‚Š;katamari ã‹ãŸã¾ã‚‹;katamaru ã‹ãŸã¿ã¡;katamichi ã‹ãŸã‚ˆã‚‹;katayoru ã‹ãŸã‚ˆã‚‹;katayoru ã‹ãŸã‚‹;kataru ã‹ã¡;kachi ã‹ã¡;kachi ã‹ã£ã;kakki ã‹ã£ã“;kakko ã‹ã£ã“ã†;kakkou ã‹ã£ã¦ã«;katteni ã‹ã¤;katsu ã‹ã¤ã;katsugu ã‹ã¤ã˜;katsuji ã‹ã¤ã©ã†;katsudou ã‹ã¤ã‚„ã;katsuyaku ã‹ã¤ã‚ˆã†;katsuyou ã‹ã¤ã‚Šã‚‡ã;katsuryoku ã‹ã¥ã‘;kaduke ã‹ã¦ã„;katei ã‹ã¦ã„;katei ã‹ã¦ã„;katei ã‹ã¦ã„;katei ã‹ã©;kado ã‹ãª;kana ã‹ãªã„;kanai ã‹ãªã—ã„;kanashii ã‹ãªã—ã‚€;kanashimu ã‹ãªã¥ã‹ã„;kanadukai ã‹ãªã¥ã¡;kanaduchi ã‹ãªã‚‰ãšã—ã‚‚;kanarazushimo ã‹ãªã‚Š;kanari ã‹ã­;kane ã‹ã­;kane ã‹ã­ãら;kanegura ã‹ã­ã¤;kanetsu ã‹ã­ã‚‚ã¡;kanemochi ã‹ã­ã‚‹;kaneru ã‹ã®ã†;kanou ã‹ã®ã˜ã‚‡;kanojo ã‹ã¯ã‚“ã™ã†;kahansuu ã‹ã°ã‚“;kaban ã‹ã²ã‚“;kahin ã‹ã³;kabi ã‹ã³ã‚“;kabin ã‹ã¶;kabu ã‹ã¶ã›ã‚‹;kabuseru ã‹ã¶ã‚‹;kaburu ã‹ã¹;kabe ã‹ã¾;kama ã‹ã¾ã„ã¾ã›ã‚“;kamaimasen ã‹ã¿;kami ã‹ã¿;kami ã‹ã¿;kami ã‹ã¿ããš;kamikuzu ã‹ã¿ã•ã¾;kamisama ã‹ã¿ãり;kamisori ã‹ã¿ã®ã‘;kaminoke ã‹ã‚€;kamu ã‹ã‚;kame ã‹ã‚‚ã;kamoku ã‹ã‚‚ã—れãªã„;kamoshirenai ã‹ã‚‚ã¤;kamotsu ã‹ã‚†;kayu ã‹ã‚†ã„;kayui ã‹ã‚ˆã†;kayou ã‹ã‚ˆã†;kayou ã‹ã‚ˆã†;kayou ã‹ã‚‰;kara ã‹ã‚‰ã„;karai ã‹ã‚‰ã‹ã†;karakau ã‹ã‚‰ã ;karada ã‹ã‚‰ã ;karada ã‹ã‚‰ã£ã½;karappo ã‹ã‚Šã‚‹;kariru ã‹ã‚‹;karu ã‹ã‚‹ã„;karui ã‹ã‚‹ãŸ;karuta ã‹ã‚Œ;kare ã‹ã‚Œã‚‰;karera ã‹ã‚Œã‚‹;kareru ã‹ã‚;kawa ã‹ã‚;kawa ã‹ã‚;kawa ã‹ã‚ã„ã„;kawaii ã‹ã‚ã„ãŒã‚‹;kawaigaru ã‹ã‚ã„ãã†;kawaisou ã‹ã‚ã„らã—ã„;kawairashii ã‹ã‚ã‹ã™;kawakasu ã‹ã‚ã;kawaku ã‹ã‚ã;kawaku ã‹ã‚ã›;kawase ã‹ã‚ら;kawara ã‹ã‚り;kawari ã‹ã‚ã‚‹;kawaru ã‹ã‚ã‚‹;kawaru ã‹ã‚“;kan ã‹ã‚“;kan ã‹ã‚“;kan ã‹ã‚“;kan ã‹ã‚“;kan ã‹ã‚“;kan ã‹ã‚“ã‹ã;kankaku ã‹ã‚“ã‹ã;kankaku ã‹ã‚“ãŒãˆ;kangae ã‹ã‚“ãŒãˆã‚‹;kangaeru ã‹ã‚“ã;kanki ã‹ã‚“ãゃã;kankyaku ã‹ã‚“ãょã†;kankyou ã‹ã‚“ã‘ã„;kankei ã‹ã‚“ã’ã„;kangei ã‹ã‚“ã’ã;kangeki ã‹ã‚“ã“ã†;kankou ã‹ã‚“ã”ãµ;kangofu ã‹ã‚“ã•ã„;kansai ã‹ã‚“ã•ã¤;kansatsu ã‹ã‚“ã—ゃ;kansha ã‹ã‚“ã—ょã†;kanshou ã‹ã‚“ã—ã‚“;kanshin ã‹ã‚“ã—ã‚“;kanshin ã‹ã‚“ã˜;kanji ã‹ã‚“ã˜;kanji ã‹ã‚“ã˜ã‚ƒ;kanja ã‹ã‚“ã˜ã‚‡ã†;kanjou ã‹ã‚“ã˜ã‚‡ã†;kanjou ã‹ã‚“ã˜ã‚‹;kanjiru ã‹ã‚“ã™ã‚‹;kansuru ã‹ã‚“ãšã‚‹;kanzuru ã‹ã‚“ã›ã„;kansei ã‹ã‚“ã›ã¤;kansetsu ã‹ã‚“ãœã‚“;kanzen ã‹ã‚“ãã†;kansou ã‹ã‚“ãã†;kansou ã‹ã‚“ãã;kansoku ã‹ã‚“ãŸã„;kantai ã‹ã‚“ãŸã‚“;kantan ã‹ã‚“ã¡ãŒã„;kanchigai ã‹ã‚“ã¡ã‚‡ã†;kanchou ã‹ã‚“ã¥ã‚;kandume ã‹ã‚“ã§ã‚“ã¡;kandenchi ã‹ã‚“ã¨ã†;kantou ã‹ã‚“ã¨ã;kantoku ã‹ã‚“ã©ã†;kandou ã‹ã‚“ã­ã‚“;kannen ã‹ã‚“ã°ã‚“;kanban ã‹ã‚“ã±ã„;kanpai ã‹ã‚“ã³ã‚‡ã†;kanbyou ã‹ã‚“り;kanri ã‹ã‚“りょã†;kanryou ã‹ã‚“れん;kanren ã‹ã‚“ã‚;kanwa ãŒã„;gai ãŒã„;gai ãŒã„ã“ã†;gaikou ãŒã„ã“ã;gaikoku ãŒã„ã—ã‚…ã¤;gaishutsu ãŒã„ã¶;gaibu ãŒã„ã‚ã‚“;gairon ãŒã‹;gaka ãŒã;gaku ãŒãã—ゃ;gakusha ãŒãã—ã‚…ã†;gakushuu ãŒãã˜ã‚…ã¤;gakujutsu ãŒãã›ã„;gakusei ãŒãã­ã‚“;gakunen ãŒãã¶;gakubu ãŒãã‚‚ã‚“;gakumon ãŒãりょã;gakuryoku ãŒã¡;gachi ãŒã£ã‹;gakka ãŒã£ã‹ã„;gakkai ãŒã£ã‹ã‚Š;gakkari ãŒã£ã;gakki ãŒã£ã;gakki ãŒã£ãã‚…ã†;gakkyuu ãŒã£ã“ã†;gakkou ãŒã£ã´;gappi ãŒã¾ã‚“;gaman ãŒã‚‹;garu ãŒã‚;gawa ãŒã‚“ãょã†;gankyou ãŒã‚“ã˜ã¤;ganjitsu ãŒã‚“ã°ã‚‹;ganbaru ã;ki ã;ki ã;ki ã;ki ãã‚ã¤;kiatsu ãã„ã‚ã„;kiiroi ããˆã‚‹;kieru ããŠã;kioku ããŠã‚“;kion ãã‹ã„;kikai ãã‹ã„;kikai ãã‹ãˆã‚‹;kikaeru ãã‹ã‚“;kikan ãã‹ã‚“;kikan ãã‹ã‚“ã—ゃ;kikansha ããã‚“;kikin ããŽã‚‡ã†;kigyou ãã;kiku ãã;kiku ãã;kigu ãã‘ã‚“;kiken ãã’ã‚“;kigen ãã’ã‚“;kigen ãã“ã†;kikou ãã“ãˆã‚‹;kikoeru ãã”ã†;kigou ãã–ã—;kizashi ãã–ã‚€;kizamu ãã—;kishi ãã—ゃ;kisha ãã—ゃ;kisha ãã—ょã†;kishou ãã˜;kiji ãã˜;kiji ãã˜ã‚…ã‚“;kijun ãã™ã†;kisuu ããš;kizu ãã›ã¤;kisetsu ãã›ã‚‹;kiseru ãã;kiso ããã;kisoku ããŸ;kita ããŸã„;kitai ããŸã„;kitai ããŸã;kitaku ããŸãªã„;kitanai ããŸã‚‹;kitaru ãã¡;kichi ãã¡ã‚‡ã†;kichou ãã¡ã‚“ã¨;kichinto ãã£ã‹ã‘;kikkake ãã£ã•;kissa ãã£ã¦;kitte ãã£ã¨;kitto ãã£ã·;kippu ãã¤ã„;kitsui ãã¥ã;kiduku ãã«ã„ã‚‹;kiniiru ãã«ã‚…ã†;kinyuu ãã¬;kinu ãã­ã‚“;kinen ãã®ã†;kinou ãã®ã†;kinou ãã®ã©ã;kinodoku ãã¯ã„;kihai ãã°ã‚“;kiban ãã³ã—ã„;kibishii ããµ;kifu ãã¶ã‚“;kibun ãã»ã‚“;kihon ãã¼ã†;kibou ãã¾ã‚Š;kimari ãã¾ã‚‹;kimaru ãã¿;kimi ãã¿;kimi ãã¿ã‚‡ã†;kimyou ãã‚ã‚‹;kimeru ãã‚‚ã¡;kimochi ãã‚‚ã®;kimono ãゃã;kyaku ãゃãã›ã;kyakuseki ãゃãã¾;kyakuma ãã‚…ã†;kyuu ãã‚…ã†;kyuu ãã‚…ã†;kyuu ãã‚…ã†;kyuu ãã‚…ã†ã‹;kyuuka ãã‚…ã†ãŽã‚‡ã†;kyuugyou ãã‚…ã†ã‘ã„;kyuukei ãã‚…ã†ã’ã;kyuugeki ãã‚…ã†ã“ã†;kyuukou ãã‚…ã†ã“ã†;kyuukou ãã‚…ã†ã—ã‚…ã†;kyuushuu ãã‚…ã†ã˜ã‚‡;kyuujo ãã‚…ã†ãã;kyuusoku ãã‚…ã†ãã;kyuusoku ãã‚…ã†ã‚ˆ;kyuuyo ãã‚…ã†ã‚ˆã†;kyuuyou ãã‚…ã†ã‚Šã‚‡ã†;kyuuryou ãょã†;kyou ãょã†;kyou ãょã†ã„ã;kyouiku ãょã†ã„ã‚“;kyouin ãょã†ã‹;kyouka ãょã†ã‹ã„;kyoukai ãょã†ã‹ã„;kyoukai ãょã†ã‹ã—ょ;kyoukasho ãょã†ãã‚…ã†;kyoukyuu ãょã†ãŽ;kyougi ãょã†ã•ã‚“;kyousan ãょã†ã—;kyoushi ãょã†ã—ã¤;kyoushitsu ãょã†ã—ã‚…ã;kyoushuku ãょã†ã˜ã‚…;kyouju ãょã†ãã†;kyousou ãょã†ã ã„;kyoudai ãょã†ã ã„;kyoudai ãょã†ã¡ã‚‡ã†;kyouchou ãょã†ã¤ã†;kyoutsuu ãょã†ã©ã†;kyoudou ãょã†ãµ;kyoufu ãょã†ã¿;kyoumi ãょã†ã‚ˆã†;kyouyou ãょã†ã‚Š;kyouri ãょã†ã‚Šã‚‡ã;kyouryoku ãょã†ã‚Šã‚‡ã;kyouryoku ãょã‹;kyoka ãょã;kyoku ãょã;kyoku ãょãã›ã‚“;kyokusen ãょã ã„;kyodai ãょã­ã‚“;kyonen ãょり;kyori ãよã„;kiyoi ãよã†;kiyou ãらã„;kirai ãらã†;kirau ãらã;kiraku ãり;kiri ãりã¤;kiritsu ãã‚‹;kiru ãã‚‹;kiru ãã‚‹;kiru ãれã„;kirei ãれる;kireru ãã‚ã;kiroku ãã‚;kiwa ãã‚ãŸ;kiwata ãã‚’ã¤ã‘ã‚‹;kiwotsukeru ãã‚“ãˆã‚“;kin_en ãã‚“ãŒã;kingaku ãã‚“ãã‚“;kinkin ãã‚“ãŽã‚‡;kingyo ãã‚“ã—;kinshi ãã‚“ã˜ã‚‡;kinjo ãã‚“ã›ã‚“;kinsen ãã‚“ãžã;kinzoku ãã‚“ã ã„;kindai ãã‚“ã¡ã‚‡ã†;kinchou ã‚ã‚;aa ã‚ã„;ai ã‚ã„ã‹ã‚らãš;aikawarazu ã‚ã„ã•ã¤;aisatsu ã‚ã„ã˜ã‚‡ã†;aijou ã‚ã„ã™ã‚‹;aisuru ã‚ã„ãš;aizu ã‚ã„ã ;aida ã‚ã„ã¦;aite ã‚ã„ã«ã;ainiku ã‚ã„ã¾ã„;aimai ã‚ã†;au ã‚ã†;au ã‚ã†;au ã‚ãŠ;ao ã‚ãŠã„;aoi ã‚ãŠã˜ã‚ã„;aojiroi ã‚ã‹;aka ã‚ã‹ã„;akai ã‚ã‹ãŒã­;akagane ã‚ã‹ã¡ã‚ƒã‚“;akachan ã‚ã‹ã‚Š;akari ã‚ã‹ã‚‹ã„;akarui ã‚ãŒã‚‹;agaru ã‚ã;aki ã‚ã;aki ã‚ã;aki ã‚ãã†ã©;akiudo ã‚ãらã‹;akiraka ã‚ãらã‚ã‚‹;akirameru ã‚ãã‚‹;akiru ã‚ãれる;akireru ã‚ã;aku ã‚ã;aku ã‚ã;aku ã‚ãã—ã‚…;akushu ã‚ãã³;akubi ã‚ãã¾;akuma ã‚ãã¾ã§;akumade ã‚ãã‚‹;akuru ã‚ã‘ãŒãŸ;akegata ã‚ã‘ã‚‹;akeru ã‚ã‘ã‚‹;akeru ã‚ã’ã‚‹;ageru ã‚ã’ã‚‹;ageru ã‚ã“ãŒã‚Œã‚‹;akogareru ã‚ã•;asa ã‚ã•ã„;asai ã‚ã•ã£ã¦;asatte ã‚ã•ã­ã¼ã†;asanebou ã‚ã–;aza ã‚ã—;ashi ã‚ã—ã‚ã¨;ashiato ã‚ã—ãŸ;ashita ã‚ã—ã‚‚ã¨;ashimoto ã‚ã˜;aji ã‚ã˜ã‚ã†;ajiwau ã‚ãšã‹ã‚‹;azukaru ã‚ãšã‘ã‚‹;azukeru ã‚ãšã¾;azuma ã‚ã›;ase ã‚ãã“;asoko ã‚ãã³;asobi ã‚ãŸã„;atai ã‚ãŸãˆã‚‹;ataeru ã‚ãŸã—;atashi ã‚ãŸãŸã‹ã„;atatakai ã‚ãŸãŸã¾ã‚‹;atatamaru ã‚ãŸãŸã‚ã‚‹;atatameru ã‚ãŸã¾;atama ã‚ãŸã‚‰ã—ã„;atarashii ã‚ãŸã‚Š;atari ã‚ãŸã‚Šã¾ãˆ;atarimae ã‚ãŸã‚‹;ataru ã‚ã ã³ã¨;adabito ã‚ã¡ã“ã¡;achikochi ã‚ã¡ã‚‰;achira ã‚ã¡ã‚‰ã“ã¡ã‚‰;achirakochira ã‚ã£ã“ã†;akkou ã‚ã£ã—ã‚…ã;asshuku ã‚ã£ã¡;acchi ã‚ã¤ã„;atsui ã‚ã¤ã„;atsui ã‚ã¤ã„;atsui ã‚ã¤ã‹ã†;atsukau ã‚ã¤ã‹ã¾ã—ã„;atsukamashii ã‚ã¤ã¾ã‚Š;atsumari ã‚ã¤ã¾ã‚‹;atsumaru ã‚ã¤ã‚ã‚‹;atsumeru ã‚ã¦ãª;atena ã‚ã¦ã¯ã¾ã‚‹;atehamaru ã‚ã¦ã¯ã‚ã‚‹;atehameru ã‚ã¦ã‚‹;ateru ã‚ã¨;ato ã‚ã¨;ato ã‚ãª;ana ã‚ãªãŸ;anata ã‚ã«;ani ã‚ã­;ane ã‚ã®;ano ã‚ã°ã‚Œã‚‹;abareru ã‚ã³ã‚‹;abiru ã‚ãµã‚Œã‚‹;afureru ã‚ã¶ãªã„;abunai ã‚ã¶ã‚‰;abura ã‚ã¶ã‚‹;aburu ã‚ã¾ã„;amai ã‚ã¾ã©;amado ã‚ã¾ã‚„ã‹ã™;amayakasu ã‚ã¾ã‚Š;amari ã‚ã¾ã‚‹;amaru ã‚ã¿ã‚‚ã®;amimono ã‚ã‚€;amu ã‚ã‚;ame ã‚ã‚;ame ã‚ã‚„ã†ã„;ayaui ã‚ã‚„ã—ã„;ayashii ã‚ã‚„ã¾ã‚Š;ayamari ã‚ã‚„ã¾ã‚‹;ayamaru ã‚ら;ara ã‚らã„;arai ã‚らã„;arai ã‚らã†;arau ã‚らã—;arashi ã‚らã™ã˜;arasuji ã‚らãã†;arasou ã‚らãŸ;arata ã‚らãŸã‚ã¦;aratamete ã‚らãŸã‚ã‚‹;aratameru ã‚らゆる;arayuru ã‚らã‚ã™;arawasu ã‚らã‚ã™;arawasu ã‚らã‚ã™;arawasu ã‚らã‚れ;araware ã‚らã‚れる;arawareru ã‚りãŒãŸã„;arigatai ã‚りãŒã¨ã†;arigatou ã‚ã‚‹;aru ã‚ã‚‹;aru ã‚ã‚‹;aru ã‚ã‚‹ã„ã¯;aruiha ã‚ã‚‹ã;aruku ã‚ã‚‹ã˜;aruji ã‚れ;are ã‚れã“れ;arekore ã‚れる;areru ã‚ã‚;awa ã‚ã‚ã›ã‚‹;awaseru ã‚ã‚ãŸã ã—ã„;awatadashii ã‚ã‚ã¦ã‚‹;awateru ã‚ã‚れ;aware ã‚ã‚“;an ã‚ã‚“ã„;an_i ã‚ã‚“ãŒã„;angai ã‚ã‚“ã;anki ã‚ã‚“ã—ã‚“;anshin ã‚ã‚“ãœã‚“;anzen ã‚ã‚“ã¦ã„;antei ã‚ã‚“ãª;anna ã‚ã‚“ãªã„;annai ã‚ã‚“ã¾ã‚Š;anmari ã„;i ã„ã„;ii ã„ã„ãˆ;iie ã„ã„ã ã™;iidasu ã„ã„ã¤ã‘ã‚‹;iitsukeru ã„ã„ã‚“;iin ã„ã†;iu ã„ãˆ;ie ã„ãˆã¬ã—;ienushi ã„ã‹;ika ã„ã‹ãŒ;ikaga ã„ã‹ãšã¡;ikazuchi ã„ã‹ã‚‹;ikaru ã„ãŒã„;igai ã„ãŒã„;igai ã„ãŒã;igaku ã„ã;iki ã„ã;iki ã„ãã„ã;ikiiki ã„ããŠã„;ikioi ã„ããªã‚Š;ikinari ã„ãã‚‚ã®;ikimono ã„ãã‚‹;ikiru ã„ãŽ;igi ã„ã;iku ã„ã;iku ã„ãã•;ikusa ã„ãã•;ikusa ã„ãã˜;ikuji ã„ãã¤;ikutsu ã„ãã¶ã‚“;ikubun ã„ãら;ikura ã„ã‘;ike ã„ã‘ãªã„;ikenai ã„ã‘ã°ãª;ikebana ã„ã‘ã‚“;iken ã„ã“ã†;ikou ã„ã”;igo ã„ã•ã¾ã—ã„;isamashii ã„ã—;ishi ã„ã—;ishi ã„ã—;ishi ã„ã—;ishi ã„ã—ã;ishiki ã„ã—ゃ;isha ã„ã—ょãã˜ã‚…ã†;ishokujuu ã„ã˜;iji ã„ã˜ã‚ã‚‹;ijimeru ã„ã˜ã‚‡ã†;ijou ã„ã˜ã‚‡ã†;ijou ã„ã˜ã‚ã‚‹;ijiwaru ã„ã™;isu ã„ãšã¿;izumi ã„ãšã‚Œ;izure ã„ãœã‚“;izen ã„ããŒã—ã„;isogashii ã„ãã;isogu ã„ãŸ;ita ã„ãŸã„;itai ã„ãŸã™;itasu ã„ãŸãšã‚‰;itazura ã„ãŸã ãã¾ã™;itadakimasu ã„ãŸã ã;itadaku ã„ãŸã¿;itami ã„ãŸã‚€;itamu ã„ãŸã‚‹;itaru ã„ã ã„;idai ã„ã ã;idaku ã„ã¡;ichi ã„ã¡;ichi ã„ã¡;ichi ã„ã¡;ichi ã„ã¡ã„ã¡;ichiichi ã„ã¡ãŠã†;ichiou ã„ã¡ã’ã‚“;ichigen ã„ã¡ã˜;ichiji ã„ã¡ã˜ã¤;ichijitsu ã„ã¡ã˜ã‚‡ã†;ichijou ã„ã¡ã ã‚“ã¨;ichidanto ã„ã¡ã©;ichido ã„ã¡ã©ã«;ichidoni ã„ã¡ã«ã‚“;ichinin ã„ã¡ã°;ichiba ã„ã¡ã°ã‚“;ichiban ã„ã¡ã¶;ichibu ã„ã¡ã‚Šã‚…ã†;ichiryuu ã„ã£ã‹;ikka ã„ã£ã•ãã˜ã¤;issakujitsu ã„ã£ã•ãã­ã‚“;issakunen ã„ã£ã—ã‚…;isshu ã„ã£ã—ã‚…ã‚“;isshun ã„ã£ã—ょ;issho ã„ã£ã—ょã†;isshou ã„ã£ã—ょã†ã‘ã‚“ã‚ã„;isshoukenmei ã„ã£ã›ã„;issei ã„ã£ãã†;issou ã„ã£ãŸã„;ittai ã„ã£ãŸã‚“;ittan ã„ã£ã¡;icchi ã„ã£ã±ã„;ippai ã„ã£ã±ã‚“;ippan ã„ã£ã½ã†;ippou ã„ã¤;itsu ãã‚“ã«ã;kinniku ãんゆã†;kin_yuu ãんよã†;kin_you ãŽã„ã‚“;giin ãŽã‹ã„;gikai ãŽã—;gishi ãŽã—ã;gishiki ãŽã˜ã‚…ã¤;gijutsu ãŽã¡ã‚‡ã†;gichou ãŽã£ã—り;gisshiri ãŽã‚€;gimu ãŽã‚‚ã‚“;gimon ãŽã‚ƒã;gyaku ãŽã‚…ã†ã«ã‚…ã†;gyuunyuu ãŽã‚‡ã†;gyou ãŽã‚‡ã†ãŽ;gyougi ãŽã‚‡ã†ã˜;gyouji ãŽã‚‡ã†ã‚Œã¤;gyouretsu ãŽã‚‡ãŽã‚‡ã†;gyogyou ãŽã‚‡ã;gyoku ãŽã‚ã‚“;giron ãŽã‚“;gin ãŽã‚“ã“ã†;ginkou ã;ku ãã„ã;kuiki ãã†;kuu ãã†ã;kuuki ãã†ã“ã†;kuukou ãã†ãã†;kuusou ãã†ã¡ã‚…ã†;kuuchuu ããŽ;kugi ããŽã‚‹;kugiru ããã‚‹;kuguru ãã•;kusa ãã•ã„;kusai ãã•り;kusari ãã•ã‚‹;kusaru ãã—;kushi ãã—ゃã¿;kushami ãã—ã‚“;kushin ãã˜ã‚‡ã†;kujou ãã™ã‚Š;kusuri ãã™ã‚Šã‚†ã³;kusuriyubi ããš;kuzu ããšã™;kuzusu ããšã‚Œã‚‹;kuzureru ãã›;kuse ããŸã³ã‚Œã‚‹;kutabireru ãã ã;kudaku ãã ã‘ã‚‹;kudakeru ãã ã•ã‚‹;kudasaru ãã ã‚‚ã®;kudamono ãã ã‚‰ãªã„;kudaranai ãã ã‚Š;kudari ãã ã‚‹;kudaru ãã¡;kuchi ãã¡ã³ã‚‹;kuchibiru ãã¡ã¹ã«;kuchibeni ãã£ã¤ã;kuttsuku ãã£ã¤ã‘ã‚‹;kuttsukeru ãã¤;kutsu ãã¤ã†;kutsuu ãã¤ã—ãŸ;kutsushita ãã¨ã†ã¦ã‚“;kutouten ãã©ã„;kudoi ãã«;kuni ãã«ã–ã‹ã„;kunizakai ãã°ã‚‹;kubaru ãã³;kubi ããµã†;kufuu ãã¶ã‚“;kubun ãã¹ã¤;kubetsu ãã¿;kumi ãã¿ã‚ã„;kumiai ãã¿ã‚ã‚ã›;kumiawase ãã¿ãŸã¦ã‚‹;kumitateru ãã‚€;kumu ãã‚€;kumu ãã‚€;kumu ãã‚‚;kumo ãもり;kumori ãã‚‚ã‚‹;kumoru ãã‚„ã—ã„;kuyashii ãã‚„ã‚€;kuyamu ãらã„;kurai ãらã„;kurai ãらã—;kurashi ãらã™;kurasu ãらã¹ã‚‹;kuraberu ãりã‹ãˆã™;kurikaesu ãã‚‹ã†;kuruu ãã‚‹ã—ã„;kurushii ãã‚‹ã—ã‚€;kurushimu ãã‚‹ã—ã‚ã‚‹;kurushimeru ãã‚‹ã¾;kuruma ãã‚‹ã‚€;kurumu ãれ;kure ãれãれも;kureguremo ãれる;kureru ãれる;kureru ãã‚;kuro ãã‚ã„;kuroi ãã‚ã†;kurou ãã‚ãˆã‚‹;kuwaeru ãã‚ã—ã„;kuwashii ãã‚ã‚ã‚‹;kuwawaru ãã‚“;kun ãんれん;kunren ãã‚ã„;guai ãã†ã™ã†;guusuu ãã†ãœã‚“;guuzen ããŸã„;gutai ãã£ã™ã‚Š;gussuri ãらã„;gurai ãã‚“;gun ãã‚“;gun ãã‚“ãŸã„;guntai ã‘;ke ã‘ã„;kei ã‘ã„;kei ã‘ã„;kei ã‘ã„ã„;keii ã‘ã„ãˆã„;keiei ã‘ã„ã‹ã;keikaku ã‘ã„ã‹ã‚“;keikan ã‘ã„ã;keiki ã‘ã„ã‘ã‚“;keiken ã‘ã„ã“;keiko ã‘ã„ã“ã†;keikou ã‘ã„ã“ã†ã¨ã†;keikoutou ã‘ã„ã“ã;keikoku ã‘ã„ã”;keigo ã‘ã„ã•ã¤;keisatsu ã‘ã„ã•ã‚“;keisan ã‘ã„ã–ã„;keizai ã‘ã„ã—ã;keishiki ã‘ã„ã˜;keiji ã‘ã„ã˜;keiji ã‘ã„ãžã;keizoku ã‘ã„ã¨;keito ã‘ã„ã¨ã†;keitou ã‘ã„ã©;keido ã‘ã„ã°;keiba ã‘ã„ã³;keibi ã‘ã„ã‚„ã;keiyaku ã‘ã„ゆ;keiyu ã‘ã„よã†ã—;keiyoushi ã‘ã„よã†ã©ã†ã—;keiyoudoushi ã‘ãŒ;kega ã‘ãŒã™;kegasu ã‘ãŒã‚Œã‚‹;kegareru ã‘ãŒã‚;kegawa ã‘ã•;kesa ã‘ã—ã;keshiki ã‘ã—ょã†;keshou ã‘ã—ゴム;keshigomu ã‘ã™;kesu ã‘ãšã‚‹;kezuru ã‘ãŸ;keta ã‘ã¡;kechi ã‘ã£ã‹;kekka ã‘ã£ã‹ã‚“;kekkan ã‘ã£ãょã;kekkyoku ã‘ã£ã“ã†;kekkou ã‘ã£ã“ã‚“;kekkon ã‘ã£ã•ã;kessaku ã‘ã£ã—ã¦;kesshite ã‘ã£ã—ã‚“;kesshin ã‘ã£ã›ã;kesseki ã‘ã£ã¦ã‚“;ketten ã‘ã¤ã‚ã¤;ketsuatsu ã‘ã¤ãˆã;ketsueki ã‘ã¤ã ã‚“;ketsudan ã‘ã¤ã‚ã‚“;ketsuron ã‘ã‚€ã„;kemui ã‘むり;kemuri ã‘ã‚‹;keru ã‘れã©;keredo ã‘ã‚ã—ã„;kewashii ã‘ã‚“;ken ã‘ã‚“;ken ã‘ã‚“ã‹;kenka ã‘ã‚“ã‹ã„;kenkai ã‘ã‚“ãŒã;kengaku ã‘ã‚“ãã‚…ã†;kenkyuu ã‘ã‚“ãょ;kenkyo ã‘ã‚“ã“ã†;kenkou ã‘ã‚“ã•;kensa ã‘ã‚“ã—ã‚…ã†;kenshuu ã‘ã‚“ã›ã¤;kensetsu ã‘ã‚“ãã‚“;kenson ã‘ã‚“ã¡ã;kenchiku ã‘ã‚“ã¡ã‚‡ã†;kenchou ã‘ã‚“ã¨ã†;kentou ã‘ã‚“ã¨ã†;kentou ã‘ã‚“ã³ãょã†;kenbikyou ã‘ã‚“ã¶ã¤;kenbutsu ã‘ã‚“ã½ã†;kenpou ã‘ã‚“ã‚ã„;kenmei ã‘んり;kenri ã’ã„ã˜ã‚…ã¤;geijutsu ã’ã„ã®ã†;geinou ã’ã‹;geka ã’ã;geki ã’ã;geki ã’ãã˜ã‚‡ã†;gekijou ã’ããžã†;gekizou ã’ã—ゃ;gesha ã’ã—ã‚…ã;geshuku ã’ã˜ã‚…ã‚“;gejun ã’ã™ã„;gesui ã’ãŸ;geta ã’ã£ãã‚…ã†;gekkyuu ã’ã¤ã¾ã¤;getsumatsu ã’ã¤ã‚ˆã†;getsuyou ã’ã‚“;gen ã’ã‚“ã„ã‚“;gen_in ã’ã‚“ã‹ã„;genkai ã’ã‚“ã‹ã‚“;genkan ã’ã‚“ã;genki ã’ã‚“ãã‚“;genkin ã’ã‚“ã“ã†;genkou ã’ã‚“ã”;gengo ã’ã‚“ã•ã‚“;gensan ã’ã‚“ã–ã„;genzai ã’ã‚“ã—;genshi ã’ã‚“ã—ょã†;genshou ã’ã‚“ã˜ã¤;genjitsu ã’ã‚“ã˜ã‚…ã†;genjuu ã’ã‚“ã˜ã‚‡ã†;genjou ã’ã‚“ã˜ã‚‡ã†;genjou ã’ã‚“ã ã„;gendai ã’ã‚“ã©;gendo ã’ã‚“ã«;genni ã’んり;genri ã’んりょã†;genryou ã“;ko ã“;ko ã“;ko ã“ã„;koi ã“ã„;koi ã“ã„ã—ã„;koishii ã“ã„ã³ã¨;koibito ã“ã†;kou ã“ã†;kou ã“ã†ã„ã‚“;kouin ã“ã†ã†ã‚“;kouun ã“ã†ãˆã‚“;kouen ã“ã†ãˆã‚“;kouen ã“ã†ã‹;kouka ã“ã†ã‹;kouka ã“ã†ã‹;kouka ã“ã†ã‹ã‚“;koukan ã“ã†ãŒã„;kougai ã“ã†ãŒã„;kougai ã“ã†ãã‚…ã†;koukyuu ã“ã†ãょã†;koukyou ã“ã†ãŽ;kougi ã“ã†ãŽã‚‡ã†;kougyou ã“ã†ãã†;koukuu ã“ã†ã‘ã„;koukei ã“ã†ã‘ã‚“;kouken ã“ã†ã’ã„;kougei ã“ã†ã’ã;kougeki ã“ã†ã“ã†;koukou ã“ã†ã“ã†;koukou ã“ã†ã“ã;koukoku ã“ã†ã•;kousa ã“ã†ã•ã„;kousai ã“ã†ã•ã¦ã‚“;kousaten ã“ã†ã—;koushi ã“ã†ã—ã;koushiki ã“ã†ã—ゃ;kousha ã“ã†ã—ゃ;kousha ã“ã†ã—ã‚…ã†;koushuu ã“ã†ã˜;kouji ã“ã†ã˜ã¤;koujitsu ã“ã†ã˜ã‚‡ã†;koujou ã“ã†ã™ã„;kousui ã“ã†ã›ã„;kousei ã“ã†ã›ã„;kousei ã“ã†ã›ã;kouseki ã“ã†ã›ã‚“;kousen ã“ã†ãã†;kousou ã“ã†ãã;kousoku ã“ã†ãžã†;kouzou ã“ã†ãŸã„;koutai ã“ã†ã¡;kouchi ã“ã†ã¡ã‚ƒ;koucha ã“ã†ã¤ã†;koutsuu ã“ã†ã¤ã†ãã‹ã‚“;koutsuukikan ã“ã†ã¦ã„;koutei ã“ã†ã¦ã„;koutei ã“ã†ã¨ã†;koutou ã“ã†ã¨ã†ãŒã£ã“ã†;koutougakkou ã“ã†ã©;koudo ã“ã†ã©ã†;koudou ã“ã†ã©ã†;koudou ã“ã†ã¯ã„;kouhai ã“ã†ã°ã‚“;kouban ã“ã†ã²ã‚‡ã†;kouhyou ã“ã†ãµã;koufuku ã“ã†ã¶ã¤;koubutsu ã“ã†ã¸ã„;kouhei ã“ã†ã»;kouho ã“ã†ã‚€;koumu ã“ã†ã‚‚ã;koumoku ã“ã†ã‚ˆã†;kouyou ã“ã†ã‚Šã‚…ã†;kouryuu ã“ã†ã‚Šã‚‡;kouryo ã“ã†ã‚Šã‚‡ã;kouryoku ã“ãˆ;koe ã“ãˆã‚‹;koeru ã“ãˆã‚‹;koeru ã“ãŠã‚Š;koori ã“ãŒã™;kogasu ã“ãã‚…ã†;kokyuu ã“ãょã†;kokyou ã“ããŠã†;kokuou ã“ãã”;kokugo ã“ãã•ã„;kokusai ã“ãã›ã;kokuseki ã“ãã°ã‚“;kokuban ã“ããµã;kokufuku ã“ãã¿ã‚“;kokumin ã“ãã‚‚ã¤;kokumotsu ã“ãりã¤;kokuritsu ã“ã;kogu ã“ã’ã‚‹;kogeru ã“ã“;koko ã“ã“ã®ã‹;kokonoka ã“ã“ã®ã¤;kokonotsu ã“ã“ã‚;kokoro ã“ã“ã‚ã‚ãŸã‚Š;kokoroatari ã“ã“ã‚ãˆã‚‹;kokoroeru ã“ã”ãˆã‚‹;kogoeru ã“ã”ã‚‹;kogoru ã“ã—;koshi ã“ã—ã‹ã‘;koshikake ã“ã—ã‹ã‘ã‚‹;koshikakeru ã“ã—ょã†;koshou ã“ã—ょã†;koshou ã“ã—らãˆã‚‹;koshiraeru ã“ã˜ã‚“;kojin ã“ã™;kosu ã“ã™;kosu ã“ãŸã„;kotai ã“ãŸãˆ;kotae ã“ãŸãˆã‚‹;kotaeru ã“ã¡ã‚‰;kochira ã“ã¡ã‚‰ã“ã;kochirakoso ã“ã£ã‹;kokka ã“ã£ã‹ã„;kokkai ã“ã£ã›ã¤;kossetsu ã“ã£ãり;kossori ã“ã¤;kotsu ã“ã¥ã‹ã„;kodukai ã“ã¥ã¤ã¿;kodutsumi ã“ã¦ã‚“;koten ã“ã¨;koto ã“ã¨;koto ã“ã¨ã—;kotoshi ã“ã¨ã¥ã‘ã‚‹;kotodukeru ã“ã¨ãªã‚‹;kotonaru ã“ã¨ã°;kotoba ã“ã¨ã°ã¥ã‹ã„;kotobadukai ã“ã¨ã‚Š;kotori ã“ã¨ã‚ã–;kotowaza ã“ã¨ã‚ã‚‹;kotowaru ã“ã©ã‚‚;kodomo ã“ãª;kona ã“ãªã„ã ;konaida ã“ã®;kono ã“ã®ã‚ã„ã ;konoaida ã“ã®ã”ã‚;konogoro ã“ã®ã¿;konomi ã“ã®ã‚€;konomu ã“ã¼ã™;kobosu ã“ã¼ã‚Œã‚‹;koboreru ã“ã¾ã‹ã„;komakai ã“ã¾ã‚‹;komaru ã“ã‚€;komu ã“ã‚€;komu ã“ã‚€ãŽ;komugi ã“ã‚;kome ã“ã‚„;koya ã“ゆã³;koyubi ã“らãˆã‚‹;koraeru ã“れ;kore ã“れら;korera ã“ã‚ãŒã™;korogasu ã“ã‚ãŒã‚‹;korogaru ã“ã‚ã™;korosu ã“ã‚ã¶;korobu ã“ã‚ã„;kowai ã“ã‚ã™;kowasu ã“ã‚れる;kowareru ã“ã‚“;kon ã“ã‚“ã‹ã„;konkai ã“ã‚“ã”;kongo ã“ã‚“ã”ã†;kongou ã“ã‚“ã–ã¤;konzatsu ã“ã‚“ã ã¦;kondate ã“ã‚“ã©;kondo ã“ã‚“ãª;konna ã“ã‚“ãªã«;konnani ã“ã‚“ãªã‚“;konnan ã“ã‚“ã«ã¡ã¯;konnichiha ã“ã‚“ã°ã‚“ã¯;konbanha ã“ã‚“ã‚„ã;kon_yaku ã“んらん;konran ã”;go ã”;go ã”;go ã”;go ã”ã†;gou ã”ã†;gou ã”ã†;gou ã”ã†ã„ã‚“;gouin ã”ã†ã‹;gouka ã”ã†ã‹ã;goukaku ã”ã†ãŽ;gougi ã”ã†ã‘ã„;goukei ã”ã†ã¨ã†;goutou ã”ã†ã©ã†;goudou ã”ã†ã‚Š;gouri ã”ã†ã‚Šã‚…ã†;gouryuu ã”ã‹ã„;gokai ã”ãŒã;gogaku ã”ã;goku ã”ãã‚ã†ã•ã¾;gokurousama ã”ã”;gogo ã”ã˜ã‚…ã†ãŠã‚“;gojuuon ã”ãœã‚“;gozen ã”ã¡ãã†;gochisou ã”ã¡ãã†ã•ã¾;gochisousama ã”ã¨;goto ã”ã¯ã‚“;gohan ã”ã¶ã•ãŸ;gobusata ã”ã¿;gomi ã”ã‚ã‚“;gomen ã”ã‚ã‚“ãã ã•ã„;gomenkudasai ã”ã‚ã‚“ãªã•ã„;gomennasai ã”らã;goraku ã”らん;goran ã•;sa ã•ã‚;saa ã•ã„;sai ã•ã„;sai ã•ã„;sai ã•ã„ãã‚“;saikin ã•ã„ã“ã†;saikou ã•ã„ã”;saigo ã•ã„ã•ã‚“;saisan ã•ã„ã—ã‚…ã†;saishuu ã•ã„ã—ょ;saisho ã•ã„ã˜ã¤;saijitsu ã•ã„ãã;saisoku ã•ã„ã¡ã‚…ã†;saichuu ã•ã„ã¦ã„;saitei ã•ã„ã¦ã‚“;saiten ã•ã„ãªã‚“;sainan ã•ã„ã®ã†;sainou ã•ã„ã°ã‚“;saiban ã•ã„ãµ;saifu ã•ã„ã»ã†;saihou ã•ã„ã‚ã„;saiwai ã•ã‹;saka ã•ã‹ã„;sakai ã•ã‹ã•;sakasa ã•ã‹ã•ã¾;sakasama ã•ã‹ãšã;sakazuki ã•ã‹ã®ã¼ã‚‹;sakanoboru ã•ã‹ã°;sakaba ã•ã‹ã‚‰ã†;sakarau ã•ã‹ã‚Š;sakari ã•ã‹ã‚‹;sakaru ã•ã‹ã‚“;sakan ã•ãŒ;saga ã•ãŒã™;sagasu ã•ãŒã™;sagasu ã•ãŒã‚‹;sagaru ã•ã;saki ã•ããŠã¨ã¨ã„;sakiototoi ã•ãã»ã©;sakihodo ã•ãŽã‚‡ã†;sagyou ã•ã;saku ã•ã;saku ã•ã;saku ã•ãã„ã‚“;sakuin ã•ãã—ゃ;sakusha ã•ãã˜ã‚‡;sakujo ã•ãã›ã„;sakusei ã•ãã²ã‚“;sakuhin ã•ãã¶ã¤;sakubutsu ã•ãã¶ã‚“;sakubun ã•ãら;sakura ã•ãã‚‹;saguru ã•ã‘;sake ã•ã‘ã¶;sakebu ã•ã‘ã‚‹;sakeru ã•ã’ã‚‹;sageru ã•ã•ãˆã‚‹;sasaeru ã•ã•ã‚„ã;sasayaku ã•ã•ã‚‹;sasaru ã•ã—ã‚ã’ã‚‹;sashiageru ã•ã—ã¤ã‹ãˆ;sashitsukae ã•ã—ã²ã;sashihiku ã•ã—ã¿;sashimi ã•ã˜;saji ã•ã™;sasu ã•ã™;sasu ã•ã™;sasu ã•ã™;sasu ã•ã™;sasu ã•ã™ãŒ;sasuga ã•ãã†;sasou ã•ã£ã‹;sakka ã•ã£ã;sakki ã•ã£ãょã;sakkyoku ã•ã£ã•ã¨;sassato ã•ã£ãã;sassoku ã•ã£ã±ã‚Š;sappari ã•ã¤;satsu ã•ã¤;satsu ã•ã¤ãˆã„;satsuei ã•ã¦;sate ã•ã¨ã†;satou ã•ã°ã;sabaku ã•ã³;sabi ã•ã³ã—ã„;sabishii ã•ã³ã‚‹;sabiru ã•ã¹ã¤;sabetsu ã•ã»ã†;sahou ã•ã¾;sama ã•ã¾ã–ã¾;samazama ã•ã¾ã™;samasu ã•ã¾ã™;samasu ã•ã¾ãŸã’ã‚‹;samatageru ã•ã‚€ã„;samui ã•ã‚ã‚‹;sameru ã•ã‚ã‚‹;sameru ã•ゆã†;sayuu ã•よã†ãªã‚‰;sayounara ã•ら;sara ã•らã„ã’ã¤;saraigetsu ã•らã„ã—ã‚…ã†;saraishuu ã•らã„ã­ã‚“;sarainen ã•らã«;sarani ã•ã‚‹;saru ã•ã‚‹;saru ã•ã‚ãŒã—ã„;sawagashii ã•ã‚ãŽ;sawagi ã•ã‚ã‚„ã‹;sawayaka ã•ã‚ã‚‹;sawaru ã•ã‚“;san ã•ã‚“;san ã•ã‚“ã‹;sanka ã•ã‚“ã‹ã;sankaku ã•ã‚“ãŽã‚‡ã†;sangyou ã•ã‚“ã“ã†;sankou ã•ã‚“ã™ã†;sansuu ã•ã‚“ã›ã„;sansei ã•ã‚“ã›ã„;sansei ã•ã‚“ã;sanso ã•ã‚“ã¡;sanchi ã•ã‚“ã½;sanpo ã•んりん;sanrin ã–ã„ãŒã;zaigaku ã–ã„ã•ã‚“;zaisan ã–ã„ã‚‚ã;zaimoku ã–ã„りょã†;zairyou ã–ã—ã;zashiki ã–ã›ã;zaseki ã–ã£ã—;zasshi ã–ã£ã¨;zatto ã–ã¤ãŠã‚“;zatsuon ã–ã¶ã¨ã‚“;zabuton ã–ã‚“ã­ã‚“;zannen ã—;shi ã—;shi ã—;shi ã—ã‚ã„;shiai ã—ã‚ãŒã‚‹;shiagaru ã—ã‚ã•ã£ã¦;shiasatte ã—ã‚ã‚ã›;shiawase ã—ã„ã‚“ã¨;shiinto ã—ãŠã‹ã‚‰ã„;shiokarai ã—ã‹ã„;shikai ã—ã‹ã;shikaku ã—ã‹ãã„;shikakui ã—ã‹ã—;shikashi ã—ã‹ãŸ;shikata ã—ã‹ãŸãŒãªã„;shikataganai ã—ã‹ã‚‚;shikamo ã—ã‹ã‚‹;shikaru ã—ã;shiki ã—ã;shiki ã—ãã¡;shikichi ã—ãã‚…ã†;shikyuu ã—ãã‚…ã†;shikyuu ã—ãりã«;shikirini ã—ã;shiku ã—ã‘ã‚“;shiken ã—ã’ã;shigeki ã—ã’ã‚‹;shigeru ã—ã’ã‚“;shigen ã—ã”ã¨;shigoto ã—ã—ゃã”ã«ã‚…ã†;shishagonyuu ã—ã—ã‚…ã¤;shishutsu ã—ã˜;shiji ã—ã˜ã‚…ã†;shijuu ã—ã˜ã‚“;shijin ã—ãšã‹;shizuka ã—ãšã¾ã‚‹;shizumaru ã—ãšã‚€;shizumu ã—ã›ã„;shisei ã—ãœã‚“;shizen ã—ãœã‚“ã‹ãŒã;shizenkagaku ã—ãã†;shisou ã—ãã‚“;shison ã—ãŸ;shita ã—ãŸ;shita ã—ãŸã„;shitai ã—ãŸãŒã†;shitagau ã—ãŸãŒã;shitagaki ã—ãŸãŒã£ã¦;shitagatte ã—ãŸãŽ;shitagi ã—ãŸã;shitaku ã—ãŸã—ã„;shitashii ã—ãŸãŸã‚ã‚‹;shitatameru ã—ãŸã¾ã¡;shitamachi ã—ã ã„;shidai ã—ã¡;shichi ã—ã£ã‹ã‚Š;shikkari ã—ã£ã;shikki ã—ã£ã±ã„;shippai ã—ã£ã´ã¤;shippitsu ã—ã£ã½;shippo ã—ã¤;shitsu ã—ã¤;shitsu ã—ã¤ãŽã‚‡ã†;shitsugyou ã—ã¤ã“ã„;shitsukoi ã—ã¤ã©;shitsudo ã—ã¤ã¼ã†;shitsubou ã—ã¤ã‚‚ã‚“;shitsumon ã—ã¤ã‚Œã„;shitsurei ã—ã¤ã‚Œã„ã—ã¾ã—ãŸ;shitsureishimashita ã—ã¤ã‚Œã‚“;shitsuren ã—ã¦ã„;shitei ã—ã¦ã¤;shitetsu ã—ã¦ã‚“;shiten ã—ã©ã†;shidou ã—ãª;shina ã—ãªã‚‚ã®;shinamono ã—ã¬;shinu ã—ã¯ã„;shihai ã—ã¯ã‚‰ã„;shiharai ã—ã¯ã‚‰ã†;shiharau ã—ã°ã„;shibai ã—ã°ã—ã°;shibashiba ã—ã°ãµ;shibafu ã—ã°ã‚‰ã;shibaraku ã—ã°ã‚‹;shibaru ã—ゃã¹ã‚‹;shaberu ã—ゃらã;sharaku ã—ゃりん;sharin ã—ã‚…;shu ã—ã‚…ã†;shuu ã—ã‚…ã†;shuu ã—ã‚…ã†;shuu ã—ã‚…ã†ã„;shuui ã—ã‚…ã†ã‹ã„;shuukai ã—ã‚…ã†ã‹ã;shuukaku ã—ã‚…ã†ã‹ã‚“;shuukan ã—ã‚…ã†ã‹ã‚“;shuukan ã—ã‚…ã†ãょã†;shuukyou ã—ã‚…ã†ãã‚“;shuukin ã—ã‚…ã†ã”ã†;shuugou ã—ã‚…ã†ã—ょã;shuushoku ã—ã‚…ã†ã˜;shuuji ã—ã‚…ã†ã›ã„;shuusei ã—ã‚…ã†ãœã‚“;shuuzen ã—ã‚…ã†ã ã‚“;shuudan ã—ã‚…ã†ã¡ã‚…ã†;shuuchuu ã—ã‚…ã†ã¦ã‚“;shuuten ã—ã‚…ã†ã«ã‚…ã†;shuunyuu ã—ã‚…ã†ã«ã‚“;shuunin ã—ã‚…ã†ã¸ã‚“;shuuhen ã—ã‚…ã†ã‚Š;shuuri ã—ã‚…ã†ã‚Šã‚‡ã†;shuuryou ã—ã‚…ãŽ;shugi ã—ã‚…ãã—ょã†;shukushou ã—ã‚…ãã˜ã¤;shukujitsu ã—ã‚…ãã ã„;shukudai ã—ã‚…ãã¯ã;shukuhaku ã—ã‚…ã”;shugo ã—ã‚…ã—ょã†;shushou ã—ã‚…ã˜ã‚…ã¤;shujutsu ã—ã‚…ã ã‚“;shudan ã—ã‚…ã¡ã‚‡ã†;shuchou ã—ã‚…ã£ãã‚“;shukkin ã—ã‚…ã£ã—ã‚“;shusshin ã—ã‚…ã£ã›ã;shusseki ã—ã‚…ã£ã¡ã‚‡ã†;shucchou ã—ã‚…ã£ã±ã¤;shuppatsu ã—ã‚…ã£ã±ã‚“;shuppan ã—ã‚…ã¤ã˜ã‚‡ã†;shutsujou ã—ã‚…ã¨;shuto ã—ã‚…ãµ;shufu ã—ã‚…ã¿;shumi ã—ã‚…ã‚„ã;shuyaku ã—ゅよã†;shuyou ã—ã‚…ã‚‹ã„;shurui ã—ã‚…ã‚“ã‹ã‚“;shunkan ã—ょ;sho ã—ょã„;shoi ã—ょã†;shou ã—ょã†;shou ã—ょã†;shou ã—ょã†;shou ã—ょã†;shou ã—ょã†;shou ã—ょã†ã‹;shouka ã—ょã†ã‹ã„;shoukai ã—ょã†ãŒã„;shougai ã—ょã†ãŒããã‚“;shougakukin ã—ょã†ãŒãã›ã„;shougakusei ã—ょã†ãŒã£ã“ã†;shougakkou ã—ょã†ãŒã¤;shougatsu ã—ょã†ãょãã¦ã;shoukyokuteki ã—ょã†ãã‚“;shoukin ã—ょã†ãŽ;shougi ã—ょã†ãŽã‚‡ã†;shougyou ã—ょã†ã“ã†;shoukou ã—ょã†ã”;shougo ã—ょã†ã—ゃ;shousha ã—ょã†ã—ょã†;shoushou ã—ょã†ã˜;shouji ã—ょã†ã˜ã;shoujiki ã—ょã†ã˜ã‚‡ã†;shoujou ã—ょã†ã˜ã‚‹;shoujiru ã—ょã†ã™ã†;shousuu ã—ょã†ã›ã¤;shousetsu ã—ょã†ãŸã„;shoutai ã—ょã†ã¡;shouchi ã—ょã†ã¦ã‚“;shouten ã—ょã†ã¦ã‚“;shouten ã—ょã†ã¨ã¤;shoutotsu ã—ょã†ã©ã;shoudoku ã—ょã†ã«ã‚“;shounin ã—ょã†ã­ã‚“;shounen ã—ょã†ã¯ã„;shouhai ã—ょã†ã°ã„;shoubai ã—ょã†ã²;shouhi ã—ょã†ã²ã‚“;shouhin ã—ょã†ã²ã‚“;shouhin ã—ょã†ã¶;shoubu ã—ょã†ã¹ã‚“;shouben ã—ょã†ã¼ã†;shoubou ã—ょã†ã¼ã†ã—ょ;shoubousho ã—ょã†ã¿;shoumi ã—ょã†ã‚ã„;shoumei ã—ょã†ã‚ã‚“;shoumen ã—ょã†ã‚†;shouyu ã—ょã†ã‚‰ã„;shourai ã—ょã†ã‚Šã‚ƒã;shouryaku ã—ょãã‚…ã†;shokyuu ã—ょã;shoku ã—ょããˆã‚“;shokuen ã—ょããŽã‚‡ã†;shokugyou ã—ょãã˜;shokuji ã—ょããŸã;shokutaku ã—ょãã©ã†;shokudou ã—ょãã«ã‚“;shokunin ã—ょãã°;shokuba ã—ょãã²ã‚“;shokuhin ã—ょãã¶ã¤;shokubutsu ã—ょãã‚‚ã¤;shokumotsu ã—ょãよã;shokuyoku ã—ょãりょã†;shokuryou ã—ょã•ã„;shosai ã—ょã—ょ;shosho ã—ょã˜ã‚…ã‚“;shojun ã—ょã›ã;shoseki ã—ょã£ã;shokki ã—ょã¦ã‚“;shoten ã—ょã©ã†;shodou ã—ょã»;shoho ã—ょã‚ã„;shomei ã—ょもã¤;shomotsu ã—ょり;shori ã—ょるã„;shorui ã—よã†;shiyou ã—らãŒ;shiraga ã—らã›;shirase ã—らã›ã‚‹;shiraseru ã—らã¹ã‚‹;shiraberu ã—り;shiri ã—りã‚ã„;shiriai ã—りãžã;shirizoku ã—りãžã‘ã‚‹;shirizokeru ã—りã¤;shiritsu ã—りょã†;shiryou ã—ã‚‹;shiru ã—ã‚‹;shiru ã—ã‚;shiro ã—ã‚;shiro ã—ã‚;shiro ã—ã‚ã„;shiroi ã—ã‚ã†ã¨;shirouto ã—ã‚;shiwa ã—ã‚“;shin ã—ã‚“;shin ã—ã‚“ã‹ã‚“ã›ã‚“;shinkansen ã—ã‚“ãŒã;shingaku ã—ã‚“ãŒã‚Š;shingari ã—ã‚“ãã†;shinkuu ã—ã‚“ã‘ã„;shinkei ã—ã‚“ã‘ã‚“;shinken ã—ã‚“ã“ã†;shinkou ã—ã‚“ã“ã;shinkoku ã—ã‚“ã”ã†;shingou ã—ã‚“ã•ã¤;shinsatsu ã—ã‚“ã—ã‚“;shinshin ã—ã‚“ã˜ã‚…ã†;shinjuu ã—ã‚“ã˜ã‚‹;shinjiru ã—ã‚“ãšã‚‹;shinzuru ã—ã‚“ã›ã;shinseki ã—ã‚“ã›ã¤;shinsetsu ã—ã‚“ã›ã‚“;shinsen ã—ã‚“ãžã†;shinzou ã—ã‚“ã ã„;shindai ã—ã‚“ã ã‚“;shindan ã—ã‚“ã¡ã‚‡ã†;shinchou ã—ã‚“ã«ã‚…ã†;shinnyuu ã—ã‚“ã°ã‚“;shinban ã—ã‚“ã±ã„;shinpai ã—ã‚“ã¶ã‚“;shinbun ã—ã‚“ã½;shinpo ã—ã‚“ã‚ã‚“ã‚‚ã;shinmenmoku ã—ã‚“ã‚„;shin_ya ã—んゆã†;shin_yuu ã—んよã†;shin_you ã—んらã„;shinrai ã—んり;shinri ã—んりん;shinrin ã—ã‚“ã‚‹ã„;shinrui ã—ã‚“ã‚;shinro ã—ã‚“ã‚;shinwa ã˜ã„ã‚“;jiin ã˜ãˆã„;jiei ã˜ã‹ãŸ;jikata ã˜ã‹ã«;jikani ã˜ã‹ã‚“;jikan ã˜ã‹ã‚“ã‚り;jikanwari ã˜ã;jiki ã˜ã;jiki ã˜ã‘ã‚“;jiken ã˜ã“;jiko ã˜ã“ã;jikoku ã˜ã•ã¤;jisatsu ã˜ã•ã‚“;jisan ã˜ã—ゃã;jishaku ã˜ã—ã‚…ã†;jishuu ã˜ã—ょ;jisho ã˜ã—ã‚“;jishin ã˜ã—ã‚“;jishin ã˜ã—ã‚“;jishin ã˜ã˜ã¤;jijitsu ã˜ã˜ã‚‡ã†;jijou ã˜ãã;jisoku ã˜ãŸã„;jitai ã˜ãŸã;jitaku ã˜ã ã„;jidai ã˜ã¡;jichi ã˜ã£ã‹ã‚“;jikkan ã˜ã£ã‘ã‚“;jikken ã˜ã£ã“ã†;jikkou ã˜ã£ã•ã„;jissai ã˜ã£ã—;jisshi ã˜ã£ã—ã‚…ã†;jisshuu ã˜ã£ã›ã;jisseki ã˜ã£ã¨;jitto ã˜ã£ã·ã‚“;jippun ã˜ã¤;jitsu ã˜ã¤ã’ã‚“;jitsugen ã˜ã¤ã«;jitsuni ã˜ã¤ã¯;jitsuha ã˜ã¤ã¶ã¤;jitsubutsu ã˜ã¤ã‚ˆã†;jitsuyou ã˜ã¤ã‚Šã‚‡ã;jitsuryoku ã˜ã¤ã‚Œã„;jitsurei ã˜ã¦ã‚“;jiten ã˜ã¦ã‚“ã—ゃ;jitensha ã˜ã©ã†;jidou ã˜ã©ã†;jidou ã˜ã©ã†ã—ゃ;jidousha ã˜ã°ã‚“;jiban ã˜ã³ã;jibiki ã˜ã¶ã‚“;jibun ã˜ã¾ã‚“;jiman ã˜ã¿;jimi ã˜ã‚€;jimu ã˜ã‚ã‚“;jimen ã˜ã‚ƒãã¦ã‚“;jakuten ã˜ã‚ƒãã¡;jaguchi ã˜ã‚ƒã¾;jama ã˜ã‚ƒã‚“ã‘ã‚“;janken ã˜ã‚…ã†;juu ã˜ã‚…ã†ãょ;juukyo ã˜ã‚…ã†ã—;juushi ã˜ã‚…ã†ã—ょ;juusho ã˜ã‚…ã†ãŸã„;juutai ã˜ã‚…ã†ãŸã„;juutai ã˜ã‚…ã†ãŸã;juutaku ã˜ã‚…ã†ãŸã‚“;juutan ã˜ã‚…ã†ã ã„;juudai ã˜ã‚…ã†ã¦ã‚“;juuten ã˜ã‚…ã†ã¿ã‚“;juumin ã˜ã‚…ã†ã‚ˆã†;juuyou ã˜ã‚…ã†ã‚Šã‚‡ã†;juuryou ã˜ã‚…ã†ã‚Šã‚‡ã;juuryoku ã˜ã‚…ãŽã‚‡ã†;jugyou ã˜ã‚…ãã”;jukugo ã˜ã‚…ã‘ã‚“;juken ã˜ã‚…ã¤ã”;jutsugo ã˜ã‚…ã¿ã‚‡ã†;jumyou ã˜ã‚…よã†;juyou ã˜ã‚…ã‚ã;juwaki ã˜ã‚…ã‚“;jun ã˜ã‚…ã‚“ã‹ã‚“;junkan ã˜ã‚…ã‚“ã•;junsa ã˜ã‚…ã‚“ã˜ã‚…ã‚“;junjun ã˜ã‚…ã‚“ã˜ã‚‡;junjo ã˜ã‚…ã‚“ã˜ã‚‡ã†;junjou ã˜ã‚…ã‚“ã™ã„;junsui ã˜ã‚…ã‚“ã¡ã‚‡ã†;junchou ã˜ã‚…ã‚“ã°ã‚“;junban ã˜ã‚†ã†;jiyuu ã˜ã‚‡;jo ã˜ã‚‡ã†;jou ã˜ã‚‡ã†;jou ã˜ã‚‡ã†ã‹ã;joukaku ã˜ã‚‡ã†ã;jouki ã˜ã‚‡ã†ãã‚…ã†;joukyuu ã˜ã‚‡ã†ãょã†;joukyou ã˜ã‚‡ã†ãょã†;joukyou ã˜ã‚‡ã†ãŽ;jougi ã˜ã‚‡ã†ã‘ã‚“;jouken ã˜ã‚‡ã†ã—ã;joushiki ã˜ã‚‡ã†ã—ゃ;jousha ã˜ã‚‡ã†ã˜ã‚…ã‚“;joujun ã˜ã‚‡ã†ãŸã„;joutai ã˜ã‚‡ã†ãŸã¤;joutatsu ã˜ã‚‡ã†ã ã‚“;joudan ã˜ã‚‡ã†ã¨ã†;joutou ã™ã„ã¶ã‚“;suibun ã™ã„ã¸ã„;suihei ã™ã„ã¸ã„ã›ã‚“;suiheisen ã™ã„ã¿ã‚“;suimin ã™ã„ã‚ã‚“;suimen ã™ã„よã†;suiyou ã™ã†;suu ã™ã†ãŒã;suugaku ã™ã†ã˜;suuji ã™ãˆã£ã“;suekko ã™ãŒãŸ;sugata ã™ã;suki ã™ããらã„;sukikirai ã™ããšã;sukizuki ã™ãã¨ãŠã‚‹;sukitooru ã™ãã¾;sukima ã™ãŽ;sugi ã™ãŽ;sugi ã™ãŽã‚‹;sugiru ã™ãã†;sukuu ã™ããªã„;sukunai ã™ããªãã¨ã‚‚;sukunakutomo ã™ã;sugu ã™ãれる;sugureru ã™ã“ã—;sukoshi ã™ã“ã—ã‚‚;sukoshimo ã™ã”ã„;sugoi ã™ã”ã™;sugosu ã™ã˜;suji ã™ã™ã‚€;susumu ã™ã™ã‚ã‚‹;susumeru ã™ã™ã‚ã‚‹;susumeru ã™ãš;suzu ã™ãšã—ã„;suzushii ã™ãšã‚€;suzumu ã™ã£ã‹ã‚Š;sukkari ã™ã£ãり;sukkiri ã™ã£ã¨;sutto ã™ã£ã±ã„;suppai ã™ã¦ã;suteki ã™ã¦ã‚‹;suteru ã™ã§ã«;sudeni ã™ãª;suna ã™ãªãŠ;sunao ã™ãªã‚ã¡;sunawachi ã™ã°ã‚‰ã—ã„;subarashii ã™ã¹ã¦;subete ã™ã¹ã‚‹;suberu ã™ã¾ã„;sumai ã™ã¾ã›ã‚‹;sumaseru ã™ã¾ãªã„;sumanai ã™ã¿;sumi ã™ã¿;sumi ã™ã¿ã¾ã›ã‚“;sumimasen ã™ã‚€;sumu ã™ã‚€;sumu ã™ã‚€;sumu ã™ã‚らãŽ;sumeragi ã™ã‚‚ã†;sumou ã™ã‚Š;suri ã™ã‚‹;suru ã™ã‚‹;suru ã™ã‚‹;suru ã™ã‚‹ã¨;suruto ã™ã‚‹ã©ã„;surudoi ã™ã‚Œã¡ãŒã†;surechigau ã™ã‚ã‚‹;suwaru ã™ã‚“ã½ã†;sunpou ãš;zu ãšã„ã²ã¤;zuihitsu ãšã„ã¶ã‚“;zuibun ãšã†ãšã†ã—ã„;zuuzuushii ãšã‹ã‚“;zukan ãšã‘ã„;zukei ãšã£ã¨;zutto ãšã¤ã†;zutsuu ãšã®ã†;zunou ãšã²ã‚‡ã†;zuhyou ãšã‚‰ã™;zurasu ãšã‚‹ã„;zurui ãšã‚Œã‚‹;zureru ã›ã„;sei ã›ã„;sei ã›ã„;sei ã›ã„;sei ã›ã„ã‹ã;seikaku ã›ã„ã‹ã;seikaku ã›ã„ã‹ã¤;seikatsu ã›ã„ã;seiki ã›ã„ãã‚…ã†;seikyuu ã›ã„ã‘ã¤;seiketsu ã›ã„ã’ã‚“;seigen ã›ã„ã“ã†;seikou ã›ã„ã•ã;seisaku ã›ã„ã•ã‚“;seisan ã›ã„ã—ã;seishiki ã›ã„ã—ã¤;seishitsu ã›ã„ã—ょ;seisho ã›ã„ã—ょã†ã­ã‚“;seishounen ã›ã„ã—ã‚“;seishin ã›ã„ã˜;seiji ã›ã„ã˜ã‚“;seijin ã›ã„ã™ã†;seisuu ã›ã„ã›ã;seiseki ã›ã„ãœã„;seizei ã›ã„ãã†;seisou ã›ã„ãžã†;seizou ã›ã„ãžã‚“;seizon ã›ã„ã¡ã‚‡ã†;seichou ã›ã„ã¨;seito ã›ã„ã¨ã†;seitou ã›ã„ã©;seido ã›ã„ã­ã‚“;seinen ã›ã„ã­ã‚“ãŒã£ã´;seinengappi ã›ã„ã®ã†;seinou ã›ã„ã²ã‚“;seihin ã›ã„ã³;seibi ã›ã„ãµ;seifu ã›ã„ã¶ã¤;seibutsu ã›ã„ã¶ã‚“;seibun ã›ã„ã¹ã¤;seibetsu ã›ã„ã»ã†ã‘ã„;seihoukei ã›ã„ã‚ã„;seimei ã›ã„ã‚‚ã‚“;seimon ã›ã„よã†;seiyou ã›ã„り;seiri ã›ã„りã¤;seiritsu ã›ã„れã;seireki ã›ã‹ã„;sekai ã›ã;seki ã›ã;seki ã›ããŸã‚“;sekitan ã›ãã©ã†;sekidou ã›ãã«ã‚“;sekinin ã›ãゆ;sekiyu ã›ã‘ã‚“;seken ã›ã£ã‹ã;sekkaku ã›ã£ãょãã¦ã;sekkyokuteki ã›ã£ãã‚“;sekkin ã›ã£ã‘ã„;sekkei ã›ã£ã‘ã‚“;sekken ã›ã£ã™ã‚‹;sessuru ã›ã¤;setsu ã›ã¤;setsu ã›ã¤ãžã;setsuzoku ã›ã¤ã³;setsubi ã›ã¤ã‚ã„;setsumei ã›ã¤ã‚„ã;setsuyaku ã›ã¨ã‚‚ã®;setomono ã›ãªã‹;senaka ã›ã³ã‚;sebiro ã›ã¾ã„;semai ã›ã¾ã‚‹;semaru ã›ã‚;seme ã›ã‚ã‚‹;semeru ã›ã‚ã‚‹;semeru ã›ã‚Šãµ;serifu ã›ã‚;sewa ã›ã‚“;sen ã›ã‚“;sen ã›ã‚“;sen ã›ã‚“;sen ã›ã‚“ã“ã†;senkou ã›ã‚“ã–ã„;senzai ã›ã‚“ã—ã‚…;senshu ã›ã‚“ã˜ã¤;senjitsu ã›ã‚“ã™;sensu ã›ã‚“ã™ã„;sensui ã›ã‚“ã›ã„;sensei ã›ã‚“ã›ã„;sensei ã›ã‚“ã›ã‚“ã’ã¤;sensengetsu ã›ã‚“ã›ã‚“ã—ã‚…ã†;sensenshuu ã›ã‚“ãã†;sensou ã›ã‚“ãž;senzo ã›ã‚“ãŸã;sentaku ã›ã‚“ãŸã;sentaku ã›ã‚“ãŸã‚“;sentan ã›ã‚“ã§ã‚“;senden ã›ã‚“ã¨ã†;sentou ã›ã‚“ã±ã„;senpai ã›ã‚“ã·ã†ã;senpuuki ã›ã‚“ã‚ã‚“;senmen ã›ã‚“ã‚;senro ãœã„ã‹ã‚“;zeikan ãœã„ãã‚“;zeikin ãœã„ãŸã;zeitaku ãœã£ãŸã„;zettai ãœã¤ã‚ã¤;zetsumetsu ãœã²;zehi ãœã²ã¨ã‚‚;zehitomo ãœã‚“;zen ãœã‚“;zen ãœã‚“ã„ã‚“;zen_in ãœã‚“ã“ã;zenkoku ãœã‚“ã”;zengo ãœã‚“ã—ゃ;zensha ãœã‚“ã—ã‚…ã†;zenshuu ãœã‚“ã—ã‚“;zenshin ãœã‚“ã—ã‚“;zenshin ãœã‚“ãœã‚“;zenzen ãœã‚“ãŸã„;zentai ãœã‚“ã±ã‚“;zenpan ãœã‚“ã¶;zenbu ãœã‚“りょã;zenryoku ãã†;sou ãã†;sou ãã†ã„;soui ãã†ãŠã‚“;souon ãã†ã“;souko ãã†ã”;sougo ãã†ã•;sousa ãã†ã•ã;sousaku ãã†ã—ã;soushiki ãã†ã—ã¦;soushite ãã†ã˜;souji ãã†ãžã†;souzou ãã†ãžã†ã—ã„;souzoushii ãã†ãžã;souzoku ãã†ã ã‚“;soudan ãã†ã¡;souchi ãã†ã¨ã†;soutou ãã†ã¹ã¤;soubetsu ãã†ã‚Šã ã„ã˜ã‚“;souridaijin ãã†ã‚Šã‚‡ã†;souryou ãããŸã¤;sokutatsu ããã¦ã„;sokutei ããã©;sokudo ããりょã†;sokuryou ããりょã;sokuryoku ãã“;soko ãã“;soko ãã“ã§;sokode ãã—ã;soshiki ãã—ã¤;soshitsu ãã—ã¦;soshite ãã›ã‚“;sosen ããã;sosogu ããã£ã‹ã—ã„;sosokkashii ãã ã¤;sodatsu ãã ã¦ã‚‹;sodateru ãã¡ã‚‰;sochira ãã£ãり;sokkuri ãã£ã¡ã‚‡ã;socchoku ãã£ã¨;sotto ãã¤ãŽã‚‡ã†;sotsugyou ãã§;sode ãã¨;soto ããªãˆã‚‹;sonaeru ãã®;sono ãã®ã†ãˆ;sonoue ãã®ã†ã¡;sonouchi ãã®ãŸã‚;sonotame ãã®ã»ã‹;sonohoka ãã®ã¾ã¾;sonomama ãã°;soba ããµ;sofu ãã¼;sobo ãã¼ã;soboku ãã¾ã¤;somatsu ãれ;sore ãれã‹ã‚‰;sorekara ãれãžã‚Œ;sorezore ãれã§;sorede ãれã§ã¯;soredeha ãれã§ã‚‚;soredemo ãれã¨ã‚‚;soretomo ãれãªã‚‰;sorenara ãれã«;soreni ãれã»ã©;sorehodo ãれる;soreru ãã‚ã†;sorou ãã‚ãˆã‚‹;soroeru ãã‚ãã‚;sorosoro ãã‚ã°ã‚“;soroban ãã‚“ãŒã„;songai ãã‚“ã‘ã„;sonkei ãã‚“ã–ã„;sonzai ãã‚“ã—ã¤;sonshitsu ãã‚“ãžã;sonzoku ãã‚“ã¡ã‚‡ã†;sonchou ãã‚“ã¨ã;sontoku ãã‚“ãª;sonna ãžã„;zoi ãžã†ã‹;zouka ãžã†ãã‚“;zoukin ãžã†ã’ã‚“;zougen ãžã†ã›ã‚“;zousen ãžã†ã ã„;zoudai ãžã†ã‚Š;zouri ãžãã™ã‚‹;zokusuru ãžããžã;zokuzoku ãžã‚“ã˜ã‚‹;zonjiru ãŸ;ta ãŸã„;tai ãŸã„ã„ã;taiiku ãŸã„ã„ã‚“;taiin ãŸã„ãŠã‚“;taion ãŸã„ã‹ã„;taikai ãŸã„ãã‚“;taikin ãŸã„ãã¤;taikutsu ãŸã„ã‘ã„;taikei ãŸã„ã“;taiko ãŸã„ã•ã;taisaku ãŸã„ã–ã„;taizai ãŸã„ã—;taishi ãŸã„ã—ãŸ;taishita ãŸã„ã—ã¦;taishite ãŸã„ã—ょã†;taishou ãŸã„ã—ょã†;taishou ãŸã„ã˜ã‚…ã†;taijuu ãŸã„ã™ã‚‹;taisuru ãŸã„ã›ã„;taisei ãŸã„ã›ã;taiseki ãŸã„ã›ã¤;taisetsu ãŸã„ã›ã‚“;taisen ãŸã„ãã†;taisou ãŸã„ã¦ã„;taitei ãŸã„ã©;taido ãŸã„ã¯ã‚“;taihan ãŸã„ãµã†;taifuu ãŸã„ã¸ã‚“;taihen ãŸã„ã»;taiho ãŸã„ã¼ã;taiboku ãŸã„よã†;taiyou ãŸã„ら;taira ãŸã„りã;tairiku ãŸã„りã¤;tairitsu ãŸã†ãˆ;taue ãŸãˆãš;taezu ãŸãŠã™;taosu ãŸãŠã‚Œã‚‹;taoreru ãŸã‹;taka ãŸã‹ã„;takai ãŸã‹ã‚ã‚‹;takameru ãŸã‹ã‚‰;takara ãŸãŒã„;tagai ãŸãŒã‚„ã™;tagayasu ãŸã;taki ãŸã;taku ãŸã;taku ãŸãã•ã‚“;takusan ãŸãã‚ãˆã‚‹;takuwaeru ãŸã‘;take ãŸã—ã‹;tashika ãŸã—ã‹;tashika ãŸã—ã‹ã‚ã‚‹;tashikameru ãŸã—ょã†;tashou ãŸã™;tasu ãŸã™ã‹ã‚‹;tasukaru ãŸã™ã‘ã‚‹;tasukeru ãŸãšã­ã‚‹;tazuneru ãŸãšã­ã‚‹;tazuneru ãŸãŸã‹ã„;tatakai ãŸãŸã‹ã†;tatakau ãŸãŸã;tataku ãŸãŸã‚€;tatamu ãŸã ;tada ãŸã ;tada ãŸã ã„ã¾;tadaima ãŸã ã—;tadashi ãŸã ã—ã„;tadashii ãŸã ã¡ã«;tadachini ãŸã¡;tachi ãŸã¡ã‚ãŒã‚‹;tachiagaru ãŸã¡ã©ã¾ã‚‹;tachidomaru ãŸã¡ã°;tachiba ãŸã¡ã¾ã¡;tachimachi ãŸã£ã™ã‚‹;tassuru ãŸã£ãŸ;tatta ãŸã£ã·ã‚Š;tappuri ãŸã¤;tatsu ãŸã¤;tatsu ãŸã¤;tatsu ãŸã¤;tatsu ãŸã¦;tate ãŸã¦ã‚‚ã®;tatemono ãŸã¦ã‚‹;tateru ãŸã¦ã‚‹;tateru ãŸã¨ãˆ;tatoe ãŸã¨ãˆã°;tatoeba ãŸã¨ãˆã‚‹;tatoeru ãŸãª;tana ãŸã«;tani ãŸã®ã—ã„;tanoshii ãŸã®ã—ã¿;tanoshimi ãŸã®ã—ã‚€;tanoshimu ãŸã®ã¿;tanomi ãŸã®ã‚€;tanomu ãŸã®ã‚‚ã—ã„;tanomoshii ãŸã°;taba ãŸã°ã“;tabako ãŸã³;tabi ãŸã³;tabi ãŸã³;tabi ãŸã³ãŸã³;tabitabi ãŸã¶ã‚“;tabun ãŸã¹ã‚‹;taberu ãŸã¾;tama ãŸã¾;tama ãŸã¾ã”;tamago ãŸã¾ãŸã¾;tamatama ãŸã¾ã«;tamani ãŸã¾ã‚‰ãªã„;tamaranai ãŸã¾ã‚‹;tamaru ãŸã‚;tame ãŸã‚ã„ã;tameiki ãŸã‚ã—;tameshi ãŸã‚ã—;tameshi ãŸã‚ã™;tamesu ãŸã‚らã†;tamerau ãŸã‚ˆã‚Š;tayori ãŸã‚ˆã‚‹;tayoru ãŸã‚Šã‚‹;tariru ãŸã‚‹;taru ãŸã‚Œ;tare ãŸã‚“;tan ãŸã‚“;tan ãŸã‚“ã„;tan_i ãŸã‚“ã;tanki ãŸã‚“ã“ã†;tankou ãŸã‚“ã”;tango ãŸã‚“ã—ょ;tansho ãŸã‚“ã˜ã‚…ã‚“;tanjun ãŸã‚“ã˜ã‚‡ã†;tanjou ãŸã‚“ã™;tansu ãŸã‚“ã™ã„;tansui ãŸã‚“ã™ã†;tansuu ãŸã‚“ã¨ã†;tantou ãŸã‚“ãªã‚‹;tannaru ãŸã‚“ã«;tanni ãŸã‚“ãºã‚“;tanpen ã ã„;dai ã ã„;dai ã ã„;dai ã ã„ã„ã¡;daiichi ã ã„ãŒã;daigaku ã ã„ãŒãã„ã‚“;daigakuin ã ã„ãã‚“;daikin ã ã„ã;daiku ã ã„ã—ょã†;daishou ã ã„ã˜ã‚‡ã†ã¶;daijoubu ã ã„ã˜ã‚“;daijin ã ã„ãŸã„;daitai ã ã„ã¨ã†ã‚Šã‚‡ã†;daitouryou ã ã„ã©ã“ã‚;daidokoro ã ã„ã²ã‚‡ã†;daihyou ã ã„ã¶;daibu ã ã„ã¶ã¶ã‚“;daibubun ã ã„ã‚ã„;daimei ã ã„ã‚ã„ã—;daimeishi ã ã„り;dairi ã ãˆã‚“;daen ã ã‹ã‚‰;dakara ã ã‘ã©;dakedo ã ã™;dasu ã ã£ã›ã‚“;dassen ã ã£ã¦;datte ã ã¨ã†;datou ã ã¾ã™;damasu ã ã¾ã‚‹;damaru ã ã‚;dame ã ã‚‰ã‘;darake ã ã‚‰ã—ãªã„;darashinai ã ã‚Œã‹;dareka ã ã‚“;dan ã ã‚“;dan ã ã‚“ã‹ã„;dankai ã ã‚“ã—;danshi ã ã‚“ã™ã„;dansui ã ã‚“ã›ã„;dansei ã ã‚“ãŸã„;dantai ã ã‚“ã ã‚“;dandan ã ã‚“ã¡;danchi ã ã‚“ã¦ã„;dantei ã ã‚“ã¼ã†;danbou ã¡;chi ã¡;chi ã¡ã„;chii ã¡ã„ã;chiiki ã¡ã„ã•ã„;chiisai ã¡ãˆ;chie ã¡ã‹;chika ã¡ã‹ã„;chikai ã¡ã‹ã†;chikau ã¡ã‹ã;chikaku ã¡ã‹ã”ã‚;chikagoro ã¡ã‹ã™ã„;chikasui ã¡ã‹ã¥ã;chikaduku ã¡ã‹ã¥ã‘ã‚‹;chikadukeru ã¡ã‹ã¦ã¤;chikatetsu ã¡ã‹ã‚ˆã‚‹;chikayoru ã¡ã‹ã‚‰;chikara ã¡ã‹ã‚‰ã¥ã‚ˆã„;chikaraduyoi ã¡ãŒã„;chigai ã¡ãŒã„ãªã„;chigainai ã¡ãŒã†;chigau ã¡ãã‚…ã†;chikyuu ã¡ãŽã‚‹;chigiru ã¡ã;chiku ã¡ã“ã;chikoku ã¡ã—ã;chishiki ã¡ã—ã¤;chishitsu ã¡ã˜;chiji ã¡ã˜ã‚“;chijin ã¡ãš;chizu ã¡ãŸã„;chitai ã¡ã¡;chichi ã¡ã¡ãŠã‚„;chichioya ã¡ã¡ã¯ã¯;chichihaha ã¡ã¢ã‚€;chidimu ã¡ã¢ã‚ã‚‹;chidimeru ã¡ã¢ã‚Œã‚‹;chidireru ã¡ã£ã¨ã‚‚;chittomo ã¡ã¦ã‚“;chiten ã¡ã®ã†;chinou ã¡ã¸ã„ã›ã‚“;chiheisen ã¡ã‚ã„;chimei ã¡ã‚ƒ;cha ã¡ã‚ƒã„ã‚;chairo ã¡ã‚ƒã;chaku ã¡ã‚ƒãã¡ã‚ƒã;chakuchaku ã¡ã‚ƒã‚ã‚“;chawan ã¡ã‚ƒã‚“;chan ã¡ã‚ƒã‚“ã¨;chanto ã¡ã‚…ã†;chuu ã¡ã‚…ã†;chuu ã¡ã‚…ã†ã„;chuui ã¡ã‚…ã†ãŠã†;chuuou ã¡ã‚…ã†ã‹ã‚“;chuukan ã¡ã‚…ã†ã‹ã‚“;chuukan ã¡ã‚‡ãã‚“;chokin ã¡ã‚‡ãã”;chokugo ã¡ã‚‡ãã›ã¤;chokusetsu ã¡ã‚‡ãã›ã‚“;chokusen ã¡ã‚‡ããœã‚“;chokuzen ã¡ã‚‡ãã¤ã†;chokutsuu ã¡ã‚‡ãりゅã†;chokuryuu ã¡ã‚‡ã—ゃ;chosha ã¡ã‚‡ãžã†;chozou ã¡ã‚‡ã£ã‹ã;chokkaku ã¡ã‚‡ã£ã‘ã„;chokkei ã¡ã‚‡ã£ã¨;chotto ã¡ã‚‰ã‹ã™;chirakasu ã¡ã‚‰ã‹ã‚‹;chirakaru ã¡ã‚‰ã™;chirasu ã¡ã‚Š;chiri ã¡ã‚ŠãŒã¿;chirigami ã¡ã‚‹;chiru ã¤ã„;tsui ã¤ã„ã‹;tsuika ã¤ã„ã§;tsuide ã¤ã„ã«;tsuini ã¤ã†;tsuu ã¤ã†ã‹;tsuuka ã¤ã†ã‹;tsuuka ã¤ã†ãŒã;tsuugaku ã¤ã†ãã‚“;tsuukin ã¤ã†ã“ã†;tsuukou ã¤ã†ã—ã‚“;tsuushin ã¤ã†ã˜ã‚‹;tsuujiru ã¤ã†ã¡;tsuuchi ã¤ã†ã¡ã‚‡ã†;tsuuchou ã¤ã†ã‚„ã;tsuuyaku ã¤ã†ã‚ˆã†;tsuuyou ã¤ã†ã‚;tsuuro ã¤ã‹ã„;tsukai ã¤ã‹ã†;tsukau ã¤ã‹ã¾ãˆã‚‹;tsukamaeru ã¤ã‹ã¾ã‚‹;tsukamaru ã¤ã‹ã‚€;tsukamu ã¤ã‹ã‚Œ;tsukare ã¤ã‹ã‚Œã‚‹;tsukareru ã¤ã;tsuki ã¤ã;tsuki ã¤ãã‚ã„;tsukiai ã¤ãã‚ã†;tsukiau ã¤ãã‚ãŸã‚Š;tsukiatari ã¤ãã‚ãŸã‚‹;tsukiataru ã¤ãŽã¤ãŽ;tsugitsugi ã¤ã;tsuku ã¤ã;tsuku ã¤ã;tsuku ã¤ã;tsuku ã¤ã;tsuku ã¤ã;tsuku ã¤ããˆ;tsukue ã¤ãã‚‹;tsukuru ã¤ãã‚‹;tsukuru ã¤ã;tsugu ã¤ã‘ãã‚ãˆã‚‹;tsukekuwaeru ã¤ã‘ã‚‹;tsukeru ã¤ã‘ã‚‹;tsukeru ã¤ã‘ã‚‹;tsukeru ã¤ã‘ã‚‹;tsukeru ã¤ã‘ã‚‹;tsukeru ã¤ã”ã†;tsugou ã¤ãŸãˆã‚‹;tsutaeru ã¤ãŸã‚ã‚‹;tsutawaru ã¤ã¡;tsuchi ã¤ã¡ã‚…ã†;tsuchuu ã¤ã£ã“ã‚€;tsukkomu ã¤ã¤;tsutsu ã¤ã¤ã¿;tsutsumi ã¤ã¥ã;tsuduki ã¤ã¥ã;tsuduku ã¤ã¥ã‘ã‚‹;tsudukeru ã¤ã¨ã‚;tsutome ã¤ã¨ã‚ã‚‹;tsutomeru ã¤ã¨ã‚ã‚‹;tsutomeru ã¤ã¨ã‚ã‚‹;tsutomeru ã¤ãª;tsuna ã¤ãªãŒã‚Š;tsunagari ã¤ãªãŒã‚‹;tsunagaru ã¤ãªã;tsunagu ã¤ãªã’ã‚‹;tsunageru ã¤ã­ã«;tsuneni ã¤ã°ã•;tsubasa ã¤ã¶;tsubu ã¤ã¶ã™;tsubusu ã¤ã¶ã‚Œã‚‹;tsubureru ã¤ã¾;tsuma ã¤ã¾ãšã;tsumazuku ã¤ã¾ã‚‰ãªã„;tsumaranai ã¤ã¾ã‚Š;tsumari ã¤ã¾ã‚‹;tsumaru ã¤ã¿;tsumi ã¤ã‚€;tsumu ã¤ã‚;tsume ã¤ã‚ãŸã„;tsumetai ã¤ã‚ã‚‹;tsumeru ã¤ã‚‚り;tsumori ã¤ã‚‚ã‚‹;tsumoru ã¤ã‚†;tsuyu ã¤ã‚ˆã„;tsuyoi ã¤ã‚Š;tsuri ã¤ã‚Šã‚ã†;tsuriau ã¤ã‚‹;tsuru ã¤ã‚‹;tsuru ã¤ã‚‹ã™;tsurusu ã¤ã‚Œ;tsure ã¤ã‚Œã‚‹;tsureru ã¦;te ã¦ã‚らã„;tearai ã¦ã„;tei ã¦ã„ã‚ã‚“;teian ã¦ã„ã„ã‚“;teiin ã¦ã„ã‹;teika ã¦ã„ã‹;teika ã¦ã„ã;teiki ã¦ã„ãã‘ã‚“;teikiken ã¦ã„ãã‚…ã†ã³;teikyuubi ã¦ã„ã“ã†;teikou ã¦ã„ã—;teishi ã¦ã„ã—;teishi ã¦ã„ã—;teishi ã¦ã„ã—ゃ;teisha ã¦ã„ã—ã‚…ã¤;teishutsu ã¦ã„ã§ã‚“;teiden ã¦ã„ã©;teido ã¦ã„ã­ã„;teinei ã¦ã„りゅã†ã˜ã‚‡;teiryuujo ã¦ã„れ;teire ã¦ãŒã¿;tegami ã¦ã;teki ã¦ãã‹ã;tekikaku ã¦ãã‹ã;tekikaku ã¦ãã™ã‚‹;tekisuru ã¦ãã›ã¤;tekisetsu ã¦ãã¨ã†;tekitou ã¦ãã©;tekido ã¦ãよã†;tekiyou ã¦ãã³;tekubi ã¦ã”ã‚;tegoro ã¦ã˜ãª;tejina ã¦ã¡ã‚‡ã†;techou ã¦ã£ãょã†;tekkyou ã¦ã£ãり;tekkiri ã¦ã£ã“ã†;tekkou ã¦ã£ã™ã‚‹;tessuru ã¦ã£ã¦ã„;tettei ã¦ã£ã½ã†;teppou ã¦ã¤;tetsu ã¦ã¤ãŒã;tetsugaku ã¦ã¤ã ã„;tetsudai ã¦ã¤ã ã†;tetsudau ã¦ã¤ã¥ã;tetsuduki ã¦ã¤ã©ã†;tetsudou ã¦ã¤ã‚„;tetsuya ã¦ã¬ãã„;tenugui ã¦ã¶ãã‚;tebukuro ã¦ã¾;tema ã¦ã¾ãˆ;temae ã¦ã‚‰;tera ã¦ã‚‰ã™;terasu ã¦ã‚‹;teru ã¦ã‚“;ten ã¦ã‚“;ten ã¦ã‚“ã„ã‚“;ten_in ã¦ã‚“ã‹ã„;tenkai ã¦ã‚“ã;tenki ã¦ã‚“ã‘ã„;tenkei ã¦ã‚“ã“ã†;tenkou ã¦ã‚“ã˜ã‚‡ã†;tenjou ã¦ã‚“ã™ã†;tensuu ã¦ã‚“ã¦ã‚“;tenten ã¦ã‚“ã¦ã‚“;tenten ã¦ã‚“ã­ã‚“;tennen ã¦ã‚“らんã‹ã„;tenrankai ã§;de ã§ã‚ã„;deai ã§ã‚ã†;deau ã§ã‚ã†;deau ã§ã„り;deiri ã§ã„りãã¡;deiriguchi ã§ã‹ã‘ã‚‹;dekakeru ã§ãã‚ãŒã‚Š;dekiagari ã§ãã‚ãŒã‚‹;dekiagaru ã§ãã”ã¨;dekigoto ã§ãã‚‹;dekiru ã§ãã‚‹ã ã‘;dekirudake ã§ãã¡;deguchi ã§ã“ã¼ã“;dekoboko ã§ã™ã‹ã‚‰;desukara ã§ãŸã‚‰ã‚;detarame ã§ã¯(ã§ã‚);deha(dewa) ã§ã‚€ã‹ãˆ;demukae ã§ã‚€ã‹ãˆã‚‹;demukaeru ã§ã‚‚;demo ã§ã‚‹;deru ã§ã‚“ã;denki ã§ã‚“ã;denki ã§ã‚“ãã‚…ã†;denkyuu ã§ã‚“ã—;denshi ã§ã‚“ã—ゃ;densha ã§ã‚“ã›ã‚“;densen ã§ã‚“ã›ã‚“;densen ã§ã‚“ã¡;denchi ã§ã‚“ã¡ã‚…ã†;denchuu ã§ã‚“ã¨ã†;dentou ã§ã‚“ã¨ã†;dentou ã§ã‚“ã±;denpa ã§ã‚“ã½ã†;denpou ã§ã‚“りゅã†;denryuu ã§ã‚“りょã;denryoku ã§ã‚“ã‚;denwa ã¨;to ã¨ã„;toi ã¨ã„ã‚ã‚ã›;toiawase ã¨ã†;tou ã¨ã†;tou ã¨ã†;tou ã¨ã†ã‚ã‚“;touan ã¨ã†ã„ã¤;touitsu ã¨ã†ã‘ã„;toukei ã¨ã†ã’;touge ã¨ã†ã–ã„;touzai ã¨ã†ã—ょ;tousho ã¨ã†ã˜;touji ã¨ã†ã˜ã¤;toujitsu ã¨ã†ã˜ã‚‡ã†;toujou ã¨ã†ã ã„;toudai ã¨ã†ã¡ã‚ƒã;touchaku ã¨ã†ã¨ã†;toutou ã¨ã†ãªã‚“;tounan ã¨ã†ã°ã‚“;touban ã¨ã†ã²ã‚‡ã†;touhyou ã¨ã†ã¶ã‚“;toubun ã¨ã†ã‚ã„;toumei ã¨ã†ã‚†;touyu ã¨ã†ã‚ˆã†;touyou ã¨ãŠã„;tooi ã¨ãŠã‹;tooka ã¨ãŠã;tooku ã¨ãŠã™;toosu ã¨ãŠã‚Š;toori ã¨ãŠã‚Šã‹ã‹ã‚‹;toorikakaru ã¨ãŠã‚Šã™ãŽã‚‹;toorisugiru ã¨ãŠã‚‹;tooru ã¨ã‹ã„;tokai ã¨ã‹ã™;tokasu ã¨ãŒã‚‹;togaru ã¨ã;toki ã¨ãã©ã;tokidoki ã¨ã;toku ã¨ã;toku ã¨ãã„;tokui ã¨ãã—ã‚…;tokushu ã¨ãã—ょã;tokushoku ã¨ãã¡ã‚‡ã†;tokuchou ã¨ãã¦ã„;tokutei ã¨ãã°ã„;tokubai ã¨ãã¹ã¤;tokubetsu ã¨ã‘ã„;tokei ã¨ã‘ã“ã‚€;tokekomu ã¨ã‘ã‚‹;tokeru ã¨ã‘ã‚‹;tokeru ã¨ã“;toko ã¨ã“ã®ã¾;tokonoma ã¨ã“ã‚„;tokoya ã¨ã“ã‚;tokoro ã¨ã“ã‚ãŒ;tokoroga ã¨ã“ã‚ã§;tokorode ã¨ã–ã‚“;tozan ã¨ã—;toshi ã¨ã—;toshi ã¨ã—ã¤ã;toshitsuki ã¨ã—ょ;tosho ã¨ã—より;toshiyori ã¨ã—ã‚“;toshin ã¨ã˜ã‚‡ã†;tojou ã¨ã˜ã‚‹;tojiru ã¨ãŸã‚“;totan ã¨ã ãª;todana ã¨ã¡;tochi ã¨ã£ãã‚…ã†;tokkyuu ã¨ã£ãã«;tokkuni ã¨ã¤ãœã‚“;totsuzen ã¨ã¦ã‚‚;totemo ã¨ã¨ã®ã†;totonou ã¨ã©ã;todoku ã¨ã©ã‘ã‚‹;todokeru ã¨ã©ã¾ã‚‹;todomaru ã¨ã©ã¾ã‚‹;todomaru ã¨ã©ã‚ã‚‹;todomeru ã¨ã©ã‚ã‚‹;todomeru ã¨ãªã‚Š;tonari ã¨ã«ã‹ã;tonikaku ã¨ã°ã™;tobasu ã¨ã°ã‚Š;tobari ã¨ã°ã‚Š;tobari ã¨ã³ã“ã‚€;tobikomu ã¨ã³ã ã™;tobidasu ã¨ã¶;tobu ã¨ã¶;tobu ã¨ã¾ã‚‹;tomaru ã¨ã‚ã‚‹;tomeru ã¨ã‚‚;tomo ã¨ã‚‚ã‹ã;tomokaku ã¨ã‚‚ã—ã³;tomoshibi ã¨ã‚‚ã ã¡;tomodachi ã¨ã‚‚ã«;tomoni ã¨ã‚‰;tora ã¨ã‚‰ãˆã‚‹;toraeru ã¨ã‚Š;tori ã¨ã‚Šã‚ã’ã‚‹;toriageru ã¨ã‚Šã„れる;toriireru ã¨ã‚Šã‹ãˆã‚‹;torikaeru ã¨ã‚Šã‘ã™;torikesu ã¨ã‚Šã ã™;toridasu ã¨ã‚Šã‚ã‘;toriwake ã¨ã‚‹;toru ã¨ã‚‹;toru ã¨ã‚‹;toru ã¨ã‚‹;toru ã¨ã‚Œã‚‹;toreru ã¨ã‚“ã§ã‚‚ãªã„;tondemonai ã©ã†;dou ã©ã†;dou ã©ã†ã„ãŸã—ã¾ã—ã¦;douitashimashite ã©ã†ã„ã¤;douitsu ã©ã†ã‹;douka ã©ã†ã‹ã;doukaku ã©ã†ã;dougu ã©ã†ã•;dousa ã©ã†ã—;doushi ã©ã†ã—ã¦;doushite ã©ã†ã—ã¦ã‚‚;doushitemo ã©ã†ã˜;douji ã©ã†ã›;douse ã©ã†ãž;douzo ã©ã†ãžã‚ˆã‚ã—ã;douzoyoroshiku ã©ã†ã¨ã;doutoku ã©ã†ã¶ã¤;doubutsu ã©ã†ã‚‚;doumo ã©ã†ã‚ˆã†;douyou ã©ã†ã‚ˆã†;douyou ã©ã†ã‚Šã‚‡ã†;douryou ã©ã†ã‚;douro ã©ã†ã‚;douwa ã©ãã©ã;dokidoki ã©ã;doku ã©ãã—ょ;dokusho ã©ãã—ã‚“;dokushin ã©ãã¨ã;dokutoku ã©ãりã¤;dokuritsu ã©ã“;doko ã©ã“ã‹;dokoka ã©ã•ã‚“;dosan ã©ã¡ã‚‰;dochira ã©ã£ã¨;dotto ã©ãªãŸ;donata ã©ãªã‚‹;donaru ã©ã®;dono ã©ã‚ˆã†;doyou ã©ã‚Šã‚‡ã;doryoku ã©ã‚Œ;dore ã©ã‚Œã©ã‚Œ;doredore ã©ã‚;doro ã©ã‚ã¼ã†;dorobou ã©ã‚“ã©ã‚“;dondon ã©ã‚“ãª;donna ã©ã‚“ãªã«;donnani ã©ã‚“ã¶ã‚Š;donburi ãª;na ãªã„;nai ãªã„ã‹;naika ãªã„ã›ã‚“;naisen ãªã„よã†;naiyou ãªãŠ;nao ãªãŠã™;naosu ãªãŠã™;naosu ãªãŠã‚‹;naoru ãªãŠã‚‹;naoru ãªã‹;naka ãªã‹ãªãŠã‚Š;nakanaori ãªã‹ãªã‹;nakanaka ãªã‹ã°;nakaba ãªã‹ã¿;nakami ãªã‹ã¿;nakami ãªã‹ã‚ˆã—;nakayoshi ãªãŒã„;nagai ãªãŒã„;nagai ãªãŒã™;nagasu ãªãŒã³ã;nagabiku ãªãŒã‚;nagame ãªãŒã‚ã‚‹;nagameru ãªãŒã‚Œ;nagare ãªãŒã‚Œã‚‹;nagareru ãªã;naku ãªã;naku ãªãã™;nakusu ãªãã™;nakusu ãªããªã‚‹;nakunaru ãªãã•ã‚ã‚‹;nagusameru ãªãã‚‹;naguru ãªã’ã‚‹;nageru ãªã•ã‚‹;nasaru ãªã—;nashi ãªã™;nasu ãªãœ;naze ãªãœãªã‚‰;nazenara ãªãž;nazo ãªãžãªãž;nazonazo ãªã£ã¨ã;nattoku ãªã¤;natsu ãªã¤ã‹ã—ã„;natsukashii ãªã§ã‚‹;naderu ãªãªã¤;nanatsu ãªãªã‚;naname ãªã«;nani ãªã«ã—ã‚;nanishiro ãªã«ã¶ã‚“;nanibun ãªã«ã‚‚;nanimo ãªã¬ã‹;nanuka ãªã¹;nabe ãªã¾ã„ã;namaiki ãªã¾ãˆ;namae ãªã¾ã‘ã‚‹;namakeru ãªã¿;nami ãªã¿ã;namiki ãªã¿ã ;namida ãªã‚„ã‚€;nayamu ãªã‚‰ã†;narau ãªã‚‰ã†;narau ãªã‚‰ã—;narashi ãªã‚‰ã™;narasu ãªã‚‰ã¶;narabu ãªã‚‰ã¹ã‚‹;naraberu ãªã‚‹;naru ãªã‚‹;naru ãªã‚‹;naru ãªã‚‹ã¹ã;narubeku ãªã‚‹ã»ã©;naruhodo ãªã‚Œã‚‹;nareru ãªã‚Œã‚‹;nareru ãªã‚;nawa ãªã‚“;nan ãªã‚“ãょã;nankyoku ãªã‚“ã¦;nante ãªã‚“ã§;nande ãªã‚“ã§ã‚‚;nandemo ãªã‚“ã¨ã‹;nantoka ãªã‚“ã¨ãªã;nantonaku ãªã‚“ã¨ã‚‚;nantomo ãªã‚“ã¹ã„;nanbei ãªã‚“ã¼ã;nanboku ã«;ni ã«;ni ã«ã‚ã†;niau ã«ãŠã„;nioi ã«ãŠã†;niou ã«ãŒã„;nigai ã«ãŒã™;nigasu ã«ãŒã¦;nigate ã«ãŽã‚„ã‹;nigiyaka ã«ãŽã‚‹;nigiru ã«ã;niku ã«ãã„;nikui ã«ãã„;nikui ã«ãã‚€;nikumu ã«ãらã—ã„;nikurashii ã«ã’ã‚‹;nigeru ã«ã”ã‚‹;nigoru ã«ã—;nishi ã«ã˜;niji ã«ã¡ã˜;nichiji ã«ã¡ã˜ã‚‡ã†;nichijou ã«ã¡ã‚„;nichiya ã«ã¡ã‚ˆã†ã²ã‚“;nichiyouhin ã«ã£ã‹;nikka ã«ã£ã;nikki ã«ã£ã“ã†;nikkou ã«ã£ã“り;nikkori ã«ã£ã¡ã‚…ã†;nicchuu ã«ã£ã¦ã„;nittei ã«ã£ã¨ã†;nittou ã«ã£ã½ã‚“;nippon ã«ã«ã‚“;ninin ã«ã¶ã„;nibui ã«ã‚‚ã¤;nimotsu ã«ã‚…ã†ã„ã‚“;nyuuin ã«ã‚…ã†ãŒã;nyuugaku ã«ã‚…ã†ã—ゃ;nyuusha ã«ã‚…ã†ã˜ã‚‡ã†;nyuujou ã«ã‚‡ã†ã¼ã†;nyoubou ã«ã‚‰ã‚€;niramu ã«ã‚‹;niru ã«ã‚‹;niru ã«ã‚;niwa ã«ã‚ã‹;niwaka ã­ã‚“れã„;nenrei ã®;no ã®ã†;nou ã®ã†ã‹;nouka ã®ã†ãŽã‚‡ã†;nougyou ã®ã†ã•ã‚“ã¶ã¤;nousanbutsu ã®ã†ãã‚“;nouson ã®ã†ã©;noudo ã®ã†ã¿ã‚“;noumin ã®ã†ã‚„ã;nouyaku ã®ã†ã‚Šã¤;nouritsu ã®ã†ã‚Šã‚‡ã;nouryoku ã®ã;noki ã®ã“ãŽã‚Š;nokogiri ã®ã“ã™;nokosu ã®ã“らãš;nokorazu ã®ã“り;nokori ã®ã“ã‚‹;nokoru ã®ã›ã‚‹;noseru ã®ã›ã‚‹;noseru ã®ãžã;nozoku ã®ãžã;nozoku ã®ãžã¿;nozomi ã®ãžã‚€;nozomu ã®ã©;nodo ã®ã°ã™;nobasu ã®ã°ã™;nobasu ã®ã³ã‚‹;nobiru ã®ã³ã‚‹;nobiru ã®ã¹ã‚‹;noberu ã®ã¼ã‚Š;nobori ã®ã¼ã‚‹;noboru ã®ã¼ã‚‹;noboru ã®ã¼ã‚‹;noboru ã®ã‚€;nomu ã®ã‚Š;nori ã®ã‚Šã‹ãˆ;norikae ã®ã‚Šã‹ãˆã‚‹;norikaeru ã®ã‚Šã“ã—;norikoshi ã®ã‚‹;noru ã®ã‚‹;noru ã®ã‚ã®ã‚;noronoro ã®ã‚“ã;nonki ã®ã‚“ã³ã‚Š;nonbiri ã¯;ha ã¯;ha ã¯ã„;hai ã¯ã„ã„ã‚;haiiro ã¯ã„ã;haiku ã¯ã„ã‘ã‚“;haiken ã¯ã„ã•ら;haisara ã¯ã„ãŸã¤;haitatsu ã¯ã„ゆã†;haiyuu ã¯ã†;hau ã¯ãˆã‚‹;haeru ã¯ã‹;haka ã¯ã‹ã›;hakase ã¯ã‹ã‚Š;hakari ã¯ã‹ã‚‹;hakaru ã¯ã‹ã‚‹;hakaru ã¯ã‹ã‚‹;hakaru ã¯ãŒã;hagaki ã¯ãŒã™;hagasu ã¯ãã‘;hakike ã¯ãã¯ã;hakihaki ã¯ã;haku ã¯ã;haku ã¯ã;haku ã¯ãã—ã‚…;hakushu ã¯ãã¶ã¤ã‹ã‚“;hakubutsukan ã¯ãã‚‹ã¾;haguruma ã¯ã’ã—ã„;hageshii ã¯ã“;hako ã¯ã“ã¶;hakobu ã¯ã•ã¾ã‚‹;hasamaru ã¯ã•ã¿;hasami ã¯ã•ã‚“;hasan ã¯ã—;hashi ã¯ã—;hashi ã¯ã—;hashi ã¯ã—ら;hashira ã¯ã—ã‚‹;hashiru ã¯ã˜ã;hajiku ã¯ã˜ã¾ã‚Š;hajimari ã¯ã˜ã¾ã‚‹;hajimaru ã¯ã˜ã‚;hajime ã¯ã˜ã‚ã¦;hajimete ã¯ã˜ã‚ã¾ã—ã¦;hajimemashite ã¯ã˜ã‚ã‚‹;hajimeru ã¯ã™;hasu ã¯ãš;hazu ã¯ãšã‹ã—ã„;hazukashii ã¯ãšã™;hazusu ã¯ãšã‚Œã‚‹;hazureru ã¯ãŸ;hata ã¯ãŸ;hata ã¯ãŸã‘;hatake ã¯ãŸã—ã¦;hatashite ã¯ãŸã¡;hatachi ã¯ãŸã‚‰ã;hataraki ã¯ãŸã‚‰ã;hataraku ã¯ã ;hada ã¯ã ã‹;hadaka ã¯ã ãŽ;hadagi ã¯ã¡;hachi ã¯ã¡;hachi ã¯ã£ã;hakki ã¯ã£ãり;hakkiri ã¯ã£ã‘ã‚“;hakken ã¯ã£ã“ã†;hakkou ã¯ã£ã—ゃ;hassha ã¯ã£ã—ゃ;hassha ã¯ã£ãã†;hassou ã¯ã£ãŸã¤;hattatsu ã¯ã£ã¦ã‚“;hatten ã¯ã£ã´ã‚‡ã†;happyou ã¯ã¤;hatsu ã¯ã¤;hatsu ã¯ã¤ã„ã;hatsuiku ã¯ã¤ãŠã‚“;hatsuon ã¯ã¤ã‹;hatsuka ã¯ã¤ã§ã‚“;hatsuden ã¯ã¤ã°ã„;hatsubai ã¯ã¤ã‚ã„;hatsumei ã¯ã§;hade ã¯ãª;hana ã¯ãª;hana ã¯ãªã—;hanashi ã¯ãªã—ã‚ã„;hanashiai ã¯ãªã—ã‚ã†;hanashiau ã¯ãªã—ã‹ã‘ã‚‹;hanashikakeru ã¯ãªã—ã¡ã‚…ã†;hanashichuu ã¯ãªã™;hanasu ã¯ãªã™;hanasu ã¯ãªã™;hanasu ã¯ãªã¯ã ã—ã„;hanahadashii ã¯ãªã°ãªã—ã„;hanabanashii ã¯ãªã³;hanabi ã¯ãªã¿;hanami ã¯ãªã‚„ã‹;hanayaka ã¯ãªã‚ˆã‚;hanayome ã¯ãªã‚Œã‚‹;hanareru ã¯ãªã‚Œã‚‹;hanareru ã¯ã­;hane ã¯ã­ã‚‹;haneru ã¯ã¯;haha ã¯ã¯ãŠã‚„;hahaoya ã¯ã°;haba ã¯ã¶ã;habuku ã¯ã¸ã‚“;hahen ã¯ã¿ãŒã;hamigaki ã¯ã‚ã‚‹;hameru ã¯ã‚„ã„;hayai ã¯ã‚„ã„;hayai ã¯ã‚„ãã¡;hayakuchi ã¯ã‚„ã—;hayashi ã¯ã‚„り;hayari ã¯ã‚„ã‚‹;hayaru ã¯ã‚‰;hara ã¯ã‚‰ã„ã“ã‚€;haraikomu ã¯ã‚‰ã„ã‚‚ã©ã™;haraimodosu ã¯ã‚‰ã†;harau ã¯ã‚Š;hari ã¯ã‚ŠãŒã­;harigane ã¯ã‚Šãã‚‹;harikiru ã¯ã‚‹;haru ã¯ã‚‹;haru ã¯ã‚‹;haru ã¯ã‚Œ;hare ã¯ã‚Œã‚‹;hareru ã¯ã‚“;han ã¯ã‚“ã„;han_i ã¯ã‚“ãˆã„;han_ei ã¯ã‚“ã‘ã„;hankei ã¯ã‚“ã“;hanko ã¯ã‚“ã“ã†;hankou ã¯ã‚“ã–ã„;hanzai ã¯ã‚“ã˜;hanji ã¯ã‚“ã›ã„;hansei ã¯ã‚“ãŸã„;hantai ã¯ã‚“ã ã‚“;handan ã¯ã‚“ã¨ã†;hantou ã¯ã‚“ã«ã‚“;hannin ã¯ã‚“ã°ã„;hanbai ã¯ã‚“ã¶ã‚“;hanbun ã°;ba ã°ã‚ã„;baai ã°ã„;bai ã°ã„ã¦ã‚“;baiten ã°ã„ã°ã„;baibai ã°ã‹;baka ã°ã‹ã‚‰ã—ã„;bakarashii ã°ãã ã„;bakudai ã°ãã¯ã¤;bakuhatsu ã°ã—ょ;basho ã°ã¡;bachi ã°ã£ã™ã‚‹;bassuru ã°ã£ãŸã‚Š;battari ã°ã­;bane ã°ã‚ã‚“;bamen ã°ã‚“;ban ã°ã‚“;ban ã°ã‚“;ban ã°ã‚“ãã¿;bangumi ã°ã‚“ã”ã†;bangou ã°ã‚“ã–ã„;banzai ã°ã‚“ã¡;banchi ã°ã‚“ã‚;banme ã²;hi ã²;hi ã²;hi ã²;hi ã²ãˆã‚‹;hieru ã²ã‹ã;hikaku ã²ã‹ãã¦ã;hikakuteki ã²ã‹ã’;hikage ã²ã‹ã‚Š;hikari ã²ã‹ã‚‹;hikaru ã²ãŒã„;higai ã²ãŒãˆã‚Š;higaeri ã²ã;hiki ã²ãã†ã‘ã‚‹;hikiukeru ã²ãã‹ãˆã™;hikikaesu ã²ãã–ã‚“;hikizan ã²ãã ã—;hikidashi ã²ãã ã™;hikidasu ã²ãã¨ã‚ã‚‹;hikitomeru ã²ãょã†;hikyou ã²ãã‚ã‘;hikiwake ã²ã;hiku ã²ã;hiku ã²ãã„;hikui ã²ã‘ã¤;hiketsu ã²ã’;hige ã²ã’ã;higeki ã²ã“ã†;hikou ã²ã“ã†ã˜ã‚‡ã†;hikoujou ã²ã•ã—ã¶ã‚Š;hisashiburi ã²ã–;hiza ã²ã–ã—;hizashi ã²ã˜;hiji ã²ã˜ã‚‡ã†;hijou ã²ã ã‚Š;hidari ã²ã£ã‹ã‹ã‚‹;hikkakaru ã²ã£ã‹ã‘ã‚‹;hikkakeru ã²ã£ã;hikki ã²ã£ãりã‹ãˆã™;hikkurikaesu ã²ã£ãりã‹ãˆã‚‹;hikkurikaeru ã²ã£ã“ã—;hikkoshi ã²ã£ã“ã™;hikkosu ã²ã£ã“ã‚€;hikkomu ã²ã£ã—;hisshi ã²ã£ã—ゃ;hissha ã²ã£ã±ã‚‹;hipparu ã²ã¤ã˜;hitsuji ã²ã¤ã˜ã‚…ã²ã‚“;hitsujuhin ã²ã¤ã‚ˆã†;hitsuyou ã²ã¦ã„;hitei ã²ã¨ã”ã¿;hitogomi ã²ã¨ã•ã—ゆã³;hitosashiyubi ã²ã¨ã—ã„;hitoshii ã²ã¨ã™ã;hitosuki ã²ã¨ã¤;hitotsu ã²ã¨ã¨ãŠã‚Š;hitotoori ã²ã¨ã©ãŠã‚Š;hitodoori ã²ã¨ã¾ãš;hitomazu ã²ã¨ã¿;hitomi ã²ã¨ã‚„ã™ã¿;hitoyasumi ã²ã¨ã‚Š;hitori ã²ã¨ã‚Šã”ã¨;hitorigoto ã²ã¨ã‚Šã§ã«;hitorideni ã²ã¨ã‚Šã²ã¨ã‚Š;hitorihitori ã²ã©ã„;hidoi ã²ã«ã;hiniku ã²ã«ã¡;hinichi ã²ã­ã‚‹;hineru ã²ã®ã„り;hinoiri ã²ã®ã§;hinode ã²ã¯ã‚“;hihan ã²ã²ã‚‡ã†;hihyou ã²ã³;hibi ã²ã³ã;hibiki ã²ã³ã;hibiku ã²ãµ;hifu ã²ã¿ã¤;himitsu ã²ã‚‚;himo ã²ã‚ƒã;hyaku ã²ã‚ƒã£ã‹ã˜ã¦ã‚“;hyakkajiten ã²ã‚ƒã£ã‹ã˜ã¦ã‚“;hyakkajiten ã²ã‚„ã™;hiyasu ã²ã‚‡ã†ã‹;hyouka ã²ã‚‡ã†ã’ã‚“;hyougen ã²ã‚‡ã†ã”;hyougo ã²ã‚‡ã†ã—;hyoushi ã²ã‚‡ã†ã—ã;hyoushiki ã²ã‚‡ã†ã˜ã‚…ã‚“;hyoujun ã²ã‚‡ã†ã˜ã‚‡ã†;hyoujou ã²ã‚‡ã†ã°ã‚“;hyouban ã²ã‚‡ã†ã»ã‚“;hyouhon ã²ã‚‡ã†ã‚ã‚“;hyoumen ã²ã‚‡ã†ã‚ã‚“;hyouron ã²ã‚ˆã†;hiyou ã²ã‚‰ãŒãª;hiragana ã²ã‚‰ã;hiraku ã²ã‚‹;hiru ã²ã‚‹ã­;hirune ã²ã‚ã„;hiroi ã²ã‚ã†;hirou ã²ã‚ãŒã‚‹;hirogaru ã²ã‚ã’ã‚‹;hirogeru ã²ã‚ã•;hirosa ã²ã‚ã°;hiroba ã²ã‚ã³ã‚;hirobiro ã²ã‚ã‚ã‚‹;hiromeru ã³ã˜ã‚“;bijin ã³ã£ãり;bikkuri ã³ã¿ã‚‡ã†;bimyou ã³ã‚‡ã†;byou ã³ã‚‡ã†ã„ã‚“;byouin ã³ã‚‡ã†ã;byouki ã³ã‚‡ã†ã©ã†;byoudou ã³ã‚ˆã†;biyou ã³ã‚“;bin ã³ã‚“ã›ã‚“;binsen ã³ã‚“ã¥ã‚;bindume ã´ã‹ã´ã‹;pikapika ã´ã£ãŸã‚Š;pittari ãµ;fu ãµã‚ã‚“;fuan ãµã†ã‘ã„;fuukei ãµã†ã›ã‚“;fuusen ãµã†ãžã;fuuzoku ãµã†ã¨ã†;fuutou ãµã†ãµ;fuufu ãµã†ã‚“;fuun ãµãˆ;fue ãµãˆã‚‹;fueru ãµãˆã‚‹;fueru ãµã‹;fuka ãµã‹ã„;fukai ãµã‹ã¾ã‚‹;fukamaru ãµããã;fukisoku ãµãã‚…ã†;fukyuu ãµãã‚“;fukin ãµã;fuku ãµã;fuku ãµã;fuku ãµãã–ã¤;fukuzatsu ãµãã—;fukushi ãµãã—ゃ;fukusha ãµãã—ã‚…ã†;fukushuu ãµãã™ã†;fukusuu ãµããã†;fukusou ãµãã‚€;fukumu ãµãã‚ã‚‹;fukumeru ãµãらã¾ã™;fukuramasu ãµãらむ;fukuramu ãµãã‚;fukuro ãµã‘ã¤;fuketsu ãµã‘ã‚‹;fukeru ãµã‘ã‚‹;fukeru ãµã“ã†;fukou ãµã”ã†;fugou ãµã•ã„;fusai ãµã•ãŒã‚‹;fusagaru ãµã•ã;fusagu ãµã–ã‘ã‚‹;fuzakeru ãµã—ãŽ;fushigi ãµã˜ã‚†ã†;fujiyuu ãµã˜ã‚“;fujin ãµã˜ã‚“;fujin ãµã™ã¾;fusuma ãµã›ã„;fusei ãµã›ã;fusegu ãµãã;fusoku ãµãžã;fuzoku ãµãŸã”;futago ãµãŸãŸã³;futatabi ãµãŸã¤;futatsu ãµã ã‚“;fudan ãµã¤;futsu ãµã¤ã†;futsuu ãµã¤ã†;futsuu ãµã¤ã‹;futsuka ãµã§;fude ãµã¨;futo ãµã¨ã„;futoi ãµã¨ã†;futou ãµã¨ã‚‹;futoru ãµã¨ã‚“;futon ãµãªã³ã‚“;funabin ãµã­;fune ãµã­;fune ãµã³ã‚“;fubin ãµã¶ã;fubuki ãµã¸ã„;fuhei ãµã¾ã‚“;fuman ãµã¿;fumi ãµã¿ãり;fumikiri ãµã‚€;fumu ãµã‚‚ã¨;fumoto ãµã‚„ã™;fuyasu ãµã‚„ã™;fuyasu ãµã‚†;fuyu ãµã‚Š;furi ãµã‚Š;furi ãµã‚ŠãŒãª;furigana ãµã‚Šã‚€ã;furimuku ãµã‚Šã‚‡ã†;furyou ãµã‚‹;furu ãµã‚‹;furu ãµã‚‹ã„;furui ãµã‚‹ãˆã‚‹;furueru ãµã‚‹ã¾ã†;furumau ãµã‚Œã‚‹;fureru ãµã‚;furo ãµã‚ã—ã;furoshiki ãµã‚“;fun ãµã‚“ã„ã;fun_iki ãµã‚“ã‹;funka ãµã‚“ã™ã„;funsui ã¶;bu ã¶ã;buki ã¶ã•ãŸ;busata ã¶ã—;bushi ã¶ã—ã‚…;bushu ã¶ã˜;buji ã¶ãŸã„;butai ã¶ã£ã‹;bukka ã¶ã£ã—ã¤;busshitsu ã¶ã£ãã†;bussou ã¶ã¤;butsu ã¶ã¤ã‹ã‚‹;butsukaru ã¶ã¤ã‘ã‚‹;butsukeru ã¶ã¤ã¶ã¤;butsubutsu ã¶ã¤ã‚Š;butsuri ã¶ã²ã‚“;buhin ã¶ã¶ã‚“;bubun ã¶ã‚‰ã•ã’ã‚‹;burasageru ã¶ã‚“ã‹;bunka ã¶ã‚“ã‹ã„;bunkai ã¶ã‚“ãŒã;bungaku ã¶ã‚“ã‘ã‚“;bunken ã¶ã‚“ã’ã„;bungei ã¶ã‚“ã—ょã†;bunshou ã¶ã‚“ã™ã†;bunsuu ã¶ã‚“ã›ã;bunseki ã¶ã‚“ãŸã„;buntai ã¶ã‚“ãŸã‚“;buntan ã¶ã‚“ã·;bunpu ã¶ã‚“ã¼ã†ã;bunbougu ã¶ã‚“ã½ã†;bunpou ã¶ã‚“ã¿ã‚ƒã;bunmyaku ã¶ã‚“ã‚ã„;bunmei ã¶ã‚“ã‚„;bun_ya ã¶ã‚“りょã†;bunryou ã¶ã‚“ã‚‹ã„;bunrui ã¸ã„;hei ã¸ã„ã‹ã„;heikai ã¸ã„ã;heiki ã¸ã„ã“ã†;heikou ã¸ã„ã˜ã¤;heijitsu ã¸ã„ãŸã„;heitai ã¸ã„ã¼ã‚“;heibon ã¸ã„ã‚„;heiya ã¸ã„ã‚;heiwa ã¸ã“ã‚€;hekomu ã¸ã;heso ã¸ãŸ;heta ã¸ã ãŸã‚‹;hedataru ã¸ã ã¦ã‚‹;hedateru ã¸ã‚„;heya ã¸ã‚‰ã™;herasu ã¸ã‚‹;heru ã¸ã‚‹;heru ã¸ã‚“;hen ã¸ã‚“;hen ã¸ã‚“;hen ã¸ã‚“;hen ã¸ã‚“ã‹;henka ã¸ã‚“ã“ã†;henkou ã¸ã‚“ã—ã‚…ã†;henshuu ã¸ã‚“ã˜;henji ã¹ã£ãã†;bessou ã¹ã¤;betsu ã¹ã¤ã«;betsuni ã¹ã¤ã¹ã¤;betsubetsu ã¹ã‚“ãょã†;benkyou ã¹ã‚“ã˜ã‚‡;benjo ã¹ã‚“ã¨ã†;bentou ã¹ã‚“り;benri ã»ã†;hou ã»ã†;hou ã»ã†ãŒã;hougaku ã»ã†ã;houki ã»ã†ã’ã‚“;hougen ã»ã†ã“ã†;houkou ã»ã†ã“ã;houkoku ã»ã†ã—ã‚“;houshin ã»ã†ã›ã;houseki ã»ã†ãã†;housou ã»ã†ãã†;housou ã»ã‚“ã¨ã†;hontou ã»ã‚“ã«ã‚“;honnin ã»ã‚“ã®;honno ã»ã‚“ã¶;honbu ã»ã‚“ã‚‚ã®;honmono ã»ã‚“ã‚„ã;hon_yaku ã»ã‚“らã„;honrai ã¼ã†;bou ã¼ã†;bou ã¼ã†ãˆã‚“ãょã†;bouenkyou ã¼ã†ã‘ã‚“;bouken ã¼ã†ã•ã‚“;bousan ã¼ã†ã—;boushi ã¼ã†ã—;boushi ã¼ã†ã ã„;boudai ã¼ã†ã¯ã‚“;bouhan ã¼ã†ã‚„;bouya ã¼ã†ã‚Šã‚‡ã;bouryoku ã¼ãã˜ã‚‡ã†;bokujou ã¼ãã¡ã;bokuchiku ã¼ã—ã‚…ã†;boshuu ã¼ã£ã¡ã‚ƒã‚“;bocchan ã¼ã‚;boro ã¼ã‚“;bon ã¼ã‚“ã¡;bonchi ã¾ã‚;maa ã¾ã‚ã¾ã‚;maamaa ã¾ã„;mai ã¾ã„ã”;maigo ã¾ã„ã™ã†;maisuu ã¾ã„ã‚‹;mairu ã¾ã†;mau ã¾ã‹ã›ã‚‹;makaseru ã¾ã‹ãªã†;makanau ã¾ãŒã‚‹;magaru ã¾ã;maki ã¾ã;maku ã¾ã;maku ã¾ã;maku ã¾ãら;makura ã¾ã‘;make ã¾ã‘ã‚‹;makeru ã¾ã’ã‚‹;mageru ã¾ã”;mago ã¾ã”ã¾ã”;magomago ã¾ã•ã‹;masaka ã¾ã•ã¤;masatsu ã¾ã•ã«;masani ã¾ã–ã‚‹;mazaru ã¾ã–ã‚‹;mazaru ã¾ã—;mashi ã¾ã˜ã‚‹;majiru ã¾ã˜ã‚‹;majiru ã¾ã™;masu ã¾ã™ã¾ã™;masumasu ã¾ãš;mazu ã¾ãšã„;mazui ã¾ãšã—ã„;mazushii ã¾ãœã‚‹;mazeru ã¾ãœã‚‹;mazeru ã¾ãŸ;mata ã¾ãŸã;matagu ã¾ãŸã¯;mataha ã¾ã ;mada ã¾ã¡;machi ã¾ã¡ã‚ã„ã—ã¤;machiaishitsu ã¾ã¡ã‚ã‚ã›ã‚‹;machiawaseru ã¾ã¡ã‹ã©;machikado ã¾ã¡ãŒã„;machigai ã¾ã¡ãŒã†;machigau ã¾ã¡ãŒãˆã‚‹;machigaeru ã¾ã£ã‹;makka ã¾ã£ãら;makkura ã¾ã£ãã‚;makkuro ã¾ã£ã•ãŠ;massao ã¾ã£ã•ã;massaki ã¾ã£ã—ã‚;masshiro ã¾ã£ã™ã;massugu ã¾ã£ãŸã;mattaku ã¾ã¤;matsu ã¾ã¤;matsu ã¾ã¤ã‚Š;matsuri ã¾ã¤ã‚‹;matsuru ã¾ã¨ã¾ã‚‹;matomaru ã¾ã¨ã‚ã‚‹;matomeru ã¾ã©;mado ã¾ã©ãã¡;madoguchi ã¾ãªã¶;manabu ã¾ã«ã‚ã†;maniau ã¾ã­;mane ã¾ã­ã;maneku ã¾ã­ã‚‹;maneru ã¾ã¶ã—ã„;mabushii ã¾ã¶ãŸ;mabuta ã¾ã¾;mama ã¾ã‚;mame ã¾ã‚‚ãªã;mamonaku ã¾ã‚‚ã‚‹;mamoru ã¾ã‚ˆã†;mayou ã¾ã‚‹;maru ã¾ã‚‹ã„;marui ã¾ã‚‹ã§;marude ã¾ã‚Œ;mare ã¾ã‚ã™;mawasu ã¾ã‚り;mawari ã¾ã‚りã¿ã¡;mawarimichi ã¾ã‚ã‚‹;mawaru ã¾ã‚“ã„ã‚“;man_in ã¾ã‚“ãŒ;manga ã¾ã‚“ãžã;manzoku ã¾ã‚“ã¦ã‚“;manten ã¾ã‚“ãªã‹;mannaka ã¾ã‚“ã­ã‚“ã²ã¤;mannenhitsu ã¾ã‚“ã¾ãˆ;manmae ã¾ã‚“ã¾ã‚‹ã„;manmarui ã¿;mi ã¿;mi ã¿ã‚ã’ã‚‹;miageru ã¿ãˆã‚‹;mieru ã¿ãŠãり;miokuri ã¿ãŠãã‚‹;miokuru ã¿ãŠã‚ã™;miorosu ã¿ã‹ã‘;mikake ã¿ã‹ãšã;mikazuki ã¿ã‹ãŸ;mikata ã¿ã‹ãŸ;mikata ã¿ãŒã;migaku ã¿ãŽ;migi ã¿ã”ã¨;migoto ã¿ã•ã;misaki ã¿ã˜ã‹ã„;mijikai ã¿ã˜ã‚;mijime ã¿ãš;mizu ã¿ãšã†ã¿;mizuumi ã¿ãšã‹ã‚‰;mizukara ã¿ãšãŽ;mizugi ã¿ã›ã‚„;miseya ã¿ã›ã‚‹;miseru ã¿ã;miso ã¿ã ã—;midashi ã¿ã¡;michi ã¿ã¡ã˜ã‚…ã‚“;michijun ã¿ã¡ã‚‹;michiru ã¿ã£ã‹;mikka ã¿ã£ã¤;mittsu ã¿ã£ã¨ã‚‚ãªã„;mittomonai ã¿ã¤;mitsu ã¿ã¤ã‹ã‚‹;mitsukaru ã¿ã¤ã‘ã‚‹;mitsukeru ã¿ã¤ã‚ã‚‹;mitsumeru ã¿ã©ã‚Š;midori ã¿ãª;mina ã¿ãªãŠã™;minaosu ã¿ãªã¨;minato ã¿ãªã‚Œã‚‹;minareru ã¿ã«ãã„;minikui ã¿ã®ã‚‹;minoru ã¿ã¶ã‚“;mibun ã¿ã»ã‚“;mihon ã¿ã¾ã„;mimai ã¿ã¾ã†;mimau ã¿ã¾ã‚“;miman ã¿ã¿;mimi ã¿ã‚‡ã†;myou ã¿ã‚‡ã†ã˜;myouji ã¿ã‚‰ã„;mirai ã¿ã‚Šã‚‡ã;miryoku ã¿ã‚‹;miru ã¿ã‚‹;miru ã¿ã‚“ã‹ã‚“;minkan ã¿ã‚“ã—ã‚…;minshu ã¿ã‚“よã†;min_you ã‚€;mu ã‚€ã„ã‹;muika ã‚€ã‹ã„;mukai ã‚€ã‹ã†;mukau ã‚€ã‹ãˆ;mukae ã‚€ã‹ãˆã‚‹;mukaeru ã‚€ã‹ã—;mukashi ã‚€ã;muki ã‚€ã;muku ã‚€ã;muku ã‚€ã‘;muke ã‚€ã‘ã‚‹;mukeru ã‚€ã’ã‚“;mugen ã‚€ã“ã†;mukou ã‚€ã—;mushi ã‚€ã—;mushi ã‚€ã—ã‚ã¤ã„;mushiatsui ã‚€ã—ã°;mushiba ã‚€ã—ã‚;mushiro ã‚€ã˜;muji ã‚€ã˜ã‚…ã‚“;mujun ã‚€ã™;musu ã‚€ã™ã†;musuu ã‚€ã™ã“;musuko ã‚€ã™ã¶;musubu ã‚€ã™ã‚;musume ã‚€ãšã‹ã—ã„;muzukashii ã‚€ã ;muda ã‚€ã¡ã‚…ã†;muchuu ã‚€ã£ã¤;muttsu ã‚€ã­;mune むら;mura むらã•ã;murasaki むり;muri むりょã†;muryou ã‚;me ã‚;me ã‚ã„;mei ã‚ã„ã‹ã;meikaku ã‚ã„ã•ã;meisaku ã‚ã„ã—;meishi ã‚ã„ã—;meishi ã‚ã„ã—ょ;meisho ã‚ã„ã—ã‚“;meishin ã‚ã„ã˜ã‚‹;meijiru ã‚ã„ã˜ã‚“;meijin ã‚ã„ãšã‚‹;meizuru ã‚ã„ã¶ã¤;meibutsu ã‚ã„ã‚ã„;meimei ã‚ã„れã„;meirei ã‚ã„ã‚ã;meiwaku ã‚ã†ãˆ;meue ã‚ãã¾ã‚Œã‚‹;megumareru ã‚ãã‚‹;meguru ã‚ã–ã™;mezasu ã‚ã–ã¾ã—;mezamashi ã‚ã—;meshi ã‚ã—ã‚ãŒã‚‹;meshiagaru ã‚ã—ãŸ;meshita ã‚ã˜ã‚‹ã—;mejirushi ã‚ãšã‚‰ã—ã„;mezurashii ã‚ã ã¤;medatsu ã‚ã¡ã‚ƒãã¡ã‚ƒ;mechakucha ã‚ã£ãり;mekkiri ã‚ã£ãŸã«;mettani ã‚ã§ãŸã„;medetai ã‚ã¾ã„;memai ã‚ã‚„ã™;meyasu ã‚ã‚“;men ã‚ã‚“ãょ;menkyo ã‚ã‚“ã›ã;menseki ã‚ã‚“ã›ã¤;mensetsu ã‚ã‚“ãœã„;menzei ã‚ã‚“ã©ã†;mendou ã‚ã‚“ã©ã†ãã•ã„;mendoukusai ã‚‚ã†;mou ã‚‚ã†ã‹ã‚‹;moukaru ã‚‚ã†ã‘ã‚‹;moukeru ã‚‚ã†ã‘ã‚‹;moukeru ã‚‚ã†ã—ã‚ã’ã‚‹;moushiageru ã‚‚ã†ã—ã“ã‚€;moushikomu ã‚‚ã†ã—ã‚ã‘;moushiwake ã‚‚ã†ã—ã‚ã‘ãªã„;moushiwakenai ã‚‚ã†ã™;mousu ã‚‚ã†ãµ;moufu ã‚‚ãˆã‚‹;moeru ã‚‚ãã–ã„;mokuzai ã‚‚ãã˜;mokuji ã‚‚ãã¦ã;mokuteki ã‚‚ãã²ã‚‡ã†;mokuhyou ã‚‚ãよã†;mokuyou ã‚‚ã—;moshi ã‚‚ã—ã‹ã—ãŸã‚‰;moshikashitara ã‚‚ã—ã‹ã™ã‚‹ã¨;moshikasuruto ã‚‚ã—ã‚‚;moshimo ã‚‚ã—ã‚‚ã—;moshimoshi ã‚‚ã˜;moji ã‚‚ãŸã‚Œã‚‹;motareru ã‚‚ã¡;mochi ã‚‚ã¡ã‚ã’ã‚‹;mochiageru ã‚‚ã¡ã„ã‚‹;mochiiru ã‚‚ã¡ã‚ã‚“;mochiron ã‚‚ã£ãŸã„ãªã„;mottainai ã‚‚ã£ã¦;motte ã‚‚ã£ã¨;motto ã‚‚ã£ã¨ã‚‚;mottomo ã‚‚ã£ã¨ã‚‚;mottomo ã‚‚ã¤;motsu ã‚‚ã¨;moto ã‚‚ã¨ã„;motoi ã‚‚ã¨ã¥ã;motoduku ã‚‚ã¨ã‚ã‚‹;motomeru ã‚‚ã¨ã‚‚ã¨;motomoto ã‚‚ã©ã™;modosu ã‚‚ã©ã‚‹;modoru ã‚‚ã®;mono ã‚‚ã®;mono ã‚‚ã®ãŠã;monooki ã‚‚ã®ãŠã¨;monooto ã‚‚ã®ãŒãŸã‚Š;monogatari ã‚‚ã®ãŒãŸã‚‹;monogataru ã‚‚ã®ã”ã¨;monogoto ã‚‚ã®ã•ã—;monosashi ã‚‚ã®ã™ã”ã„;monosugoi ã‚‚ã‚€;momu ã‚‚ã‚‚;momo ã‚‚ã‚„ã™;moyasu もよã†;moyou もよãŠã—;moyooshi もらã†;morau もり;mori ã‚‚ã‚“;mon ã‚‚ã‚“ã;monku ã‚‚ã‚“ã ã„;mondai ã‚‚ã‚“ã©ã†;mondou ã‚„;ya ã‚„ãŠã‚„;yaoya ã‚„ã‹ã¾ã—ã„;yakamashii ã‚„ã‹ã‚“;yakan ã‚„ãŒã¦;yagate ã‚„ãŽã‚‡ã†;yagyou ã‚„ã;yaku ã‚„ã;yaku ã‚„ãã—ゃ;yakusha ã‚„ãã—ょ;yakusho ã‚„ãã™;yakusu ã‚„ããã;yakusoku ã‚„ãã ã¤;yakudatsu ã‚„ãã«ã‚“;yakunin ã‚„ãã²ã‚“;yakuhin ã‚„ãã‚;yakume ã‚„ãã‚り;yakuwari ã‚„ã‘ã‚‹;yakeru ã‚„ã•ã„;yasai ã‚„ã•ã—ã„;yasashii ã‚„ã•ã—ã„;yasashii ã‚„ã—ã‚;yashiro ã‚„ã˜ã‚‹ã—;yajirushi ã‚„ã™ã„;yasui ã‚„ã™ã„;yasui ã‚„ã™ã¿;yasumi ã‚„ã™ã‚€;yasumu ã‚„ã›ã‚‹;yaseru ã‚„ãŸã‚‰ã«;yatarani ã‚„ã¡ã‚…ã†;yachuu ã‚„ã¡ã‚“;yachin ã‚„ã£ã‹ã„;yakkai ã‚„ã£ãょã;yakkyoku ã‚„ã£ã¤;yattsu ã‚„ã£ã¤ã‘ã‚‹;yattsukeru ã‚„ã£ã¨;yatto ã‚„ã£ã±ã‚Š;yappari ã‚„ã¨ã†;yatou ã‚„ã©;yado ã‚„ã­;yane ã‚„ã¶ã‚‹;yaburu ã‚„ã¶ã‚Œã‚‹;yabureru ã‚„ã¾;yama ã‚„ã¾ã„;yamai ã‚„ã‚€;yamu ã‚„ã‚€;yamu やむをãˆãªã„;yamuwoenai ã‚„ã‚ã‚‹;yameru ã‚„ã‚„;yaya ã‚„ã‚‹;yaru ã‚„ã‚らã‹ã„;yawarakai ã‚„ã‚らã‹ã„;yawarakai ゆ;yu ゆã„ã„ã¤;yuiitsu ゆã†ãˆã‚“ã¡;yuuenchi ゆã†ã‹ã‚“;yuukan ゆã†ãŒãŸ;yuugata ゆã†ã;yuuki ゆã†ã“ã†;yuukou ゆã†ã“ã†;yuukou ゆã†ã—ã‚…ã†;yuushuu ゆã†ã—ょã†;yuushou ゆã†ã˜ã‚‡ã†;yuujou ゆã†ã˜ã‚“;yuujin ゆã†ãã†;yuusou ゆã†ã ã¡;yuudachi ゆã†ã®ã†;yuunou ゆã†ã²;yuuhi ゆã†ã³ã‚“;yuubin ゆã†ã¹;yuube ゆã†ã‚ã„;yuumei ゆã†ã‚†ã†;yuuyuu ゆã†ã‚Š;yuuri ゆã†ã‚Šã‚‡ã†;yuuryou ゆã‹ã„;yukai ゆã‹ãŸ;yukata ゆã;yuki ゆããˆ;yukue ゆã‘ã¤;yuketsu ゆã’;yuge ゆã—ã‚…ã¤;yushutsu ゆãšã‚‹;yuzuru ゆãã†;yusou ゆãŸã‹;yutaka ゆã ã‚“;yudan ゆã£ãり;yukkuri ゆã§ã‚‹;yuderu ゆã«ã‚…ã†;yunyuu ゆã®ã¿;yunomi ゆã³;yubi ゆã³ã‚;yubiwa ゆã‚;yume ゆるã„;yurui ゆるã™;yurusu ゆれる;yureru よã‚ã‘;yoake よã„;yoi よã†;you よã†;you よã†ã„;youi よã†ã„;youi よã†ã‹;youka よã†ãŒã‚“;yougan よã†ã;youki よã†ã;youki よã†ãã‚…ã†;youkyuu よã†ã”;yougo よã†ã—;youshi よã†ã˜;youji よã†ã˜;youji よã†ã˜ã‚“;youjin よã†ã™;yousu よã†ã™ã‚‹;yousuru よã†ã™ã‚‹ã«;yousuruni よã†ã›ã;youseki よã†ã;youso よã†ã¡;youchi よã†ã¡ãˆã‚“;youchien よã†ã¦ã‚“;youten よã†ã¨;youto よã†ã²ã‚“ã¦ã‚“;youhinten よã†ã³;youbi よã†ãµã;youfuku よã†ã¶ã‚“;youbun よã†ã‚‚ã†;youmou よã†ã‚„ã;youyaku よã†ã‚Šã‚‡ã†;youryou よã;yoki よã;yoku よãã°ã‚Š;yokubari よã‘ã„;yokei よã“;yoko よã“ãŽã‚‹;yokogiru よã“ã™;yokosu よã•ã‚“;yosan よã—ã‚…ã†;yoshuu よã™;yosu よã›ã‚‹;yoseru よã;yoso よãã;yosoku よã£ã‹;yokka よã£ã¤;yottsu よã£ã±ã‚‰ã„;yopparai よã¤ã‹ã©;yotsukado よã¦ã„;yotei よã®ãªã‹;yononaka よã³;yobi よã³ã‹ã‘ã‚‹;yobikakeru よã³ã ã™;yobidasu よã¶;yobu よã¶ã‚“;yobun よã»ã†;yohou よã¼ã†;yobou よã¿;yomi よã¿ãŒãˆã‚‹;yomigaeru よむ;yomu よã‚;yome よやã;yoyaku よゆã†;yoyuu より;yori よる;yoru よる;yoru よる;yoru よるã¨;yoruto よã‚ã“ã³;yorokobi よã‚ã“ã¶;yorokobu よã‚ã—ã„;yoroshii よã‚ã—ã;yoroshiku よã‚ã„;yowai らã„;rai らã„ã«ã¡;rainichi らã;raku らãã ã„;rakudai らん;ran らんã¼ã†;ranbou りãˆã;rieki りã‹;rika りã‹ã„;rikai りãŒã„;rigai りã;riku りã“ã†;rikou りã“ã‚“;rikon りãã†;risou りã£ã±;rippa りã¤;ritsu りゃãã™;ryakusu りゅã†;ryuu りゅã†ã„ã;ryuuiki りゅã†ãŒã;ryuugaku りゆã†;riyuu りょã†;ryou りょã†;ryou りょã†;ryou りょã†ãŒãˆ;ryougae りょã†ãŒã‚;ryougawa りょã†ãã‚“;ryoukin りょã†ã—;ryoushi りょã†ã—ã‚…ã†;ryoushuu りょã†ã˜;ryouji りょã†ã‚Š;ryouri りょã‹ã‚“;ryokan りょã“ã†;ryokou りよã†;riyou りん;rin りんã˜;rinji ã‚‹ã™;rusu ã‚‹ã™ã°ã‚“;rusuban れã„;rei れã„;rei れã„ãŒã„;reigai れã„ãŽ;reigi れã„ã›ã„;reisei れã„ãžã†ã“;reizouko れã„ã¦ã‚“;reiten れã„ã¨ã†;reitou れã„ã¼ã†;reibou れãã—;rekishi れã£ã—ゃ;ressha れã£ã¨ã†;rettou れã¤;retsu れんãŒ;renga れんã”ã†;rengou れんã—ã‚…ã†;renshuu れんãã†;rensou れんãžã;renzoku れんらã;renraku ã‚ã†ã‹;rouka ã‚ã†ã˜ã‚“;roujin ã‚ã†ãã;rousoku ã‚ã†ã©ã†;roudou ã‚ããŠã‚“;rokuon ã‚ã‚“ã˜ã‚‹;ronjiru ã‚ã‚“ãšã‚‹;ronzuru ã‚ã‚“ãã†;ronsou ã‚ã‚“ã¶ã‚“;ronbun ã‚;wa ã‚ãˆã„;waei ã‚ã‹ã„;wakai ã‚ã‹ã™;wakasu ã‚ã‹ã‚‹;wakaru ã‚ã‹ã‚Œ;wakare ã‚ã‹ã‚Œã‚‹;wakareru ã‚ã‹ã‚Œã‚‹;wakareru ã‚ã‹ã‚ã‹ã—ã„;wakawakashii ã‚ãŒ;waga ã‚ãŒã¾ã¾;wagamama ã‚ã;waki ã‚ã;waku ã‚ã;waku ã‚ã‘;wake ã‚ã‘ã‚‹;wakeru ã‚ã–ã¨;wazato ã‚ã™ã‚Œã‚‚ã®;wasuremono ã‚ã™ã‚Œã‚‹;wasureru ã‚ãšã‹;wazuka ã‚ãŸã™;watasu ã‚ãŸã‚‹;wataru ã‚ã ã„;wadai ã‚ã³ã‚‹;wabiru ã‚ãµã;wafuku ã‚らã„;warai ã‚らã†;warau ã‚りã‚ã„;wariai ã‚りã‚ã„ã«;wariaini ã‚りã‚ã¦;wariate ã‚りã“ã‚€;warikomu ã‚りã–ã‚“;warizan ã‚りã³ã;waribiki ã‚ã‚‹;waru ã‚れる;wareru ã‚れã‚れ;wareware ã‚ã‚“;wan ã‚ã‚“;wan ã‚ã‚“;wan アイスクリーム;aisukuriimu アイデア;aidea アイロン;airon アウト;auto アクセサリー;akusesarii アクセント;akusento アジア;ajia アナウンサー;anaunsaa アパート;apaato アフリカ;afurika アメリカ;amerika アルãƒã‚¤ãƒˆ;arubaito アルãƒãƒ ;arubamu アンテナ;antena イコール;ikooru イメージ;imeeji インク;inku インタビュー;intabyuu ウーマン;uuman ウール;uuru ウイスキー;uisukii ウェートレス;weetoresu エスカレーター;esukareetaa エãƒã‚±ãƒƒãƒˆ;echiketto エãƒãƒ«ã‚®ãƒ¼;enerugii エプロン;epuron エレベーター;erebeetaa エンジン;enjin オーケストラ;ookesutora オートãƒã‚¤;ootobai オートメーション;ootomeeshon オイル;oiru オフィス;ofisu オルガン;orugan オレンジ;orenji カー;kaa カーテン;kaaten カード;kaado カーブ;kaabu カセット;kasetto ã‚«ãƒãƒ¼;kabaa カメラ;kamera カラー;karaa カレンダー;karendaa カロリー;karorii ガス;gasu ガソリン;gasorin ガソリンスタンド;gasorinsutando ガム;gamu ガラス;garasu キャプテン;kyaputen キャンパス;kyanpasu キャンプ;kyanpu キロ;kiro ギター;gitaa ギャング;gyangu クーラー;kuuraa クラス;kurasu クラブ;kurabu クリーニング;kuriiningu クリーム;kuriimu クリスマス;kurisumasu グラス;gurasu グラフ;gurafu グラム;guramu グランド;gurando グループ;guruupu ケーキ;keeki ケース;keesu ゲーム;geemu コース;koosu コーãƒ;koochi コート;kooto コード;koodo コーヒー;koohii コーラス;koorasu コック;kokku コップ;koppu コピー;kopii コミュニケーション;komyunikeeshon コレクション;korekushon コンクール;konkuuru コンクリート;konkuriito コンサート;konsaato コンセント;konsento コンピューター;konpyuutaa ゴム;gomu サークル;saakuru サービス;saabisu サイレン;sairen サイン;sain サラダ;sarada サラリーマン;sarariiman サンダル;sandaru サンドイッãƒ;sandoicchi サンプル;sanpuru シーズン;shiizun シーツ;shiitsu シャッター;shattaa シャツ;shatsu シャワー;shawaa ショップ;shoppu シリーズ;shiriizu ジーンズ;jiinzu ジェットã;jettoki ジャーナリスト;jaanarisuto ジャム;jamu ジュース;juusu スーツ;suutsu スーツケース;suutsukeesu スーパー;suupaa スープ;suupu スイッãƒ;suicchi スカート;sukaato スカーフ;sukaafu スキー;sukii スクール;sukuuru スケート;sukeeto スケジュール;sukejuuru スター;sutaa スタート;sutaato スタイル;sutairu スタンド;sutando スãƒãƒ¥ãƒ¯ãƒ¼ãƒ‡ã‚¹;suchuwaadesu ステージ;suteeji ステレオ;sutereo ストーブ;sutoobu ストッキング;sutokkingu ストップ;sutoppu スピーカー;supiikaa スピーãƒ;supiichi スピード;supiido スプーン;supuun スãƒãƒ¼ãƒ„;supootsu スマート;sumaato スライド;suraido スリッパ;surippa ズボン;zubon セーター;seetaa セット;setto セメント;semento センター;sentaa センãƒ;senchi ゼミ;zemi ゼロ;zero ソファー;sofaa タイプ;taipu タイプライター;taipuraitaa タイヤ;taiya タオル;taoru タクシー;takushii ダイヤグラム;daiyaguramu ダイヤモンド;daiyamondo ダイヤル;daiyaru ダブる;daburu ダム;damu ダンス;dansu ãƒãƒ¼ã‚º;chiizu ãƒãƒ¼ãƒ ;chiimu ãƒãƒƒãƒ—;chippu ãƒãƒ£ãƒ³ã‚¹;chansu ãƒãƒ§ãƒ¼ã‚¯;chooku テーブル;teeburu テープ;teepu テープレコーダー;teepurekoodaa テーマ;teema テキスト;tekisuto テスト;tesuto テニス;tenisu テニスコート;tenisukooto テレビ;terebi テント;tento テンãƒ;tenpo デート;deeto デッサン;dessan デパート;depaato デモ;demo トイレ;toire トップ;toppu トラック;torakku トランプ;toranpu トレーニング;toreeningu トンãƒãƒ«;tonneru ドア;doa ドライブ;doraibu ドラマ;dorama ドレス;doresu ナイフ;naifu ナイロン;nairon ナンãƒãƒ¼;nanbaa ニュース;nyuusu ãƒã‚¯ã‚¿ã‚¤;nekutai ãƒãƒƒã‚¯ãƒ¬ã‚¹;nekkuresu ノート;nooto ノック;nokku ãƒã‚¤ã‚­ãƒ³ã‚°;haikingu ãƒãƒ³ã‚µãƒ ;hansamu ãƒãƒ³ãƒ‰ãƒãƒƒã‚°;handobaggu ãƒãƒ³ãƒ‰ãƒ«;handoru ãƒã‚¤ã‚ªãƒªãƒ³;baiorin ãƒã‚±ãƒ„;baketsu ãƒã‚¹;basu ãƒã‚¿ãƒ¼;bataa ãƒãƒƒã‚¯;bakku ãƒãƒƒã‚°;baggu ãƒãƒ©ãƒ³ã‚¹;baransu ãƒãƒ³;ban ãƒãƒ³ãƒ‰;bando パーセント;paasento パーティー;paatii パイプ;paipu パイロット;pairotto パス;pasu パスãƒãƒ¼ãƒˆ;pasupooto パターン;pataan パンツ;pantsu ビール;biiru ビタミン;bitamin ビデオ;bideo ビニール;biniiru ビル;biru ピアノ;piano ピクニック;pikunikku ピストル;pisutoru ピン;pin ピンク;pinku ファスナー;fasunaa フィルム;firumu フォーク;fooku フライパン;furaipan フリー;furii ブラウス;burausu ブラシ;burashi ブレーキ;bureeki ブローãƒ;buroochi プール;puuru プラス;purasu プラスãƒãƒƒã‚¯;purasuchikku プラットホーム;purattohoomu プラン;puran プリント;purinto プレゼント;purezento プロ;puro プログラム;puroguramu ヘリコプター;herikoputaa ベッド;beddo ベテラン;beteran ベル;beru ベルト;beruto ページ;peeji ペン;pen ペンキ;penki ペンãƒ;penchi ホーム;hoomu ホテル;hoteru ボーイ;booi ボート;booto ボーナス;boonasu ボール;booru ボールペン;boorupen ボタン;botan ãƒã‚±ãƒƒãƒˆ;poketto ãƒã‚¹ã‚¿ãƒ¼;posutaa ãƒã‚¹ãƒˆ;posuto マーケット;maaketto マイク;maiku マイナス;mainasu マスク;masuku マスター;masutaa マッãƒ;macchi マフラー;mafuraa ママ;mama マラソン;marason ミシン;mishin ミス;misu ミリ;miri ミルク;miruku メーター;meetaa メートル;meetoru メニュー;menyuu メモ;memo メンãƒãƒ¼;menbaa モーター;mootaa モダン;modan モデル;moderu モノレール;monoreeru ユーモア;yuumoa ヨーロッパ;yooroppa ヨット;yotto ライター;raitaa ラケット;raketto ラジオ;rajio ラッシュアワー;rasshuawaa ランãƒ;ranchi リズム;rizumu リットル;rittoru リボン;ribon レインコート;reinkooto レクリエーション;rekurieeshon レコード;rekoodo レジャー;rejaa レストラン;resutoran レベル;reberu レãƒãƒ¼ãƒˆ;repooto レンズ;renzu ローマã˜;roomaji ロケット;roketto ロッカー;rokkaa ロビー;robii ワイシャツ;waishatsu ワイン;wain ワンピース;wanpiisu ã ã„;dai ã‹;ka ã¯ã‚„ã;hayaku ã„ã;iku ã‚ã‹ã‚‹;wakaru ã¸(ãˆ);he(e) ã‚ã¤ã„;atsui ã­;ne ãã†;sou れんã—ã‚…ã†;renshuu ã¦ã‚“;ten ã‹;ka ã¿ã‚‹;miru ãªã‚“;nan ã‚’(ãŠ);wo(o) ã¾ã ãªã„;madanai ã„ã„;ii よ;yo ã¡ã‚‡ã†ã—ょã;choushoku ãŠã¯ã‚ˆã†ã”ã–ã„ã¾ã™;ohayougozaimasu ãŸã¹ã‚‹;taberu パン;pan コーヒー;koohii ã®ã‚€;nomu ビール;biiru りんã”;ringo ãれã§ã¯(ãれã§ã‚);soredeha(soredewa) ãŸã¾ã”;tamago ãœã„ã‹ã‚“;zeikan カメラ;kamera ã‚‚ã¤;motsu ã¯ã„;hai ã‚ã‚‹;aru トランク;toranku ãªã‹;naka ãŒ;ga ã¨;to ã»ã‚“;hon よã†ãµã;youfuku ãれ;sore ã ã‘;dake ã•ã‘;sake ã‘ã£ã“ã†;kekkou ã‹ã„ã‚‚ã®;kaimono デパート;depaato ã„ã£ã—ょã«;isshoni ã‹ã†;kau ãã¤ã—ãŸ;kutsushita ã¯ã„ã‚‹;hairu ã“ã“;koko ã§ã‚‚;demo ã‚„ã‚ã‚‹;yameru ã—ã‚‹;shiru タワー;tawaa ã‹ã‚‰;kara ã©ã†;dou ã‚ã‚‹ã;aruku ãˆã;eki ã¾ã§;made ã‚ãã‚;meguro ã—ã¶ã‚„;shibuya ãã“;soko ã§;de ã¨ã†ãょã†;toukyou ãれã‹ã‚‰;sorekara ãƒã‚¹;basu ã™ã„ãžãã‹ã‚“;suizokukan ã¿ã›;mise ã¿ã‚„ã’;miyage ã‚‚;mo ãˆã„ãŒ;eiga ãã®ã†;kinou ã™ã‚‹;suru ãã‚‹;kuru ã¨ã‚‚ã ã¡;tomodachi アメリカ;amerika ã‚ãŒã­;megane ã‚ã™ã‚Œã‚‹;wasureru よã;yoku ã¡ã‚…ã†ã‹ã‚Šã‚‡ã†ã‚Š;chuukaryouri ã“ã‚“ã°ã‚“;konban ã ã„ã™ã;daisuki ã‚ãŸã—;watashi ã•ã‹ãª;sakana スープ;suupu ã¨ã‚‹;toru ã«ã;niku ã¯ã—;hashi ã„ã„ãˆ;iie フォーク;fooku ãŠã­ãŒã„ã—ã¾ã™;onegaishimasu ãã ã•ã„;kudasai ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™;arigatougozaimasu ã¨ã¦ã‚‚;totemo テレビ;terebi ã™ã‚‚ã†;sumou シーズン;shiizun よã;yoku ã¨ãã©ã;tokidoki ニュース;nyuusu ホーム・ドラマ;hoomu_dorama ã©ã¡ã‚‰ã‚‚;dochiramo ã‚ã•;asa ãŠãã‚‹;okiru ã˜;ji ã„ã¡;ichi ã˜ã‚…ã†;juu ãŠãã„;osoi ã­ã‚‹;neru よる;yoru ã•ã‚“;san よãªã‹;yonaka ãょã†;kyou ãれã§ã‚‚;soredemo ãƒãƒ¼;baa ã¯ãŸã‚‰ã;hataraku ãŸã„ã¸ã‚“;taihen ã“ã‚“ã«ã¡ã¯;konnichiha ãã£ã•ã¦ã‚“;kissaten ã‚„ã¾ã ;yamada ã•ã‚“;san ãŠã‹ã—;okashi ã»ã‚“ã¨ã†;hontou ã„ã¾;ima ãˆãˆ;ee ダイエット;daietto ã‚„ããã;yakusoku ã‘ã•;kesa フランス;furansu ã¾ãˆ;mae ã¾ã¤;matsu ã©ã†ã—ãŸã®ã§ã—ょã†;doushitanodeshou ã“ã¾ã‚‹;komaru ドイツ;doitsu ã—ょã†ã‹ã„;shoukai ã“ã°ã‚„ã—;kobayashi ã¿ã¡ã“;michiko ã¨;to ã™ã‚€;sumu ã‘ã£ã“ã‚“;kekkon ã­ã‚“;nen ã„ã‚‹;iru ã“ã©ã‚‚;kodomo ãµãŸã‚Š;futari ãŠã¨ã“ã®ã“;otokonoko ãŠã‚“ãªã®ã“;onnanoko ã¯(ã‚);ha(wa) ã”;go ã•ã„;sai ã•ã„ã“ã‚“;saikon ã˜ã¤ã¯(ã‚);jitsuha(wa) ãŠã¼ã£ã¡ã‚ƒã‚“;obocchan ã«ã¡ã‚ˆã†ã³;nichiyoubi ピクニック;pikunikku ãŸãªã‹;tanaka ã‚„ã¾ã‚‚ã¨;yamamoto ã•ãã†;sasou ã‹ã‚“ãŒãˆ;kangae ãˆã®ã—ã¾;enoshima サンドウイッãƒ;sandouicchi ã™ã—;sushi ã«;ni ã¿ã‹ã‚“;mikan ジュース;juusu ãŸã‚;tame ã§ã‚“ã‚ã‚’ã‹ã‘ã‚‹;denwawokakeru ã™ã;sugu ã®ã¿ã®ã„ã¡;nominoichi ãã®;sono ã¯ã“;hako ã¿ãŽ;migi ã²ã ã‚Š;hidari ãˆã‚“;en ã¾ã‚“;man ã”ã‚ã‚“ãªã•ã„;gomennasai ã¡ã‚‡ã£ã¨;chotto ã¿ã›ã‚‹;miseru ãµã‚‹ã„;furui ãˆã©;edo ã‚‚ã®;mono ã†ã‚‰;ura ã»ã‚“ã‚„;hon_ya ã›ã‚“ãã†;sensou ã¸ã„ã‚;heiwa ã—ょã†ã—ょã†;shoushou ã«ã»ã‚“;nihon ã‚‹ã™;rusu ã˜ã¶ã‚“;jibun ã“ã®;kono ã™ã™ã‚ã‚‹;susumeru ã¤ãã‚‹;tsukuru ã‹ã‚“ãŸã‚“;kantan ã¾ã„ã©ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™;maidoarigatougozaimasu コンサート;konsaato ã ã‚Œ;dare ã²ã¨;hito ã—ゃã—ã‚“;shashin ã‚„ã¾ãã¡;yamaguchi ãµã¿ã“;fumiko ã˜ã‚‡ã‚†ã†;joyuu ã§ã‚ã‚りã¾ã›ã‚“;dewaarimasen ã‹ã—ã‚…;kashu ã†ãŸ;uta ã†ãŸã†;utau ã©ã‚“ãª;donna ジャズ;jazu ã“ã‚“ã©;kondo ã©ã‚ˆã†ã³;doyoubi ãŒ;ga ã¤ã”ã†;tsugou ã‚ã‚‹ã„;warui ã‚‚ã£ã¨;motto より;yori むり;muri ãª;na ã¤ãŽ;tsugi ãã‹ã„;kikai ãã‚“ãˆã‚“;kin_en ãŸã°ã“ã‚„;tabakoya ã¸ã‚“;hen ã¨ãŠã„;tooi ãã‚“ãªã«;sonnani ã¿ã¡;michi ã¾ãŒã‚‹;magaru ãŠãŠãã„;ookii ã‹ã‚;kawa ãŸã™ã‹ã‚‹;tasukaru ã¿ã£ã‹;mikka ã™ã†;suu ã‚¿ãƒã‚³;tabako ã¤ã‚‰ã„;tsurai ã¼ã;boku ゆã†ã³ã‚“ãょã;yuubinkyoku ã†ã—ã‚;ushiro ã“ã†ãã†;koukuu ã¯ãŒã;hagaki ゆã†ã³ã‚“;yuubin りょã†ãã‚“;ryoukin イギリス;igirisu ギリシャ;girisha ã—らã¹ã‚‹;shiraberu ã²ã‚ƒã;hyaku ã¾ã„;mai ã—ã”ã¨;shigoto ã†ãˆ;ue ã’ã‚“ã;genki ã‚€ã™ã“ã•ã‚“;musukosan ã“ã¨ã—;kotoshi ã ã„ãŒã;daigaku ãã¤ãŽã‚‡ã†;sotsugyou ã¨ã†ã ã„;toudai ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™;omedetougozaimasu ã¤ã¨ã‚;tsutome ã‹ã„ã—ゃ;kaisha ã‹ã‚“ã‘ã„;kankei ã—ãŒã¤;shigatsu ã˜ã©ã†ã—ゃ;jidousha ã«ã‚…ã†ã„ã‚“ã™ã‚‹;nyuuinsuru ã‚ã†;au ã”ãŒã¤;gogatsu ãŠãã®ã©ãã«;okinodokuni ãã®ã”;sonogo ãŸã„ã„ã‚“ã™ã‚‹;taiinsuru らã„ã—ã‚…ã†;raishuu ã‚ã‚“ã—ã‚“;anshin アパート;apaato ã¿ã¤ã‹ã‚‹;mitsukaru ã›ã¾ã„;semai ã‘れã©ã‚‚;keredomo ãµã‚“;fun ãŠã¨;oto ãã“ãˆã‚‹;kikoeru ãœã‚“ãœã‚“ãªã„;zenzennai よã†ã¡ãˆã‚“;youchien ã‹ã„;kai よん;yon ãªãŒã‚;nagame ã‹ã‚‰;kara ã¡ã‚‡ã†ã©;choudo ãªã«ã‚‚ãªã„;nanimonai ã«;ni ビル;biru ã‚€ã‹ã„;mukai ãã«ã„ã‚‹;kiniiru ã‚„ã¡ã‚“;yachin ã—ょã†ã›ã¤;shousetsu ã™ã„りã—ょã†ã›ã¤;suirishousetsu ã—ã‚…ã£ã±ã‚“;shuppan ã¯ãªã—;hanashi ã—ã‚…ã˜ã‚“ã“ã†;shujinkou ファッション・モデル;fasshon_moderu スパイ;supai ページ;peeji ãŠã‚‚ã†;omou ãªãŒã„;nagai ã©ã®ãらã„;donogurai ã‚‚ã†;mou ã¡ã‚…ã†ã”ã;chuugoku らã„ã­ã‚“;rainen ã”;go ã‚€ã™ã“;musuko ã‹ã‚“ã“ã†;kankou ãŠã¨ã‚‚ã™ã‚‹;otomosuru ã™ã“ã—;sukoshi ãれã«;soreni ã²ã¾;hima ã’ã¤ã‚ˆã†ã³;getsuyoubi ã—ょãã˜;shokuji ã°ã‚“;ban ã¾ã•ã“;masako ã²ã“ã†ã;hikouki ãã†ã“ã†;kuukou ã”ãœã‚“;gozen ã—ã‚ã•ã£ã¦;shiasatte ã—ã¡;shichi ãªã‚ŠãŸ;narita ã«ã£ã“ã†;nikkou ã³ã‚“;bin ã²ã“ã†ã˜ã‚‡ã†;hikoujou ã‚€ã‹ãˆã‚‹;mukaeru エア・ターミナル;ea_taaminaru ã¯ã“ã–ã;hakozaki ã¯ã‚„ã„;hayai リムジン・ãƒã‚¹;rimujin_basu ã ã„ã˜ã‚‡ã†ã¶;daijoubu ã‹ãªã‚‰ãš;kanarazu ã‚;wa ã«ã‚‚ã¤;nimotsu ã¡ã„ã•ã„;chiisai ãƒãƒƒã‚°;baggu ãµãŸã¤;futatsu ã—ã‚“ã±ã„;shinpai ã‚ã«;ani ã§ã‚‹;deru ã¨ã“ã‚;tokoro ãˆã„ã”;eigo ã‚ãªãŸ;anata ã‹ã‚ˆã†ã³;kayoubi ãŸã‚“ã˜ã‚‡ã†ã³;tanjoubi ã©ã“ã‹;dokoka ãŠã‚“ãŒã£ã‹ã„;ongakkai ã—ã°ã„;shibai ã¦ã‚“ã·ã‚‰;tenpura ã†ãˆã¯ã‚‰;uehara ãŠã—ãˆã‚‹;oshieru ピアノ;piano ãã;kiku ãªã‚‰;nara ã‹ã¶ã;kabuki ãれã¨ã‚‚;soretomo ã”ã•ã¶ã‚ã†;gosaburou よã¤ã‚„;yotsuya ã‹ã„ã ã‚“;kaidan ã©ã£ã¡;docchi ã®;no ãˆã‚“ãã†;ensou ã‚ãŸã—;atashi ãã£ã·;kippu ãŠã;oku ãŸã®ã‚€;tanomu ã›ã‚“ã—ã‚…ã†;senshuu ãªã¤;natsu ã„ã‚;iro ãŠã²ã•ã—ã¶ã‚Šã§ã™;ohisashiburidesu ãれã„;kirei ã“ã‚€ãŽ;komugi ã‚„ã‘ã‚‹;yakeru ãŠãŠã—ã¾;ooshima ã—ã¾;shima ã›ã¨ãªã„ã‹ã„;setonaikai ã«ã—;nishi ã‚ã„ã¶ã¤;meibutsu ãŸã„よã†;taiyou ã¤ã‚ˆã„;tsuyoi ã²ã‹ã‚Š;hikari ã„ã¡ã«ã¡ã˜ã‚…ã†;ichinichijuu ã—ã‹ãªã„;shikanai ã§ã™ã‹ã‚‰;desukara ã²ã‚‹ã­;hirune ã†ã¿;umi ãã—ã¦;soshite ã¯ã‚“;han ã¾ã„ã‚ã•;maiasa ã‚ã;roku ã‹ã„ãŒã‚“;kaigan ã ã‚Œã‚‚ãªã„;daremonai ã‚ã•ã²;asahi ã™ã„ã¸ã„ã›ã‚“;suiheisen ã«ã£ã¡ã‚…ã†;nicchuu むら;mura ã‹ã„ã‚‹ã„;kairui ã—ã‚“ã›ã‚“;shinsen ã¤ã‚‹;tsuru ã†ã‚‰ã‚„ã¾ã—ã„;urayamashii ãƒãƒ¼ã‚²ãƒ³;baagen ã¦ã•ã’ã‹ã°ã‚“;tesagekaban ã“ã†ã™ã„;kousui ã˜ã‚“;jin タオル;taoru りょã“ã†;ryokou ã¿ã¤ã“ã—;mitsukoshi ãŒã¦ã‚‰;gatera ã‹ã­;kane ã‚ã‚;ame ã¡ã‹ã¦ã¤;chikatetsu ã‚ãŠã„;aoi ã‚ã‹ã„;akai ã‹ã‹ã‚‹;kakaru ペア;pea ã—ã‚ã„;shiroi ã‚;me よã“;yoko ã‚„ã™ã„;yasui ã‚ã­;ane ã—ã‚…ã˜ã‚“;shujin ガウン;gaun ã”;go ãµã¡;fuchi ã¿ãš;mizu ãŽã‚“ã“ã†;ginkou よる;yoru ãœã‚“ã¶;zenbu ã®ã§;node ãŠã˜;oji ã‹ã™;kasu ã‹ã‚“ã•ã„;kansai ã—ã‚…ã†ã¾ã¤;shuumatsu ã—ã‚…ã£ã±ã¤;shuppatsu ã©ã†ã‚Šã‚‡ã†;douryou ã“ã†ããã©ã†ã‚;kousokudouro ã“ãã©ã†;kokudou ã¯ã—ã‚‹;hashiru キロ;kiro ã™ã™ã‚€;susumu スピード;supiido ã›ã„ã’ã‚“;seigen ã¯ã¡;hachi トラック;torakku ãŠã„ã“ã™;oikosu ã„ã¯ã‚“;ihan ã‹ã‹ã‚‹;kakaru ã¨ã;toki ã¯ã‚„ã„;hayai ã»ã†;hou ゆã†ã‚Šã‚‡ã†;yuuryou ã‚ãŸã‚Š;atari ã—ãšãŠã‹;shizuoka ã¤ã‹ã¾ã‚‹;tsukamaru ã°ã£ãã‚“;bakkin パト・カー;pato_kaa ã¯ã‚‰ã†;harau ãã®ã¾ã¾;sonomama ãŸã‚Šã‚‹;tariru ã‚‚ã©ã‚‹;modoru よã•ã‚“;yosan ã¯ã¡ã“ã†;hachikou ã„ã¬;inu ã©ã†ãžã†;douzou ã„ã†;iu ãªã©;nado ã¯ãªã™;hanasu ã‹ã‚“ã—ã‚“;kanshin ã†ãˆã®;ueno ãˆã„ã•ã¶ã‚ã†;eisaburou ã‹ã†;kau ãŠãã‚‹;okuru ãµã©ã†ã•ã‚“ã‚„;fudousan_ya ã‚ãŠã‚„ã¾;aoyama ã•ãŒã™;sagasu ãªã«ã‹;nanika ã‘ã‚“;ken ã«ã‚;niwa ダイニング;dainingu リビング;ribingu ã‚ã‹ã‚Œã‚‹;wakareru ã„ã‘ã°ãª;ikebana ã˜ã‚‡ã†;jou ã¡ã‚ƒ;cha ã¤ã¾;tsuma ã»ã—ã„;hoshii ã‚ã—ã¤;washitsu ガレージ;gareeji ãã‚‹ã¾;kuruma ã ã„;dai ã²ã¤ã‚ˆã†;hitsuyou ãŠãŠã„;ooi ãゃã;kyaku ã’ã¤;getsu ã—ããã‚“;shikikin ã¶ã‚“;bun れã„ãã‚“;reikin ã«ã‚…ã†ãょã™ã‚‹;nyuukyosuru ã‚ãらã‚ã‚‹;akirameru ã¿ã‚‡ã†ã˜;myouji ã—ãœã‚“;shizen ã‚らã‚ã™;arawasu ãŠãªã˜;onaji ã§ã‚“ã‚ã¡ã‚‡ã†;denwachou ã™ãšã;suzuki ã—ã‚“ã›ã;shinseki ã¿ã‚“ãª;minna パンダ;panda ãˆã¯ãŒã;ehagaki ã‹ã‚り;kawari ã“ã‚“ãªã«;konnani ãšã¤;zutsu ã„ã¡ã«ã¡;ichinichi ãŸã®ã—ã„;tanoshii ã‚€ã“ã†;mukou ã‘ã‚“ãŒã;kengaku ã“ã†ã˜ã‚‡ã†;koujou ã†ã”ã‹ã™;ugokasu よã†ã“ãã„らã£ã—ゃã„ã¾ã—ãŸ;youkosoirasshaimashita ã‚ã‚“ãªã„ã™ã‚‹;annaisuru ã“れã‹ã‚‰;korekara ã‚ãŸãã—ã©ã‚‚;watakushidomo ãŠã‚‚ã«;omoni ã›ã„ã²ã‚“;seihin ã§ã‚“ã;denki ã‚ã—;ashi ãã‚’ã¤ã‘ã‚‹;kiwotsukeru ã‚‚ã¨;moto ãã†ã“;souko ã§ãã‚ãŒã‚‹;dekiagaru ã§ãã‚‹;dekiru ã­ã‚“ã ã„;nendai ã˜ã‚€ã—ょ;jimusho ã›ã„ãžã†;seizou ãŸã¦ã‚‚ã®;tatemono ã—ã¤ã‚‚ã‚“;shitsumon ã™ã¿ã¾ã›ã‚“;sumimasen ã“ã†ã„ã‚“;kouin ロボット;robotto コンピューター;konpyuutaa ã—ã¤ãŽã‚‡ã†ã—ゃ;shitsugyousha ãã¿ãŸã¦ã‚‹;kumitateru アルゼンãƒãƒ³;aruzenchin ãŠã‚“ãª;onna ã•ã£ãょãã‹;sakkyokuka オペラ;opera ã„ããŒã—ã„;isogashii ã“ã¨ã‚ã‚‹;kotowaru ã®ã«;noni ã»ã‹;hoka マージャン;maajan ãŸã®ã—ã¿ã«ã™ã‚‹;tanoshiminisuru ã—ょãã”;shokugo ã³ã‚‡ã†ã;byouki ã‚ãŸãŸã‹ã„;atatakai ã¡ã‚‡ã†ã—;choushi エス・エフ;esu_efu ã†ã¡ã‚…ã†;uchuu ã¡ãã‚…ã†;chikyuu ã¼ã†ã‘ã‚“;bouken ãŠã“ã‚‹;okoru ã‚‚ã®ãŒãŸã‚Š;monogatari ã¦ã‚“;ten ロケット;roketto ã»ã—;hoshi ã‚ãã›ã„;wakusei ã—んりゃã;shinryaku ã¯ã¦;hate ã‚ã‚‹ã‚‚ã®;warumono ã‚ã‚“ãœã‚“;anzen ã‹ãªãŸ;kanata ヒーロー;hiiroo ã¾ã‚‚ã‚‹;mamoru ã“ã„;koi ã•ã„ã”;saigo ã¦ãã“ã;tekikoku ãƒãƒƒãƒ”・エンド;happi_endo ããŒã™ã‚‹;kigasuru ãょã†ã¿;kyoumi ãªã„よã†;naiyou ãªã‚“ã¦;nante ホテル;hoteru ã§ã”ã–ã„ã¾ã™;degozaimasu よやã;yoyaku ã•ã¾;sama ã²ã¨ã‚Š;hitori ãŠã¨ãª;otona ã‚ã„;mei らã„ã’ã¤;raigetsu ã¯ãªã‚Œã‚‹;hanareru ã—ょã†ã”;shougo ãƒã‚§ãƒƒã‚¯ãƒ»ã‚¤ãƒ³;chekku_in ã‘ã©;kedo ã ã£ã¦;datte フロア;furoa ã—ã‹ãŸãŒãªã„;shikataganai ã“ã†ã–;kouza ãŸã³ãŸã³;tabitabi ã²ã‚‰ã;hiraku ãµã¤ã†;futsuu カナダ;kanada ãµã¤ã‹;futsuka ã‚ãšã‘ã‚‹;azukeru ãã“ã;kikoku ã‚ãã¶;asobu ãµãˆã‚‹;fueru ãµã‚†;fuyu りã—;rishi よãã˜ã¤;yokujitsu ã‹ã‚‰ã£ã½;karappo ã•ã„ãµ;saifu よã¦ã„;yotei ã—よã†ã‚Šã‚‡ã†;shiyouryou ãŒã„ã“ãã˜ã‚“;gaikokujin ã­ãŒã„;negai ã„;i ã„ã‹ã„よã†;ikaiyou ã¡ã‚Šã‚‡ã†;chiryou ã™ã„よã†ã³;suiyoubi ãŠã‹ã‘ãã ã•ã„;okakekudasai ã³ã‚‡ã†ã„ã‚“;byouin ã˜ã‚“ã¨;jinto ã ã™;dasu ベッド;beddo ãŠã™;osu ã¨;to ãŸã ;tada ãŸã¹ã™ãŽ;tabesugi ãŸã¹ã‚‚ã®;tabemono ã²ã‹ãˆã‚‹;hikaeru ã„ã‚ã„;iwai ã—ょã†ã—ã‚“;shoushin レストラン;resutoran カクテル・パーティー;kakuteru_paatii シャンペン;shanpen クラシック;kurashikku ã¨ãã«;tokuni ãŒã£ã;gakki オーボエ;ooboe ã—ã‚…ã¿;shumi ã‹ã¤ã©ã†;katsudou ãã£ã‹ã‘;kikkake ã“ã†ã¨ã†ãŒã£ã“ã†;koutougakkou ã¯ã˜ã‚ã‚‹;hajimeru ãªã‹ãªã‹ãªã„;nakanakanai ãµã;fuku カセット;kasetto ã•ã„ãã‚“;saikin ã‚‚ã£ã±ã‚‰;moppara ラジオ;rajio ã¤ã‘ã£ã±ãªã—;tsukeppanashi ã‚ã¤ã¾ã‚‹;atsumaru ã‹ãã—ã‚…ã†;kakushuu ãªã‹ã¾;nakama ã«ã‚“;nin ã„れる;ireru ã²ã¨ã‚Šã§;hitoride ã‚ã;aki ãŠã‚ã‚‹;owaru ã‚ã—ãŠã¨;ashioto ã¿ãŸã„;mitai ã„ã‚ã—ãã‚‚;iwashigumo ã†ã‹ã¶;ukabu ãら;sora ã‚€ãªã—ã„;munashii ゆã†ã‚„ã‘;yuuyake よ;yo ãŠã¡ã‚‹;ochiru ã‹ãªã—ã„;kanashii ã‹ã‚Œã¯;kareha ã—;shi ãŸã‚ã„ã;tameiki ビオロン;bioron ã¾ã£ãŸã;mattaku よã†;you ãŠã‚り;owari ã‹ãŒã‚„ã;kagayaku ã‹ã;kaki ã¯;ha ã²ãれ;higure ã‚ã¾ã‚Šã«ã‚‚;amarinimo ãã‚‚ã¡;kimochi ã•ã³ã—ã„;sabishii ã„ã®ã¡;inochi ã¯ã‹ãªã„;hakanai ロマンãƒãƒƒã‚¯;romanchikku ãµã†;fuu よã£ã±ã‚‰ã†;yopparau ã†ã‚‹;uru ã—ょã†ã°ã„;shoubai ã—ょãã²ã‚“;shokuhin れã„ã¨ã†;reitou ã‹ã¨ã†;katou ã’ã‚“ã˜ã¤ã¦ã;genjitsuteki ã³ã˜ã‚…ã¤ã‹ã‚“;bijutsukan ã’ã‚“ã ã„;gendai ã¨ã“ã‚ã§;tokorode ã•ã£ãã;sassoku ãˆ;e ã¿ã©ã‚Šã„ã‚;midoriiro ã²ã˜ã‚‡ã†ã«;hijouni ãµã—ãŽ;fushigi ã‹ãŠ;kao ã‚;a ã­ã“;neko ã‚ãŸã¾;atama ã¯ãª;hana ã ã„;dai もり;mori ゆã‚;yume タクシー;takushii ã©ã®;dono サントリー;santorii ãã°;soba ã;ku ã¿ãªã¨;minato ãã‚ã—ã„;kuwashii ã“ã†ã—ã‚…ã†ã§ã‚“ã‚;koushuudenwa ã“ã¾ã‹ã„;komakai ãŸã¾;tama ãŠã‚Šã‚‹;oriru ã‚ã®;ano ã‚ã¿;ami ãょã ã„;kyodai ã‚ã‚;aa ゴルフ;gorufu れんã—ã‚…ã†ã˜ã‚‡ã†;renshuujou サラリーマン;sarariiman ã°ã—ょ;basho ãŠãã˜ã‚‡ã†;okujou ã²ã‚ã„;hiroi スãƒãƒ¼ãƒ„;supootsu ã‚„ãã‚…ã†;yakyuu ã¿ã¾ã„;mimai ã«ã£ã›ã;nisseki ãªã‚“よã†ã³;nan_youbi ãんよã†ã³;kin_youbi ã¿ã‚‡ã†ã”ã«ã¡;myougonichi ãã ã‚‚ã®;kudamono ã¯ãª;hana ã—ã‚…ã˜ã‚…ã¤;shujutsu ã¡ã‚‡ã†;chou ãã„ã‚ã„;kiiroi ã»ã‚“;hon ã†ã¡;uchi ãŠã ã„ã˜ã«;odaijini ã‚ã–ã‚ã–;wazawaza ãƒãƒ¥ã‚¦ãƒªãƒƒãƒ—;chuurippu ããŒãˆã‚‹;kigaeru ã•ã‚;saa ã¿ãšãŽ;mizugi ã™ã„ã¡ã‚…ã†ã‚ãŒã­;suichuumegane ã¼ã†ã—;boushi ã¤ã‚ãŸã„;tsumetai ã‚ã‚;waa ã„ã‚;iwa ãょã†ãã†;kyousou ã‹ã¤;katsu ã‚ã¶ãªã„;abunai ãŠã¨ãªã—ã„;otonashii アイス・クリーム;aisu_kuriimu ã‚ら;ara ã˜ã‚ƒ;ja ã™ãª;suna ã™ã‚ã‚‹;suwaru ã›ãªã‹;senaka ãŸã¾ã‚‰ãªã„;tamaranai ã²ã‚„ã‘;hiyake ãã‚‹;kiru ãƒã‚«ãƒ³ã‚¹;bakansu ãょã­ã‚“;kyonen ã¾ã„ã¨ã—;maitoshi ã‘ã„ゆ;keiyu シベリア;shiberia パリ;pari モスクワ;mosukuwa ウラジオストック;urajiosutokku ã®ã‚Šã‹ãˆã‚‹;norikaeru ãµã­;fune ã‹ã‚“ã‹ã;kankaku ãŸã„ãã¤;taikutsu ãã‚ã‚‹;kimeru ã”ã‚;goro ã—ã¡ãŒã¤;shichigatsu ã¯ã˜ã‚;hajime れãã—;rekishi ãªã‚‰;nara ã¨ãŠã‚‹;tooru ã¾ã‚り;mawari ãã†;sou ã¦ã‚‰;tera ã¯ãŸã‘;hatake ã¨ã†ã—ょã†ã ã„ã˜;toushoudaiji ã»ã†ã‚Šã‚…ã†ã˜;houryuuji ã‚„ãã—ã˜;yakushiji ã—ãšã‹;shizuka ã¨ã¾ã‚‹;tomaru ã„ãœã‚“;izen ãã®ã‚ã¨;sonoato ã‹ãã¨ã‚Š;kakitori ã²ã‚‰ãŒãª;hiragana ã›ã‚“ãょ;senkyo ã¸ã‚“;hen ãˆãˆã¨;eeto ã¯ãŸ;hata スピーカー;supiikaa ãりã‹ãˆã™;kurikaesu ãŠãŠã©ãŠã‚Š;oodoori ã©;do ãªãŒã‚‰;nagara りã£ã“ã†ã»ã—ゃ;rikkouhosha ã—ã‹ãŸ;shikata やりã‹ãŸ;yarikata ã¡ã‹ã¥ã;chikaduku ã§ã‚‚;demo ã“ã‚“ã‹ã„;konkai ã¨ã¡ã˜;tochiji ã“ã—ょã†;koshou ã§ã‚“ãã‚„ã•ã‚“;denkiyasan ã›ã‚“ãŸãã;sentakuki ã„ã¤ã¤;itsutsu ã¨ã‚Œã‚‹;toreru ã­ã˜;neji ãã†ã˜ã;soujiki ã¤ã„ã§ã«;tsuideni ã¿ã£ã¤;mittsu ã‹ã—ら;kashira れã„ãžã†ã“;reizouko ã„ã£ãŸã„;ittai ã¬ã‘ã‚‹;nukeru ã„らã„;irai ãã;kigu ã˜ã‚…ã†;juu ãŸã„ã—ょã;taishoku ã¶ã‚“ã‹ã„;bunkai ã—ã‚“ã‹ã‚“ã›ã‚“;shinkansen ãã‚…ã†ã—ã‚…ã†;kyuushuu ã¾ã”;mago ãらã¹ã‚‹;kuraberu ã—ゃãªã„;shanai ã¾ã©;mado ãŠã‹ã’ã§;okagede ã•ã‚€ã„;samui ã™ãšã—ã„;suzushii ãŸã—ã‹;tashika ã‚€ã—ã‚ã¤ã„;mushiatsui れã„ã¼ã†;reibou ãょã†ã¨;kyouto ã”ã“ã¡;gokochi ã­ã‚€ã‚‹;nemuru よã“ã¯ã¾;yokohama ãŸã‚‰;tara ãŠãŠã•ã‹;oosaka ã¾ã„ã—ã‚…ã†;maishuu ã¸ã‚“ã˜;henji ã†ã‘ã¨ã‚‹;uketoru ゆã†ã¹;yuube ãƒã‚¹ãƒˆ;posuto ã¨ãŠ;too ã¨ãŠã‹;tooka ã¨ã“ã‚ãŒ;tokoroga ãµã†ã¨ã†;fuutou ããŸã;kitaku ã¡ã‚ƒã‚“ã¨;chanto ã¯ã‚‰;hara ã°ã‚“ã¡;banchi サービス;saabisu ã¯ã„ãŸã¤;haitatsu ã›ã„ã‹ã;seikaku ãããŸã¤;sokutatsu ã›ã‚“ã¨ã†;sentou ã’ã—ã‚…ã;geshuku シャワー;shawaa ãµã¹ã‚“;fuben ã¾ã„ã°ã‚“;maiban ã²ã‚ã³ã‚ã¨ã™ã‚‹;hirobirotosuru ãµã‹ã„;fukai ゆã¶ã­;yubune ã™ãŽ;sugi ã™ã;suku ã¤ã‹ã‚‹;tsukaru ã¾ã‚“ã„ã‚“;man_in ã›ã¤ã³;setsubi ã‚ã„ã ã«;aidani ã’ã‚“ã‹ã‚“;genkan ã ã‚“ã˜ã‚‡;danjo ã¦ã‚‚;temo ã¯ã ã‹;hadaka ã¹ã¤ã¹ã¤;betsubetsu ã¯ãšã‹ã—ã„;hazukashii ã¸ã„ã;heiki ãã«ãªã‚‹;kininaru ãªã‚‰ã†;narau ã“ã˜ã‚“;kojin レッスン;ressun よむ;yomu ã˜ã;jiki ãれã˜ã‚ƒ;soreja ãã˜;kiji ã“ã†ãŽã‚‡ã†;kougyou ã¸ãˆ;hee ã¾ã˜ã‚;majime ã¡ã¡;chichi ã®ã†ãŽã‚‡ã†;nougyou ã»ã†ã‚ã‚“;houmen ã©ã‚“ã©ã‚“;dondon ã¦;te ã‚れ;are ロック;rokku ãˆã‚‰ã¶;erabu ã—ã‚“ã“んりょã“ã†;shinkonryokou ã²ã¨ã¤;hitotsu ã—ã‚“ã˜ã‚…ã;shinjuku ã¤ã„ãŸã¡;tsuitachi よã‚ã—ã;yoroshiku ã„ãらã‹;ikuraka カメラやã•ã‚“;kamerayasan ã“ãŒãŸ;kogata ã”らん;goran モデル;moderu ãœã‚“ã˜ã©ã†;zenjidou メーカー;meekaa ボディー;bodii ã‹ã‚‹ã„;karui ãˆã‚‰ã³ã‹ãŸ;erabikata ã«ã¤ã„ã¦;nitsuite ã¯ãªã—ã‚ã†;hanashiau ãµã•ã„;fusai コンクリート;konkuriito ã˜ã—ã‚“;jishin ãŠã‚Œ;ore ã˜ã‚…ã‚“;jun ã—ã;shiki ã¦ã„ã­ã‚“;teinen ã¼ã‚“ã•ã„;bonsai ã™ã†;suu ãŠã†ã›ã¤ã¾;ousetsuma ã‹ã‚“ãŒãˆã‚‹;kangaeru ã—ã;shiki ã—ょãã©ã†;shokudou ã—ã‚“ã—ã¤;shinshitsu ãµã‚ã°;furoba モダン;modan ã˜ã‚…ã‚“ã³;junbi ãŸã¡;tachi ã®ã‚‹;noru ãµã˜ã•ã‚“;fujisan ã£ã¦;tte ãã•ã‚‹;kusaru ã˜ã¤ã¶ã¤;jitsubutsu ã»ã©;hodo ã¸ã‚“;hen ã„ãš;izu ã§ã‹ã‘ã‚‹;dekakeru ã¯ã‚“ã¨ã†;hantou ãã‚‚;kumo ã»ã†ã“ã†;houkou ã‹ãžã;kazoku ãã†ã—ã;soushiki ã¡ã˜ã‚“;chijin れã„ãˆã‚“;reien ã¯ã‹;haka ã¶ã‚“ãŒãã—ゃ;bungakusha ã¼ã¡;bochi ã“ã;koso ã‚„ã¯ã‚Š;yahari ã„ã£ã—ょã†;isshou ã˜ã‚…ã†ã„ã¡ãŒã¤;juuichigatsu ã“ã†ã—ã¤;koushitsu ã¨ã¾ã‚‹;tomaru ã¯ã‚‰ã˜ã‚…ã;harajuku ã‚„ã¾ã®ã¦ã›ã‚“;yamanotesen よよãŽ;yoyogi ã¨ãã¹ã¤;tokubetsu ã°ã‚ã„;baai ã¦ã‚“ã®ã†;tennou ã¸ã„ã‹;heika ãŠã™ã¾ã„;osumai ã“ã†ãょ;koukyo ã¡ã‚ˆã ã;chiyodaku れã£ã—ゃ;ressha ã“ã†ã”ã†;kougou ãªã™;nasu ãŠã‚ã«ã‹ã‹ã‚‹;omenikakaru ã“ãã¿ã‚“;kokumin りょã†;ryou ãã‚…ã†ã¡ã‚…ã†ã•ã‚“ãŒ;kyuuchuusanga ã—ょã†ãŒã¤;shougatsu ã™ãŒãŸ;sugata ã—ょã†ãã‚“;shougun ã—ã‚;shiro ã¾ã‚“ãªã‹;mannaka ジョギング;jogingu ãã‚“ãª;sonna ãŠã¿ã‚ã„;omiai ãŠã„;oi ãã—ゃ;kisha ã‘ã„ã–ã„;keizai ã ã‚Œã‹;dareka ãŠã„ã”ã•ã‚“;oigosan ã¦ã‚“ãã‚“;tenkin ブラジル;burajiru ã—ゃã“ã†ã›ã„;shakousei ã˜ã‚‡ã†ãš;jouzu ã›ã£ãŸã„;settai りãã†;risou ã˜ã‚‡ã†ã‘ã‚“;jouken ã“ã£ã‹ã„ãŽã„ã‚“;kokkaigiin ゆã†ã˜ã‚“;yuujin ã„ãŸã™;itasu ã®ã¡ã»ã©;nochihodo れんらã;renraku ã‹ã‚“ã˜;kanji ã—ゃã“ã†ã¦ã;shakouteki ã¯ãã¯ã;hakihaki ã‚ã†;au ã”ãŒã;gogaku ã—;shi ãƒãƒ«ãƒˆã‚¬ãƒ«;porutogaru ã‹ã®ã˜ã‚‡;kanojo ã›;se ã«ã‚ã†;niau ãµã¨ã„;futoi ãµã‚Šãã§;furisode ãŒã¾ã‚“;gaman スキー;sukii ウィーク・エンド;wiiku_endo ã‚ã„ã¤;aitsu ã²ã©ã„ã‚ã«ã‚ã†;hidoimeniau ãã‚“;kun ã˜ã¾ã‚“;jiman リフト;rifuto ãµã‚‚ã¨;fumoto ã¹ãã‚’ã‹ã;besowokaku カーブ;kaabu ã“ã‚ã¶;korobu ãŠãã‚ãŒã‚‹;okiagaru ãŠã“ã™;okosu ãã®ã†ãˆ;sonoue ãã®ãŸã‚“ã³ã«;sonotanbini ã¯ã‚“ã«ã¡;hannichi ã‚„ã¾ã”ã‚„;yamagoya ゆã;yuki ã›ã£ã‹ã;sekkaku ã ã„ãªã—;dainashi ãŸã ã„ã¾;tadaima ã‚ã£;a㣠ãŠã‹ãˆã‚Šãªã•ã„;okaerinasai ãŠã¨ã™;otosu ã—ãŸã;shitaku ã¤ã‹ã‚Œ;tsukare ゆã†ã—ょã;yuushoku ã†ã‚“;un ã„ã¤ã§ã‚‚;itsudemo ã‹ã‚“;kan ãŠã¾ãˆ;omae ゆ;yu ã‚ã‹ã™;wakasu ã²ã•ã—ã¶ã‚Šã«;hisashiburini ã‹ã‚‰ã ;karada ã˜ã‚…ã†ã¶ã‚“;juubun ã™ã„ã¿ã‚“;suimin ã“ã‚“ã°ã‚“ã‚;konbanwa ã›ã‚“ã’ã¤;sengetsu ヨーロッパ;yooroppa ã—ゃã¹ã‚Š;shaberi ã¾ã™ã¾ã™;masumasu ã†ã‚ã•;uwasa ãŠã‚‚ã„ã¡ãŒã„;omoichigai ã„ã£ã¡ã‚‡ã†ã‚‰;icchoura ã˜ã‚…ã†ã«ãŒã¤;juunigatsu ã›ã³ã‚;sebiro ドア;doa ãªã‚‰ã™;narasu ベル;beru ã™ã¦ã;suteki ã²ã‚„ã™;hiyasu ãŠãŠãã†ã˜;oosouji ã›ã¡ã‚Šã‚‡ã†ã‚Š;sechiryouri ã¨ã¨ã®ã†;totonou ãŠãŒã‚€;ogamu ã¨ã—ã“ã—ãã°;toshikoshisoba ã­ã‚“ã—;nenshi ã²ã®ã§;hinode ãŠãŠã¿ãã‹;oomisoka ã™ã£ã‹ã‚Š;sukkari レヴェイヨン;reveiyon カンパイ;kanpai ã”ãã‚ã†ã•ã¾;gokurousama キャンプ;kyanpu テント;tento ã™ã‚€;sumu ã°ã‚“ã‚ã—;banmeshi ã¾ãら;makura ã‹ã„;kai ã—ã«ã‚“;shinin ã¤ã¾ã‚Š;tsumari ã­ã‹ã›ã‚‹;nekaseru ãらã†;kirau ã‚€ã‘ã‚‹;mukeru ã¿ãªã¿;minami ã—ゃã‚ã‚“;shamen ã‘んり;kenri ã”ã‚“ã’ã‚“;gongen ã¿ã¡;michi ã‚„ãã¿;yakumi ã¿ã‚Šã‚‡ã;miryoku ãŽã¾ã„;gimai ã‹ã˜ã‚…ã†;kajuu ã‹ã¡ã‚‡ã†;kachou らã—ã‚“;rashin ã›ããœã‚“;sekizen ã›ã„ã›ã;seiseki ã“ã†ã•ã„;kousai れã£ã—ゃ;ressha ãã†ã‚Œã¤;souretsu ã¶ã‚“れã¤;bunretsu れã„ãŒã„;reigai ã¨ã†ã»ã‚“;touhon ãµã£ã¨ã†;futtou ã‹ã£ã¨ã†;kattou ã—ょã†ã‚Š;shouri ãã†ãžã†;guuzou ãã†ãã†;souguu ã„ã¡ãã†;ichiguu ãã¡;guchi ãŽã‚‡ãˆã‚“;gyoen ãˆã‚“ã›ã„;ensei ãˆã‚“ã¦ã‚“;enten ã‚んりょã;wanryoku ãŒã˜ã‚‡ã†;gajou ã¯ã¤ãŒ;hatsuga ゆã†ãŒ;yuuga ã‹ãã†;kakuu ã—ã‚…ããŒã‹ã„;shukugakai ãŒã‚“ã“;ganko ã“ã˜ã‚“;kojin ã„ã£ã‹ã’ã¤;ikkagetsu ã“ã†ã‚Šã‚‡ã†;kouryou ã“ã†ã¦ã¤;koutetsu ã”ã†ã‘ã‚“ãª;goukenna ã»ã†ã—;houshi ã­ã‚“ã½ã†;nenpou ã¦ã¤ã¼ã†;tetsubou ã„ã£ã±ã‚“;ippan ã†ã‚“ã±ã‚“;unpan ãˆã‚“ã°ã‚“;enban ã—ょã†ã‚‚ã†;shoumou ã³ã“ã†;bikou ã¼ã†ã—;boushi ã„ã‚“ã¼ã†;inbou ã°ã„ã‹ã„;baikai ãŒã„ã­ã‚“;gainen ãµã‚“ãŒã„;fungai ãã›ã„;kisei ã“ã†ã’ã‚“;kougen ã’ã‚“ã›ã‚“;gensen ã—ãŒã‚“ã™ã‚‹;shigansuru よã†ãŽ;yougi ã‚‚ãŽ;mogi ãŽã‚‡ã†ã“ã™ã‚‹;gyoukosuru ãょã†ãµ;kyoufu ãã¼ã†;kibou ãˆã‚“ã›ã‚“;ensen ãˆã‚“ã‹ã‚“;enkan ã›ã‚“ã¡ã‚‡ã†;senchou ãµã˜ã‚“;fujin ãµã‚ˆã†;fuyou ããã;kisoku ãˆã„ã”;eigo ãˆã„ãŒ;eiga ã¡ã‚…ã†ãŠã†;chuuou ã†ã¾ã„;umai ã‚ã˜;aji ã‹ã‚‚ã—れãªã„;kamoshirenai マッãƒ;macchi ã¿ã‚ãŸã‚‹;miataru ãˆ;e ã“ã‚“ã‚„;kon_ya ã¨ã¡ã‚…ã†;tochuu ã¿ã‚“ã—ã‚…ã;minshuku ã™ãã¾;sukima セントラリ・ヒーティング;sentorari_hiitingu ã ã¦;date ã’ã‚“ã“ã†;genkou ã²ã—ょ;hisho ã¹ã£ãã†;bessou ã‚‚ã—;moshi ã‚„ã¾ãªã‹ã“;yamanakako コート;kooto ダイヤモンド;daiyamondo ãƒãƒ³ãƒ‰ãƒ»ãƒãƒƒã‚°;hando_baggu ミンク;minku ゆã³ã‚;yubiwa ã‚ã«;wani ãŠãŒãŸã“ã†ã‚Šã‚“;ogatakourin ã—ã‚…ã†;shuu ã‘ã‚“ã¶ã¤;kenbutsu ã—ã‚…ã¨;shuto ã™ã¹ã¦;subete ã™ã†ã­ã‚“;suunen ãœã‚“;zen タヒãƒ;tahichi ã‚€ã™ã‚;musume ã‹ãˆã™;kaesu ã—ゃã£ãã‚“;shakkin ã›ã‚“ã‘ã¤;senketsu ã—ã‚“ã­ã‚“ã‚ã‘ã¾ã—ã¦ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™;shinnen_akemashiteomedetougozaimasu ãŠã›ã‚ã«ãªã‚Šã¾ã—ãŸ;osewaninarimashita ã•ãã­ã‚“;sakunen ã›ã‚;sewa ã¡ã‚…ã†;chuu ã»ã‚“ã­ã‚“;honnen ã„ã‚„;iya ãã‚‚ã®;kimono ã˜ãŽ;jigi ã‘ã‚“ãã‚…ã†;kenkyuu ã›ã„ãµ;seifu ã¨ã—ã¦;toshite りゅã†ãŒãã›ã„;ryuugakusei ãŒãã›ã„;gakusei ウィーン;wiin オーストリア;oosutoria ãŠã‚‚ã„ã ã™;omoidasu ã“ã‚;koro ãªã¤ã‹ã—ã„;natsukashii ã¿ãŠãã‚‹;miokuru ã‹ãŸã‹ãª;katakana ãŠãれる;okureru ã“りã”りã§ã™;korigoridesu ã‚ã„ã‚;meiro ã¡ã‹;chika ã¤ã†ã‚;tsuuro ホーム;hoomu ãŠãŠãœã„;oozei エスカレーター;esukareetaa ã‹ã„ã•ã¤ãã¡;kaisatsuguchi ã§ãã¡;deguchi ã‚ãŸã™;watasu ã„りãã¡;iriguchi ã‚„ã£ã¨ã®ãŠã‚‚ã„ã§;yattonoomoide ã²ãŒã—;higashi ã²ã‚‡ã†ã˜ã°ã‚“;hyoujiban ã—ãã‚‚ã†;shikimou ãŠãµãã‚;ofukuro ã‹ãŸã¥ã‘ã‚‹;katadukeru ã“ã‚“ã—ã‚…ã†;konshuu ãŸãŸã‚€;tatamu ãµã¨ã‚“;futon ã„ã£ã±ã„;ippai ãŸãŸã¿;tatami ãªã‚“ã‹;nanka ã•ã¨ã†;satou ã—ãŸãŽ;shitagi ã‚„ã•ã„;yasai ワイシャツ;waishatsu ããŸãªã„;kitanai ナイフ;naifu ã²ã‹ã‚‰ã³ã‚‹;hikarabiru アルãƒã‚¤ãƒˆ;arubaito ããŸããŸ;kutakuta ã•;sa よゆã†;yoyuu ã“ã®ã¾ãˆ;konomae ã˜ã‚‡ã†ãょã†;joukyou ãã£ãょã†;kikkyou ã‹ãœ;kaze ã²ã;hiku ãã™ã‚Š;kusuri ãらã„;kirai ã˜ã‚ƒã‚;jaa ã„ã£ã•ã„;issai ã‹ã‚“ã½ã†ã‚„ã;kanpouyaku ã“ã†ã›ã„ã¶ã£ã—ã¤;kouseibusshitsu ã—ã‚ã¤;shiatsu ã¯ã‚Š;hari ã‚„ãã²ã‚“;yakuhin ã›ã£ã‹ã;sekkaki ããŒã¤ã;kigatsuku ペット;petto ãŒã£ã“ã†;gakkou ビデオ;bideo ã¶ã‚“ã‹;bunka ãã‚“ã—;kinshi ãã‚“ãºã‚“;kinpen ã¤ã†ã“ã†;tsuukou ã¦ã‚“ã”ã;tengoku ã»ã“ã†ã—ゃ;hokousha シーソー;shiisoo テーブル;teeburu ãªã‚‰ã¹ã‚‹;naraberu ブランコ;buranko ã¥ã‚Œ;dure ãã¤;kutsu ã¯ã‹ã™;hakasu ã‚ã•ãã•;asakusa ãšã£ã¨;zutto ã¾ã•ã‹;masaka よã†;you ãã¡ãŒã„;kichigai ãã‚“ã˜ã‚‡;kinjo ãã³ã‚;kubiwa ã«ã›;nise ã³ã‚ˆã†ã„ã‚“;biyouin ã»ã†ã›ã;houseki ãŠãŸã;otaku ã¶ã‚“ãŒã;bungaku ã‚ã‹ã„;wakai ã„ã£ã—ょã†ã‘ã‚“ã‚ã„;isshoukenmei ã’ã‚“ã˜ã‚‚ã®ãŒãŸã‚Š;genjimonogatari ã“ã¦ã‚“;koten ã¾ãらã®ãã†ã—;makuranosoushi ã¾ã‚“ãŒ;manga ã‹ã‚ˆã†;kayou ã¨ã—ょã‹ã‚“;toshokan ãŠã‚‚;omo ã•ãã²ã‚“;sakuhin ã¯ãŸã¡;hatachi ã¸ã„ã‚ã‚“;heian ã»ã¼;hobo ã‚ã‚“ãã™ã‚‹;ankisuru ã›ã„ã—ょã†ãªã”ã‚“;seishounagon ã•ã£ã‹;sakka ã˜ã‚‡ã‚Šã‚…ã†;joryuu むらã•ãã—ãã¶;murasakishikibu ã¡ã‚‡ã†ã¦ã„;choutei ã ã„ã²ã‚‡ã†ã¦ã;daihyouteki ãŠã˜ã‚ƒã¾ã—ã¾ã—ãŸ;ojamashimashita ã”ã¡ãã†ã•ã¾ã§ã—ãŸ;gochisousamadeshita ã°ã‚“ã”ã¯ã‚“;bangohan ã©ã†ã„ãŸã—ã¾ã—ã¦;douitashimashite ã”ã‚ã‚“ãã ã•ã„ã¾ã›;gomenkudasaimase ãã‚“ã‹ãã˜;kinkakuji ã²ã‚‡ã†ã—;hyoushi ã„ã‘;ike ãã‚“ã„ã‚;kin_iro ã“ã“ã‚;kokoro ã—ãšã¾ã‚‹;shizumaru ãµãã’ã‚“;fukugen ã†ã¤ãã—ã•;utsukushisa ãŠã¼ã†ã•ã‚“;obousan ã‹ã‚“ãºã;kanpeki ãŸãˆã‚‹;taeru ã²;hi ã‚‚ã¨ã‚ã‚‹;motomeru ã‹ã˜;kaji ã‚‚ãˆã‚‹;moeru ã‚‚ããžã†;mokuzou ã³;bi ã¿ã—ã¾ã‚†ããŠ;mishimayukio ã‚ã˜ã‚ã†;ajiwau ã‹ã‚“ã“ã†ãゃã;kankoukyaku ã˜ã£ã•ã„;jissai ãµã†ã‘ã„;fuukei ãµã‚“ã„ã;fun_iki ã„ã‚“ã—ょã†;inshou ãŒã£ã‹ã‚Šã™ã‚‹;gakkarisuru ã”ã‚ã‚“ãã ã•ã„;gomenkudasai ã‚ãŒã‚‹;agaru ãˆã‚“りょ;enryo ãŠã‚ãŒã‚Šãã ã•ã„;oagarikudasai ã¨ã¤ãŽã•ã;totsugisaki ã¯ã;haku ã¾ã„ã‚‹;mairu よã‚;yome ã“ã™;kosu ã”ã¶ã•ãŸã—ãŸãŠã‚Šã¾ã™;gobusatashitaorimasu ã•よã†ã§ã”ã–ã„ã¾ã™;sayoudegozaimasu ã”ã–ã‚‹;gozaru ãŸãšã­ã‚‹;tazuneru ã¨ã¤ãœã‚“;totsuzen ã‚‚ã†ã—ã‚ã‘ã‚りã¾ã›ã‚“;moushiwakearimasen ãらã;kiraku ã˜ã‚‡ã†ãŸã„;joutai ã¨ã“;toko ã‹ã­ã‚‚ã¡;kanemochi ãã’ã‚“;kigen ã”らんã®ã¨ãŠã‚Š;gorannotoori ã‹ã¸ã„;kahei ã‹ã¿;kami ã•ã¤;satsu ã˜ã‚‡ã†ã¶;joubu ã‚„ã¶ã‚Œã‚‹;yabureru ãˆãŒã;egaku ã˜ã‚“ã¶ã¤;jinbutsu ã¾ã¡ãŒãˆã‚‹;machigaeru ã‘ã‚“ã½ã†;kenpou ã—ょã†ã¨ããŸã„ã—;shoutokutaishi ã›ã„ã;seiki ãªãª;nana ã›ã„ã˜ã‹;seijika ã„ã¨ã†ã²ã‚ã¶ã¿;itouhirobumi ã„ã‚ãらã¨ã‚‚ã¿;iwakuratomomi ã‚ã„ã˜;meiji ã¶ã‚“ã‹ã˜ã‚“;bunkajin ã—ãã†ã‹;shisouka ãµãã–ã‚ゆãã¡;fukuzawayukichi ã„ã—ã‚“;ishin ãŠã†ã¹ã„;oubei ã›ã„よã†;seiyou ãょã†ã„ãã‹;kyouikuka ã—ょã†ã‚;shouwa ãŸã„ã—ょã†;taishou ã«ã¨ã¹ã„ãªãžã†;nitobeinazou ãã‚“ã ã„;kindai ãªã¤ã‚ãã†ã›ã;natsumesouseki ã—ã¤ã‚Œã„;shitsurei ã‚ãŒã¯ã„;wagahai ã—ゃã‹ã„;shakai ã«ã‚“ã’ã‚“;ningen ãŸã„ã›ã‚“;taisen ã‚ã¤ã‚ã‚‹;atsumeru ã¯ãªã¿;hanami ã•ãら;sakura ã¾ã‚“ã‹ã„;mankai ã“ã¨ã‚ã–;kotowaza ã¡ã‚‹;chiru ã—ã‚…ã£ã¡ã‚‡ã†;shucchou ãœã‚“;zen ã”ã–;goza ã—ã;shiku ã—ã‚“ã—ã‚…ã†;shinshuu ããµ;sofu ã™ã¿;sumi ãŸã‚“ã‹;tanka よむ;yomu ã¾ã¾ã”ã¨;mamagoto ãã¼;sobo ã ã‚“ã”;dango ã‚らã†;warau ãªã¿;nami ã“ãりã¤;kokuritsu ãŒãã²;gakuhi ã—ã‚…ã†ã—ょã;shuushoku らã;raku ã‚ãšã‹ã‚‹;azukaru ã­ãˆã•ã‚“;neesan ã¡ã‚…ã†ãŒã£ã“ã†;chuugakkou ã­ã‚“ã›ã„;nensei ã¿;mi ãょã†ã˜ã‚…;kyouju ã ã„ãŒãã›ã„;daigakusei ãŸã£ã—ゃ;tassha ã“ãã•ã„ã¦ã;kokusaiteki ã“ãã”;kokugo ã•ã‚“ã™ã†;sansuu よã»ã©;yohodo ã—ょã†ãŒã£ã“ã†;shougakkou ã—りã¤;shiritsu ã“ã“ã®ã¤;kokonotsu ã¿ã»ã‚“;mihon エヌ・エッãƒãƒ»ã‚±ãƒ¼;enu_ecchi_kee ã“ã†ãょã†;koukyou ã—ã‚…ã‚‹ã„;shurui ãƒãƒ£ãƒ³ãƒãƒ«;channeru ã°ã‚“ãã¿;bangumi ã»ã†ãã†;housou ã»ã†ãµ;houfu ã¿ã‚“ã‹ã‚“;minkan ã’ã;geki ã»ã†ãˆã„;houei クイズ;kuizu ãªã‚“ã§ã‚‚;nandemo ã”らã;goraku ãŒã„ã“ãã”;gaikokugo ギター;gitaa ã“ã†ã–;kouza ã•ã„ã»ã†;saihou ã—ゃã¿ã›ã‚“;shamisen ã¯ã˜ã¾ã‚‹;hajimaru フルート;furuuto ã—ゃã‹ã„ãŒã;shakaigaku ã™ã†ãŒã;suugaku ãょã†ã„ã;kyouiku ããŽã‚‡ã†;kigyou スãƒãƒ³ã‚µãƒ¼;suponsaa ã„らã„らã™ã‚‹;irairasuru ã“ã†ã“ã;koukoku ã¡ã‚…ã†ã ã‚“;chuudan トイレ;toire りよã†;riyou ãŠã’ã‚“ãã§;ogenkide ã¿ã˜ã‹ã„;mijikai ã¨ãã—ã‚…;tokushu りã‹ã„;rikai ã“ãã•ã„れんã”ã†;kokusairengou ãˆã‚“ãã;ensoku ã¹ã‚“ã¨ã†;bentou ãŠã‹ãš;okazu ãŠã«ã—ã‚;onishime ã¨ã‚Š;tori ゆã§ãŸã¾ã”;yudetamago ãもり;kumori よã»ã†;yohou ãŠã£ã—ゃる;ossharu ã‚€ã™ã³;musubi ã„ã‚„;iya ãŠã‚‚ã„;omoi リュック・サック;ryukku_sakku ãŠã‚„ã¤;oyatsu デザート;dezaato ã›ã‚“ã¹ã„;senbei ã‚ã¾ã„;amai クッキー;kukkii ãƒãƒ§ã‚³ãƒ¬ãƒ¼ãƒˆ;chokoreeto ãŠã‚„ã™ã¿ãªã•ã„;oyasuminasai ã‹ã„ã‚;kaiwa ã«ã¡ã˜ã‚‡ã†;nichijou ã’ã„ã²ã‚“ã‹ã‚“;geihinkan ã²ã¨ã”ã¿;hitogomi オランダ;oranda ã‘ã„ã•ã¤ã‹ã‚“;keisatsukan ã˜ã‚‡ãŠã†;joou ãã†ã‚Šã ã„ã˜ã‚“;souridaijin ã“ã£ã‹ã„ãŽã˜ã©ã†;kokkaigijidou ã‚€ã‹ã†;mukau ã“ã‚“ã’ã¤;kongetsu ãµã‘ã„ã‹ã„;fukeikai ã—ã‚…ã£ã›ã;shusseki ã‚ã‹ã‚‹ã„;akarui ãã³ã—ã„;kibishii りã‹;rika ã³ã ã‚“ã—;bidanshi ファン;fan ã‚„ã•ã—ã„;yasashii ãã‚…ã†ã«;kyuuni ã‘ã„;kei ã—ょã†ã‚‰ã„;shourai ã­ã‚“ã”ã†;nengou ã“ã›ãã—ょã†ã»ã‚“;kosekishouhon ã›ã„れã;seireki ãŸã„ã—ã‹ã‚“;taishikan ã¡ã‚…ã†ã„ãŒã;chuuigaki ã‚ã‚“ã©ã†ãã•ã„;mendoukusai ã‚„ãã™ã‚‹;yakusuru ã‚ãŸã‚‹;ataru ãŒã‚“ã­ã‚“;gannen ãŸã™;tasu ã¨ã—;toshi ã”ãžã‚“ã˜ã§ã™;gozonjidesu ã©ãªãŸã‹;donataka アップライト・ピアノ;appuraito_piano グランド・ピアノ;gurando_piano ãŒã„ã“ãã›ã„;gaikokusei ã“ãã•ã‚“;kokusan ãã‚ã„;kuroi ã¡ã‚ƒã„ã‚;chairo ãŒã„ã‹ã‚“;gaikan ã²ã;hiku ãµã‹ã¿;fukami カタログ;katarogu ãŠã¾ã‚りã•ã‚“;omawarisan ショッピングセンター;shoppingusentaa ã—ã‚“ã›ã¤;shinsetsu ã¯ã¯;haha ã¾ã„ã”;maigo ã†ã‚“ã¦ã‚“ã—ã‚…;untenshu ã“ã†ã°;kouba ã®ã†ã˜ã‚‡ã†;noujou ã»ã£ã‹ã„ã©ã†;hokkaidou ã†ã—;ushi ã†ã‚“ã¦ã‚“ã™ã‚‹;untensuru ãらã™;kurasu ã™ã”ã™;sugosu トラクター;torakutaa ã²ã‚ƒãã—ょã†;hyakushou オリンピック;orinpikku ã‹ãŸã¡;katachi ã‘ã‚“ã¡ãã‹;kenchikuka ã—ã‚…ã†ãŒãりょã“ã†;shuugakuryokou スタジアム;sutajiamu ã¡ã‚…ã†ãŒãã›ã„;chuugakusei ã—ょã†ã—ゃマン;shoushaman ã¤ã„ã«;tsuini ã¤ã†ã‚„ã;tsuuyaku ã¯ã„ゆã†;haiyuu ã‹ã„;kai ã“れら;korera ã—ょã†ã˜ã;shoujiki アシミル;ashimiru ããã;kisoku ã•ã¤;satsu ãŸã ã—ã„;tadashii テキスト;tekisuto ã‹ã‚“ã˜;kanji ã˜;ji ã‹ãŸã‚ã—;kataashi ã¬ã;nuki ãˆã¨ã;etoku り;ri ã»;ho ã¤ã¥ã‘ã‚‹;tsudukeru ã“ã†ã¯ã‚“りょ;kouhanryo ã•よã†ãªã‚‰;sayounara ã‹ã¾ã„ã¾ã›ã‚“;kamaimasen ã‚;a ã‚ã‚;aa ã‚ã„ã ;aida ã‚ã†;au ã‚ãŒã‚‹;agaru ã‚ã‹ã‚“ã¼ã†;akanbou ã‚ã•ã­ã¼ã†;asanebou ã‚ã˜;aji ã‚ã™;asu ã‚ãã³;asobi ã‚ã¤ã¾ã‚‹;atsumaru ã‚ã¤ã‚ã‚‹;atsumeru ã‚ã‚„ã¾ã‚‹;ayamaru アルãƒã‚¤ãƒˆ;arubaito ã‚ã‚“ã—ã‚“;anshin ã‚ã‚“ãœã‚“;anzen ã‚ã‚“ãªã„;annai ã„ã‹;ika ã„ãŒã„;igai ã„ãŒã;igaku ã„ãã‚‹;ikiru ã„ãらã¦ã‚‚;ikuratemo ã„ã‘ã‚“;iken ã„ã—;ishi ã„ã˜ã‚‡ã†;ijou ã„ãŸã™;itasu ã„ã¡ã©;ichido ã„ã£ã—ょã†ã‘ã‚“ã‚ã„;isshoukenmei ã„ã¨;ito ã„ãªã‹;inaka ã„ã®ã‚‹;inoru ã„ã‚“;in ã†ãˆã‚‹;ueru ã†ã‘ã¤ã‘;uketsuke ã†ã‘ã‚‹;ukeru ã†ã”ã;ugoku ã†ã¤;utsu ã†ã¤ã™;utsusu ã†ã¤ã‚‹;utsuru ã†ã‚‰;ura ã†ã‚Šã°;uriba ã†ã‚“;un ã†ã‚“ã¦ã‚“ã—ã‚…;untenshu ã†ã‚“ã¦ã‚“;unten エスカレーター;esukareetaa ãˆã ;eda ãˆã‚‰ã¶;erabu ãˆã‚“りょ;enryo ãŠã„ã§ã«ãªã‚‹;oideninaru ãŠã„ã‚ã„;oiwai ãŠã†ã›ã¤ã¾;ousetsuma ãŠãŠã„;ooi ãŠãŠããª;ookina オートãƒã‚¤;ootobai オーãƒãƒ¼;oobaa ãŠã;oki ãŠãã˜ã‚‡ã†;okujou ãŠãりもã®;okurimono ãŠãã‚‹;okuru ãŠãれる;okureru ãŠã“ã™;okosu ãŠã“ã‚‹;okoru ãŠã—ã„れ;oshiire ãŠã¡ã‚‹;ochiru ãŠã£ã—ゃる;ossharu ãŠã¨;oto ãŠã¨ã™;otosu ãŠã©ã‚Š;odori ãŠã©ã‚ã;odoroku ãŠã¾ã¤ã‚Š;omatsuri ãŠã¿ã¾ã„;omimai ãŠã¿ã‚„ã’;omiyage ãŠã‚‚ã„ã ã™;omoidasu ãŠã‚‚ã†;omou ãŠã‚‚ã¦;omote ãŠã‚Šã‚‹;oriru ãŠã‚‹;oru ãŠã‚Œã„;orei ãŠã‚Œã‚‹;oreru ãŠã‚り;owari ã‹;ka カーテン;kaaten ã‹ã„;kai ã‹ã„ãŒã‚“;kaigan ã‹ã„ãŽ;kaigi ã‹ã„ã˜ã‚‡ã†;kaijou ã‹ã„ã‚;kaiwa ã‹ãˆã‚Š;kaeri ã‹ãŒã¿;kagami ãŒãã¶;gakubu ã‹ã–ã‚‹;kazaru ã‹ã˜;kaji ガソリン;gasorin ガソリンスタンド;gasorinsutando ã‹ãŸã¡;katachi ã‹ãŸã¥ã‘ã‚‹;katadukeru ã‹ã¤;katsu ã‹ãªã—ã„;kanashii ã‹ãªã‚‰ãš;kanarazu ã‹ã­ã‚‚ã¡;kanemochi ã‹ã®ã˜ã‚‡;kanojo ã‹ã¹;kabe ã‹ã¾ã†;kamau ã‹ã¿;kami ã‹ã‚€;kamu ã‹ã‚ˆã†;kayou ガラス;garasu ã‹ã‚Œ;kare ã‹ã‚Œã‚‰;karera ã‹ã‚ã;kawaku ã‹ã‚り;kawari ã‹ã‚“ãŒãˆã‚‹;kangaeru ã‹ã‚“ã‘ã„;kankei ã‹ã‚“ã”ãµ;kangofu ã‹ã‚“ãŸã‚“;kantan ãã‹ã„;kikai ãã‹ã„;kikai ãã‘ã‚“;kiken ãã“ãˆã‚‹;kikoeru ãŽã˜ã‚…ã¤;gijutsu ãã›ã¤;kisetsu ããã;kisoku ãã¬;kinu ãã³ã—ã„;kibishii ãã¾ã‚‹;kimaru ãã‚ã‚‹;kimeru ãã‚‚ã¡;kimochi ãã‚‚ã®;kimono ãゃã;kyaku ãã‚…ã†;kyuu ãã‚…ã†ã“ã†;kyuukou ãょã†ã„ã;kyouiku ãょã†ã‹ã„;kyoukai ãょã†ãã†;kyousou ãょã†ã¿;kyoumi ãã‚“ã˜ã‚‡;kinjo ãã‚ã„;guai ãã†ã“ã†;kuukou ãã•;kusa ãã³;kubi ãã‚‚;kumo ãらã¹ã‚‹;kuraberu ãã‚“;kun ã‘ã„ã‹ã‚“;keikan ã‘ã„ã‘ã‚“;keiken ã‘ã„ã–ã„;keizai ã‘ã„ã•ã¤;keisatsu ã’ã—ã‚…ã;geshuku ã‘ã£ã—ã¦;kesshite ã‘ã‚“;ken ã’ã‚“ã„ã‚“;gen_in ã‘ã‚“ãã‚…ã†;kenkyuu ã‘ã‚“ãã‚…ã†ã—ã¤;kenkyuushitsu ã‘ã‚“ã¶ã¤;kenbutsu ã“;ko ã”;go ã“ã†ãŒã„;kougai ã“ã†ãŽ;kougi ã“ã†ãŽã‚‡ã†;kougyou ã“ã†ã¨ã†ãŒã£ã“ã†;koutougakkou ã“ã†ã“ã†ã›ã„;koukousei ã“ã†ã˜ã‚‡ã†;koujou ã“ã†ã¡ã‚‡ã†;kouchou ã“ã†ã‚€ã„ã‚“;koumuin ã“ã“ã‚;kokoro ã”ã–ã„ã¾ã™;gozaimasu ã“ã—ょã†;koshou ã”ãžã‚“ã˜;gozonji ã“ãŸãˆ;kotae ã“ã£ã¡;kocchi ã“ã¨ã‚Š;kotori ã“ã¾ã‹ã„;komakai ã“ã‚;kome ã”らんã«ãªã‚‹;goranninaru ã“ã‚ã™;kowasu ã“ã‚れる;kowareru コンサート;konsaato ã“ã‚“ã©;kondo ã“ã‚“ã‚„;kon_ya ã•ã„ãã‚“;saikin ã•ã„ã”;saigo ã•ã„ãµ;saifu ã•ãŒã™;sagasu ã•ãŒã‚‹;sagaru ã•ã—ã‚ã’ã‚‹;sashiageru ã•ã³ã—ã„;sabishii ã•ã¾;sama ã•ã‚ã;sawagu ã•ã‚ã‚‹;sawaru サンダル;sandaru サンドイッãƒ;sandoicchi ã˜;ji ã—ã‚ã„;shiai ã—ã‹ãŸ;shikata ã—ã;shiki ã—ã‘ã‚“;shiken ã˜ã—ã‚“;jishin ã—ãŸãŽ;shitagi ã—ãŸã;shitaku ã—ã£ã±ã„;shippai ã—ã¤ã‚Œã„;shitsurei ã˜ã¦ã‚“;jiten ã—ãªã‚‚ã®;shinamono ã—ã¾;shima ã˜ã‚€ã—ょ;jimusho ã—ゃã‹ã„;shakai ã—ゃã¡ã‚‡ã†;shachou ジャム;jamu ã˜ã‚†ã†;jiyuu ã˜ã‚…ã†ã—ょ;juusho ã˜ã‚…ã†ã©ã†;juudou ã—ã‚…ã£ã›ã;shusseki ã—ã‚…ã£ã±ã¤;shuppatsu ã—ã‚…ã¿;shumi ã˜ã‚…ã‚“ã³;junbi ã—ょã†ã‹ã„;shoukai ã—ょã†ãŒã¤;shougatsu ã—ょã†ãŒã£ã“ã†;shougakkou ã—ょã†ã›ã¤;shousetsu ã—ょã†ãŸã„;shoutai ã—ょã†ã¡;shouchi ã—ょã†ã‚‰ã„;shourai ã—ょãã˜;shokuji ã—ょãりょã†ã²ã‚“;shokuryouhin ã˜ã‚‡ã›ã„;josei ã—らã›ã‚‹;shiraseru ã—らã¹ã‚‹;shiraberu ã˜ã‚“ã˜ã‚ƒ;jinja ã—ã‚“ã›ã¤;shinsetsu ã—ã‚“ã±ã„;shinpai ã—ã‚“ã¶ã‚“ã—ゃ;shinbunsha ã™ã„ãˆã„;suiei ã™ã„ã©ã†;suidou ã™ã†ãŒã;suugaku スーツケース;suutsukeesu ã™ãŽã‚‹;sugiru ã™ã£ã‹ã‚Š;sukkari ステレオ;sutereo ã™ã¦ã‚‹;suteru ã™ãª;suna ã™ã¿;sumi ã™ã‚€;sumu ã™ã‚‹ã¨;suruto ã›ã„;sei ã›ã„ã˜;seiji ã›ã„よã†;seiyou ã›ã;seki ã›ã¤ã‚ã„;setsumei ã›ãªã‹;senaka ã›ã‚;sewa ã›ã‚“ãã†;sensou ã›ã‚“ã±ã„;senpai ã›ã‚“ã‚‚ã‚“;senmon ãã†;sou ãã†ã ã‚“;soudan ãã ã¦ã‚‹;sodateru ãã¤ãŽã‚‡ã†;sotsugyou ããµ;sofu ãã¼;sobo ãれã«;soreni ãã‚“ãª;sonna ã ã„;dai ãŸã„ã„ã‚“;taiin ã ã„ãŒãã›ã„;daigakusei ã ã„ã˜;daiji タイプ;taipu ãŸã„ãµã†;taifuu ãŸãŠã‚Œã‚‹;taoreru ãŸã—ã‹;tashika ãŸã™;tasu ã ã™;dasu ãŸãšã­ã‚‹;tazuneru ãŸã ã—ã„;tadashii ãŸãŸã¿;tatami ãŸã¦ã‚‹;tateru ãŸã¦ã‚‹;tateru ãŸã¨ãˆã°;tatoeba ãŸãª;tana ãŸã®ã—ã‚€;tanoshimu ãŸã‚Šã‚‹;tariru ã ã‚“ã›ã„;dansei ã ã‚“ã¼ã†;danbou ã¡;chi ã¡ã„ã•ãª;chiisana ã¡ã‹ã‚‰;chikara ã¡ã‚ƒã‚“;chan ã¡ã‚…ã†ãŒã£ã“ã†;chuugakkou ã¡ã‚…ã†ã—ゃ;chuusha ã¡ã‚…ã†ã—ゃã˜ã‚‡ã†;chuushajou ã¡ã‚Š;chiri ã¤ã„ã¦;tsuite ã¤ã‹ã¾ãˆã‚‹;tsukamaeru ã¤ã;tsuki ã¤ã”ã†;tsugou ã¤ãŸãˆã‚‹;tsutaeru ã¤ã¥ã‘ã‚‹;tsudukeru ã¤ã¤ã‚€;tsutsumu ã¤ã¾;tsuma ã¤ã‚‹;tsuru ã¦ã„ã­ã„;teinei テキスト;tekisuto ã¦ãã¨ã†;tekitou テニスコート;tenisukooto ã¦ã¶ãã‚;tebukuro ã¦ã‚‰;tera ã¦ã‚“;ten ã¦ã‚“ã„ã‚“;ten_in ã¦ã‚“ãよã»ã†;tenkiyohou ã§ã‚“ã¨ã†;dentou ã§ã‚“ã½ã†;denpou ã¦ã‚“らんã‹ã„;tenrankai ã©ã†ã;dougu ã¨ã†ã¨ã†;toutou ã©ã†ã¶ã¤ãˆã‚“;doubutsuen ã¨ãŠã;tooku ã¨ãŠã‚Š;toori ã¨ãŠã‚‹;tooru ã¨ã;toki ã¨ãã«;tokuni ã¨ãã¹ã¤;tokubetsu ã¨ã—;toshi ã¨ã¡ã‚…ã†;tochuu ã¨ã£ãã‚…ã†;tokkyuu ã©ã£ã¡;docchi ã¨ã©ã‘ã‚‹;todokeru ã¨ã¾ã‚‹;tomaru ã¨ã‚ã‚‹;tomeru ã¨ã‚Šã‹ãˆã‚‹;torikaeru ã©ã‚ã¼ã†;dorobou ãªãŒã‚‰;nagara ãªã;naku ãªãã™;nakusu ãªã’ã‚‹;nageru ãªã‚‹ã»ã©;naruhodo ãªã‚Œã‚‹;nareru ã«ãŒã„;nigai ã«ãã„;nikui ã«ã£ã;nikki ã«ã‚…ã†ã„ã‚“;nyuuin ã«ã‚…ã†ãŒã;nyuugaku ã¬ã™ã‚€;nusumu ã­ã‚€ã„;nemui ã­ã‚€ã‚‹;nemuru ã®ã‚Šã‹ãˆã‚‹;norikaeru ã®ã‚Šã‚‚ã®;norimono ã¯;ha ã°ã‚ã„;baai ã°ã„;bai ã¯ã„ã—ゃ;haisha ã°ã‹ã‚Š;bakari ã¯ã“ã¶;hakobu ã¯ã˜ã‚ã‚‹;hajimeru ã¯ãšã‹ã—ã„;hazukashii ã¯ãªã¿;hanami ã¯ã‚‰ã†;harau ã°ã‚“ãã¿;bangumi ã²;hi ã²ãˆã‚‹;hieru ã²ãã ã—;hikidashi ã²ã“ã†ã˜ã‚‡ã†;hikoujou ã²ã•ã—ã¶ã‚Š;hisashiburi ã³ã˜ã‚…ã¤ã‹ã‚“;bijutsukan ã³ã£ãりã™ã‚‹;bikkurisuru ã²ã£ã“ã™;hikkosu ã²ã¤ã‚ˆã†;hitsuyou ã²ã‚‰ã;hiraku ビル;biru ã²ã‚‹ã¾;hiruma ã²ã‚‹ã‚„ã™ã¿;hiruyasumi ã²ã‚ã†;hirou ãµãˆã‚‹;fueru ãµã‹ã„;fukai ãµã¤ã†;futsuu ã¶ã©ã†;budou ãµã¨ã‚‹;futoru ãµã¨ã‚“;futon ãµã­;fune ãµã­;fune ãµã¹ã‚“;fuben ãµã‚€;fumu プレゼント;purezento ã¶ã‚“ã‹;bunka ã¶ã‚“ãŒã;bungaku ベル;beru ã¸ã‚“;hen ã¸ã‚“ã˜;henji ã¼ã†ãˆã;boueki ã»ã†ãã†;housou ã»ã—;hoshi ã»ã‚“ã‚„ã;hon_yaku ã¾ã„ã‚‹;mairu ã¾ã‘ã‚‹;makeru ã¾ã¡ãŒãˆã‚‹;machigaeru ã¾ã«ã‚ã†;maniau ã¾ã¾;mama ã¾ã‚り;mawari ã¾ã‚ã‚‹;mawaru ã¾ã‚“ãŒ;manga ã¾ã‚“ãªã‹;mannaka ã¿ãšã†ã¿;mizuumi ã¿ã¤ã‹ã‚‹;mitsukaru ã¿ã¤ã‘ã‚‹;mitsukeru ã¿ã©ã‚Š;midori ã¿ãª;mina ã¿ãªã¨;minato ã‚€ã‹ãˆã‚‹;mukaeru ã‚€ã—;mushi ã‚€ã™ã“;musuko ã‚€ã™ã‚;musume むら;mura むり;muri ã‚;me ã‚ã—ã‚ãŒã‚‹;meshiagaru ã‚‚ã†ã—ã‚ã’ã‚‹;moushiageru ã‚‚ã†ã™ã;mousugu ã‚‚ã—;moshi ã‚‚ã©ã‚‹;modoru ã‚‚ã‚ã‚“;momen ã‚„ã;yaku ã‚„ãã«ãŸã¤;yakunitatsu ã‚„ããã;yakusoku ã‚„ã‘ã‚‹;yakeru ã‚„ã•ã—ã„;yasashii ã‚„ã™ã„;yasui ã‚„ã¯ã‚Š;yahari ã‚„ã‚らã‹ã„;yawarakai ゆ;yu ゆã†ã¯ã‚“;yuuhan ゆã—ã‚…ã¤;yushutsu ゆã³;yubi ゆã³ã‚;yubiwa ゆã‚;yume ゆれる;yureru よã†;you よã†ã„;youi よã”れる;yogoreru よã—ã‚…ã†;yoshuu よã¦ã„;yotei よやã;yoyaku よる;yoru ã«ã‚ˆã‚‹ã¨;niyoruto よã‚ã“ã¶;yorokobu よã‚ã„;yowai りゆã†;riyuu りよã†;riyou りょã†ã»ã†;ryouhou りょã‹ã‚“;ryokan ã‚‹ã™;rusu れãã—;rekishi れんらã;renraku ã‚ã‹ã™;wakasu ã‚ã‹ã‚Œã‚‹;wakareru ã‚ã;waku ã‚ã‘;wake ã‚らã†;warau ã‚りã‚ã„;wariai ã‚れる;wareru ã‚ã‚;aa ã‚ã†;au ã‚ãŠã„;aoi ã‚ã‹ã„;akai ã‚ã‹ã‚‹ã„;akarui ã‚ã;aki ã‚ã‘ã‚‹;akeru ã‚ã•;asa ã‚ã•ã”ã¯ã‚“;asagohan ã‚ã—;ashi ã‚ãã¶;asobu ã‚ãŸãŸã‹ã„;atatakai ã‚ãŸã¾;atama ã‚ã¤ã„;atsui ã‚ã¤ã„;atsui ã‚ã¤ã„;atsui ã‚ã«;ani ã‚ã­;ane ã‚ã®;ano ã‚ã®ã†;anou アパート;apaato ã‚ã¶ãªã„;abunai ã‚ã¾ã„;amai ã‚ã¾ã‚Š;amari ã‚ã‚;ame ã‚らã†;arau ã‚ã‚‹;aru ã‚ã‚‹ã;aruku ã‚れ;are ã„ã„;ii よã„;yoi ã„ã„ãˆ;iie ã„ã†;iu ã„ã;iku ゆã;yuku ã„ã‘;ike ã„ããŒã—ã„;isogashii ã„ã¡;ichi ã„ã¡ã«ã¡;ichinichi ã„ã¤ã‹;itsuka ã„ã¤ã¤;itsutsu ã„ã¾;ima ã„ã¿;imi ã„ã‚‚ã†ã¨;imouto ã„ã‚„;iya ã„りãã¡;iriguchi ã„ã‚‹;iru ã„ã‚‹;iru ã„れる;ireru ã„ã‚;iro ã†ãˆ;ue ã†ã—ã‚;ushiro ã†ã™ã„;usui ã†ãŸ;uta ã†ãŸã†;utau ã†ã¾ã‚Œã‚‹;umareru ã†ã¿;umi ã†ã‚‹;uru ã†ã‚ãŽ;uwagi ãˆ;e ãˆã„ãŒ;eiga ãˆã„ãŒã‹ã‚“;eigakan ãˆã„ã”;eigo ãˆãˆ;ee ãˆã;eki エレベーター;erebeetaa ãˆã‚“;en ãˆã‚“ã´ã¤;enpitsu ãŠ;o ãŠãŠãã„;ookii ãŠãŠãœã„;oozei ãŠã‹ã—;okashi ãŠã‹ã­;okane ãŠãã‚‹;okiru ãŠã•ã‘;osake ãŠã•ら;osara ãŠã˜;oji ãŠã˜;oji ãŠã—ãˆã‚‹;oshieru ãŠã™;osu ãŠãã„;osoi ãŠã¡ã‚ƒ;ocha ãŠã¦ã‚らã„;otearai ãŠã¨ã†ã¨;otouto ãŠã¨ã“;otoko ãŠã¨ã“ã®ã“;otokonoko ãŠã¨ãª;otona ãŠãªã˜;onaji ãŠã°;oba ãŠã°;oba ãŠã¹ã‚“ã¨ã†;obentou ãŠã‚‚ã„;omoi ãŠã‚Šã‚‹;oriru ãŠã‚ã‚‹;owaru ãŠã‚“ãª;onna ãŠã‚“ãªã®ã“;onnanoko ã‹ã„;kai ã‹ã„;kai ãŒã„ã“ãã˜ã‚“;gaikokujin ã‹ã„ã—ゃ;kaisha ã‹ã„ã ã‚“;kaidan ã‹ã„ã‚‚ã®;kaimono ã‹ã†;kau ã‹ãˆã™;kaesu ã‹ãŠ;kao ã‹ã‹ã‚‹;kakaru ãŒãã›ã„;gakusei ã‹ã’ã¤;kagetsu ã‹ã‘ã‚‹;kakeru ã‹ã‘ã‚‹;kakeru ã‹ã™;kasu ã‹ãœ;kaze ã‹ãžã;kazoku ã‹ãŸã‹ãª;katakana ãŒã¤;gatsu ãŒã£ã“ã†;gakkou ã‹ã©;kado ã‹ã°ã‚“;kaban ã‹ã³ã‚“;kabin ã‹ã¿;kami カメラ;kamera ã‹ã‚ˆã†ã³;kayoubi ã‹ã‚‰ã„;karai ã‹ã‚‰ã ;karada ãŒã‚‹;garu ã‹ã‚‹ã„;karui カレンダー;karendaa ã‹ã‚;kawa ã‹ã‚;kawa ãŒã‚;gawa ã‹ã‚“ã˜;kanji ãã„ã‚ã„;kiiroi ãã;kiku ギター;gitaa ããŸãªã„;kitanai ãã£ã¦;kitte ãã£ã·;kippu ãã®ã†;kinou ãŽã‚…ã†ã«ã;gyuuniku ãょã†;kyou ãょã†ã—ã¤;kyoushitsu ãょã†ã ã„;kyoudai ãょã­ã‚“;kyonen ãらã„;kirai ãã‚‹;kiru ãã‚‹;kiru キロ;kiro キロ;kiro ãŽã‚“ã“ã†;ginkou ãんよã†ã³;kin_youbi ã;ku ãã™ã‚Š;kusuri ãã ã‚‚ã®;kudamono ãã¤;kutsu ãã¤ã—ãŸ;kutsushita ãã‚‚ã‚‹;kumoru ãらã„;kurai ãらã„;kurai ãらã„;gurai クラス;kurasu グラム;guramu ãã‚‹;kuru ãã‚‹ã¾;kuruma ãã‚ã„;kuroi ã‘ã•;kesa ã‘ã™;kesu ã‘ã£ã“ã‚“;kekkon ã’ã¤ã‚ˆã†ã³;getsuyoubi ã’ã‚“ã‹ã‚“;genkan ã’ã‚“ã;genki ã“;ko ã”;go ã”;go ã“ãˆ;koe コート;kooto ã“ã“;koko ã“ã“ã®ã¤;kokonotsu ã”ã—ã‚…ã˜ã‚“;goshujin ã”ãœã‚“;gozen ã“ãŸãˆã‚‹;kotaeru コップ;koppu ã“ã¨ã—;kotoshi ã“ã©ã‚‚;kodomo ã“ã®;kono ã“ã¾ã‚‹;komaru ã“ã‚;koro ã”ã‚;goro ã“ã‚“ã’ã¤;kongetsu ã“ã‚“ã—ã‚…ã†;konshuu ã“ã‚“ã°ã‚“;konban ã•ã‚;saa ã•ã„;sai ã•ã‹ãª;sakana ã•ã;saku ã•ãã¶ã‚“;sakubun ã•ã™;sasu ã•ã¤;satsu ã•ã¨ã†;satou ã•ã‚€ã„;samui ã•らã„ã­ã‚“;sarainen ã•ã‚“;san ã•ã‚“;san ã—;shi ã˜;ji ã—ãŠ;shio ã˜ã‹ã‚“;jikan ã—ã”ã¨;shigoto ã˜ã—ょ;jisho ã—ãšã‹;shizuka ã—ã¡;shichi ã—ã¤ã‚‚ã‚“;shitsumon ã˜ã©ã†ã—ゃ;jidousha ã—ã¬;shinu ã˜ã³ã;jibiki ã˜ã¶ã‚“;jibun ã—ã¾ã‚‹;shimaru ã—ã‚ã‚‹;shimeru ã—ã‚ã‚‹;shimeru ã˜ã‚ƒ;ja ã˜ã‚ƒã‚;jaa ã—ゃã—ã‚“;shashin シャツ;shatsu ã˜ã‚…ã†;juu ã—ã‚…ã†ã‹ã‚“;shuukan ã˜ã‚…ãŽã‚‡ã†;jugyou ã˜ã‚‡ã†ãš;jouzu ã—ょãã©ã†;shokudou ã—ã‚‹;shiru ã—ã‚ã„;shiroi ã˜ã‚“;jin ã™ã„よã†ã³;suiyoubi ã™ã†;suu スカート;sukaato ã™ãŽ;sugi ã™ãã«;suguni ã™ã“ã—;sukoshi ã™ãšã—ã„;suzushii ãšã¤;zutsu ストーブ;sutoobu スプーン;supuun スãƒãƒ¼ãƒ„;supootsu ズボン;zubon ã™ã‚€;sumu スリッパ;surippa ã™ã‚‹;suru ã™ã‚ã‚‹;suwaru セーター;seetaa ã›ã³ã‚;sebiro ã›ã¾ã„;semai ゼロ;zero ã›ã‚“ã’ã¤;sengetsu ã›ã‚“ã—ã‚…ã†;senshuu ãœã‚“ã¶;zenbu ãã†;sou ãã†ã˜;souji ãã—ã¦;soshite ãã“;soko ãã®;sono ãã°;soba ãら;sora ãれ;sore ãれã‹ã‚‰;sorekara ã ã„;dai ã ã„ãŒã;daigaku ãŸã„ã—ã‹ã‚“;taishikan ã ã„ã˜ã‚‡ã†ã¶;daijoubu ãŸã„ã¸ã‚“;taihen ãŸã„ã¸ã‚“;taihen ãŸã‹ã„;takai タクシー;takushii ã ã™;dasu ãŸã¡;tachi ãŸã¦ã‚‚ã®;tatemono ãŸã®ã—ã„;tanoshii ãŸã®ã‚€;tanomu ãŸã°ã“;tabako ãŸã¹ã‚‚ã®;tabemono ãŸã¹ã‚‹;taberu ãŸã¾ã”;tamago ãŸã‚“ã˜ã‚‡ã†ã³;tanjoubi ã¡ã„ã•ã„;chiisai ã¡ãŒã†;chigau ã¡ã‹ã¦ã¤;chikatetsu ã¡ãš;chizu ã¡ã¡;chichi ã¡ã‚ƒã„ã‚;chairo ã¡ã‚…ã†;chuu ã¤ã„ãŸã¡;tsuitachi ã¤ãŽ;tsugi ã¤ãã‚‹;tsukuru ã¤ã‚ãŸã„;tsumetai ã¤ã‚ˆã„;tsuyoi ã¦;te テープ;teepu テープレコーダー;teepurekoodaa テーブル;teeburu ã§ã‹ã‘ã‚‹;dekakeru ã¦ãŒã¿;tegami ã§ãã¡;deguchi テスト;tesuto デパート;depaato ã§ã‚‚;demo ã§ã‚‹;deru テレビ;terebi ã§ã‚“ã;denki ã¨;to ã©;do ドア;doa トイレ;toire ã©ã†;dou ã¨ãŠ;too ã¨ãŠã„;tooi ã¨ãŠã‹;tooka ã¨ãã©ã;tokidoki ã¨ã“ã‚;tokoro ã¨ã—ょã‹ã‚“;toshokan ã¨ã¦ã‚‚;totemo ã©ã®;dono ã¨ã¶;tobu ã¨ã¾ã‚‹;tomaru ã¨ã‚‚ã ã¡;tomodachi ã©ã‚ˆã†ã³;doyoubi ã¨ã‚Š;tori ã¨ã‚Šã«ã;toriniku ã¨ã‚‹;toru ã¨ã‚‹;toru ã©ã‚“ãª;donna ãªã„;nai ナイフ;naifu ãªãŒã„;nagai ãªã;naku ãªã¤;natsu ãªã¤ã‚„ã™ã¿;natsuyasumi ãªã©;nado ãªã®ã‹;nanoka ãªã‚‰ã†;narau ãªã‚‰ã¶;narabu ãªã‚‰ã¹ã‚‹;naraberu ã«;ni ã«ã;niku ã«ã—;nishi ã«ã¡;nichi ã«ã¡ã‚ˆã†ã³;nichiyoubi ã«ã‚‚ã¤;nimotsu ニュース;nyuusu ã«ã‚;niwa ã«ã‚“;nin ã¬ã;nugu ãƒã‚¯ã‚¿ã‚¤;nekutai ã­ã‚‹;neru ã­ã‚“;nen ノート;nooto ã®ã¿ã‚‚ã®;nomimono ã®ã‚€;nomu ã¯;ha パーティー;paatii ã¯ã„;hai ã¯ã„;hai ã¯ã„ã–ら;haizara ã¯ã„ã‚‹;hairu ã¯ãŒã;hagaki ã¯ã;haku ã¯ã“;hako ã¯ã—;hashi ã¯ã—;hashi ã¯ã˜ã¾ã‚‹;hajimaru ã¯ã˜ã‚ã«;hajimeni ã¯ã˜ã‚ã¦;hajimete ã¯ã—ã‚‹;hashiru ãƒã‚¹;basu ãƒã‚¿ãƒ¼;bataa ã¯ãŸã¡;hatachi ã¯ãŸã‚‰ã;hataraku ã¯ã¡;hachi ã¯ã¤ã‹;hatsuka ã¯ãª;hana ã¯ãª;hana ã¯ãªã—;hanashi ã¯ãªã™;hanasu ã¯ã¯;haha ã¯ã‚„ã„;hayai ã¯ã‚„ã„;hayai ã¯ã‚‹;haru ã¯ã‚“;han ã°ã‚“;ban ã°ã‚“;ban パン;pan ãƒãƒ³ã‚«ãƒ;hankachi ã°ã‚“ã”ã†;bangou ã°ã‚“ã”ã¯ã‚“;bangohan ã²ãŒã—;higashi ã²ã;hiki ã²ã;hiku ã²ã;hiku ã²ã“ã†ã;hikouki ã²ã ã‚Š;hidari ã²ã¨;hito ã²ã¨ã¤;hitotsu ã²ã¨ã¤ã;hitotsuki ã²ã‚ƒã;hyaku ã³ã‚‡ã†ã„ã‚“;byouin ã³ã‚‡ã†ã;byouki ã²ã‚‰ãŒãª;hiragana ã²ã‚‹;hiru ã²ã‚‹ã”ã¯ã‚“;hirugohan ã²ã‚ã„;hiroi フィルム;firumu ãµã†ã¨ã†;fuutou プール;puuru フォーク;fooku ãµã;fuku ãµã;fuku ãµãŸã¤;futatsu ã¶ãŸã«ã;butaniku ãµãŸã‚Š;futari ãµã¤ã‹;futsuka ãµã¨ã„;futoi ãµã‚†;fuyu ãµã‚‹ã„;furui ãµã‚“;fun パージ;paaji ベッド;beddo ã¸ã‚“;hen ペン;pen ã»ã†;hou ã¼ã†ã—;boushi ボールペン;boorupen ã»ã‹;hoka ãƒã‚±ãƒƒãƒˆ;poketto ã»ã—ã„;hoshii ã»ãã„;hosoi ボタン;botan ホテル;hoteru ã»ã‚“;hon ã»ã‚“;hon ã»ã‚“ã ãª;hondana ã¾ã„;mai ã¾ã„ã‚ã•;maiasa ã¾ã„ã’ã¤;maigetsu ã¾ã„ã¤ã;maitsuki ã¾ã„ã—ã‚…ã†;maishuu ã¾ã„ã«ã¡;mainichi ã¾ã„ã­ã‚“;mainen ã¾ã„ã°ã‚“;maiban ã¾ãˆ;mae ã¾ãŒã‚‹;magaru ã¾ã¡;machi ã¾ã¤;matsu マッãƒ;macchi ã¾ã©;mado ã¾ã‚‹ã„;marui ã¾ã‚‹ã„;marui ã¾ã‚“;man ã¾ã‚“ã­ã‚“ã²ã¤;mannenhitsu ã¿ãŽ;migi ã¿ã˜ã‹ã„;mijikai ã¿ãš;mizu ã¿ã›;mise ã¿ã›ã‚‹;miseru ã¿ã¡;michi ã¿ã£ã‹;mikka ã¿ã£ã¤;mittsu ã¿ãªã•ã‚“;minasan ã¿ãªã¿;minami ã¿ã¿;mimi ã¿ã‚‹;miru ã‚€ã„ã‹;muika ã‚€ã“ã†;mukou ã‚€ã£ã¤;muttsu ã‚;me メートル;meetoru ã‚ãŒã­;megane ã‚‚ã†;mou ã‚‚ã†;mou ã‚‚ãよã†ã³;mokuyoubi ã‚‚ã¤;motsu ã‚‚ã£ã¨;motto ã‚‚ã®;mono ã‚‚ã‚“;mon ã‚„;ya ã‚„ãŠã‚„;yaoya ã‚„ã•ã„;yasai ã‚„ã•ã—ã„;yasashii ã‚„ã™ã„;yasui ã‚„ã£ã¤;yattsu ã‚„ã¾;yama ゆã†ã³ã‚“ãょã;yuubinkyoku ゆã†ã¹;yuube ゆã†ã‚ã„;yuumei ゆã;yuki ゆã£ãり;yukkuri よã†ã‹;youka よã†ãµã;youfuku よã;yoku よã;yoku よã“;yoko よã£ã‹;yokka よã£ã¤;yottsu よã¶;yobu よむ;yomu よる;yoru らã„ã—ã‚…ã†;raishuu らã„ã­ã‚“;rainen ラジオ;rajio りょã“ã†;ryokou れã„;rei れã„ãžã†ã“;reizouko レストラン;resutoran れんã—ã‚…ã†;renshuu ã‚ã;roku ワイシャツ;waishatsu ã‚ã‹ã„;wakai ã‚ã‹ã‚‹;wakaru ã‚ã™ã‚Œã‚‹;wasureru ã‚ãŸãã—;watakushi ã‚ãŸã‚‹;wataru ã«ã›ã„;nisei ã¿ã¤ã”;mitsugo ã‚ãŒã¿;megami ã¡ã—ã¾;chishima ã•ゆã†;sayuu ãµã‚ã‚“;fuan ãŸã—ょã†;tashou ã¡ã˜ã‚“;chijin りよã†ã™ã‚‹;riyousuru ã„ã˜ã‚‡ã†;ijou ã¸ã„ã‚;heiwa ゆらã„;yurai ã‚‹ã¦ã‚“;ruten ã»ã‚ã‚“;hoan ã‚‹ã™;rusu ã§ã‚“ã±;denpa ã¾ã‚‹ãŸ;maruta ã¨ã¾ã‚‹;tomaru ã²ã‹ã;hikaku ã‚€ã—ゃ;musha ãˆã‚‚ã‚“;emon ã˜ã“;jiko ã‹ã«ã‚…ã†;kanyuu ã“ã†ã„;koui よã¨ã†;yotou ãˆã©;edo ã†ã¡ã‚…ã†;uchuu ã¡ãˆ;chie ã«ãŠã†ã‚‚ã‚“;nioumon ã„ãŸã‚Š;itari ã—ã˜ã‘ã„;shijikei ãã‚…ã†ã™;kyuusu ã®ãŽã–ã‹;nogizaka ã‚„ã™ã—;yasushi ãŠã‘ã‚‹;okeru ã‚€ãŸ;muta ã­ãŽ;negi ãã‚;kume ã„ã©;ido ã«ã„ã¿;niimi ãªã‚‰;nara ã¬ã ;nuda ã‚‚ã†ãµ;moufu ã—ã¤ã‚Œã„;shitsurei ã™ã‚“ã½ã†;sunpou ã¦ã‚“ã”ã;tengoku ãŠã‚“ã¡;onchi ã¡ã‚…ã†ã”ã;chuugoku ã¡ã‚…ã†ã“ã;chuukoku ã¡ã‚…ã†ã¦ã‚“;chuuten ã¡ã‚…ã†ã‹ã„;chuukai ã¦ã‚“ã½;tenpo ã»ã˜ã‚‡ãã‚“;hojokin ã»ã;hoki ãŸã„ã»;taiho ã—ゃã¡ã‚‡ã†;shachou ã—ã‚…ã¡ã‚‡ã†;shuchou ã¤ã†ã¡ã‚‡ã†;tsuuchou ã¼ã†ã¡ã‚‡ã†;bouchou ãµã‚ˆ;fuyo ãµã”ã†;fugou ãµãã‚“;fukin ãŽã‚Š;giri ã‹ã„ãŽ;kaigi れã„ãŽ;reigi ã›ã„ã­ã‚“;seinen ã›ã„ã‘ã¤;seiketsu ã›ã„ã—;seishi ã—ã‚“ã›ã„;shinsei ãµãœã„;fuzei ã”ã«ã‚“;gonin ã”ã˜ã‚“;gojin ã‹ãã”;kakugo ã«ã»ã‚“ã”;nihongo ã¯ãã˜ã‚“;hakujin ã„ã£ã±ã;ippaku ã›ã£ã±ã;seppaku ã¯ãã—ã‚…;hakushu ã¯ãらã„ã²ã‚“;hakuraihin ã¯ãã¡ã‚…ã†;hakuchuu ã»ã†ã¡ã‚‡ã†;houchou ã¦ã£ã½ã†;teppou ã™ã„ã»ã†;suihou ã‹ã„ã»ã†;kaihou ã©ã†ã»ã†;douhou ã»ã†ã—ょã;houshoku ã˜ã‚‡ã†ã»;jouho ã©ã˜ã‚‡ã†;dojou ã˜ã‚‡ã†ãžã†;jouzou ã‹ã®ã†;kanou ãã‹ãŒã;kikagaku ã—ã‚…ã£ã‹;shukka ã“ã†ã‹;kouka ã‹ã›ã‚“;kasen ã‹ã ã‚“;kadan ã‹ã‚‚ã¤;kamotsu ã›ã„ã‹;seika ã˜ã‚“ã“ã†;jinkou ã›ã„ã“ã†;seikou ã›ã‚“ã“ã†;senkou ã“ã†ã“;kouko ã“ã†ã¡ã‚ƒ;koucha ã“ã†ã‚‚ã;koumoku ã“ã†ã‘ã‚“;kouken ãŽã“ã†;gikou ã—ã‹ã„ã—ゃ;shikaisha ã‹ã—;kashi ã—ã„ã;shiiku ã—ã“ã†;shikou ã—ã—;shishi ãょã†ã‹ã‚“;kyoukan ã‹ã‚“り;kanri ã‹ã‚“ã—ゃ;kansha ã‹ã‚“ã¡ã‚‡ã†;kanchou ã‘ã‚“ã‚„ãã™ã‚‹;ken_yakusuru ã¼ã†ã‘ã‚“;bouken ã‘ã‚“ã•;kensa ã‘ã‚“ã©ã†;kendou ã¾ã‚„ã;mayaku ã‘ã‚“ã¾;kenma ã¾ã˜ã‚‡;majo ã—ã‹ã‚“;shikan ã—ã‚…ã£ã—;shusshi ã™ã‚“ã—;sunshi ã›ã„ã—ã‚“;seishin ã—ã‚“ã¡ã‚‡ã†;shinchou ã—ã‚“ã—;shinshi ãã›ã‚“;sosen ããœã„;sozei ãã¾ã¤;somatsu ãã—;soshi ã¦ã„ãã‚…ã†;teikyuu ã‹ã„ã¦ã„;kaitei ã—ã¦ã„;shitei ã¦ãã›ã¤;tekisetsu ã¦ãã¡;tekichi ã›ã„ã¦ã;seiteki ã—ã¦ã;shiteki ã„ã£ã¦ã;itteki ã•ã‚“ã°ã„;sanbai ã°ã„よã†;baiyou ã°ã„ã—ょãã™ã‚‹;baishokusuru ã°ã„ã—ょã†;baishou ã¯ã‚“ã¦ã„;hantei ã©ã†ã¯ã‚“;douhan ã“ã†ãŽ;kougi ãã“ã†;kikou ã“ã†ã«ã‚…ã†;kounyuu ã¯ã„ã™ã„ã“ã†;haisuikou ã»ã†ãã†ã‹ã„;housoukai ã™ã„ãã†;suisou ã‹ã„ãã†;kaisou ゆã—ã‚…ã¤;yushutsu ゆらã;yuraku ãょã†ã‚†;kyouyu ゆã¡ã‚ƒã;yuchaku ã—ã‚…ã²ã¤;shuhitsu ã¨ãã—ã‚…;tokushu ã—ã‚“ã˜ã‚…;shinju ãã‚…ã†ã—ã‚…ã†;kyuushuu ã“ã†ãã‚…ã†;koukyuu ã¡ã‹ã‚“;chikan ã˜ã‚‡ã†ã¡;jouchi ã©ã;doki ã©ã‚Šã‚‡ã;doryoku ãˆã„ãˆã‚“ã®;eienno ã™ã„ãˆã„;suiei ãˆã„ã‹;eika ãµã‚“ã™ã„;funsui ãŽãµã‚“;gifun ã“ãµã‚“;kofun ã”ãµã;gofuku ã”らã;goraku ã”ã‹ã„;gokai ã¸ã‚“ã—ã‚…ã†;henshuu ã¸ã‚“ã‘ã‚“;henken ãµã¸ã‚“;fuhen ã²ã‚‡ã†ã¯ã;hyouhaku ã‚‚ãã²ã‚‡ã†;mokuhyou ã˜ã‚ã„;jiai ã˜ã;jiki ã˜ã‚ˆã†;jiyou ã—ã‚…ã£ã¦ã„;shuttei ã‹ã‚“ã¦ã„;kantei ã“ã†ã¦ã„;koutei ã¤ã†ã‹;tsuuka ã‹ã¡ã‚…ã†;kachuu ã‹ãµã;kafuku ãã™ã†;kisuu ããµ;kifu ãã—;kishi ã“ã†ã©ã†;koudou ã“ã†ã‹ã„;koukai ã¦ã„ã“ã†ã™ã‚‹;teikousuru ãょã˜ã‚“;kyojin ãょã²;kyohi ãょり;kyori ã‹ã‚“ãã†;kansou ã‹ã„ãã†;kaisou よã†ãã‚…ã†;youkyuu ãã‚…ã†ãã‚…ã†ã—ゃ;kyuukyuusha ã‚„ãã‚…ã†;yakyuu ã˜ã‚…ã†ã«;juuni ã«ã¾ã‚“ãˆã‚“;niman_en りよã†;riyou りãˆã‚“;rien ã’り;geri ã‹ã‚“りょã†;kanryou りょã†ã¡ã‚‡ã†;ryouchou りょã†ã‚ˆã†;ryouyou ã•ã„ãã¤;saikutsu ã‚„ã•ã„;yasai ã•ã„ã—ょãã™ã‚‹;saishokusuru ã›ã‚“ã—ゃ;sensha ã›ã‚“ã¦ã¤;sentetsu ã—ã‚“ã™ã„;shinsui ã—ã‚“ã›ã¤ãª;shinsetsuna ã—ã‚“ã«ã‚…ã†;shinnyuu ã—ã‚“ã™ã„;shinsui ã—ã‚“ã—ã¤;shinshitsu ã¶ã‚“ã—ょã†;bunshou ã²ã‚‡ã†ã—ょã†;hyoushou ã—ょã†ã˜;shouji ã»ã‚“ã—ã‚…ã†;honshuu ã‚ãã ã„ã—ã‚…ã†;rokudaishuu ãŠã†ã—ã‚…ã†;oushuu ãã†ã ã„;soudai ãµããã†;fukusou ãã†ã ã‚“;soudan ãã†ãŒã„;sougai ã¯ã‚“ãã;hansoku ããりょã†;sokuryou ããã‚ã‚“;sokumen ã“ã†ãŸã„;koutai ãŸã„よ;taiyo ゆã†ãŸã„;yuutai ãŠã†ã¸ã„;ouhei ã—ã£ãºã„;shippei ã¦ã„ãˆã‚“;teien ã‚„ãˆã‚“;yaen ã—ã‚…ã³ã‚‡ã†;shubyou ã¦ã‚“ã³ã‚‡ã†;tenbyou ã‚ã„ã³ã‚‡ã†;aibyou ã‹ã¦ã„;katei ã¦ã‚“ã‹ã™ã‚‹;tenkasuru ã‹ã©ã†;kadou ãã¾ã¤ãª;somatsuna ã»ã†ã¾ã¤;houmatsu ã¾ã£ã•ã¤;massatsu よã†ã—;youshi ã—ã©ã†;shidou ã—ã¼ã†;shibou ã‹ã„ãょã†;kaikyou ã¸ã‚“ãょã†;henkyou ãょã†ã’ã;kyougeki ã¦ã£ãょã†;tekkyou ãょã†ã›ã„;kyousei ã‚ã„ãょã†;aikyou ãã‚ã;kiroku ãŒã‚“ã˜ã¤;ganjitsu ãã‹ã„;kikai ãŸã„ãã¤;taikutsu ãょã†ã‚Šã‚‡ã;kyouryoku ãょã†ã¯ãã™ã‚‹;kyouhakusuru ãã†ã‘ã„;soukei ã©ã†ãã†;dousou ã—ょã†ã‹;shouka ã™ã„ã—ょã†;suishou ã«ã‚“ã˜ã‚ƒ;ninja ã²ã«ã‚“;hinin ã¦ã„ãã†;teisou ãªã„ã¦ã„;naitei ã‚ã‚“ã—ã‚“;anshin ã‚ã‚“ãªã„;annai ã°ã£ã•ã„;bassai ã¯ã°ã¤;habatsu ã°ãã‚;bakuro ã°ãã¯ã¤;bakuhatsu ã¼ã†ã—;boushi ã¼ãã•ã¤;bokusatsu ã¶ã‚Œã„;burei ã¶ãŸã„;butai ã‹ã¡ã;kachiku ã¡ãã§ã‚“ã¡;chikudenchi ã—ょã†ã¡ã‚‡ã†;shouchou ã¡ã‚‡ã†ã°ã¤;choubatsu ã¡ã‚‡ã†ã—ょã;choushoku ã¾ã‚“ã¡ã‚‡ã†;manchou ã˜ã©ã†ã—ゃ;jidousha ã‚ã†ã©ã†;roudou ã‹ã©ã†;kadou ã—ã©ã†ã™ã‚‹;shidousuru ãµãã;fusoku ããã—ã‚“ã™ã‚‹;sokushinsuru ã˜ãŒ;jiga ããŒ;kiga ãµãã‚…ã†;fukyuu ãŒããµ;gakufu ã¯ã‚“れã„;hanrei ã¯ã‚“ã›ã‚“;hansen ã‹ã¸ã„;kahei ã¸ã„ãŒã„;heigai ã²ã¯ã‚“;hihan ã²ãã¤ãª;hikutsuna ã²ã‚ã„;himei ã»ã†ã”ã†;hougou ã“ã†ã»ã†;kouhou ã»ã†ã‚†ã†;houyuu ã²ã‚‡ã†ãã†ã™ã‚‹;hyousousuru ã©ã²ã‚‡ã†;dohyou ã„ã‹ã‚“;ikan ã„ã‚ã‚“;ian ã˜ã‚‡ã†ã‚‚ã‚“;joumon ã˜ã‚‡ã†;jou ã˜ã‚‡ã†ã—ゃã™ã‚‹;joushasuru ã‹ã˜ã‚‡ã†;kajou ã˜ã‚…ã‘ã‚“ã™ã‚‹;jukensuru ã˜ã‚…ãŒã;jugaku ã˜ã‚…ã†ã˜ã™ã‚‹;juujisuru ãã†ã˜ã‚…ã†ã™ã‚‹;soujuusuru ã˜ã‚…ãã¡ã‚‡ã†;jukuchou ã›ã„ã˜ã‚…ã;seijuku ã¡ã‚…ã†ã˜ã‚…ã‚“;chuujun ã˜ã‚…ã‚“ã—;junshi ã‚€ã˜ã‚…ã‚“;mujun ã˜ã‚‡ã˜ã‚…ã¤;jojutsu ãŽã˜ã‚…ã¤;gijutsu ã‹ã„ã‚€;kaimu ã‹ã„ãã‚…ã†;kaikyuu ã‹ã„ã‘ã„;kaikei ã‹ã„ãŒ;kaiga ãˆã—ゃã;eshaku ãˆã»ã‚“;ehon ã‹ã„ã—ã‚“;kaishin ãã‹ã„;kikai ã»ã†ã‹ã„;houkai ã˜ã‚…ã£ã‹ã„;jukkai ã‹ã‚“ã¤ã†ã™ã‚‹;kantsuusuru ã“ã†ã‹ã‚“;koukan ã—ょã†ã‹ã‚“ã™ã‚‹;shoukansuru ã‹ã‚“ã’ã‚“ã™ã‚‹;kangensuru ã˜ã‚…ã‚“ã‹ã‚“;junkan ã—ã‚…ã®ã†;shunou ãã®ã†;kunou ã®ã†ãšã„;nouzui ãŠã†ã”ã‚“;ougon ãŠã†ã ã‚“ã™ã‚‹;oudansuru ã‘ã„ã“ã;keikoku ã‘ã„らん;keiran ã‘ã‚“ãŽã™ã‚‹;kengisuru ã»ã‘ã‚“;hoken ã‘ã‚“ã¡ã‚‡ã†;kenchou ã‘ã‚“ã—ょã†;kenshou ã—ã‚…ã£ãã‚“;shukkin ãã‚“ãŒã—ã‚“ã­ã‚“;kingashinnen ã’ã‚“ã“ã†;genkou ãŠã†ã“ã†;oukou ã“ã†ã»;kouho ã“ã†ã‚„;kouya ãょã†ã“ã†;kyoukou ã“ã‚“ã—ã‚“ã‹ã„;konshinkai ã‹ã„ã“ã‚“;kaikon ã“ã£ã—;kosshi ã“ã£ã‘ã„;kokkei ã—ã‚“ã‚ã†;shinrou ãŒã‚ã†;garou ãã‚“ã“ã†;kunkou ãã‚“ã·ã†;kunpuu ã¸ã‚“ãゃãã™ã‚‹;henkyakusuru ãゃãã»ã‚“;kyakuhon ã“ãょã†;kokyou ãˆã„ãょã†;eikyou ãょã†ã‹ã„;kyoukai ãょã†ã ã„;kyoudai ãŒã¾ã‚“;gaman ã¾ã‚“ãŒ;manga ã›ã¤ã‚ã„;setsumei ã©ã†ã‚ã„;doumei ã“ãã¿ã‚“;kokumin ã‚ã‚“ã¿ã‚“;anmin ã¦ã‚“ã­ã‚“;tennen ã‹ã­ã‚“ã›ã„;kanensei ã‹ã‚“れã;kanreki れãã—;rekishi ã®ã†ãŒã£ã“ã†;nougakkou ã®ã†ã“ã†;noukou ãã‚“ã—;kinshi ãã‚“ã©;kindo ã‹ã£ãã†ã‚;kassouro ã‚ã“ã¤;rokotsu ã—ã‘ã„;shikei ã’ã‚“ã‘ã„;genkei ã¾ã•ã¤;masatsu ãã†ã»ã†;souhou ãã†ãˆã‚“;souen ã¡ãŸã„;chitai ãŸã„ã‹;taika ã˜ãŸã;jitaku ã„ãŸãã™ã‚‹;itakusuru ãã†ã¦ã„ã™ã‚‹;souteisuru ã¦ã„ã©;teido ã¦ã„ã“ã;teikoku ã¦ã„ã‘ã¤ã™ã‚‹;teiketsusuru りょã†ã¦ã„;ryoutei ã¦ã„ã—;teishi ã¦ã£ã¦ã„ã™ã‚‹;tetteisuru ã¦ã£ã‹ã„;tekkai ã¨ã“ã†;tokou ã¨ã†ã¨ã¤ãª;toutotsuna ã•ã¨ã†;satou ãã†ã“;souko ãã†ãžã†;souzou ã¿ã‚“よã†;min_you ã©ã†ã‚ˆã†ã™ã‚‹;douyousuru ã˜ã‚…よã†;juyou よã†ã¶;youbu ãªã„よã†;naiyou よã†ã‹ã„;youkai ゆã†ã—ã‚…ã†;yuushuu ã¯ã„ゆã†;haiyuu ã—ã‚…ã†ã;shuuki ã‹ã;kaki ãŸã‹;taka ã˜ãœã‚“;jizen ã—ã‚…ã†ãœã‚“ã™ã‚‹;shuuzensuru ãžã†;zou ãã†ãžã†;souzou ãžã†ã—ょ;zousho ã—ã‚“ãžã†;shinzou ã—ã‚…ãã¯ã;shukuhaku ã—ã‚…ãã—ょã†ã™ã‚‹;shukushousuru りょã†ã—ょã;ryoushoku りゅã†ã©ã†;ryuudou りゅã†ã‚ã‚“;ryuuan ã•ã‚“ã‹;sanka ã²ã•ã‚“;hisan ã›ã„ã©;seido ã›ã‚“ã™ã„;sensui ã›ã‚“ã‚;senro ã—ã‚“ã›ã¤;shinsetsu ã›ã£ã—ã‚…;sesshu ã—ゃれã„;sharei ã»ã†ã—ゃ;housha ã‚‚ã»ã†ã™ã‚‹;mohousuru ã„ã£ã—ょã†;isshou ã˜ã‚‡ã†ã—ょã†;joushou ã—ょã†ãã†;shousou ãŒã‚“ã—ょã†;ganshou ã—ょã†ãã‚“;shougun ã—ょã†ãŒããã‚“;shougakukin ã»ã—ã‚…;hoshu ã‹ã‚“ã—ゃ;kansha ã„ã‹ã‚“;ikan ã“よã†;koyou ã“ã‚‚ã‚“;komon ã—ãŒã„ã›ã‚“;shigaisen ã—ゆã†;shiyuu ãã¤ãŽã‚‡ã†;sotsugyou ãã£ã›ã‚“;sossen ã¨ã†ã¦ã„;toutei ãã£ã¨ã†ã™ã‚‹;sottousuru ã›ã„ã’ã‚“;seigen ãã˜ã‚‡ã†;kijou ã—ã•ã„;shisai ã¿ã¤ã¼ã†;mitsubou ãã‚“ã˜ã¨ã†;kinjitou ã¨ã†ã˜ã‚‡ã†;toujou ã‚ã£ã±ã;appaku ã¹ã„ã“ã;beikoku ã¹ã£ãã†;bessou ã—ã‚…ã¤ã¼ã¤ã™ã‚‹;shutsubotsusuru ã“ãã³ã‚ƒã;kokubyaku ã•ã‚“ãŒã¤;sangatsu ã•ã‚“ã‹ã’ã¤;sankagetsu ã»ã†ãŽã‚‡ã;hougyoku ã«ã²ã‚ƒã;nihyaku ãょã†ã„ã;kyouiki ã—ゃã˜ã;shajiku ãã¡ã˜ã¤;kichijitsu ãã;kiku ã—ょãã‚‚ã¤;shokumotsu ã©ã†ã¿ã‚ƒã;doumyaku ã¦ã„ã­ã„;teinei ã­ã£ãŸã„;nettai ã„ã¡ã«ã¡;ichinichi ã«ãã—ã‚“;nikushin ã‚ã†ã«ã‚ƒã;rounyaku ã¨ã†ã«ã‚‡ã†ã³ã‚‡ã†;tounyoubyou ã“ã†ãŠã¤ã¸ã„;kouotsuhei りã¡ãŽ;richigi ã°ã‚Šã;bariki りãã˜ã‚‡ã†;rikujou ã—ã‚…ã£ãã‚“ã™ã‚‹;shukkinsuru ãŸã¤ã˜ã‚“;tatsujin ã—ã‚…ã†ã‚ã„ã™ã‚‹;shuuwaisuru ã–ã›ã;zaseki ãœã„ãã‚“;zeikin ã»ãžã‚“;hozon ã‚ã¤ã¼ã†;metsubou ã—ã ã„ã«;shidaini ã—ã›ã„;shisei ã—ã»ã‚“;shihon ã—ã‚‚ã‚“;shimon ã›ã£ã¨ã†;settou ã—ゃã“ã†;shakou ã“ã†ã‚Šã‚‡ã;kouryoku ã“ã†ãŒã„;kougai ã“ã†ã•ã¤;kousatsu ã—ょã†ã‹ã‚“;shoukan ã—ょã†ã‚;shouwa ã—ょã†ã‚ã„;shoumei ã—ょã†ã›ã„ã™ã‚‹;shouseisuru ã—ょã†ã‹ã„ã™ã‚‹;shoukaisuru ã“ã—ょã†;koshou ã—ょã†ã—ょ;shousho ã¡ã‚‡ã†ã‹;chouka れã„ã˜ã‚‡ã†;reijou れã„ãゃã;reikyaku れã„ã˜;reiji ã§ã‚“れã„;denrei ã“ã†ã‚Œã„;kourei りょã†ã©;ryoudo ã•ãã¶ã‚“;sakubun ã•ãã­ã‚“;sakunen ã•ãã•ã‚“;sakusan ã•ãã—ã‚…;sakushu ã•ãŽ;sagi ã¼ã¡;bochi ãã¼;kibo ã—ã¼;shibo ã¾ãã˜ã‚‡ã†;makujou ã°ããµ;bakufu ã‹ã„ã¾ã;kaimaku ã°ããœã‚“;bakuzen ãŽã›ã„;gisei ãµã©ã†ã•ã‚“;fudousan ãã†ãµã;kuufuku ãµãã‚ã‚“;fukumen りれã;rireki ãŒã‚“ãŸã‚“;gantan ã ã„ãŸã‚“;daitan ãŸã‚“ã‹;tanka ã©ãŸã‚“ã°;dotanba ã¡ã‚…ã†ã—ょã;chuushoku ã‘ã„ã‘ã‚“;keiken ã‘ã„ã—ょã;keishoku ã‹ã‘ã„;kakei ã‘ã„ã‚;keiro ãã‹ã„ãª;kikaina ã—ょã†ãžã†ãŒ;shouzouga ã—ょã†ã‹;shouka ã—ょã†ãˆã‚“;shouen ã¦ã£ã—ょã†;tesshou ã—ã‚“ã—ã‚…ã;shinshuku ã—ã‚“ã©ã†;shindou ã•ã‚“ã—ã‚“;sanshin ã“ã†ã—ã‚“;koushin ãã¤ã˜ã‚‡ã;kutsujoku ã‘ã‚“ã™ã„;kensui ã™ã„ã¿ã‚“;suimin ã¼ã†ã™ã„;bousui ã“ã†ãã†ã‚†ã†ã³ã‚“;koukuuyuubin ã•ã„ã»ã†;saihou ãã•ã„;kisai ã•ã„ã°ã„ã™ã‚‹;saibaisuru ã›ã‚“ã„;sen_i ãµãã—;fukushi ãµãã—;fukushi ãœã‚“ã·ã;zenpuku ãã†ã‹ã‚“;soukan ã‹ã‚“ã¡ã‚‡ã†;kanchou ã­ã‚“ã‹ã‚“;nenkan らんよã†ã™ã‚‹;ran_yousuru ã‹ã‚“ã•ã¤;kansatsu ã‹ã‚“ã—ょã†;kanshou ã“ã†ã‹ã‚“;koukan ã“ã†ãŽ;kougi ã“ã†ã–ã‚“;kouzan ã‹ãã ã„;kakudai ã›ã„ã˜ã‚‡ã†;seijou ã˜ã‚‡ã†ã¿ã‚ƒã;joumyaku ãã†ãŽ;sougi ã“ã©ã;kodoku ãˆã‚“ã“;enko ã™ã„ã‹;suika ã›ã‚“ã„ã‚“;sen_in ãŠã‚“ã„ã‚“;on_in ãã‚“ã—ã¤;sonshitsu ã‹ã‚“ã˜ã‚‡ã†;kanjou ã‹ã‚“ã«ã‚“;kannin ã˜ã‚“ã ã„;jindai ãŸã„ãã‚“;taigun ãã‚“ã‹ã„;gunkai ãã‚“ã—ã‚…;kunshu ã—ã¡ã‚‡ã†;shichou ã—ã¾ã„;shimai ã¯ã„ã³ã‚‡ã†;haibyou ã¸ããŒ;hekiga ã³ã‚‡ã†ã¸ã;byouheki ãµã‹ã²;fukahi ã„ã¡ãŠããˆã‚“;ichiokuen ããŠã;kioku よã†ã„;youi ã»ã‹ãã™ã‚‹;hokakusuru ã—ã‚…ã†ã‹ã;shuukaku ã»ã”;hogo ã‚‚ã‚“ã¶ã ã„ã˜ã‚“;monbudaijin ã—ã‚‚ã‚“;shimon ã„ã£ã¤ã„;ittsui ã“ã†ã›ã„;kousei ã“ã†ã‹;kouka ゆã†ã³ã‚“;yuubin ãょã†ã‚ã;kyouaku ã©ãょã†;dokyou りりã;ririku ã“ã†ã“ã†;koukou ã“ã†ã¼;koubo ãょã†ã˜ã‚…;kyouju ã‘ã„れã¤;keiretsu ã‘ã„ãã†;keisou ã—ãã‚“;shison ã¡ã‚…ã†ã‘ã‚“;chuuken ã‘ã‚“ã‚ã„;kenmei ãã‚“ã¡ã‚‡ã†;kinchou ãµãã¤;fukitsu ãã¤ã‚‚ã‚“;kitsumon ã‘ã¤ã‚ã‚“;ketsuron ã‹ã¤ã‚Œã„;katsurei ã‹ã‚“ã‹ã¤;kankatsu ãã‚“ãŒã„;songai ã‘ã„ã„;keii ã‘ã„ã•ã¤;keisatsu ãょã†ã„;kyoui ã™ã„ã˜ã‚“;suijin ã§ã„ã™ã„;deisui ã•ã„ã›ã;saiseki ã‚ã†ã©ã;roudoku ã‚‹ã‚ã†;rurou りょã†ã—ã‚“;ryoushin ãˆã‚“りょ;enryo ã»ã‚Šã‚‡;horyo ã²ãµ;hifu ã»ã•;hosa ã ã;daki りんりãŒã;rinrigaku ã”りん;gorin ã›ãã«ã‚“;sekinin ã«ã‚“ã—ã‚“;ninshin ã†ã‚“ã¡ã‚“;unchin ã’ã‚“ã„ã‚“;gen_in ã“ã‚“ã„ã‚“;kon_in ã—ゃãŠã‚“;shaon ãŸã„ã—;taishi ã‹ã‚“り;kanri ã—ã‚…ãã—ゃ;shukusha ã—ã‚ã„;shimei ã—ã¸ã„;shihei ã»ã˜ã‚…ã†;hojuu ã˜ã‚…ã†ã»ã†;juuhou ã ã„ã¨ã†ã‚Šã‚‡ã†;daitouryou ãµãã¤ã†;fukutsuu ã¶ã‚ˆã†;buyou ã—ã‚“ã˜ã¤;shinjitsu ãã‚“ã—ã‚“ã™ã‚‹;kinshinsuru ã¡ã‚“ã‚ã¤;chin_atsu ã–ã‚“ã“ã;zankoku ã“ã†ãžã†;kouzou ã¸ã„よã†;heiyou ã¸ã„;hei ã‹ã³ã‚“;kabin ã¡ã—ã;chishiki ã—ょãã„ã‚“;shokuin ãã—ã;soshiki ã—ょã£ã;shokki ã„りょã†;iryou ã¨ã†ã»ã;touhoku ã¨ã†ãょã†;toukyou ã‘ã‚“ãŒã;kengaku ã‘ã‚“ãã‚…ã†;kenkyuu ã‹ã„ã—ゃ;kaisha ã‚ã‚“ãªã„ã™ã‚‹;annaisuru ã§ã‚“ã‚ã°ã‚“ã”ã†;denwabangou ã°ã‚“ã”ã¯ã‚“;bangohan ã ã‚“ã›ã„;dansei ã˜ã‚‡ã›ã„;josei ã¹ã‚“ã¨ã†;bentou ã¡ãš;chizu ã ã‚“ã¡;danchi ã¡ã‹ã¦ã¤;chikatetsu ã¨ã—ょã‹ã‚“;toshokan ã ã„ãŒã;daigaku ã ã„ã˜ã‚‡ã†ã¶;daijoubu ãŒã„ã“ãã˜ã‚“;gaikokujin ã—ãœã‚“;shizen ã—ãŒã¤;shigatsu ã—ã¡ãŒã¤;shichigatsu ãã‚…ã†ã«ã‚“;kyuunin ãã˜;kuji ã˜ã‚…ã†ã‚ã;juuroku ã›ã‚“ãˆã‚“;sen_en ã„ã¡ã¾ã‚“ãˆã‚“;ichiman_en りょã“ã†;ryokou ã‹ã‚ˆã†ã³;kayoubi ãŽã‚…ã†ã«ã‚…ã†;gyuunyuu ã¼ã‚“ã•ã„;bonsai ã™ã„よã†ã³;suiyoubi ã‚‚ãよã†ã³;mokuyoubi ã„ã£ã—ょã†ã‘ã‚“ã‚ã„;isshoukenmei ã²ã˜ã‚‡ã†;hijou ãんよã†ã³;kin_youbi ãµã˜ã•ã‚“;fujisan ã«ã»ã‚“;nihon ã©ã‚ˆã†ã³;doyoubi ãˆã„ã‚ã˜ã¦ã‚“;eiwajiten ã‹ã‚“ãœã‚“;kanzen ã§ã‚“ã½ã†;denpou ã’ã‚“ã;genki ã‹ã‚“ã˜;kanji ã˜ã‚‡ã†ã ã‚“;joudan ã’ã‚“ã‹ã‚“;genkan ã²ã¿ã¤;himitsu ã‹ã„ã ã‚“;kaidan ã˜ã—ã‚“;jishin ã²ã“ã†ã;hikouki ã˜ã—ã‚“;jishin ãょã­ã‚“;kyonen ã—ょã†ã¦ã‚“;shouten ã‘ã„ãŠã†ã ã„ãŒã;keioudaigaku ã”ãœã‚“;gozen ã‘ã‚“ã¶ã¤;kenbutsu ãµãã‚“;fukin ãã‚“ãˆã‚“;kin_en ã“ã‚“ã—ã‚…ã†;konshuu ã“ã‚“ã©;kondo ã“ã†ã˜ã‚‡ã†;koujou ã“ã†ã“ã;koukoku ã“ã†ããã©ã†ã‚;kousokudouro ãょã†ã—ã¤;kyoushitsu ãˆã„ãŽã‚‡ã†ã¡ã‚…ã†;eigyouchuu ã—ゃã—ã‚“;shashin ãã‚…ã†ã“ã†;kyuukou ãã‚…ã†ã‚Šã‚‡ã†;kyuuryou ã¾ã„ã«ã¡;mainichi らã„ã­ã‚“;rainen ã—ょã†ãŒã£ã“ã†;shougakkou ã—ょã†ã°ã„;shoubai ã—ã¤ã‚‚ã‚“;shitsumon ã—ょã£ã‘ã‚“;shokken ã›ã„ã—ょ;seisho れã„ãžã†ã“;reizouko れんã—ã‚…ã†;renshuu らんã¼ã†;ranbou ã•ã„ãµ;saifu ã›ã„よã†;seiyou ã’ãã˜ã‚‡ã†;gekijou ã›ã„ãµ;seifu ã›ã‚“ã‚‚ã‚“ã‹;senmonka ã›ã‚“ã—ã‚…;senshu ã—ã‚…ã†ã¦ã‚“;shuuten ã›ã‚“ãょ;senkyo ã›ã‚“ãã†;sensou ã—ã‘ã‚“;shiken ã—ã£ã±ã„;shippai ãŸã‚“ã˜ã‚‡ã†ã³;tanjoubi ã¨ãã¹ã¤;tokubetsu ゆã†ã‚ã„;yuumei ã‚„ããã;yakusoku ã»ã‚“ã‚„ã;hon_yaku ãŸã„ãµã†;taifuu ãˆãã¡ã‚‡ã†;ekichou ãŸã„ã¸ã‚“;taihen ã¤ã”ã†;tsugou ã’ã„ã—ゃ;geisha よã†ãµã;youfuku ã‚„ã£ãょã;yakkyoku ãµã¨ã‚“;futon ãœã‚“ã¶;zenbu ã ã„ã¶ã¤;daibutsu ã•ã‚“ãŒã;sangaku ã„ã£ã‹ã„;ikkai ã•ã‚“ã ã„;sandai ã«ã¾ã„;nimai ã«ã•ã¤;nisatsu ã›ã‚“ã ã„;sendai ã˜ã‚…ã†ã«ã•ã„;juunisai ã‹ã‚ã„ãã†;kawaisou ãŠãゃãã•ã‚“;okyakusan ã‚ã‚“ã©ã†ãª;mendouna ã‚ã„ã˜ã˜ã ã„;meijijidai ã«ã£ã“ã†;nikkou ã»ã£ã‹ã„ã©ã†;hokkaidou ãŸã„ã‚ã‚“;taiwan ãˆã‚“ã´ã¤;enpitsu ã¨ãã»ã‚“;tokuhon ã‹ã˜;kaji ããµ;sofu ãã¼;sobo ã˜ã‚“ã˜ã‚ƒ;jinja ã³ã˜ã‚“;bijin ãã‚ã†;kurou ãŠã†ã˜;ouji ã ã„ã„ã¡;daiichi ã”ã‚ã‚“;gomen ã–ãœã‚“;zazen ã”らん;goran ã»ã†ãã†;housou ãŠã‚“ã›ã‚“;onsen むり;muri ã‹ã;kagu ã‚‚ã‚“ã¶ã—ょã†;monbushou ãŠãã®ã©ã;okinodoku ã»ã©ã†;hodou ã¡ã‚…ã†ã„ã™ã‚‹;chuuisuru ã‚‚ãã¦ã;mokuteki ã„ã”;igo ãŸã«ã‚“;tanin ã¦ã‚“ãよã»ã†;tenkiyohou ã’ã‚“ã–ã„;genzai ã¼ã†ãˆãã‹ã„ã—ゃ;bouekikaisha ã‹ãžã;kazoku ã”ãµã‚“ã”ã³ã‚‡ã†;gofungobyou ã—ã¦ã„ã›ã;shiteiseki ãょã†ã„ã;kyouiku ã¯ã„ã‘ã‚“ã™ã‚‹;haikensuru ãžãã”;zokugo ã¶ã—;bushi ã‚ã†ã˜ã‚“;roujin ã‘ã‚“ã“ã†;kenkou ã¡ã‚…ã†ã‹ã‚Šã‚‡ã†ã‚Š;chuukaryouri ã‚ã„ã—;meishi ãã‘ã‚“;kiken ã‹ã‚“ã±ã„;kanpai ã˜ã‚…ã£ã½ã‚“;juppon ã³ã‚‡ã†ã„ã‚“;byouin ã—ゃãã¯ã¡;shakuhachi ã—ã¡ã‚Š;shichiri ã„ã¡ã‚Šã‚“;ichirin ã©ã†ã˜;douji ã›ã„ã©ã†;seidou ã©ã†ãŸã„;doutai ã©ã†ã•ã¤;dousatsu ã™ã„ã¨ã†;suitou ã¨ã†ã‚†;touyu ã¡ã‚‡ã†ã“ã†;choukou ã¡ã‚‡ã†ã‚„ãã°ã‚“;chouyakuban ã¡ã‚‡ã†ã›ã‚“;chousen ã¡ã‚‡ã†ã¼ã†;choubou ã¨ã†ã’ã‚“ãょã†;tougenkyou ã¨ã†ãã†;tousou ã˜ã‚‡ã†ã¶ã¤;joubutsu ãœã‚“ã›ã„;zensei ã¯ã‚“ã˜ã‚‡ã†;hanjou ã¡ã‚…ã†ã›ã„;chuusei ã˜ã‚‡ã†ãªã„;jounai ã•ã„ã°ã‚“;saiban ã—ã¼ã†;shibou ã‚‚ã†ã˜ã‚ƒ;mouja ã»ã‚“ã‚‚ã†;honmou ã¼ã†ã­ã‚“ã‹ã„;bounenkai ãŸã¼ã†;tabou ã»ã†ãã†ã‚‚ã†;housoumou ã‚‚ã†ã‚‚ã;moumoku ã¡ã—ããã†;chishikisou ãœã‚“ãã†;zensou ãªã‹ãã­;nakasone ãžã†ã‹;zouka ãžã†ã—ã‚“;zoushin ããã†ã™ã‚‹;kisousuru ãžã†ã¦ã„;zoutei ãょã†ã•ã‚“ã—ã‚…ãŽ;kyousanshugi ãょã†ã‘ã„;kyoukei ãょã†ãã‚…ã†ã™ã‚‹;kyoukyuusuru ãよã†;kuyou ãã†ã“ã†;kuukou ã“ã†ãšã„;kouzui ã‘ã‚“ã«ã‚“;kennin ã‘ã‚“ã˜ã‚‡ã†;kenjou ã‘ã‚“ãŽ;kengi ãã’ã‚“;kigen れんã°ã„;renbai れんã·;renpu ã—ょã†ãŒã¤;shougatsu ã›ã„ãŽ;seigi ã›ã£ã—ょã†;sesshou ã›ã„ã°ã¤;seibatsu ã»ã—ょã†;hoshou ã³ã‚‡ã†ã—ょã†;byoushou ã„ã£ã‹ã¤ã™ã‚‹;ikkatsusuru ã‹ã£ã—ょã;kasshoku ã‹ã£ã™ã„;kassui ãˆã£ã‘ã‚“;ekken ã“ã”;kogo ã“ã¯ã‚“;kohan ã“ãŸã‚“;kotan ãょã˜ã‚…ã†;kyojuu ãã†ã„;soui ã„ã ã„;idai ã‘ã„ã„;keii ã‹ã‚“ã“ã;kankoku ãã—ゃ;kisha ã¡ã;chiki ãã’ã‚“;kigen ã›ã„ã;seiki ãã¡ã‚…ã†;kichuu ãŠã†ã²;ouhi ã—ã‚“ã±ã„ã™ã‚‹;shinpaisuru ãã‚…ã†ã¯ã‚“;kyuuhan ã¯ã‚“ã‹ã‚“;hankan ãŸã‚“ã‚‚ã®;tanmono ã¦ã£ã±ã‚“;teppan ã‘ã„ã˜ã°ã‚“;keijiban ã¯ã‚“ã°ã„;hanbai ã—ã‚…ã£ã±ã‚“ã—ゃ;shuppansha ã¯ã‚“ã—ã‚“;hanshin ã¸ã‚“ã˜;henji ã‹ã‚ã‚“;kamen ã˜ã‚€;jimu ã‚€ã•ã‚“;musan ã˜ã‚…ã†ã©ã†;juudou ã«ã‚…ã†ã‚;nyuuwa ã”ãµã‚“;gofun ã˜ã¶ã‚“;jibun ãµã‚“ã¾ã¤;funmatsu ãµã‚“ãŽ;fungi ãµã‚“ã„ã;fun_iki ã³ã‚“ã¼ã†;binbou ã²ã‚“ã·;hinpu ã¯ã‚“ã·;hanpu ã“ã£ã;kokki ã—ょã†ãŽ;shougi ãã»ã‚“;kihon ãŒã£ã;gakki ã›ã‚“ãŒã;sengaku ãã‚“ã›ã‚“;kinsen ã˜ã£ã›ã‚“;jissen ã•ã‚“ã°ã—;sanbashi ãŸã„ãŽã‚‡ã†;taigyou ã¼ãŸã„;botai ã¡ã‚ã‚“;chian ã’ã‚“ã—ã¦ã;genshiteki ã—ã‚“ã‹ã‚“ã›ã‚“;shinkansen ã‹ã‚“ã¡ã‚‡ã†;kanchou ã—ã‚…ã†ã‹ã‚“;shuukan ã‹ã‚“ãŒã‚“;kangan ã‹ã‚“よã†;kan_you ã”ã‘ã‚“;goken ãµã‘ã„;fukei ã‘ã„ã°;keiba ãょã†ãã†;kyousou ãŒã„ãょã†;gaikyou ã—ã‚…ããµã;shukufuku ã—ã‚…ã†ãŽ;shuugi ã“ã£ã;kokki ã›ã„ã‚ã„;seimei ã²ã‚ƒãã—ょã†;hyakushou ã—ょã†ã¶ã‚“;shoubun ã›ã„ã–;seiza ã¿ã‚‡ã†ã˜ã‚‡ã†;myoujou ã§ã‚“ã¡;denchi ã—ã“ã†ã™ã‚‹;shikousuru ãµã›;fuse ã²ã«ã‚‡ã†;hinyou ã¶ã‚“ã´ã¤;bunpitsu ã²ã¤ã‚ˆã†;hitsuyou ã—ã‚…ããµ;shukufu ã¦ã„ã—ã‚…ã;teishuku ã‹ã‚“ã¨ã;kantoku ã›ã„ã˜ã‚ƒã;seijaku ã›ãã›ã„;sekisei ãµãã„ã‚“;fukuin ã‚ã‚“ã;anki ã‹ã„ãŒã‚“;kaigan ã“ã†ã‹ã„;koukai ã°ã„ã‹;baika ã¶ã˜ã‚‡ã;bujoku ã³ã‚“ãããª;binsokuna ã¯ã‚“ãˆã„;han_ei ã¼ã†ãˆã„;bouei ã¼ã†ã›ã;bouseki ã¼ã†ãš;bouzu ã¼ã£ã¡ã‚ƒã‚“;bocchan ã¼ã†ãŒã„;bougai ã¼ã†ã›ã‚“;bousen ã‹ã‚“ã¼ã†ã¡ã‚‡ã†;kanbouchou ã»ã†ã‚ã‚“;houmen ã»ã†ã—;houshi ã»ã†ã‚‚ã‚“ã™ã‚‹;houmonsuru ã‹ã‚“ã’ã;kangeki ãµã›ã¤;fusetsu ã‹ã¡;kachi ã»ã†ã¡ã™ã‚‹;houchisuru ã›ã„ã—ょã;seishoku ã—ょãã¶ã¤ãˆã‚“;shokubutsuen ã¡ã‚‡ãã‚ã‚“;chokumen ã—ょã†ã˜ã;shoujiki ã¨ã†ã‘ã¤;touketsu れんãã‚“ã˜ã‚…ã¤;renkinjutsu ã¡ã‚“れã¤;chinretsu ã¡ã‚…ã†ã—ゃ;chuusha ã§ã‚“ã¡ã‚…ã†;denchuu ã¡ã‚…ã†ã—ゃã˜ã‚‡ã†;chuushajou ã¡ã‚…ã†ãã™ã‚‹;chuukisuru ã—ã‚…ã˜ã‚“;shujin ã˜ã‚…ã†ã—ょ;juusho ãŠã†ãµã;oufuku ã„ã—ょã†;ishou ã—ゃã—ょã†;shashou ã—ょãã©ã†;shokudou ã˜ã‚†ã†;jiyuu ã›ãゆ;sekiyu ã¡ã‚…ã†ã—ょã†;chuushou ã—ã‚…ã†ã—ã‚…;shuushu ã‹ãã˜;kakuji ã›ã„ã‹ã;seikaku ãªã„ã‹ã;naikaku ãŠãゃãã•ã‚“;okyakusan りょã‹ã;ryokaku ã¿ã‚ƒãらã;myakuraku らãã”;rakugo らãã®ã†;rakunou りゃãã”;ryakugo ãœã‚“ãŒã;zengaku ã—ゃãµã¤;shafutsu ã‘ã„ã•ã¤ã—ょ;keisatsusho ã–ã‚“ã—ょ;zansho ã—ょã“ã;shokoku ã¡ã‚‡ã—ゃ;chosha ã¡ã‚‡ã‚†ã†;choyuu ã˜ã‚‡ã†ã¡ã‚‡;joucho ãょã†ã¨;kyouto ãŸã„よã†;taiyou ã‘ã„よã†;keiyou ã ã„ã¡ã‚‡ã†;daichou ã­ã£ã¨ã†;nettou ã—ょã†ãŒã„;shougai ã“ã†ã¦ã¤;koutetsu ã¡ã¤ã˜ã‚‡;chitsujo ã¯ãã¶ã¤ã‹ã‚“;hakubutsukan ã¨ã°ã;tobaku ã¯ã£ã‹;hakka ããã°ã;sokubaku ã¼ã;boki ã—ょã†ã¦ã‚“ãŒã„;shoutengai ã‹ã„ã©ã†;kaidou ã—ょã†ãŒã„;shougai ã‘ã„ã²;keihi ã‘ã„ã“;keiko ã‹ã•ã;kasaku ãµã†ã¨ã†;fuutou ã»ã†ã‘ã‚“;houken ãˆã¤ã‚‰ã‚“ã—ã¤;etsuranshitsu ã¾ã‚“ãˆã¤;man_etsu ãˆã„ã³ã‚“;eibin ã ã¤ãœã„;datsuzei ã ã„ã“ã‚“;daikon ã‹ã„ã“ã‚“;kaikon ã‚€ã’ã‚“;mugen ãŒã‚“ãã‚…ã†;gankyuu ã‹ã„ã’ã‚“;kaigen ãŽã‚“ã“ã†;ginkou ã¦ã£ãŸã„;tettai ã—ã¦ã‚“;shiten ã—よã†;shiyou ã—ãŸã„;shitai ãŽã®ã†;ginou ãã‚;kiro ã—ょã†ã­ã‚“;shounen ã“ã†ã—ょã†;koushou ã—ょã†ã‚ã;shouroku ã¯ã‚“ã›ã„;hansei ã”ã³ã‚‡ã†;gobyou ãã¿ã‚‡ã†;kimyou ã¶ã‚ã„;buai ãµ;fu れã£ã¨ã†ã‹ã‚“;rettoukan ã§ã—;deshi ãょã†ã ã„;kyoudai ã²ã«ã;hiniku ã²ãŒã„;higai ã²ãŒã‚“;higan ã²ã‚ã†;hirou ã¯ã•ã‚“;hasan ã‚ã†ã°;rouba ã¯ã„ã;haiku ã›ã‚“ã±ã„;senpai ã¯ã„ã™ã„ã‹ã‚“;haisuikan ã²ã‹ã‚“;hikan ã‚‚ã‚“ã´;monpi ゆã†ã–ã„;yuuzai ã˜ãªã„;jinai ã—ã˜;shiji ã˜ã˜ã‚…ã†;jijuu ã—ã˜ã‚“;shijin ã—ょã†ãŸã„;shoutai れã£ã¨ã†;rettou ã¨ã†ãµ;toufu ã ã„ãš;daizu ã¦ã‚“ã­ã‚“ã¨ã†;tennentou ã›ã‚“ã¨ã†;sentou ã¨ã†ã‚ã;touroku ã¨ã–ã‚“;tozan ã›ã‚“ã¨ã†;sentou ãŠã‚“ã©;ondo ãšã¤ã†;zutsuu ã»ã†ã­ã‚“;hounen ã›ã„ã¡ã‚‡ã†ãª;seichouna ãŸã‚“ã;tanki よã†ã‚‚ã†;youmou よã†ãã†;yousou ãã‚…ã†ã‚ˆã†;kyuuyou よã†ãŽã‚‡ã†;yougyou ã¯ã£ã—ょã†ã¡;hasshouchi ã—ょã†ã•ã„;shousai ã—ã‚“ã›ã‚“;shinsen ã«ã¡ã‚‡ã†ã‚;nichoume ã¡ã‚‡ã†ã«ã‚“;chounin ã¡ã‚‡ã†ã¦ã‚“;chouten ã¡ã‚‡ãã‚“;chokin ã§ã‚“ã¨ã†;dentou ã¦ã„ã›ã„;teisei ã ã¨ã†ã™ã‚‹;datousuru ã—ã‚…ã—ゃ;shusha ã—ã‚…ã¿;shumi ã•ã„ã—ã‚“;saishin ã•ã¤ãˆã„;satsuei ã¡ã;chiku ã›ã‚“ã;senku ãŠã†ã—ã‚…ã†;oushuu ãŠã†ã ;ouda ã™ã†ã˜ã;suujiku ã¡ã‚‡ã†ã›ã„ã™ã‚‹;chouseisuru ã—ょã†ã¡ã‚‡ã;shouchoku ããŒã„;sogai ã—んらã„;shinrai ã—ょã†ã¡ãã°ã„;shouchikubai ãã—ょã†;soshou ã‚ã†ãŠã†;rouou ã¦ã„ã‚ã‚“;teian ã¦ã„ã¼ã†;teibou よãã¼ã†;yokubou よãã—ã¤;yokushitsu ゆã†ã“ã;yuukoku よゆã†;yoyuu ã›ãã˜ã¤;sekijitsu ã“ã‚“ã˜ã‚ƒã;konjaku ã“ã›ã;koseki ã›ãã¯ã„;sekihai ã•ãã”;sakugo ã—ゃã£ãã‚“;shakkin ãã¡;sochi ã»ã†ã‹ã¤;houkatsu ã¹ã‚“ãœã¤;benzetsu ã˜ã¦ã‚“;jiten ãã‚…ã†ã‘ã„;kyuukei よやã;yoyaku よãã‚“;yokin ã˜ã‚‡ã¶ã‚“;jobun ã˜ã‚‡ãŒã„;jogai ãã†ã˜;souji ã˜ã‚‡ã˜ã—;jojishi ã˜ã‚‡ã“ã†;jokou ã¨ãã†;tosou ã¨ã¡ã‚…ã†;tochuu よã¯ã;yohaku ã—ã‚…ã–ã„ã™ã‚‹;shuzaisuru ã–ã„ã•ã‚“;zaisan ã¦ã‚“ã•ã„;tensai ã¸ã„ã¦ã‚“;heiten ã—ãã—ゃ;shikisha ã“ã†ã;kouki ã‹ã„ãã‚“;kaigun ã‚ãã—ょã†;rokushou ã¶ã—ょã†;bushou ã—ょã†ã˜ã‚‡ã†;shoujou ãµã—ã‚“;fushin ã›ã„ã¦ã‚“;seiten ã‹ã‚“ã˜ã‚‡ã†;kanjou ã¡ã‚‡ã†ã—;choushi ã¡ã‚‡ã†ãžã†;chouzou ãˆã‚“ã—ã‚…ã†;enshuu ãŒã„ã¨ã†ã—ゃ;gaitousha ã ã‚“ãŒã„;dangai ã‹ãã—ã‚“;kakushin ã˜ã“ãã²ã‚‡ã†;jikokuhyou ã‘ã„ã–ã„;keizai ã—ょã•ã„;shosai ã›ã„ã—ょã†;seishou ã›ã‚“ã–ã„;senzai ã ã„ã;daiku ã°ã„ã†;baiu ã“ã†ã‚ã‚“;kouan ã‘ã‚“ã½ã†;kenpou ã‹ã‚“ã•ã„;kansai ã¨ã‚“カツ;tonkatsu ã‚ã„ã‚ã;meiwaku ã°ã„ã—ã‚“;baishin ã°ã„ã—ã‚…ã†;baishuu ã©ãりã¤;dokuritsu ã¯ã„ã—;haishi ã¨ã¡;tochi ã¦ã‚“ã®ã†;tennou ãˆã‚“ã˜ã‚‡;enjo ã”ã‘ã„;gokei ã¯ã‘ã‚“;haken ã«ã‚…ã†ã„ã‚“;nyuuin ã¿ã‚‡ã†ã«ã¡;myounichi ã‘ã—ょã†ã—ã¤;keshoushitsu ãµã†ãµ;fuufu ã—ã‚…ã—ょã†;shushou ã„ã‚‹ã„;irui ã°ã‚“ã–ã„;banzai ã—ãã†;shisou ã˜ã‚“ãã;jinsoku ã¸ã„ãã‚“;heikin ã˜ã©ã†;jidou ã‹ã„ã—ゃã;kaishaku ã‚‚ã‚“ã;monku ãã‚…ã†ã˜ã¤;kyuujitsu ã—ã‚„ãã—ょ;shiyakusho ã¼ã—ã‚…ã†;boshuu ã°ã£ãã‚“;bakkin ã¡ã„;chii ã¡ã‚‡ãã›ã¤;chokusetsu ã›ã‘ã‚“;seken ã¯ã‚“ã ã‚“;handan ã˜ã‚€ã‚ˆã†ã²ã‚“;jimuyouhin ã¯ã‚“ã¨ã†;hantou ã—ã‚…ã‚“ã‹ã‚“;shunkan ã—ã‚“ã“ã†ã™ã‚‹;shinkousuru ã‘ã„ã—ã;keishiki ã—ã‚…ã†ãょã†;shuukyou ã¡ã‚‡ã†ã•;chousa ã“ã†ã¡ã‚‡ã†ã‹ã„;kouchoukai ã¡ã‚‡ã†ãã‚“;chouson ã¡ã‚…ã†ã‘ã„;chuukei ã ã„ã˜ã‚“;daijin ã ã‹ã„;dakai ãˆã‚“ã;enki ãˆã‚“ãœã¤;enzetsu ãµã£ã“ã†;fukkou ã’ã‚“ã‚ã„;genmei ã¯ã‚“ã„;han_i ã—ã‚…ã†ã‚Šã‚‡ã†;shuuryou ã‘ã£ã—ょã†;kesshou ã“ãã°ã‚“;kokuban ãょã†ã¿;kyoumi ãµã£ãã‚…ã†;fukkyuu ãµãŸã‚“;futan ã•ãã’ã‚“;sakugen ã”ã†ã¨ã†;goutou ã˜ã•ã¤;jisatsu ãŽã‚‡ãŽã‚‡ã†;gyogyou ã—ã‚…ã†ã®ã†;shuunou ã˜ã‚…りã¤;juritsu ãŽã‚‡ã†ã›ã„;gyousei ã¯ã‚“ã«ã‚“;hannin ã‘ã‚“ã›ã¤;kensetsu ã‘ã‚“ã¡ã;kenchiku ã²ã‚Šã‚‡ã†;hiryou ã˜ã’ã‚“;jigen ã˜ã—ã‚“;jishin ã¯ã£ã¦ã‚“;hatten ã’ã‹;geka ã—ょã¨ã;shotoku ã‘ã„ã;keiki ã˜ã‚…ã†ã‚ˆã†;juuyou ã²ã‚‡ã†ã‚ã‚“ã‹;hyouronka ã„らã„;irai ã²ã¦ã„;hitei ã˜ã˜ã¤;jijitsu ã‚ã„ã˜ã„ã—ã‚“;meijiishin ã‹ã„ã‹ã;kaikaku ã“ã†ãょ;koukyo ã›ã£ã—ょã†;sesshou ãã;kiso ã›ã‚“ã§ã‚“;senden ã¾ã‚“ã‹ã„;mankai よã†ã¡ãˆã‚“;youchien ã“ã†ãã‚…ã†;koukyuu ã—ょããŸããˆã‚“;shokutakuen ã“ã†ã’ã;kougeki りãˆã;rieki ã¤ã„ãã‚…ã†;tsuikyuu ã²ã‚ˆã†;hiyou ã‹ã„ãŸã;kaitaku ã‘ã„ãŸã„;keitai ãã—ょã†;kishou ã“んらん;konran ã˜ã‚‡ã†ã‚„ã;jouyaku ã˜ã‘ã‚“;jiken ã„ã“ã†;ikou ã‹ã„ã¨ã†;kaitou ã‘ã„ã‚„ã;keiyaku ãã;kiso ãょã‹;kyoka ã¨ã†ãŽ;tougi ã—ã‚“ã•ã¤;shinsatsu ã—ã‚…ã‚‹ã„;shurui ãã‘ã‚“;kiken ã›ã‚“ã·ã†ã;senpuuki ã«ã»ã‚“ã—ã‚…;nihonshu ã—りã¤;shiritsu ã™ã†ãŒã;suugaku ã—ã‚…ã•ã„;shusai ã¦ã„ã‹;teika ãんゆã†;kin_yuu ã—ã;shiki よã†ã•ã‚“;yousan よã•ã‚“;yosan ãã†ã•ã;sousaku ã¨ã†ã¡ã‚ƒã;touchaku れんã½ã†;renpou ã“ã‚“ãªã‚“;konnan ã—んりん;shinrin ã¨ã£ã±;toppa ãŠã›ã‚“;osen ã‚‹ã„ãžã†;ruizou ã¨ã†ã²ã‚‡ã†;touhyou ã®ã†ã‚Šã¤;nouritsu ãœã‚“ã—ょã†;zenshou ã•ã„ãŒã„;saigai ã•ã„ã‹ã„;saikai ã‚ã„ã‘ã‚“;aiken ãã‚“ãŽã‚‡ã°ã¡;kingyobachi ã›ã£ãょã;sekkyoku ãœã£ãŸã„;zettai ã—ã‚…ã†ã—ょã;shuushoku ãŸã„ã©;taido りゅã†ãŒã;ryuugaku ãŠã†ã—ã‚…ã†;oushuu ãã›ã¤;kisetsu ベース;beesu ã¸ããˆã;hekieki ãºã“ãºã“;pekopeko ベスト;besuto ベストセラー;besutoseraa ã¸ã ãŸã‚‹;hedataru ã¸ã‚Š;heri ã¸ã‚Šãã ã‚‹;herikudaru ã¸ã‚‹;heru ã¹ã‚“ã‹ã„;benkai ã¸ã‚“ã‹ã;henkaku ã¸ã‚“ã‹ã‚“;henkan ã¹ã‚“ãŽ;bengi ã¸ã‚“ã‘ã‚“;henken ã¹ã‚“ã”;bengo ã¸ã‚“ã•ã„;hensai ã¹ã‚“ã—ょã†;benshou ã¸ã‚“ã›ã‚“;hensen ã¸ã‚“ã¨ã†;hentou ã¸ã‚“ã©ã†;hendou ã¹ã‚“ã‚ã‚“;benron ã»;ho ã»ã„ã;hoiku ボイコット;boikotto ãƒã‚¤ãƒ³ãƒˆ;pointo ã»ã†ã‚ã‚“;houan ã¼ã†ãˆã„;bouei ã¼ã†ã‹;bouka ã»ã†ã‹ã„;houkai ã¼ã†ãŒã„;bougai ã»ã†ãŒã;hougaku ã»ã†ã‘ã‚“;houken ã»ã†ã•ã;housaku ã»ã†ã•ã;housaku ã»ã†ã—;houshi ã»ã†ã—ã;houshiki ã»ã†ã—ゃ;housha ã»ã†ã—ゃã®ã†;houshanou ã»ã†ã—ã‚…ã†;houshuu ã»ã†ã—ã‚…ã¤;houshutsu ã»ã†ã˜ã‚‹;houjiru ã»ã†ãšã‚‹;houzuru ã¼ã†ã›ã;bouseki ã¼ã†ãœã‚“;bouzen ã»ã†ã¡;houchi ã¼ã†ã¡ã‚‡ã†;bouchou ã»ã†ã¦ã„;houtei ã»ã†ã©ã†;houdou ã¼ã†ã¨ã†;boutou ã„ã‚‚ã†ã¨;imouto ã•ã‚“ã«ã‚“;sannin ã‘ã„ã–ã„;keizai ãŒãã¶;gakubu ã‘ã„ã–ã„ãŒãã¶;keizaigakubu ã•ã‚“ã­ã‚“ã›ã„;sannensei ã›ã‚“ã‚‚ã‚“;senmon ã—;shi ã‚ã—ã‚ã”;roshiago アジア;ajia ã„ã¡ã­ã‚“ã›ã„;ichinensei ã“ã†ã“ã†ã›ã„;koukousei らã„ã­ã‚“;rainen ã«ã‚…ã†ãŒã;nyuugaku ã«ã‚…ã†ãŒãã™ã‚‹;nyuugakusuru ã‚ã•ã”ã¯ã‚“;asagohan ãŸã¹ã‚‹;taberu コーヒー;koohii ã™ãã ;sukida ãらã„ã ;kiraida ã“ã†ã¡ã‚ƒ;koucha ã²ã‚‹ã”ã¯ã‚“;hirugohan ã—ょãã©ã†;shokudou ã°ã‚“ã”ã¯ã‚“;bangohan ã©ã‚ˆã†ã³;doyoubi よる;yoru ã¨ãã©ã;tokidoki ãã‚‹;kuru ã¯ãªã—ã‚ã†;hanashiau ã«ã¡ã‚ˆã†ã³;nichiyoubi テレビ;terebi ã¿ã‚‹;miru ラジオ;rajio ãã;kiku ã—ã‚…ã†ã¾ã¤;shuumatsu ããŒã¤;kugatsu ã‚ã•;asa ã°ã‚“;ban ã„ã¡ã˜ã¯ã‚“;ichijihan ã ã„ã•ã‚“ã‹;daisanka ã¾ã„ã‚ã•;maiasa ãã‚“ãª;sonna ã„ã‹ãªã‚‹;ikanaru ãŠãŠããª;ookina ã¡ã„ã•ãª;chiisana ãŠãˆã‚‹;oeru ãŠã¿ã‚„ã’;omiyage ã«ã»ã‚“ã¦ãã ;nihontekida ã»ã—ã„;hoshii ã¨ãã¡ã‚‡ã†;tokuchou ã¿ã‚“ã’ã„;mingei ã»ã†ãµã ;houfuda ã¡ã‹ã©ã†;chikadou ãã®ã¾ã¾;sonomama ã¡ã‹;chika よã†;you ã‹ã¦ã„よã†ã²ã‚“;kateiyouhin ãµã˜ã‚“;fujin ã„ã£ã±ã„ã ;ippaida ãã“;soko ã¨ãŠã‚Šã¬ã‘ã‚‹;toorinukeru エスカレーター;esukareetaa アクセサリー;akusesarii ãƒãƒ³ãƒ‰ãƒãƒƒã‚°;handobaggu ãƒãƒ³ã‚«ãƒ;hankachi ベルト;beruto ãã†ã—ã‚“ã;soushingu ã‚„ãã²ã‚“;yakuhin ã‘ã—ょã†ã²ã‚“;keshouhin ã†ã‚Šã°;uriba ã—ã‚“ã˜ã‚…;shinju ãƒãƒƒã‚¯ãƒ¬ã‚¹;nekkuresu ãã®ã‹ã‚りã«;sonokawarini ã˜ã‚‡ã†ã²ã‚“ã ;jouhinda ã™ã¦ãã ;sutekida ãã¬;kinu スカーフ;sukaafu ã‚ã‹;aka ãã„ã‚;kiiro ã¿ã©ã‚Šã„ã‚;midoriiro デザイン;dezain ã¤ã¤ã‚€;tsutsumu ã«ã€ã•ã‚“ã·ã‚“;ni_sanpun ブルー;buruu ãŠã‚Œã‚“ã˜ã„ã‚;orenjiiro リボン;ribon ã‚€ã™ã¶;musubu ã¯ã“;hako スカート;sukaato ブラウス;burausu スーツ;suutsu コート;kooto パンタロン;pantaron サイズ;saizu よã†ãµã;youfuku ãã˜;kiji ã•ã‚“ã‹ã„;sankai ã—ã‚“ã—;shinshi ã—ãŸãŽ;shitagi ãã‚‚ã®;kimono ãŠã³;obi ã‚;me ã†ã¤ã‚‹;utsuru ãˆã‚“ã´ã¤;enpitsu ã‘ã—ã”ã‚€;keshigomu ãŒãよã†ã²ã‚“;gakuyouhin ã¾ã‚“ã­ã‚“ã²ã¤;mannenhitsu ボールペン;boorupen ã˜ã‚€ã‚ˆã†ã²ã‚“;jimuyouhin カメラ;kamera ã¡ã‚…ã†ãŒãã›ã„;chuugakusei ã“ã‚“ã–ã¤;konzatsu ã“ã‚“ã–ã¤ã™ã‚‹;konzatsusuru ã»ã†ã›ã;houseki ããã‚“ãžã;kikinzoku ã‹ã;kaku ã—ã‚“ã‚‹ã„;shinrui ãŠãŠã‚ˆã‚ã“ã³ã ;ooyorokobida ã¨ã†ã»ã;touhoku ã¨ã†ã»ãã¡ã»ã†;touhokuchihou ã“ã‘ã—ã«ã‚“ãŽã‚‡ã†;kokeshiningyou ã‹ã‚ã„らã—ã„;kawairashii ã«ã™ã‚‹;nisuru ã—ょã•ã„;shosai ã‹ã–ã‚‹;kazaru ã‚‚ã£ã¦ãã‚‹;mottekuru ã“ã‘ã—;kokeshi ã§ã”ã–ã„ã¾ã™;degozaimasu ã”ã–ã„ã¾ã›ã‚“;gozaimasen ã™ã“ã—ãŠã¾ã¡ãã ã•ã„;sukoshiomachikudasai コーヒースタンド;koohiisutando ã²ã¨ã¤;hitotsu ãµãŸã¤;futatsu ã¿ã£ã¤;mittsu よã£ã¤;yottsu ã„ã¤ã¤;itsutsu ã‚€ã£ã¤;muttsu ã‚„ã£ã¤;yattsu ã“ã“ã®ã¤;kokonotsu ã¨ãŠ;too ã²ã;hiki ã»ã‚“;hon ã‘ã‚“;ken ã ã„;dai ã;ki ã¯ã„;hai ã¤ã†;tsuu ã“;ko ã‚;wa ã¨ã†;tou ãã†;sou ã›ã;seki りょã†;ryou ã¡ã‚ƒã;chaku ãã;soku ã„ã¤ã‹;itsuka ã«ã˜ã‚…ã†ãã«ã¡;nijuukunichi ã¦ã‚“ã®ã†;tennou ã¿ã£ã‹;mikka ã‘ã‚“ã½ã†;kenpou ãã­ã‚“;kinen ãã­ã‚“ã™ã‚‹;kinensuru ãã­ã‚“ã³;kinenbi ã“ã†ãã‚…ã†ã³;koukyuubi ã„ã®ã†ãˆ;inoue ã‚„ãã—ょ;yakusho ã¯ãªã‚„;hanaya よる;yoru ã—ã‚;shiro カーãƒãƒ¼ã‚·ãƒ§ãƒ³;kaaneeshon ãŠã‹ã—ã‚„;okashiya ãƒãƒ§ã‚³ãƒ¬ãƒ¼ãƒˆ;chokoreeto ã²ã¨ã¯ã“;hitohako ã¨ã†ã‚ˆã“ã›ã‚“;touyokosen ã§ã‚“ãˆã‚“ã¡ã‚‡ã†ãµ;den_enchoufu ã¿ã¡ã˜ã‚…ã‚“;michijun ã¿ã›ã‚‹;miseru ã¿ã¡;michi ãŸãšã­ã‚‹;tazuneru ã§ãã¡;deguchi ã¿ã¤ã‘ã‚‹;mitsukeru ã‚ã¾ã‚Š;amari ã‚ã—;ashi ã¾ã¤;matsu ã¿ã”ã¨ã ;migotoda ã†ã‚ã‚‹;uwaru ã„りãã¡;iriguchi ã‚‚ã‚“;mon ã“ãˆ;koe ã“ãˆã‚’ã‹ã‘ã‚‹;koewokakeru ã¨ã¤ãœã‚“;totsuzen ã„ã¬;inu ã’ã‚“ã‹ã‚“;genkan ã»ãˆã‚‹;hoeru ã¨ã³ã‚‰;tobira ã‚ã‚“ã—ã‚“;anshin ã‚ã‚“ã—ã‚“ã™ã‚‹;anshinsuru ã­ã“;neko ã¨ã‚Š;tori ã“ã¨ã‚Š;kotori ã‹ã†;kau ã‚らã†;warau ã—ょãã¶ã¤;shokubutsu ã†ãˆã‚‹;ueru ãã ã¦ã‚‹;sodateru ãã¤;kutsu ã¬ã;nugu ã‚€ã™ã“;musuko ã‚€ã™ã‚;musume ãŠã˜ã‚‡ã†ã•ã‚“;ojousan ã¨ã—;toshi ã†ãˆã®;ueno ã©ã†ã¶ã¤ãˆã‚“;doubutsuen パンダ;panda ã¡ã‚‡ã†ãã¦ãã ;choukitekida ã“ã£ã‹ã‘ã„ã‹ãã‘ã„ã–ã„;kokkakeikakukeizai ã™ã™ã‚ã‚‹;susumeru ãã;kiki インフレ;infure ã˜ã¤ã’ã‚“;jitsugen ã˜ã¤ã’ã‚“ã™ã‚‹;jitsugensuru ãŠã„ã§ã«ãªã‚‹;oideninaru ã“ã†ã•ããã‹ã„;kousakukikai ã¼ã†ã›ããã‹ã„;bousekikikai ã¡ã‚“ãŽã‚“;chingin ãŠã¯ãªã—ã‚’ã†ã‹ãŒã†;ohanashiwoukagau ãŠãŸãšã­ã™ã‚‹;otazunesuru ã¤ã”ã†;tsugou ã¤ã”ã†ã‚’ã¤ã‘ã‚‹;tsugouwotsukeru ã‘ã„ã²ã‚“ã¡ãŸã„;keihinchitai ã˜ãã;jisoku ã¯ã‚„ã•;hayasa ã’ã—ゃ;gesha ã’ã—ゃã™ã‚‹;geshasuru ãŠã‚“ãªã®ã“;onnanoko ã²ã¨ã‚Šã‚€ã™ã‚;hitorimusume ã ã„ãらã„ã ;daikiraida ãŠã¨ã“ã®ã“;otokonoko ã‚ãらã‚ã‚‹;akirameru ã“ã¼ã™;kobosu ãŠã°;oba ã‘ã‚“ãã‚…ã†ã˜ã‚‡;kenkyuujo ã‘ã‚“ãã‚…ã†ã„ã‚“;kenkyuuin ã°ã‹ã‚Šã™ã‚‹;bakarisuru ã‚;wa ã®;no ã™ã‚‹ã¨;suruto ã—んゆã†;shin_yuu ã ã„ã˜;daiji ã ã„ã˜ã ;daijida ãµã“ã†;fukou ãµã“ã†ã ;fukouda ã¿;mi むらã‹ã¿;murakami ã‚„ã¾ãŒãŸã‘ã‚“;yamagataken ã¾ãšã—ã„;mazushii ã¡ã‚‡ã†ãªã‚“;chounan ã¶ã£ã—ã¤ã¦ãã ;busshitsutekida ã›ã„ã•ã;seisaku ã“ã†ãµã;koufuku ã‘ã£ã¦ã‚“;ketten ã“ã†ã›ã„ã—ょã†;kouseishou ã“ã†ãˆã„;kouei りんã˜;rinji ãŽã‚ƒãã¦ã‚“;gyakuten ã—ã•ã¤;shisatsu ã¼ãã—;bokushi ã‚ãã¾;akuma よã†ã„ãª;youina ã„ã„ã‚“ã‹ã„;iinkai ã¦ã‚“ã˜ã‚‡ã†;tenjou ã¯ã¡ã˜ã‚‡ã†;hachijou ã©ãã›ã‚“;dokusen ã‹ã„ã•ã¤ãã¡;kaisatsuguchi ã—ã¤ã‚Œã‚“;shitsuren ã‹ã‚“ã”ãµ;kangofu ã›ã‚“ã“ã†;senkou ã¦ã¤ãŒã;tetsugaku ã‹ã‚“ã’ã„;kangei ã„ã£ã›ã;isseki ã¯ã„ã‘ã„;haikei ã‹ã‚“ã˜ã‚ƒ;kanja ãã‚“ã¡ã‚‡ã†;sonchou ã˜ã”ã;jigoku ã›ã„れã„;seirei ãˆã‚“ã‹ã„;enkai ã“ã†ã—;koushi ã»ã†ã—ã‚“;houshin ã¯ãã¼ã;hakuboku ã¡ã‚“ã‚‚ã;chinmoku ã—ゅりょã†;shuryou ã©ã‚Œã„;dorei ã‚‚ã†ã‘ã‚“;mouken ã„ã‚“ã•ã¤;insatsu ãŒã‚“ã›ã;ganseki ã ã‚“ã¼ã†;danbou ã‹ã‚“ã·ã†;kanpuu ã›ããŸã‚“;sekitan ã—ã£ã‘;shikke ã—ã‚“ã¨ã†;shintou ã‹ãã˜ã¤;kakujitsu ããŽã‚‡ã†;kigyou ã•ã‚“ã›ã„;sansei ã›ã„ã‚ã„;seimei ã—ゃã£ã‹ã‚“;shakkan ã—ã˜;shiji ã—ã£ã“ã†;shikkou ã—ょã¶ã‚“;shobun ã—ょã†ã«ã‚“;shounin ã—ょãžã;shozoku ãŸã„ã—ã‚…ã†;taishuu ã¯ã‚“ã¡ã‚‡ã†;hanchou ã™ã„ã›ã‚“;suisen ゆã†ã‹ã„;yuukai ã†ã‚ˆã;uyoku れんãžã;renzoku ã‘ã„ã“ã†;keikou ã¯ã‘ã‚“;haken ã—ょã†ã‹ã›ã‚“;shoukasen ã—ょã†ã ã;shoudaku ã¯ã„ã›ã;haiseki ã™ã¦ã;suteki ã—ã‚…ã†ã’ã;shuugeki ゆã„ã”ã‚“;yuigon ãŸã‚“ã¦ã„;tantei ã“ã†ã¦ã„;koutei ã˜ã‚…ã‚“ã³;junbi ã—ã‚…ã†ã‚Š;shuuri ã•らã„ã­ã‚“;sarainen ãんれん;kunren ãã“ã;kikoku ã¸ã„ãŸã„;heitai ゆã†ã˜ã‚“;yuujin ã„ã¿ã‚“;imin ã ã¨ã†;datou ã—ã‚“ã“ã†;shinkou ã—ã‚…ã†ã˜ã‚“;shuujin ã’ã„ã®ã†ã‹ã„;geinoukai ã’ãŸ;geta ã‚€ã ;muda ãˆããŸã„;ekitai ã˜ã‚ƒãã«ããょã†ã—ょã;jakunikukyoushoku ã³ã—ょã†;bishou ã“ãã˜;kokuji ã¹ã„ã“ã;beikoku ã°ãã—ã‚…;bakushu ã’ã‚“ãã‚“;genkin りゅã†ã•ã‚“;ryuusan ã²ã‚‡ã†ã–ã‚“;hyouzan ゆã†ã;yuuki ã ã„ã„ã£ã‹ã‚“;daiikkan ã“ã†ãŸã‚“ã•ã„;koutansai ã¨ããŒã‚ã˜ã ã„;tokugawajidai ã°ã„ã—ã‚…ã‚“;baishun ゆã†ã˜ã‚‡;yuujo ã—ã‚“ãã†;shinsou ã”ãã²;gokuhi ããžã;kizoku ã‘ã£ã±ã;keppaku ã³ãŠã‚“;bion ãã‚…ã†ãã;kyuusoku ã˜ã‚“ã‘ã‚“;jinken ã¨ã†ã¿ã‚“;toumin ã©ã†ãŒã‚“;dougan ã‘ã£ãょã˜ã‚“;kekkyojin ã„んりょã;inryoku ã‹ã‚“ã“ã‚“ãã†ã•ã„;kankonsousai ã“ã†ãµã‚“;koufun ã„ã¡ã‚‡ã†;ichou ã‹ã„ã‹ã¤;kaikatsu ã²ã‚ã„;himei ãょãã›ã¤;kyokusetsu ã—ã‚…ã†ã„;shuui ã„ã˜ã‚‡ã†;ijou ã•ã¹ã¤;sabetsu ã“ã†ã²ã‚‡ã†;kouhyou よã‹;yoka ãŸã„ã“ã;taikoku ã¨ã†ã‚;toua ã—ã—ょã†;shishou ãŠãã˜ã‚‡ã†ãŠãã‚’ã‹ã™ã‚‹;okujouokuwokasuru ã¸ã‚“;hen ã‘ã„ã²ã‚“ã›ã‚“;keihinsen ã›ã„ã‹ã‚“;seikan ã¨ã«ã‹ã;tonikaku ã›ãã¯ã‚“;sekihan ã“ã†ã¯ã‚“;kouhan らã£ã‹ã‚“ã—ã‚…ãŽ;rakkanshugi ã¹ã‚“ãŽã—ã‚…ãŽ;bengishugi ãょã†ã‚‰ãã—ã‚…ãŽ;kyourakushugi ゆã„ã¶ã¤ã‚ã‚“;yuibutsuron ã¤ã‚„;tsuya ã«ã»ã‚“ã¨ã†;nihontou ã›ã‚“ã˜ã‚‡ã†ã®ãŸã‚“;senjounotan ã©ãã—ょãょã†;dokushokyou ã˜ã‚‚ã;jimoku ã•ã£ãã;sassoku ãã†ãã†;sousou ãã†ãã†;sousou ã’ã“;geko ã˜ã‚‡ã†ã”;jougo ã¯ãã¡ã‚‡ã†;hakuchou ã“ã†ã‚ˆã†;kouyou ã°ã‹;baka ã„ã‚“ã—ょã;inshoku ãªã‚“ã¼ã;nanboku ã†ã‚“ã™ã„;unsui ã˜ã™ã„;jisui ã˜ã‚‡ã•ã„ãªã„;josainai ã“ã†ã‘ã¤ã‚ã¤;kouketsuatsu ãŽã—;gishi ã˜ã˜ã‚‡ã†ã˜ã°ã;jijoujibaku ã‹ãã›ã„ã–ã„;kakuseizai ã»ã†ãŠã†;houou ã˜ã‚…ã‚“ã½ã†ã™ã¨;junpousuto ã²ãŽã‚‡ã†;higyou ãµãã ã‘;fukudake ãã©ã†ã«ã®ã‚‹;kidouninoru ã‹ã„ãžãã°ã‚“;kaizokuban ãã‚“ã–ã„りゆã†;sonzairiyuu ã“ã†ã”ã†ã¸ã„ã‹;kougouheika ãŒã˜ã‚‡ã†;gajou ãã˜ã‚…;kiju ã¯ã„ã‘ã„;haikei ã ã‚“ãŒã‚“れã£ã—ゃ;danganressha ã™ã„ã§ã‚“;suiden ãょã†ã¿ã—ã‚“ã—ã‚“ã™ã‚‹;kyoumishinshinsuru ã›ã£ã—ょã;sesshoku ãã—ょã†;kishou ã¦ã‚“ã“;tenko ãµã‚Šã‚‡ã;furyoku ã—ã‚…ã†ã„ã¤ãª;shuuitsuna ã»ã†ã›ã;houseki ã„ã‚ã¤ã¦ããª;iatsutekina ã‚ã‚“ã‹;menka ãŸã„ã“ã°ã‚“;taikoban ã‚ãã—ã‚…;akushu ã‚ãã—ã‚…ã†;akushuu ã¡ã‚‡ã†ã§ã‚“;chouden ã¯ã‚“ã—ょã†;hanshou ã¾ã¦ã‚“ã‚ã†;matenrou ã‚ã„よãょã†ã˜ã‚…;meiyokyouju ã‘ã£ã•ã;kessaku ã˜ã‚…ã†ã„;juui ãŸã‚“れん;tanren ã˜ã•ã¤ã¿ã™ã„;jisatsumisui ã‹ã„ã¯ãã—ょã;kaihakushoku ã”ã†ã‚†ã†ã™ã‚‹;gouyuusuru ãµã†ã‚Šã‚“;fuurin ã¡ã‚‡ã†ã¡ã‚‡ã†ãµã˜ã‚“;chouchoufujin ã¡ã¡;chichi ãŸã‚“ãŸã‚“;tantan りゅã†ã‚Šã‚…ã†;ryuuryuu ã ããŠã‚“;dakuon ã›ã‚“りゅã†;senryuu ã—ã¤ã‚‹ã„;shitsurui ã‚ã†ãã‚…ã†;roukyuu ã¨ã‚;toro ã•ã£ãã‚“;sakkin ã—ã“ã‚“;shikon らãらã„;rakurai ã“ã†ãŠã¤ã¸ã„ã¦ã„;kouotsuheitei ã„ã¡ã‚‚ã†ã ã˜ã‚“;ichimoudajin ãã‚“ã«ãã‚ã†ã©ã†;kinnikuroudou ã„ã£ã—ょãããã¯ã¤;isshokusokuhatsu ã²ã‘ã‚“;hiken ã‘ã¤ã‚‹ã„;ketsurui ãょã†ã•ã„ã‹;kyousaika ã—ã¡ã‚„;shichiya ãŸã„ã™ã„;taisui ã‹ã‚“ã“ã¤ã ã£ãŸã„ã™ã‚‹;kankotsudattaisuru ã—ã£ã“ã;shikkoku ã™ã„ã¨ã†;suitou ã‹ã‚“ã•ã‚“ã—ã‚“ãã‹ã‚“;kansanshinkukan よãよã†;yokuyou ã‚ã†ã§ã‚“;rouden ã»ãã¨ã—ã¡ã›ã„;hokutoshichisei ã‹ã£ã“ã†;kakkou ã“ã‚“ãŸã‚“;kontan らんãã†;ransou ãˆã‚“;en ã’ã„ã„ã‚“ã°ã—ょã;geiinbashoku ã—ゆã†ã‚’ã‘ã£ã™ã‚‹;shiyuuwokessuru ã¨ã†ã;touki ã¨ã†ã™ã„;tousui ã‹ã‚“ã¨ã†ã—ょã†;kantoushou ãŽã—ã‚“ã‚ã‚“ã;gishin_anki ã“ã“ã†;kokou ã—ã£ã·ã†ã˜ã‚“らã„ã¦ã;shippuujinraiteki りゅã†ãš;ryuuzu ã°ã„ã—ゃãã‘ã£ã“ã‚“;baishakukekkon ã¨ã†ã»ã‚“ã›ã„ãã†;touhonseisou ãã‹ã‚“;kikan ã‘ã„ã“ã†ã§ã‚“ã¨ã†;keikoudentou ウーロンã¡ã‚ƒ;uuroncha ã‚ã‚“ã¼ã;menboku よã†ã;youki ã„ã‚“ã;inki ã‚„ãã©ã—;yakudoshi ã‹ã‚“;kan らんãŒã„;rangai ã²ã‚‡ã†ã‚Š;hyouri ゆã†ã‚ˆ;yuuyo ã¸ã„ã“ã†;heikou ã‘ã‚“ã—ã‚“;kenshin ã¡ã‚“ã¿;chinmi ãょãŽ;kyogi ã•ã“ã;sakoku ã ã‚“ãºã‚“;danpen ã²ã‚“ã©;hindo ãã†ã«ã‚…ã†;sounyuu りょã†ã¼;ryoubo ã—ã¨ã†;shitou ã˜ã‚…ã‚“ã‹ã„;junkai ãã†ã—ょã;soushoku ã›ã„ãŽã‚‡;seigyo ゆã›ã„;yusei ã‚‚ã†ãã†;mousou ã‚‚ã†ã‚‰ã™ã‚‹;mourasuru ãµã«ã‚“;funin ã®ã†ã“ã†;noukou ã“ã†ãã;kousoku ã“ã‚“ãょ;konkyo ã¨ãã—ょã;tokushoku ゆã†ãœã‚“;yuuzen ã³ã‚‡ã†ã¨ã†;byoutou ã²ã˜ã‚…ã‚“;hijun ã˜ã‚ƒã£ã‹ã‚“;jakkan ã—ゃã ã‚“;shadan ã˜ã‚‡ã†ã¯ã¤;jouhatsu ã¸ã„ã¼ã‚“;heibon ãょããŸã‚“;kyokutan ã­ã‚“ã©;nendo ã›ã‚“ã‹ã„;senkai ãŠã‚“ã‚;onwa ãã‚“ã“ã†;kinkou ã²ã‚“ã‹ã;hinkaku ã¡ã‚‡ã†ãˆã¤;chouetsu ã—ã£ã;shisso ã˜ã‚…ã†ãŸã„;juutai ã³ã—ã‚…ã†;bishuu ã“ã¡ã‚‡ã†;kochou ã—ã‚…ã¤ã˜ã‚“;shutsujin ã™ã†ã¯ã„;suuhai りんã˜ã‚“;rinjin ã›ã‚“ã›ã„;sensei ã¨ã†ã™ã„;tousui ã»ã†ã‚ˆã†;houyou ã‹ãã­ã‚“;kakunen ãŒã£ã—ã‚…ã;gasshuku ã‘ã‚“ã³ãょã†;kenbikyou ã‹ã„ã˜ã‚‡ã†;kaijou ã“ã†ã;kouso ã¦ã‚“ã·;tenpu ã°ã‚“ãã†;bansou ã˜ã‚…ã‚“ãã‚“;junkin ãょã†ã‹ã‚“;kyoukan ãã†ã©ã†;soudou ã”ã†ã‚‚ã‚“;goumon ã¾ã„ã¼ã¤;maibotsu ã›ã‚“ãŸã;sentaku ã„ã£ã¡;icchi ããŒã‚“;kigan ã¨ã†ã‚ã„;toumei ã‘ã‚“ãªã„;kennai ã‹ã‚“よã†;kan_you ã‚‚ã¯ã‚“;mohan ã˜ã‚…ã‚“ã—ょã;junshoku ã—ゃã‚ã‚“;shamen ã¡ã˜ã‚‡ã;chijoku ã—ょã†ã“;shouko ã‘ã„ã ã„;keidai ãã‚“ã±ã¤;kinpatsu ã¤ã„らã;tsuiraku ã–ã‚“ã¦ã„;zantei ãŽã‚ƒãã•ã¤;gyakusatsu ã¶ã‚“ã›ã;bunseki ã’ã£ã·;geppu ãã‚…ã†ã ã‚“;kyuudan ã›ã„ã¼;seibo ã¤ã„ã¨ã†;tsuitou ã˜ã—ゃã;jishaku ããžã†;sozou ãªã£ã¨ã†;nattou ã—ã‚“ã¾ã„;shinmai ã“ã‚“ã¡ã‚…ã†;konchuu ã—ã•;shisa ã˜ã‚“ãã†;jinguu ã•ã‚“ãŒã;sangaku ã¦ã„ãã†;teisou ã’ã‚“ã—ã‚;genshiro ã‹ãˆã‚“;kaen ã¤ã„ã›ã;tsuiseki ã ã‚‰ã;daraku よã†ã™;yousu ã«ã‚‡ã†ã¼ã†;nyoubou ã¡ã‚‡ã†ãªã‚“;chounan ã¡ãら;chikura ã¶ã‚ˆã†ã˜ã‚“;buyoujin ã³ã‚‡ã†ã©ã†;byoudou ã•ãŽã‚‡ã†;sagyou ã™ã„ã¨ã†;suitou ã—ょã†ã«;shouni ãžã†ã«;zouni ã†ã‚‚ã†;umou ã²ã‚‡ã†ã—;hyoushi ã ã‚“ã˜ã;danjiki ãã‚…ã†ã§ã‚“;kyuuden ã‹ã„ã¼ã†;kaibou ã„ã—ょã;ishoku ã“ã‚“ãã‚…ã†;konkyuu ã¸ã‚“ã›ã‚“;hensen よãã˜ã¤;yokujitsu ã‚€ã¡ã‚…ã†;muchuu ãã‚…ã†ã©ã†;kyuudou ã°ã¤ãã‚“;batsugun ã˜ã‚“ãŽ;jingi ãœã‚“ã˜;zenji ã˜ã‚“ã‚‚ã‚“;jinmon ãã†ã—ã¤;soushitsu ã‹ã—;kashi ã’ã‚“ãã†;gensou ã‹ã‚“ã‚;kanwa ãˆãã³ã‚‡ã†;ekibyou ãªã‚“ã‹;nanka ã¡ã£ãã;chissoku ã—ゃã‚ã‚“;shamen ã—ょã†ã‚Œã„ãã‚“;shoureikin ã‹ã‚“ã¼ã¤;kanbotsu ã¡ãã„ã¡;chikuichi ãã¨ã;kitoku ã©ã‚“ã¶ã¤;donbutsu ã‚„ã°ã‚“;yaban ã¡ã‚…ã†ã¦ã¤;chuutetsu ã—ã‚…ã‚“ã•ã„;shunsai ãŒã‚“ã¡ã;ganchiku ã²ã‚„ã;hiyaku ゆã†ã’ã‚“;yuugen ã‹ã£ã›ã‚“;kassen ã²ã‚ã†ãˆã‚“;hirouen ã‚ã„ã—ょã†;aishou ã˜ã‚…ã†ã¾ã‚“ãˆã‚“;juuman_en ゆã†ãŽ;yuugi ã¯ã‚ã;haaku ã–ã‚“ã“ã;zankoku ã˜ã—ã‚…ã;jishuku ã˜ã‚‡ã†ã˜ã‚…;jouju ã‚€ã»ã‚“;muhon ã•ã„ã—ょã†;saishou ãŠã›ã¡ã‚Šã‚‡ã†ã‚Š;osechiryouri ã‚ã„ã;aiso ã—ã‚…ã˜ã‚…ã†;shujuu ãŸã‚“ã–ã;tanzaku ã›ã‚“ã¼ã†;senbou ã­ã‚“ã;nengu ãょã†ã—ゃ;kyousha ã„ã£ã•ã„;issai ã™ã;suki ãã§ã‚“;kuden ãã‚“ã˜ã‚‡ã†;kinjou ã¡ã‚‡ã†ã‚‚ã‚“;choumon ã ã„ã¿ã‚‡ã†;daimyou ã’ã—;geshi ã¦ã„ã•ã„;teisai ã“んりゅã†;konryuu ã²ã‚‡ã†ã‚ã†;hyourou ããªã„ã¡ã‚‡ã†;kunaichou ゆã•ã‚“;yusan ãžã†ãŠ;zouo ã ã„ãŠã‚“ã˜ã‚‡ã†;daionjou ãã†ã—ょã†;soushou ã—ãŸã;shitaku ã†ã‚€;umu ã—ゃãã©ã†;shakudou らã„ã•ã‚“;raisan ã˜ã‚…ã¿ã‚‡ã†;jumyou ãã†ã•ã„;sousai りょã†ã—;ryoushi ãµã£ã¦ã„;futtei ã°ã¡ã‚ãŸã‚Š;bachiatari ã¶ãŽã‚‡ã†;bugyou ã‘ã­ã‚“;kenen ã‚„ãã³ã‚‡ã†ãŒã¿;yakubyougami ã“ã‚“ã›ã;konseki ã‹ã‚“ãŠã†ã‹ã„;kan_oukai ã‹ã‚“ãã‚…ã†;kankyuu ã„ã£ã—;isshi ã•ãã‚…ã†;sakyuu ã™ã„ã˜ã‚‡ã†;suijou ã‹ã‚“ã±ã‚“;kanpan ã™ã„ãã†;suisou ã—ã‚…ã†ã˜ã‚ƒã;shuujaku ã—ã‚“ãŠã†;shin_ou ã”ã†ã—ゃ;gousha ã¯ã£ã¨;hatto ã—りょã†;shiryou ã¡ã‚“;chin ã“ã†ãŸã„;koutai ã—ょã†ãžã;shouzoku ã˜ã‚‡ã›ã„;josei ã—ã‚“ã¼ã;shinboku ãã‚“ã‘ã„;kinkei ã“ã†ã‹ã;koukaku ã¯ã‚“ã–ã¤;hanzatsu ã“ãã†;kokuu ã”ã¦ã‚“;goten ã‹ã‚“ãゃã;kankyaku ã‘ã„ã¦ã;keiteki ãŽã‚‡ã†ã¦ã‚“ã™ã‚‹;gyoutensuru ã™ã„ã˜ã‚ƒã;suijaku ãã‚“ã›ã‚“;kinsen ã¯ã„ã¯ã‚“;haihan ã©ã—ゃã»ã†ã‹ã„;doshahoukai ã•ã‚“ã‹;sanka れã„ã’ã‚“;reigen ã¡ã‚‡ã†ãˆã;choueki ããŠã‚“;kuon ã•ã„ã”;saigo ã“ã†ã—;koushi ã‘ã³ã‚‡ã†;kebyou ã„ã‚“ãょ;inkyo ã¦ã‚“ã«ã‚‡;tennyo ゆã„ã—ょ;yuisho ã„ã„ã ãã ã;iidakudaku ã—ã‚“ã—ã‚“ã“ã†ã˜ã‚ƒã;shinshinkoujaku ã°ã£ã—;basshi ã„ã£ã“ã‚“;ikkon ãªã‚„;naya ãŸã„ã¼ã;taiboku ãªã‚“ã©;nando ã²ã£ã¦ã;hitteki ã¨ã¤ã‚ã‚“ãょã†;totsumenkyou ãŠã†ã‚ã‚“ãょã†;oumenkyou ã‘ã‚“ã—;kenshi ã¨ã†ã¯;touha りゅã†ã;ryuuki ã›ã„りょã†ã–ã„;seiryouzai ã©ã‚“ã¦ã‚“;donten ãŽã‚‡ã†ã¦ã‚“;gyouten ã¯ã„ã¡ã‚ƒã;haichaku ã˜ã‚…ã‚“ã½ã†;junpou ã›ã‚“ã·ãã™ã‚‹;senpukusuru ãˆã‚“ã¶ã‚“;enbun ã‹ã»ã†;kahou ã—ã‚…ã†ã¦ã„;shuutei ã¼ã†ã’ã‚“;bougen ã¸ã‚“れã„ã™ã‚‹;henreisuru ã¡ã‚…ã†ã¨ã‚“ã™ã‚‹;chuutonsuru ã¡ã‚‡ã†ã¦ã„;choutei ã„ã‚“ã¨ã;intoku ã—んりょã;shinryoku ãµã†ã;fuuki ãã©ã;kudoku ã›ã„ãょ;seikyo ã—ãŽã‚“;shigin ã„ã£ã“ã;ikkoku ã„ã£ã—ゃã;isshaku ã„ã£ãã‚“;ikkin ã˜ã˜ã‚“;jijin ã—ã‚“ã;shinku ã›ãã›ã¤;sekisetsu ãã‚…ã†ã˜;kyuuji ã“ã†ãšã‹;kouzuka ã’ã‚“ã¡;genchi ãã¨ã†ã¦ã‚“;kutouten ã—ã‚“ã‹;shinka ã—ょã†ã‚ˆã†;shouyou ã„ã¡ãªã„ã—ã˜ã‚…ã†;ichinaishijuu ã˜ã‚…ã‚“ã¼ã;junboku ã›ã¤ã‚Œã¤;setsuretsu ã¯ã‚“ã‚‚;hanmo らãã„ã‚“ãょ;rakuinkyo ã¡ã‚…ã†ã—ã‚“;chuushin ã„ã‹ã;ikaku ãŸã‚“ã›ã„;tansei ã—ょã¿ã‚“;shomin ã ã‚“ã—ゃã;danshaku ã¡ã‚…ã†ã‚ˆã†;chuuyou ã—ょã†ã«ã‚“;shounin ãˆã¾;ema ãり;kuri ã”りやã;goriyaku ã”ã‚“ãŽã‚‡ã†;gongyou ã›ã£ã—ょã†ã‹ã„;sesshoukai ããˆ;kie ã¼ã‚“ã®ã†;bonnou ã—ã‚…ãã”ã†;shukugou ã‚ãã‚„ãŠã‚“;rokuyaon ã‘ã”ã‚“ãŽã‚‡ã†;kegongyou ã’ã ã¤;gedatsu ãˆã—ã‚“;eshin ã«ãã†;nisou ã—ã‚…ãŽã‚‡ã†;shugyou ãªã‚€ã‚ã¿ã ã¶ã¤;namuamidabutsu ãŠã—ょã†;oshou ã«ã‚‡ã‚‰ã„;nyorai ã‚ã‚“ãŽã‚ƒ;angya ã—ã‚…ã˜ã‚‡ã†;shujou ãˆã¯ã¤;ehatsu ã»ã£ã—ã‚“;hosshin ã›ã£ã—ã‚…;sesshu ã“ã†ã¼ã†ã ã„ã—;kouboudaishi ã‹ãりã¤;kakuritsu ãŒãれã;gakureki ã‹ã‘;kake ã‹ã‘;kake ã‹ã‘;kake ãŒã‘;gake ã‹ã‘ã‚ã—;kakeashi ã‹ã‘ã„;kakei ã‹ã‘ã£ã“;kakekko ã‹ã‘ã‚‹;kakeru ã‹ã‘ã‚‹;kakeru ã‹ã“ã†;kakou ã‹ã”ã†;kagou ã‹ã•ã°ã‚‹;kasabaru ã‹ã•ã‚€;kasamu ã‹ã˜ã‚‡ã†ãŒã;kajougaki ã‹ã—ら;kashira ã‹ã™ã‹;kasuka ã‹ã™ã‚€;kasumu ã‹ã™ã‚‹;kasuru ã‹ã›ã„;kasei ã‹ã›ã;kaseki ã‹ã›ã‚“;kasen ã‹ã›ã‚“;kasen ã‹ã;kaso ã‹ãŸ;kata ã‹ã ã„;kadai ãŒãŸã„;gatai ã‹ãŸã“ã¨;katakoto ã‹ãŸã¥ã‘;kataduke ã‹ãŸã‚€ã‘ã‚‹;katamukeru ã‹ãŸã‚ã‚‹;katameru ã‹ãŸã‚ら;katawara ã‹ã ã‚“;kadan ã‹ã¡ã;kachiku ã‹ã¤;katsu ã‹ã£ã;kakki ãŒã£ãり;gakkuri ãŒã£ã—ょã†;gasshou ãŒã£ã—り;gasshiri ãŒã£ã¡;gacchi ãŒã£ã¡ã‚Š;gacchiri ã‹ã¤ã¦;katsute ã‹ã£ã¦;katte カット;katto ã‹ã£ã±ã¤;kappatsu カップ;kappu ãŒã£ãºã„;gappei カテゴリー;kategorii ã‹ãªã†;kanau ã‹ãªãˆã‚‹;kanaeru ã‹ãªã¥ã¡;kanaduchi ã‹ãªã‚ãªã„;kanawanai ã‹ã«ã‚…ã†;kanyuu ã‹ã­ã¦;kanete ã‹ã°ã†;kabau ã‹ã¶ã—ã;kabushiki ã‹ã¶ã‚Œã‚‹;kabureru ã‹ãµã‚“;kafun ã‹ã¸ã„;kahei ã‹ã¾ãˆã‚‹;kamaeru ã‹ã¿;kami ã‹ã¿ã¤;kamitsu ã‹ã¿ãã‚‹;kamikiru カムãƒãƒƒã‚¯;kamubakku カメラマン;kameraman ã‹ã‚†;kayu ã‹ã‚‰ã ã¤ã;karadatsuki ã‹ã‚‰ã‚€;karamu ã‹ã‚Š;kari ã‹ã‚Š;kari ã‹ã‚Šã«;karini カルテ;karute カレー;karee ガレージ;gareeji ã‹ã‚ã†;karou ã‹ã‚ã†ã˜ã¦;karoujite ã‹ã‚ã™;kawasu ã‹ã‚ã‚‹ãŒã‚ã‚‹;kawarugawaru ã‹ã‚“;kan ã‹ã‚“;kan ã‹ã‚“;kan ãŒã‚“;gan ã‹ã‚“ã„;kan_i ã‹ã‚“ãŒã„;kangai ãŒã‚“ã‹;ganka ãŒã‚“ãã‚…ã†;gankyuu ãŒã‚“ã;gangu ã‹ã‚“ã‘ã¤;kanketsu ã‹ã‚“ã’ã‚“;kangen ã‹ã‚“ã”;kango ã‹ã‚“ã”;kango ãŒã‚“ã“;ganko ã‹ã‚“ã“ã†;kankou ã‹ã‚“ã“ã†;kankou ã‹ã‚“ã“ã;kankoku ã‹ã‚“ã•ã‚“;kansan ã‹ã‚“ã—;kanshi ã‹ã‚“ã—ã‚…ã†;kanshuu ã‹ã‚“ã—ã‚…ã†;kanshuu ãŒã‚“ã—ょ;gansho ã‹ã‚“ã—ょã†;kanshou ãŒã‚“ã˜ã‚‡ã†;ganjou ã‹ã‚“ã—ょã;kanshoku ã‹ã‚“ã˜ã‚“;kanjin ã‹ã‚“ã˜ã‚“;kanjin ã‹ã‚“ã›ã„;kansei ã‹ã‚“ãœã„;kanzei ãŒã‚“ã›ã;ganseki ã‹ã‚“ã›ã‚“;kansen ã‹ã‚“ã›ã‚“;kansen ã‹ã‚“ã;kanso ã‹ã‚“ã¦ã‚“;kanten ã‹ã‚“ã©;kando カンニング;kanningu ãŒã‚“ã­ã‚“;gannen ã‹ã‚“ã¶;kanbu ã‹ã‚“ãºã;kanpeki ã‹ã‚“ã¹ã‚“;kanben ã‹ã‚“むりょã†;kanmuryou ã‹ã‚“ゆã†;kan_yuu ã‹ã‚“よ;kan_yo ã‹ã‚“よã†;kan_you ãŒã‚“らã„;ganrai ã‹ã‚“らん;kanran ã‹ã‚“りょã†;kanryou ã‹ã‚“れã„;kanrei ã‹ã‚“れã;kanreki ã‹ã‚“ã‚ã;kanroku ã‹ã‚“ã‚;kanwa ãŽã‚ã‚“;gian ããŒã„;kigai ãã‹ã;kikaku ãã‹ã;kikaku ãã‹ã–ã‚‹;kikazaru ããŒã­;kigane ããŒã‚‹;kigaru ãã‹ã‚“;kikan ãã‹ã‚“;kikan ãã;kiki ããã¨ã‚Š;kikitori ããã‚;kikime ããょã†;kikyou ãŽãょã;gikyoku ããã‚“;kikin ãã’ã;kigeki ãŽã‘ã¤;giketsu ãã‘ã‚“;kiken ãã’ã‚“;kigen ãã“ã†;kikou ãã“ã‚“;kikon ãã–;kiza ãã•ã„;kisai ãã–ã—;kizashi ãã—ã¤;kishitsu ãã˜ã¤;kijitsu ãã—ã‚€;kishimu ãŽã˜ã©ã†;gijidou ãã˜ã‚…ã¤;kijutsu ãã—ょã†;kishou ããšã;kizuku ããšã¤ã;kizutsuku ããšã¤ã‘ã‚‹;kizutsukeru ãã›ã„;kisei ãŽã›ã„;gisei ãã›ã‚“;kisen ããžã†;kizou ãŽãžã†;gizou ããžã;kizoku ãŽã ã„;gidai ããŸãˆã‚‹;kitaeru ãã ã¦;kidate ã‚;a ã‚ã„ãã†;aisou ã‚ã„ã ãŒã‚‰;aidagara ã‚ã„ã¾;aima ã‚ãˆã¦;aete ã‚ãŠã;aogu ã‚ã‹;aka ã‚ã‹ã˜;akaji ã‚ã‹ã™;akasu ã‚ã‹ã‚‰ã‚€;akaramu ã‚ãŒã‚Š;agari ã‚ãらã‚;akirame ã‚ã;aku アクセル;akuseru ã‚ãã©ã„;akudoi ã‚ã”;ago ã‚ã“ãŒã‚Œ;akogare ã‚ã•;asa ã‚ã–;aza ã‚ã•ã¾ã—ã„;asamashii ã‚ã–ã‚€ã;azamuku ã‚ã–ã‚„ã‹;azayaka ã‚ã–ã‚らã†;azawarau ã‚ã—ã‹ã‚‰ãš;ashikarazu ã‚ã˜ã‚ã„;ajiwai ã‚ã›ã‚‹;aseru ã‚ã›ã‚‹;aseru ã‚ãŸã„;atai ã‚ãŸã„ã™ã‚‹;ataisuru ã‚ãŸã‚Š;atari ã‚ã£ã‹;akka ã‚ã¤ã‹ã„;atsukai ã‚ã£ã‘ãªã„;akkenai ã‚ã£ã•り;assari ã‚ã£ã›ã‚“;assen ã‚ã£ã¨ã†;attou ã‚ã£ã±ã;appaku アップ;appu ã‚ã¤ã‚‰ãˆã‚‹;atsuraeru ã‚ã¤ã‚Šã‚‡ã;atsuryoku ã‚ã¦;ate ã‚ã¦;ate ã‚ã¦ã˜;ateji ã‚ã¦ã‚‹;ateru ã‚ã¨ã¤ãŽ;atotsugi ã‚ã¨ã¾ã‚ã—;atomawashi ã‚ã¶ã‚‰ãˆ;aburae アプローãƒ;apuroochi ã‚ã¹ã“ã¹;abekobe ã‚ã¾ãˆã‚‹;amaeru ã‚ã¾ã;amagu ã‚ã¾ãã¡;amakuchi アマãƒãƒ¥ã‚¢;amachua ã‚ã¿;ami ã‚ã‚„ã¤ã‚‹;ayatsuru ã‚ã‚„ã¶ã‚€;ayabumu ã‚ã‚„ãµã‚„;ayafuya ã‚ã‚„ã¾ã¡;ayamachi ã‚ã‚„ã¾ã‚‹;ayamaru ã‚ゆã¿;ayumi ã‚ゆむ;ayumu ã‚らã‹ã˜ã‚;arakajime ã‚らã™;arasu ã‚らãã„;arasoi ã‚らãŸã¾ã‚‹;aratamaru ã‚らã£ã½ã„;arappoi アラブ;arabu ã‚られ;arare ã‚りã•ã¾;arisama ã‚りã®ã¾ã¾;arinomama ã‚りãµã‚Œã‚‹;arifureru アルカリ;arukari アルコール;arukooru アルミ;arumi アワー;awaa ã‚ã‚ã™;awasu ã‚ã‚ã›;awase アンケート;ankeeto アンコール;ankooru ã‚ã‚“ã•ã¤;ansatsu ã‚ã‚“ã–ã‚“;anzan ã‚ã‚“ã˜;anji ã‚ã‚“ã˜ã‚‹;anjiru ã‚ã‚“ã›ã„;ansei ã‚ã‚“ã®ã˜ã‚‡ã†;annojou ã„;i ã„;i ã„ã„ã‹ã’ã‚“;iikagen ã„ã„ã‚ã‘;iiwake ã„ã„ã‚“;iin イェス;yesu ã„ãˆã§;iede ã„ã‹ã™;ikasu ã„ã‹ã«;ikani ã„ã‹ã«ã‚‚;ikanimo ã„ã‹ã‚Š;ikari ã„ã;iki ã„ãŽ;igi ã„ããŒã„;ikigai ã„ãã¡ãŒã„;ikichigai ã„ãã”ã‚€;ikigomu ã„ãã›ã„;ikusei ã„ããŸ;ikuta ã„ã‘ã‚‹;ikeru ã„ã‘ã‚“;iken ã„ã“ã†;ikou ã„ã“ã†;ikou ã„ã–;iza ã„ã˜;iji ã„ã˜ã‚…ã†;ijuu ã„ã—ょã†;ishou ã„ã˜ã‚‹;ijiru ã„ã›ã„;isei ã„ã›ã;iseki ã„ãœã‚“;izen ã„ãžã‚“;izon ã„ãŸã;itaku ã„ãŸã ã;itadaki ã„ãŸã£ã¦;itatte ã„ãŸã‚ã‚‹;itameru ã„ãŸã‚ã‚‹;itameru ã„ãŸã‚ã‚‹;itawaru ã„ã¡;ichi ã„ã¡ãŒã„ã«;ichigaini ã„ã¡ã˜ã‚‹ã—ã„;ichijirushii ã„ã¡ã©ã†;ichidou ã„ã¡ã¶ã¶ã‚“;ichibubun ã„ã¡ã¹ã¤;ichibetsu ã„ã¡ã‚ã‚“;ichimen ã„ã¡ã‚‚ã;ichimoku ã„ã¡ã‚ˆã†;ichiyou ã„ã¡ã‚Šã¤;ichiritsu ã„ã¡ã‚Œã‚“;ichiren ã„ã£ã‹ã¤;ikkatsu ã„ã£ã;ikki ã„ã£ãょã«;ikkyoni ã„ã£ã‘ã‚“;ikken ã„ã£ã•ã„;issai ã„ã£ã—ã‚“;isshin ã„ã£ã;isso ã„ã£ãŸã„;ittai ã„ã£ãºã‚“;ippen ã„ã¨;ito ã„ã©ã†;idou ã„ã¨ãªã‚€;itonamu ã„ã©ã‚€;idomu ã„ãªã³ã‹ã‚Š;inabikari ã„ã®ã‚Š;inori ã„ã³ã;ibiki ã„ã¾ã•ら;imasara ã„ã¾ã ;imada ã„ã¿ã‚“;imin ã„ã‚„ã„ã‚„;iyaiya ã„ã‚„ã—ã„;iyashii ã„ã‚„ã«;iyani ã„やらã—ã„;iyarashii ã„よã;iyoku ã„りょã†;iryou ã„りょã;iryoku ã„ã‚‹ã„;irui ã„ã‚ã‚“;iron ã„ã‚“ã‹ã‚“;inkan ã„ã‚“ã;inki ã„ã‚“ãょ;inkyo インターãƒã‚§ãƒ³ã‚¸;intaachenji インターナショナル;intaanashonaru インターフォン;intaafon インテリ;interi インフォメーション;infomeeshon インフレ;infure ã†ã‹ã‚‹;ukaru ã†ã‘ã„れ;ukeire ã†ã‘ã„れる;ukeireru ã†ã‘ã¤ã;uketsugu ã†ã‘ã¤ã‘ã‚‹;uketsukeru ã†ã‘ã¨ã‚ã‚‹;uketomeru ã†ã‘ã¿;ukemi ã†ã‘ã‚‚ã¡;ukemochi ã†ã”ã;ugoki ã†ãš;uzu ã†ãšã‚ã‚‹;uzumeru ã†ãã¤ã;usotsuki ã†ãŸãŸã­;utatane ã†ã¡ã‚ã‘ã‚‹;uchiakeru ã†ã¡ãã‚‹;uchikiru ã†ã¡ã‘ã—;uchikeshi ã†ã¡ã“ã‚€;uchikomu ã†ã¡ã‚;uchiwa ã†ã¡ã‚ã‘;uchiwake ã†ã¤ã—;utsushi ã†ã£ãŸãˆ;uttae ã†ã£ã¨ã†ã—ã„;uttoushii ã†ã¤ã‚€ã;utsumuku ã†ã¤ã‚;utsuro ã†ã¤ã‚;utsuwa ã†ã§ã¾ãˆ;udemae ã†ã¦ã‚“;uten ã†ãªãŒã™;unagasu ã†ã¬ã¼ã‚Œ;unubore ã†ã¾ã‚Œã¤ã;umaretsuki ã†ã¾ã‚‹;umaru ã†ã‚€;umu ã†ã‚ã“ã‚€;umekomu ã†ã‚ã¼ã—;umeboshi ã†ã‚‰ãŒãˆã—;uragaeshi ã†ã‚Šã ã—;uridashi ã†ã‚Šã ã™;uridasu ã†ã‚‹ãŠã†;uruou ã†ã‚ã;uwaki ã†ã‚ã¾ã‚ã‚‹;uwamawaru ã†ã‚ã‚‹;uwaru ã†ã‚“ãˆã„;un_ei ã†ã‚“ã–り;unzari ã†ã‚“ãã†;unsou ã†ã‚“ã¡ã‚“;unchin ã†ã‚“ã¬ã‚“;unnun ã†ã‚“ã±ã‚“;unpan ã†ã‚“ã‚ã„;unmei ã†ã‚“ゆ;un_yu ã†ã‚“よã†;un_you ãˆ;e エアメール;eameeru ãˆã„;ei ãˆã„ã˜;eiji ãˆã„ã—ゃ;eisha ãˆã„ã›ã„;eisei ãˆã„ãžã†;eizou ãˆã„ゆã†;eiyuu ãˆã;eki ãˆã¤ã‚‰ã‚“;etsuran ãˆã‚‚ã®;emono ãˆã‚Š;eri エレガント;ereganto ãˆã‚“;en ãˆã‚“ã‹ã¤;enkatsu ãˆã‚“ãŒã‚;engawa ãˆã‚“ãŒã‚“;engan ãˆã‚“ãょã;enkyoku ãˆã‚“ã—ã‚…ã¤;enshutsu エンジニア;enjinia ãˆã‚“ã˜ã‚‹;enjiru ãˆã‚“ãšã‚‹;enzuru ãˆã‚“ã›ã‚“;ensen ãˆã‚“ã ã‚“;endan ãˆã‚“ã½ã†;enpou ãˆã‚“ã¾ã‚“;enman ãŠ;o ãŠã„ã“ã‚€;oikomu ãŠã„ã ã™;oidasu ãŠã„ã¦;oite ãŠã„ã‚‹;oiru ãŠã†;ou ãŠã†ãã‚…ã†;oukyuu ãŠã†ã”ã‚“;ougon ãŠã†ã—ã‚“;oushin ãŠã†ã¼;oubo ãŠãŠã„;ooi ãŠãŠã‹ãŸ;ookata ãŠãŠãŒã‚‰;oogara オーケー;ookee ãŠãŠã’ã•;oogesa ãŠãŠã™ã˜;oosuji ãŠãŠãžã‚‰;oozora オートマãƒãƒƒã‚¯;ootomachikku オープン;oopun オーãƒãƒ¼;oobaa ãŠãŠã¯ã°;oohaba ãŠãŠã¾ã‹ãª;oomakana ãŠãŠã¿ãš;oomizu ãŠãŠã‚„ã‘;ooyake ãŠã‹ã™;okasu ãŠã‹ã™;okasu ãŠãã³ã‚‡ã†;okubyou ãŠãらã™;okurasu ãŠãれ;okure ãŠã”ãã‹;ogosoka ãŠã“ãªã„;okonai ãŠã”ã‚‹;ogoru ãŠã•ã¾ã‚‹;osamaru ãŠã•ã¾ã‚‹;osamaru ãŠã•ã¾ã‚‹;osamaru ãŠã•ã‚“;osan ãŠã—ãˆ;oshie ãŠã—ãã‚‹;oshikiru ãŠã—ã“ã‚€;oshikomu ãŠã—ã‚€;oshimu ãŠã—よã›ã‚‹;oshiyoseru ãŠã™;osu ãŠã›ã˜;oseji ãŠãã†;osou ãŠããã¨ã‚‚;osokutomo ãŠãれ;osore ãŠãれã„ã‚‹;osoreiru ãŠã ã¦ã‚‹;odateru ãŠã¡ã“ã‚€;ochikomu ãŠã¡ã¤ã;ochitsuki ãŠã¡ã°;ochiba ãŠã¤;otsu ãŠã¤ã‹ã„;otsukai ãŠã£ã‹ãªã„;okkanai ãŠã¦ã‚ã’;oteage ãŠã©ãŠã©;odoodo ãŠã©ã™;odosu ãŠã¨ãšã‚Œã‚‹;otozureru ãŠã¨ã‚‚;otomo ãŠã¨ã‚ãˆã‚‹;otoroeru ãŠã©ã‚ã;odoroki ãŠãªã„ã©ã—;onaidoshi ãŠã®ãšã‹ã‚‰;onozukara ãŠã³ãˆã‚‹;obieru ãŠã³ãŸã ã—ã„;obitadashii ãŠã³ã‚„ã‹ã™;obiyakasu ãŠã³ã‚‹;obiru ãŠãµãã‚;ofukuro ãŠã¼ãˆ;oboe ãŠã¾ã‘;omake ãŠã¿ã‚„;omiya ãŠã‚€ã¤;omutsu ãŠã‚‚ã„ã¤ã;omoitsuki ãŠã‚‚ã‚€ã;omomuki ãŠã‚‚ã‚€ã;omomuku ãŠã‚‚ã‚“ã˜ã‚‹;omonjiru ãŠã‚‚ã‚“ãšã‚‹;omonzuru ãŠã‚„ã˜;oyaji ãŠã‚ˆã³;oyobi ãŠã‚ˆã¶;oyobu ãŠã‚Š;ori ãŠã‚Š;ori オリエンテーション;orienteeshon ãŠã‚Šã‹ãˆã™;orikaesu ãŠã‚Šã‚‚ã®;orimono ãŠã‚‹;oru ãŠã‚Œ;ore ãŠã‚ã‹;oroka ãŠã‚ãã‹;orosoka ãŠã‚“ã¶;onbu オンライン;onrain ãŠã‚“ã‚;onwa ãŒ;ga ãŒ;ga カーペット;kaapetto ã‹ã„;kai ã‹ã„;kai ãŒã„;gai ã‹ã„ã‚ã;kaiaku ã‹ã„ã†ã‚“;kaiun ãŒã„ã‹;gaika ã‹ã„ã‹ã;kaikaku ã‹ã„ãŒã‚‰;kaigara ãŒã„ã‹ã‚“;gaikan ã‹ã„ãã‚…ã†;kaikyuu ã‹ã„ãょã†;kaikyou ã‹ã„ã‘ã‚“;kaiken ã‹ã„ã”;kaigo ã‹ã„ã•ã„;kaisai ã‹ã„ã—ã‚…ã†;kaishuu ã‹ã„ã—ã‚…ã†;kaishuu ã‹ã„ã˜ã‚…ã†;kaijuu ã‹ã„ã˜ã‚‡;kaijo ãŒã„ã—ょã†;gaishou ãŒã„ã™ã‚‹;gaisuru ãŒã„ã›ã¤;gaisetsu ã‹ã„ãã†;kaisou ã‹ã„ãã†;kaisou ã‹ã„ãŸã;kaitaku ã‹ã„ã ã‚“;kaidan ã‹ã„ã¦ã„;kaitei ã‹ã„ã¦ã„;kaitei ガイド;gaido ã‹ã„ã©ã†;kaidou ãŒã„ã¨ã†;gaitou ãŒã„ã¨ã†;gaitou ガイドブック;gaidobukku ã‹ã„ã«ã‚…ã†;kainyuu ãŒã„ã­ã‚“;gainen ã‹ã„ã¯ã¤;kaihatsu ã‹ã„ã°ã¤;kaibatsu ã‹ã„ã»ã†;kaihou ã‹ã„ã¼ã†;kaibou ãŒã„らã„;gairai ã‹ã„らん;kairan ãŒã„りゃã;gairyaku ã‹ã„りゅã†;kairyuu ã‹ã„りょã†;kairyou ã‹ã„ã‚;kairo ã‹ã„ã‚;kairo ã‹ãˆã‚Šã¿ã‚‹;kaerimiru ã‹ãˆã‚Šã¿ã‚‹;kaerimiru ã‹ãŠã¤ã;kaotsuki ã‹ãŒã„;kagai ã‹ã‹ã’ã‚‹;kakageru ã‹ã‹ã¨;kakato ã‹ãã¨ã‚‹;kakitoru ã‹ãã¾ã‚ã™;kakimawasu ã‹ã;kaku ã‹ã;kaku ã‹ã;kaku ã‹ã;kaku ã‹ã;kaku ã‹ã;kaku ãŒãã’ã„;gakugei ã‹ãã•;kakusa ã‹ãã•ã‚“;kakusan ãŒãã—;gakushi ã‹ãã—ã‚…;kakushu ã‹ãã—ã‚…ã†;kakushuu ã‹ãã—ã‚“;kakushin ã‹ãã—ã‚“;kakushin ãŒãã›ã¤;gakusetsu ã‹ãã¦ã„;kakutei カクテル;kakuteru ã‹ãã¨ã;kakutoku ãŒããµ;gakufu ã‹ãã»;kakuho ã‹ãã‚ã„;kakumei ããŸã‚‹;kitaru ãã¡ã£ã¨;kichitto ãã¡ã‚‡ã†ã‚ã‚“;kichoumen ãã£ã‹ã‚Š;kikkari ãã£ã¡ã‚Š;kicchiri ãã£ã±ã‚Š;kippari ãã¦ã„;kitei ãã¦ã‚“;kiten ãã©ã†;kidou ãŽã®ã†;ginou ãã¯ã‚“;kihan ãã²ã‚“;kihin ããµã†;kifuu ããµã;kifuku ãã¼;kibo ãã¾ãれ;kimagure ãã¾ã˜ã‚;kimajime ãã¾ã¤;kimatsu ãã¾ã‚Šã‚ã‚‹ã„;kimariwarui ãã‚ã„;kimei ãã‚„ã;kiyaku ãゃãã—ょã;kyakushoku ãŽã‚ƒãã¦ã‚“;gyakuten ãゃãã»ã‚“;kyakuhon ãゃã—ゃ;kyasha ãゃã£ã‹ã‚“;kyakkan キャッãƒ;kyacchi キャリア;kyaria ãã‚…ã†ãˆã‚“;kyuuen ãã‚…ã†ãŒã;kyuugaku ãã‚…ã†ãょã;kyuukyoku ãã‚…ã†ãã¤;kyuukutsu ãã‚…ã†ã“ã‚“;kyuukon ãã‚…ã†ã•ã„;kyuusai ãã‚…ã†ã˜;kyuuji ãã‚…ã†ã—ょã;kyuushoku ãã‚…ã†ã›ã‚“;kyuusen ãã‚…ã†ã§ã‚“;kyuuden ãã‚…ã†ã¡;kyuuchi ãã‚…ã†ã¼ã†;kyuubou ãã‚…ã†ã‚Šã‚‡ã†;kyuuryou ãよ;kiyo ãょã†;kyou ãょã†;kyou ãょã†ã„;kyoui ãょã†ã‹;kyouka ãょã†ã‹ã„;kyoukai ãょã†ãŒã;kyougaku ãょã†ã‹ã‚“;kyoukan ãょã†ãŽ;kyougi ãょã†ãã†;kyouguu ãょã†ãã‚“;kyoukun ãょã†ã“ã†;kyoukou ãょã†ã“ã†;kyoukou ãょã†ã–ã„;kyouzai ãょã†ã•ã;kyousaku ãŽã‚‡ã†ã—ゃ;gyousha ãょã†ã˜ã‚…;kyouju ãょã†ã—ã‚…ã†;kyoushuu ãょã†ã—ã‚…ã†;kyoushuu ãょã†ã—ょã;kyoushoku ãょã†ã˜ã‚‹;kyoujiru ãょã†ã›ã„;kyousei ãŽã‚‡ã†ã›ã„;gyousei ãŽã‚‡ã†ã›ã;gyouseki ãょã†ãžã‚“;kyouzon ãょã†ã¡ã‚‡ã†;kyouchou ãょã†ã¦ã„;kyoutei ãょã†ã©;kyoudo ãょã†ã¯ã;kyouhaku ãŽã‚‡ã†ã‚€;gyoumu ãょã†ã‚ã„;kyoumei ãょã†ã‚Š;kyouri ãょã†ã‚Œã¤;kyouretsu ãょã†ã‚;kyouwa ãょãã’ã‚“;kyokugen ãょããŸã‚“;kyokutan ãょã˜ã‚…ã†;kyojuu ãょãœã¤;kyozetsu ãŽã‚‡ã›ã‚“;gyosen ãŽã‚‡ãã‚“;gyoson ãょã²;kyohi ãょよã†;kyoyou ãよらã‹;kiyoraka ãらã³ã‚„ã‹;kirabiyaka ãり;kiri ãり;kiri ãŽã‚Š;giri ãりã‹ãˆ;kirikae ãりゅã†;kiryuu ãれã‚;kireme ãŽã‚ã;giwaku ãã‚ã‚ã¦;kiwamete ãã‚“;kin ãã‚“ãŒã‚“;kingan ãã‚“ãã‚…ã†;kinkyuu ãã‚“ã“ã†;kinkou ãã‚“ã“ã†;kinkou ãã‚“ã—;kinshi ãã‚“ã˜ã‚‹;kinjiru ãã‚“ã¹ã‚“;kinben ãŽã‚“ã¿;ginmi ãã‚“ã‚€;kinmu ãã‚“ã‚‚ã¤;kinmotsu ãã‚“ã‚ã†;kinrou ã;ku ã;ku クイズ;kuizu ãã„ã¡ãŒã†;kuichigau ãã†ã‹ã‚“;kuukan ãã†ãµã;kuufuku ãã‹ã;kukaku ãã‹ã‚“;kukan ãã;kuki ããŽã‚Š;kugiri ããã‚‹;kuguru ãã˜;kuji ãã˜ã³ã;kujibiki ãã™ãã£ãŸã„;kusuguttai ãã¡;guchi ãã¡ãšã•ã‚€;kuchizusamu ãã¡ã°ã—;kuchibashi ãã¡ã‚‹;kuchiru ãã¤ãŒãˆã™;kutsugaesu ãã£ãり;kukkiri ãã£ã›ã¤;kussetsu ãã£ã¨;gutto ãã³ã‹ã–り;kubikazari ãã³ã‚;kubiwa ãã¿ã“ã‚€;kumikomu ãã¿ã‚ã‚ã›ã‚‹;kumiawaseru ãら;kura グレー;guree クレーン;kureen ãã‚ã†ã¨;kurouto ãã‚ã˜;kuroji ãã‚“;gun ãã‚“ã‹ã‚“;gunkan ãã‚“ã˜;gunji ãã‚“ã—ã‚…;kunshu ãã‚“ã—ã‚…ã†;gunshuu ãã‚“ã—ã‚…ã†;gunshuu ãã‚“ã³;gunbi ãã‚“ã·ã;gunpuku ã‘ã„;kei ã‘ã„;kei ã’ã„;gei ã‘ã„ã„;keii ã‘ã„ã‹;keika ã‘ã„ã‹ã„;keikai ã‘ã„ã‹ã„;keikai ã‘ã„ã;keiki ã‘ã„ã;keiki ã‘ã„ã;keigu ã‘ã„ã’ã‚“;keigen ã‘ã„ã•ã„;keisai ã‘ã„ã—ゃ;keisha ã‘ã„ã›ã„;keisei ã‘ã„ã›ã„;keisei ã‘ã„ãã¤;keisotsu ã‘ã„ãŸã„;keitai ã‘ã„ãŸã„;keitai ã‘ã„ã°ã¤;keibatsu ã‘ã„ã²;keihi ã‘ã„ã¶;keibu ã‘ã„ã¹ã¤;keibetsu ã‘ã„れã;keireki ã‘ã„ã‚;keiro ケース;keesu ã‘ãŒã‚‰ã‚ã—ã„;kegarawashii ã’ãã ã‚“;gekidan ã’ãれã„;gekirei ゲスト;gesuto ã‘ã ã‚‚ã®;kedamono ã‘ã¤;ketsu ã‘ã¤ã„;ketsui ã‘ã£ã‹ã;kekkaku ã‘ã£ã‹ã‚“;kekkan ã‘ã¤ãŽ;ketsugi ã‘ã£ã“ã†;kekkou ã‘ã¤ã”ã†;ketsugou ã‘ã£ã•ã‚“;kessan ã’ã£ã—ゃ;gessha ã‘ã£ã—ょã†;kesshou ã‘ã£ã—ょã†;kesshou ã‘ã£ã›ã„;kessei ã‘ã£ãã;kessoku ã’ã£ãり;gessori ã‘ã¤ã ã‚“;ketsudan ã’ã£ã·;geppu ã‘ã¤ã¼ã†;ketsubou ã‘ã¨ã°ã™;ketobasu ã‘ãªã™;kenasu ã‘ã‚€ãŸã„;kemutai ã‘むる;kemuru ã‘ã‚‚ã®;kemono ã‘らã„;kerai ã’り;geri ã‘ã‚“;ken ã‘ã‚“;ken ã‘ã‚“ã„;ken_i ã‘ã‚“ãŽã‚‡ã†;kengyou ã’ã‚“ã‘ã„;genkei ã’ã‚“ã‘ã„;genkei ã‘ã‚“ã’ã‚“;kengen ã’ã‚“ã“ã†;genkou ã‘ã‚“ã–ã„;kenzai ã’ã‚“ã•ã;gensaku ã‘ã‚“ã˜;kenji ã’ã‚“ã—;genshi ã’ã‚“ã—ã‚…;genshu ã’ã‚“ã—ょ;gensho ã‘ã‚“ã—ょã†;kenshou ã’ã‚“ã—ょã†;genshou ã‘ã‚“ãœã‚“;kenzen ã’ã‚“ã;genso ã’ã‚“ãžã†;genzou ã’ã‚“ãã;gensoku ã‘ã‚“ã¡;kenchi ã’ã‚“ã¡;genchi ã’ã‚“ã¦ã„;gentei ã’ã‚“ã¦ã‚“;genten ã’ã‚“ã¦ã‚“;genten ã’ã‚“ã°ã;genbaku ã’ã‚“ã¶ã‚“;genbun ã’ã‚“ã¿ã¤;genmitsu ã‘ã‚“ã‚ã„;kenmei ã‘ã‚“ã‚„ã;ken_yaku ã’んゆ;gen_yu ã‘んよã†;ken_you ã‘んりょã;kenryoku ã’ã‚“ã‚ã‚“;genron ã“;ko ã”ã„;goi ã“ã„ã™ã‚‹;koisuru ã“ã†;kou ã“ã†;kou ã“ã†ã„;koui ã“ã†ã„;koui ã”ã†ã„;goui ã“ã†ãˆã‚“;kouen ã“ã†ã‹ã„;koukai ã“ã†ã‹ã„;koukai ã“ã†ãŒã;kougaku ã“ã†ãŽ;kougi ã”ã†ãŽ;gougi ã“ã†ãょ;koukyo ã“ã†ãょã†;koukyou ã“ã†ãŽã‚‡ã†;kougyou ã“ã†ãŽã‚‡ã†;kougyou ã“ã†ã’ã‚“;kougen ã“ã†ã”;kougo ã“ã†ã“ã†ã¨;koukouto ã“ã†ã“ãŒã;koukogaku ã“ã†ã•ã;kousaku ã“ã†ã•ã;kousaku ã“ã†ã–ã‚“;kouzan ã“ã†ã—ã‚…ã†;koushuu ã“ã†ã˜ã‚…ã¤;koujutsu ã“ã†ã˜ã‚‡;koujo ã“ã†ã—ょã†;koushou ã“ã†ã—ょã†;koushou ã“ã†ã˜ã‚‡ã†;koujou ã“ã†ã—ã‚“;koushin ã“ã†ã—んりょã†;koushinryou ã“ã†ã™ã„;kousui ã“ã†ãšã„;kouzui ã”ã†ã›ã„;gousei ã“ã†ãœã‚“;kouzen ã“ã†ãã†;kousou ã“ã†ãã†;kousou ã“ã†ãã;kousoku ã“ã†ãŸã„;koutai ã“ã†ãŸã;koutaku ã“ã†ã ã‚“;koudan ã“ã†ã¡ã‚‡ã†;kouchou ã“ã†ã¨ã†;koutou ã“ã†ã©ã;koudoku ã“ã†ã©ã;koudoku ã“ã†ã«ã‚…ã†;kounyuu ã“ã†ã«ã‚“;kounin ã“ã†ã­ã¤ã²;kounetsuhi ã“ã†ã¯ã„;kouhai ã“ã†ã°ã„;koubai ã“ã†ã²ã‚‡ã†;kouhyou ã“ã†ãµ;koufu ã“ã†ãµã;koufuku ã“ã†ãµã‚“;koufun ã“ã†ã¼;koubo ã“ã†ã¿ã‚‡ã†;koumyou ã“ã†ã‚ˆã†;kouyou ã“ã†ã‚Š;kouri ã“ã†ã‚Šã¤;kouritsu ã“ã†ã‚Šã¤;kouritsu ã”ãˆã„;goei コーナー;koonaa ã“ãŒã‚‰;kogara ã“ãŽã£ã¦;kogitte ã”ã;goku ã“ãã•ã‚“;kokusan ã“ãã¦ã„;kokutei ã“ãã¯ã;kokuhaku ã“ãã¼ã†;kokubou ã“ãゆã†;kokuyuu ã”ãらã;gokuraku ã“ãれん;kokuren ã“ã’ã¡ã‚ƒ;kogecha ã”ã’ã‚“;gogen ã“ã“;koko ã“ã“ã¡;kokochi ã“ã“ã‚ãˆ;kokoroe ã“ã“ã‚ãŒã‘;kokorogake ã“ã“ã‚ãŒã‘ã‚‹;kokorogakeru ã“ã“ã‚ã–ã—;kokorozashi ã“ã“ã‚ã–ã™;kokorozasu ã“ã“ã‚ã¥ã‚ˆã„;kokoroduyoi ã“ã“ã‚ã¼ãã„;kokorobosoi ã“ã“ã‚ã¿;kokoromi ã“ã“ã‚ã¿ã‚‹;kokoromiru ã“ã“ã‚よã„;kokoroyoi ã”ã•;gosa ã”ã–ã„ã¾ã™;gozaimasu ã“ã˜;koji ã“ã˜ã‚Œã‚‹;kojireru ã“ã˜ã‚“;kojin ã“ã™;kosu ã“ãšãˆ;kozue ã“ã›ã„;kosei ã“ã›ã;koseki ã“ãœã«;kozeni ã“ã ã„;kodai ã“ãŸã¤;kotatsu ã“ã ã‚ã‚‹;kodawaru ã“ã¡ã‚‡ã†;kochou ã“ã¤;kotsu ã“ã£ã‘ã„;kokkei ã“ã£ã“ã†;kokkou ã“ã£ã¨ã†ã²ã‚“;kottouhin ã“ã¦ã„;kotei ã“ã¨ãŒã‚‰;kotogara ã“ã©ã;kodoku ã“ã¨ã”ã¨ã;kotogotoku ã“ã¨ã¥ã‘;kotoduke ã“ã¨ã«;kotoni ã“ã¨ã«ã‚ˆã‚‹ã¨;kotoniyoruto ã“ãªã”ãª;konagona ã“ã®ã¾ã—ã„;konomashii ã”ã°ã‚“;goban ã“ã¹ã¤;kobetsu ã”ã¾ã‹ã™;gomakasu ã“ã¾ã‚„ã‹;komayaka コマーシャル;komaasharu ã“ã‚ã‚‹;komeru コメント;komento ã“ã‚‚ã‚‹;komoru ã“ゆã†;koyuu ã“よã¿;koyomi ã“らã™;korasu ã”らんãªã•ã„;gorannasai ã“りã¤;koritsu ã“りる;koriru ã“ã‚‹;koru ã“ã‚“ã;konki ã“ã‚“ãょ;konkyo ã“ã‚“ã‘ã¤;konketsu コンタクト;kontakuto ã“ã‚“ã¡ã‚…ã†;konchuu ã“ã‚“ã¦ã„;kontei コンテスト;kontesuto ã“ã‚“ã©ã†;kondou コントラスト;kontorasuto コントロール;kontorooru コンパス;konpasu ã“ã‚“ã½ã‚“;konpon ã•;sa ã–ã„;zai ã•ã„ã‹ã„;saikai ã•ã„ãŒã„;saigai ã•ã„ãã‚“;saikin ã•ã„ã;saiku ã•ã„ãã¤;saikutsu サイクル;saikuru ã•ã„ã‘ã¤;saiketsu ã•ã„ã‘ã‚“;saiken ã•ã„ã’ã‚“;saigen ã–ã„ã’ã‚“;zaigen ã–ã„ã“;zaiko ã•ã„ã•ã‚“;saisan ã•ã„ã—ã‚…ã†;saishuu サイズ;saizu ã•ã„ã›ã„;saisei ã–ã„ã›ã„;zaisei ã•ã„ãœã‚“;saizen ã•ã„ãŸã;saitaku ã•ã„ã°ã„;saibai ã•ã„ã¯ã¤;saihatsu ã•ã„ã¼ã†;saibou ã•ã„よã†;saiyou ã•ãˆãŽã‚‹;saegiru ã•ãˆãšã‚‹;saezuru ã•ãˆã‚‹;saeru ã•ãŠ;sao ã•ã‹ãˆã‚‹;sakaeru ã•ãŒã;sagaku ã•ã‹ãšã;sakazuki ã•ã‹ã ã¡;sakadachi ã•ãã«;sakini ã•ãŽ;sagi ã•ã;saku ã•ã;saku ã•ã;saku ã•ãã’ã‚“;sakugen ã•ãã”;sakugo ã•ãã›ã‚“;sakusen ã•ã‘ã³;sakebi ã•ã‘ã‚‹;sakeru ã•ã•ã’ã‚‹;sasageru ã•ã—ã‹ã‹ã‚‹;sashikakaru ã•ã—ãš;sashizu ã•ã—ã ã™;sashidasu ã•ã—ã¤ã‹ãˆã‚‹;sashitsukaeru ã•ã—ã²ã;sashihiki ã•ãšã‘ã‚‹;sazukeru ã•ã™ã‚‹;sasuru ã•ãž;sazo ã•ã ã¾ã‚‹;sadamaru ã•ã ã‚ã‚‹;sadameru ã–ã ã‚“ã‹ã„;zadankai ã–ã¤;zatsu ã–ã£ã‹;zakka ã•ã¤ã˜ã‚“;satsujin ã•ã£ã™ã‚‹;sassuru ã–ã¤ã ã‚“;zatsudan ã•ã£ã¨;satto ã•ã£ã±ã‚Šã™ã‚‹;sapparisuru ã•ã¨ã‚‹;satoru ã•ãªã‹;sanaka ã•ã°ã;sabaku ã–ã²ã‚‡ã†;zahyou ã•ã»ã©;sahodo サボる;saboru ã•ã¾;sama ã•ã‚€ã‘;samuke ã•むらã„;samurai ã•ã‚‚;samo ã•よã†;sayou ã•らã†;sarau ã•ã‚ã‚‹;sawaru ã•ã‚“;san ã•ã‚“ã‹;sanka ã•ã‚“ãŒã;sangaku ã•ã‚“ãŽã„ã‚“;sangiin ã•ã‚“ãã‚…ã†;sankyuu サンキュー;sankyuu ã–ã‚“ãã‚“;zankin ã•ã‚“ã”;sango ã–ã‚“ã“ã;zankoku ã•ã‚“ã—ã‚…ã¤;sanshutsu ã•ã‚“ã—ょã†;sanshou ã•ã‚“ã˜ã‚‡ã†;sanjou ã–ã‚“ã ã‹;zandaka サンタクロース;santakuroosu ã•ã‚“ã°ã—;sanbashi ã•ã‚“ã³;sanbi ã•ã‚“ã·ã;sanpuku ã•ã‚“ãµã˜ã‚“ã‹;sanfujinka ã•ã‚“ã¶ã¤;sanbutsu ã•ã‚“ã¿ã‚ƒã;sanmyaku ã—;shi ã—;shi ã—;shi ã˜;ji ã—ã‚ãŒã‚Š;shiagari ã—ã‚ã’;shiage ã—ã‚ã’ã‚‹;shiageru ã—ã„ã;shiiku ã—ã„ã¦;shiite シート;shiito ジーパン;jiipan ã—ã„れる;shiireru ã—ã„ã‚‹;shiiru ã—ãŠ;shio ã—ã‹;shika ã˜ãŒ;jiga ã—ã‹ã;shikaku ã—ã‹ã;shikaku ã˜ã‹ã;jikaku ã—ã‹ã‘;shikake ã—ã‹ã‘ã‚‹;shikakeru ã—ã‹ã—ãªãŒã‚‰;shikashinagara ã—ã;shiki ã˜ã;jiki ã˜ã;jiki ã—ãã•ã„;shikisai ã—ãã˜ã‚‡ã†;shikijou ã—ããŸã‚Š;shikitari ã˜ãŽã‚‡ã†;jigyou ã—ãã‚‹;shikiru ã—ãã‚“;shikin ã˜ã;jiku ã—ãã˜ã‚‹;shikujiru ã—ãã¿;shikumi ã—ã‘ã„;shikei ã—ã‘ã‚‹;shikeru ã˜ã“;jiko ã—ã“ã†;shikou ã—ã“ã†;shikou ã—ã“ã†;shikou ã—ã“ã†;shikou ã˜ã“ã†;jikou ã˜ã“ãã²ã‚‡ã†;jikokuhyou ã˜ã”ã;jigoku ã˜ã•;jisa ã˜ã–ã„;jizai ã—ã•ã¤;shisatsu ã—ã•ã‚“;shisan ã—ã˜;shiji ã˜ã—ã‚…;jishu ã˜ã—ã‚…;jishu ã—ã—ã‚…ã†;shishuu ã—ã˜ã‚‡ã†;shijou ã˜ã—ょã;jishoku ã—ãšã;shizuku システム;shisutemu ã—ãšã‚ã‚‹;shizumeru ã—ã›ã¤;shisetsu ã˜ãœã‚“;jizen ã—ãã;shisoku ã˜ãžã;jizoku ã˜ãã‚“ã—ã‚“;jisonshin ã˜ãŸã„;jitai ã˜ãŸã„;jitai ã—ãŸã†;shitau ã—ãŸã”ã“ã‚;shitagokoro ã—ãŸã˜;shitaji ã—ãŸã—ã‚€;shitashimu ã—ãŸã—らã¹;shitashirabe ã—ãŸã¦ã‚‹;shitateru ã—ãŸã©ã‚Š;shitadori ã—ãŸã³;shitabi ã˜ã¤;jitsu ã˜ã£ã‹;jikka ã—ã£ã‹ã;shikkaku ã—ã¤ãŽ;shitsugi ã—ã£ãゃã;shikkyaku ã˜ã¤ãŽã‚‡ã†ã‹;jitsugyouka シック;shikku ã˜ã£ãり;jikkuri ã—ã¤ã‘;shitsuke ã—ã¤ã‘ã‚‹;shitsukeru ã˜ã£ã›ã‚“;jissen ã—ã£ã;shisso ã˜ã£ãŸã„;jittai ã—ã£ã¡ã‚‡ã†;shicchou ã—ã£ã¨;shitto ã˜ã£ã´;jippi ã—ã¦ã;shiteki ã—ã¦ã‚“;shiten ã˜ã¦ã‚“;jiten ã—ã¨ã‚„ã‹;shitoyaka ã—ãªã³ã‚‹;shinabiru シナリオ;shinario ã—ãªã‚„ã‹;shinayaka ã—ã«ã‚‡ã†;shinyou ã˜ã¬ã—;jinushi ã—ã®ã;shinogu ã—ã°;shiba ã—ã¯ã¤;shihatsu ã˜ã³ã‹;jibika ã—ã¶ã¤;shibutsu ã—ã¶ã¨ã„;shibutoi ã—ã»ã†;shihou ã—ã¼ã†;shibou ã—ã¼ã†;shibou ã—ã¾ã¤;shimatsu ã—ã¿ã‚‹;shimiru ã—ã‚ã„;shimei ã˜ã‚‚ã¨;jimoto ã—ã‚„;shiya ã˜ã‚ƒã;jaku ã—ゃã“ã†;shakou ジャズ;jazu ã—ゃãœã¤;shazetsu ã—ゃãŸã;shataku ã˜ã‚ƒã£ã‹ã‚“;jakkan ã—ゃã¿ã›ã‚“;shamisen ã—ゃã‚ã‚“;shamen ã˜ã‚ƒã‚Š;jari ã—ゃれる;shareru ジャンパー;janpaa ジャンプ;janpu ジャンボ;janbo ジャンル;janru ã—ã‚…;shu ã—ã‚…;shu ã—ゆã†;shiyuu ã—ã‚…ã†;shuu ã—ã‚…ã†;shuu ã˜ã‚…ã†;juu ã—ã‚…ã†ãˆã;shuueki ã—ã‚…ã†ãŒã;shuugaku ã—ã‚…ã†ã;shuuki ã—ã‚…ã†ãŽã„ã‚“;shuugiin ã—ã‚…ã†ãŽã‚‡ã†;shuugyou ã˜ã‚…ã†ãŽã‚‡ã†ã„ã‚“;juugyouin ã—ã‚…ã†ã‘ã„;shuukei ã—ã‚…ã†ã’ã;shuugeki ã—ã‚…ã†ã—;shuushi ã—ã‚…ã†ã—;shuushi ã—ã‚…ã†ã—;shuushi ã˜ã‚…ã†ã˜;juuji ã—ã‚…ã†ã˜ã¤;shuujitsu ã˜ã‚…ã†ã˜ã¤;juujitsu ã—ã‚…ã†ã—ã‚…ã†;shuushuu ã—ã‚…ã†ã—ょã;shuushoku ã˜ã‚…ã†ã˜ã‚;juujiro ã—ã‚…ã†ã˜ã‚ƒã;shuujaku ã—ã‚…ã†ã¡ã‚ƒã;shuuchaku ã˜ã‚…ã†ãªã‚“;juunan ã˜ã‚…ã†ãµã;juufuku ã—ã‚…ã†ã‚ˆã†;shuuyou ã˜ã‚…ã†ã‚‰ã„;juurai ã—ã‚…ã†ã‚Šã‚‡ã†;shuuryou ã—ã‚…ãˆã„;shuei ã—ã‚…ãˆã‚“;shuen ã—ã‚…ã‹ã‚“;shukan ã—ã‚…ãŽã‚‡ã†;shugyou ã˜ã‚…ã;juku ã—ã‚…ããŒ;shukuga ã—ã‚…ãã‚ã„;shukumei ã—ã‚…ã’ã„;shugei ã—ã‚…ã‘ã‚“;shuken ã—ã‚…ã•ã„;shusai ã—ã‚…ã–ã„;shuzai ã—ã‚…ã—;shushi ã—ã‚…ã˜ã‚…;shuju ã—ã‚…ã—ょã;shushoku ã—ã‚…ã˜ã‚“ã“ã†;shujinkou ã—ã‚…ãŸã„;shutai ã—ã‚…ã ã„;shudai ã—ã‚…ã¤ãˆã‚“;shutsuen ã—ã‚…ã£ã‘ã¤;shukketsu ã—ã‚…ã¤ã’ã‚“;shutsugen ã—ã‚…ã£ã•ã‚“;shussan ã—ã‚…ã£ã—ゃ;shussha ã—ã‚…ã£ã—ょã†;shusshou ã—ã‚…ã£ã›ã„;shussei ã—ã‚…ã£ã›;shusse ã—ã‚…ã¤ã ã„;shutsudai ã—ã‚…ã¤ã©ã†;shutsudou ã—ã‚…ã£ã´;shuppi ã—ã‚…ã£ã´ã‚“;shuppin ã—ã‚…ã©ã†;shudou ã—ã‚…ã«ã‚“;shunin ã—ã‚…ã®ã†;shunou ã—ã‚…ã³;shubi ã˜ã‚“ã‹ã;jinkaku ã—ã‚“ãŽ;shingi ã—ã‚“ã“ã†;shinkou ã—ã‚“ã“ã†;shinkou ã—ã‚“ã“ã†;shinkou ã—ã‚“ã“ã;shinkoku ã—ã‚“ã“ã‚“;shinkon ã—ã‚“ã•;shinsa ã˜ã‚“ã–ã„;jinzai ã—ã‚“ã—;shinshi ã—ã‚“ã˜ã¤;shinjitsu ã—ã‚“ã˜ã‚ƒ;shinja ã—ã‚“ã˜ã‚…;shinju ã—ã‚“ã—ã‚…ã¤;shinshutsu ã—ã‚“ã˜ã‚“;shinjin ã—ã‚“ã›ã„;shinsei ã—ã‚“ãœã‚“;shinzen ã—ã‚“ãã†;shinsou ã˜ã‚“ãã;jinsoku ã˜ã‚“ãŸã„;jintai ã—ã‚“ã¡ã;shinchiku ã—ã‚“ã˜ã‚…ã†;shinjuu ã—ã‚“ã¦ã„;shintei ã—ã‚“ã¦ã‚“;shinten ã—ã‚“ã§ã‚“;shinden ã—ã‚“ã©;shindo ã—ã‚“ã©ã†;shindou ã—ã‚“ã«ã‚…ã†ã›ã„;shinnyuusei ã—ã‚“ã«ã‚“;shinnin ã—ã‚“ã´;shinpi ã—ã‚“ã¼ã†;shinbou ã˜ã‚“ã¿ã‚“;jinmin ã—んり;shinri ã—んりゃã;shinryaku ã—んりょã†;shinryou ã™ã„;sui ã™ã„ã’ã‚“;suigen ã™ã„ã—ã‚“;suishin ã™ã„ã›ã‚“;suisen ã™ã„ãã†;suisou ã™ã„ãã;suisoku ã™ã„ã§ã‚“;suiden ã™ã„り;suiri ã™ã†ã—;suushi ã™ã†ã¯ã„;suuhai ã™ãˆã¤ã‘ã‚‹;suetsukeru ã™ãˆã‚‹;sueru ã™ãŒã™ãŒã—ã„;sugasugashii ã™ãã„;sukui ã™ãã†;sukuu ã™ã“ã‚„ã‹;sukoyaka ã™ã™ã;susugu ã™ã™ã¿;susumi ã™ã;suso スタジオ;sutajio スãƒãƒ¼ãƒ ;suchiimu ストライキ;sutoraiki スト;suto ストレス;sutoresu ストロー;sutoroo ストロボ;sutorobo ã™ã°ã—ã“ã„;subashikoi ã™ã°ã‚„ã„;subayai ãšã°ã‚Š;zubari スプリング;supuringu スペース;supeesu ãšã¶ã¬ã‚Œ;zubunure スãƒãƒ¼ãƒ„カー;supootsukaa ã™ã¾ã™;sumasu ã™ã¾ã™;sumasu ã™ã¾ã™;sumasu ã™ã¿ã‚„ã‹;sumiyaka スラックス;surakkusu ãšã‚‰ã£ã¨;zuratto ã™ã‚‹;suru ãšã‚‹ãšã‚‹;zuruzuru ãšã‚Œ;zure ã™ã‚Œã¡ãŒã„;surechigai ã™ã‚Œã‚‹;sureru ã™ã‚“ãªã‚Š;sunnari ã›ã„;sei ã›ã„ã„ã;seiiku ã›ã„ã„ã;seiiku ã›ã„ã‹;seika ã›ã„ã‹ã„;seikai ã›ã„ã;seiki ã›ã„ãŽ;seigi ã›ã„ã‘ã„;seikei ã›ã„ã‘ã‚“;seiken ã›ã„ã“ã†;seikou ã›ã„ã–;seiza ã›ã„ã•ã„;seisai ã›ã„ã•ã;seisaku ã›ã„ã•ã‚“;seisan ã›ã„ã—;seishi ã›ã„ã—;seishi ã›ã„ã˜ã¤;seijitsu ã›ã„ã˜ã‚…ã;seijuku ã›ã„ã—ã‚…ã‚“;seishun ã›ã„ã˜ã‚…ã‚“;seijun ã›ã„ã—ょ;seisho ã›ã„ã˜ã‚‡ã†;seijou ã›ã„ã™ã‚‹;seisuru ã›ã„ãœã‚“;seizen ã›ã„ãã†;seisou ã›ã„ã ã„;seidai ã›ã„ã ã;seidaku ã›ã„ã¦ã„;seitei ã›ã„ã¦ã;seiteki ã›ã„ã¦ã¤;seitetsu ã›ã„ã¦ã‚“;seiten ã›ã„ã¨ã†;seitou ã›ã„ã­ã‚“;seinen ã›ã„ãµã;seifuku ã›ã„ãµã;seifuku ã›ã„ã»ã†;seihou ã›ã„ã¿ã¤;seimitsu ãœã„ã‚€ã—ょ;zeimusho ã›ã„ã‚ã„;seimei ã›ã„ã‚ã„;seimei ã›ã„ã‚„ã;seiyaku ã›ã„り;seiri ã›ã„りょã;seiryoku ã›ã„れã¤;seiretsu セール;seeru ã›ã‹ã™;sekasu ã›ãŒã‚Œ;segare ã›ãã‚€;sekimu セクション;sekushon ã›ã˜;seji ã›ãŸã„;setai ãœã›ã„;zesei ã›ã ã„;sedai ã›ã¤;setsu ã›ã£ã‹ã„;sekkai セックス;sekkusu ã›ã¤ã˜ã¤;setsujitsu ã›ã£ã—ょã;sesshoku ã›ã¤ãžãã—;setsuzokushi ã›ã£ã¡;secchi ã›ã£ã¡ã‚…ã†;secchuu ã›ã£ã¦ã„;settei ã›ã£ã¨ã;settoku ã›ã¤ãªã„;setsunai ãœã£ã±ã‚“;zeppan ã›ã¤ã‚Šã¤;setsuritsu ã›ã‚;seme ゼリー;zerii セレモニー;seremonii ã›ã‚“;sen ãœã‚“;zen ãœã‚“;zen ã›ã‚“ã„;sen_i ãœã‚“ã‹ã„;zenkai ã›ã‚“ãょ;senkyo ã›ã‚“ãょã†;senkyou ã›ã‚“ã’ã‚“;sengen ã›ã‚“ã“ã†;senkou ã›ã‚“ã“ã†;senkou ã›ã‚“ã•ã„;sensai ã›ã‚“ã—ã‚…ã†;senshuu ã›ã‚“ã˜ã‚…ã¤;senjutsu センス;sensu ã›ã‚“ã™ã„;sensui ãœã‚“ã›ã„;zensei ã›ã‚“ã ã„;sendai ã›ã‚“ã ã£ã¦;sendatte ã›ã‚“ã¡ã‚ƒã;senchaku ãœã‚“ã¦ã„;zentei ã›ã‚“ã¦ã‚“ã¦ã;sententeki ãœã‚“ã¨;zento ã›ã‚“ã¨ã†;sentou ã›ã‚“ã«ã‚…ã†;sennyuu ã›ã‚“ã±ã;senpaku ãœã‚“ã‚ã¤;zenmetsu ã›ã‚“よã†;sen_you ã›ã‚“りょã†;senryou ãœã‚“りょã†;zenryou ã›ã‚“りょã;senryoku ãœã‚“れã„;zenrei ãã†;sou ãã†;sou ãã†;sou ãã†;sou ãžã†;zou ãã†ãŠã†;souou ãã†ã‹ã„;soukai ãã†ã‹ã‚“;soukan ãžã†ã;zouki ãã†ãã‚…ã†;soukyuu ã•ã£ãã‚…ã†;sakkyuu ãžã†ãょã†;zoukyou ãã†ãã‚“;soukin ãã†ã“ã†;soukou ãã†ã”ã†;sougou ãã†ã•;sousa ãã†ã•ã;sousaku ãã†ã˜ã‚…ã†;soujuu ãžã†ã—ょã†;zoushou ãã†ã—ょã;soushoku ãžã†ã—ã‚“;zoushin ãã†ãžã†;souzou ãã†ãŸã„;soutai ãã†ã ã„;soudai ãã†ã©ã†;soudou ãã†ãªã‚“;sounan ãã†ã°;souba ãã†ã³;soubi ãã†ã‚Šã¤;souritsu ããˆã‚‹;soeru ソース;soosu ããã–ã«;sokuzani ããã—ã‚“;sokushin ããã™ã‚‹;sokusuru ããã°ã;sokubaku ããã‚ã‚“;sokumen ãã“ãªã†;sokonau ãã“ら;sokora ãã–ã„;sozai ãã—;soshi ãã—ょã†;soshou ãã ã¡;sodachi ãã¡;sochi ソックス;sokkusu ãã£ã‘ãªã„;sokkenai ãã£ã½;soppo ããªãˆã¤ã‘ã‚‹;sonaetsukeru ããªã‚ã‚‹;sonawaru ããªã‚ã‚‹;sonawaru ãã³ãˆã‚‹;sobieru ソフト;sofuto ãã¼ã;soboku ãã‚€ã;somuku ãã¾ã‚‹;somaru ãã‚ã‚‹;someru ãらã™;sorasu ãり;sori ãã‚‹;soru ãれゆãˆ;soreyue ソロ;soro ãã‚ã„;soroi ãžã‚“ã–ã„;zonzai ãã‚“ã—ã¤;sonshitsu ãã‚“ãžã;sonzoku ダース;daasu ãŸã„;tai ãŸã„;tai ãŸã„ãŠã†;taiou ãŸã„ã‹;taika ãŸã„ã‹;taika ãŸã„ãŒã„;taigai ãŸã„ã‹ã;taikaku ãŸã„ãŒã;taigaku ãŸã„ãã‚“;taikin ãŸã„ãã†;taiguu ãŸã„ã‘ã¤;taiketsu ãŸã„ã‘ã‚“;taiken ãŸã„ã“ã†;taikou ãŸã„ã˜;taiji ãŸã„ã—ã‚…ã†;taishuu ãŸã„ã—ょ;taisho ãŸã„ã—ょã;taishoku ã ã„ã™ã‚‹;daisuru ãŸã„ã›ã„;taisei ãŸã„ã ã‚“;taidan ã ã„ãŸã‚“;daitan ãŸã„ã¨ã†;taitou タイトル;taitoru ã ã„ãªã—;dainashi ãŸã„ã®ã†;tainou ãŸã„ã²;taihi タイピスト;taipisuto ãŸã„ã¶;taibu ã ã„ã¹ã‚“;daiben ã ã„ã¹ã‚“;daiben ãŸã„ã¼ã†;taibou ã ã„ã»ã‚“;daihon タイマー;taimaa ãŸã„ã¾ã‚“;taiman タイミング;taimingu タイム;taimu タイムリー;taimurii ãŸã„ã‚ã‚“;taimen ã ã„よã†;daiyou ãŸã„りょã;tairyoku タイル;tairu ãŸã„ã‚;taiwa ダウン;daun ãŸãˆã‚‹;taeru ãŸãˆã‚‹;taeru ãŸãˆã‚‹;taeru ãŸãˆã‚‹;taeru ã ã‹ã„;dakai ãŸã‹ã¾ã‚‹;takamaru ãŸãã³;takibi ã ãょã†;dakyou ãŸãã¾ã—ã„;takumashii ãŸãã¿;takumi ãŸã‘;take ã ã‘;dake ã ã’ã;dageki ã ã‘ã¤;daketsu ã ã•ã;dasaku ãŸã—ã–ã‚“;tashizan ãŸã™ã†ã‘ã¤;tasuuketsu ãŸã™ã‘;tasuke ãŸãšã•ã‚ã‚‹;tazusawaru ãŸã ã‚ˆã†;tadayou ãŸã¡ã•ã‚‹;tachisaru ãŸã¡ã‚ˆã‚‹;tachiyoru ãŸã¤;tatsu ã ã£ã“;dakko ãŸã£ã—ゃ;tassha ã ã£ã—ã‚…ã¤;dasshutsu ã ã£ã™ã‚‹;dassuru ãŸã£ã›ã„;tassei ã ã£ãŸã„;dattai ã ã£ãŸã‚‰;dattara ãŸã¦;tate ãŸã¦ã‹ãˆã‚‹;tatekaeru ãŸã¦ã¾ãˆ;tatemae ãŸã¦ã¾ã¤ã‚‹;tatematsuru ã ã¨;dato ãŸã©ã†ã—;tadoushi ãŸã¨ãˆ;tatoe ãŸã©ã‚Šã¤ã;tadoritsuku ãŸã©ã‚‹;tadoru ãŸã°ã­ã‚‹;tabaneru ã ã¶ã ã¶;dabudabu ダブル;daburu ãŸã»ã†;tahou ãŸã¼ã†;tabou ãŸã¾ã†;tamau ãŸã¾ã—ã„;tamashii ãŸã¾ã‚Š;tamari ãŸã¾ã‚ã‚‹;tamawaru ãŸã‚‚ã¤;tamotsu ãŸã‚„ã™ã„;tayasui ãŸã‚ˆã†;tayou ã ã‚‹ã„;darui ãŸã‚‹ã¿;tarumi ãŸã‚‹ã‚€;tarumu ãŸã‚Œã‚‹;tareru タレント;tarento タワー;tawaa ãŸã‚“;tan ãŸã‚“ã„ã¤;tan_itsu ãŸã‚“ã‹;tanka ãŸã‚“ã‹;tanka ãŸã‚“ã;tanki ã ã‚“ã‘ã¤;danketsu ãŸã‚“ã‘ã‚“;tanken ã ã‚“ã’ã‚“;dangen ãŸã‚“ã—ã‚…ã;tanshuku ã ã‚“ãœã‚“;danzen ãŸã‚“ã;tanso ãŸã‚“ã ã„;tandai ãŸã‚“ã¡ã‚‡ã†;tanchou ãŸã‚“ã©ã;tandoku ã ã‚“ãª;danna ãŸã‚“ã±;tanpa ãŸã‚“ã±ãã—ã¤;tanpakushitsu ダンプ;danpu ã ã‚“ã‚ã‚“;danmen ã ã‚“りょã;danryoku ã¡ã‚ã‚“;chian ãƒãƒ¼ãƒ ãƒ¯ãƒ¼ã‚¯;chiimuwaaku ãƒã‚§ãƒ³ã‚¸;chenji ã¡ãŒãˆã‚‹;chigaeru ã¡ãã•ã‚“;chikusan ã¡ãã—ょã†;chikushou ã¡ãã›ã;chikuseki ã¡ã‘ã„;chikei ã¡ã›ã„;chisei ã¡ã¡;chichi ã¡ã¢ã¾ã‚‹;chidimaru ã¡ã¤ã˜ã‚‡;chitsujo ã¡ã£ãã;chissoku ã¡ã¦ã;chiteki ãƒãƒ£ã‚¤ãƒ ;chaimu ã¡ã‚ƒãã—ã‚…;chakushu ã¡ã‚ƒãã—ょã;chakushoku ã¡ã‚ƒãã›ã;chakuseki ã¡ã‚ƒãã‚‚ã;chakumoku ã¡ã‚ƒãりã;chakuriku ã¡ã‚ƒã£ã“ã†;chakkou ã¡ã‚ƒã®ã¾;chanoma ã¡ã‚ƒã®ã‚†;chanoyu ã¡ã‚„ã»ã‚„;chiyahoya ãƒãƒ£ãƒ³ãƒãƒ«;channeru ã¡ã‚…ã†ãŒãˆã‚Š;chuugaeri ã¡ã‚…ã†ã‘ã„;chuukei ã¡ã‚…ã†ã“ã;chuukoku ã¡ã‚…ã†ã—ょã†;chuushou ã¡ã‚…ã†ã™ã†;chuusuu ã¡ã‚…ã†ã›ã‚“;chuusen ã¡ã‚…ã†ã ã‚“;chuudan ã¡ã‚…ã†ã©ã;chuudoku ã¡ã‚…ã†ãµã;chuufuku ã¡ã‚…ã†ã‚Šã¤;chuuritsu ã¡ã‚…ã†ã‚;chuuwa ã¡ã‚‡;cho ã¡ã‚‡ã†;chou ã¡ã‚‡ã†;chou ã¡ã‚‡ã†;chou ã¡ã‚‡ã†ã„ã‚“;chouin ã¡ã‚‡ã†ã‹ã;choukaku ã¡ã‚‡ã†ã‹ã‚“;choukan ã¡ã‚‡ã†ã“ã†;choukou ã¡ã‚‡ã†ã—ã‚…ã†;choushuu ã—ã‚…ã»ã†;shuhou ã˜ã‚…ã‚‚ã;jumoku ã˜ã‚…りã¤;juritsu ã˜ã‚…ã‚“ãã‚…ã†;junkyuu ã˜ã‚…ã‚“ã˜ã‚‹;junjiru ã—ょ;sho ã—よã†;shiyou ã—よã†;shiyou ã—ょã†;shou ã—ょã†;shou ã˜ã‚‡ã†;jou ã˜ã‚‡ã†;jou ã˜ã‚‡ã†;jou ã˜ã‚‡ã†ã„;joui ã˜ã‚‡ã†ãˆã‚“;jouen ã˜ã‚‡ã†ã‹;jouka ã—ょã†ãŒã„;shougai ã—ょã†ãょ;shoukyo ã˜ã‚‡ã†ãã†;joukuu ã—ょã†ã’ã;shougeki ã—ょã†ã’ã‚“;shougen ã—ょã†ã“;shouko ã—ょã†ã”ã†;shougou ã—ょã†ã•ã„;shousai ã˜ã‚‡ã†ã—;joushi ã˜ã‚‡ã†ã—ょã†;joushou ã—ょã†ã—ã‚“;shoushin ã—ょã†ã™ã‚‹;shousuru ã˜ã‚‡ã†ã›ã„;jousei ã—ょã†ãã;shousoku ã—ょã†ãŸã„;shoutai ã—ょã†ã ã;shoudaku ã˜ã‚‡ã†ã¡ã‚‡;joucho ã˜ã‚‡ã†ã—ょ;jousho ã—ょã†ã¡ã‚‡ã†;shouchou ã—ょã†ã«ã‹;shounika ã—よã†ã«ã‚“;shiyounin ã˜ã‚‡ã†ã­ã¤;jounetsu ã˜ã‚‡ã†ã»;jouho ã—ょã†ã‚ã„;shoumei ã˜ã‚‡ã†ã‚„ã;jouyaku ã—ょã†ã‚Š;shouri ã˜ã‚‡ã†ã‚Šã;jouriku ã˜ã‚‡ã†ã‚Šã‚…ã†;jouryuu ã—ょã†ã‚Œã„;shourei ショー;shoo ã˜ã‚‡ãŒã„;jogai ã—ょãã„ã‚“;shokuin ã—ょãã¿ã‚“ã¡;shokuminchi ã—ょãã‚€;shokumu ã—ょãã‚“;shokun ã˜ã‚‡ã’ã‚“;jogen ã˜ã‚‡ã“ã†;jokou ã—ょã–ã„;shozai ã—ょã˜;shoji ã˜ã‚‡ã—;joshi ã˜ã‚‡ã—;joshi ã—ょãžã;shozoku ã—ょã¡;shochi ショック;shokku ã—ょã£ã¡ã‚…ã†;shocchuu ã—ょã¦ã„;shotei ã˜ã‚‡ã©ã†ã—;jodoushi ã—ょã¨ã;shotoku ã—ょã°ã¤;shobatsu ã—ょã¯ã‚“;shohan ã—ょã²ã‚‡ã†;shohyou ã—ょã¶ã‚“;shobun ã—ょã¿ã‚“;shomin ã—ょむ;shomu ã—ょゆã†;shoyuu ã—らã¹;shirabe ã˜ã‚Šã¤;jiritsu ã—ã‚‹ã™;shirusu ã—れã„;shirei ã—ã‚“;shin ã˜ã‚“;jin ã—ã‚“ã‹;shinka ã¯ãŸã™;hatasu ã¯ã¡ã¿ã¤;hachimitsu パãƒãƒ³ã‚³;pachinko ã°ã¤;batsu ã¯ã¤ã„ã;hatsuiku ã¯ã¤ãŒ;hatsuga ã¯ã£ãã¤;hakkutsu ã¯ã¤ã’ã‚“;hatsugen ãƒãƒƒã‚¸;bajji ã¯ã£ã›ã„;hassei ãƒãƒƒãƒ†ãƒªãƒ¼;batterii ãƒãƒƒãƒˆ;batto ã¯ã¤ã³ã‚‡ã†;hatsubyou ã¯ã¤ã¿ã¿;hatsumimi ã¯ã¦;hate ã¯ã¦ã‚‹;hateru ã°ã¦ã‚‹;bateru パトカー;patokaa ã¯ãªã¯ã ;hanahada ã¯ãªã°ãªã—ã„;hanabanashii ã¯ãªã³ã‚‰;hanabira ã¯ãªã‚„ã‹;hanayaka パパ;papa ã¯ã°ã‚€;habamu ã¯ã¾;hama ã¯ã¾ã¹;hamabe ã¯ã¾ã‚‹;hamaru ã¯ã‚„ã™;hayasu ã¯ã‚„ã‚ã‚‹;hayameru ã¯ã‚‰ã ã¡;haradachi ã¯ã‚‰ã£ã±;harappa ã¯ã‚‰ã¯ã‚‰;harahara ã°ã‚‰ã¾ã;baramaku ã¯ã‚ŠãŒã¿;harigami ã¯ã‚‹ã‹;haruka ã¯ã‚Œã¤;haretsu ã¯ã‚Œã‚‹;hareru ã¯ã‚“;han ã¯ã‚“;han ã¯ã‚“;han ã¯ã‚“ãˆã„;han_ei ã¯ã‚“ãŒ;hanga ãƒãƒ³ã‚¬ãƒ¼;hangaa ã¯ã‚“ã‹ã‚“;hankan ã¯ã‚“ãょã†;hankyou パンク;panku ã¯ã‚“ã’ã;hangeki ã¯ã‚“ã‘ã¤;hanketsu ã¯ã‚“ã—ゃ;hansha ã¯ã‚“ã˜ã‚‡ã†;hanjou ã¯ã‚“ã—ょã;hanshoku ã¯ã‚“ã™ã‚‹;hansuru ã¯ã‚“ã¦ã„;hantei ã°ã‚“ã«ã‚“;bannin ã°ã‚“ã­ã‚“;bannen ã¯ã‚“ã®ã†;hannou ã°ã‚“ã®ã†;bannou ã¯ã‚“ã±;hanpa ã¯ã‚“ã±ã¤;hanpatsu ã¯ã‚“らん;hanran ã¯ã‚“らん;hanran ã²;hi ã²;hi ã³;bi ã²ã„ã¦ã¯;hiiteha ビールス;biirusu ã²ã‹ãˆã—ã¤;hikaeshitsu ã²ã‹ãˆã‚‹;hikaeru ã²ã‹ã‚“;hikan ã²ãã‚ã’ã‚‹;hikiageru ã²ãã„ã‚‹;hikiiru ã²ããŠã“ã™;hikiokosu ã²ãã•ã’ã‚‹;hikisageru ã²ããšã‚‹;hikizuru ã²ãã¨ã‚‹;hikitoru ã²ã‘ã¤;hiketsu ã²ã“ã†;hikou ã²ã”ã‚;higoro ã²ã•ã—ã„;hisashii ã²ã•ã‚“;hisan ビジãƒã‚¹;bijinesu ã²ã˜ã‚…ã†;hijuu ã³ã˜ã‚…ã¤;bijutsu ã²ã—ょ;hisho ã³ã—ょã†;bishou ã¡ã‚‡ã†ã—ã‚“ã;choushinki ã¡ã‚‡ã†ã›ã‚“;chousen ã¡ã‚‡ã†ã¦ã„;choutei ã¡ã‚‡ã†ãµã;choufuku ã¡ã‚‡ã†ã¸ã‚“;chouhen ã¡ã‚‡ã†ã»ã†;chouhou ã¡ã‚‡ã†ã‚Š;chouri ã¡ã‚‡ã†ã‚;chouwa ã¡ã‚‡ãã¡ã‚‡ã;chokuchoku ã¡ã‚‡ãã‚ã‚“;chokumen ã¡ã‚‡ã—ょ;chosho ã¡ã‚‡ã¡ã;chochiku ã¡ã‚‡ã£ã‹ã‚“;chokkan ã¡ã‚‡ã‚ã„;chomei ã¡ã‚‰ã£ã¨;chiratto ã¡ã‚Š;chiri ã¡ã‚Šã¨ã‚Š;chiritori ã¡ã‚Šã‚‡ã†;chiryou ã¡ã‚“ãŽã‚“;chingin ã¡ã‚“ã§ã‚“;chinden ã¡ã‚“ã¼ã¤;chinbotsu ã¡ã‚“ã‚‚ã;chinmoku ã¡ã‚“れã¤;chinretsu ã¤ã„;tsui ã¤ã„ãã‚…ã†;tsuikyuu ã¤ã„ã›ã;tsuiseki ã¤ã„ã»ã†;tsuihou ã¤ã„ã‚„ã™;tsuiyasu ã¤ã„らã;tsuiraku ã¤ã†ã‹ã‚“;tsuukan ã¤ã†ã˜ã‚‡ã†;tsuujou ã¤ã†ã›ã¤;tsuusetsu ã¤ãˆ;tsue ã¤ã‹ã„ã¿ã¡;tsukaimichi ã¤ã‹ãˆã‚‹;tsukaeru ã¤ã‹ã•ã©ã‚‹;tsukasadoru ã¤ã‹ã®ã¾;tsukanoma ã¤ããªã¿;tsukinami ã¤ãŽã‚;tsugime ã¤ãã‚‹;tsukiru ã¤ã;tsugu ã¤ã;tsugu ã¤ãã™;tsukusu ã¤ãã¥ã;tsukuduku ã¤ãり;tsukuri ã¤ãり;tsukuri ã¤ãã‚ã†;tsukurou ã¤ã‘ãã‚ãˆã‚‹;tsukekuwaeru ã¤ã’ã‚‹;tsugeru ã¤ã˜ã¤ã¾;tsujitsuma ã¤ã¤;tsutsu ã¤ã¤ã;tsutsuku ã¤ã£ã¤ã;tsuttsuku ã¤ã¤ã—ã‚€;tsutsushimu ã¤ã£ã±ã‚‹;tsupparu ã¤ã¨ã¾ã‚‹;tsutomaru ã¤ã¨ã‚ã•ã;tsutomesaki ã¤ã¨ã‚ã¦;tsutomete ã¤ãªã¿;tsunami ã¤ã­ã‚‹;tsuneru ã¤ã®;tsuno ã¤ã®ã‚‹;tsunoru ã¤ã°;tsuba ã¤ã¶ã‚„ã;tsubuyaku ã¤ã¶ã‚‰;tsubura ã¤ã¶ã‚‹;tsuburu ã¤ã¼;tsubo ã¤ã¼ã¿;tsubomi ã¤ã‚€;tsumu ã¤ã‚†;tsuyu ã¤ã‚ˆã¾ã‚‹;tsuyomaru ã¤ã‚ˆã‚ã‚‹;tsuyomeru ã¤ã‚‰ãªã‚‹;tsuranaru ã¤ã‚‰ã¬ã;tsuranuku ã¤ã‚‰ã­ã‚‹;tsuraneru ã¤ã‚ŠãŒã­;tsurigane ã¤ã‚Šã‹ã‚;tsurikawa ã¦ã‚ã¦;teate ã¦ã„ãŽ;teigi ã¦ã„ãょã†;teikyou ã¦ã„ã‘ã„;teikei ã¦ã„ã•ã„;teisai ã¦ã„ã˜;teiji ティシュペーパー;tishupeepaa ã¦ã„ã—ょã;teishoku ã¦ã„ã›ã„;teisei ã¦ã„ãŸã„;teitai ã¦ã„ãŸã;teitaku ã¦ã„ã­ã‚“;teinen ã¦ã„ã¼ã†;teibou データ;deeta ã¦ãŠãれ;teokure ã§ã‹ã„;dekai ã¦ãŒã‹ã‚Š;tegakari ã¦ãŒã‘ã‚‹;tegakeru ã¦ã‹ãš;tekazu ã¦ãŒã‚‹;tegaru ã¦ããŠã†;tekiou ã¦ããŽ;tekigi ã¦ãã›ã„;tekisei ã§ãã‚‚ã®;dekimono ã¦ãŽã‚;tegiwa ã§ãã‚ã™;dekuwasu デザイン;dezain ã¦ã˜ã‚…ã‚“;tejun ã¦ã˜ã‚‡ã†;tejou ã¦ã™ã†;tesuu デコレーション;dekoreeshon デザート;dezaato ã¦ã¢ã‹;tedika ã¦ã£ãり;tekkiri ã¦ã£ã“ã†;tekkou デッサン;dessan ã¦ã£ã™ã‚‹;tessuru ã¦ã£ãºã‚“;teppen ã¦ã¤ã¼ã†;tetsubou ã§ãªãŠã—;denaoshi ã¦ã®ã²ã‚‰;tenohira ã¦ã¯ã„;tehai ã¦ã¯ãš;tehazu ã¦ã³ã;tebiki ã¦ã»ã‚“;tehon ã¦ã¾ã‚ã—;temawashi ã¦ã‚‚ã¨;temoto デモンストレーション;demonsutoreeshon ã¦ã‚Šã‹ãˆã™;terikaesu テレックス;terekkusu ã¦ã‚ã‘;tewake ã¦ã‚“;ten ã§ã‚“ãˆã‚“;den_en ã¦ã‚“ã‹;tenka ã¦ã‚“ã‹ã„;tenkai ã¦ã‚“ã‹ã‚“;tenkan ã¦ã‚“ãょ;tenkyo ã¦ã‚“ãã‚“;tenkin ã¦ã‚“ã‘ã‚“;tenken ã§ã‚“ã’ã‚“;dengen ã¦ã‚“ã“ã†;tenkou ã¦ã‚“ã”ã;tengoku ã§ã‚“ã”ã‚“;dengon ã¦ã‚“ã•ã„;tensai ã¦ã‚“ã•ã„;tensai ã¦ã‚“ã˜;tenji ã§ã‚“ã›ã¤;densetsu ã¦ã‚“ã›ã‚“;tensen ã¦ã‚“ã˜ã‚‹;tenjiru ã¦ã‚“ãšã‚‹;tenzuru ã¦ã‚“ãŸã„;tentai ã§ã‚“ãŸã¤;dentatsu ã¦ã‚“ã¡;tenchi ã¦ã‚“ã§;tende ã¦ã‚“ã«ã‚“;tennin ã¦ã‚“ã¼ã†;tenbou ã§ã‚“らã„;denrai ã¦ã‚“らã;tenraku ã¨;to ã©;do ã¨ã„ã‚ã‚ã›ã‚‹;toiawaseru ã¨ã†;tou ã¨ã†;tou ã¨ã†;tou ã©ã†;dou ã©ã†ã„;doui ã©ã†ã„ã‚“;douin ã©ã†ã‹ã‚“;doukan ã¨ã†ã;touki ã¨ã†ãŽ;tougi ã©ã†ã;douki ã¨ã†ãã‚…ã†;toukyuu ã©ã†ãã‚…ã†;doukyuu ã©ã†ãょ;doukyo ã¨ã†ã“ã†;toukou ã¨ã†ã”ã†;tougou ã©ã†ã“ã†;doukou ã¨ã†ã•ã‚“;tousan ã¨ã†ã—;toushi ã©ã†ã—;doushi ã©ã†ã—;doushi ã©ã†ã˜ã‚‡ã†;doujou ã©ã†ã˜ã‚‡ã†;doujou ã¨ã†ã›ã„;tousei ã¨ã†ã›ã‚“;tousen ã¨ã†ãœã‚“;touzen ã¨ã†ãã†;tousou ã¨ã†ãã¤;tousotsu ã¨ã†ãŸã¤;toutatsu ã¨ã†ã¡;touchi ã©ã†ã¡ã‚‡ã†;douchou ã¨ã†ã¦ã„;toutei ã©ã†ã¦ã;douteki ã¨ã†ã¨ã„;toutoi ã¨ã†ã¨ã„;toutoi ã©ã†ã¨ã†;doutou ã©ã†ã©ã†;doudou ã¨ã†ã¨ã¶;toutobu ã©ã†ã«ã‹;dounika ã¨ã†ã«ã‚…ã†;tounyuu ã©ã†ã«ã‚…ã†;dounyuu ã¨ã†ã«ã‚“;tounin ã©ã†ãµã†;doufuu ã¨ã†ã¼ã†;toubou ã¨ã†ã¿ã‚“;toumin ã©ã†ã‚ã„;doumei ã©ã†ã‚„ら;douyara ã©ã†ã‚ˆã†;douyou ã©ã†ã‚Šã‚‡ã;douryoku ã¨ã†ã‚ã;touroku ã¨ã†ã‚ã‚“;touron ã¨ãŠã–ã‹ã‚‹;toozakaru ã¨ãŠã¾ã‚り;toomawari トーン;toon ã¨ã‹ã;tokaku ã¨ãŒã‚ã‚‹;togameru ã¨ããŠã‚Š;tokiori ã¨ãŽã‚Œã‚‹;togireru ã¨ã;toku ã¨ã;togu ã¨ããŽ;tokugi ã©ãã•ã„;dokusai ã¨ãã•ã‚“;tokusan ã©ãã˜;dokuji ã¨ãã—ã‚…ã†;tokushuu ã©ãã›ã‚“;dokusen ã©ããã†;dokusou ã¨ãã¦ã‚“;tokuten ã¨ãã¯;tokuha ã¨ãゆã†;tokuyuu ã¨ã’;toge ã¨ã’ã‚‹;togeru ã©ã“ã‚ã‹;dokoroka ã¨ã—ã”ã‚;toshigoro ã¨ã˜ã¾ã‚Š;tojimari ã¨ã˜ã‚‡ã†;tojou ã¨ã˜ã‚‹;tojiru ã©ã ã„;dodai ã¨ã ãˆã‚‹;todaeru ã¨ã£ãょ;tokkyo ã¨ã£ã‘ã‚“;tokken ã¨ã£ã•ã«;tossani ã¨ã¤ã˜ã‚‡;totsujo ã¨ã£ã¦;totte ã¨ã£ã±;toppa ã©ã¦;dote ã¨ã©ã‘;todoke ã¨ã©ã“ãŠã‚‹;todokooru ã¨ã¨ã®ãˆã‚‹;totonoeru ã¨ã©ã‚ã‚‹;todomeru ã¨ãªãˆã‚‹;tonaeru ã¨ã®ã•ã¾;tonosama ã©ã²ã‚‡ã†;dohyou ã¨ã³ã‚‰;tobira ã©ã¶;dobu ã¨ã»;toho ã©ã¼ã;doboku ã¨ã¼ã‘ã‚‹;tobokeru ã¨ã¼ã—ã„;toboshii ã¨ã¿;tomi ã¨ã‚€;tomu ã¨ã‚‚;tomo ã¨ã‚‚ã‹ã›ãŽ;tomokasegi ã¨ã‚‚ãªã†;tomonau ã¨ã‚‚ã°ãŸã‚‰ã;tomobataraki ドライ;dorai ドライクリーニング;doraikuriiningu ドライãƒãƒ¼;doraibaa ドライブイン;doraibuin トラブル;toraburu トランジスター;toranjisutaa ã¨ã‚Šã‚ãˆãš;toriaezu ã¨ã‚Šã‚ã¤ã‹ã„;toriatsukai ã¨ã‚Šã‚ã¤ã‹ã†;toriatsukau ã¨ã‚Šã„;torii ã¨ã‚Šã‹ãˆ;torikae ã¨ã‚Šãã‚€;torikumu ã¨ã‚Šã—ã¾ã‚Š;torishimari ã¨ã‚Šã—ã¾ã‚‹;torishimaru ã¨ã‚Šã—らã¹ã‚‹;torishiraberu ã¨ã‚ŠãŸã¦ã‚‹;toritateru ã¨ã‚Šã¤ã;toritsugu ã¨ã‚Šã¤ã‘ã‚‹;toritsukeru ã¨ã‚Šã®ãžã;torinozoku ã¨ã‚Šã²ã;torihiki ã¨ã‚Šã¾ã;torimaku ã¨ã‚Šã¾ãœã‚‹;torimazeru ã¨ã‚Šã‚‚ã©ã™;torimodosu ã¨ã‚Šã‚ˆã›ã‚‹;toriyoseru ドリル;doriru ã¨ã‚Šã‚ã‘;toriwake ã¨ã‚ã‘ã‚‹;torokeru ã©ã‚“ã‹ã‚“;donkan ã¨ã‚“ã ;tonda ã©ã‚ã™ã‚Œ;dowasure ã¨ã‚“ã‚„;ton_ya ãªã„ã‹ã;naikaku ãªã„ã—;naishi ãªã„ã—ょ;naisho ãªã„ã—ã‚“;naishin ãªã„ãžã†;naizou ナイター;naitaa ãªã„ã¶;naibu ãªã„らん;nairan ãªã„りã;nairiku ãªãˆ;nae ãªãŠã•ら;naosara ãªãŒã—;nagashi ãªãŒãªãŒ;naganaga ãªã‹ã»ã©;nakahodo ãªãŽã•;nagisa ãªã’ã;nageku ãªã’ã ã™;nagedasu ãªã“ã†ã©;nakoudo ãªã”ã‚„ã‹;nagoyaka ãªã”り;nagori ãªã•ã‘;nasake ãªã•ã‘ãªã„;nasakenai ãªã•ã‘ã¶ã‹ã„;nasakebukai ãªã˜ã‚‹;najiru ãªã ã‹ã„;nadakai ãªã ã‚Œ;nadare ãªã¤ã;natsuku ãªã¥ã‘ã‚‹;nadukeru ãªã«ã’ãªã„;nanigenai ãªã«ã¨ãž;nanitozo ãªã«ã‚ˆã‚Š;naniyori ナプキン;napukin ãªãµã ;nafuda ãªã¾ãã•ã„;namagusai ãªã¾ã¬ã‚‹ã„;namanurui ãªã¾ã¿;namami ãªã¾ã‚Š;namari ãªã¿;nami ãªã‚らã‹;nameraka ãªã‚ã‚‹;nameru ãªã‚„ã¾ã—ã„;nayamashii ãªã‚„ã¾ã™;nayamasu ãªã‚„ã¿;nayami ãªã‚‰ã™;narasu ãªã‚‰ã™;narasu ãªã‚‰ã³ã«;narabini ãªã‚ŠãŸã¤;naritatsu ãªã‚‹ãŸã‘;narutake ãªã‚Œ;nare ãªã‚Œãªã‚Œã—ã„;narenareshii ãªã‚“;nan ãªã‚“ã‹;nanka ナンセンス;nansensu ãªã‚“ã ã‹;nandaka ãªã‚“ã ã‹ã‚“ã ;nandakanda ãªã‚“ãªã‚Š;nannari ã«;ni ã«ã‹ã‚ˆã†;nikayou ã«ãã³;nikibi ã«ãŽã‚ã†;nigiwau ã«ãã—ã¿;nikushimi ã«ãã—ã‚“;nikushin ã«ããŸã„;nikutai ã«ã’ã ã™;nigedasu ã«ã—ã³;nishibi ã«ã˜ã‚€;nijimu ã«ã›ã‚‚ã®;nisemono ã«ã¡ã‚„;nichiya ã«ã¥ãり;nidukuri ã«ãªã†;ninau ã«ã¶ã‚‹;niburu ã«ã‚‚ã‹ã‹ã‚らãš;nimokakawarazu ニュアンス;nyuansu ニュー;nyuu ã«ã‚…ã†ã—ã‚…;nyuushu ã«ã‚…ã†ã—ょã†;nyuushou ã«ã‚…ã†ã‚ˆã;nyuuyoku ã«ã‚‡ã†;nyou ã«ã‚“ã—ã;ninshiki ã—ã‚“ã˜ã‚‡ã†;shinjou ã«ã‚“ã—ã‚“;ninshin ã«ã‚“ã‚€;ninmu ã«ã‚“ã‚ã„;ninmei ã¬ã‹ã™;nukasu ã¬ã‘ã ã™;nukedasu ã¬ã—;nushi ã¬ã¾;numa ã­;ne ã­ã„ã‚;neiro ã­ã†ã¡;neuchi ãƒã‚¬;nega ã­ã‹ã›ã‚‹;nekaseru ã­ã˜ã¾ã‚ã—;nejimawashi ã­ã˜ã‚Œã‚‹;nejireru ã­ãŸã‚€;netamu ã­ã ã‚‹;nedaru ã­ã¤ã„;netsui ã­ã£ã¨ã†;nettou ã­ã¤ã‚Šã‚‡ã†;netsuryou ã­ã°ã‚Š;nebari ã­ã°ã‚‹;nebaru ã­ã³ã;nebiki ã­ã¾ã‚ã—;nemawashi ã­ã‚€ãŸã„;nemutai ã­ã‚‹;neru ã­ã‚“;nen ã­ã‚“ãŒ;nenga ã­ã‚“ã‹ã‚“;nenkan ã­ã‚“ãŒã‚“;nengan ã­ã‚“ã”ã†;nengou ã­ã‚“ã—ょã†;nenshou ã­ã‚“ã¡ã‚‡ã†;nenchou ã­ã‚“りょã†;nenryou ã­ã‚“りん;nenrin ノイローゼ;noirooze ã®ã†;nou ã®ã†ã“ã†;noukou ã®ã†ã˜ã‚‡ã†;noujou ã®ã†ã¡;nouchi ã®ã†ã«ã‚…ã†;nounyuu ã®ãŒã™;nogasu ã®ãŒã‚Œã‚‹;nogareru ã®ããªã¿;nokinami ã®ãžã¾ã—ã„;nozomashii ã®ãžã‚€;nozomu ã®ã£ã¨ã‚‹;nottoru ã®ã©ã‹;nodoka ã®ã®ã—ã‚‹;nonoshiru ã®ã¹;nobe ã®ã¿ã“ã‚€;nomikomu ã®ã‚Šã“ã‚€;norikomu ã¯;ha ã¯;ha ãƒãƒ¼;baa ã¯ã‚ã;haaku パート;paato ã¯ã„;hai ã¯ã„;hai ã¯ã„ã;haiki ã¯ã„ãã‚…ã†;haikyuu ã°ã„ãã‚“;baikin ã¯ã„ãã†ã—ゃ;haiguusha ã¯ã„ã‘ã„;haikei ã¯ã„ã‘ã„;haikei ã¯ã„ã”;haigo ã¯ã„ã—;haishi ã¯ã„ã—ゃã;haishaku ã¯ã„ã˜ã‚‡;haijo ã°ã„ã—ょã†;baishou ã¯ã„ã™ã„;haisui ã¯ã„ã›ã‚“;haisen ã¯ã„ã¡;haichi ã¯ã„ãµ;haifu ã¯ã„ã¶ã‚“;haibun ã¯ã„ã¼ã;haiboku ã°ã„りã¤;bairitsu ã¯ã„りょ;hairyo ã¯ã„れã¤;hairetsu ã¯ãˆã‚‹;haeru ã¯ã‹ã„;hakai ã¯ã‹ã©ã‚‹;hakadoru ã¯ã‹ãªã„;hakanai ã°ã‹ã°ã‹ã—ã„;bakabakashii ã¯ã‹ã‚‹;hakaru ã¯ã‹ã‚‹;hakaru ã¯ã;haki ã¯ã;hagu ã¯ããŒã„;hakugai ã¯ãã˜ã‚ƒã;hakujaku ã¯ãã˜ã‚‡ã†;hakujou ã°ããœã‚“;bakuzen ã°ãã ã‚“;bakudan ã°ãã¯;bakuha ã°ãã‚;bakuro ã¯ã’ã¾ã™;hagemasu ã¯ã’ã‚€;hagemu ã¯ã’ã‚‹;hageru ã°ã‘ã‚‹;bakeru ã¯ã‘ã‚“;haken ã¯ã˜;haji ã¯ã˜ã;hajiku パジャマ;pajama ã¯ã˜ã‚‰ã†;hajirau ã¯ã˜ã‚‹;hajiru ã¯ã—ã‚ãŸã—;hashiwatashi ãƒã‚¹;basu ã¯ãšã‚€;hazumu ã¯ãã‚“;hason ã¯ãŸã;hataku ã¯ã ã—;hadashi ã²ãšã‚€;hizumu ã²ãã‹;hisoka ã²ãŸã™;hitasu ã²ãŸã™ã‚‰;hitasura ã²ã ã‚Šãã;hidarikiki ã²ã£ã‹ã;hikkaku ã²ã£ã—ã‚…ã†;hisshuu ã³ã£ã—ょり;bisshori ã²ã¤ãœã‚“;hitsuzen ã²ã£ã¦ã;hitteki ã²ã¨ã„ã;hitoiki ã²ã¨ã‹ã’;hitokage ã²ã¨ãŒã‚‰;hitogara ã²ã¨ã‘;hitoke ã²ã¨ã“ã‚;hitokoro ã²ã¨ã˜ã¡;hitojichi ã²ã¨ã™ã˜;hitosuji ã²ã¨ã‚;hitome ã²ã©ã‚Š;hidori ã²ãª;hina ã²ãªã¾ã¤ã‚Š;hinamatsuri ã²ãªãŸ;hinata ã²ãªã‚“;hinan ã²ãªã‚“;hinan ã²ã®ã¾ã‚‹;hinomaru ã²ã°ãª;hibana ã²ã³;hibi ã²ã‚ã„;himei ã²ã‚„ã‹ã™;hiyakasu ã²ã‚„ã‘;hiyake ã²ã‚‡ã†;hyou ã²ã‚‡ã†ã”;hyougo ã³ã‚‡ã†ã—ゃ;byousha ã²ã‚‡ã£ã¨;hyotto ã³ã‚‰;bira ã²ã‚‰ãŸã„;hiratai ã³ã‚Š;biri ã²ã‚Šã¤;hiritsu ã³ã‚Šã‚‡ã†;biryou ã²ã‚‹ã‚ã—;hirumeshi ã²ã‚Œã„;hirei ã²ã‚ã†;hirou ã²ã‚ã¾ã‚‹;hiromaru ã³ã‚“ã‹ã‚“;binkan ã²ã‚“ã“ã‚“;hinkon ã²ã‚“ã—ã¤;hinshitsu ã²ã‚“ã˜ã‚ƒã;hinjaku ã²ã‚“ã—ã‚…;hinshu ヒント;hinto ã²ã‚“ã±ã‚“;hinpan ã³ã‚“ã¼ã†;binbou ファイト;faito ファイル;fairu ファン;fan ãµã„;fui フィルタ;firuta ãµã†;fuu ãµã†ã•;fuusa ãµã†ã—ゃ;fuusha ãµã†ã—ã‚…ã†;fuushuu ãµã†ãžã;fuuzoku ブーツ;buutsu ãµã†ã©;fuudo ブーム;buumu フォーム;foomu ã¶ã‹;buka ãµã‹ã‘ã¤;fukaketsu ã¶ã‹ã¶ã‹;bukabuka ãµã‹ã‚ã‚‹;fukameru ãµãã¤;fukitsu ãµãょã†;fukyou ãµãã‚“;fukin ãµã;fuku ãµãã”ã†;fukugou ãµãã—;fukushi ãµãã‚ã‚“;fukumen ãµãれる;fukureru ãµã‘ã„ã;fukeiki ãµã‘ã‚‹;fukeru ãµã‘ã‚‹;fukeru ãµã”ã†;fugou ãµã“ã;fukoku ブザー;buzaa ãµã•ã„;fusai ãµã–ã„;fuzai ãµã•ã‚ã—ã„;fusawashii ãµã˜ã‚…ã‚“;fujun ãµã—ょã†;fushou ã¶ã˜ã‚‡ã;bujoku ãµã—ã‚“;fushin ãµã—ã‚“;fushin ã¶ãã†;busou ãµã ;fuda ãµãŸã‚“;futan ãµã¡ã‚‡ã†;fuchou ãµã£ã‹ã¤;fukkatsu ã¶ã¤ãŽ;butsugi ãµã£ãã‚…ã†;fukkyuu ãµã£ã“ã†;fukkou ã¶ã£ã—;busshi ã¶ã¤ãžã†;butsuzou ã¶ã£ãŸã„;buttai ãµã£ã¨ã†;futtou ãµã¨ã†;futou ãµã©ã†ã•ã‚“;fudousan ã¶ãªã‚“;bunan ãµã«ã‚“;funin ãµã¯ã„;fuhai ãµã²ã‚‡ã†;fuhyou ãµãµã;fufuku ãµã¸ã‚“;fuhen ãµã¾ãˆã‚‹;fumaeru ãµã¿ã“ã‚€;fumikomu ãµã‚ã„;fumei ã¶ã‚‚ã‚“;bumon ãµã‚ˆã†;fuyou ãµã‚‰ãµã‚‰;furafura ã¶ã‚‰ã¶ã‚‰;burabura ãµã‚Š;furi ãµã‚Šã‹ãˆã‚‹;furikaeru ãµã‚Šã ã—;furidashi ãµã‚Šã‚‡ã†;furyou ãµã‚Šã‚‡ã;furyoku ã¶ã‚Šã‚‡ã;buryoku ブル;buru ãµã‚‹ã‚ã›ã‚‹;furuwaseru ã¶ã‚Œã„;burei ãµã‚ã;furoku フロント;furonto ãµã‚“ãŒã„;fungai ã¶ã‚“ã‹ã–ã„;bunkazai ã¶ã‚“ãŽã‚‡ã†;bungyou ã¶ã‚“ã”;bungo ã¶ã‚“ã•ã‚“;bunsan ã¶ã‚“ã—;bunshi ãµã‚“ã—ã¤;funshitsu ãµã‚“ã—ã‚…ã¤;funshutsu ã¶ã‚“ã—ょ;bunsho ãµã‚“ãã†;funsou ãµã‚“ã ã‚“;fundan ã¶ã‚“ãŸã‚“;buntan ãµã‚“ã¨ã†;funtou ã¶ã‚“ã±ã„;bunpai ã¶ã‚“ã¼;bunbo ãµã‚“ã¾ã¤;funmatsu ã¶ã‚“り;bunri ã¶ã‚“れã¤;bunretsu ペア;pea ã¸ã„ã;heiki ã¸ã„ã“ã†;heikou ã¸ã„ã“ã†;heikou ã¸ã„ã•;heisa ã¸ã„ã—;heishi ã¸ã„ã˜ã‚‡ã†;heijou ã¸ã„ã»ã†;heihou ã¸ã„れã¤;heiretsu ã¼ã†ã©ã†;boudou ã»ã†ã³;houbi ã¼ã†ãµã†;boufuu ã»ã†ã‚€ã‚‹;houmuru ã»ã†ã‚Šã“ã‚€;hourikomu ã»ã†ã‚Šã ã™;houridasu ã¼ã†ã‚Šã‚‡ã;bouryoku ã»ã†ã‚;houwa ホース;hoosu ãƒãƒ¼ã‚º;poozu ホール;hooru ã»ãŠã‚“;hoon ã»ã‹ã;hokaku ã»ã‹ã‚“;hokan ã»ãã‚…ã†;hokyuu ã»ãょã†;hokyou ã¼ãã‚“;bokin ã¼ãã—;bokushi ã»ã’ã„;hogei ã¼ã‘ã‚‹;bokeru ã»ã‘ã‚“;hoken ã»ã”;hogo ã¼ã“ã†;bokou ã¼ã“ã;bokoku ã»ã“ã‚‹;hokoru ã»ã“ã‚ã³ã‚‹;hokorobiru ã»ã—;hoshi ãƒã‚¸ã‚·ãƒ§ãƒ³;pojishon ã»ã—ã‚‚ã®;hoshimono ã»ã—ã‚…;hoshu ã»ã˜ã‚…ã†;hojuu ã»ã˜ã‚‡;hojo ã»ã—ょã†;hoshou ã»ã—ょã†;hoshou ã»ãã†;hosou ã»ãã;hosoku ã¼ã¡;bochi ã»ã£ã•;hossa ã¼ã£ã—ã‚…ã†;bosshuu ã»ã£ãã;hossoku ã»ã£ã¨;hotto ãƒãƒƒãƒˆ;potto ã»ã£ãºãŸ;hoppeta ã¼ã¤ã¼ã¤;botsubotsu ã¼ã¤ã‚‰ã;botsuraku ã»ã©ã‘ã‚‹;hodokeru ã»ã©ã“ã™;hodokosu ã»ã¨ã‚Š;hotori ã¼ã‚„ã;boyaku ã¼ã‚„ã‘ã‚‹;boyakeru ã»ã‚ˆã†;hoyou ã»ã‚Šã‚‡;horyo ボルト;boruto ã»ã‚ã³ã‚‹;horobiru ã»ã‚ã¼ã™;horobosu ã»ã‚“ã‹ã;honkaku ã»ã‚“ã‹ã‚“;honkan ã»ã‚“ã;honki ã»ã‚“ã”ã;hongoku ã»ã‚“ã—ã¤;honshitsu ã»ã‚“ãŸã„;hontai ã»ã‚“ã­;honne ã»ã‚“ã®ã†;honnou ã»ã‚“ã°;honba ãƒãƒ³ãƒ—;ponpu ã»ã‚“ã¶ã‚“;honbun ã»ã‚“ã¿ã‚‡ã†;honmyou マーク;maaku マイ;mai マイクロフォン;maikurofon ã¾ã„ãžã†;maizou ã¾ã†;mau ã¾ã†ãˆ;maue ã¾ãˆã†ã‚Š;maeuri ã¾ãˆãŠã;maeoki ã¾ãˆã‚‚ã£ã¦;maemotte ã¾ã‹ã™;makasu ã¾ã‹ã™;makasu ã¾ã‹ãªã†;makanau ã¾ãŽã‚‰ã‚ã—ã„;magirawashii ã¾ãŽã‚Œã‚‹;magireru ã¾ã;maku ã¾ã”ã“ã‚;magokoro ã¾ã”ã¤ã;magotsuku ã¾ã“ã¨;makoto ã¾ã“ã¨ã«;makotoni ã¾ã•ã—ã;masashiku ã¾ã•ã‚‹;masaru ã¾ã—;mashi ã¾ã˜ãˆã‚‹;majieru ã¾ã—ãŸ;mashita ã¾ã—ã¦;mashite ã¾ã˜ã‚ã‚‹;majiwaru ã¾ã™ã„;masui マスコミ;masukomi ã¾ãŸ;mata ã¾ãŸãŒã‚‹;matagaru ã¾ã¡ã‚ã‚ã›;machiawase ã¾ã¡ã©ãŠã—ã„;machidooshii ã¾ã¡ã®ãžã‚€;machinozomu ã¾ã¡ã¾ã¡;machimachi ã¾ã¤;matsu ã¾ã£ã;makki マッサージ;massaaji ã¾ã£ã·ãŸã¤;mapputatsu ã¾ã¨;mato ã¾ã¨ã¾ã‚Š;matomari ã¾ã¨ã‚;matome ã¾ã¬ãŒã‚Œã‚‹;manugareru ã¾ã­ã;maneki ã¾ã°ãŸã;mabataki ã¾ã²;mahi ã¾ã¿ã‚Œ;mamire ã¾ã‚†;mayu ã¾ã‚Š;mari ã¾ã‚‹ã”ã¨;marugoto ã¾ã‚‹ã£ãり;marukkiri ã¾ã‚‹ã¾ã‚‹;marumaru ã¾ã‚‹ã‚ã‚‹;marumeru ã¾ã‚“ã’ã¤;mangetsu ã¾ã‚“ã˜ã‚‡ã†;manjou ã¾ã‚“ã¾ãˆ;manmae ã¾ã‚“ã¾ã‚‹ã„;manmarui ã¾ã‚“ã¾ã‚‹ã„;manmarui ã¿;mi ã¿ã‚ã„;miai ã¿ã‚ã‚ã›ã‚‹;miawaseru ã¿ãŠã¨ã™;miotosu ã¿ã‹ã„;mikai ã¿ã‹ã;mikaku ã¿ã‹ã‘ã‚‹;mikakeru ã¿ã;miki ã¿ãã‚‹ã—ã„;migurushii ã¿ã“ã¿;mikomi ã¿ã“ã‚“;mikon ã¿ã˜ã‚…ã;mijuku ã¿ã˜ã‚“;mijin ミス;misu ã¿ãšã‘;mizuke ミスプリント;misupurinto ã¿ã™ã¼ã‚‰ã—ã„;misuborashii ミセス;misesu ã¿ã›ã³ã‚‰ã‹ã™;misebirakasu ã¿ã›ã‚‚ã®;misemono ã¿ãž;mizo ã¿ãŸã™;mitasu ã¿ã ã™;midasu ã¿ã ã‚Œã‚‹;midareru ã¿ã¡;michi ã¿ã¢ã‹;midika ã¿ã¡ã³ã;michibiku ã¿ã£ã—ã‚…ã†;misshuu ã¿ã£ã›ã¤;missetsu ã¿ã¤ã©;mitsudo ã¿ã¤ã‚‚り;mitsumori ã¿ã¦ã„;mitei ã¿ã¨ãŠã—;mitooshi ã¿ãªã™;minasu ã¿ãªã‚‚ã¨;minamoto ã¿ãªã‚‰ã†;minarau ã¿ãªã‚Š;minari ã¿ã­;mine ã¿ã®ã†ãˆ;minoue ã¿ã®ãŒã™;minogasu ã¿ã®ã¾ã‚り;minomawari ã¿ã¯ã‹ã‚‰ã†;mihakarau ã¿ã¯ã‚‰ã—;miharashi ã¿ã¶ã‚Š;miburi ã¿ã‚ƒã;myaku ミュージック;myuujikku ã¿ã‚Œã‚“;miren ã¿ã‚ãŸã™;miwatasu ã¿ã‚“ã—ã‚…ã;minshuku ã¿ã‚“ãžã;minzoku ã¿ã‚“ãžã;minzoku ã‚€ã„ã¿;muimi ムード;muudo ã‚€ãã¡;mukuchi ã‚€ã“;muko ã‚€ã“ã†;mukou ã‚€ã”ã‚“;mugon ã‚€ã˜ã‚ƒã;mujaki ã‚€ã—ã‚‹;mushiru ã‚€ã™ã³;musubi ã‚€ã™ã³ã¤ã;musubitsuki ã‚€ã™ã³ã¤ã;musubitsuku ã‚€ã™ã³ã¤ã‘ã‚‹;musubitsukeru ã‚€ã›ã‚“;musen ã‚€ã ã¥ã‹ã„;mudadukai ã‚€ã ã‚“;mudan ã‚€ã¡;muchi ã‚€ã¡ã‚ƒ;mucha ã‚€ã¡ã‚ƒãã¡ã‚ƒ;muchakucha ã‚€ãªã—ã„;munashii ã‚€ã­ã‚“;munen ã‚€ã®ã†;munou むやã¿ã«;muyamini むよã†;muyou むら;mura むらãŒã‚‹;muragaru ã‚€ã‚ã‚“;muron ã‚ã„ã•ã‚“;meisan ã‚ã„ã—ょã†;meishou ã‚ã„ã¡ã‚…ã†;meichuu ã‚ã„ã¯ã;meihaku ã‚ã„ã¼;meibo ã‚ã„よ;meiyo ã‚ã„りょã†;meiryou ã‚ã„ã‚ã†;meirou メーカー;meekaa ã‚ã‹ãŸ;mekata ã‚ãã¿;megumi ã‚ãã‚€;megumu ã‚ãã‚‹;mekuru ã‚ã–ã¾ã—ã„;mezamashii ã‚ã–ã‚ã‚‹;mezameru ã‚ã™;mesu ã‚ã™;mesu ã‚ã¤ã;metsuki メッセージ;messeeji ã‚ã¤ã¼ã†;metsubou メディア;media ã‚ã©;medo ã‚もり;memori メロディー;merodii ã‚ã‚“ã‹ã„;menkai ã‚ã‚“ã˜ã‚‡;menjo ã‚ã‚“ã™ã‚‹;mensuru ã‚ã‚“ã¼ã;menboku ã‚ã‚“ã‚‚ã;menmoku ã‚‚ã†;mou ã‚‚ã†ã‘ã‚‹;moukeru ã‚‚ã†ã—ã„れる;moushiireru ã‚‚ã†ã—ã“ã¿;moushikomi ã‚‚ã†ã—ã§;moushide ã‚‚ã†ã—ã§ã‚‹;moushideru ã‚‚ã†ã—ã¶ã‚“;moushibun ã‚‚ã†ã¦ã‚“;mouten ã‚‚ã†ã‚Œã¤;mouretsu モーテル;mooteru ã‚‚ãŒã;mogaku ã‚‚ãã‚ã;mokuroku ã‚‚ãã‚ã¿;mokuromi ã‚‚ã‘ã„;mokei ã‚‚ã•ã;mosaku ã‚‚ã—ã‹ã—ã¦;moshikashite ã‚‚ã—ãã¯;moshikuha ã‚‚ãŸã‚‰ã™;motarasu ã‚‚ã¡ãり;mochikiri ã‚‚ã£ã‹;mokka ã‚‚ã£ã±ã‚‰;moppara ã‚‚ã¦ãªã™;motenasu ã‚‚ã¦ã‚‹;moteru モニター;monitaa ã‚‚ã®;mono ã‚‚ã®ãšã;monozuki ã‚‚ã®ãŸã‚Šãªã„;monotarinai ã‚‚ã¯ã‚„;mohaya ã‚‚ã¯ã‚“;mohan ã‚‚ã»ã†;mohou ã‚‚ã‚ã‚‹;momeru ã‚‚ã‚‚;momo ã‚‚ã‚‚;momo もよãŠã™;moyoosu もらã™;morasu もりã‚ãŒã‚‹;moriagaru ã‚‚ã‚‹;moru もれる;moreru ã‚‚ã‚ã„;moroi ã‚‚ã‚ã«;moroni ã‚„;ya ã‚„ãŒã„;yagai ã‚„ã;yaku ã‚„ã;yagu ã‚„ãã—ょã;yakushoku ã‚„ãã°;yakuba ã‚„ã‘ã«;yakeni ã‚„ã—ã;yashiki ã‚„ã—ãªã†;yashinau ã‚„ã—ã‚“;yashin ã‚„ã™ã£ã½ã„;yasuppoi ã‚„ã™ã‚ã‚‹;yasumeru ã‚„ã›ã„;yasei ã‚„ã¤;yatsu ã‚„ã¨ã†;yatou ã‚„ã¿;yami ã‚„ã‚€;yamu ã‚„ã‚„ã“ã—ã„;yayakoshii やりã¨ãŠã™;yaritoosu やりã¨ã’ã‚‹;yaritogeru ã‚„ã‚らã’ã‚‹;yawarageru ヤング;yangu ゆ;yu ゆã†;yuu ゆã†ã„;yuui ゆã†ã†ã¤;yuuutsu ゆã†ãˆã;yuueki ゆã†ãˆã¤;yuuetsu ゆã†ã‹ã‚“;yuukan ゆã†ã;yuuki ゆã†ãれ;yuugure ゆã†ã—;yuushi ゆã†ã™ã‚‹;yuusuru ゆã†ã›ã„;yuusei ゆã†ã›ã‚“;yuusen ゆã†ã©ã†;yuudou ゆã†ãšã†;yuuzuu ゆã†ã³;yuubi ゆã†ã¼ã†;yuubou ゆã†ã¼ã;yuuboku ゆã†ã‚„ã‘;yuuyake ゆã†ã‚Šã‚‡ã;yuuryoku ゆã†ã‚Œã„;yuurei ゆã†ã‚ã;yuuwaku ゆãˆ;yue ゆãŒã‚€;yugamu ゆã•ã¶ã‚‹;yusaburu ゆã™ã;yusugu ゆã¨ã‚Š;yutori ユニーク;yuniiku ユニフォーム;yunifoomu ゆã³ã•ã™;yubisasu ゆã¿;yumi ゆらã;yuragu ゆるむ;yurumu ゆるã‚ã‚‹;yurumeru ゆるやã‹;yuruyaka よ;yo よã†;you よã†ã„ã‚“;youin よã†ãˆã;youeki よã†ã‘ã‚“;youken よã†ã”;yougo よã†ã—;youshi よã†ã—ã;youshiki よã†ã™ã‚‹;yousuru よã†ã›ã„;yousei よã†ãã†;yousou よã†ã²ã‚“;youhin よã†ãµã†;youfuu よã†ã»ã†;youhou よã†ã¼ã†;youbou よã‹;yoka よã‹ã‚“;yokan よãょã†;yokyou よãã‚“;yokin よã;yoku よãã‚ã¤;yokuatsu よãã—ã¤;yokushitsu よãã›ã„;yokusei よããµã‹ã„;yokufukai よãã¼ã†;yokubou よã‘ã‚‹;yokeru よã’ã‚“;yogen よã“ã¥ãª;yokoduna よã”れ;yogore よã—;yoshi よã—;yoshi よã—ã‚ã—;yoshiashi よãã†;yosou よãã¿;yosomi よã¡;yochi よã£ã¦;yotte よã¨ã†;yotou よã³ã¨ã‚ã‚‹;yobitomeru よãµã‹ã—;yofukashi よãµã‘;yofuke よã»ã©;yohodo よã¿ã‚ã’ã‚‹;yomiageru より;yori よりã‹ã‹ã‚‹;yorikakaru よã‚ã‚“;yoron ã›ã‚ã‚“;seron よã‚ã¾ã‚‹;yowamaru よã‚ã‚ã‚‹;yowameru よã‚ã‚‹;yowaru らã„ã˜ã‚‡ã†;raijou ライス;raisu らãã®ã†;rakunou らã£ã‹;rakka らã£ã‹ã‚“;rakkan ラベル;raberu ランプ;ranpu らんよã†;ran_you リード;riido りãã¤;rikutsu りã—;rishi りã˜ã‚…ã‚“;rijun りã›ã„;risei りãã;risoku りã£ãŸã„;rittai りã£ã½ã†;rippou りã£ã½ã†;rippou りã¦ã‚“;riten りゃãã ã¤;ryakudatsu りゃãã”;ryakugo りゅã†ã¤ã†;ryuutsuu りょã†ã„ã;ryouiki りょã†ã‹ã„;ryoukai りょã†ã‹ã„;ryoukai りょã†ãょã;ryoukyoku りょã†ã“ã†;ryoukou りょã†ã—ã;ryoushiki りょã†ã—ã¤;ryoushitsu りょã†ã—ょã†;ryoushou りょã†ã—ã‚“;ryoushin りょã†ã¡;ryouchi りょã†ã©;ryoudo りょã†ã‚Šã¤;ryouritsu りょã‹ã;ryokaku りょã‘ã‚“;ryoken りれã;rireki りã‚ã‚“;riron りんãŽã‚‡ã†;ringyou ã‚‹ã„;rui ã‚‹ã„ã™ã„;ruisui ã‚‹ã„ã˜;ruiji ルーズ;ruuzu ルール;ruuru れã„ã“ã;reikoku れã„ãžã†;reizou れã„ãŸã‚“;reitan レース;reesu レギュラー;regyuraa レッスン;ressun レディー;redii レãƒãƒ¼;rebaa れんã‚ã„;ren_ai れんãã‚…ã†;renkyuu レンジ;renji れんã˜ã¤;renjitsu れんãŸã„;rentai レンタカー;rentakaa れんã¡ã‚…ã†;renchuu レントゲン;rentogen れんã½ã†;renpou れんã‚ã„;renmei ã‚ã†ã™ã„;rousui ã‚ã†ã©ã;roudoku ã‚ã†ã²;rouhi ã‚ã†ã‚Šã‚‡ã;rouryoku ロープウエイ;roopuuei ロープ;roopu ã‚ããª;rokuna ã‚ã“ã¤;rokotsu ロマンãƒãƒƒã‚¯;romanchikku ã‚ã‚“ãŽ;rongi ã‚んり;ronri ã‚ã;waku ã‚ãã›ã„;wakusei ã‚ã–;waza ã‚ã–ã‚ã–;wazawaza ã‚ãšã‚‰ã‚ã—ã„;wazurawashii ã‚ãŸã‚Šã©ã‚Š;wataridori ワット;watto ã‚ã³;wabi ã‚ã¶ã‚“;wabun ã‚ら;wara ã‚り;wari ã‚りã‚ã¦;wariate ã‚りã“ã‚€;warikomu ã‚ã‚‹ã‚‚ã®;warumono ã‚れ;ware ã„ãªã„;inai ã‘ã„ã‹ãã§ã™;keikakudesu ãŸãŒã‚‹;tagaru ã¨ã¡ãŒã†;tochigau ã¨ã—ã¦;toshite ã‚„ã‚’ãªã„;yawonai ã‚ãŒã‚‹;agaru ã‚ã„ã ;aida ã‚ã˜;aji ã‚ã‹ã‚ŠãŒããˆã¦ã„ã‚‹;akarigakieteiru ã‚ãã‚‹;akiru ã‚ã¾ã„;amai ã‚ã‚“ãœã‚“;anzen ã‚らゆる;arayuru ã‚ã•ã„;asai ã‚ã¤ã„;atsui ã‚ã¤ã¾ã‚Š;atsumari ã‚ã¤ã¾ã‚‹;atsumaru ã‚ã¤ã‚ã‚‹;atsumeru ã‚ã‚„ã¾ã‚‹;ayamaru AよりBã®ã»ã†ãŒã‚ã‹ã„ã§ã™;AyoriBnohougawakaidesu ã°ã‚“ãã¿;bangumi ãƒã‚¿ãƒ¼;bataa ベル;beru ã³ã£ãり;bikkuri ã³ã—ょã†ã˜ã‚‡;bishoujo ボタン;botan ã¶ã©ã†ã—ã‚…;budoushu ã¶ã‚“;bun ã¶ã‚“れã„;bunrei ã¡ã‚ƒã‚“ã¨;chanto ã¡;chi ã¡ã‹ã¢ã‹;chikadika ã¡ã‹ã‚‰;chikara ã¡ã‚‡ã†ã—;choushi ã¡ã‚…ã†ãŒã£ã“ã†;chuugakkou ã¡ã‚…ã†ã„ã™ã‚‹;chuuisuru ã ã‘ã©;dakedo ã ã‚“ã¼ã†;danbou ã ã‚Œã«ã§ã‚‚;darenidemo ã ã‚ã†;darou ã ã™;dasu ã ã™;dasu ã§ã‚“ã¨ã†;dentou ã§ã¦ã„ã‚‹;deteiru ã©ã‚“ãªã§ã‚‚;donnademo ã©ã‚“ãªã«;donnani ã©ã®ãらã„;donokurai ã©ã‚Šã‚‡ã;doryoku ã©ã†ã¶ã¤ãˆã‚“;doubutsuen ã©ã†ã©ã†;doudou ã©ã†ã—ãŸã®;doushitano ã©ã†ã‚„ã£ã¦;douyatte ãˆã ;eda ãˆã„ãŒã‹ã‚“;eigakan ãˆã‚‰ã¶;erabu ãµã§;fude ãµãˆã‚‹;fueru ãµã‹ã„;fukai ãµã;fuku ãµã­;fune ãµã¨ã„;futoi ãµã¤ã‹;futsuka ãµã¤ã†;futsuu ãµã¤ã†ã®;futsuuno ãµã†ã¨ã†;fuutou ãŒã„ã“ãã˜ã‚“;gaikokujin ガソリンスタンド;gasorinsutando ã”ã„;goi ã”ã‚ã‚“ãã ã•ã„;gomenkudasai ã¯ã;haku ã¯ãªã—;hanashi ã¯ã‚‰ã„;harai ã¯ã—ã‚‹;hashiru ã¯ãŸã‚‰ã;hataraku ã¯ã¤ã‹;hatsuka ã¸ã‚‹;heru ã²ãˆã‚‹;hieru ã²ãŒã—;higashi ã²ãã ã—;hikidashi ã²ã‚ã°;hiroba ã²ã‚ã„;hiroi ã²ã‚‹ã¾;hiruma ã²ã‚‹ã™ãŽ;hirusugi ã²ã¤ã‚ˆã†;hitsuyou ã»ã‹;hoka ã»ã—ã„;hoshii ã»ãã„;hosoi ã„ã¡ã˜ã‹ã‚“ã”;ichijikango ã„ãŒã„;igai ã„ã„ã‚“ã ã‘ã©;iindakedo ã„ã¾ã§ã‚‚;imademo ã„ã¿;imi ã„ã®ã‚Š;inori ã„れる;ireru ã„ã‚ã„ã‚ã‚ã‚‹ã­;iroiroarune ã„ã—;ishi ã„ãã„ã§;isoide ã„ã£ã—ょã†;isshou ã„ã£ã—ã‚…ã†ã‹ã‚“;isshuukan ã„ãŸã‚€;itamu ã„ãŸã™;itasu ã„ã¤ã‹;itsuka ã„ã¤ã‹;itsuka ã„ã‚„ã§ã‚‚;iyademo ã˜ã‚ƒã€ã“ã®ã¤ãŽ;ja_konotsugi ã˜ã—ã‚“;jishin ã˜ã—ã‚“;jishin ã˜ã—ょをã²ã;jishowohiku ã˜ã‚†ã†;jiyuu ã˜ã‚†ã†ã˜ã‹ã‚“;jiyuujikan ã˜ã‚‡ã†ãš;jouzu ã˜ã‚‡ã†ãšã«;jouzuni ã˜ã‚…ã‚“ã°ã‚“;junban ã˜ã‚…ã‚“ã³;junbi ã˜ã‚…ã†ã‚ˆã£ã‹;juuyokka カーテン;kaaten ã‹ã©ã†ã‹;kadouka ã‹ãŒã¿;kagami ã‹ã„;kai ã‹ã„ã‚;kaiwa ã‹ã£ã“;kakko ã‹ã¾ã„ã¾ã›ã‚“;kamaimasen ã‹ã¾ã‚ãªã„;kamawanai ã‹ãªã‚‰ãš;kanarazu ã‹ã‚“ãŒãˆã‚‹;kangaeru ã‹ã‚“ã”ãµ;kangofu ã‹ã‚“ã˜ã‚‹;kanjiru ã‹ã‚‰ã ;karada ã‹ã‚‰ã„;karai ã‹ã™;kasu ã‹ãŸã¡;katachi ã‹ã¤;katsu ã‹ã†ã“ã¨ã«ã™ã‚‹;kaukotonisuru ã‹ã‚ã;kawaku ã‹ã‚ã‚‹;kawaru ã‹ã‚ˆã†;kayou ã‹ã–ã‚‹;kazaru ã‹ãœ;kaze ã‹ãœ;kaze ã‘ã‚“ãã‚…ã†;kenkyuu ã‘ã‚“ãã‚…ã†ã—ã¤;kenkyuushitsu ã‘ã‚“ã‚ã„;kenmei ã‘ã—ã”ã‚€;keshigomu ã‘ã£ã—ã¦;kesshite ãã³ã—ã„;kibishii ãã‘ã‚“;kiken ãã‚“ãˆã‚“;kin_en ããŸãªã„;kitanai ãã‚ã‚ã‚‹;kiwameru コギャル;kogyaru ã“ãã§ã‚“;kokuden ã“ãã”;kokugo ã“ã¾ã‚‹;komaru ã“ã‚ã¶;korobu ã“ã—;koshi ã“ã—ょã†;koshou ã“ãŸãˆ;kotae ã“ã†ã¡ã‚‡ã†;kouchou ã“ã†ãˆã„;kouei ã“ã†ãŽ;kougi ã“ã†ã„ã†;kouiu ã“ã†ã¨ã†ãŒã£ã“ã†;koutougakkou ãらã¹ã‚‹;kuraberu ãらã„;kurai ãょã;kyoku ãょã†;kyou ãょã†ã‹ã—ょ;kyoukasho ãょã†ã—ã¤;kyoushitsu ãã‚…ã†ã«;kyuuni ã¾ã¡ã‚ã‚ã›;machiawase ã¾ã¡ãŒã„;machigai ã¾ã„ã‚‹;mairu ã¾ãªã¶;manabu ã¾ã­ã;maneki ã¾ã«ã‚ã†;maniau ã¾ã‚‹ã„;marui ã‚ãŒã­ã‚’ã‹ã‘ã‚‹;meganewokakeru ã‚ãŒã•ã‚ã‚‹;megasameru ã‚ã„れã„;meirei ã‚ã–ã‚ã‚‹;mezameru ã¿ã«ã„ã;miniiku ã¿ãŸã„;mitai ã‚‚ã˜;moji ã‚‚ã¤;motsu ã‚‚ã†ã™ãã§ã™;mousugudesu ã‚€ã‹ã„;mukai ã‚€ã“ã†;mukou むり;muri むりã«;murini ãªã®ã‹;nanoka ãªã‚‰ã¹ã‚‹;naraberu ãªã‚‰ã¶;narabu ãªã‚‰ã†;narau ã­ã‚€ã‚Œãªã„;nemurenai ã«ãŒã„;nigai ã«ã˜ã‚…ã†ã‚ˆã£ã‹;nijuuyokka ã«ã‹ã„;nikai ã«ã‚“ã˜ã‚“;ninjin ã«ã—;nishi ã®ã§;node ã®ã«;noni ã«ã‚…ã†ãŒã;nyuugaku ãŠã“ã™;okosu ãŠãれる;okureru ãŠãりもã®;okurimono ãŠãりã•ã;okurisaki ãŠãã‚‹;okuru ãŠã¿ã‚„ã’;omiyage ãŠã‚‚ã„;omoi ãŠã‚‚ã„ã ã™;omoidasu ãŠã‚‚ã„ã§;omoide ãŠã‚‚ã†;omou ãŠãªã˜;onaji ãŠãŠã„;ooi オートãƒã‚¤;ootobai ãŠã‚Œã„;orei ãŠã•ãã«ã—ã¤ã‚Œã„ã—ã¾ã™;osakinishitsureishimasu ãŠã—ã„れ;oshiire パソコン;pasokon らããª;rakuna らã—ã„;rashii れã„;rei れã„ã¼ã†;reibou りゆã†;riyuu りょã†;ryou ã•ã³ã—ã„;sabishii ã•ãŒã‚‹;sagaru ã•ãŒã™;sagasu ã•ãŒã™;sagasu ã•ã„ã”;saigo ã•ã„ãã‚“;saikin ã•ã„ã¦ã„;saitei ã•ã„ã‚„ã;saiyaku ã•ã;saku ã•ãã¶ã‚“;sakubun ã•ã‚“ã‹ã;sankaku ã•ã—ã‚ã’ã‚‹;sashiageru ã›ã„ã‹ã„;seikai ã›ã„ã‹ã;seikaku ã›ã„ã›ã;seiseki ã›ã;seki ã›ãªã‹;senaka ã—ゃã—ã‚“ã‹;shashinka ã—ゃã—ã‚“ã‚’ã¨ã‚‹;shashinwotoru ã—ã‚ã„;shiai ã—ã°ãµ;shibafu ã—ã°ã‚‰ãã§ã™;shibarakudesu ã—ã‹;shika ã—ã¾;shima ã—ã¾ã‚‹;shimaru ã—ã‚‚;shimo ã—ãªã‚‚ã®;shinamono ã—ã‚“ã±ã„;shinpai ã—らã¹ã‚‹;shiraberu ã—ã‚‹;shiru ã—ãŸã;shitaku ã—ã¤ã‚‚ã‚“;shitsumon ã—ょãã©ã†;shokudou ã—ょã†ãŒã£ã“ã†;shougakkou ã—ょã†ã˜ã‚‡;shoujo ã—ょã†ã˜ã‚‡ã†;shoujou ã—ょã†ãŸã„;shoutai ã—ã‚…ã£ãã‚“;shukkin ã—ã‚…ãã ã„ã‚’ã ã™;shukudaiwodasu ã—ã‚…ã¿;shumi ã—ã‚…ã†ã‚Š;shuuri ãれã«;soreni ãã¤ãŽã‚‡ã†ã—ã;sotsugyoushiki ãã†ã˜;souji ã™ã¹ã‚Šã‚„ã™ã„;suberiyasui ã™ã;sugu ã™ã„ã©ã†;suidou ã™ã„ãˆã„;suiei ã™ã„ã‹;suika ã™ã£ã‹ã‚Š;sukkari ã™ã‚€;sumu ã™ã‚ã‚‹;suwaru ã™ãšã—ã„;suzushii ãŸã¡ã„りãã‚“ã—;tachiirikinshi ãŸã„ãµã†;taifuu ãŸã„ã„ã‚“;taiin ãŸã¦ã‚‹;tateru ãŸã¨ãˆã°;tatoeba ãŸãšã­ã‚‹;tazuneru ãŸãšã­ã‚‹;tazuneru ã¦ã¾ãˆ;temae ã¦ã‚“らんã‹ã„;tenrankai ã¦ã¤ã ã„;tetsudai ã¨ã¶;tobu ã¨ã„ã†;toiu ã¨ã„ã‚れãŸ;toiwareta ã¨ã“ã‚;tokoro ã¨ã“ã‚ã§;tokorode ã¨ã“ã‚ã§ã™;tokorodesu ã¨ã;toku ã¨ãã«;tokuni ã¨ã¾ã‚‹;tomaru ã¨ã«ã‹ã;tonikaku ã¨ãŠã‹;tooka ã¨ãŠã‚‹;tooru ã¨ã‚Šã‚ãˆãš;toriaezu ã¨ã†ã¨ã†;toutou ã¤ã„ãŸã¡;tsuitachi ã¤ãã‚‹;tsukuru ã¤ã¾ã‚‰ãªã„;tsumaranai ã¤ã‚ãŸã„;tsumetai ã¤ã‚Œã¦ãã‚‹;tsuretekuru ã¤ã‚ˆã„;tsuyoi ã†ã‘ã‚‹;ukeru ã†ã‚‹;uru ã†ã™ã„;usui ã†ã¤ã™;utsusu ã†ã¤ã™;utsusu ã‚ã‹ã‚Œã‚‹;wakareru ã‚ã‘;wake ã‚れる;wareru ã‚ã‚‹;waru ã‚ãŸã‚‹;wataru やりã‹ãŸ;yarikata ã‚„ã›ã¦ã„ã‚‹;yaseteiru よã”れる;yogoreru よã»ã†;yohou よã“;yoko よã;yoku よã;yoku よãã˜ã¤;yokujitsu よんã‹ã„;yonkai よる;yoru よã—ã‚…ã†;yoshuu よã¦ã„;yotei よã†;you よã†ã ;youda よã†ãµã;youfuku よã†ã‹;youka よã†ã«ãªã‚Šã¾ã—ãŸ;youninarimashita よã†ã™;yousu よã‚ã„;yowai ゆれる;yureru ゆã†ãˆã‚“ã¡;yuuenchi ユーロー;yuuroo ãœã‚“ã¶;zenbu ãœã‚“ã¶ã§;zenbude ãšã£ã¨;zutto ã ã„ã„ã£ã‹;daiikka ã«ã»ã‚“ã”;nihongo ã¹ã‚“ãょã†ã™ã‚‹;benkyousuru ã ã„ãŒã;daigaku ã‚ã‚‹;aru ãŸã¦ã‚‚ã®;tatemono ãŠãŠãã„;ookii ãã—ã¦;soshite りã£ã±ã ;rippada ãŒãã›ã„;gakusei ã‹ãš;kazu ãŠãŠã„;ooi ãªã‹ã‚€ã‚‰;nakamura ã«ã»ã‚“ã˜ã‚“;nihonjin ãŸã¡;tachi ã¾ã„ã«ã¡;mainichi ãŠã—ãˆã‚‹;oshieru ãょã†ã—ã¤;kyoushitsu ã¯ãªã™;hanasu ã«ã»ã‚“ã«ã£ã½ã‚“;nihonnippon ãŒã£ã‹;gakka ã«ã»ã‚“ãŒã£ã‹;nihongakka ã¡ã„ã•ã„;chiisai ãれã„ã ;kireida ã„ã;iku ãƒã‚¹;basu ãょã†;kyou ã”ãœã‚“;gozen ã”ãœã‚“ã¡ã‚…ã†;gozenchuu ã˜ã‚…ãŽã‚‡ã†;jugyou ã—ã‚…ã£ã›ã;shusseki ã—ã‚…ã£ã›ãã™ã‚‹;shussekisuru ã¨ã—ょã‹ã‚“;toshokan ã»ã‚“;hon よむ;yomu ã—ãšã‹ã ;shizukada ã“ã‚“ã°ã‚“;konban ãŸã‚“ã”;tango ãれã‹ã‚‰;sorekara ã•ãã¶ã‚“;sakubun ãã®ã‚ã¨;sonoato ã¨ã‚‚ã ã¡;tomodachi ã¦ãŒã¿;tegami ãŸã®ã—ã„;tanoshii ã•ã‚“;san ãŠãŒã‚;ogawa ã ã„ã«ã‹;dainika ã‹ãžã;kazoku ã”ã«ã‚“;gonin ã¡ã¡;chichi ãŒã„ã‚€ã—ょã†;gaimushou ã¯ã¯;haha ãˆã„ã”;eigo ã¨ã¦ã‚‚;totemo ã„ããŒã—ã„;isogashii ã«ã‚;niwa ã²ã‚ã„;hiroi ã°ã‚‰;bara ãªã©;nado ã¯ãª;hana ã•ã;saku ãょã†ã ã„;kyoudai ã‚ã«;ani ãŠãã‚‹;okiru パン;pan ã‚’ã§ã‚‹;woderu ã“ã†ãŽ;kougi ã¯ã˜ã¾ã‚‹;hajimaru ã¶ã‚“ãŒã;bungaku ãœã‚“ãœã‚“ãªã„;zenzennai ãŸã„ãã¤;taikutsu ãŸã„ãã¤ã™ã‚‹;taikutsusuru れãã—;rekishi ã’ã¤ã‚ˆã†ã³;getsuyoubi ã™ã„よã†ã³;suiyoubi ã‚„ã•ã—ã„;yasashii ã©ã„ã¤ã”;doitsugo ã˜ã‚‡ã†ãšã ;jouzuda ã‚ã‹ã‚‹;wakaru ã—ã¤ã‚‚ã‚“;shitsumon ã—ã¤ã‚‚ã‚“ã™ã‚‹;shitsumonsuru ã“ãŸãˆã‚‹;kotaeru ã—ã‚“ã›ã¤ã ;shinsetsuda ãŠã‚ã‚‹;owaru ã»ã‹ã®ã²;hokanohi ã“ã†ãŒã„;kougai ã‚ã¾ã‚Šãªã„;amarinai ã¹ã‚“りã ;benrida ã¸ã„ã˜ã¤;heijitsu ã‹ã˜;kaji ã‹ã„ã‚‚ã®;kaimono りょã†ã‚Šã™ã‚‹;ryourisuru ã¤ãã‚‹;tsukuru ã•ら;sara ã‚らã†;arau ãã†ã˜;souji ãã†ã˜ã™ã‚‹;soujisuru ã­ã‚‹;neru ãã†ã§ã™;soudesu ã‹ã‚ˆã†ã³;kayoubi ã‚‚ãよã†ã³;mokuyoubi ãんよã†ã³;kin_youbi ã ã„よんã‹;daiyonka ã‘ã‚“ã¶ã¤;kenbutsu ã‘ã‚“ã¶ã¤ã™ã‚‹;kenbutsusuru ã©ã„ã¤ã¿ã‚“ã—ã‚…ãょã†ã‚ã“ã;doitsuminshukyouwakoku ã—ã‚…ã¨;shuto ã‹ã‚“ã“ã†ãゃã;kankoukyaku ã“ã“;koko ã²ã‚ã°;hiroba ã²ã‚‰ãŸ;hirata ã¤ã†ã‚„ã;tsuuyaku ã¤ã†ã‚„ãã™ã‚‹;tsuuyakusuru ã‚ãŸã‚Š;atari ã‚ã‚‹ã;aruku ã‚れ;are ホテル;hoteru ã­;ne ãれã«;soreni ã²ã‚ƒãã‚ãˆã¦ã‚‹;hyakumeeteru ã•ã‚;saa ã—ã‚‹;shiru ã²ã ã‚Š;hidari デパート;depaato ã¿ãŽ;migi ã—ã¡ã‚‡ã†ã—ゃ;shichousha ã“ã®;kono ã ã„ã¶ã¶ã‚“;daibubun ã¦ã‚Œã³ã¨ã†;terebitou ã†ãˆ;ue ã®ã¼ã‚‹;noboru エレベーター;erebeetaa ã‚ã„ã—ょ;meisho ã¯ã„ã‚‹;hairu ã“ãã§ã‚“;kokuden ãˆã;eki ãµãŸã‚Š;futari ã©ã„ã¤ã˜ã‚“;doitsujin ãŠã¡ã‚ƒ;ocha ã¡ã‚ƒ;cha ã ã„ã™ãã ;daisukida ã”;go ã—ょããŽã‚‡ã†;shokugyou ãŽã—;gishi よã;yoku ã¯ãŸã‚‰ã;hataraku ã‚ã­;ane ãŠã¨ã†ã¨;otouto ã»ã‚“ã¨ã†ã«;hontouni ãŸã„ã¸ã‚“ã ;taihenda ã‹ã‚“ã—ã‚“;kanshin ã‹ã‚“ã—ã‚“ã™ã‚‹;kanshinsuru ã©ãŠã‚Š;doori ãŠã‚Šã‚‹;oriru ãŠã¨ã†ã¨ã•ã‚“;otoutosan ãŠã„ã—ゃã•ã‚“;oishasan ã ã„ã”ã‹;daigoka ã»ã‚“ã‚„;hon_ya ãŸãªã‹;tanaka ãŒãã—ゃ;gakusha ã“ã¨ã—;kotoshi ã—ãŒã¤;shigatsu ヨーロッパ;yooroppa ã‘ã‚“ãã‚…ã†;kenkyuu ã‘ã‚“ãã‚…ã†ã™ã‚‹;kenkyuusuru ã™ã”ã™;sugosu ã§ã‹ã‘ã‚‹;dekakeru ã‹ã†;kau ã•ãŒã™;sagasu ãã®;sono ã¨ã;toki ãã®ã¨ã;sonotoki ã—りã‚ã„;shiriai ã‚ã†;au ã“ã‚“ã«ã¡ã¯;konnichiha ã²ã•ã—ã¶ã‚Šã§ã™;hisashiburidesu ã“ã®ã¾ãˆã‹ã‚‰;konomaekara ã¿ã›;mise ã†ã‚‹;uru よ;yo ã¶ã‚“ã‹;bunka ã‹ã‚“ã‘ã„;kankei ã³ã˜ã‚…ã¤;bijutsu ã˜ã—ょ;jisho ã‚‚ã¤;motsu ã‚ã‚;aa ã„ã£ã•ã¤;issatsu ã§ã‚‚;demo ãªã„よã†;naiyou ã„ã„よã„;iiyoi ã¸ã‚“;hen ã™ã“ã—;sukoshi ã•ã‚“ã½ã™ã‚‹;sanposuru ã‚りãŒã¨ã†;arigatou ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™;arigatougozaimasu ãŠã†ã¡;ouchi ã¨ãŠã„;tooi ã‹ã‚ˆã†;kayou ã‚„ã;yaku ã„ã¡ã˜ã‹ã‚“;ichijikan ã‹ã‹ã‚‹;kakaru ãŠã†ãµã;oufuku ãŠã†ãµãã™ã‚‹;oufukusuru ãµã¹ã‚“ã ;fubenda りょã†;ryou ã™ã‚€;sumu ã’ã—ã‚…ã;geshuku ã’ã—ã‚…ãã™ã‚‹;geshukusuru ã—ã‚…ã˜ã‚“;shujin ãŸã„ãŒã„ã¼ã†ãˆãã—ょã†;taigaibouekishou ã—ã”ã¨;shigoto ã™ã‚‹;suru ã²ã¨;hito ãã®ã†;kinou ã«ã¤ã„ã¦ã®;nitsuiteno ゆã£ãり;yukkuri ã•よã†ãªã‚‰;sayounara ã›ã„ã‹ã¤ã™ã‚‹;seikatsusuru ã¨ã„ã£ã—ょã«;toisshoni ã ã„ã‚ã£ã‹;dairokka ã¨ã†ãょã†;toukyou ã ã„ã„;daii ã‚ã‚“ã›ã;menseki ã›ã¾ã„;semai ã¨ã¡;tochi ã²ã¨ã³ã¨;hitobito ã—ã‚“ã˜ã‚…ã;shinjuku ã¨ã—ã‚“;toshin ã“ã†ãã†;kousou ã‘ã‚“ã¡ã;kenchiku ãã‚“ã ã„ã¦ãã ;kindaitekida ã•ã„ãã‚“;saikin ãŸã¤;tatsu ã‹ã„;kai ã«ã‹ã„ã ã¦;nikaidate ãµã‚‹ã„;furui ã‚ã•ãã•;asakusa ã›ã‚“ãã†ã˜;sensouji ã§ã‚“ã¨ã†ã¦ãã ;dentoutekida ã˜ã„ã‚“;jiin ã¨ãã«;tokuni ゆã†ã‚ã„ã ;yuumeida ã“ã†ãょ;koukyo ã„ã¡ã¶;ichibu れãã—ã¦ãã ;rekishitekida ã¨ã‹ã„;tokai ãŽã‚“ã–;ginza ã«ãŽã‚„ã‹ã ;nigiyakada ã¨ã“ã‚;tokoro ã›ã‚“ã‚‚ã‚“ã¦ã‚“;senmonten ã¤ãŽã¤ãŽã«;tsugitsugini ãªã‚‰ã¶;narabu ã˜ã‚…ã†ãŸã;juutaku ãŒã„;gai ã˜ã‚…ã†ãŸããŒã„;juutakugai ãµãˆã‚‹;fueru ã›ã„ã‹ãã ;seikakuda ã¡ã»ã†;chihou ã—ã‚…ã†ã¸ã‚“;shuuhen ã§ã¦ã„ã;deteiku ã¸ã‚‹;heru ã²ã‚‹ã¾;hiruma ã‘ã‚“;ken ã‹ã„ã—ゃ;kaisha ã¤ã¨ã‚ã«ã‚“;tsutomenin ã¤ã†ãã‚“;tsuukin ã¤ã†ãŒã;tsuugaku ãªãŒã„;nagai らã£ã—ã‚…ã®ã˜ã‹ã‚“;rasshunojikan ã“ã†ã¤ã†ãã‹ã‚“;koutsuukikan ã“ã†ããã©ã†ã‚;kousokudouro ã¦ã‚“;ten ã‹ã„ã‘ã¤;kaiketsu ã‹ã„ã‘ã¤ã™ã‚‹;kaiketsusuru ã“ã‚“ã”;kongo ã¯ã£ã¦ã‚“;hatten ã¯ã£ã¦ã‚“ã™ã‚‹;hattensuru ã®ãŸã‚ã«;notameni ã˜ã‚…ã†ã‚ˆã†ã ;juuyouda ã¸ã„ã»ã†;heihou キロ;kiro ãŠã—ãˆã¾ã—ãŸ;oshiemashita ã„ã‚ã„ã‚ã ;iroiroda ã˜ã‚…ã£ã‹ã„ã ã¦;jukkaidate ã„ã£ã‹ã„;ikkai ãŠãŠã;ooku ã«ãªã£ã¦ã„ã‚‹;ninatteiru ã„ã¡ãŒã¤;ichigatsu ã«ãŒã¤;nigatsu ã•ã‚“ãŒã¤;sangatsu ã”ãŒã¤;gogatsu ã‚ããŒã¤;rokugatsu ã—ã¡ãŒã¤;shichigatsu ã¯ã¡ãŒã¤;hachigatsu ã˜ã‚…ã†ãŒã¤;juugatsu ã˜ã‚…ã†ã„ã¡ãŒã¤;juuichigatsu ã˜ã‚…ã†ã«ãŒã¤;juunigatsu れã„;rei ã²ã‚ƒã;hyaku ã¾ã‚“;man ã—ã;shiki ã„ã¡ã­ã‚“;ichinen ãªã¤;natsu ã‚ã;aki ãµã‚†;fuyu ã¸ã‚“ã‹;henka ã¸ã‚“ã‹ã™ã‚‹;henkasuru ã¯ã£ãりã™ã‚‹;hakkirisuru ã‹ã‚“ã—ã‚“;kanshin よã»ã†;yohou ã¦ã‚“ãよã»ã†;tenkiyohou ã¯ã˜ã‚;hajime ã‚ã„ã•ã¤ã™ã‚‹;aisatsusuru ãˆã„ãょã†;eikyou ã‚ãŸãˆã‚‹;ataeru ã¤ã‚ˆã„;tsuyoi ã‹ãœ;kaze ãµã;fuku ãŠã ã‚„ã‹ã ;odayakada ã‚ãŸãŸã‹ã„;atatakai ã„ã‚;iro ã•ãら;sakura ã«ã‚ˆã£ã¦;niyotte ã¡ãŒã†;chigau ã˜ã‚‡ã†ã˜ã‚…ã‚“;joujun ã°ã„ã†;baiu ãã›ã¤;kisetsu ã¡ã‚…ã†ã˜ã‚…ã‚“;chuujun ã‚ã‚;ame ããŠã‚“;kion ã•ãŒã‚‹;sagaru ã‹ãªã‚Š;kanari ã™ãšã—ã„;suzushii ã‚ã¤ã„;atsui ã‚ãŒã‚‹;agaru ã—ã£ã‘;shikke よã‚ã„;yowai ã‚€ã—ã‚ã¤ã„;mushiatsui ã†ã¿;umi ã‚„ã¾;yama ã»ã£ã‹ã„ã©ã†;hokkaidou ã—ã‚“ã—ã‚…ã†;shinshuu りょã“ã†;ryokou りょã“ã†ã™ã‚‹;ryokousuru ãŠã‚り;owari ãŸã„ãµã†;taifuu ã¯ã’ã—ã„;hageshii ã•ã‚‹;saru ã»ã‚“ã‹ãã¦ãã ;honkakutekida ã„ã¡ã­ã‚“ã¡ã‚…ã†;ichinenchuu ã•ã‚ã‚„ã‹ã ;sawayakada ã‚ãŠã„;aoi ãら;sora ã’ã˜ã‚…ã‚“;gejun ã²ãˆã‚‹;hieru ã¤ã‚ãŸã„;tsumetai ã•ã‚€ã„;samui ã«ã»ã‚“ã‹ã„;nihonkai ãŒã‚;gawa ゆã;yuki ãã‚…ã†ã—ã‚…ã†;kyuushuu ã‹ã”ã—ã¾;kagoshima テキスト;tekisuto らã„ã—ã‚…ã†;raishuu テスト;tesuto ãらã„;kurai ãªã‚“ã­ã‚“;nannen ãªã‚“ã˜;nanji ãªã‚“ã«ã‚“;nannin ãªã‚“ã«ã¡;nannichi ãªã‚“よã†ã³;nan_youbi ãªã‚“ã©;nando ãªã‚“ã‹ã„;nankai ãªã‚“ã•ã¤;nansatsu ãªã‚“ã¾ã„;nanmai ãªã‚“ã°ã‚“;nanban ã©ã®;dono ã©ã‚“ãª;donna ã©ã†;dou よã¦ã„;yotei よã¦ã„ã™ã‚‹;yoteisuru ãŠã’ã‚“ãã§ã™ã‹;ogenkidesuka ã’ã‚“ãã ;genkida ã¨ã“ã‚ã§;tokorode ã¹ã¤ã«ã‚りã¾ã›ã‚“;betsuniarimasen ãょã†ã¨;kyouto ã¤ã‚Œã¦ã„ã;tsureteiku ãã‚ã—ã„;kuwashii ã—ã‚“ã‹ã‚“ã›ã‚“;shinkansen ã¯ãã¶ã¤ã‹ã‚“;hakubutsukan ã‘ã‚“ãŒã;kengaku ã‘ã‚“ãŒãã™ã‚‹;kengakusuru ãŠãŠã•ã‹;oosaka ã¶ã‚“らã;bunraku ã—ã‚…ã£ã±ã¤;shuppatsu ã—ã‚…ã£ã±ã¤ã™ã‚‹;shuppatsusuru ãµã‚“;fun ã”ã†;gou ã²ã‹ã‚Š;hikari ã¯ã‚„ã„;hayai ãŠã˜;oji ã¨ã¾ã‚‹;tomaru ãŠã‚‚ã†;omou ãã†;sou ã­ãŒã†;negau ãŠã­ãŒã„ã—ã¾ã™;onegaishimasu ã‚‚ã©ã‚‹;modoru ãã‚‹ã¾;kuruma ã²ãˆã„ã–ã‚“;hieizan ã†ã‚“ã¦ã‚“;unten ã†ã‚“ã¦ã‚“ã™ã‚‹;untensuru ã¸ãŸã ;hetada ã‘ã£ã“ã†ã ;kekkouda ã¾ã ãªã„;madanai ã¡ãš;chizu ã§ã‚‹;deru ã‹ã„ã•ã¤ãã¡;kaisatsuguchi ã¾ã¡ãŒãˆã‚‹;machigaeru ã™ã¿ã¾ã›ã‚“ãŒ;sumimasenga ãã£ã·;kippu ã‚ã‚“ãªã„;annai ã‚ã‚“ãªã„ã™ã‚‹;annaisuru ã‹ã™;kasu ã¡ã‚…ã†ã—ã‚“;chuushin ãょã†ã¿ã¶ã‹ã„;kyoumibukai ã“ã‚“ã©;kondo ããŸã„;kitai ããŸã„ã™ã‚‹;kitaisuru ãŠãれる;okureru ã»ã‹;hoka ã„ã¡ã«ã¡ã˜ã‚…ã†;ichinichijuu ã†ã¾ã‚Œã‚‹;umareru ã³ã˜ã‚…ã¤ã‹ã‚“;bijutsukan ã’ã„ã˜ã‚…ã¤;geijutsu ãŒãã‚‚ã‚“;gakumon ã¾ã¡;machi ã¨ã—ã¦;toshite ãŒã‚;gawa ãªãŒã‚Œã‚‹;nagareru ã‹ã‚“;kan ãょã†ã„ã;kyouiku ãŽã‚€ãょã†ã„ã;gimukyouiku ã†ã‘ã‚‹;ukeru ã‹ã‚‚ã;kamoku ã™ã†ãŒã;suugaku ãŒã„ã“ãã”;gaikokugo ã„ã¾ã‚Šã‚„ã;imariyaki ã²ã‚“;hin ã³ã˜ã‚…ã¤ã²ã‚“;bijutsuhin ãµã‹ã„;fukai ã’ã‚“ã ã„;gendai ã›ã„ã˜;seiji ãょã†ã¿;kyoumi ãã˜;kiji ã‹ãªã‚‰ãš;kanarazu ãˆã„ãŒ;eiga ãˆã„ãŒã‹ã‚“;eigakan ã¨ã†ã‚ã‚“;touron ã¨ã†ã‚ã‚“ã™ã‚‹;touronsuru ãã¤ãŽã‚‡ã†;sotsugyou ãã¤ãŽã‚‡ã†ã™ã‚‹;sotsugyousuru ã”;go ãã¼ã†;kibou ãã¼ã†ã™ã‚‹;kibousuru ã„ãŒã„;igai ã¯ã˜ã‚ã‚‹;hajimeru ã­ã£ã—ã‚“ã ;nesshinda ã¿ã˜ã‹ã„;mijikai ãã‹ã‚“;kikan ã˜ã‚‡ã†ãŸã¤ã™ã‚‹;joutatsusuru ã‚„ãã™;yakusu りゅã†ãŒã;ryuugaku りゅã†ãŒãã™ã‚‹;ryuugakusuru ãã‹ã„;kikai ã¾ã‚‚ãªã;mamonaku ãªã‚Œã‚‹;nareru ãªã‚‰;nara ã®ã†;nou ã‹ã¶ã;kabuki ã‹ã‚“ãŒãˆã‚‹;kangaeru ã“ã¾ã‚‹;komaru ã¯ã‚“ã¨ã—;hantoshi ãŸã„ã–ã„;taizai ãŸã„ã–ã„ã™ã‚‹;taizaisuru ã‘ã„ã‘ã‚“;keiken ã‘ã„ã‘ã‚“ã™ã‚‹;keikensuru ãã“ã;kikoku ãã“ãã™ã‚‹;kikokusuru ã™ãšã;suzuki ãµã‚‰ã‚“ã™ã”;furansugo ãµã‚‰ã‚“ã™ã˜ã‚“;furansujin ã™ã„ã™ã˜ã‚“;suisujin ãŸã‚“ã˜ã‚‡ã†ã³;tanjoubi パーティー;paatii ã•ã„;sai ã«ãªã‚‹;ninaru ãµã¤ã†;futsuu ã‹ã¦ã„;katei ãŠã•ãªã„;osanai ã“ã©ã‚‚;kodomo ã„ã‚ã†;iwau ãŠã¨ãª;otona ã°ã‚ã„;baai ã¨ãã¹ã¤ã ;tokubetsuda ãょã­ã‚“;kyonen ã¯ã‚“ãŒã‚Šã„ã˜ã‚“;hangariijin ãµã‚“ã„ã;fun_iki ã¡ã‚‡ãã›ã¤;chokusetsu ãµã‚Œã‚‹;fureru ã˜ã¶ã‚“;jibun ã—ょã†ãŸã„;shoutai ã—ょã†ãŸã„ã™ã‚‹;shoutaisuru プレゼント;purezento ã˜ã‚‡ã†ã¨ã†ã ;joutouda ãƒã‚¯ã‚¿ã‚¤;nekutai ãˆã‚‰ã¶;erabu よãã†;yosou よãã†ã™ã‚‹;yosousuru ã„ã˜ã‚‡ã†;ijou ãŠã©ã‚ã;odoroku ãれ;sore ãã«ã„ã‚‹;kiniiru ã¾ã‚ˆã†;mayou ã¦ã‚“ã„ã‚“;ten_in ãã†ã ã‚“;soudan ãã†ã ã‚“ã™ã‚‹;soudansuru ã•ã„ã”;saigo ã¾ã„;mai ã•ã¨ã†;satou ãã‚…ã†ã ;kyuuda ã‚„ããã;yakusoku ã‚„ãããã™ã‚‹;yakusokusuru ãŠãã„;osoi ãれãžã‚Œ;sorezore ãŠã„ã‚ã„;oiwai ãŠã„ã‚ã„ã‚’ã®ã¹ã‚‹;oiwaiwonoberu ã®ã¹ã‚‹;noberu ãã‚ã‚ã‚‹;kuwawaru ã«ã»ã‚“ã—ã‚…;nihonshu ã•ã‹ãª;sakana ã‚„ã•ã„;yasai ãŸã¾ã”;tamago ã•ã¾ã–ã¾ã ;samazamada ãˆã‚“ã’ã;engeki ゆã‹ã„ã ;yukaida ã„ã‘ã‚“;iken ã‹ãªã‚‰ãšã—ã‚‚ãªã„;kanarazushimonai ã—ょãã”;shokugo ã„ã‚‚ã†ã¨ã•ã‚“;imoutosan ã‹ãšã“;kazuko ピアノ;piano ã²ã;hiku ã¿ã‚“よã†;min_you ã†ãŸã†;utau ã†ãŸ;uta ã¦ã‚“ã‘ã„ã¦ãã ;tenkeitekida ãょã;kyoku ã„ã£ãょã;ikkyoku ãªã‚‰ã†;narau ã²ã¨ã‚Šã§;hitoride ãƒãƒ³ã‚¬ãƒªãƒ¼;hangarii よã‚ã“ã¶;yorokobu ãã®ã“ã‚;sonokoro ã“ã‚;koro ãŠã‚‚ã„ãŒã‘ãªã„;omoigakenai ã“ã°ã‚„ã—;kobayashi ãã†ãœã‚“ã ;guuzenda ã»ã†ã‚‚ã‚“;houmon ã»ã†ã‚‚ã‚“ã™ã‚‹;houmonsuru よãªã‹;yonaka ã™ãŽ;sugi ã‹ãˆã£ã¦ãã‚‹;kaettekuru ã«ã¨ã£ã¦;nitotte ã‚ã™ã‚ŒãŒãŸã„;wasuregatai ã²ã¨ã°ã‚“;hitoban ã¾ã•ãŠ;masao ãŠ;o ã«ã•ã¤;nisatsu ãã†ã€ãã†;sou_sou ã•ãŒã—;sagashi ã‚„ã™ã„;yasui ãªã‹ãªã‹ãªã„;nakanakanai ã¿ã¤ã‹ã‚‹;mitsukaru ã„ã¾;ima ãŸãŒã„;tagai ãŸãŒã„ã«;tagaini ã‹ã‚ã ;kawada よã¤ã‚„;yotsuya ã‹ã‚り;kawari ãã®ã‹ã‚り;sonokawari ã•ã‹ãªã‚„;sakanaya ã‚„ãŠã‚„;yaoya ã‚€ã‹ã„;mukai ãŠã™ã—ã‚„;osushiya ãã ã‚‚ã®;kudamono ãã•ã„;kusai ã«ãŠã„;nioi ã«ãŒã¦ã ;nigateda ã ã‚ã ;dameda ã“ã¨ã‚ã‚‹;kotowaru ã¤ãŽ;tsugi ã‚ãŠã‚„ã¾;aoyama ã¡ã‹ã¦ã¤;chikatetsu ã°ã‚“ã”ã†;bangou ãˆãˆã¨;eeto ã¾ã¤;matsu ã°ã‚“;ban ã‹ã¨ã†;katou ã“ã†ã—ã‚…ã†ã§ã‚“ã‚;koushuudenwa ã§ã‚“ã‚ã‚’ã‹ã‘ã‚‹;denwawokakeru ã°ã—ょ;basho ã™ãã ;suguda ã˜ã‚…ã£ã·ã‚“;juppun ã‹ã‚“ã˜;kanji ã‹ã‚“ã˜ãŒã„ã„;kanjigaii ã¸ã‚„ã ã„;heyadai ã“ã†ãã‚…ã†;koukyuu ã“れより;koreyori ã¾ãšãªã„;mazunai ãˆã‚“;en ã¤ã‚‰ã„;tsurai ãã‚‹ã—ã„;kurushii ã‹ã;kagu りãã†ã¦ãã ;risoutekida ã‚ã®;ano ãã‚ã‚‹;kimeru ã‹ãŠã„ã‚;kaoiro ã‹ãŠã„ã‚ãŒã‚ã‚‹ã„;kaoirogawarui ã‚ãŸã¾;atama ãã¶ã‚“ãŒã‚ˆã„;kibungayoi ãã¶ã‚“ãŒã„ã„;kibungaii ã‹ãœ;kaze ã„ã‘ã¾ã›ã‚“ã­;ikemasenne ãŸã„ã—ãŸã“ã¨ã¯ãªã„;taishitakotohanai ãŠã ã„ã˜ã«;odaijini ã©ã†ã„ã—ã¾ã—ã¦;douishimashite りょã†ã‚Šã‚„;ryouriya ã‚„;ya ã«ã»ã‚“りょã†ã‚Šã‚„;nihonryouriya ãã®ã¾ãˆ;sonomae ã„ã¡ã©;ichido ãŠã¯ãªã—ã™ã‚‹;ohanashisuru フランス;furansu ã³ã‚‡ã†ã;byouki ã‹ã‚“ãょã†;kankyou ã‚ã†;au ãšã¤ã†;zutsuu ãã¶ã‚“ãŒã‚ã‚‹ã„;kibungawarui ã™ã;sugu ã¶;bu ã„ãŽã‚Šã™ã˜ã‚“;igirisujin ã—ã‚“ã±ã„;shinpai ã—ã‚“ã±ã„ã™ã‚‹;shinpaisuru ã®ã¿ã‚‚ã®;nomimono ã‹ã£ã¦ãã‚‹;kattekuru ã‹ãˆã‚Š;kaeri ã¨ã¡ã‚…ã†;tochuu オレンジ;orenji ジュース;juusu オレンジジュース;orenjijuusu ãˆã‚“りょ;enryo ãˆã‚“りょã™ã‚‹;enryosuru りんã”;ringo ãªã—;nashi ã‹ã‚ã;kawaku ã®ã©ãŒã‹ã‚ã;nodogakawaku ã¿ãš;mizu ã™ã£ã‹ã‚Š;sukkari ã“ãŠã‚Š;koori ã¾ã©;mado ã‚ã‘ã‚‹;akeru ã»ã†;hou ã‚‚ã†ã—ã‚ã‘ã‚りã¾ã›ã‚“ã‚‚ã†ã—ã‚ã‘ã‚りã¾ã›ã‚“;moushiwakearimasenmoushiwakearimasen ã¡ã£ã¨ã‚‚ãªã„;chittomonai ã‹ã¾ã„ã¾ã›ã‚“;kamaimasen ã©ã†ã›;douse コンサート;konsaato ãŠã°ã•ã‚“;obasan ã’ã—ã‚…ãã®ãŠã°ã•ã‚“;geshukunoobasan ゆã†ã”ã¯ã‚“;yuugohan ãŸã®ã‚€;tanomu ã¦ã„ã­ã„ã ;teineida ã—ã‚“ã•ã¤;shinsatsu ã—ã‚“ã•ã¤ã™ã‚‹;shinsatsusuru りゅã†ã‹ã‚“;ryuukan ã¯ã‚„ã‚‹;hayaru ã¡ã‚…ã†ã—ゃ;chuusha ã¡ã‚…ã†ã—ゃã™ã‚‹;chuushasuru ã‚ã‚“ã›ã„;ansei ã‚‚ã†ã„ã¡ã©;mouichido よã†ã™;yousu ãã™ã‚Š;kusuri ã„ã¡ã«ã¡;ichinichi ã‹ã„;kai ã®ã‚€;nomu ã²ã¨ã°ã‚“ã˜ã‚…ã†;hitobanjuu ã‚ã›;ase ã‚ã›ã‚’ã‹ã;asewokaku ã‘ã•;kesa ã‚‚ã†;mou ãšã£ã¨;zutto ã²ã‚‹;hiru ã‹ã‚“ã ;kanda ã˜ã¤ã«;jitsuni ã„ã£ãã†;issou ã‚‚ã£ã¨ã‚‚;mottomo より;yori ã›ã‚“ã—ã‚…ã†;senshuu ã‚ãã¶;asobu ã‚ãã³ã«ã„ã;asobiniiku ãŸãšã­ã‚‹;tazuneru ã•ã„ãµ;saifu ã‚ã™ã‚Œã‚‹;wasureru ãŠã‹ã­;okane ã¨ã‚‹;toru ã§ã‚“ã‚ãŒã‹ã‹ã‚‹;denwagakakaru ãŠãããªã£ã¦ã—ã¾ã£ãŸ;osokunatteshimatta ã‹ãˆã£ã¦;kaette ã²ã¤ã‚ˆã†ã ;hitsuyouda ã—ã‚“ã±ã„ã ;shinpaida ã‹ã‚“ãŸã‚“ã ;kantanda ãµãã–ã¤ã ;fukuzatsuda ã‚ã‹ã‚Šã«ãã„;wakarinikui ã—らã¹ã‚‹;shiraberu ã‚りã‚ã„;wariai ã‚りã‚ã„ã«;wariaini ã“ã®ã¾ãˆ;konomae ãªã‹ã‚„ã¾;nakayama ã—ょãã˜;shokuji ã˜ã‚…ã†ãょ;juukyo ã‚„ã¯ã‚Š;yahari ã“ã‚“ãªã‚“ã ;konnanda ã‚ã‹ã„;wakai ã©ãã¨ãã ;dokutokuda ã„ã£ã±ã‚“ã¦ãã ;ippantekida ã—ãŸã—ã„;shitashii ã‚ã„ã ;aida ã•ã‚“ã‹ã’ã¤;sankagetsu ã—ãœã‚“ã ;shizenda ã²ã‚‡ã†ã’ã‚“;hyougen ã²ã‚‡ã†ã’ã‚“ã™ã‚‹;hyougensuru ã—ã‹ãŸ;shikata ã—ã‹ãŸãŒãªã„;shikataganai ã„ã£ã—ょã†ã‘ã‚“ã‚ã„;isshoukenmei ã©ã‚Šã‚‡ã;doryoku ã©ã‚Šã‚‡ãã™ã‚‹;doryokusuru ãŸã¨ãˆã°;tatoeba ã‘ã„ã¨ã†ã¦ãã ;keitoutekida ã‚ã¤ã‚ã‚‹;atsumeru ノート;nooto ノートã™ã‚‹;nootosuru ã»ã†ã»ã†;houhou ã“ã¾ã‹ã„;komakai ãã£ã¡ã‚‡ãã ;socchokuda ã–ã‚“ã­ã‚“ã ;zannenda ã˜ã‚‡ã—;joshi クラス;kurasu ãŒã£ã“ã†;gakkou よã«ã‚“;yonin ã•らã«;sarani ã‹ã‚“ã˜;kanji ãょã†ã˜ã‚…;kyouju ã—ゃã‹ã„ãŒãã—ゃ;shakaigakusha ã„ã£ã—ã‚…ã†ã‹ã‚“;isshuukan ã¡ã—ãã˜ã‚“;chishikijin ãã‚“ã‚ã†ã—ゃ;kinrousha ã¯ã°;haba ã¯ã°ã²ã‚ã„;habahiroi ã‹ã„ãã†;kaisou ã“ã†ã‹ã‚“;koukan ã“ã†ã‹ã‚“ã™ã‚‹;koukansuru ã“ã‚“ã—ã‚…ã†;konshuu ãŠã¨ãšã‚Œã‚‹;otozureru ã›ã„ã­ã‚“;seinen よã‹;yoka スãƒãƒ¼ãƒ„;supootsu ã‘ã‚“ã“ã†;kenkou ã¾ã„ã—ã‚…ã†;maishuu ãƒãƒ‰ãƒŸãƒ³ãƒˆãƒ³;badominton ãŸã£ãã‚…ã†;takkyuu ã™ã„ãˆã„;suiei ã™ã„ãˆã„ã·ã†ã‚‹;suieipuuru ã“ã¦ã‚“;koten ジャズ;jazu ビート;biito ギター;gitaa ã¤ã‘ãã‚ãˆã‚‹;tsukekuwaeru ã­ã£ã¡ã‚…ã†ã™ã‚‹;necchuusuru ã„ã†;iu ãµãã;fusoku ãµããã™ã‚‹;fusokusuru ã†ã‚“ã©ã†ãµãã;undoufusoku ãªã‚Šã‚„ã™ã„;nariyasui ã†ã‚“ã©ã†ã˜ã‚‡ã†;undoujou トラック;torakku ã„ã¡ã€ã«ã‹ã„;ichi_nikai ã¯ã—ã‚‹;hashiru ã“ã†ã‹;kouka ã—ã‚…ã¡ã‚‡ã†;shuchou ã—ã‚…ã¡ã‚‡ã†ã™ã‚‹;shuchousuru ã„ã£ã±ã‚“ã®ã²ã¨ã³ã¨;ippannohitobito ã—ã›ã¤;shisetsu りょã†ãã‚“;ryoukin りよã†;riyou りよã†ã™ã‚‹;riyousuru りよã†ã§ãã‚‹;riyoudekiru ã˜ã¤ã˜ã‚‡ã†;jitsujou ã›ã¤ã‚ã„;setsumei ã›ã¤ã‚ã„ã™ã‚‹;setsumeisuru ã«ã€ã•ã‚“ã«ã‚“;ni_sannin ウインタースãƒãƒ¼ãƒ„;uintaasupootsu ã‚„ã™ã¿;yasumi ãµã‚†ã‚„ã™ã¿;fuyuyasumi スキー;sukii スケート;sukeeto ã«ãŸã„ã—ã¦;nitaishite ã¯ã‚“ãŸã„ã™ã‚‹;hantaisuru ã—ょã†ã›ã¤;shousetsu ã—;shi ã—ã‚“ã˜ã‚‹;shinjiru ã‚ã‹ã‚‹ã„;akarui ã‘ã‚“ã“ã†ã ;kenkouda ãらã„;kurai ã‹ãªã—ã„;kanashii ã•ã³ã—ã„;sabishii ã—ã˜ã‚“;shijin ã¨ã‚ˆã¶;toyobu ã©ãã—ょ;dokusho テニス;tenisu ã˜ã‚†ã†ã ;jiyuuda ãœã„ãŸãã ;zeitakuda むりã ;murida ãµã•ã‚ã—ã„;fusawashii ã•ã„ã“ã†;saikou ã—ã‚…ã†ã¨ã;shuutoku ã—ã‚…ã†ã¨ãã™ã‚‹;shuutokusuru ã—ょã†ã‚‰ã„;shourai ã˜ã¤ã‚ˆã†ã¦ãã ;jitsuyoutekida ã‹ã„ã‚;kaiwa ã‚„ãã«ãŸã¤;yakunitatsu ã•ã‚“ã›ã„;sansei ã•ã‚“ã›ã„ã™ã‚‹;sanseisuru ãŸã„ã›ã¤ã ;taisetsuda ã¡ã‚…ã†ã„ã™ã‚‹;chuuisuru ã¡ã‚…ã†ã„ã¶ã‹ã„;chuuibukai ãƒãƒ¼ãƒ©ãƒ³ãƒ‰;poorando ã¯ã˜ã‚ã¦;hajimete ã‚‚ã†(+Mengenangabe);mou(+Mengenangabe) ã„ã£ã‹ã’ã¤;ikkagetsu ã¹ã¤ã®;betsuno ã¶ã‚‹ãŒã‚Šã‚ã˜ã‚“;burugariajin ドイツ;doitsu ãªãŒã•れる;nagasareru ã—ã‚…ã†ã—ょã;shuushoku ã—ã‚…ã†ã—ょãã™ã‚‹;shuushokusuru ã²ã•ã—ã¶ã‚Šã ;hisashiburida よã­ã‚“ã›ã„;yonensei ã¨ã†ã˜;touji ãªã‹ã®;nakano ã»ã†ãã†ãょã;housoukyoku ã—ã‘ã‚“;shiken ã—ã‘ã‚“ã‚’ã†ã‘ã‚‹;shikenwoukeru ã‘ã£ã‹;kekka ãŠã¡ã‚‹;ochiru ã¨ãŠã‚Š;toori ã—ã‚“ã¶ã‚“ã—ゃ;shinbunsha ジャーナリスト;jaanarisuto ã¨ãã¯ã„ã‚“;tokuhain ã‹ã¤ã‚„ã;katsuyaku ã‹ã¤ã‚„ãã™ã‚‹;katsuyakusuru りã‹ã„;rikai りã‹ã„ã™ã‚‹;rikaisuru ãŸã™ã‘ã‚‹;tasukeru ãŽã‚“ã“ã†;ginkou ãŽã‚“ã“ã†ã„ã‚“;ginkouin ã‹ãã˜ã¤ã ;kakujitsuda ãŒã„ã“ã†ã‹ã‚“;gaikoukan ãŸã„ã—ã‹ã‚“;taishikan ãょã†ãã†;kyousou ãょã†ãã†ã™ã‚‹;kyousousuru りã¤;ritsu ã‹ã„ãŒã„;kaigai ã¡ã‚…ã†ã–ã„;chuuzai ã¡ã‚…ã†ã–ã„ã™ã‚‹;chuuzaisuru ã—ょã†ã—ゃ;shousha ã—ょã†ã—ゃã„ã‚“;shoushain ãªãŒã„;nagai ãょã†ã—;kyoushi ã‹ã‚ã‚‹;kawaru ããŸã„ã¦ãã ;gutaitekida ã®ã†ã¿ã‚“;noumin ãµãã—ã¾ã‘ã‚“;fukushimaken ã®ã†ãã‚“;nouson ã‚ã†ã©ã†;roudou ã‚ã†ã©ã†ã™ã‚‹;roudousuru ãã‚ã†;kurou ãã‚ã†ã™ã‚‹;kurousuru ã®ã†ãŽã‚‡ã†;nougyou ã˜ã‚…ã†ã˜ã™ã‚‹;juujisuru ã„ãªã‹;inaka ã«ã‚ã„;niai ã•ã‚ãŒã—ã„;sawagashii ã¯ãªã‚Œã‚‹;hanareru ã—ãœã‚“;shizen ãŠãã‚‹;okuru ãã‹ã„;kikai ãã‹ã„ã‹;kikaika ã™ã™ã‚€;susumu らãã ;rakuda ã‹ã„ãœã‚“;kaizen ã‹ã„ãœã‚“ã™ã‚‹;kaizensuru ã‘ã£ã—ã‚“;kesshin ã‘ã£ã—ã‚“ã™ã‚‹;kesshinsuru ã‚„ã¾ã ;yamada ã›ã„ã˜ã‹;seijika ã‹ã„ã—ゃã„ã‚“;kaishain ã‚ã†ã©ã†ãã¿ã‚ã„;roudoukumiai ã‹ã¤ã©ã†;katsudou ã‹ã¤ã©ã†ã™ã‚‹;katsudousuru ã—ã‚“ã½ã¦ãã ;shinpotekida ã‚ã†ã©ã†ã—ゃ;roudousha ã˜ã‚‡ã†ã‘ã‚“;jouken ã›ã„ã“ã†;seikou ã›ã„ã“ã†ã™ã‚‹;seikousuru ã‹ã‚“ã“ã†;kankou ã“ãりã¤;kokuritsu ã“ãりã¤ã¨ã—ょã‹ã‚“;kokuritsutoshokan ã²ã¤ã‚ˆã†;hitsuyou ã“ã†ã‹ã‚“ã§ãã‚‹;koukandekiru アクセント;akusento ã‹ã‚むら;kawamura ã“ã†ã—;koushi ãˆã‚‹;eru ã¶ã‚Œã²ã¨ã’ã;burehitogeki ã‹ã®ã˜ã‚‡;kanojo ãれん(=ãã³ãˆã¨ã—ゃã‹ã„ã—ã‚…ãŽãょã†ã‚ã“ãれんã½ã†);soren(=sobietoshakaishugikyouwakokurenpou) ãŽãょã;gikyoku ブレヒトã®ãŽãょã;burehitonogikyoku ã•ãã²ã‚“;sakuhin ã‹ã‚“ã—ょã†;kanshou ã‹ã‚“ã—ょã†ã™ã‚‹;kanshousuru ã—ã°ã„;shibai ã„ã‚“ã—ょã†;inshou ã—ゃã‹ã„;shakai ã—ゃã‹ã„ã¦ãã ;shakaitekida ã‘ã„ã–ã„ã¦ãã ;keizaitekida ã‚らゆる;arayuru ã¶ã‚“ã‚„;bun_ya ã ã‚“ã›ã„;dansei ã˜ã‚‡ã›ã„;josei ã‘んり;kenri ãŽã‚€;gimu ã’ãã ã‚“;gekidan ãˆã‚“ã—ã‚…ã¤ã‹;enshutsuka ã¯ã„ゆã†;haiyuu ã‹ã„;kai ã˜ã‚‡ã‚†ã†;joyuu ã©ã†ã‚Šã‚‡ã†;douryou ã®ã‚‚ã¨ã«;nomotoni ã•ã‚“ã‹;sanka ã•ã‚“ã‹ã™ã‚‹;sankasuru ã†ã‚‰ã‚„ã¾ã—ã„;urayamashii れã„;rei ã‘ã£ã“ã‚“;kekkon ã‘ã£ã“ã‚“ã™ã‚‹;kekkonsuru ãµãŸã‚“;futan ãµãŸã‚“ã™ã‚‹;futansuru ãŠã£ã¨;otto ã—ゃã‹ã„ã—ã‚…ãŽ;shakaishugi ã—ゃã‹ã„ã—ã‚…ãŽã“ã;shakaishugikoku ã¤ã¾;tsuma ã¤ã¥ã‘ã‚‹;tsudukeru ã‚ãã¾ã‚Œã‚‹;megumareru ã™ã¦ã‚‹;suteru ã—ã‚…ãµ;shufu ã—ãりã«;shikirini ãŠã‚‚ã„ã ã™;omoidasu ãã†ã‚Šã¤;souritsu ãã†ã‚Šã¤ã™ã‚‹;souritsusuru ã’ãã˜ã‚‡ã†;gekijou レパートリー;repaatorii ã«ã‚“ã;ninki ã«ã‚“ãã®ã‚ã‚‹;ninkinoaru ã™ãれる;sugureru ã™ãれãŸ;sugureta ãˆã‚“ãŽ;engi ã‹ã‚“ãゃã;kankyaku ã•ã‹ã‚“ã ;sakanda ã¯ãã—ã‚…;hakushu ã¯ãã—ã‚…ã™ã‚‹;hakushusuru ã¯ã‚“ã®ã†;hannou ã¯ã‚“ã®ã†ã™ã‚‹;hannousuru ã‹ã‚“ã’ã;kangeki ã‹ã‚“ã’ãã™ã‚‹;kangekisuru ã¾ã‚“ã„ã‚“;man_in ã¦ã«ã„れる;teniireru ã«ã‚…ã†ã˜ã‚‡ã†ã‚Šã‚‡ã†;nyuujouryou ãµãã‚€;fukumu ã™ã¹ã¦;subete ã“ã£ã‹;kokka オペラ;opera ã—ょã†ã‚Œã„;shourei ã—ょã†ã‚Œã„ã™ã‚‹;shoureisuru ã–ã„ã›ã„ã¦ãã ;zaiseitekida ãˆã‚“ã˜ã‚‡;enjo ãˆã‚“ã˜ã‚‡ã™ã‚‹;enjosuru ãŠã—ã‚€;oshimu ã¶ã‚“ã‹ã—ょã†;bunkashou ã‹ã‚‰ã„;karai ãˆã„ã¶ã‚“ãŒã;eibungaku ãŸã ;tada ã„ã£ã½ã†;ippou ã¨ãã„ã ;tokuida ã¨ã“ã‚ãŒ;tokoroga ã†ã—ã‚;ushiro ã‚‚ã¨;moto ã»ã‹;hoka ãã¨;soto ã¨ã“ã‚;tokoro ã¦ã¤ã ã„;tetsudai ã˜ã‚…ã‚“ã³;junbi ã˜ã‚…ã‚“ã³ã™ã‚‹;junbisuru ã»ã¨ã‚“ã©ãªã„;hotondonai ã¨ã—ã†ãˆ;toshiue よゆã†;yoyuu ゆã§ãŸã¾ã”;yudetamago ミルク;miruku ã™ã¾ã™;sumasu ã‹ãŸã¥ã‘;kataduke コップ;koppu ナイフ;naifu フォーク;fooku スプーン;supuun ãŠã‚†;oyu ã—ょã£ã;shokki ã¨ã ãª;todana ãƒã‚¿ãƒ¼;bataa れã„ãžã†ã“;reizouko ã„れる;ireru ã—ょããŸã;shokutaku ãµã;fuku テーブルセンター;teeburusentaa ã‹ã‘ã‚‹;kakeru ã‹ã³ã‚“;kabin ã„ã¾;ima ãã‚‚ã¡;kimochi ãã‚‚ã¡ãŒã„ã„;kimochigaii ãŸã—ょã†;tashou よãã˜ã¤;yokujitsu ãœã‚“ã¶;zenbu ã«ã¡ã‚ˆã†ã²ã‚“;nichiyouhin ã—ょãりょã†ã²ã‚“;shokuryouhin スーパーマーケット;suupaamaaketto ããŸã;kitaku ããŸãã™ã‚‹;kitakusuru ãŠã‚‚ã ;omoda ã“ã—らãˆã‚‹;koshiraeru ã²ã¾ã ;himada ã”ã¡ãã†ã™ã‚‹;gochisousuru ãŸã;taku ã—ã‚…ã‚‹ã„;shurui ãŠã‹ãš;okazu ã¿ãã—ã‚‹;misoshiru ã«ã;niku ジャガイモ;jagaimo ã‹ã‚;kawa ã‚€ã;muku ã«ã‚“ã˜ã‚“;ninjin キャベツ;kyabetsu ãã‚‹;kiru ã»ãŠã‚Œã‚“ãã†;hoorensou ã•ã¨ã†;satou ã—ãŠ;shio ã“ã—ょã†;koshou ã‚ã¶ã‚‰;abura ã™;su ã¡ã‚‡ã†ã¿ã‚Šã‚‡ã†;choumiryou ãŠã‚ã‚“;owan ã¯ã—;hashi ãªã‚‰ã¹ã‚‹;naraberu ãã‚ã†;sorou ã²ã¨ã¨ã;hitotoki ã™ã‚€;sumu ã‹ãŸã¥ã‘ã‚‹;katadukeru ã„ã‚„ãŒã‚‹;iyagaru ãªã¹;nabe フライパン;furaipan ã†ãˆã®;ueno ã²ãã†ã‘ã‚‹;hikiukeru ã§ã‚“ã;denki ã§ã‚“ããã†ã˜ã;denkisoujiki ã„ãˆã˜ã‚…ã†;iejuu ã—ãŸã®;shitano ã›ã‚“ãŸãã™ã‚‹;sentakusuru ã›ã‚“ãŸãã‚‚ã®;sentakumono ã»ã™;hosu ã¨ã‚Šã„れる;toriireru アイロン;airon アイロンをã‹ã‘ã‚‹;aironwokakeru ã‚ã‘ã‚‹;wakeru ãœã‚“ãŸã„;zentai ã‹ã‚“ã’ã;kangeki ã¤ãŸãˆã‚‹;tsutaeru タクシー;takushii ã•ã‚“ã‚‚ã‚“ãŠãºã‚‰;sanmon_opera ã˜ã‚‡ã†ãˆã‚“;jouen ã˜ã‚‡ã†ãˆã‚“ã™ã‚‹;jouensuru ã—ãŸãŒã£ã¦;shitagatte ã‹ã•ã­ã¦;kasanete ã«ãŠã„ã¦;nioite ã«ã‹ã‚“ã—ã¦;nikanshite ã«ã‹ã‚“れんã—ã¦;nikanrenshite ã‚’ã‚‚ã£ã¦;womotte ã«ã¤ã‚Œã¦;nitsurete ã«ã—ãŸãŒã£ã¦;nishitagatte ã«ãŠã†ã˜ã¦;nioujite ã«ãªã‚‰ã‚“ã§;ninarande ãŸã„ã—ãŸ;taishita ã„ã‚ゆる;iwayuru ã•ã‚‹;saru ãžã†;zou ãã¾;kuma ãŠã‚‚ã—ã‚ãã†ã ;omoshirosouda ã„ã‘ã‚‹;ikeru ã‹ã“ã‚€;kakomu ãŠã‹ã—;okashi れã“ãŠã©ã¦ã‚“;rekoodoten クリスマス;kurisumasu ã²ã“ã†ã;hikouki ã‹;ka ã›ãã«ã‚“;sekinin ã›ãã«ã‚“ã—ゃ;sekininsha ã‘ã„ゆ;keiyu ãã†ã“ã†;kuukou ã“ã†ãã†;koukuu ã¨ã¶;tobu ã¡ã‚‡ã£ã“ã†;chokkou ã¡ã‚‡ã£ã“ã†ã™ã‚‹;chokkousuru ã˜ã©ã†ã—ゃ;jidousha ã‚€ã‹ãˆã‚‹;mukaeru ã‚€ã‹ãˆã«ã„ã;mukaeniiku ã‚€ã‹ãˆã«ãã‚‹;mukaenikuru ã“ã†ãã†ã‘ã‚“;koukuuken りょã‘ã‚“;ryoken ã—ょるã„;shorui ãŸã—ã‹ã‚ã‚‹;tashikameru ãªãŒã‚ã‚‹;nagameru ã˜ã•;jisa ãµã—ãŽã ;fushigida ã—ã‚…ã£ã“ã;shukkoku ã—ã‚…ã£ã“ãã™ã‚‹;shukkokusuru カウンター;kauntaa ã‹ã‹ã‚Š;kakari ã‹ã‹ã‚Šã®ã²ã¨;kakarinohito ã«ã‚‚ã¤;nimotsu ã˜ã‚…ã†ã‚Šã‚‡ã†;juuryou ã¯ã‹ã‚‹;hakaru ã¡ã‚‡ã†ã‹;chouka ã¡ã‚‡ã†ã‹ã™ã‚‹;choukasuru ã¯ã‚‰ã†;harau ã¦ã¤ã¥ã;tetsuduki ã¨ã†ã˜ã‚‡ã†ã‘ã‚“;toujouken ãœã„ã‹ã‚“;zeikan ã¦ã«ã‚‚ã¤;tenimotsu ã‘ã‚“ã•;kensa ã‘ã‚“ã•ã™ã‚‹;kensasuru ã¾ã¡ã‚ã„ã—ã¤;machiaishitsu ã¨ãŠã™;toosu ã‚ã‚’ã¨ãŠã™;mewotoosu ããªã„;kinai ã›ã„ã‘ã¤ã ;seiketsuda ã¨ã†ã¡ã‚ƒã;touchaku ã¨ã†ã¡ã‚ƒãã™ã‚‹;touchakusuru ã®ã‚Šã‹ãˆã‚‹;norikaeru スãƒãƒ¥ã‚¢ãƒ‡ã‚¹;suchuadesu ãŸã¤;tatsu ゆã†ã†ã¤ã ;yuuutsuda ã¯ã£ã¡ã‚ƒã;hacchaku ã¯ã£ã¡ã‚ƒãã™ã‚‹;hacchakusuru ãŠãŠãŒãŸ;oogata ã˜ã‡ã£ã¨ã;jettoki ら;ra ãŸã„りã;tairiku ã¨ã³ã¤ã¥ã‘ã‚‹;tobitsudukeru ã“ã†ã ã„ã ;koudaida ã“ãã©;kokudo ã¿ãŠã‚ã™;miorosu ã‚らãŸã‚ã‚‹;aratameru ã‚らãŸã‚ã¦;aratamete ãªã‚ŠãŸãã†ã“ã†;naritakuukou ã¡ã‚ƒãりã;chakuriku ã¡ã‚ƒãりãã™ã‚‹;chakurikusuru ã«ã‚…ã†ã“ã;nyuukoku ã«ã‚…ã†ã“ãã™ã‚‹;nyuukokusuru ã•ã—ょã†;sashou ã—らã¹;shirabe ホール;hooru ã†ã‘ã¨ã‚‹;uketoru ã§ã‚“ã½ã†;denpou ã†ã¤;utsu ã§ã‚“ã½ã†ã‚’ã†ã¤;denpouwoutsu ã‹ã‚“ã‘ã„ã—ゃ;kankeisha ã—らã›ã‚‹;shiraseru ã—らã›ã¦ã‚ã‚‹;shirasetearu ã§ã‚€ã‹ãˆã‚‹;demukaeru ã¨ãªã„;tonai ã‚€ã‹ã†;mukau ãµã‚Šã‚€ã;furimuku ã‚ã¤ã¾ã‚‹;atsumaru ãªã”ã‚„;nagoya ã»ã„ãã—ょ;hoikusho よã†ã¡ãˆã‚“;youchien ã—ょã†ãŒã£ã“ã†;shougakkou ã¡ã‚…ã†ãŒã£ã“ã†;chuugakkou ã“ã†ã¨ã†ãŒã£ã“ã†;koutougakkou ã—ã•ã¤;shisatsu ã—ã•ã¤ã™ã‚‹;shisatsusuru ã¾ã‚ã‚‹;mawaru ã›ã‚“ã‚‚ã‚“ã‹;senmonka ãょã†ã„ãã—ょã†;kyouikushou ã’ã‚“ã–ã„;genzai ã¯ã£ãŸã¤;hattatsu ã¯ã£ãŸã¤ã™ã‚‹;hattatsusuru ã¯ã£ãŸã¤ã—ãŸ;hattatsushita ã—ã»ã‚“ã—ã‚…ãŽ;shihonshugi ã—ょ;sho ã¡ã‚‡ã†ã•;chousa ã¡ã‚‡ã†ã•ã™ã‚‹;chousasuru ãã«ãã«;kuniguni ãらã¹ã‚‹;kuraberu ã«ã‹ã‚“ã™ã‚‹;nikansuru ã“ãã¿ã‚“;kokumin ã„ã£ã±ã‚“;ippan ã—りã¤;shiritsu ã¡ã‚…ã†ã—ょã;chuushoku ã¨ã‚‚ã«;tomoni ã‚ã‚“ãªã„ã—ゃ;annaisha ãŠãŠã®;oono ã—;shi りゆã†;riyuu ã˜ã˜ã¤;jijitsu ã¨ãã—ã‚…ã ;tokushuda ã˜ã˜ã‚‡ã†;jijou ã›ã„ã©;seido ã™ã§ã«;sudeni ã­ã‚“ã’ã¤;nengetsu ã™ã†;suu ãŠã‚ˆã¶;oyobu ã»ã†ã‘ã‚“ã¦ãã ;houkentekida ã»ã†ã‘ã‚“;houken ã§ã‚“ã¨ã†;dentou ã­ã–ã™;nezasu ã­ã¤;netsu ã«ãŸã„ã™ã‚‹;nitaisuru ã›ã£ãょãã¦ãã ;sekkyokutekida ã²ã‚‡ã†ã‹;hyouka ã²ã‚‡ã†ã‹ã™ã‚‹;hyoukasuru ã‹ãŸã¡;katachi ã‚らã‚れる;arawareru ã›ã„ã;seiki ã—ã‚…ã†ãŒã;shuugaku パーセント;paasento ã¯ãªã—;hanashi ã®ãžã;nozoku アメリカ;amerika ã¤ã;tsugu ã«ã¤ã„ã§;nitsuide ã“ã†ã¨ã†ãょã†ã„ã;koutoukyouiku ã“ãˆã‚‹;koeru ã¨ã†ã‘ã„;toukei ã›ã‚“ã—ã‚“ã¦ãã ;senshintekida ã—ã¤;shitsu ã‹ã‚“れん;kanren ã‹ã‚“れんã™ã‚‹;kanrensuru ã«ã‹ã‚“れんã—ã¦;nikanrenshite ã‹ã‹ãˆã‚‹;kakaeru ã‹ãŸã‚‹;kataru ã—ã¿ã‚“;shimin ãã»ã‚“ã¦ãã ;kihontekida ã’ã‚“ãã;gensoku ã‚‚ã¨ã¥ã;motoduku ã®ã†ã‚Šã‚‡ã;nouryoku ãŠã†ã˜ã‚‹;oujiru ã«ãŠã†ã˜ã¦;nioujite ã³ã‚‡ã†ã©ã†ã ;byoudouda ã«ãŠã‘ã‚‹;niokeru よã•ã‚“;yosan ã ã„ãŒãã›ã„;daigakusei ãã†;sou ã—ã‚…ã£ã—ã‚“;shusshin ã˜ã‚‡ã—ãŒãã›ã„;joshigakusei むりょã†;muryou ã“ã†ã‚Šã¤;kouritsu ã—ゃ;sha レストラン;resutoran ã¡ã‚‡ã†ã—ょã;choushoku ゆã†ã—ょã;yuushoku ãˆã‚“ãã;ensoku ãªã‹ã˜ã¾;nakajima ã—ょãžã;shozoku ã—ょãžãã™ã‚‹;shozokusuru ãょã†ã—ょãã„ã‚“;kyoushokuin ã‚’ã¯ã˜ã‚;wohajime ã˜ã‚€;jimu ã˜ã‚€ã„ã‚“;jimuin ã²ã—ょ;hisho ã ã„ãŸã™ã†;daitasuu ãょã†ã“ã;kyoukoku ããŸã³ã‚Œã‚‹;kutabireru ããŒã¤ã;kigatsuku ã¯;ha ã‹ãŠ;kao ã¿ã®ã¾ã‚りã²ã‚“;minomawarihin ã‹ã‚‹ã„;karui ã¦ã•ã’ã¶ãã‚;tesagebukuro ãã‚‚ã‚‹;kumoru ã—ã‚…ã†ã”ã†;shuugou ã—ã‚…ã†ã”ã†ã™ã‚‹;shuugousuru ã»ã¼;hobo ã–ã›ã;zaseki ã™ã‚ã‚‹;suwaru ã¯ã£ã—ゃ;hassha ã¯ã£ã—ゃã™ã‚‹;hasshasuru ã„ãˆãªã¿;ienami ãŸãˆã‚‹;taeru ã•ゆã†;sayuu りょã†ãŒã‚;ryougawa ã‚€ãŽ;mugi ã¯ãŸã‘;hatake ã„ã¡ã‚ã‚“;ichimen ã²ã‚ãŒã‚‹;hirogaru ã„ã¡ã”;ichigo ã„ã¡ã”ã°ãŸã‘;ichigobatake ã—ã‚…ã†ã‹ã;shuukaku ã—ã‚…ã†ã‹ãã™ã‚‹;shuukakusuru ã˜ã;jiki ã“ã„;koi ã¯;ha ãã‚‹;kiru ã—ゃãŒã‚€;shagamu ã¿;mi ã¤ã‚€;tsumu ã‹ã”;kago ã—ゃã¹ã‚‹;shaberu ã­ã‚€ã„;nemui ã­ã‚€ã‚‹;nemuru ã„ã­ã‚€ã‚Šã™ã‚‹;inemurisuru ã ã„ã«ã˜ã›ã‹ã„ãŸã„ã›ã‚“;dainijisekaitaisen ã¡ã‚‡ããœã‚“;chokuzen ã‹ã„ã»ã†;kaihou ã‹ã„ã»ã†ã™ã‚‹;kaihousuru ãã‚“;gun ナãƒ;nachi ãã‚“ãŸã„;guntai ã›ã‚“ã¨ã†;sentou ã›ã‚“ã¨ã†ã™ã‚‹;sentousuru ã›ã‚“ã—;senshi ã›ã‚“ã—ã™ã‚‹;senshisuru ã¸ã„ã—;heishi ã¨ã‚€ã‚‰ã†;tomurau ã²;hi ã—;shi ã“ã£ãょã†;kokkyou ã“ãã›ã;kokuseki ã—ã‚…ã¤ã«ã‚…ã†ã“ã;shutsunyuukoku ã„ã‚‹;iru ã¯ã—;hashi ã‚ãŸã‚‹;wataru もり;mori ã»ãã„;hosoi ロマンãƒãƒƒã‚¯ã ;romanchikkuda ブルーベリー;buruuberii ã¤ã‹ã‚Š;tsukari ã‹ã‚“ã˜ã‚‹;kanjiru ã¿ãšã†ã¿;mizuumi ã‹ã„ã™ã„ãŽ;kaisuigi ã—ゃã—ã‚“;shashin ã—ゃã—ã‚“ã™ã‚‹;shashinsuru ボール;booru ãªã’ã‚‹;nageru ã¿ãŠãã‚‹;miokuru ãã‚“ãªã«;sonnani ã“ã£ã‹ã„;kokkai ãŽã‹ã„;gikai ã²ã‚‰ã;hiraku ã„ã£ã¦ã„;ittei ãŒã;gaku ãœã„ãã‚“;zeikin ã ã‘;dake ã›ã‚“ãょ;senkyo ã›ã‚“ãょã™ã‚‹;senkyosuru ã›ã‚“ãょã‘ã‚“;senkyoken ãŠã¨ã“;otoko ãŠã‚“ãª;onna ã—ã‚…ã†ãŽã„ã‚“;shuugiin ã•ã‚“ãŽã„ã‚“;sangiin ã“ã†ã›ã„;kousei ã“ã†ã›ã„ã™ã‚‹;kouseisuru ã˜ã‚‡ã†ã‚„ã;jouyaku ã¿ã¨ã‚ã‚‹;mitomeru ãã†ã‚Šã ã„ã˜ã‚“;souridaijin ã—ã‚ã„;shimei ã—ã‚ã„ã™ã‚‹;shimeisuru ã•ã„ã‘ã¤;saiketsu ã•ã„ã‘ã¤ã™ã‚‹;saiketsusuru ãŽã„ã‚“;giin ã¯ã‚“ã™ã†;hansuu ã•ã‚“ã¶ã‚“ã®ã«;sanbunnoni ã¶ã‚“;bun ã‘ã£ã›ã;kesseki ã‘ã£ã›ãã™ã‚‹;kessekisuru ã‹ã„ãŽ;kaigi ã»ã‚“ã‹ã„ãŽ;honkaigi ã‚€ã“ã†;mukou ãã‚“ãã‚…ã†ã ;kinkyuuda りんã˜;rinji ãŽã‘ã¤;giketsu ãŸã™ã†ã‘ã¤;tasuuketsu ã»ã†ã—ã;houshiki ã©ã†ã™ã†;dousuu ãŽã¡ã‚‡ã†;gichou ã‘ã£ã¦ã„;kettei ã‘ã£ã¦ã„ã™ã‚‹;ketteisuru ã«ã‚ˆã‚‹;niyoru ã¡ã‚‡ãã›ã¤ã›ã‚“ãょ;chokusetsusenkyo ãŽã›ã;giseki ã«ã‚“ã;ninki ã”ã¨ã«;gotoni ã‹ã„ã›ã‚“;kaisen ã‹ã„ã›ã‚“ã™ã‚‹;kaisensuru ãœã‚“ã“ã;zenkoku ã›ã‚“ãょã;senkyoku ãµ;fu ã¨ã†ãょã†ã¨;toukyouto ã;ku ãŠãŠã•ã‹ãµ;oosakafu ã˜ã‚†ã†ã¿ã‚“ã—ã‚…ã¨ã†ã˜ã¿ã‚“ã¨ã†;jiyuuminshutoujimintou ã—ゃã‹ã„ã¨ã†;shakaitou ãょã†ã•ã‚“ã¨ã†;kyousantou ã“ã†ã‚ã„ã¨ã†;koumeitou ã¿ã‚“ã—ゃã¨ã†;minshatou ã›ã„ã¨ã†;seitou ã ã„ã²ã‚‡ã†;daihyou ã ã„ã²ã‚‡ã†ã™ã‚‹;daihyousuru ã‚ã‚ã¦ã‚‹;awateru ニュアンス;nyuansu ã¶ã‚“;bun ã—ã‚…ã†ã¡ã‚…ã†ã‚Šã‚‡ã;shuuchuuryoku ã©ã†ã‘ã‚“;douken ã¾ãˆã‹ã‚;maekawa ãµã˜ã‚“;fujin ãŸã®ã—ã¿;tanoshimi ã¡ã¡ãŠã‚„;chichioya ã—ã¬;shinu ã‚ã‹ã‚Œã‚‹;wakareru ã—ã«ã‚ã‹ã‚Œã‚‹;shiniwakareru ã—ãŸãŒã†;shitagau ã‹ã“;kako ã˜ã£ã•ã„;jissai ãã†ã„ã†;souiu ã„ã£ã—ょã†;isshou ãŒã¾ã‚“;gaman ãŒã¾ã‚“ã™ã‚‹;gamansuru ã™ã¿;sumi ãªã;naku ã‘ã£ã—ã¦ãªã„;kesshitenai ã˜ã‚“ã›ã„;jinsei ã©ãりã¤;dokuritsu ã©ãりã¤ã™ã‚‹;dokuritsusuru ã«ã‚“ã’ã‚“;ningen ã‚ã¤ã‹ã†;atsukau ãŽã®ã†;ginou ã‘ã¤ã„;ketsui ã‘ã¤ã„ã™ã‚‹;ketsuisuru ã“ã‚“ãªã‚“;konnan ã»ã‚“ã‚„ã;hon_yaku ã»ã‚“ã‚„ãã™ã‚‹;hon_yakusuru アルãƒã‚¤ãƒˆ;arubaito アルãƒã‚¤ãƒˆã™ã‚‹;arubaitosuru ã‚‚ã¨ã‚ã‚‹;motomeru ã„ã‚ã‚“ãª;ironna ã¹ã‚“ãŒã;bengaku ãŒã‹;gaka ã°;ba ã—りã‚ã†;shiriau ã¯ã’ã¾ã™;hagemasu ãŸã™ã‘ã‚ã†;tasukeau ãらã™;kurasu ã„らã„;irai ã—ã‚…ã£ã±ã‚“;shuppan ã—ã‚…ã£ã±ã‚“ã™ã‚‹;shuppansuru ãょã†ã‚Šã‚‡ã;kyouryoku ãょã†ã‚Šã‚‡ãã™ã‚‹;kyouryokusuru ãŠã‹ã’ã§;okagede ãŠã‹ã’ã§ã™;okagedesu ã»ã—ょã†;hoshou ã»ã—ょã†ã™ã‚‹;hoshousuru ã›ã‚“ã”;sengo ã—ã‚“ã—ã‚…ã¤ã™ã‚‹;shinshutsusuru ã‘ã„ã“ã†;keikou ãŸã—ã‹ã ;tashikada ã‚ã ã¤;medatsu ã ã„ã˜ã‚“;daijin ãœã‚“ã‚ã‚“ã¦ãã ;zenmentekida ã®ã“ã™;nokosu れã„ãŒã„ã¦ãã ;reigaitekida ã„ãœã‚“;izen ã„ã¿;imi ã¾ã„ã¤ã;maitsuki ãŠã‚“ãŒãã‹ã„;ongakukai ãã†ã„;soui ã‚ã„ã˜;meiji ã‘ã‚“ãã‚…ã†ã—ゃ;kenkyuusha ã‚ã‚‹ã„ã¯;aruiha ã²ã‚‡ã†ã‚ã‚“ã‹;hyouronka ã•ã£ã‹;sakka ã‚ã‚“ã¶ã‚“;ronbun ãã‚“ã¹ã‚“ã ;kinbenda れã„ãŽ;reigi ãŸã ã—ã„;tadashii れã„ãŽãŸã ã—ã„;reigitadashii ã¡ã¤ã˜ã‚‡;chitsujo ã¾ã‚‚ã‚‹;mamoru ã‹ãŒãã¦ãã ;kagakutekida ã”ã†ã‚Šã¦ãã ;gouritekida ã—ãã†;shisou ã›ã„ã—ã‚“;seishin ãã‚“ã¡ã‚‡ã†;sonchou ãã‚“ã¡ã‚‡ã†ã™ã‚‹;sonchousuru ã—ã‚…ã†ãょã†ã¦ãã ;shuukyoutekida ã‹ã‚“ã¦ã‚“;kanten ã‹ã‚“ã•ã¤;kansatsu ã‹ã‚“ã•ã¤ã™ã‚‹;kansatsusuru ãŸã„ã—ょã†;taishou ã‚ã‚“ã˜ã‚‹;ronjiru ã„ã£ãŸã„;ittai ã¾ã•ã«;masani ã’ã‚“ã˜ã¤;genjitsu ã¡ã‚…ã†ã‚‚ã;chuumoku ã¡ã‚…ã†ã‚‚ãã™ã‚‹;chuumokusuru ãŸã‚“ã˜ã‚…ã‚“ã ;tanjunda ãŠã†ã¹ã„ã˜ã‚“;oubeijin ã¨ãã¨ã—ã¦;tokitoshite ãょããŸã‚“ã ;kyokutanda ã‚€ã˜ã‚…ã‚“;mujun ã‚€ã˜ã‚…ã‚“ã™ã‚‹;mujunsuru ãŸã„ã—ょã†ã¦ãã ;taishoutekida ã‚ã‚“;men ã©ã†ã˜;douji ルース・ベãƒãƒ‡ã‚£ã‚¯ãƒˆ;ruusu_benedikuto ãã;kiku ã‹ãŸãª;katana ã“ã†ã©ã†ã™ã‚‹;koudousuru ã¶ã‚“ã›ã;bunseki ã¶ã‚“ã›ãã™ã‚‹;bunsekisuru ã¯ã‚ãã™ã‚‹;haakusuru ã›ã„ã‹ã;seikaku ã¶ã¶ã‚“;bubun ã„ã‚“ã—ょã†ã¦ãã ;inshoutekida ã™ãªã‚ã¡;sunawachi ã«ã™ã‚‹ã¨;nisuruto ã‘ã‚“ã‹ã™ã‚‹;kenkasuru ãŠã¨ãªã—ã„;otonashii ã„ã°ã‚‹;ibaru ã‚ã„ã¦;aite ã°ã‹ã«ã™ã‚‹;bakanisuru ãŒã‚“ã“ã ;gankoda ã˜ã‚…ã‚“ã®ã†ã›ã„;junnousei ã˜ã‚…ã†ã˜ã‚…ã‚“ã ;juujunda ãŸã«ã‚“;tanin ã‹ã‚“ã—ょã†;kanshou ã‹ã‚“ã—ょã†ã™ã‚‹;kanshousuru ã¯ã‚‰;hara ã¯ã‚‰ã‚’ãŸã¦ã‚‹;harawotateru ã¡ã‚…ã†ã˜ã¤ã ;chuujitsuda ã‹ã‚“よã†ã ;kan_youda ãµã¡ã‚…ã†ã˜ã¤ã ;fuchuujitsuda ã„ã˜ã‚ã‚‹ã ;ijiwaruda ゆã†ã;yuuki ãŠãã³ã‚‡ã†;okubyou ã»ã—ã‚…ã¦ãã ;hoshutekida よã‚ã“ã‚“ã§;yorokonde ã†ã‘ã„れる;ukeireru ãã†ã”;sougo ã¾ã£ãŸã;mattaku ã¯ã‚“ã™ã‚‹;hansuru ã“ã˜ã‚“;kojin ãŠãŠã‹ã‚Œã™ããªã‹ã‚Œ;ookaresukunakare ã‘ã„ã›ã„;keisei ã‘ã„ã›ã„ã™ã‚‹;keiseisuru ã“ã‚“ãょ;konkyo ã„ãšã‚Œã«ã—ã¦ã‚‚;izurenishitemo ã“ã†ãžã†;kouzou ãã‚“ã ã„ã‹;kindaika ãã‚“ã ã„ã‹ã™ã‚‹;kindaikasuru ã‹ã¦ã„;katei ã‚€ã™ã³ã¤ã;musubitsuku ãœã‚“ã˜ã¤;zenjitsu ã‹ã•ã­ã‚‹;kasaneru ã‹ã•ã­ã¦;kasanete ã˜ã—ã‚“;jishin ã¦ã„ã‚ã‚“;teian ã¦ã„ã‚ã‚“ã™ã‚‹;teiansuru ãŒã„らã„ã”;gairaigo ã¿ã¿;mimi ã¿ã¿ã«ã™ã‚‹;miminisuru ã®ã‚Šã‚‚ã®;norimono ã“ã†ã“ã;koukoku ãã‚ãˆã‚‹;kuwaeru ã¨ã¯;toha ã›ã„ã—ã¤;seishitsu ã‚‚ã¨;moto ã¼ã“ãã”;bokokugo ã‹ã‚“ãœã‚“ã ;kanzenda ã•ã™;sasu ãªã‹ã°;nakaba ã½ã‚‹ã¨ãŒã‚‹ã˜ã‚“;porutogarujin ãŠã‚‰ã‚“ã ã˜ã‚“;orandajin ã›ã£ã—ょã;sesshoku ã›ã£ã—ょãã™ã‚‹;sesshokusuru ã¶ã‚“ã‚ã„;bunmei ã˜ã¶ã¤;jibutsu ã‚‚ãŸã‚‰ã™;motarasu ã„ã”;igo ãŠã†ã¹ã„;oubei ã‹ã‚Šã„れる;kariireru ã„ãµã;ifuku ã„ãŒã;igaku イタリア;itaria ã„ãŸã‚Šã‚ã”;itariago ã“ã†ãŽã‚‡ã†;kougyou ã—ょã†ãŽã‚‡ã†;shougyou ã—ã‚…ã†ãょã†;shuukyou ã¯ã‚“ã„;han_i ã¶ã‚“ã·;bunpu ã¶ã‚“ã·ã™ã‚‹;bunpusuru ãã‚“ã ã„;kindai りょã†ã„ã;ryouiki ã‚€ã‘ã‚‹;mukeru ã„ã£ã¡;icchi ã„ã£ã¡ã™ã‚‹;icchisuru ã‚ã‚りã‹ãˆã„ã”;amerikaeigo ã‚ã£ã¨ã†ã¦ãã ;attoutekida ã³ã‚ˆã†ã„ã‚“;biyouin ã‹ã¿;kami よã”れる;yogoreru シャンプー;shanpuu ããã‹ãˆã™;kikikaesu ヘアー;heaa ã»ã‚“らã„;honrai ã†ã—ãªã†;ushinau ã¤ã†ã‚ˆã†ã™ã‚‹;tsuuyousuru ãŠã†ã‹ãŒã„ã™ã‚‹;oukagaisuru ã—ã‚…ã†ã«ã‚…ã†;shuunyuu ãžã†ã‹;zouka ãžã†ã‹ã™ã‚‹;zoukasuru ã‹ã‚“ã’ã„;kangei ã‹ã‚“ã’ã„ã™ã‚‹;kangeisuru ã²ã‹ã‚“ã™ã‚‹;hikansuru ãŸã¡ã°;tachiba ã†ãŸãŒã†;utagau ãã‚‚ã¡ã‚’ã‚ã‚‹ãã™ã‚‹;kimochiwowarukusuru ã¨ã‹;toka ã§ã™ã‹ã‚‰;desukara ãˆã‚“りょã¶ã‹ã„;enryobukai ã˜ã—ã‚“;jishin ãã ã¤;sodatsu カーテン;kaaten ã¾ã£ã—ã‚ã ;masshiroda ã¤ã‚‚ã‚‹;tsumoru ãµã‚Šã¤ã¥ã;furitsuduku ã«ã€ã•ã‚“ã­ã‚“;ni_sannen セントラル・ヒーティング;sentoraru_hiitingu ã ã‚“ã¼ã†;danbou ã—ã‚…ã£ãã‚“;shukkin ã—ã‚…ã£ãã‚“ã™ã‚‹;shukkinsuru ã­ã¼ã†;nebou ã­ã¼ã†ã™ã‚‹;nebousuru ã›ã‚“ã‚ã‚“ã˜ã‚‡;senmenjo ã²ã’ã‚’ãã‚‹;higewosoru ãŠãŠã„ããŽ;ooisogi ãƒã‚¯ã‚¿ã‚¤ã‚’ã—ã‚ã‚‹;nekutaiwoshimeru ã‚ã‚“ã©ã†ã ;mendouda ワイシャツ;waishatsu セーター;seetaa ã›ã³ã‚;sebiro ã†ã‚ãŽ;uwagi ãªãŒãã¤;nagagutsu ã¯ã;haku ã¾ã«ã‚ã†;maniau ã‚ã‚ã¦ã¦;awatete ãŠã¡ã¤ã;ochitsuku ã„ã‚„ã ;iyada ã‹ã¿ã‚’ã¨ã‹ã™;kamiwotokasu ã‘ã—ょã†;keshou ã‘ã—ょã†ã™ã‚‹;keshousuru ã¿ã˜ãŸã;mijitaku ã¨ã¨ã®ãˆã‚‹;totonoeru ãã“ãˆã‚‹;kikoeru ã‚ã†ã‹;rouka ã«ãŒã‚らã„;nigawarai ã«ãŒã‚らã„ã™ã‚‹;nigawaraisuru ã“ã—;koshi ã¦;te ã‚ã¦ã‚‹;ateru ã„ãŸãã†ã ;itasouda ã§ã‚ã†;deau よã“ãŽã‚‹;yokogiru ゆã†ã³ã‚“ãょã;yuubinkyoku ã“ãŠã‚‹;kooru ã“ã‚ã¶;korobu ズボン;zubon ã¡ã“ã;chikoku ã¡ã“ãã™ã‚‹;chikokusuru れんらã;renraku れんらãã™ã‚‹;renrakusuru むり;muri むりã™ã‚‹;murisuru ã¡ã‚…ã†ã“ã;chuukoku ã¡ã‚…ã†ã“ãã™ã‚‹;chuukokusuru ã©ã‚“ã©ã‚“;dondon ã„ã‘ãªã„;ikenai ãã‚’ã¤ã‘ã‚‹;kiwotsukeru ã‹ã•ã‚’ã•ã™;kasawosasu ã‚ã†ã˜ã‚“;roujin ã™ãŒãŸ;sugata ã„ãŒã„ã ;igaida ã„ãŸã‚€;itamu ãŸã°ã“;tabako ã™ã†;suu ãŸã°ã“ã‚’ã™ã†;tabakowosuu ãŸã„ãã¤ã ;taikutsuda ãŠã‚‚ã„ã§;omoide ã—ãœã‚“ã‹ãŒã;shizenkagaku ã¯ãªã—ã‹ã‘ã‚‹;hanashikakeru ã»ã†ãã†;housou ã»ã†ãã†ã™ã‚‹;housousuru テレビã»ã†ãã†;terebihousou ã‹ã„ã—;kaishi ã‹ã„ã—ã™ã‚‹;kaishisuru ã—ょã†ã‚;shouwa ã°ãã¯ã¤ã¦ãã ;bakuhatsutekida ã„ããŠã„;ikioi ã„ã„ã™ãŽ;iisugi ããã©;sokudo ãµãã‚…ã†;fukyuu ãµãã‚…ã†ã™ã‚‹;fukyuusuru ã°ã‚“ã‚;banme カラーテレビ;karaaterebi マスコミ;masukomi ã—ã‚…ã ã‚“;shudan ã¯ãŸã™;hatasu ã‚„ãã‚り;yakuwari ã‚„ãã‚りをã¯ãŸã™;yakuwariwohatasu ã‹ã‚ã‚‹;kawaru ãã‚…ã†ããã ;kyuusokuda ãŸã‹ã¾ã‚‹;takamaru ã“ã†ã—ã;koushiki ã¯ã£ã´ã‚‡ã†;happyou ã¯ã£ã´ã‚‡ã†ã™ã‚‹;happyousuru ã›ãŸã„;setai ã¶ã‚“ã‹ã¦ãã ;bunkatekida ãŠã‚ˆã¼ã™;oyobosu ã‚€ã—ã™ã‚‹;mushisuru ã«ã£ã½ã‚“ã»ã†ãã†ãょã†ã‹ã„;nipponhousoukyoukai ã›ã‚“ã§ã‚“;senden ã›ã‚“ã§ã‚“ã™ã‚‹;sendensuru ã—ã‚…ã†ã«ã‚…ã†ã’ã‚“;shuunyuugen ã¿ã‚“ã‹ã‚“;minkan ã¦ã‚Œã³ãょã;terebikyoku ã°ã‚“ãã¿;bangumi ã¨ãªã‚‰ã‚“ã§;tonarande ã—ã¡ã‚‡ã†ã‚Šã¤;shichouritsu れんãžã;renzoku れんãžãã™ã‚‹;renzokusuru ã¡ã‚…ã†ã—;chuushi ã¡ã‚…ã†ã—ã™ã‚‹;chuushisuru ãりã‹ãˆã™;kurikaesu ã¾ã‚Œã ;mareda ã„ã¡;ichi ã—ã‚ã‚‹;shimeru ãŸã„ã©;taido ã¦ã„ã©;teido ã¯ã‚“ã ã‚“;handan ã¯ã‚“ã ã‚“ã™ã‚‹;handansuru ã†ã¡ã®ã“;uchinoko ãµã¾ã‚“;fuman ã”らã;goraku ã‚€ã ã ;mudada ã¤ã„ã‚„ã™;tsuiyasu ãªã’ã;nageku ã²ãªã‚“;hinan ã²ãªã‚“ã™ã‚‹;hinansuru ã­ã‚“れã„;nenrei ã›ã„ã¹ã¤;seibetsu ãµã ã‚“;fudan ã¸ã„ãã‚“;heikin ã¸ã„ãã‚“ã™ã‚‹;heikinsuru ã¸ã„ãã‚“ã—ã¦;heikinshite ã²ã‹ã;hikaku ã²ã‹ãã™ã‚‹;hikakusuru ニュース;nyuusu ã‹ã„ã›ã¤;kaisetsu ã‹ã„ã›ã¤ã™ã‚‹;kaisetsusuru ã»ã†ã©ã†;houdou ã»ã†ã©ã†ã™ã‚‹;houdousuru ドラマ;dorama ã‘ã„ãŠã‚“ãŒã;keiongaku クイズ;kuizu ã¯ãªã™;hanasu ã¤ã‘ã¯ãªã™;tsukehanasu ã‘ã™;kesu ã‚ã‚’ã‚„ã‚‹;mewoyaru ãŠãゃãã•ã‚“;okyakusan ãã«ã™ã‚‹;kinisuru ã“ã†ã‘ã„;koukei ã“ã—ょã†;koshou ã“ã—ょã†ã™ã‚‹;koshousuru ã‚‚ã®ãŸã‚Šãªã„;monotarinai ã‚ã¤ã„;atsui ã‚ã„ã‚ã;meiwaku ã‚ã„ã‚ãã‚’ã‹ã‘ã‚‹;meiwakuwokakeru ã‹ã‚‰ã ;karada ã‹ã‚‰ã ã˜ã‚…ã†;karadajuu ã‹ãœã‚’ã²ã;kazewohiku ã—ãªã„;shinai ã ã‚“ã¡;danchi ã²ã£ã“ã™;hikkosu ãã‚“ã˜ã‚‡;kinjo ã”ã†ã‹ã‚“;goukan ãã®ã©ãã ;kinodokuda ã†ã‚ã•;uwasa ã†ã‚ã•ã™ã‚‹;uwasasuru ã‹ãŠã¿ã—り;kaomishiri ãŽã‚ƒãã ;gyakuda ã—ãŸã—ã‚€;shitashimu ã—ãŸã—ã¿ã‚„ã™ã„;shitashimiyasui ã‹ã„ã ã‚“;kaidan ãŠã‚‚ã„;omoi ã‹ã„ã‚‚ã®ã¶ãã‚;kaimonobukuro ãŠã†ã ã‚“;oudan ãŠã†ã ã‚“ã™ã‚‹;oudansuru ã»ã©ã†;hodou ãŠã†ã ã‚“ã»ã©ã†;oudanhodou ã¨ã—より;toshiyori ã‚ã¶ãªã„;abunai ãã®ãŸã³ã«;sonotabini ã‚りãŒãŸã„;arigatai ã‹ã„ã‹ã¤ã ;kaikatsuda ã¡ã‚‡ã†ã—;choushi ã˜ãŸã;jitaku ã¾ã­ã;maneku ã“ã“ã‚;kokoro ã“ã“ã‚ã‚’ã†ã¤;kokorowoutsu ã„ãã„ãã¨;ikiikito ããŒã™ã‚‹;kigasuru ã›ã‚“ãã†ã¡ã‚…ã†;sensouchuu ã²ã‚ã—ã¾;hiroshima ã’ã‚“ã°ã;genbaku ãŠã¨ã™;otosu ã“ã†ã‹ãµã“ã†ã‹;koukafukouka ã•ã¨ãŒãˆã‚Š;satogaeri ã°ãã ã‚“;bakudan ãã•;kusa ã¯ã‹ã„;hakai ã¯ã‹ã„ã™ã‚‹;hakaisuru ãªã‚“ã¨ã‹;nantoka ãŠãã‚ã—ã„;osoroshii ããŠã;kioku ããŠãã™ã‚‹;kiokusuru ãã‚ã„;kuroi ã‚„ã‘ã‚‹;yakeru ã“ã’ã‚‹;kogeru ã¯ã ã‹;hadaka ã—ãŸã„;shitai ã‚ã¡ã‚‰ã“ã¡ã‚‰;achirakochira ã“ã‚ãŒã‚‹;korogaru よã¶;yobu ã¯ã¯ãŠã‚„;hahaoya ã•ã‘ã¶;sakebu ãã¿ã‚ã‚‹ã„;kimiwarui ã²ã³ã;hibiku ã®ã¯ã‚‰;nohara ã‚„ã‘ã®ã¯ã‚‰;yakenohara ã—ょã†ãã;shousoku ã¤ã‹ã‚€;tsukamu ã„ã£ã—ã‚…ã‚“;isshun ã–ã„ã•ã‚“;zaisan ãªãã™;nakusu ã²ã’ã;higeki ã«ã©ã¨ãµãŸãŸã³ãªã„;nidotofutatabinai ã‹ãŸã„;katai ã„ãã®ã“ã‚‹;ikinokoru ã¸ã„ã‚;heiwa ã„ãã‚‹;ikiru ã„ãŽ;igi ã‹ã;kaku エãƒãƒ«ã‚®ãƒ¼;enerugii ã‹ããˆã­ã‚‹ãŽã„;kakuenerugii ã“ã‚ã™;korosu ã—よã†;shiyou ã—よã†ã™ã‚‹;shiyousuru ゆãŸã‹ã ;yutakada ã—ã‚ã‚ã›ã ;shiawaseda ã¸ã„ã;heiki ã›ã„ãžã†;seizou ã›ã„ãžã†ã™ã‚‹;seizousuru ã˜ã£ã‘ã‚“;jikken ã˜ã£ã‘ã‚“ã™ã‚‹;jikkensuru ãã‚“ã—;kinshi ãã‚“ã—ã™ã‚‹;kinshisuru ã‚‚ãã¦ã;mokuteki ãŒã„;gai ãŒã„ã™ã‚‹;gaisuru ã“ã†ã‘ã‚“;kouken ã“ã†ã‘ã‚“ã™ã‚‹;koukensuru ãˆã‚‰ã„;erai ã‚ã•ã­ã¼ã†;asanebou ã‚ã•ã­ã¼ã†ã™ã‚‹;asanebousuru ã‚ãŒã•ã‚ã‚‹;megasameru ãŠã“ã™;okosu ã‹ãŽã‚‹;kagiru ã«ã‹ãŽã£ã¦;nikagitte ã¨ã¾ã‚‹;tomaru ドア;doa ã®ã›ã‚‹;noseru ã—ã¤ã‚Œã„ã ;shitsureida ãŠã‚ã™;orosu ã›ã‹ã„ã¦ãã ;sekaitekida ã¨ã©ã;todoku ã¸ã‚“ã ;henda ããŒã¸ã‚“ã ;kigahenda ã¶ã‚Š;buri ã‚ã¤ã•;atsusa ã†ã”ã;ugoku ã«ã£ã¡ã‚…ã†;nicchuu ãŸã„よã†;taiyou ã²ã‹ã‚Š;hikari ã¨ã¼ã—ã„;toboshii ã¦ã‚‹;teru ã«ã£ã“ã†;nikkou ã«ã£ã“ã†ã‚ˆã;nikkouyoku ã—ょã†ã”;shougo よã†;you よã†ãŒã‚ã‚‹;yougaaru ã²ã¨ã©ãŠã‚Š;hitodoori ã¾ã‚‹ã§;marude ãã‚…ã†ã‹;kyuuka ã¿ãªã¿;minami よã†ã„;youi よã†ã„ã™ã‚‹;youisuru ãµã‚‹ã•ã¨;furusato ã—ã¾;shima ã¨ã†;tou ã¿ãªã¨;minato ã¿ãªã¨ã¾ã¡;minatomachi ã‚ã•ã„;asai ãŠã‚ˆãŽ;oyogi ã™ã„ã¡ã‚…ã†;suichuu ã²ã£ã±ã‚‹;hipparu ã¯ãª;hana ã—ãŠã‹ã‚‰ã„;shiokarai ãŠã“ã‚‹;okoru ãŠãŠã‚らã„;oowarai ãŠãŠã‚らã„ã™ã‚‹;oowaraisuru ゆã‚;yume ã™ãªã¯ã¾;sunahama ã™ãª;suna ã»ã‚‹;horu ã„ã—;ishi ãƒãƒ¬ãƒ¼ãƒœãƒ¼ãƒ«;bareebooru ã‹ã‚らãªã„;kawaranai ã²ãŒã—;higashi もよã†;moyou ãらもよã†;soramoyou ã‚ã‚„ã—ã„;ayashii ã¾ã£ãã‚ã ;makkuroda ãã‚‚;kumo ã‹ã¿ãªã‚Š;kaminari ãŠãŠã¤ã¶;ootsubu ã‹ã‚“ã—;kanshi ã‹ã‚“ã—ã™ã‚‹;kanshisuru ããŒãˆã‚‹;kigaeru ã¾ã¨ã‚ã‚‹;matomeru らã„ã†;raiu ãµã¨ã„;futoi ã«ã’ã“ã‚€;nigekomu ã‹ã„ãŒã‚“;kaigan ã¨ãŠã‚‹;tooru ã¨ãŠã‚Šã‹ã‹ã‚‹;toorikakaru ãã‘ã‚“ã ;kikenda ã¾ã™ã¾ã™;masumasu ã«ã—;nishi ã™ã“ã—ãšã¤;sukoshizutsu ã¯ã‚Œã‚ã’ã‚‹;hareageru ã™ã‚€;sumu ã‚€ã—ã‚ã¤ã•;mushiatsusa ãã†ãžã†;souzou ãã†ãžã†ã™ã‚‹;souzousuru ã¦ã‚“ã“ã†;tenkou ã‚ã™ã‚Œã‚‚ã®ã‚’ã™ã‚‹;wasuremonowosuru ã‹ã°ã‚“;kaban ã‚‚ãã²ã‚‡ã†;mokuhyou ã¨ã†ãœã‚“ã ;touzenda ã†ã£ã‹ã‚Šã™ã‚‹;ukkarisuru ã‹ã­ã‚‚ã¡;kanemochi ã‚ãれる;akireru ã¨ã«ã‹ã;tonikaku ã”ã˜ã¶ã‚“;gojibun ã˜ã—ã‚“;jishin ã“ã¨ã‚ã–;kotowaza よã®ãªã‹;yononaka ã‹ã˜;kaji ãŠã‚„ã˜;oyaji ã‚€ã—ã‚;mushiro ã©ã‚ã¼ã†;dorobou ã˜ã‚‡ã†ã ã‚“;joudan ã¨ã‚‚ã‹ã;tomokaku ãれã¯ã¨ã‚‚ã‹ã;sorehatomokaku ãŽã˜ã‚…ã¤;gijutsu よã“ã;yokoku よã“ãã™ã‚‹;yokokusuru よã¼ã†;yobou よã¼ã†ã™ã‚‹;yobousuru ã‹ã‚“ã¨ã†ã ã„ã—ã‚“ã•ã„;kantoudaishinsai ã ã„ãã¼ã ;daikiboda ã•ã„ãŒã„;saigai ãŸã„ã‘ã‚“;taiken ãŸã„ã‘ã‚“ã™ã‚‹;taikensuru ã“ã‚ã•;kowasa ã¡ã‚“ã¼ã¤;chinbotsu ã¡ã‚“ã¼ã¤ã™ã‚‹;chinbotsusuru ã»ã‚ã¶;horobu テーマ;teema ベストセラー;besutoseraa ã½ãŠã‚‰ã‚“ã©ã˜ã‚“;poorandojin ã„よãã¦ãã ;iyokutekida ゆれる;yureru ã­ã¾ã;nemaki ã¨ã³ã ã™;tobidasu りょã‹ã‚“;ryokan ã‚ã‚“ãœã‚“ã ;anzenda ãらãらã¨;guragurato ã•ã™ãŒ;sasuga ã¨ã£ã•ã«;tossani ãã‚“ã¡ã‚‡ã†;kinchou ãã‚“ã¡ã‚‡ã†ã™ã‚‹;kinchousuru ã²ãªã‚“;hinan ã²ãªã‚“ã™ã‚‹;hinansuru ãŸã¡ã‚ãŒã‚‹;tachiagaru ã¸ã„ãã ;heikida ã ã„ã˜ã‚‡ã†ã¶ã ;daijoubuda ãらã„;kurai アパート;apaato ãŸãŠã‚Œã‚‹;taoreru ã¨ã†ãょã†ã˜ã‚…ã†;toukyoujuu ã²;hi ãŸã™ã‹ã‚‹;tasukaru ãã“;soko ã¯ã—;hashi ã•ã‚“ã¿ã‚ƒã;sanmyaku ã¤ã‚‰ãªã‚‹;tsuranaru ã‹ã–ã‚“;kazan ãŸãˆãš;taezu ã‘むり;kemuri ã’ã‚“ã„ã‚“;gen_in ãµã˜ã•ã‚“;fujisan ã¯ã“ã­;hakone ãŠã‚“ã›ã‚“;onsen ã†ã‚€;umu ã†ã¿ã ã™;umidasu ã‚ã‘;wake ã‚ã‘ã§ã™;wakedesu ã‚ã°ã‚Œã‚‹;abareru ãã‚‹ã†;kuruu ã‚ã°ã‚Œãã‚‹ã†;abarekuruu ãŸã»ã†;tahou ãŠãれ;osore ã‹ã‚“ã‹ã;kankaku ã‚ã„ã˜ã‚‡ã†;aijou ã„ã ã;idaku ã—ã¿ã˜ã¿ã¨;shimijimito ゆã‚ã‚’ã¿ã‚‹;yumewomiru ãã‚;kuro ãªã‚“ã‹ã“ã;nankakoku ã ã„ã˜ã—ã‚“;daijishin ã¾ã©ã†;madou ã“ã‚れる;kowareru ãŸã™ã‘;tasuke ã®ã‚€;nomu ã¾ã£ãらã ;makkurada ãŠã;oku ã‚らã„ã”ãˆ;waraigoe ã•ã‚“ãŽã‚‡ã†;sangyou ã‚ã–ã¾ã—ã„;mezamashii ã»ã†ã‚ã‚“;houmen ã¼ã†ãˆã;boueki ã¼ã†ãˆãã‹ã„ã—ゃ;bouekikaisha ã‚ãŠã;aoki ã‹ã‚ã•ã;kawasaki れã£ã—ゃ;ressha ã¯ã‚„ã„;hayai ã“ã“ã¡;kokochi ã®ã‚Šã”ã“ã¡ãŒã„ã„;norigokochigaii ã®ã‚Šã”ã“ã¡ãŒã‚ã‚‹ã„;norigokochigawarui ガラス;garasu ã¨ãã¹ã¤;tokubetsu ã—ゃãªã„;shanai ã«ã»ã‚“ã˜ã‚…ã†;nihonjuu ã‹ã£ã;kakki ã¿ã¡ã‚‹;michiru ã—ょã†ã˜ãã ;shoujikida ã¦ã£ã“ã†ãŽã‚‡ã†;tekkougyou ãžã†ã›ã‚“ãŽã‚‡ã†;zousengyou ã›ã„ã•ã‚“;seisan ã›ã„ã•ã‚“ã™ã‚‹;seisansuru ã®ã³ã‚‹;nobiru ã•ã‚“;san ã—ã’ã‚“;shigen ã›ãゆ;sekiyu ã’んりょã†;genryou ゆã«ã‚…ã†;yunyuu ゆã«ã‚…ã†ã™ã‚‹;yunyuusuru ãŸã‚ˆã‚‹;tayoru ã‹ã“ã†;kakou ã‹ã“ã†ã™ã‚‹;kakousuru ゆã—ã‚…ã¤;yushutsu ゆã—ã‚…ã¤ã™ã‚‹;yushutsusuru れã„ãŒã„;reigai ã»ã‚‰;hora ã‘ã‚“ã›ã¤;kensetsu ã‘ã‚“ã›ã¤ã™ã‚‹;kensetsusuru ã‘ã‚“ã›ã¤ã¡ã‚…ã†;kensetsuchuu ã“ã†ã˜ã‚‡ã†;koujou ã²ã‚ã’ã‚‹;hirogeru ã•ã£ãã;sassoku ã ã„ã“ã†ã˜ã‚‡ã†;daikoujou ã‚ã‚“ãœã‚“;anzen ã›ã„ã‘ã¤;seiketsu ã ã„ã„ã¡ã ;daiichida ã“ã®ã‚€;konomu ãŠãã«;okuni ãã‹ã„ã“ã†ãŽã‚‡ã†;kikaikougyou ã›ã‚“ã„;sen_i ã›ã‚“ã„ã“ã†ãŽã‚‡ã†;sen_ikougyou ã‹ãŒãã“ã†ãŽã‚‡ã†;kagakukougyou ã™ã„ã˜ã‚…ã‚“;suijun りょã†;ryou ã“ã†ã˜ã‚‡ã†;koujou ã“ã†ã˜ã‚‡ã†ã™ã‚‹;koujousuru ã“ããˆã„;kokuei りãˆã;rieki ãã‚“ã¿ã‚“;sonmin ã‘ã‚“ã—ã‚“ã¦ãã ;kenshintekida ã»ã­;hone ã»ã­ãŠã‚‹;honeoru ã²ã‚‡ã†ã°ã‚“;hyouban ã²ã‚‡ã†ã°ã‚“ã ;hyoubanda ã‚‚ã¯ã‚“;mohan ãã‚“ã‘ã„;sonkei ãã‚“ã‘ã„ã™ã‚‹;sonkeisuru ãªã‹ãŒã‚ˆã„;nakagayoi ãªã‹ãŒã‚ã‚‹ã„;nakagawarui ã‹ã‚;kawa ã¤ã‚‹;tsuru らんã¼ã†ã ;ranbouda ã³ã‚“ã¼ã†;binbou ã³ã‚“ã¼ã†ã ;binbouda ã—ゃã‹ã„ãŒã;shakaigaku ã¨ã†ã»ãã ã„ãŒã;touhokudaigaku ã„ãŒãã¶;igakubu ゆã†ã˜ã‚‡ã†;yuujou ã¾ãªã¶;manabu ã¡ã—ã;chishiki ã¾ã˜ã‚ã ;majimeda ã—ã‚ã‚ã›;shiawase ã—ã‚“ã‘ã‚“ã ;shinkenda ãŽã‚ã‚“;giron ãŽã‚ã‚“ã™ã‚‹;gironsuru ã’ã‹;geka ã›ã‚“ã ã„;sendai ã—ゃã‹ã„ã‹;shakaika ã˜ã‚‡ã†ã¶ã ;joubuda ã»ãˆã‚‹;hoeru ã»ãˆã£ã¦ãŠã;hoetteoku ã‘ã£ã‹ã;kekkaku ã³ã‚‡ã†ã˜ã‚‡ã†;byoujou ãˆã„よã†;eiyou ãˆã„よã†ãŒã‚ã‚‹;eiyougaaru ã—ょãã‚‚ã¤;shokumotsu ã˜ã‚…ã†ã¶ã‚“ã ;juubunda ã›ã„よã†;seiyou ã›ã„よã†ã™ã‚‹;seiyousuru ã—ã£ãã ;shissoda ã‹ã‘ã„;kakei ãµã‹ã®ã†ã ;fukanouda ã¤ãã‚ã„;tsukiai ã³ã‚‡ã†ã„ã‚“;byouin ã«ã‚…ã†ã„ã‚“;nyuuin ã«ã‚…ã†ã„ã‚“ã™ã‚‹;nyuuinsuru ã‚‚ã¨ã‚‚ã¨;motomoto ã’ã£ãã‚…ã†;gekkyuu ã—ゃã‹ã„ã»ã—ょã†;shakaihoshou ãµã˜ã‚…ã†ã¶ã‚“ã ;fujuubunda ã¡ã‚‡ãã›ã¤ã ;chokusetsuda ã ã’ã;dageki ã¡ã‚‡ãã‚“;chokin ã¡ã‚‡ãã‚“ã™ã‚‹;chokinsuru ãªã‚ã‚‹;nameru ã²ã‚ˆã†;hiyou ãŸã„ã„ã‚“;taiin ãŸã„ã„ã‚“ã™ã‚‹;taiinsuru ã¾ã‹ã›ã‚‹;makaseru ã®ãžã‚€;nozomu ã¸ã‚“ã˜;henji ã¸ã‚“ã˜ã™ã‚‹;henjisuru ã¨ã©ã‘ã‚‹;todokeru ã‹ã‚“ã—ゃ;kansha ã‹ã‚“ã—ゃã™ã‚‹;kanshasuru ãŠã‚Œã„;orei ãŠã‚Œã„ã‚’ã„ã†;oreiwoiu ã•ãˆ;sae ã™ãªãŠã ;sunaoda ã“れã“ã;korekoso ããŸãªã„;kitanai ãã†ã„ã†ã‚ã‘ã«ã¯ã„ã‹ãªã„;souiuwakenihaikanai ã¼ã‚“やりã¨;bon_yarito ãŠã†;ou ã²ã•ã—ã¶ã‚Š;hisashiburi パートナー;paatonaa ã˜ã£ã“ã†;jikkou ã˜ã£ã“ã†ã™ã‚‹;jikkousuru ã¡ã‹ã„ã†ã¡ã«;chikaiuchini ゆã„ã—ょ;yuisho ゆã„ã—ょã‚ã‚‹;yuishoaru よやã;yoyaku よやãã™ã‚‹;yoyakusuru ãŠã‚“ãªã—ã‚…ã˜ã‚“;onnashujin ãŠã˜ãŽ;ojigi ãŠã˜ãŽã™ã‚‹;ojigisuru ã‚‚ã†ã‘ã‚‹(1-dan);moukeru(1-dan) ã¿ã‚‡ã†ã”ã«ã¡;myougonichi ã¾ã“ã¨ã«;makotoni ã‚„ã‘ã„;yakei テーブル;teeburu ãã¤ã‚ã‚“;sotsuron ã©ã ã„;dodai ã•ã‚“ã“ã†ã—りょã†;sankoushiryou ãºãˆã˜;peeji ã¿ã‚‡ã†ã°ã‚“;myouban ã™ã¹ã¦;subete ãŠã—ãŠãã™ã‚‹;oshiokisuru ãŠã—ãŠã;oshioki ゆるã™;yurusu ã©ã†ã—よã†;doushiyou ãªã‚‹ã»ã©;naruhodo ã¦ã‚“ã„ã‚“;ten_in ã¦ã‚“ã—ã‚…;tenshu ã¦ã‚“ã¡ã‚‡ã†;tenchou ã‹ã£ã“ã„ã„;kakkoii ã™ã¦ã;suteki ã ã„ã˜ã‚‡ã†ã¶;daijoubu ã¡ãã—ょã†;chikushou ãã•ã¾;kisama ãŠã®ã‚Œ;onore スケベ;sukebe ã”ã¡ãã†ã•ã¾ã§ã—ãŸ;gochisousamadeshita ãŠã˜ã‚ƒã¾ã—ã¾ã™;ojamashimasu ã„らã£ã—ゃã„;irasshai ã„らã£ã—ゃã„ã¾ã›;irasshaimase ã©ã†ãžã€ã“ã¡ã‚‰ã¸;douzo_kochirahe ã©ã†ãžãŠã‹ã‘ãã ã•ã„;douzookakekudasai ãªã‚“ã§;nande よã;yoku ãŠãã¦;okite ã‚ã‹ã„;wakai ãŠãŠã‹ã¿;ookami ãšã£ã¨;zutto れã„;rei ã‹ã„ã¨ã†ã‚ˆã†ã—;kaitouyoushi ãã†ã“ã†;soukou ã¯ã—りãŒã;hashirigaki ã–ã£ãã†;zassou ãã†ã—ょ;sousho ãã•ã¡;kusachi ãŸã™ã†;tasuu ãŸã‚ã‚“;tamen ãŠãŠã™ãŽã‚‹;oosugiru ãŸã„ã—;taishi ãŸã„よã†;taiyou ãµã¨ã˜;futoji ãŸã„ã‹ã;taikaku ãµã†ã¦ã„;fuutei ã‹ã‚‰ã ã¤ã;karadatsuki ã©ã ã„;dodai ãŸã„ãµã†;taifuu ã¡ã»ã†;chihou ã¡ã‹;chika ãã˜;kiji よã†ã™ã„ã¡;yousuichi ã§ã‚“ã¡;denchi ãµã‚‹ã„ã‘;furuike ã¡ã—ã;chishiki ã¡ã›ã„;chisei ã—りã‚ã„;shiriai ã¡ãã–ã„;chikuzai ãŸã‘ã ;takeda ãŸã‘ã‚„ã¶;takeyabu ã¡ã‚ƒã¡ã‚ƒ;chacha ã•ã‹;saka ã¡ã‚…ã†ã—ょã;chuushoku ã¡ã‚…ã†ã“ã†ã›ã„;chuukousei ã²ã‚‹ã¾;hiruma ã›ã„ã¡ã‚‡ã†;seichou ã‹ã„ã¡ã‚‡ã†;kaichou ãªãŒã„ã;nagaiki ã¯ãã¡ã‚‡ã†;hakuchou ã‚„ã¡ã‚‡ã†;yachou ã¨ã‚Šã„;torii ã¡ã‚‡ã†ã—ょã;choushoku ã‚ã•ã²;asahi ã¡ã‚‡ã†ã¦ã„;choutei ã¤ã†ã“ã†;tsuukou ã¤ã†ãã‚“;tsuukin ãŠãŠã©ãŠã‚Š;oodoori ã—ã¦ã„;shitei ã§ã—;deshi ãょã†ã ã„;kyoudai ã¦ã‚“ã„ã‚“;ten_in よã¿ã›;yomise ãŸãªã ã¦;tanadate ã¦ã‚“ã›ã‚“;tensen ã¨ãã¦ã‚“;tokuten ã˜ã‚…ã†ã¦ã‚“;juuten ã§ã‚“ãã‚…ã†;denkyuu ã§ã‚“りゅã†;denryuu ã ã„ã¨ã†;daitou ãã‚“ã¨ã†;guntou ã“ãŒãŸãª;kogatana ã¨ã†ã¿ã‚“;toumin ã¨ã†ã;touki ãµã‚†ã—ょã†ãã‚“;fuyushougun ãã†ã¨ã†;soutou ã¨ã†ã«ã‚“;tounin ã¦ã‚ã¦;teate ã¨ã†ã‚ˆã†;touyou ã¡ã‚…ã†ã¨ã†;chuutou ã²ãŒã—ãŒã‚;higashigawa ã‹ã„ã¨ã†;kaitou ã¨ã†ã‚ã‚“;touan ãã¡ã”ãŸãˆ;kuchigotae ã¨ã†ã“ã¤;toukotsu ãã¡;kichi ãよ;kiyo よã›ãªã¿;yosenami ãŸã¡ã‚ˆã‚‹;tachiyoru ããã;kisoku ã˜ã‚‡ã†ãŽ;jougi ã ã„ãã¼;daikibo ãŽã˜ã‚…ã¤;gijutsu ãŽã—;gishi ãˆã‚“ãŽ;engi ã—ã‚…ãŽ;shugi ãŽã‚Š;giri ã„ãŽ;igi ãŽã‚ƒã£ã“ã†;gyakkou ãŽã‚ƒãã›ã¤;gyakusetsu ã¯ã‚“ãŽã‚ƒã;hangyaku ãˆã„ãã‚…ã†;eikyuu ããŠã‚“;kuon ã²ã•ã—ã¶ã‚Š;hisashiburi ãã‚…ã†ã‚†ã†;kyuuyuu ãã‚…ã†ã¯;kyuuha ãã‚…ã†ã—ã;kyuushiki ãょã˜ã‚…ã†;kyojuu ã˜ã‚…ã†ãょ;juukyo ã„ã©ã“ã‚;idokoro ãょã‹;kyoka ã¨ã£ãょ;tokkyo ã¦ã‚‚ã¨;temoto ã“ã£ãょã†;kokkyou ã‘ã„ã ã„;keidai ãょã†ã‹ã„ã›ã‚“;kyoukaisen ã“ã†ãµã‚“;koufun ãµã£ã“ã†;fukkou ãょã†ã¿ã¶ã‹ã„;kyoumibukai ã¸ã„ãã‚“;heikin ãã‚“ã¨ã†;kintou ãµãã‚“ã“ã†;fukinkou ã ã‚“ã¼ã†;danbou ã ã‚“りゅã†;danryuu ã ã‚“ã¨ã†;dantou ã‹ã¡ã‹ã‚“;kachikan ã­ã³ã;nebiki ã¡ã‚…ã†ã•ã„;chuusai ãªã“ã†ã©;nakoudo ãªã‹ã‚ˆã;nakayoku ã†ã¡ã‚…ã†ã›ã‚“;uchuusen ã¡ã‚…ã†ãŒãˆã‚Š;chuugaeri ã¡ã‚…ã†ã®ã‚Š;chuunori ã¡ã‚…ã†ã˜ã¤;chuujitsu ã¡ã‚…ã†ã›ã„;chuusei ã¡ã‚…ã†ã“ã;chuukoku ã¡ã‚‡ã—ゃ;chosha ã¡ã‚‡ã‚ã„;chomei ã‚ã„ã¡ã‚‡;meicho ã‹ã‚“ã¡ã‚‡ã†;kanchou ã¡ã‚‡ã†ã‚Œã„;chourei ã‹ã‚“ãょã†ã¡ã‚‡ã†;kankyouchou ã¡ã‚‡ã†ã“ã†;choukou ãœã‚“ã¡ã‚‡ã†;zenchou ãŠãã¡ã‚‡ã†;okuchou ã¡ã‚‡ã†ã¦ã‚“;chouten ã¡ã‚‡ã†ã˜ã‚‡ã†;choujou ã¡ã‚‡ã†ã ã„;choudai ã¡ã‚‡ã†ã‚Šã‚…ã†;chouryuu ã—ãŠã¿ãš;shiomizu ã—ãŠã©ã;shiodoki ã¡ã‚“ãŽã‚“;chingin ã†ã‚“ã¡ã‚“;unchin ã‚„ã¡ã‚“;yachin ãšã¤ã†;zutsuu ã„ãŸã§;itade ã¤ã†ã›ã¤;tsuusetsu ã¯ã£ã¦ã‚“;hatten ã™ã„ã˜ã‚‡ã†;suijou ã¾ã‚‹ãŠã‚‚り;maruomori ãšã„ã²ã¤;zuihitsu ãšã„ã“ã†ã„ã‚“;zuikouin ã“ã¤ãšã„;kotsuzui ã®ã†ãšã„;nouzui ã—ã‚“ãšã„;shinzui ã™ã†ã˜ã;suujiku ã™ã†ã‚ˆã†;suuyou ã¡ã‚…ã†ã™ã†;chuusuu ã™ã†ã¯ã„;suuhai ã™ã†ã“ã†;suukou ã™ã†ã‘ã„;suukei ã™ãˆãŠã;sueoku ã™ãˆã‚‚ã®;suemono ã™ãˆã¤ã‘;suetsuke ã™ãŽã‚ã‚„;sugiaya ã™ãŽãŒã;sugigaki ã™ãŽãªã¿ã;suginamiki ã†ã­ã ã¦;unedate ã«ã›;nise ã†ã­ãŠã‚Š;uneori ã‚ã•ã›;asase ã›ã¨;seto ã›ã¨ã‚‚ã®;setomono ã›ã¤ã‚Œã¤;setsuretsu ã›ã£ãã;sessoku ã›ã£ã¨ã†;settou ã²ã‚‡ã†ã›ã¤;hyousetsu ã›ã£ã—ã‚…;sesshu ã›ã£ã—ã‚…;sesshu ã›ã£ã—ょã†;sesshou ã›ã£ã›ã„;sessei ã›ã‚“ã«ã‚“;sennin ã—ã‚…ã›ã‚“;shusen ã™ã„ã›ã‚“;suisen ã•ã‘;sake ã¿ã»ã‚“;mihon ã¿ã»ã‚“ã„ã¡;mihon_ichi ã¦ã‚“ã˜;tenji ã¦ã‚“ã˜ã™ã‚‹;tenjisuru ã‹ã„ã˜ã‚‡ã†;kaijou ã•ã„ã—ã‚“;saishin ã§ã‚“ãã“ã†ãŽã‚‡ã†;denkikougyou ã§ã‚“ã—;denshi ã§ã‚“ã—ã“ã†ãŽã‚‡ã†;denshikougyou ã›ã„ã²ã‚“;seihin ã‹ãŒããŽã˜ã‚…ã¤;kagakugijutsu ã“ã†ã‚Šã‚…ã†;kouryuu ãµã‹ã¾ã‚‹;fukamaru ã²ã¨ã“ã¨ã§ã„ãˆã°;hitokotodeieba ã„ã¨ãªã‚€;itonamu ã—ょã¨ã;shotoku ã“ãã¿ã‚“ã—ょã¨ã;kokuminshotoku りんãŽã‚‡ã†;ringyou ã¡ãã•ã‚“ãŽã‚‡ã†;chikusangyou ã™ã„ã•ã‚“ãŽã‚‡ã†;suisangyou ã ã„ã˜;daiji ã“ã†ãŽã‚‡ã†;kougyou ã›ã„ãžã†ãŽã‚‡ã†;seizougyou ã‘ã‚“ã›ã¤ãŽã‚‡ã†;kensetsugyou ã†ã‚“ゆ;un_yu ã¤ã†ã—ã‚“;tsuushin ã†ã‚“ゆã¤ã†ã—ã‚“ãŽã‚‡ã†;un_yutsuushingyou ãんゆã†;kin_yuu ã»ã‘ã‚“;hoken ãんゆã†ã»ã‘ã‚“ãŽã‚‡ã†;kin_yuuhokengyou ã“ã†ã‚€;koumu ã˜ã‚†ã†ãŽã‚‡ã†;jiyuugyou ã•ã‚ã³ã™ãŽã‚‡ã†;saabisugyou ã²ã˜ã‚…ã†;hijuu ã¨ã†ã¶ã‚“;toubun よã¡;yochi ã®ã†ã•ã‚“ã¶ã¤;nousanbutsu ã„ãžã‚“;izon ã„ãžã‚“ã™ã‚‹;izonsuru ã‘ã„ã“ã†ãŽã‚‡ã†;keikougyou ã˜ã‚…ã†ã‹ãŒãã“ã†ãŽã‚‡ã†;juukagakukougyou ã˜ã‚…ã†ã—ã™ã‚‹;juushisuru ã«ã¨ã‚‚ãªã†;nitomonau ã¶ã‚‚ã‚“;bumon ã“よã†;koyou ã›ã‚“ãœã‚“;senzen ã‹ãã—ã‚“;kakushin ãŽã˜ã‚…ã¤ã‹ãã—ã‚“;gijutsukakushin ã›ã„ã¿ã¤ã ;seimitsuda ã›ã„ã®ã†;seinou ãょã†ã‹;kyouka ãょã†ã‹ã™ã‚‹;kyoukasuru ãŸã‚“ã¡ã‚‡ã†ã ;tanchouda ã«ããŸã„ã¦ãã ;nikutaitekida ã˜ã‚…ã†ã‚ã†ã©ã†;juuroudou ã¤ã­ã«;tsuneni ã˜ã‚…ãれん;jukuren ã˜ã‚…ãれんã™ã‚‹;jukurensuru ã®ã†ã‚Šã¤;nouritsu ãŠã‚‚ã‚“ã˜ã‚‹;omonjiru ã¡ã‚…ã†ã­ã‚“;chuunen ãんれん;kunren ãんれんã™ã‚‹;kunrensuru ã›ã„ãµ;seifu ã‘ã„ãˆã„;keiei ã‘ã„ãˆã„ã™ã‚‹;keieisuru ã‘ã„ãˆã„ã—ゃ;keieisha よã†ãã‚…ã†;youkyuu よã†ãã‚…ã†ã™ã‚‹;youkyuusuru ã—ã¤ãŽã‚‡ã†;shitsugyou ã—ã¤ãŽã‚‡ã†ã™ã‚‹;shitsugyousuru ãµãょã†;fukyou ã—りょã†;shiryou ãã›;kuse ã‚€ã¡ã‚…ã†ã ;muchuuda ã‹ãžãˆã‚‹;kazoeru ã‚ã„ã‚ãã ;meiwakuda よã†;you センãƒãƒ¡ãƒ³ã‚¿ãƒ«ã ;senchimentaruda ã•ã‚ã‚‹;sawaru ãã¡ã«ã‚ã†;kuchiniau ã˜ã‚…ã‚“ã˜ã‚‡;junjo ãŽã‚‡ã†ãŽ;gyougi ãŠã¨;oto ãŠã¨ã‚’ãŸã¦ã‚‹;otowotateru ã¨ã†ãªã‚“;tounan ã˜ã‘ã‚“;jiken ã™ã˜;suji ã™ã„ã›ã‚“;suisen ã™ã„ã›ã‚“ã™ã‚‹;suisensuru ã„ã¡ã‚Šã‚…ã†;ichiryuu ã—ã‚…ã†ã„;shuui ã›ã¤ã³;setsubi サービス;saabisu ã“ã®ã¤ãŽ;konotsugi ã¾ã‚“ãžã;manzoku ã¾ã‚“ãžãã™ã‚‹;manzokusuru ã†ã‘ã¤ã‘;uketsuke ãŒã„ã˜ã‚“;gaijin ãã³;kubi ã‹ã—ã’ã‚‹;kashigeru ã˜ã“ã;jikoku ã¿ã¶ã‚“;mibun ã‚ãらã‹ã ;akirakada ã»ã‚“ã«ã‚“;honnin ã—ã¯ã„;shihai ã—ã¯ã„ã™ã‚‹;shihaisuru ã—ã¯ã„ã«ã‚“;shihainin ããã;kisoku ãŠã“ã‚‹;okoru ã—んよã†;shin_you ã—んよã†ã™ã‚‹;shin_yousuru ã«ã‹ã‹ã‚ã‚‹;nikakawaru ã¾ã–ã¾ã–ã¨;mazamazato ã‚ã›ã‚‹;aseru ã²ãã ã—;hikidashi よã†ãµãã ã‚“ã™;youfukudansu ã¿ã‚ãŸã‚‹;miataru ã„ã‚“ã•ã¤;insatsu ã„ã‚“ã•ã¤ã™ã‚‹;insatsusuru ã„ã‚“ã•ã¤ã¶ã¤;insatsubutsu ã—ãªã‚‚ã®;shinamono ã•ã„ã‚ã„;saiwai ã’ã‚“ãã‚“;genkin ã¿ã«ã¤ã‘ã‚‹;minitsukeru ã•ã„ãªã‚“;sainan ã¾ã¬ãŒã‚Œã‚‹;manugareru ã‚‚ã†ã—ã‚ã‘ãªã„;moushiwakenai ã’ã‚“ã©ã†;gendou ã‚ã‚„ã—ã„;ayashii ã¿ã‹ã‘ã‚‹;mikakeru ã‘ã„ã•ã¤;keisatsu フロント;furonto ã¦ã¯ã„ã™ã‚‹;tehaisuru ã¬ã™ã‚€;nusumu ã‹ã¡;kachi ã‘ã„ã‹ã‚“;keikan ã‚„ã£ã¦ãã‚‹;yattekuru ã²ãŒã„;higai ã˜ã‚‡ã†ãょã†;joukyou ã¯ã‚“ã«ã‚“;hannin ã¤ã‹ã¾ãˆã‚‹;tsukamaeru ã¯ã£ã‘ã‚“;hakken ã¯ã£ã‘ã‚“ã™ã‚‹;hakkensuru よãã‚ã•;yokuasa ã—んらã„;shinrai ã—んらã„ã™ã‚‹;shinraisuru ãょã†ã¡ã‚‡ã†;kyouchou ãょã†ã¡ã‚‡ã†ã™ã‚‹;kyouchousuru ã—ょã¡;shochi ã—ゃ;sha ãã‚“ãŒã;kingaku ã›ã„ãã‚…ã†;seikyuu ã›ã„ãã‚…ã†ã™ã‚‹;seikyuusuru ã‹ãã«ã‚“;kakunin ã‹ãã«ã‚“ã™ã‚‹;kakuninsuru ã‹ã‚“ã˜ã‚‡ã†;kanjou ã‹ã‚“ã˜ã‚‡ã†ã™ã‚‹;kanjousuru ã•ã—ã²ã;sashihiku ã•;sa ã•ãŒã;sagaku ã¯ã‚‰ã„ã‚‚ã©ã™;haraimodosu ã•ã‚ã;sawagu ã‚ã‚„ã¾ã‚‹;ayamaru ã›ã£ã‹ã;sekkaku よã†ã‚„ã;youyaku ã˜ã“ã«ã‚ã†;jikoniau ã¶ã¤ã‹ã‚‹;butsukaru ã¯ã“ã¶;hakobu ã¯ã“ã³ã“ã‚€;hakobikomu ã¶ã¤ã‘ã‚‹;butsukeru ã¿ã¾ã†;mimau ã†ã¤ã‚‹;utsuru ã¤ã„;tsui ã¹ãƒƒãƒ‰;beddo ã­ã‹ã™;nekasu ã¤ã†ã—ã‚“ã—ゃ;tsuushinsha ã’ã‚“ã“ã†;genkou ã—ãã‚…ã†;shikyuu ãããŸã¤;sokutatsu ã“ã†ãã†ã³ã‚“;koukuubin ã‚ã„れã„;meirei ã‚ã„れã„ã™ã‚‹;meireisuru ã»ã†ã—ã‚“;houshin ã¾ã¨ã¾ã‚‹;matomaru ãŠã‚‚ã‚ã™;omowasu ã²ã«ã¡;hinichi ã›ã‚;sewa ã›ã‚ã™ã‚‹;sewasuru ã¤ãã˜;tsukiji ã„ã¡ã°;ichiba ã†ãŠã„ã¡ã°;uoichiba ãã†ã¡ã‚‡ã†;souchou ãã†ã¨ã†;soutou ãµã‚‹ãˆã‚‹;furueru ã—ょã†ã‹ã„;shoukai ã—ょã†ã‹ã„ã™ã‚‹;shoukaisuru ã„ã‘ã ;ikeda ã¡ã‹ã¥ã;chikaduku ã„ã›ã„;isei ã„ã›ã„ã®ã„ã„;iseinoii ã‹ã‘ã”ãˆ;kakegoe ライトãƒãƒ³;raitoban ã‚„ã‹ã¾ã—ã„;yakamashii ãã†ãŠã‚“;souon ã¾ã‚り;mawari ã°ã‚ã‚“;bamen ã‚ã£ã¨ã†ã™ã‚‹;attousuru ãŽã‚‡ã“ã†;gyokou りã;riku りãã«ã‚ã’ã‚‹;rikuniageru ãŸã„りょã†;tairyou ãŠã‚ã—ãŽã‚‡ã†ã—ゃ;oroshigyousha ãªã¾;nama ã—ã‚“ã›ã‚“ã ;shinsenda ã‚ã˜;aji ã—ょã†ã²ã‚“;shouhin ã—ã„れる;shiireru ã¯ã‹ã‚Š;hakari ã‚ã‹ãŸ;mekata ã¯ã‹ã‚‹;hakaru ãŠãŠã”ãˆ;oogoe ã©ãªã‚‹;donaru ãŠãŠãœã„;oozei ãµã‚€;fumu よã“;yoko インタビュー;intabyuu ã¡ã‚…ã†ãŠã†ã›ã‚“;chuuousen ã“ã†ãˆã‚“ã˜;kouenji ã¾ãŒã‚‹;magaru ãŠãŠã©ãŠã‚Š;oodoori ã¾ã£ã™ãã ;massuguda ã‹ã©;kado ãŠã‚Œã‚‹;oreru ã†ãŠã¾ã‚‹;uomaru ã‹ã‚“ã°ã‚“;kanban ãŠã˜ã•ã‚“;ojisan ã–ã—ã;zashiki ã‚ãŒã‚‹;agaru ã•ã—ã¿;sashimi ã»ãŒã‚‰ã‹ã ;hogarakada ãµã†ãµ;fuufu ã†ã¡ã¨ã‘ã‚‹;uchitokeru ゆãšã‚‹;yuzuru ã—ょã†ã°ã„;shoubai ãã—ã‚“;kushin ãã—ã‚“ã™ã‚‹;kushinsuru ãã•ã‚‹;kusaru ã„ã˜ã‚‡ã†ã ;ijouda ã¶ã£ã‹ã ã‹;bukkadaka ã›ã¤ã‚„ã;setsuyaku ã›ã¤ã‚„ãã™ã‚‹;setsuyakusuru ã¿ã¤ã‚‚ã‚‹;mitsumoru ã“ã‚;kome ã—ょãりょã†;shokuryou ã›ã„ã•ã‚“ã—ゃ;seisansha りょã†ã—;ryoushi ã•ã‚“ã¡;sanchi ã­ã ã‚“ã‚’ã¤ã‘ã‚‹;nedanwotsukeru ã—ょã†ã²;shouhi ã—ょã†ã²ã™ã‚‹;shouhisuru ã—ょã†ã²ã—ゃ;shouhisha ã°ã„;bai ã‚‚ã†ã‘ã‚‹;moukeru ã‚ãšã‹ã ;wazukada ãã³ã—ã„;kibishii ã¡ã‚…ã†ã‚‚ã‚“ã™ã‚‹;chuumonsuru ã²ã¨ã§;hitode ãŸã‚Šã‚‹;tariru ã¯ã„ãŸã¤;haitatsu ã¯ã„ãŸã¤ã™ã‚‹;haitatsusuru ã¤ã¶ã‚Œã‚‹;tsubureru ãµã‚ã‚“;fuan ãµã‚ã‚“ã ;fuanda ãªã‹ã¾;nakama ã„ã£ã‹;ikka ã‚‚ã†ã—ã“ã‚€;moushikomu ã¤ã†ã¡;tsuuchi ã¤ã†ã¡ã™ã‚‹;tsuuchisuru ãµã•ã„;fusai ã¡ã‚ƒã‚“;chan ã“ã†ãµã‚“;koufun ã“ã†ãµã‚“ã™ã‚‹;koufunsuru ãれ;kire ãã‚“;kun ã ã¾ã‚‹;damaru ãˆã©ã˜ã ã„;edojidai ã»ã†ã“ã;houkoku ã»ã†ã“ãã™ã‚‹;houkokusuru ã‹ã¹;kabe ãªã‚„ã‚€;nayamu ゆるã™;yurusu ã“ã†ã‹ã„;koukai ã“ã†ã‹ã„ã™ã‚‹;koukaisuru ゆã†ã˜ã‚“;yuujin ã’ãれã„;gekirei ã’ãれã„ã™ã‚‹;gekireisuru ã—ã©ã†;shidou ã—ã©ã†ã™ã‚‹;shidousuru ã“ã†ãµãã ;koufukuda ã‘ã‚“ã„;ken_i ã¯ã‚„ã—;hayashi ã‚„ãã°;yakuba ã¦ã‚‰;tera ãã‚ã;kiroku ãã‚ãã™ã‚‹;kirokusuru ã˜ã‹ã«;jikani ã›ã£ã™ã‚‹;sessuru ã™ã™ã‚ã‚‹;susumeru ã²ã‚‡ã†ã˜ã‚…ã‚“;hyoujun ã²ã‚‡ã†ã˜ã‚…ã‚“ã”;hyoujungo よã†ã˜ã‚“;youjin よã†ã˜ã‚“ã™ã‚‹;youjinsuru ã²ã‚‡ã†ã‚ã‚“ã¦ãã ;hyoumentekida ã•ã£ã™ã‚‹;sassuru ã“ã†ã•ã„;kousai ã“ã†ã•ã„ã™ã‚‹;kousaisuru ãªãŒã®ã‘ã‚“;naganoken むら;mura ãã‚“ã¡ã‚‡ã†;sonchou ã„らã„;irai ã„らã„ã™ã‚‹;iraisuru ãã°ã‚‹;kubaru ãã‚’ãã°ã‚‹;kiwokubaru ãょり;kyori ã»ã†ã’ã‚“;hougen ã‚ã£ã•り;assari ã‚ã„ã«ã;ainiku ã‚‹ã™;rusu ã•らã„ã’ã¤;saraigetsu ã—ãŸã;shitaku ã—ãŸãã™ã‚‹;shitakusuru ã„ã—;ishi ã—ã‚…ã†ã—ã‚…ã†;shuushuu ã—ã‚…ã†ã—ã‚…ã†ã™ã‚‹;shuushuusuru ã›ã„り;seiri ã›ã„りã™ã‚‹;seirisuru ã—ã‚…ã†ã¡ã‚…ã†;shuuchuu ã—ã‚…ã†ã¡ã‚…ã†ã™ã‚‹;shuuchuusuru ã†ãˆã ;ueda ã ã„り;dairi ã‚ã¹;abe ã¡ã‚ƒã‚“ã¨;chanto ãŠã›ã˜;oseji ã¨ã‚ã‚‹;tomeru ã˜ã‚…ã†ã—ょã;juushoku ãŽã‚‚ã‚“;gimon ã—ã˜ã‚…ã†;shijuu ãã’ã‚“;kigen ãã’ã‚“ã™ã‚‹;kigensuru ã®ã†ã‹;nouka ã¿ã“ã‚“;mikon ã˜ã—ã‚…ã¦ãã ;jishutekida ã ã‚“ãŸã„;dantai ã¾ã¤ã‚Š;matsuri ã—ょã†ã¼ã†;shoubou よã†ã™ã„;yousui ã“ã†ã˜;kouji ã“ã†ãょã†;koukyou ã˜ãŽã‚‡ã†;jigyou ãょã†ã©ã†;kyoudou ãã—ã;soshiki ãã—ãã™ã‚‹;soshikisuru ã«ã‚“ã‚€;ninmu ã ã‚“ã˜ã‚‡;danjo ã‚ã„;ai ã¡ã‹ã†;chikau ã—ょã†ã‚ã„;shoumei ã—ょã†ã‚ã„ã™ã‚‹;shoumeisuru ã—ょã†ã“;shouko ã‚ãã¾ã¤ã‚Š;akimatsuri ã»ã—;hoshi ã»ã—ãžã‚‰;hoshizora ã¾ã¶ã—ã„;mabushii ã‹ãŒã‚„ã;kagayaku ã‚€ã—;mushi ãªã;naku ã‚ã–ã‚„ã‹ã ;azayakada ãˆ;e ã˜ã‚ã‚“;jimen ã‹ã’;kage ã‹ã‚“ã©ã†;kandou ã‹ã‚“ã©ã†ã™ã‚‹;kandousuru ãŠãã†;osou ã—ã’ã;shigeki ã—ã’ãã™ã‚‹;shigekisuru ã”ã‹ã„;gokai ã”ã‹ã„ã™ã‚‹;gokaisuru ã ã„ã²ã‚‡ã†ã ã‚“;daihyoudan ã ã‚“ã¡ã‚‡ã†;danchou ã«ã¡ã˜ã‚‡ã†;nichijou ã”ã†ã«ã„ã£ã¦ã¯ã”ã†ã«ã—ãŸãŒãˆ;gouniittehagounishitagae ã˜ã‚‡ã†ã‚ˆã†ã—ゃ;jouyousha ã ã‚“ã‘ã¤;danketsu ã ã‚“ã‘ã¤ã™ã‚‹;danketsusuru ã—ã‚“ã„ã¡;shin_ichi ã”ã¶ã•ãŸã™ã‚‹;gobusatasuru ã‚ã„ã‹ã‚らãš;aikawarazu ãã‚ã„;guai ãã‚ã„ãŒã‚ã‚‹ã„;guaigawarui ã„;i ã—ã‚“ã‘ã„;shinkei ã—ょã†ã‹;shouka ã—ょã†ã‹ã™ã‚‹;shoukasuru ãã‹ã‚“;kikan ãれãれも;kureguremo ãれãれもãã‚’ã¤ã‘ã‚‹;kureguremokiwotsukeru ãã†ã”ã†;sougou ãã†ã”ã†ã™ã‚‹;sougousuru ã—ã‚“ã ã‚“;shindan ã—ã‚“ã ã‚“ã™ã‚‹;shindansuru ãŸã„ã‹ã;taikaku ã—ã‚“ãžã†;shinzou ã‘ã¤ãˆã;ketsueki ãµã¨ã‚‹;futoru ãŠãらã;osoraku ã•ã„ã—ã‚…ã†ã¦ãã ;saishuutekida ã•ã¦;sate ã‘ã£ã•ã;kessaku ã¦ã‚ãŸã‚Š;teatari ã—ã ã„;shidai ã¦ã‚ãŸã‚Šã—ã ã„;teatarishidai ã¦ã¤ã‚„;tetsuya ã¦ã¤ã‚„ã™ã‚‹;tetsuyasuru ã¡ã‹ã‚‰;chikara ã¿ã«ã¤ã;minitsuku ã›ã‚“ã“ã†;senkou ã›ã‚“ã“ã†ã™ã‚‹;senkousuru ã„ã¨ã“;itoko ゲーテ;geete ã¡ã‚…ã†ã‚Šã‚…ã†;chuuryuu ã‚„ã—ãªã†;yashinau ãã˜ã‚…ã‚“;kijun ã‹ã ã„ã ;kadaida ãã;kiso ã—ã‚“ã˜ã¤;shinjitsu ã‹ã„;kai ã¯ãŒã;hagaki ãŒãã—ã‚…ã†;gakushuu ãŒãã—ã‚…ã†ã™ã‚‹;gakushuusuru ã¤ã¾ã‚‹;tsumaru ã ã™;dasu ã—ã¾ã ;shimada ã•ã„ãã;saisoku ã•ã„ããã™ã‚‹;saisokusuru スピード;supiido ã›ã„ã’ã‚“;seigen ã›ã„ã’ã‚“ã™ã‚‹;seigensuru ã„ã¯ã‚“;ihan ã„ã¯ã‚“ã™ã‚‹;ihansuru ã°ã£ãã‚“;bakkin ã˜ã¾ã‚“;jiman ã˜ã¾ã‚“ã™ã‚‹;jimansuru ã‹ã’ã‚“;kagen ã‹ã’ã‚“ã™ã‚‹;kagensuru ã„ã„ã‹ã’ã‚“ã«ã™ã‚‹;iikagennisuru ã—ã¾ã¤;shimatsu ã—ã¾ã¤ã™ã‚‹;shimatsusuru ãŠã†;ou ã—ã¾ã¤ã«ãŠãˆãªã„;shimatsunioenai ãã¤ã„;kitsui ã—ãã‚“;shikin ã•ãã†;sasou ã¯ã‚Šãã‚‹(5-dan);harikiru(5-dan) ãŸã„ã—ょã†;taishou よã‚ã—ãã¤ãŸãˆã‚‹(1-dan);yoroshikutsutaeru(1-dan) ã¯ã‚‹ãŠ;haruo ãŸã„よã†ãŒã½ã‹ã½ã‹(ã¨)ã¦ã‚‹;taiyougapokapoka(to)teru ã‘ã¯ã„;kehai ã¯ã ;hada ã»ã£ã¨ã™ã‚‹;hottosuru ã¤ãã²;tsukihi ãã£ãŸã‚Š;guttari ã‚ãŸ;wata ã•らã•ら;sarasara ã¶ã‚‹ã¶ã‚‹ãµã‚‹ãˆã‚‹;buruburufurueru ã‚€ã‹ã†;mukau ã‘ã‚りã¨ãªãŠã‚‹;keroritonaoru ã•ã‚€ãŒã‚Š;samugari ã®ã³ã®ã³(ã¨)ãらã™;nobinobi(to)kurasu ãã‚“ãょã†(M);kinkyou(M) ãã¶ã‚“ãŒã•ã£ã±ã‚Šã™ã‚‹;kibungasapparisuru ã¡ã‚‹;chiru ã—ゃã£ãり(ã¨)ã™ã‚‹;shakkiri(to)suru ã¯ãã—;hakushi ã„らã„らã™ã‚‹;irairasuru ã‚ã¨;ato ã‚„ã¾ãªã‹;yamanaka ããµã†;kufuu ããµã†ã™ã‚‹;kufuusuru ゆã†ã„ãŽã ;yuuigida ã‹ã•ãªã‚‹;kasanaru ãµã‚‰ãµã‚‰(ã¨);furafura(to) ã‚ã¾ã„;memai ã‚ã¾ã„ãŒã™ã‚‹;memaigasuru ã‹ã‚“り;kanri ã‹ã‚“りã™ã‚‹;kanrisuru ãããã¦ãã ;kisokutekida ãã;kiku ãŸã„ãã†;taisou ã²ã”ã‚(M);higoro(M) ãªã¾ã‘ã‚‹(1-dan);namakeru(1-dan) ã›ã„;sei ã„ã;iki ãれる(1-dan);kireru(1-dan) ã„ããŒãれる;ikigakireru ãƒãƒ¼ãƒãƒ¼(ã¨);haahaa(to) ã“ãã‚…ã†;kokyuu ã“ãã‚…ã†ã™ã‚‹;kokyuusuru りãã˜ã‚‡ã†ãょã†ãŽ;rikujoukyougi ãょã†ãŽ;kyougi ã›ã‚“ã—ã‚…;senshu ãŸã‘ã—;takeshi クラブ;kurabu ã„ã„ã‚“;iin ã˜ãªã‚“;jinan ã¿ã¤ãŠ;mitsuo ã¡ã‚‡ã†ã˜ã‚‡;choujo れã„ã“;reiko ãŠã†ãˆã‚“;ouen ãŠã†ãˆã‚“ã™ã‚‹;ouensuru ゲーム;geemu ã»ã­ã‚„ã™ã‚;honeyasume ã—ã‚ã„;shiai ãるりã¨;gururito ã¾ã‚ã™;mawasu ãŸã‹ã“;takako ãƒãƒ¼ãƒ ;chiimu ãã‚€;kumu ã¾ã‘ã‚‹;makeru ã‹ã¤;katsu ケーキ;keeki ãゃã‚ãゃã‚(ã¨);kyaakyaa(to) ã¯ã—ゃã;hashagu ã©ã£ã¨;dotto ã¾ã‚ã¾ã‚;maamaa ã›ã‚“ã—ã‚…ã‘ã‚“;senshuken ãŸã„ã‹ã„;taikai ã›ã‚“ã—ã‚…ã‘ã‚“ãŸã„ã‹ã„;senshukentaikai ã‘ã£ã—ょã†;kesshou ã˜ã‚…ã‚“;jun ã›ã‚“;sen ã—ょã†ã¶;shoubu ã—ょã†ã¶ã™ã‚‹;shoubusuru ã«ã“ã«ã“;nikoniko ã«ã“ã«ã“ã™ã‚‹;nikonikosuru ã®ãžã;nozoku ãªã‚;naa ã‹ã£ã¦ã ;katteda ãã˜;kuji ã²ã;hiku ãã˜ã‚’ã²ã;kujiwohiku ãŠã‚ãŠã‚(ã¨);orooro(to) ãŠã‚ãŠã‚(ã¨)ã™ã‚‹;orooro(to)suru ã“ã†ãŽ;kougi ã“ã†ãŽã™ã‚‹;kougisuru オリンピック;orinpikku ã—ã‚…ã¤ã˜ã‚‡ã†;shutsujou ã—ã‚…ã¤ã˜ã‚‡ã†ã™ã‚‹;shutsujousuru ãょã†ãã†;kyousou ã•ã£ã±ã‚Š;sappari ã¯ã‚;hame ãŠã¡ã„ã‚‹(5-dan);ochiiru(5-dan) ã¯ã‚ã«ãŠã¡ã„ã‚‹;hameniochiiru ã©ã£ã—り;dosshiri ã©ã†ã‚Š(M);douri(M) ãŒã‚„ãŒã‚„;gayagaya ã‘ã£ãょã(M);kekkyoku(M) ã‘ã„ã²ã‚“;keihin ã‘ã„ã²ã‚“ãŒã¤ã;keihingatsuku ã©ã†ã¦ã‚“;douten ãˆã‚“ã¡ã‚‡ã†;enchou ãˆã‚“ã¡ã‚‡ã†ã™ã‚‹;enchousuru ã²ãã‚ã‘ã‚‹;hikiwakeru ã²ãã‚ã‘;hikiwake ã·ã‚“ã·ã‚“;punpun ãšã‚‹ã„;zurui ãã†;kuu ãã£ã¦ã‹ã‹ã‚‹;kuttekakaru ãã†ã¹ã¤ã‹ã„;soubetsukai ã˜ã‚‡ã†ãã‚…ã†;joukyuu ã¯ãšã‚€;hazumu ã¯ãªã—ãŒã¯ãšã‚€;hanashigahazumu ãµã‘ã‚‹(1-dan);fukeru(1-dan) ã¦ã‚’ã‹ã™;tewokasu ã¡ã‹ã”ã‚(M);chikagoro(M) ã‘ã‚“ã¨ã†;kentou ã‘ã‚“ã¨ã†ã™ã‚‹;kentousuru ã¹ã‚“;ben ã‚ã‹ã‚Œ;wakare ã‚ã‹ã‚Œã‚’ãŠã—ã‚€;wakarewooshimu ã›ã‚“ã’ã¤;sengetsu ã™ãˆ;sue ã®ã†ãŽã‚‡ã†ã›ã„ã•ã‚“ãょã†ã©ã†ãã¿ã‚ã„;nougyouseisankyoudoukumiai ã®ã†ã¯ã‚“ã;nouhanki ãŠã™;osu ãŠã—ã‹ã‘ã‚‹(1-dan);oshikakeru(1-dan) ãã»ã‚“;kihon ã“ã†ãˆã‚“;kouen ã“ã†ãˆã‚“ã™ã‚‹;kouensuru ãã†;sou ã—ã‚…ã†ãŽã‚‡ã†;shuugyou ã—ã‚…ã†ãŽã‚‡ã†ã™ã‚‹;shuugyousuru ã‚ãšã‹;wazuka ã¨ã©ã¾ã‚‹;todomaru ã’ãã’ã‚“ã™ã‚‹;gekigensuru ãã†ã­ã‚“;sounen ã¡ãŸã„;chitai ã—ã‚“ã—ã‚…ã¤;shinshutsu ããŽã‚‡ã†;kigyou ã ã„ããŽã‚‡ã†;daikigyou ã•ãŽã‚‡ã†;sagyou ã®ã†ã•ãŽã‚‡ã†;nousagyou ã‹ãŸã«ã‹ã‹ã‚‹;katanikakaru ã¾ã‚;mame ã“ãã‚‚ã¤;kokumotsu ã˜ãã‚…ã†;jikyuu ã˜ãã‚…ã†ã™ã‚‹;jikyuusuru ã“ããªã„;kokunai ã˜ã‚…よã†;juyou ã†ã‚ã¾ã‚ã‚‹;uwamawaru ã‚ã¾ã‚‹;amaru ã ã„ãš;daizu ã‘ã¤ã¼ã†;ketsubou ã‘ã¤ã¼ã†ã™ã‚‹;ketsubousuru ã¾ã‹ãªã†;makanau ã˜ã‚‡ã†ãŸã„;joutai ã—ょãりょã†;shokuryou ãょã†ãã‚…ã†;kyoukyuu ãょã†ãã‚…ã†ã™ã‚‹;kyoukyuusuru ãµãã‚;fukuro ã„ã¶ãã‚;ibukuro ã‚ãšã‘ã‚‹;azukeru ã“ã†ã©;koudo ã›ã„ã¡ã‚‡ã†;seichou ã›ã„ã¡ã‚‡ã†ã™ã‚‹;seichousuru トラクター;torakutaa ã¯ã„ã£ã¦ã„ã‚‹;haitteiru ã—ã‚…ã†ã‚„ã;shuuyaku ã—ã‚…ã†ã‚„ãã™ã‚‹;shuuyakusuru ã‹;ka ã“ã†ã«ã‚…ã†;kounyuu ã“ã†ã«ã‚…ã†ã™ã‚‹;kounyuusuru ãã‹ã‚“;kikan ã†ã£ãŸãˆã‚‹(1-dan);uttaeru(1-dan) ã“ã†ã—ょã†;koushou ã—ã‚…ã†ã‚Š;shuuri ã—ã‚…ã†ã‚Šã™ã‚‹;shuurisuru ã¶ã²ã‚“;buhin ã¨ã‚Šã‹ãˆã‚‹(1-dan);torikaeru(1-dan) ãŸã„ã—ã‚…ã†;taishuu ã›ã„ã˜ã¦ãã ;seijitekida ã„ã—ã;ishiki ã„ã‚“ã—ょã†ã‚’ã†ã‘ã‚‹;inshouwoukeru ã“ã†ãŒã„;kougai ãょã†ã¤ã†ã™ã‚‹;kyoutsuusuru ã˜ã‚…ã†ã ã„ã ;juudaida ã¾ã™;masu ã²ã‚Šã‚‡ã†;hiryou ã‹ãŒãã²ã‚Šã‚‡ã†;kagakuhiryou ã‹ã„ã¯ã¤;kaihatsu ã‹ã„ã¯ã¤ã™ã‚‹;kaihatsusuru ã®ã†ã‚„ã;nouyaku ã‚‚ã¡ã„ã‚‹(1-dan);mochiiru(1-dan) ã¡ã‚…ã†ã©ã;chuudoku ã¡ã‚…ã†ã©ãã™ã‚‹;chuudokusuru ã—ã¼ã†;shibou ã—ã¼ã†ã™ã‚‹;shibousuru ã¯ã£ã›ã„;hassei ã¯ã£ã›ã„ã™ã‚‹;hasseisuru ãŽã›ã„;gisei ã„ã£ã½ã†ã¦ãã ;ippoutekida ã‹ãŸã‚ˆã‚‹;katayoru ã‹ãŸã‚ˆã£ãŸ;katayotta ã»ã”;hogo ã»ã”ã™ã‚‹;hogosuru ã›ã„ã•ã;seisaku ã‚ã‚“ã¦ã„;antei ã‚ã‚“ã¦ã„ã™ã‚‹;anteisuru ã•ã‚“ã¶ã¤;sanbutsu ã‹ã‹ã;kakaku ã‹ãりã¤;kakuritsu ã‹ãりã¤ã™ã‚‹;kakuritsusuru ãŠã‹ã‚りã‚りã¾ã›ã‚“ã‹;okawariarimasenka ã‹ã‘ãŒãˆã®ãªã„;kakegaenonai ã“ã˜ã‚“ãょã†ã˜ã‚…;kojinkyouju ã©ã†ãã‚…ã†;doukyuu ãŸã‚ˆã‚Š;tayori ã¨ã‚‚(Suffix);tomo(Suffix) ã¯ãªã™;hanasu ã¿ã£ã›ã¤ã ;missetsuda ã—ã‚…ã—;shushi ã¯ã‚“ãょã†;hankyou ãŸã«ã–ãã˜ã‚…ã‚“ã„ã¡ã‚ã†;tanizakijun_ichirou ã‹ã‚ã°ãŸã‚„ã™ãªã‚Š;kawabatayasunari ã³;bi エキゾãƒã‚·ã‚ºãƒ ;ekizochishizumu コピー;kopii ãŸãšã•ã‚ã‚‹;tazusawaru ã™ã†ã˜;suuji ã“ã¨ãšã‘ã‚‹(1-dan);kotozukeru(1-dan) ã¾ãˆã‚‚ã£ã¦;maemotte ã–ã‚“ã—ょ;zansho ã„ã®ã‚‹;inoru ã‚„ã¾ã‚‚ã¨;yamamoto ãµã¿ã“;fumiko ãŸã ã„ã¾;tadaima ã¾ã›;mase ã¤ã‹ã¾ã‚‹;tsukamaru ã”ã‚ã‚“ãªã•ã„;gomennasai ゼミ;zemi れんã¡ã‚…ã†;renchuu ã‹ãã‚ã„;kakumei ã¦ã‚“らんã‹ã„;tenrankai ã˜ã‚ƒ;ja ã„ã£ã¦ãŸã‚ã†;ittetarou ãªã«ã—ã‚;nanishiro ã›ã‚“ã‚€;senmu ãˆã‚“ã‹ã„;enkai ãŠã†ã›ã¤ã¾;ousetsuma ã‚ã–ã‚ã–;wazawaza ãŠã“ã—ã«ãªã‚‹;okoshininaru ãょã†ã—ã‚…ãã ;kyoushukuda ãŽã‚‡ã†ã‚€;gyoumu ã˜ã‚…ã‚“ã¡ã‚‡ã†ã ;junchouda らã„ã­ã‚“ã©;rainendo ゆã†ã—;yuushi ゆã†ã—ã™ã‚‹;yuushisuru ãŸã¡ã„ã‚‹(1-dan);tachiiru(1-dan) ã»ã‚“ã˜ã¤;honjitsu よã†ã‘ã‚“;youken ã›ã;seki ã¼ã†ã—;boushi ãŸã¨ãˆã°;tatoeba ã—ã‘ã‚“;shiken ãŠã¨ã‚;otome ã‚ã„れã„;meirei ãŠã„;oi ãŠã„ã¦;oite ã—ã‚“ã‹;shinka ã—ã‚“ã†ã‚“;shin_un ã™ã™ã‚€;susumu ã¤ã„;tsui ããã;sosogu ã„ã£ã‹ã’ã¤;ikkagetsu ã•ゆã†;sayuu ã¿ãŽã¦;migite ã‚ã¾ãã‚‚;amagumo ã¯ã‚‹ã•ã‚;harusame ã”ã²ã‚ƒããˆã‚“;gohyakuen ã¾ã‚‹ã„;marui ãŠã†ã˜;ouji ãŠã†ã˜ã‚‡;oujo ãŠã¨ã‚’ã ã™;otowodasu ã»ã‚“ã­;honne ã—ãŸã”ã“ã‚;shitagokoro ã’ã²ã‚“ãª;gehinna ã—ãŸã”ã“ã‚;shitagokoro ãã ã•ã„;kudasai ã¸ãŸãª;hetana ã‹ã–ã‚“;kazan ã‹ã‚ˆã†ã³;kayoubi ã²ã°ãª;hibana ã¯ãªã³;hanabi ã“ã£ã‹;kokka ã¯ãªã¿;hanami ã‹ã„ã¼ãŸã‚“;kaibotan ãŒãã›ã„;gakusei ãŒã£ã“ã†;gakkou ã¾ãªã¶;manabu ããŸã„;kitai ãã‚…ã†ã˜ã¤;kyuujitsu ã²ã‚‹ã‚„ã™ã¿;hiruyasumi ãŸã¾ã”;tamago ãã‚“ã„ã‚;kin_iro ãŠã‹ã­;okane ãã‚…ã†ã‹ã„;kyuukai ãã†ã—ゃ;kuusha ã‹ã‚‰ã¦;karate ãŠãŠãžã‚‰;oozora ã‚ã‘ã‚‹;akeru ã—ãŒã¤;shigatsu ã¾ã„ã¤ã;maitsuki ã¤ãã‚ã‘ã£ã¨;tsukiroketto ã’ã¤ã‚ˆã†ã³;getsuyoubi ã°ã‚“ã‘ã‚“;banken ã“ã„ã¬;koinu ã„ã¬ã”ã‚„;inugoya ã„ã£ã‘ã‚“;ikken ã›ã‚“ã‘ã‚“;senken ã¿ã»ã‚“;mihon ã¿ã‚‹;miru ã¿ã›ã‚‹;miseru ã”ã«ã‚“;gonin ã„ã¤ã‹;itsuka ãã¡ã ã—;kuchidashi ã¡ã‚…ã†ãŒã£ã“ã†;chuugakkou ã¼ã“ã†;bokou ã“ã†ã¡ã‚‡ã†;kouchou ã•ã»ã†;sahou ã²ã ã‚Šã‚ã—;hidariashi ã•ã‚“ã«ã‚“;sannin ã¿ã£ã‹;mikka ã•ã‚“ã™ã„;sansui ã‹ã–ã‚“;kazan ã“ã‚„ã¾;koyama ã—ãŒã¤;shigatsu よã£ã‹;yokka ã ã‚“ã—;danshi ã˜ã‚‡ã—;joshi ãŠã‚“ãªã®ã“;onnanoko ã„ã£ã—ã¾ã¨ã‚ã­;isshimatowane ã„ã¨ãã‚‹ã¾;itoguruma ãã„ã¨;kiito ã“ãã˜;kokuji ã‚ãŠã¾ã˜;roomaji ã˜ã‚‚ã;jimoku ã¿ã¿ãŸã¶;mimitabu ã—ã¡ã«ã‚“;shichinin ãªã®ã‹;nanoka ã™ã„ã—ゃ;suisha ã˜ã‚‡ã†ãš;jouzu ã¦ã»ã‚“;tehon ã˜ã‚…ã†ã«ã‚“;juunin ã¨ãŠã‹;tooka ã—ã‚…ã£ã‹;shukka ã²ã¨ã§;hitode ã ã™;dasu ã§ã‚‹;deru ã˜ã‚‡ã¡ã‚…ã†;jochuu ãŠã‚“ãªã®ã²ã¨;onnanohito ã“ã³ã¨;kobito ã“ãŒã­;kogane ã˜ã‚‡ã†ã’;jouge ã—んりん;shinrin ã‚ãŠã‚‚り;aomori ã©ã„ã¤ã˜ã‚“;doitsujin ã²ã‚ƒãã«ã‚“;hyakunin ã²ã¨ã³ã¨;hitobito ã™ã„よã†ã³;suiyoubi ã¿ãšãŒã‚;mizugame ãŸã ã—ã„;tadashii ã„ã‘ã°ãª;ikebana ã†ã¾ã‚Œã‚‹;umareru ã›ã„ã­ã‚“;seinen ã‚ãŠãžã‚‰;aozora ã‚ãŠã‚‚ã®;aomono ã¼ãã›ã;bokuseki ã“ã„ã—;koishi ã„ã—ãり;ishikiri ã›ãã©ã†;sekidou ã‚ã‹ã‚‰ã‚ã‚‹;akarameru ã›ã‚“ã˜ã¤;senjitsu ã›ã‚“ã›ã‚“ã’ã¤;sensengetsu ã‹ã‚“ã¦ã‚“;kanten ã²ã¼ã—ã®;hiboshino ã»ã—ãã•;hoshikusa ãŠãŒã‚;ogawa ã‹ã‚ã‹ã¿;kawakami ãã†ãã†;sousou ã¯ã‚„ã¿ã¿;hayamimi ã¦ã°ã‚„ã„;tebayai ãã†ã’ã‚“;sougen ãã•ã;kusaki ãã†ã»ã‚“;souhon ã„ã£ãã;issoku ã¦ã‚ã—;teashi ãŸã‚Šã‚‹;tariru ãŸã™;tasu ãã‚“ã‹ã„;sonkai ãã‚“ã¡ã‚‡ã†;sonchou むらã³ã¨;murabito ãŸã„ãã‚“;taikin ãŠãŠãã•;ookisa ã ã‚“ã›ã„;dansei ã¡ã‚‡ã†ãªã‚“;chounan ãŠã¨ã“ã®ã²ã¨;otokonohito ãŠãŠãŠã¨ã“;oootoko ã¡ãりん;chikurin ã—ãªã„;shinai ãŸã‘ã®ã¤ãˆ;takenotsue ã«ã¡ã‚…ã†;nichuu ã„ã¡ã«ã¡ã˜ã‚…ã†;ichinichijuu ãŒã„ã¡ã‚…ã†;gaichuu ã‚€ã—ã°;mushiba ã¡ã‚‡ã†ãªã„;chounai ã—ãŸã¾ã¡;shitamachi ã¦ã‚“ã‚‚ã‚“ãŒã;tenmongaku ã‚ã¾ã®ãŒã‚;amanogawa ã™ã„ã§ã‚“;suiden ã»ã‚“ã ;honda ã©ã¼ã;doboku ã©ã˜ã‚“;dojin ãµãŸã‚Š;futari ãµã¤ã‹;futsuka ã„ã¡ã˜ã¤;ichijitsu ã¤ã„ãŸã¡;tsuitachi ã¿ã£ã‹;mikka ã«ã‚…ã†ã“ã;nyuukoku ã¯ã„ã‚‹;hairu ã„れる;ireru ã­ã‚“ãã‚“;nenkin ã¯ãã—;hakushi ã—ã‚ã„;shiroi ã¯ã¡ã«ã‚“;hachinin よã†ã‹;youka ã‚„ã£ã¤;yattsu ã²ã‚ƒãã«ã‚“;hyakunin ã¶ã‚“ãŒã;bungaku ãµã¿;fumi ã»ã‚“ã˜ã¤;honjitsu ã‚‚ã¨;moto ã‚ã„ãŒ;meiga ã ã„ã¿ã‚‡ã†;daimyou ã‚‚ãよã†ã³;mokuyoubi ããŽ;kigi ã„ã¡ã‚‚ã;ichimoku ã‚ã†ãˆ;meue ã‚ã—ãŸ;meshita ã„ã£ã›ã;isseki ゆã†ã²;yuuhi ãŸãªã°ãŸ;tanabata ã˜ã‚Šã¤;jiritsu ãŸã¦ã‚‹;tateru ãŸã„りょã;tairyoku むりょã;muryoku りんãŒã;ringaku ã“ã°ã‚„ã—;kobayashi ã‚ãã«ã‚“;rokunin ã‚€ã„ã‹;muika ã„んりょã;inryoku ã²ãã ã—;hikidashi ã†ã‚‚ã†;umou ã—らã¯;shiraha ã¯ã­ã ;haneda ãµã†ã†ã‚“;fuuun ã‚ã‚“ã†ã‚“;an_un ã‚ã¾ãã‚‚;amagumo らããˆã‚“;rakuen ã¯ãªãžã®;hanazono ãããŸã¤;sokutatsu ããã©;sokudo ã¯ã‚„ã‚ã‚‹;hayameru ã™ã¿ã‚„ã‹;sumiyaka ã“ã†ã‚ˆã†;kouyou ãŠã†ã”ã‚“;ougon ãã„ã‚;kiiro ãªã«ã”ã¨;nanigoto ãªã‚“ã«ã¡;nannichi りã£ã‹;rikka ãªã¤ã‚‚ã®;natsumono ã‹ã˜;kaji ã‘らã„;kerai ã‚„ã¬ã—;yanushi ã—りょã†;shiryou りょã†ãã‚“;ryoukin ã‹ã—ã‚…;kashu ãŸã‚“ã‹;tanka ã†ãŸã†;utau ãŒã‹;gaka ã‚ã†;au ã‹ã„ãŽ;kaigi ã“ã‚“ã‹ã„;konkai ãœã‚“ã‹ã„;zenkai ã„ã„ã¾ã‚ã—;iimawashi ã¾ã‚ã™;mawasu ã¾ã‚ã‚‹;mawaru ãŸã„ã‹ã„;taikai ã†ã¡ã†ã¿;uchiumi ã‹ã„ãŒ;kaiga ãˆã¯ãŒã;ehagaki ãã¡ãˆ;kuchie ãŒã„らã„ã”;gairaigo ã»ã‹ã«;hokani ã¯ãšã™;hazusu ã•ã‚“ã‹ã;sankaku ã¾ã¡ã‹ã©;machikado ãŸã®ã—ã„;tanoshii ã¶ã‚“らã;bunraku ã‹ã¤ã©ã†;katsudou ã¡ã‚…ã†ã‹ã‚“;chuukan ã«ã‚“ã’ã‚“;ningen ã¾ã‚‚ãªã;mamonaku ãŒã‚“ã‚„ã;gan_yaku ã¾ã‚‹ã„;marui ã“ã°ã‚„ã—ã¾ã‚‹;kobayashimaru ãŒã‚“ã›ã;ganseki ã„ã‚ã‚„;iwaya ãŒã‚“ã‚ã‚“;ganmen ã‹ãŠã„ã‚;kaoiro ã—らんã‹ãŠ;shirankao ãã“ã;kikoku ãã›ã‚“;kisen ãã‚…ã†ã©ã†;kyuudou ゆã¿ã‚„;yumiya ãŽã‚…ã†ã«ã;gyuuniku ã†ã—ã”ã‚„;ushigoya ãã‚“ãŽã‚‡;kingyo ã†ãŠã„ã¡ã°;uoichiba ã•ã‹ãªã‚„;sakanaya ã¨ã†ãょã†;toukyou ãºãã‚“;pekin ã¤ã‚ˆã„;tsuyoi ãょã†ã‹ã„;kyoukai ãŠã—ãˆã‹ãŸ;oshiekata ãŠãã‚ã‚‹;osowaru ãã‚“ã˜ã‚‡;kinjo ã¡ã‹ã¿ã¡;chikamichi ãょã†ã ã„;kyoudai ãµã‘ã„;fukei ãšã‘ã„;zukei ãŒã‚“ã˜ã¤;ganjitsu ã’ã‚“ã;genki ã‚‚ã¨ã‚‚ã¨;motomoto ãã†ã’ã‚“;sougen ã’んりょã†;genryou ã†ãªã°ã‚‰;unabara ã„ã†;iu ã’ã‚“ã”;gengo ã“ã”;kogo ãµã‚‹ã„;furui ã¨ã ãª;todana ã“ãŒã„ã§;kogaide ã”ãœã‚“;gozen ã—ょã†ã”;shougo ã‚ã¨ã§;atode ã„ã”;igo ãŒã„ã“ãã”;gaikokugo ã‚‚ã®ãŒãŸã‚Š;monogatari ãŒã„ã“ã†;gaikou ã¾ãœã‚‹;mazeru ã¾ã˜ã‚ã‚‹;majiwaru ã«ã£ã“ã†;nikkou ã²ã‹ã‚‹;hikaru ã“ã†ã‚Šã¤;kouritsu ã“ã†ã„ã‚“;kouin ã ã„ã;daiku ã“ã†ãŒã;kougaku ã²ã‚ã„;hiroi ã“ã†ã ã„;koudai ã‹ã‚“ãŒãˆã‚‹;kangaeru ã‹ã‚“ãŒãˆã‹ãŸ;kangaekata ã“ã†ã‚ã‚“;kouan ã„ã;iku ã„ã£ã“ã†;ikkou ãŽã‚‡ã†ã‹ã‚“;gyoukan ãŒã£ã—ょã†;gasshou ã‚ã„ãã©ã†;aikidou ãœã‚“ã“ã;zenkoku ãã«ãã«;kuniguni ã“ãã˜ã‚“;kokujin ãã‚ã„;kuroi ã“ã‚“ã«ã¡;konnichi ãŸã ã„ã¾;tadaima ã•ã„ã;saiki ãªã‚“ã•ã„;nansai ã•ã£ã‹;sakka ã¤ãã‚‹;tsukuru ã•ã‚“ã—ã‚…ã¤ã™ã‚‹;sanshutsusuru ã“ã†ã•ã‚“;kousan ã­ãˆã•ã‚“;neesan ã—ãªã„;shinai ã—ãŒã„;shigai ãŠã‚‚ã„ã ã™;omoidasu ãŠã‚‚ã„ã‚ãŒã£ãŸ;omoiagatta ã¨ã‚ã‚‹;tomeru ãã‚…ã†ã—;kyuushi ã—ã¤ã‚‚んよã†ã—;shitsumon_youshi ã¦ãŒã¿;tegami ã—ゃã˜;shaji ãŠã¦ã‚‰;otera ã„ã¡ã˜;ichiji ã¨ãã©ã;tokidoki ã˜ã¶ã‚“;jibun ã¿ãšã‹ã‚‰ã®ã¦ã§;mizukaranotede ã»ã‚“ã‚„;hon_ya ãŠãã˜ã‚‡ã†;okujou ã—ゃã„ã‚“;shain ã—ゃã‹ã„;shakai よã‚ã„;yowai ãょã†ã˜ã‚ƒã;kyoujaku よã‚ã‚‹;yowaru ã—ã‚…ã¡ã‚‡ã†;shuchou ã—ã‚…ã—ょã†;shushou ã¦ãã³;tekubi ã—ã‚…ã†ã;shuuki ã‚ãã‹ãœ;akikaze ã“ã‚“ã—ã‚…ã†;konshuu ã«ã—ã‚…ã†ã‹ã‚“;nishuukan ã—ã‚…ã‚“ã¶ã‚“;shunbun ã¯ã‚‹ã•ã‚;harusame ã—ょã©ã†;shodou ã—ょã†ã˜ã‚‡;shoujo ã™ã“ã—;sukoshi ã—ã˜ã‚‡ã†;shijou ãŸã¡ã°;tachiba ã¨ãã—ょã;tokushoku ãã„ã‚;kiiro ã—ょãã˜;shokuji ãŸã¹ã‚‚ã®;tabemono ã—ã‚“ã±ã„;shinpai ã“ã“ã‚ã‚‚ã¡;kokoromochi ã—ã‚“ã›ã¤;shinsetsu ãŠã‚„ãŒã„ã—ゃ;oyagaisha ã¡ãš;chizu ã¨ã—ょã‹ã‚“;toshokan ã¯ã‹ã‚‹;hakaru ã‹ã„ã™ã†;kaisuu ã‹ãšã‹ãšã®;kazukazuno ã‹ã›ã„;kasei ã»ã—ã†ã‚‰ãªã„;hoshiuranai ã›ã„ã¦ã‚“;seiten ã¯ã‚Œã®ã²;harenohi ã‚ã„ã›ã„;meisei ãŠãŠã”ãˆ;oogoe ã¨ã†ã–ã„;touzai ã«ã—よãŠã‚ã£ã±;nishiyooroppa ãŸã„ã›ã¤ãª;taisetsuna ãã£ã¦;kitte ã—ã‚“ã›ã¤;shinsetsu ゆãã¾ã¤ã‚Š;yukimatsuri ã‹ã›ã‚“;kasen ã“ã†ã›ã‚“;kousen ãªã„ã›ã‚“;naisen ã›ã‚“ã¡ã‚‡ã†;senchou ãµãªãŸã³;funatabi ã”ãœã‚“;gozen ã°ã‚“ãã¿;bangumi ãã‚€;kumu ãã›ã„;sosei ã¯ã—ã‚‹;hashiru ãã†ã“ã†ã˜ã‹ã‚“;soukoujikan ãã¡ã°ã—ã‚‹;kuchibashiru ãŠãŠã„;ooi ãµã¨ã„;futoi ã“ã†ãŸã„ã—;koutaishi ãŸã„ã¸ã„よã†;taiheiyou ã˜ã‚“ãŸã„;jintai ã”ãŸã„;gotai ãŸã‹ã ã„;takadai ãŸã«ã¾;tanima ãŸã«ãŒã‚;tanigawa ã¡ã˜ã‚“;chijin ã—ã‚‹;shiru ã¡ã‹;chika ãã˜;kiji ã§ã‚“ã¡;denchi ã¡ã‚ƒã„ã‚;chairo ã¡ã‚ƒã®ã¾;chanoma ã¡ã‚…ã†ã—ょã;chuushoku ã²ã‚‹ã‚„ã™ã¿;hiruyasumi ã¡ã‚‡ã†ã—ょã;choushoku ã‚ã•ã²;asahi ã‘ã•;kesa ã¶ã¡ã‚‡ã†;buchou ãªãŒã­ã‚“;naganen ã¯ãã¡ã‚‡ã†;hakuchou ã„ã£ã›ãã«ã¡ã‚‡ã†;issekinichou ã¡ã‚‡ããœã‚“;chokuzen ã¡ã‚‡ãã”;chokugo ã¤ã‚„ã;tsuyaku ã‹ã‚ˆã†;kayou ã§ã—;deshi ã—ょã¦ã‚“;shoten ã§ã¿ã›;demise ã¦ã‚“ãŒã‚ˆã„;tengayoi ãŒã¦ã‚“;gaten ã§ã‚“りょã;denryoku ã¨ã†ã;touki ãµã‚†ã‚‚ã®;fuyumono ã‚ã„ã¨ã†;meitou ã“ãŒãŸãª;kogatana ã—ãªã„;shinai ã¡ã‚…ã†ã¨ã†;chuutou ã²ãŒã—ã‚ã˜ã‚;higashiajia ã»ã‚“ã¨ã†;hontou ã¨ã†ã˜;touji ã²ã¨ã‚Šã‚ãŸã‚Š;hitoriatari ã‚ãŸã‚‹;ataru ã“ã†ã¨ã†;koutou ã‚ã„ã¨ã†;meitou ã“ãŸãˆã‚‹;kotaeru ã—ã‚…ã£ã¨ã†;shuttou ãŠãªã˜;onaji ã©ã†ã“ã;doukoku ã©ã†ã˜ã‚‡ã†;doujou ã‹ãˆã‚Šã¿ã¡ã§;kaerimichide ã©ãã—ゃ;dokusha よã¿ã‹ãŸ;yomikata ãŸã„ãªã„;tainai ãªã‚“ã›ã„;nansei ã¿ãªã¿ã‹ãœ;minamikaze ãŽã‚…ã†ã«ã;gyuuniku ã«ãã—ã‚“;nikushin ã°ã‚Šã;bariki ã†ã¾ã”ã‚„;umagoya ã°ã„ã°ã„;baibai ã‹ã„ã‚‚ã®;kaimono ã°ã„ã¦ã‚“;baiten ã¨ãã°ã„;tokubai ã†ã‚Šãれる;urikireru ã†ã‚Šã°;uriba ã°ãã—ã‚…ã³ã„ã‚‹;bakushubiiru ã“ã‚€ãŽ;komugi ãŠãŠã‚€ãŽ;oomugi らã„ã‚€ãŽ;raimugi ã¤ããªã‹ã°ã«;tsukinakabani ã°ã‚“ã¡;banchi ã°ã‚“ã«ã‚“;bannin ãµã¼;fubo ãµã†ã‚Šã‚‡ã;fuuryoku ã«ã»ã‚“ãµã†;nihonfuu ãµã‚ã°;furoba ããŸã‹ãœ;kitakaze ã¶ã‚“ã‘;bunke ã¾ã„ãµã‚“;maifun ã‚‚ã®ã‚ã‹ã‚Šã®ã‚ˆã„;monowakarinoyoi ãµã†ã¶ã‚“;fuubun ã¿ã¡ã‚’ãã;michiwokiku ã¹ã„ã“ã;beikoku ã“ã‚ã‚„;komeya ã»ã“ã†ã—ゃ;hokousha ã‚ã‚‹ã;aruku ã¼ã„ã‚“;boin ã¼ã“ãã”;bokokugo ã¡ã»ã†;chihou ã‹ã‚“ãŒãˆã‹ãŸ;kangaekata ã»ã£ã½ã†;hoppou ããŸãã¡;kitaguchi ã¦ã„ã¾ã„;teimai ã¾ã„ã‹ã„;maikai ãµã¤ã‹ã‚ã”ã¨ã«;futsukamegotoni ã¾ã‚“ã­ã‚“;mannen ã°ã‚“ã«ã‚“;bannin ã‚ã„ã’ã¤;meigetsu ã¿ã‚‡ã†ã«ã¡;myounichi ã‚ã‹ã‚‹ã„;akarui ãªã;naku ã†ã‚‚ã†;umou ã‘ã„ã¨;keito ã‚ã‹ã’;akage ã›ã„ã‚‚ã‚“;seimon ã«ã‚…ã†ã‚‚ã‚“;nyuumon ã‹ã©ãã¡;kadoguchi ã‚„ã¯ã‚“;yahan よã‚ã‘;yoake よãžã‚‰;yozora よるã²ã‚‹;yoruhiru ã‚„ãŒã„;yagai ã®ã®ã¯ãª;nonohana ゆã¿ã‚„;yumiya ã‚„ã•ã;yasaki ゆã†ã“ã†;yuukou ã¨ã‚‚ã ã¡;tomodachi ã—ã¡ã‚ˆã†;shichiyou よã†ã³;youbi よã†ã«ã‚“;younin よã†ãŒã‚ã‚‹;yougaaru ã²ã‚ãã‚‚ã¡ã„ã‚‹;hirokumochiiru らã„ã—ã‚…ã†;raishuu ã‹ãˆã£ã¦ãã‚‹;kaettekuru ãŽã‚Šã—ゃã”ã‹ã‚‰ããŸã“ã¨ã°;girishagokarakitakotoba りã‹;rika ã—んりãŒã;shinrigaku むり;muri りã˜ã‚“;rijin ã‚„ã¾ã–ã¨;yamazato ã‹ã„り;kairi ã‚ã—ゃ;washa ã‹ã„ã‚;kaiwa ã¯ãªã—ã”ãˆ;hanashigoe ã„ã¡ãŒã¤;ichigatsu ãã‚“ã„ã¤;kin_itsu ã†ã¯;uha ã†ãŒã‚“;ugan ã¿ãŽã¦;migite ã†ã;uki ãŠãŠã‚ã‚;ooame ã‚ã¾ãã‚‚;amagumo ãˆã‚“ã‘ã„;enkei ãˆã‚“ã ã‹;endaka ã²ã‚ƒããˆã‚“;hyakuen ãŠã†ã˜;ouji ã˜ã‚‡ãŠã†;joou ãŠã†ã•ã¾;ousama ã—ã„ã‚“;shiin ã¦ã„ã‹;teika ã’ã—ゃ;gesha ã‹ã‚ã—ã‚‚;kawashimo ã‹ã‚ˆã†ã³;kayoubi ã‹ã–ã‚“;kazan ã²ã°ãª;hibana ã‹ã¹ã‚“;kaben ã¯ãªã³;hanabi ã¯ãªã¿;hanami ãŒã£ã“ã†;gakkou ãŒãã—ゃ;gakusha ã§ã‚“ã;denki ã˜ã‚…ã†ãã‚…ã†;juukyuu ããŒã¤;kugatsu ãã‚…ã†ã˜ã¤;kyuujitsu ãã‚…ã†ã›ã‚“;kyuusen ãªã¤ã‚„ã™ã¿;natsuyasumi ãんよã†ã³;kin_youbi ã“ã‚“ã˜ã;konjiki ã‹ã­ã‚‚ã¡;kanemochi ãらã„ã‚;sorairo ã‹ã‚‰ã°ã“;karabako ã“ã‚“ã’ã¤;kongetsu ã’ã¤ã‚ˆã†ã³;getsuyoubi ã¤ãã¿;tsukimi りょã†ã‘ã‚“;ryouken ã„ã¬ã”ã‚„;inugoya ã“ã„ã¬;koinu ã¯ã£ã‘ã‚“;hakken ã‘ã‚“ã¶ã¤;kenbutsu ã¿ã‚‚ã®;mimono ã”ãŒã¤;gogatsu ã”ã«ã‚“;gonin ã„ã¤ã‹;itsuka ã“ã†ã˜ã¤;koujitsu ã§ãã¡;deguchi ã“ã†ã›ã„;kousei ã“ã†ã¡ã‚‡ã†;kouchou ã•ã¯;saha ã²ã ã‚ŠãŒã‚;hidarigawa ã²ã ã‚Šã¦;hidarite ã•ã‚“ãŒã¤;sangatsu ã¿ã£ã‹;mikka ã•ã‚“ã‹ã;sankaku ã²ã‚‡ã†ã–ã‚“;hyouzan ã‚„ã¾ã°;yamaba ã§ã‚“ã—;denshi ã“ã©ã‚‚;kodomo よã†ã™;yousu ã—ãŒã¤;shigatsu よã£ã‹;yokka よんã‹ã„;yonkai ã›ã„ã—;seishi ã‘ã„ã¨;keito ã„ã¨ã¾ã;itomaki ã˜ã³ã;jibiki ã‚ã‹ã˜;akaji ã™ã†ã˜;suuji ã˜ã‹;jika ã¿ã¿ãªã‚Š;miminari ã¿ã¿ã‹ã–り;mimikazari ã—ã¡ãŒã¤;shichigatsu ãªã®ã‹;nanoka ãªãªã°ã‚“;nanaban ã¯ã£ã—ゃ;hassha ãã¡ãã‚‹ã¾;kuchiguruma ã—ã‚…ã ã‚“;shudan ã¦ã»ã‚“;tehon ã˜ã‚‡ã†ãš;jouzu ã˜ã‚…ã†ãŒã¤;juugatsu ã¨ãŠã‹;tooka ã˜ã‚…ã†ã˜;juuji ã—ã‚…ã£ã±ã¤;shuppatsu ãŠã‚‚ã„ã§;omoide ã²ãã ã—;hikidashi ã˜ã‚‡ã›ã„;josei ã«ã‚‡ã†ã¼ã†;nyoubou ãŠã‚“ãªã®ã“;onnanoko ã—ょã†ã˜ã‚“;shoujin ã“ã†ã—;koushi ãŠãŒã‚;ogawa ã„ã˜ã‚‡ã†;ijou ã‹ã‚ã‹ã¿;kawakami ã­ã‚ã’;neage ã—んりん;shinrin ã—ã‚“ã’ã‚“;shingen ã—ã‚“ã‹ã‚“;shinkan ã«ã»ã‚“ã˜ã‚“;nihonjin ã«ã‚“ã’ã‚“;ningen ã²ã¨ã§;hitode ã™ã„よã†ã³;suiyoubi ã™ã„ã;suiso ãŠãŠã¿ãš;oomizu ã›ã„ã‹ã„;seikai ã—ょã†ãŒã¤;shougatsu ã—ょã†ã˜ã;shoujiki ãŒãã›ã„;gakusei ã„ã£ã—ょã†;isshou ã„ãã‚‚ã®;ikimono ã›ã„ã­ã‚“;seinen ã‚ãŠãžã‚‰;aozora ã‚ãŠã‚‚ã®;aomono ã“ã‚“ã›ã;konseki ゆã†ã—ょã;yuushoku ゆã†ã²;yuuhi ã‹ã›ã;kaseki ã“ã„ã—;koishi ã›ãゆ;sekiyu ã›ãã©ã†;sekidou ã›ãã‚ã‚“;sekimen ã‚ã‹ã‚“ã¼ã†;akanbou ã›ã‚“ãˆã‚“;sen_en ã”ã›ã‚“;gosen ã¡ã©ã‚Š;chidori ã‹ã‚ãã¡;kawaguchi ã‹ã‚ã°ãŸ;kawabata ãˆã©ãŒã‚;edogawa ã›ã‚“ã’ã¤;sengetsu ゆã³ã•ã;yubisaki ãã†ãã‚…ã†;soukyuu ã¯ã‚„ãã¡;hayakuchi ã¯ã‚„ã˜ã«;hayajini ãµãã;fusoku ã‚ã—ãã³;ashikubi ã‚ã—ãŠã¨;ashioto ãã‚“ã¡ã‚‡ã†;sonchou ã®ã†ãã‚“;nouson むらã³ã¨;murabito ãŸã„ã‹ã„;taikai ã ã„ãŒã;daigaku ãŠãŠã”ãˆ;oogoe ã ã‚“ã—;danshi ã¡ã‚‡ã†ãªã‚“;chounan ãŠã¨ã“ãŽ;otokogi ã¡ã‚…ã†ã‚Šã¤;chuuritsu ã¡ã‚…ã†ã”ã;chuugoku ã¾ã‚“ãªã‹;mannaka ãã›ã„ã¡ã‚…ã†;kiseichuu ãŒã„ã¡ã‚…ã†;gaichuu ã‚€ã—ã°;mushiba ã¡ã‚‡ã†ã¿ã‚“;choumin ã¡ã‚‡ã†ã¡ã‚‡ã†;chouchou ã—ãŸã¾ã¡;shitamachi ã¦ã‚“ã—;tenshi ã¦ã‚“ã®ã†;tennou ã‚ã¾ãã ã‚Š;amakudari ã§ã‚“ãˆã‚“;den_en ãŸã†ãˆ;taue ã„ãªã‹;inaka ã©ã‚ˆã†ã³;doyoubi ã¨ã¡;tochi ã¤ã¡ãã•ã„;tsuchikusai ã«ãŒã¤;nigatsu ã«ã˜ã‚…ã†;nijuu ãµãŸã‚Š;futari ã«ã¡ã‚ˆã†ã³;nichiyoubi ã»ã‚“ã˜ã¤;honjitsu ãµã¤ã‹;futsuka ゆã«ã‚…ã†;yunyuu ã„りãã¡;iriguchi ã„れもã®;iremono らã„ã­ã‚“;rainen ã”ã­ã‚“ã›ã„;gonensei ã¨ã—より;toshiyori ã¯ãã—ょ;hakusho ã¯ãã˜ã‚“;hakujin ã¯ã¡ãŒã¤;hachigatsu ã‚„ãŠã‚„;yaoya ã‚„ã¤ã‚ãŸã‚Š;yatsuatari ã²ã‚ƒãã°ã„;hyakubai ã²ã‚ƒãã—ょã†;hyakushou ã²ã‚ƒã£ã‹ã¦ã‚“;hyakkaten ã¶ã‚“ãŒã;bungaku ã‚‚ã‚“ã˜;monji ã‚‚ã‚“ã¶ã—ょã†;monbushou ã‚‚ãよã†ã³;mokuyoubi ãã‚;kime ã“ã ã¡;kodachi ã«ã»ã‚“;nihon ã»ã‚“ã‚„;hon_ya ã»ã‚“ã¦ã‚“;honten ゆã†ã‚ã„;yuumei ã‚ã„ã˜ã‚“;meijin ã²ã¨ã¤ã‚;hitotsume ã¡ã‚…ã†ã‚‚ã;chuumoku ã²ã¨ã‚;hitome ã˜ã‚Šã¤;jiritsu ãŸã¡ã°;tachiba ã‚ã ã¤;medatsu ã®ã†ã‚Šã‚‡ã;nouryoku ã˜ã‚“りãã—ゃ;jinrikisha ã¡ã‹ã‚‰ã ã‚ã—;chikaradameshi りんãŒã;ringaku ã“ã°ã‚„ã—;kobayashi ã¿ã¤ã‚Šã‚“;mitsurin ã‚ããŒã¤;rokugatsu ã‚€ã„ã‹;muika ã‚ã£ã‹ã;rokkaku ã„んりょã;inryoku ã˜ã³ã;jibiki ã¨ã‚Šã²ã;torihiki ã†ã‚“ã‚‚;unmo ã›ã„ã†ã‚“;seiun ã†ããã‚‚;ukigumo ãˆã‚“ãã;ensoku ã¨ãŠã¾ã‚り;toomawari ãˆã‚“ã—;enshi ãªã‚“ã‹ã„;nankai ãªã«ã‚‚ã®;nanimono ãªã‚“ã«ã‚“;nannin ãŒã£ã‹;gakka ã‘ã‚“ãã‚…ã†ã‹;kenkyuuka ã—ょã‹;shoka ã¾ãªã¤;manatsu ãªã¤ã¾ã¤ã‚Š;natsumatsuri ã®ã†ã‹;nouka ã¶ã‘;buke ã•ã£ã‹;sakka ã‹ã—ã‚…;kashu ãŸã‚“ã‹;tanka ã‹ãžãˆã†ãŸ;kazoeuta ãˆã„ãŒ;eiga ãŒã‚ã‚“;gamen ã‹ã„ã¦ã‚“;kaiten ã‹ã„ã™ã†;kaisuu ã„ã„ã¾ã‚ã—;iimawashi ã‹ã„ã—ゃ;kaisha ãˆã—ゃã;eshaku ã“ã£ã‹ã„;kokkai ã‹ã„ãã‚“;kaigun ã«ã»ã‚“ã‹ã„;nihonkai ã†ã¿ã¹;umibe ã‹ã„ãŒ;kaiga ãã¡ãˆ;kuchie ãˆã»ã‚“;ehon ã»ãŸã¦ãŒã„;hotategai ã‹ã„ãŒã‚‰;kaigara ã‹ã„ã‚‹ã„;kairui ãŒã„ã˜ã‚“;gaijin ã’ã‹;geka ãã¨ãŒã‚;sotogawa ã«ã‚“ã’ã‚“;ningen ã¾ã¡ãŒã„;machigai ãŒã‚“ã‚ã‚“;ganmen ã‹ãŠã„ã‚;kaoiro ã‹ãŠã¤ã;kaotsuki ãã›ã‚“;kisen ãã‚ã¤;kiatsu ãã—ゃ;kisha ãã˜;kiji ã«ã£ã;nikki ãã‹;kika ãã›ã„;kisei ã‹ãˆã‚Šã¿ã¡;kaerimichi ãŽã‚…ã†ã«ã;gyuuniku ãŽã‚…ã†ã«ã‚…ã†;gyuunyuu ã†ã—ã‹ã„;ushikai ãã‚“ãŽã‚‡;kingyo ã†ãŠã¤ã‚Š;uotsuri ã•ã‹ãªã‚„;sakanaya ã¨ã†ãょã†;toukyou ã˜ã‚‡ã†ãょã†;joukyou ã‘ã„ã²ã‚“;keihin ãょã†ã‹;kyouka ã¤ã‚ˆã¿;tsuyomi ãょã†ã‹ã„;kyoukai ãょã†ã—ã¤;kyoushitsu ãŠã—ãˆã”;oshiego ãŽã‚‡ãã¯ã„;gyokuhai ãŸã¾ã¤ã;tamatsuki ã‚ã ã¾;medama ãã‚“ã˜ã‚‡;kinjo ã•ã„ãã‚“;saikin ã¡ã‹ã¿ã¡;chikamichi ã‘ã„ã—ã;keishiki ã‹ãŸã¡ã¥ãã‚‹;katachidukuru ã”ã†ã‘ã„;goukei ã‘ã„ã•ã‚“;keisan ã‹ã‚“ã ã‚“ã‘ã„;kandankei ã’ã‚“ã;genki ãŒã‚“らã„;ganrai ã‚‚ã¨ã©ãŠã‚Š;motodoori ã’ã‚“ã—;genshi ã’ã‚“ã¶ã‚“;genbun ãã•ã¯ã‚‰;kusahara ã“ãŒã„;kogai ã“ã—ã‚…;koshu ã¨ãã¡;toguchi ãµã£ã“;fukko ã“ã†ã“ãŒã;koukogaku ãµã‚‹ã»ã‚“;furuhon ã”ãœã‚“;gozen ã—ょã†ã”;shougo ã„ã”;igo ã“ã†ã¯ã‚“;kouhan ã‚ã¨ã‚ã˜;atoaji ã”ã¡ã‚‡ã†;gochou ã‚‚ã®ãŒãŸã‚Š;monogatari ã«ã»ã‚“ã”;nihongo ã“ã†ã˜ã‚‡ã†;koujou ã˜ã‚“ã“ã†;jinkou ã ã„ã;daiku ã“ã†ã ã„;koudai ã²ã‚ã—ã¾;hiroshima ã“ã†ã“ã;koukoku ãŒã„ã“ã†;gaikou ã“ã†ã‹ã‚“;koukan ã«ã£ã“ã†;nikkou ã“ã†ã­ã‚“;kounen ã“ã†ãŒã;kougaku ã“ã†ã‚ã‚“;kouan ã•ã‚“ã“ã†;sankou ã‹ã‚“ãŒãˆã”ã¨;kangaegoto ã˜ã£ã“ã†;jikkou ãŽã‚‡ã†ã‚Œã¤;gyouretsu ゆããˆ;yukue ã“ã†ã’ã‚“;kougen ã•ã„ã“ã†;saikou ãŸã‹ã­;takane ã“ã†ã‚ˆã†;kouyou ãŠã†ã”ã‚“;ougon ãã„ã‚;kiiro ã”ã†ã‚Š;gouri ã‹ã£ã›ã‚“;kassen ã¯ãªã—ã‚ã„;hanashiai ゆã†ã“ã;yuukoku ãŸã«ãžã“;tanizoko ã¯ã›ãŒã‚;hasegawa ã—ã“ã;shikoku ã“ã£ã‹;kokka ã“ãã˜ã‚“;kokujin ãã‚ã˜;kuroji ã“ãã—ã³ã‚‡ã†;kokushibyou ã“ã‚“ã—ã‚…ã†;konshuu ã“ã‚“ã©;kondo ã“ã¨ã—;kotoshi ã¦ã‚“ã•ã„;tensai ã•ã„ã®ã†;sainou ã”ã•ã„;gosai ã›ã„ã•ã;seisaku ã•ãã²ã‚“;sakuhin ã©ã†ã•;dousa ã•ã‚“ã·;sanpu よã•ã‚“;yosan ã•ã‚“ã™ã†;sansuu ã¡ã‚…ã†ã—;chuushi ã¨ã‚ã©;tomedo ã¨ã¾ã‚ŠãŽ;tomarigi ã™ã„ãŸã—;suitashi ã—ã˜ã‚‡ã†;shijou ã†ãŠã„ã¡;uoichi ã—ãã†;shisou ã—ã“ã†;shikou ãŠã‚‚ã„ã ã™;omoidasu ã²ã‚‡ã†ã—;hyoushi ã‚ã—;washi ã¦ãŒã¿;tegami りょã†ã‚ã‚“ã˜;ryouanji ã˜ã„ã‚“;jiin ã‚„ã¾ã§ã‚‰;yamadera ã˜ã¶ã‚“;jibun ã—ãœã‚“;shizen ã˜ã—ã‚“;jishin ã«ã˜;niji ã¨ãã©ã;tokidoki ã—ã¤ãªã„;shitsunai ãょã—ã¤;kyoshitsu ã‚€ã‚ã¤;murotsu ã—ゃã‹ã„;shakai ã˜ã‚“ã˜ã‚ƒ;jinja ã—ゃã„ã‚“;shain ã˜ã‚ƒãã¦ã‚“;jakuten ã˜ã‚ƒãã—ょã†;jakushou よã‚ã‚€ã—;yowamushi ã—ゅりょã†;shuryou ãã³ã‚;kubiwa ãã³ãり;kubikiri ã°ã‚“ã—ã‚…ã†;banshuu ã—ã‚…ã†ã¶ã‚“;shuubun ã‚ããžã‚‰;akizora ã›ã„ã—ã‚…ã‚“;seishun ã°ã„ã—ã‚…ã‚“;baishun ã¯ã‚‹ãŽ;harugi ã—ょã;shoki ãょã†ã‹ã—ょ;kyoukasho ã¯ãŒã;hagaki ã—ょã†ã­ã‚“;shounen ã—ょã†ã™ã†;shousuu ãŸã—ょã†;tashou ã‹ã„ã˜ã‚‡ã†;kaijou ã«ã‚…ã†ã˜ã‚‡ã†;nyuujou ã²ã‚ã°;hiroba ã“ã†ã—ょã;koushoku ã—ãã;shikiso ãŽã‚“ã„ã‚;gin_iro ã—ょãã˜;shokuji ãŸã¹ã‚‚ã®;tabemono ãã„ã‚‚ã®;kuimono ã¡ã‚…ã†ã—ã‚“;chuushin ã—ã‚“ãžã†;shinzou ã¾ã”ã“ã‚;magokoro ã—ã‚“ã­ã‚“;shinnen ã—ã‚“ã´ã‚“;shinpin ã—ã‚“ã˜ã‚“;shinjin ã—ã‚“ã‚‹ã„;shinrui ãŠã‚„ã“;oyako ã¡ãš;chizu ãšãŒ;zuga ã¨ã—ょã‹ã‚“;toshokan ã™ã†ãŒã;suugaku ã˜ã‚…ãš;juzu ã‹ãšã‹ãš;kazukazu ã›ã„よã†;seiyou ã‹ã‚“ã•ã„;kansai ã«ã—ã³;nishibi ã›ã„ãˆã‚“;seien ã ã„ãŠã‚“ã˜ã‚‡ã†;daionjou ãªãã”ãˆ;nakigoe ã‹ã›ã„;kasei ã¿ã‚‡ã†ã˜ã‚‡ã†;myoujou ãªãŒã‚Œã¼ã—;nagareboshi ã›ã„ã¦ã‚“;seiten ã¯ã‚Œã°ã‚Œ;harebare ã¯ã‚ŒãŽ;haregi ã—ã‚“ã›ã¤;shinsetsu ã„ã£ã•ã„;issai ã¯ã‚‰ãり;harakiri ã“ã†ã›ã¤;kousetsu ãŠãŠã‚†ã;ooyuki ã˜ã‚‡ã›ã¤ã—ゃ;josetsusha ã›ã‚“ã¡ã‚‡ã†;senchou ã“ãŽã¶ã­;kogibune ãµãªã³ã‚“;funabin ãœã‚“ã—ゃ;zensha ãã†ãœã‚“;kuuzen ã¾ãˆã°ã‚‰ã„;maebarai ãã—ã;soshiki ãã¿ã‚ã„;kumiai ãã¿ãŸã¦;kumitate ãょã†ãã†;kyousou ãšã¤ã†;zutsuu ã‚ãŸã¾ã†ã¡;atamauchi ã©ã†ã‚ˆã†;douyou ã©ã†ã˜;douji ã©ã†ã„;doui ã¦ã¤ã©ã†;tetsudou ã—ã‚“ã¨ã†;shintou ã¿ã¡ã°ãŸ;michibata ã©ãã—ゃ;dokusha ã¨ãã»ã‚“;tokuhon よã¿ã‹ãŸ;yomikata ã¨ã†ãªã‚“;tounan ãªã‚“ãょã;nankyoku ã¿ãªã¿ãŒã‚;minamigawa ã°ã˜ã‚…ã¤;bajutsu ã°ã—ゃ;basha ã†ã¾ã®ã‚Š;umanori ã°ã„ã°ã„;baibai ã°ã„ã¦ã‚“;baiten ã†ã‚Šã‚‚ã®;urimono ã°ã„ã—ã‚…ã†;baishuu ã‹ã„ã‚‚ã®;kaimono ã‹ã„ã¦;kaite ã°ããŒ;bakuga ã‚€ãŽã¡ã‚ƒ;mugicha ã“ã‚€ãŽ;komugi ã¯ã‚“ã¨ã†;hantou ã¯ã‚“ã¨ã—;hantoshi ã˜ã‚…ã‚“ã°ã‚“;junban ã°ã‚“ã«ã‚“;bannin ãµã¼;fubo ãŠã¨ã†ã•ã¾;otousama ã¡ã¡ãŠã‚„;chichioya ãµã†ã›ã‚“;fuusen ã‹ã¿ã‹ãœ;kamikaze ã‚ãµã†;wafuu ã¶ã‚“ã—;bunshi ã„ã£ã·ã‚“;ippun ã„ã¡ã¶;ichibu ã¡ã‚‡ã†ã‚‚ã‚“;choumon ããã¨ã‚‹;kikitoru ã¹ã„ã‹;beika ã¹ã„ã“ã;beikoku ã¯ãã¾ã„;hakumai ã—ã‚“ã½;shinpo ã»ã“ã†ã—ゃ;hokousha ã‚ã‚‹ãã ã™;arukidasu ã¼ã›ã„;bosei ãŠã‹ã‚ã•ã¾;okaasama ã¯ã¯ãŠã‚„;hahaoya ã»ã†ãŒã;hougaku ãŠã‚„ã‹ãŸ;oyakata ã¿ã‹ãŸ;mikata ã¨ã†ã»ã;touhoku ã¯ã„ã¼ã;haiboku ããŸã‹ãœ;kitakaze ã¾ã„ã«ã¡;mainichi ã¾ã„ã©;maido ã²ã”ã¨;higoto ã—ã¾ã„;shimai ã„ã‚‚ã†ã¨ã¶ã‚“;imoutobun れã„ã¾ã„;reimai ã‚ã„ã¯ã;meihaku ã¿ã‚‡ã†ã«ã¡;myounichi ã‚ã‘ãŒãŸ;akegata ã‚ã„ã©ã†;meidou ãªãã”ãˆ;nakigoe ãªã‚Šã‚‚ã®;narimono よã†ã‚‚ã†;youmou ã‘ãŒã‚;kegawa ã‘ã‚€ã—;kemushi ã›ã„ã‚‚ã‚“;seimon ã‚‚ã‚“ã°ã‚“;monban ã‹ã©ã§;kadode ã»ã‚“ã‚„;hon_ya よã‚ã‘;yoake よるãŒãŠ;yorugao ã‚„ã›ã„;yasei ã‚„ãã‚…ã†;yakyuu ã®ã¯ã‚‰;nohara ゆã†ã˜ã‚“;yuujin ゆã†ã˜ã‚‡ã†;yuujou ã¨ã‚‚ã ã¡;tomodachi よã†ã„;youi ã‚ãよã†;akuyou よã†ã³;youbi ã‹ã‚ˆã†;kayou ã—ã¡ã‚ˆã†;shichiyou ã—んらã„ã—ゃ;shinraisha ãらã;kiraku ãŸã®ã—ã¿;tanoshimi ãŒã£ã;gakki ã„ã¡ã‚Š;ichiri ã•ã¨ã³ã¨;satobito ãµã‚‹ã•ã¨;furusato りã›ã„;risei むり;muri ã—んりãŒã;shinrigaku ã‹ã„ã‚;kaiwa ã‚ã ã„;wadai ã“ã°ãªã—;kobanashi ã‚ãã„;akui ãŠã‹ã‚“;okan ã‚ã‚‹ã‚‚ã®;warumono ãµã‚ã‚“;fuan ã‚ã‚“ã—ã‚“;anshin ã‚„ã™ã‚‚ã®;yasumono ã‚ã„ã‚ã‚“;meian ã‚ã‚“ã•ã¤;ansatsu ã¾ã£ãら;makkura ã’ã‹ã„;gekai ã„ãŒã;igaku ã‘ã¤ã„;ketsui ã„ã‘ã‚“;iken ãょã†ã„ã;kyouiku ã„ãã˜;ikuji ãã ã¦ãŠã‚„;sodateoya ã‹ã„ã„ã‚“;kaiin ãœã‚“ã„ã‚“;zen_in ã©ã†ã„ã‚“;douin ã³ã‚‡ã†ã„ã‚“;byouin ã˜ã„ã‚“;jiin ãŽã„ã‚“;giin ã„んよã†ã™ã„;in_yousui ã®ã¿ã‚‚ã®;nomimono ã®ã¿ã‚„;nomiya ãµã†ã‚“;fuun ã†ã‚“ãã†;unsou ã™ã„ãˆã„;suiei ã¯ã„ãˆã„;haiei ã²ã‚‰ãŠã‚ˆãŽ;hiraoyogi ãˆãã¡ã‚‡ã†;ekichou ãˆãã¹ã‚“;ekiben ã¨ã†ãょã†ãˆã;toukyoueki ã©ã†ã¶ã¤ãˆã‚“;doubutsuen ã¯ãªãžã®;hanazono ãŠã†ã ã‚“;oudan ãŠã†ã“ã†;oukou よã“ãŒãŠ;yokogao ãŠãã˜ã‚‡ã†;okujou ã“ã‚„;koya ã±ã‚“ã‚„;pan_ya ãŠã‚“ã›ã‚“;onsen ãŠã‚“ã˜ã‚‡ã†;onjou ãŠã‚“ã—ã¤;onshitsu ã¸ã‚“ã‹;henka ã‘ã—ょã†;keshou ã°ã‘ã‚‚ã®;bakemono ã—ã‚…ã£ã‹;shukka ãµãªã«;funani ã«ã‚‚ã¤;nimotsu ãょã†ã‹ã„;kyoukai ã›ã„ã‹ã„;seikai ã‹ã„ã¯ã¤;kaihatsu ã‹ã„ã—;kaishi ã²ã‚‰ãã¥ãª;hirakiduna ã‹ã„ã ã‚“;kaidan ã«ã‹ã„;nikai ã‹ã„ãã‚…ã†;kaikyuu ã‹ãã©;kakudo ã¤ã®ã¶ãˆ;tsunobue ã¾ã¡ã‹ã©;machikado ã‹ã£ã;kakki ã‹ã¤ã©ã†;katsudou ã‹ã‚“ã±;kanpa ã•ã‚€ã‘;samuke ã‹ã‚“ã ã‚“ã‘ã„;kandankei ã‹ã‚“ã—ã‚“;kanshin ã‹ã‚“ã‹ã;kankaku ã‹ã‚“ã˜ã‚‡ã†;kanjou ã‹ã„ã‹ã‚“;kaikan りょã‹ã‚“;ryokan ã³ã˜ã‚…ã¤ã‹ã‚“;bijutsukan ã‹ã„ãŒã‚“;kaigan ãŸã„ãŒã‚“;taigan ã‹ã‚ãŽã—;kawagishi ãŒã‚“ã›ã;ganseki ã„ã‚ã‚„;iwaya ã˜ã•;jisa ã•ã¹ã¤;sabetsu ã•ã—ã“ã‚€;sashikomu ã‚„ã•ã„;yasai ãªãŸã­;natane ã•ã„ã—ょãã—ã‚…ãŽ;saishokushugi ã•ã„ã ã„;saidai ã•ã„ã”;saigo ã•ã„ã—ã‚“ã—ã;saishinshiki ã–ã„ã‚‚ã;zaimoku ã–ã„りょã†;zairyou ã˜ã‚“ã–ã„;jinzai ã•ãã˜ã¤;sakujitsu ã•ãã‚„;sakuya ã•ãã­ã‚“;sakunen ã„ã‚“ã•ã¤ã—ょ;insatsusho ã•ã£ã—ã‚“;sasshin ã“ã†ã›ã„ãšã‚Š;kouseizuri ã•ã¤ã˜ã‚“;satsujin ã˜ã•ã¤;jisatsu ã“ã‚ã—ã‚„;koroshiya ã‘ã„ã•ã¤;keisatsu ã•ã£ã¡;sacchi ã‹ã‚“ã•ã¤;kansatsu ã•ã‚“ã‹;sanka ã•ã‚“ã“ã†;sankou ã•ã‚“ãŽ;sangi ã›ã„ã•ã‚“;seisan ã•ã‚“ã¶ã¤;sanbutsu ã—ã‚…ã£ã•ã‚“;shussan ã•ã‚“ã¶ã‚“;sanbun ã¡ã‚‰ã—;chirashi ã–ã‚“ãã‚“;zankin ã–ã‚“ã«ã‚“;zannin ã¶ã—;bushi ã—ã‹ã‚“;shikan ã—ã‚…ã†ã—;shuushi ã—ã‚ã„;shimei ã—ãžã;shizoku ã‹ã¨ã†ã—;katoushi れãã—;rekishi ã˜ã‚‡ã—;joshi ã—ã˜ã‚‡ã†;shijou ã—ã»ã†;shihou ã—れã„ã¶;shireibu ã—ã‹ã„ã—ゃ;shikaisha ã­ãˆã•ã‚“;neesan ã‚ã­ã†ãˆ;aneue ã—ã¾ã„ã¨ã—;shimaitoshi ã—ã‚ã„;shiai ã—ã‘ã‚“ã‹ã‚“;shikenkan ã“ã“ã‚ã¿;kokoromi ã—ょã†ã¦ã‚“ãŒã„;shoutengai ã‹ãã ã„;kakudai ã‹ãã•ã‚“;kakusan ã‹ãã›ã„ã;kakuseiki ã‹ãã‚ã„;kakumei ã‹ãã—ã‚“;kakushin ã‹ã‚ã“ã†ã°;kawakouba ã‹ã£ã‹;kakka ãªã„ã‹ã;naikaku ã‹ãりょã†;kakuryou ã¶ã‚“ã‹ã¤;bunkatsu ã‚りã³ã;waribiki ã‚りã‚ã„;wariai ãりã‹ã¶;kirikabu ã‹ã¶ã—ã;kabushiki ã‹ã¶ã¬ã—;kabunushi ã‹ã‚“ã¡ã‚‡ã†;kanchou ã‹ã‚“ã˜ã‚‡ã†;kanjou ã»ã—ã«ã;hoshiniku ã ã„ã„ã£ã‹ã‚“;daiikkan ã¾ãã‚‚ã®;makimono ã„ã¨ã¾ã;itomaki ã‹ã‚“ã”ãµ;kangofu ã‹ã‚“ã°ã‚“;kanban ã‹ã‚“ã—ã‚…;kanshu ã‹ã‚“ã“ã;kankoku ã‹ã‚“ã—ょã†;kanshou ã‹ã‚“ゆã†;kan_yuu ã‹ã‚“ãŸã‚“;kantan ã—ょã‹ã‚“;shokan ã‹ã‚“りゃã;kanryaku ãŒã‚“ã‚„ã;gan_yaku ã¾ã‚‹ã¿;marumi ã«ã£ã½ã‚“ã¾ã‚‹;nipponmaru ãã;kiki ãã‘ã‚“;kiken ããŒã„;kigai ãã˜ã‚‡ã†;kijou ãã¸ã‚“;kihen ã˜ã‚€ã¤ããˆ;jimutsukue ã¯ã£ã;hakki ã—ã;shiki ãã¯ã¤ã›ã„;kihatsusei ããžã;kizoku ãã¡ã‚‡ã†;kichou ã—ã¤ãŽ;shitsugi ãŽã‚‚ã‚“;gimon ãŽã˜;giji ãã‚…ã†ã©ã†;kyuudou ãã‚…ã†ã˜ã‚‡ã†;kyuujou ゆã¿ã¨ã‚Š;yumitori ãã‚…ã†ã—ã‚…ã†;kyuushuu ゆã›ã„;yusei ã¦ã‚“ã˜ã‚‡ã†;tenjou ã„ã©;ido ã›ã„ã‚ã„;seimei ã‹ã„ã›ã„;kaisei ã²ã‚ƒãã—ょã†;hyakushou ã›ã„ãµã;seifuku ãˆã‚“ã›ã„;ensei ã›ã„ã„;seii ã„ã£ã›ã„;issei ã›ã„ã„ã¤;seiitsu ã›ã„ã—ょã†;seishou ãŽã›ã„ã—ゃ;giseisha ã„ã‘ã«ãˆ;ikenie ãŽã›ã„ã¦ã;giseiteki ã›ã„ãょ;seikyo ãã‚…ã†ã›ã„;kyuusei ã¡ã‚‡ã†ã›ã„;chousei ãœã‚“ã›ã„ã;zenseiki ãŠãŠã‚‚り;oomori ã‚‚ãˆã•ã‹ã‚‹;moesakaru ã˜ã‚‡ã›ã„;josei ã¯ãªã‚€ã“;hanamuko ã‚€ã“ã„り;mukoiri ã›ã„ã‚„ã;seiyaku ã›ã‚“ã›ã„;sensei ã¡ã‹ã„ã”ã¨;chikaigoto ã›ã„ãã‚…ã†;seikyuu ãµã—ã‚“;fushin ã†ã‘ãŠã„ã«ã‚“;ukeoinin ã¯ã„ã›ã;haiseki ã›ã£ã“ã†;sekkou ã›ãりょã;sekiryoku ã›ãã˜ã¤;sekijitsu ã‚€ã‹ã—ãµã†;mukashifuu ã“ã‚“ã˜ã‚ƒã;konjaku ã¶ã‚“ã›ã;bunseki ã‹ã„ã›ã;kaiseki ã›ãã—ã‚…ã¤;sekishutsu ã›ãã—ã‚…;sekishu ã„ã£ã›ã;isseki ã„ã£ã›ããŒã‚“;issekigan ã¤ã†ã›ã;tsuuseki ãŠã—ã’;oshige ã»ã­ãŠã—ã¿;honeoshimi ã¤ã„ã›ã;tsuiseki ã‚ã—ã‚ã¨;ashiato ã„ã›ã;iseki ã—ょã›ã;shoseki ã“ã›ã;koseki ã“ãã›ã;kokuseki ã›ã£ã—ゃ;sessha ã¼ã†ã—ょã†;boushou ãŒãã¼ã†;gakubou ã¼ã†ã ã„;boudai ã¼ã†ã¾ã‚“;bouman ã¼ã†ã¡ã‚‡ã†ã¹ã‚“;bouchouben ã„ã‚“ã¼ã†;inbou ã‚€ã»ã‚“;muhon ã¼ã†ã‚Šã‚ƒã;bouryaku ã˜ã‚…ã‚“ã¼ã;junboku ãã¼ã;soboku ã»ã†ã®ã;hounoki ã“ã†ã¼ã;kouboku ã©ã¼ã;doboku ã¼ãら;bokura ã²ã¤ã¼ã;hitsuboku ã¯ãã¼ã;hakuboku ã™ã¿ãˆ;sumie ã ã¼ã;daboku ã™ã‚‚ã†;sumou ã¼ãã•ã¤;bokusatsu ã¼ã£ã—ã‚…ã†;bosshuu ã«ã¡ã¼ã¤;nichibotsu ã¼ã¤ã”;botsugo ãã¨ã¼ã‚Š;sotobori ã¤ã‚Šã¼ã‚Š;tsuribori ã»ã‚Šã‹ã‚;horikawa ã»ã‚“ãã†;honsou ã»ã‚“ã½ã†;honpou ã—ã‚…ã£ã½ã‚“;shuppon ã»ã‚“ã‚„ãã‹;hon_yakuka ã»ã‚“ã„;hon_i ã²ã‚‹ãŒãˆã£ã¦;hirugaette ã¸ã„ã¼ã‚“;heibon ã¼ã‚“ã›ã‚“;bonsen ã¯ã‚“れã„;hanrei ã¼ã‚“ã¡;bonchi ã¼ã‚“ãŠã©ã‚Š;bon_odori ã¼ã‚“ã‘ã„;bonkei ã¾ãµ;mafu ã¾ã‚„ã;mayaku ã‚ã•ã¥ãª;asaduna ã¾ã¦ã‚“ã‚ã†;matenrou ã¾ã•ã¤;masatsu ã¾ã•ã¤ãŠã‚“;masatsuon ã‘ã‚“ã¾;kenma ã¾ã‚ã¤;mametsu ãã¤ã¿ãŒã;kutsumigaki ã‚ãã¾;akuma ã¾ã»ã†;mahou ã¾ã‚‰;mara ã¾ã„ãã†;maisou ã†ã‚ãŸã¦;umetate ã†ã‚‚れãŽ;umoregi ã“ã¾ã;komaku ã‚‚ã†ã¾ã;moumaku ã¾ãã—ã¤;makushitsu ã¾ãŸã¯;mataha ã¾ãŸã¨ãªã„;matatonai ã¾ãŸãŒã—;matagashi ã¾ã£ã•ã¤;massatsu ã¾ã£ã¡ã‚ƒ;maccha ã„ã¡ã¾ã¤;ichimatsu ãŸã„ã¾ã‚“;taiman ã˜ã¾ã‚“;jiman ã¾ã‚“ã›ã„;mansei ã¾ã‚“ãŒ;manga ã•ã‚“ã¾ã‚“;sanman ããžã‚ã”ã¨;sozorogoto ã¿ã‚Šã‚‡ã;miryoku ã¿ã‚ã;miwaku ã¿ã‚Šã‚‡ã†;miryou ã“ã†ã‹ã;koukaku ã“ã†ã‚ã‚“;kouwan コッドã¿ã•ã;koddomisaki ã¿ã‚‡ã†ã‚ã‚“;myouan ã³ã¿ã‚‡ã†;bimyou ãã¿ã‚‡ã†;kimyou ãµã¿ã‚“ã—ょã†;fuminshou ã­ã‚€ã‘;nemuke ã„ã­ã‚€ã‚Š;inemuri ã¼ã†ã’ã;bougeki ã»ã“ã•ã;hokosaki ã‚€ã˜ã‚…ã‚“ã—ãŸ;mujunshita ã‚€ã¡ã‚…ã†;muchuu ã‚ãã‚€;akumu ゆã‚ã¿ã‚‹;yumemiru ã‚€ã¦ã;muteki ã®ã†ã‚€;noumu ã‚ã•ãŽã‚Š;asagiri ã“ã‚€ã™ã‚;komusume ã˜ã‚‡ã†ã—ãã‚“;joushigun ã‚€ã™ã‚ã–ã‹ã‚Š;musumezakari ã‚ã„ãŒã‚‰;meigara ã‚ã„ã;meiki ã‚ã„ã‚ã„;meimei ãœã¤ã‚ã¤;zetsumetsu ã‚ã¤ã¼ã†;metsubou ã¯ã‚ã¤;hametsu ã‚ã‚“ã˜ã‚‡;menjo ã‚ã‚“ãœã„;menzei ã»ã†ã‚ã‚“;houmen ã¯ã‚“ã‚‚;hanmo もりん;morin ã—ã’ã¿;shigemi ã¼ã†ã’ã‚“;bougen ã‚‚ã†ãã†;mousou ã‹ã›ã„ãŒã‚“;kaseigan ãã’ã‚“;kigen ã¯ã‚„ãŠã;hayaoki ãã©ã†ã‚Šã‚‡ã;kidouryoku ãŒã£ã;gakki ããŸã„;kitai ã•ã„ã”;saigo らã„ãゃã;raikyaku ã˜ã‚‡ã†ãゃã;joukyaku ã‹ãã„ã‚“;kakuin ã‘ã‚“ãã‚…ã†;kenkyuu ãã‚…ã†ã‚ã„;kyuumei ãŸã‚“ãã‚…ã†;tankyuu ãã‚…ã†ã—;kyuushi ãã‚…ã†ãã;kyuusoku ãŠãŠã„ããŽ;ooisogi ã—ã‚“ãã‚…ã†;shinkyuu ã©ã†ãã‚…ã†ã›ã„;doukyuusei ã˜ã‚‡ã†ãã‚…ã†;joukyuu ã˜ã‚“ãã†;jinguu ãã‚…ã†ã¡ã‚…ã†;kyuuchuu ã¿ã‚„ã•ã¾;miyasama ãã‚…ã†ãŽ;kyuugi ã¡ãã‚…ã†;chikyuu ãŸã¾ã²ã‚ã„;tamahiroi ãょã­ã‚“;kyonen ã‹ã“;kako ãŸã¡ã•ã‚‹;tachisaru ã¦ã£ãょã†;tekkyou りã£ãょã†;rikkyou ã„ã—ã°ã—;ishibashi ã•ã‚“ãŽã‚‡ã†;sangyou ã–ã„ã”ã†;zaigou ã—ã‚ã–;shiwaza ãょãã›ã‚“;kyokusen ã•ã£ãょã;sakkyoku ã¾ã’ã‚‚ã®;magemono ãょãã‚ã‚“;kyokumen ã‘ã£ãょã;kekkyoku ゆã†ã³ã‚“ãょã;yuubinkyoku ãŽã‚“ã“ã†;ginkou ãŽã‚“ãŒ;ginga ãŽã‚“ã‹;ginka ãã—ã‚“;kushin ãã¤ã†;kutsuu ã«ãŒã¿;nigami ãã‚ã„;guai よã†ã;yougu ã©ã†ã;dougu ã¼ã†ãã‚“;boukun ã•ã„ãã‚“;saikun ã‚„ã¾ã ãã‚“;yamadakun ãµã‘ã„;fukei ã«ã„ã•ã¾;niisama ãょã†ã ã„ã‚ã„;kyoudaiai ã‹ã‚“ã‘ã„;kankei ã‘ã„ãã†;keisou ã‹ã‹ã‚Šã„ã‚“;kakariin ã‘ã„ã—ょã;keishoku ã‘ã„ã¯ã;keihaku ã‹ã‚‹ã„ã—;karuishi ã‘ã¤ãˆã;ketsueki ã¯ãªã¢;hanadi ã‘ã£ã¨ã†;kettou ã‹ã„ã‘ã¤;kaiketsu ã‘ã£ã—ã‚“;kesshin ã‘ã¤ã‚Œã¤;ketsuretsu ã‘ã‚“ã—ã‚…ã†;kenshuu ã¨ãŽã‹ã‚;togikawa ã‘ã‚“ãã‚…ã†ã—ゃ;kenkyuusha ã¿ãˆã‘ã‚“;mieken ã‘んりã¤;kenritsu ã‘ã‚“ã¡ã‚‡ã†;kenchou ã¯ã¤ã’ã‚“;hatsugen ã‚€ã”ã‚“;mugon ã—ゃã“;shako ãã†ã“;souko れã„ãžã†ã“;reizouko ã¨ãŠã‚ã ã“;toowadako ã“ãŒã‚“;kogan ã“ã™ã„;kosui ã“ã†ãょã†;koukyou ã“ã†ã¸ã„;kouhei ãã—ã‚…ã†ã“ã†;kishuukou ã“ã†ã˜ã‚‡ã†;koujou ã„ã“ã†;ikou ã¾ãˆã‚€ã;maemuki ã“ã†ã†ã‚“;kouun ãµã“ã†;fukou ã“ã†ãµã;koufuku ãã†ã“ã†;kuukou ã«ã‚…ã†ã“ã†;nyuukou ã¿ãªã¨ã¾ã¡;minatomachi ã°ã‚“ã”ã†;bangou ã”ã†ã‚Œã„;gourei ã”ã†ãã‚…ã†;goukyuu ã“ã‚“ã½ã‚“;konpon ã ã„ã“ã‚“;daikon ã‚„ã­;yane ã•ã„ã˜ã¤;saijitsu ã•ã„ã ã‚“;saidan ゆãã¾ã¤ã‚Š;yukimatsuri ã•ã„ã;saiku ã»ããªãŒã„;hosonagai ã“ã¾ã‹;komaka ã—ã”ã¨;shigoto ã—ã‹ãŸ;shikata ã—ãã¿;shikumi ã—ãŸã„;shitai ã—ãょ;shikyo ã‚ã‹ã˜ã«;wakajini ã—よã†;shiyou ãŸã„ã—;taishi ã“ã¥ã‹ã„;kodukai ã—ã˜ã‚…ã†;shijuu ã—ã©ã†ã;shidouki ã—ã¯ã˜ã‚ã‚‹;shihajimeru ã—ã˜;shiji ãŠã‚„ゆã³;oyayubi ã•ã—ãš;sashizu ã—ã“ã‚“;shikon ã¯ã„ã—ゃ;haisha ã¯ãã‚‹ã¾;haguruma ã—ã˜ã‚“;shijin ã—ã¦ã;shiteki ã—ã˜ã‚‡ã†;shijou ã•ã‚“ã˜;sanji ã—ã ã„;shidai ã‚ã„ã¤ã„ã§;aitsuide ã ã„ã˜;daiji ã“ã†ãš;kouzu ã§ãã”ã¨;dekigoto ã˜ã•ã‚“;jisan ã‚‚ã¡ã¬ã—;mochinushi ãªãŒã‚‚ã¡;nagamochi ã—ã‚“ã—ã;shinshiki ã»ã†ã—ã;houshiki ã‹ã„ã‹ã„ã—ã;kaikaishiki ã˜ã£ã“ã†;jikkou ã˜ã˜ã¤;jijitsu ã¿ã„り;miiri ã—ゃã—ã‚“;shashin ã—ゃã˜ã¤;shajitsu ãµãã—ゃã;fukushaki ã•ãã—ゃ;sakusha ã“ã†ã—ゃ;kousha ã‚ã‹ã‚‚ã®;wakamono ã—ã‚…ã˜ã‚“;shujin ã˜ã¬ã—;jinushi ã—ゅよã†;shuyou ã»ã—ã‚…;hoshu ã‚‹ã™ã°ã‚“;rusuban ã“もり;komori ã—ã‚…ã¨ã;shutoku ã¨ã‚Šã ã™;toridasu ãŽã‚…ã†ã˜ã‚‹;gyuujiru ã„ã‚“ã—ã‚…;inshu ã•ã‹ã°;sakaba ã•ã‘ã®ã¿;sakenomi ã˜ã‚…ã‘ã‚“ã—ゃ;jukensha ã†ã‘ã¨ã‚Š;uketori ã†ã‘ã¤ã‘;uketsuke ã»ã‚“ã—ã‚…ã†;honshuu ã•ã™;sasu ã—ã‚…ã†ãŽã‹ã„;shuugikai ã—ã‚…ã†ã—ã‚…ã†;shuushuu ã²ã‚ã„ã‚‚ã®;hiroimono ã˜ã‚…ã†ã„ã¡;juuichi ã—ã‚…ã†ã¦ã‚“;shuuten ã—ã‚…ã†ã—;shuushi ãŠã‚り;owari れんã—ã‚…ã†;renshuu ã—ã‚…ã†ã˜;shuuji ã¿ãªã‚‰ã„;minarai ã›ã‚“ã—ã‚…ã†;senshuu ã«ã—ã‚…ã†ã‚;nishuume ã—ã‚…ã†ã ã‚“;shuudan ã¸ã‚“ã—ã‚…ã†;henshuu ã—ã‚…ã†ã¡ã‚…ã†;shuuchuu ã˜ã‚…ã†ã—ょ;juusho ã˜ã‚…ã†ãŸã;juutaku ã™ã¿ã¦;sumite ã˜ã‚…ã†ã ã„;juudai ãŠã‚‚ã•;omosa ã¿ãˆ;mie ã°ã—ょ;basho ã—ょゆã†;shoyuu ã„ã©ã“ã‚;idokoro ã“ãã—ょ;kokusho ã²ã—ょã¡;hishochi ã‚ã¤ã•;atsusa ã˜ã‚‡ã—ã‚…;joshu ã˜ã‚‡ã‚Šã‚‡ã;joryoku ãŸã™ã‘ã‚ã„;tasukeai ã—ょã†ã‚;shouwa ã—ょã†ã—ょã†;shoushou ã—ょã†ã ã„;shoudai ã—ょã†ã²;shouhi ã‘ã—ゴム;keshigomu ã—ょã†ã‹ã;shoukaki ã—ょã†ãŽã‚‡ã†;shougyou ã—ょã†ã«ã‚“;shounin ã—ょã†ã°ã„;shoubai ãã—ょã†;kishou ã¶ã‚“ã—ょã†;bunshou ã—ょã†ã;shouku ã—ょã†ã‚Š;shouri ã—ょã†ã¶;shoubu ã‹ã¡ã;kachiki ã˜ã‚‡ã†ã›ã‚“;jousen ã˜ã‚‡ã†ã™ã†;jousuu ã®ã‚Šã‚‚ã®;norimono ã—ょãã¶ã¤;shokubutsu ãŸã†ãˆ;taue ã—ょãã¿ã‚“ã¡;shokuminchi ã—ã‚“ã“ã;shinkoku ã‚‚ã†ã—ã“ã‚€;moushikomu ã‚‚ã†ã—ã‚ã‘;moushiwake ã—ã‚“ãŸã„;shintai ã˜ã—ã‚“;jishin ã¿ã¶ã‚“;mibun ã›ã„ã—ã‚“;seishin ã—ã‚“ã·;shinpu ã‚ãŒã¿;megami ã—ã‚“ãˆã‚“;shin_en ã—ã‚“ã‹ã„;shinkai ãµã‹ã„り;fukairi ãœã‚“ã—ã‚“;zenshin ã—ã‚“ã‹;shinka ã—ã‚“ã’ã‚“;shingen ã›ã„ã;seiki ã›ã‚;sewa よã®ãªã‹;yononaka ã›ã„り;seiri ã›ã„ã³;seibi ã³ã¡ã‚‡ã†ã›ã„;bichousei ã ã£ã›ã‚“;dassen ã“ã†ã›ã‚“;kousen ã¡ã‚‡ãã›ã‚“;chokusen ãœã‚“ã¶;zenbu ãœã‚“ã—ã‚“;zenshin ã‚ã‚“ãœã‚“;anzen ã»ã†ãã†;housou ãã†ãã‚“;soukin ã¿ãŠãã‚‹;miokuru ãã‚…ã†ãã;kyuusoku ãŸã‚ã„ã;tameiki ã‚€ã™ã“;musuko ã‹ãžã;kazoku ã¿ã‚“ãžã;minzoku ã—ã‚…ãžã;shuzoku ãŸã«ã‚“;tanin ãŸã“ã;takoku よã;yoso ã ã—ゃ;dasha ã ã’ã;dageki ã†ã¡ã‹ãˆã™;uchikaesu ãŸã„ã—ょã†;taishou ã¤ã„ã;tsuiku ãŸã„ã;taiki ã—ょã†ãŸã„;shoutai ã¾ã¡ã¶ã›;machibuse ã›ã ã„;sedai ã“ã†ãŸã„;koutai ã¸ã‚„ã ã„;heyadai ã ã„ã«ã‹;dainika ã—ã ã„ã—ょ;shidaisho ãã‚…ã†ã ã„;kyuudai ã ã„ã‚ã„;daimei ã‚ã ã„;wadai ã›ããŸã‚“;sekitan ãŸã‚“ã;tanso ã™ã¿ã³;sumibi ãŸã‚“ã—ょ;tansho ãŸã‚“ã;tanki ã¦ã¿ã˜ã‹;temijika ã¨ã†ã¡ã‚ƒã;touchaku ãã‚‚ã®;kimono ãµãªã¤ã;funatsuki ã¡ã‚…ã†ã‚‚ã;chuumoku ã¡ã‚…ã†ã—ゃ;chuusha ã¡ã‚…ã†ã—ゃã;chuushaku ã¡ã‚…ã†ã›ã;chuuseki ã§ã‚“ã¡ã‚…ã†;denchuu ã¤ã‚‰ã‚‰;tsurara ã¦ã„ã­ã„;teinei ã¡ã‚‡ã†ã‚;choume ã¦ã¡ã‚‡ã†;techou ã¡ã‚‡ã†ã°;chouba ã‹ã‚„;kaya ã¡ã‚‡ã†ã›ã„;chousei ã¡ã‚‡ã†ã•;chousa ã¡ã‚‡ã†ã—;choushi ã¡ã‚‡ãã›ã¤;chokusetsu ã—ょã†ã˜ã;shoujiki ã¡ã‚‡ãりã¤;chokuritsu ã¤ã„ãã‚…ã†;tsuikyuu ã¤ã„ã»ã†;tsuihou ãŠã„ã¯ã‚‰ã†;oiharau ã¦ã„ã;teiki ãµã¦ã„;futei ã‘ã£ã¦ã„;kettei ã‹ã¦ã„;katei ã¦ã„ãˆã‚“;teien ã«ã‚ã—;niwashi ã¦ã£ã±ã‚“;teppan ã¡ã‹ã¦ã¤;chikatetsu ã“ãã¦ã¤;kokutetsu ã¦ã‚“ãã†;tensou ã†ã‚“ã¦ã‚“;unten ã¨ã—;toshi ã—ã‚…ã¨;shuto ã¤ã”ã†;tsugou ã¦ã„ã©;teido ãŠã‚“ã©;ondo ã„ã¡ã©;ichido ã¨ã†ã—ã‚…;toushu ã¨ã†ã²ã‚‡ã†;touhyou ãªã’ã ã™;nagedasu れã£ã¨ã†;rettou ã¨ã†ã¿ã‚“;toumin ã—ã¾ãã«;shimaguni ã›ã‚“ã¨ã†;sentou ゆã’;yuge ã¡ã‚ƒã®ã‚†;chanoyu ã¨ã†ã˜ã‚‡ã†;toujou ã¨ã–ã‚“;tozan ãã®ã¼ã‚Š;kinobori ã„ã£ã¨ã†;ittou ã˜ã‚‡ã†ã¨ã†;joutou ã¨ã†ã‚ã¤ã›ã‚“;touatsusen ã˜ã©ã†ã—ゃ;jidousha ã†ã”ãã ã™;ugokidasu ã©ã†ã‚;douwa ã˜ã©ã†;jidou ã©ã†ã—ã‚“;doushin ãªã„ã¶;naibu ã†ã¡ã;uchiki ã°ã«ã;baniku ã«ãã‚„;nikuya ã«ããŒã‚“;nikugan ã®ã†ã˜ã‚‡ã†;noujou ã®ã†ã¿ã‚“;noumin ã®ã†ãŽã‚‡ã†;nougyou ã—ã‚…ã†ã¯;shuuha ãŠã‚“ã±;onpa ãªã¿ã®ã‚Š;naminori ã—ã‚“ã±ã„;shinpai ã¯ã„ãŸã¤;haitatsu ãã°ã‚Šã¦;kubarite ã¡ã‚ƒã°ãŸã‘;chabatake ãŸã¯ãŸ;tahata ã‚€ãŽã°ãŸã‘;mugibatake ã¯ã£ã´ã‚‡ã†;happyou ã»ã£ãã;hossoku ã¯ã¤ã§ã‚“ã;hatsudenki ã¯ã‚“ãŠã†;han_ou ã¯ã‚“ã‹ã;hankaku ãŸã‚“ã‚‚ã®;tanmono ãã‚…ã†ã¯ã‚“;kyuuhan ã•ã‹ã¿ã¡;sakamichi ãã ã‚Šã–ã‹;kudarizaka ã“ãã°ã‚“;kokuban ã„ãŸãŒã¿;itagami ã„ãŸã¾ãˆ;itamae ã²ãµ;hifu ã²ã«ã;hiniku ãã®ã‹ã‚;kinokawa ã²ã’ã;higeki ã²ã‚ã„;himei ã‹ãªã—ã•;kanashisa ã³ã˜ã‚“;bijin ã³ã˜ã‚…ã¤;bijutsu ã³ãŒã;bigaku ã³ãŠã‚“;bion ã¯ãªã•ã;hanasaki ã¯ãªãã™ã‚Š;hanagusuri ã²ã‚‡ã†ã’ã‚“;hyougen ã²ã‚‡ã†ã¦ã‚“;hyouten ã“ãŠã‚Šã¿ãš;koorimizu ã²ã‚‡ã†ã‚ã‚“;hyoumen ã²ã‚‡ã†ã’ã‚“;hyougen ã˜ã“ãã²ã‚‡ã†;jikokuhyou ã«ã³ã‚‡ã†;nibyou ã³ã‚‡ã†ã—ã‚“;byoushin ã³ã‚‡ã†ãã;byousoku ã³ã‚‡ã†ã;byouki ã³ã‚‡ã†ã«ã‚“;byounin らã„ã³ã‚‡ã†;raibyou ã—ょã†ã²ã‚“;shouhin ã²ã‚“ã—ã¤;hinshitsu ã—ãªã‚‚ã®;shinamono ãµã—ょã†;fushou ãµãŸã‚“;futan ã¾ã‘ãŽã‚‰ã„;makegirai ã¶ã¶ã‚“;bubun ã¶ãžã;buzoku ãµããã†;fukusou ãµãã˜ã‚…ã†;fukujuu ã¯ã£ã¨ã‚Š;hattori ã“ã†ãµã;koufuku ãµãã³ã;fukubiki ãµãã„ã‚“ã—ょ;fukuinsho ã˜ã‚“ã¶ã¤;jinbutsu ã—ょãã‚‚ã¤;shokumotsu ãŸã¹ã‚‚ã®;tabemono ã¸ã„ã;heiki ã³ã‚‡ã†ã©ã†;byoudou ã²ã‚‰ã¦;hirate ã¸ã‚“ã˜;henji ã¸ã‚“ã•ã„;hensai ã—ã‹ãˆã—;shikaeshi ãã‚“ã¹ã‚“;kinben ã¹ã‚“ãŒã;bengaku ã‹ã„ã»ã†;kaihou ã»ã†ã—ゃ;housha ã¦ã°ãªã™;tebanasu ã”ã¾ã‚“;goman ã°ã‚“ã˜;banji ã¾ã‚“ã­ã‚“ã²ã¤;mannenhitsu ã„ã¿;imi ãょã†ã¿;kyoumi ã‚ã˜ã¿;ajimi ã‚ã„れã„;meirei ã›ã„ã‚ã„;seimei ã„ã®ã¡ã¨ã‚Š;inochitori ãŒã„ã‚ã‚“;gaimen ã‹ã‚ã‚“;kamen ã¯ãªã¥ã‚‰;hanadura ã—ã¤ã‚‚ã‚“;shitsumon ãŒãã‚‚ã‚“;gakumon ã¨ã‚“ã‚„;ton_ya ã‚„ãã—ゃ;yakusha ã¸ã„ãˆã;heieki ã‚„ã£ãょã;yakkyoku ã‹ã‚„ã;kayaku ãã™ã‚Šã‚†ã³;kusuriyubi ゆらã„;yurai りゆã†;riyuu ã˜ã‚†ã†;jiyuu ゆã§ã‚“;yuden ã¨ã†ã‚†;touyu ã‚ã¶ã‚‰ãˆ;aburae ã—ょゆã†ã—ゃ;shoyuusha ã†ã‚€;umu ã‚りãŒã¨ã†;arigatou ゆã†ã‚‰ã‚“;yuuran ゆã•ã‚“;yusan ã‚ãã³ã°;asobiba よやã;yoyaku よãã†;yosou よã¦ã„;yotei ã›ã„よã†ã˜ã‚“;seiyoujin ãŸã„ã›ã„よã†;taiseiyou よã†ã—ょã;youshoku ã—んよã†ã˜ã‚…;shin_youju ã¯ã¾ã;hamaki ã¯ãŒã;hagaki よã†ãょã;youkyoku よã†ã;youki ãŸã„よã†ã‘ã„;taiyoukei ã—よã†;shiyou ã‚りã•ã¾;arisama ã¿ãªã•ã¾;minasama らã£ã‹;rakka ãŠã¡ã°;ochiba ãŠã¨ã—ã‚‚ã®;otoshimono りゅã†ã“ã†;ryuukou ã‚‹ãµ;rufu ãªãŒã‚ŒãŽ;nagaregi りょã“ã†;ryokou ãŸã³ã³ã¨;tabibito りょã²;ryohi りょã†ã»ã†;ryouhou りょã†ã¦;ryoute りょã†ãŒãˆ;ryougae ã˜ã‚‡ã†ã‚Šã‚‡ãã˜ã‚…;jouryokuju ã‚ãã—ょã†;rokushou ã¿ã©ã‚Šã„ã‚;midoriiro ã—ã¤ã‚Œã„;shitsurei れã„ãµã;reifuku ã‘ã„れã„;keirei れã£ã—ゃ;ressha れã¤ã˜;retsuji ãœã‚“れã¤;zenretsu ã©ã†ã‚;douro ã›ã‚“ã‚;senro ãŸã³ã˜;tabiji ã¸ã„ã‚;heiwa ã‚„ã¾ã¨;yamato ã‚ã—ょã;washoku ã‚ã„ã˜ã‚‡ã†;aijou ã¼ã›ã„ã‚ã„;boseiai ã‚ã„ã“ãã—ゃ;aikokusha ã¦ã„ã‚ã‚“;teian ã‚ã‚“ãŒã„;angai ã‚ã‚“ã˜ã‚‡ã†;anjou ã„ã‹;ika ã„ãŒã„;igai ã„ãµã;ifuku ã„ã‚‹ã„;irui ã“ã‚ã‚‚ãŒãˆ;koromogae ã¡ã„;chii ãŒãã„;gakui ã˜ã‚…ã†ã«ãらã„;juunigurai ã—ã‚…ã†ã„;shuui ã¯ã‚“ã„;han_i ã‹ã“ã„ã“ã‚€;kakoikomu ã„ã„ã‚“ã‹ã„;iinkai ã„ã«ã‚“;inin ã„ãŸããã‚“;itakukin ã„ãˆã;ieki ã„ã¶ãã‚;ibukuro ã„ã˜ã‚ƒã;ijaku ã„ã‚“ã•ã¤;insatsu ã„ã‚“ã°ã‚“;inban ã‚ã˜ã‚‹ã—;mejirushi ãˆã„ã•ã„;eisai ãˆã„ã“ã;eikoku ãˆã„ã”;eigo ã“ã†ãˆã„;kouei ãˆã„よã†;eiyou ã¯ã‚“ãˆã„;han_ei ã—ょããˆã‚“;shokuen ã—ãŠã¿ãš;shiomizu ã›ã„ãˆã‚“ã—ょ;seiensho ã¡ã‚…ã†ãŠã†;chuuou ã¡ã‚…ã†ãŠã†ã¶;chuuoubu ã¡ã‚…ã†ãŠã†ãã¡;chuuouguchi ã«ãŠã;nioku ã˜ã‚…ã†ãŠã;juuoku ãŠãã¾ã‚“ã¡ã‚‡ã†ã˜ã‚ƒ;okumanchouja ãžã†ã‹;zouka ã•ã‚“ã‹;sanka ãã‚ãˆã–ã‚“;kuwaezan ã‹ã‚‚ã¤ã›ã‚“;kamotsusen ã“ã†ã‹;kouka ã–ã£ã‹;zakka ã‹ãœã„;kazei ã‹ã¡ã‚‡ã†;kachou ã ã„ã«ã‹;dainika ã¯ã¤ãŒ;hatsuga ã—ã‚“ã‚;shinme ã‚ã°ãˆã‚‹;mebaeru ã‹ã„ã‹ã;kaikaku ã‹ã„ã›ã„;kaisei ã‚らãŸã‚ã¦;aratamete ãã‹ã„;kikai ãã‹ã„;kikai ãã‹ã„ã‹;kikaika ãã‚“ãŒã„;songai ã•ã¤ãŒã„;satsugai ã¼ã†ãŒã„;bougai ã‹ããˆã;kakueki ã‹ã£ã“ã;kakkoku ã‹ãã˜;kakuji ã˜ã‹ã;jikaku ã‚ã–ã‚;mezame ãŠã¼ãˆãŒã;oboegaki ã‹ã‚“ã›ã„;kansei ã¿ã‹ã‚“;mikan ã‹ã‚“ãœã‚“;kanzen ã‘ã„ã‹ã‚“;keikan ã‹ã‚“りょã†;kanryou ã‹ã‚“ã¡ã‚‡ã†;kanchou ã‹ã‚“ã˜;kanji ã‚ã£ã‹ã‚“;akkan ã‹ã‚“ã—;kanshi ã‹ã‚“り;kanri ãã‹ã‚“;kikan ã‹ã‚“ãŒã£ã;kangakki ã‹ã‚“ã¨ã†;kantou ã‹ã‚“ã—ã‚“;kanshin ã›ãã®ã‚„ã¾;sekinoyama ã‹ã‚“ã“ã†;kankou ã‹ã‚“ã•ã¤;kansatsu ã‹ã‚“ãゃã;kankyaku ã—ãŒã‚“ã—ゃ;shigansha ãŒã‚“ã¼ã†ã¦ã;ganbouteki ã­ãŒã„ã”ã¨;negaigoto ãã¼ã†;kibou ããã‚…ã†;kikyuu ãã¯ã;kihaku ãã›ã¤;kisetsu ã—ã;shiki ãã˜ã‚‡;kijo ãã’ã‚“;kigen ãã“ã†;kikou ã«ã˜ã‚…ã†ã›ã„ã;nijuuseiki ãã’ã;kigeki ã‹ã‚“ã;kanki ãŠãŠã‚ˆã‚ã“ã³;ooyorokobi ã“ã£ã;kokki ã¯ãŸã‚‚ã¡;hatamochi ã‹ã˜ã;kajiki ãã;kigu ã—ょã£ã;shokki ãよã†;kiyou ãã®ã†;kinou ãã‹ã„;kikai ã¯ãŸãŠã‚Š;hataori ãŽã‚ã‚“;giron ã‹ã„ãŽ;kaigi ãŽã‹ã„;gikai よã†ãã‚…ã†;youkyuu ã¤ã„ãã‚…ã†;tsuikyuu ãã‚…ã†ã—ょã;kyuushoku ãã‚…ã†ã‚ã„ブイ;kyuumeibui ãã‚…ã†ãˆã‚“;kyuuen ã™ãã„ã ã™;sukuidasu ãょã†ãã‚…ã†;kyoukyuu ã’ã£ãã‚…ã†;gekkyuu ããŸã¾ãˆ;kitamae ãょã—ã‚…;kyoshu ã›ã‚“ãょ;senkyo ã„ã£ãょ;ikkyo ãŽã‚‡ã›ã‚“;gyosen りょã†ã—;ryoushi ãŽã‚‡ãŽã‚‡ã†;gyogyou ãょã†ã¤ã†;kyoutsuu ã¨ã‚‚ãã„;tomogui ãょã†ã•ã‚“ã—ã‚…ãŽ;kyousanshugi ãょã†ã¦ã„;kyoutei ãょã†ã‚Šã‚‡ã;kyouryoku ãょã†ã‹ã„;kyoukai ã¼ã†ãˆã‚“ãょã†;bouenkyou ãょã†ã ã„;kyoudai ã¦ã‹ãŒã¿;tekagami ãょã†ãã†;kyousou ã‘ã„ã°;keiba ã›ã‚Šã†ã‚Š;seriuri ã»ã£ãょã;hokkyoku ã—ã”ã;shigoku ã—ょã†ãょã;shoukyoku ãã¹ã¤;kubetsu ã¡ã;chiku ããŸã;kitaku ãã†ãã‚“;kuugun ãã‚“ã˜ã‚“;gunjin ã¹ã„ã“ããã‚“;beikokugun ãã‚“ã¶;gunbu ã“ãŠã‚Šã‚„ã¾;kooriyama ã‚ã‘ãã‚“;wakegun ã’ã‚“ã‘ã„;genkei ãŠãŠãŒãŸ;oogata ã¦ã‚“ã‘ã„ã¦ã;tenkeiteki ã“ã†ã‘ã„;koukei ã‘ã„ã;keiki ã’ã„ã˜ã‚…ã¤;geijutsu ã—ã‚…ã’ã„;shugei ã’ã„ã—ゃ;geisha ã‘ã£ã›ãã—ゃ;kessekisha ã‘ã£ã¦ã‚“;ketten ã‹ã‘ã‚;kakeme ã‘ã£ã“ã‚“;kekkon ã‘ã£ã‹;kekka ã‚€ã™ã³ã‚;musubime ã‘ã‚“ã›ã¤;kensetsu ã“んりゅã†;konryuu ãŸã¦ã‚‚ã®;tatemono ã‘ã‚“ã“ã†;kenkou ã‘ã‚“ãœã‚“;kenzen ã‘ã‚“ã´ã¤ã‹;kenpitsuka ã—ã‘ã‚“;shiken ã˜ã£ã‘ã‚“;jikken ã‘ã„ã‘ã‚“;keiken ã“ãŸã„;kotai ãょã†ã“;kyouko ã‹ãŸã¾ã‚Š;katamari ã›ã„ã“ã†;seikou ã“ã†ã–ã„;kouzai ã“ã†ã‚ã†;kourou ãã“ã†;kikou ã“ã†ã»;kouho ãã†ã‚ã†ã¶ã‚“;souroubun ã“ã†ãã†;koukuu ã“ã†ã‹ã„;koukai ã“ã†ã‚;kouro ã—ょã†ã“ã†;shoukou ãµã‘ã‚“ã“ã†;fukenkou ã‘ã‚“ã“ã†ãŸã„;kenkoutai ã“ã†ã“ã;koukoku ã“ã†ã“ã;koukoku ã“ã†ã“ã;koukoku ã˜ã—ょ;jisho ã˜ã—ょã;jishoku ã—ã‚…ã†ã˜ãŒã;shuujigaku ã—ã£ã±ã„;shippai ã—ã£ã‘ã„;shikkei ã—ã¤ãŽã‚‡ã†;shitsugyou ã—ゃã£ãã‚“;shakkin ã—ゃãã‚„;shakuya ã‹ã‚Šã¬ã—;karinushi ã„ã£ã—ã‚…;isshu ã˜ã‚“ã—ã‚…;jinshu ãŸã­ãªã—;tanenashi ã—ã‚…ã†ã¸ã‚“;shuuhen ã—ã‚…ã†ã¨ã†;shuutou ã„ã£ã—ã‚…ã†;isshuu ã‚„ã©ã‚„;yadoya ã’ã—ã‚…ãã«ã‚“;geshukunin ã˜ã‚…ã‚“ã˜ã‚‡;junjo ã˜ã‚…ã†ã˜ã‚…ã‚“;juujun ã˜ã‚…ã‚“ã¡ã‚‡ã†;junchou ã¯ã˜ã‚ã¦;hajimete ã¯ã¤ã“ã„;hatsukoi ã¦ã„ã—ょã†;teishou ãŒã£ã—ょã†;gasshou ã¨ãªãˆã­;tonaene ã­ã‚“ã—ょã†;nenshou ã‚„ã‘ã‚ã¨;yakeato ã‚„ããŸã¦;yakitate ã•ã‚“ã—ょã†;sanshou ãŸã„ã—ょã†;taishou ã—ょã†ã‚ã„;shoumei ã—ょã†ã²ã‚“;shouhin ã—ょã†ã•ã‚“;shousan ã„ã£ã¨ã†ã—ょã†;ittoushou ã—ã‚“ã‹;shinka ã—ã‚“ã¿ã‚“;shinmin ã ã„ã˜ã‚“;daijin ã—んよã†;shin_you ã‚ã„ã—ã‚“;meishin ã‹ãã—ã‚“;kakushin ã—ã‚“ã˜ã¤;shinjitsu ã—ゃã—ã‚“ã;shashinki ã¾ã£ã—ã‚;masshiro ã›ã„ã¶ã‚“;seibun ã›ã„ã˜ã‚“;seijin ãªã‚ŠãŸã¡;naritachi ã¯ã‚“ã›ã„;hansei ã—ょã†ã‚Šã‚ƒã;shouryaku ã“ã†ã›ã„ã—ょã†;kouseishou ã›ã„ã‘ã¤;seiketsu ã›ã„ã˜ã‚‡ã†;seijou ã—ã¿ãš;shimizu ã›ã„りょã;seiryoku ãŠãŠãœã„;oozei ã„ããŠã„よã;ikioiyoku ã›ã„ã—;seishi ã—ãšã‘ã•;shizukesa ã˜ã‚‡ã†ã¿ã‚ƒã;joumyaku ã—ã‚…ã£ã›ã;shusseki ã‘ã£ã›ã;kesseki ãã†ã›ã;kuuseki ã‚ã‚“ã›ã;menseki ã›ãã›ã¤;sekisetsu ãã£ã›ã¤;kussetsu ãŠã‚Šã‚;orime ãŠã‚ŠãŒã¿;origami ã¡ã‚‡ã†ã›ã¤;chousetsu ã‹ã‚“ã›ã¤;kansetsu ãµã—ã‚ãª;fushiana ã›ã¤ã‚ã„;setsumei ã—ょã†ã›ã¤;shousetsu ãŒãã›ã¤;gakusetsu ã›ã‚“ã±ã;senpaku ã‚ã•ã›;asase ã‚ã•ãŽ;asagi ãŸã„ã›ã‚“;taisen ã›ã‚“ã˜ã‚‡ã†;senjou ã•ãã›ã‚“;sakusen ã¨ã†ã›ã‚“;tousen ã›ã‚“ã—ã‚…;senshu ãˆã‚‰ã³ã ã™;erabidasu ã¨ã†ãœã‚“;touzen ã¦ã‚“ã­ã‚“;tennen ã—ã‹ã‚‹ã¹ã;shikarubeku ã›ã‚“ãã†;sensou ã„ã„ã‚らãã„;iiarasoi ãょã†ãã†ã—ゃ;kyousousha ãã†ã ã‚“;soudan ã‚ã„ã¦;aite ã—ã‚…ã—ょã†;shushou ã›ã‚“ãã†;sensou ãã†ã“ã†;soukou ãらã«;kurani ã¡ã‚ƒããã†;chakusou りãã†;risou ã‚ã„ãã†;aisou ãžã†ã’;zouge ã„ã‚“ã—ょã†;inshou ã—ょã†ã¡ã‚‡ã†ã¦ã;shouchouteki ãã£ã;sokki ã˜ãã;jisoku ã“ã†ããã©ã†ã‚;kousokudouro ããã‚ã‚“;sokumen ã¿ãŽãŒã‚;migigawa ãã°ã¥ã‹ãˆ;sobadukae ãžããžã;zokuzoku れんãžã;renzoku ã¦ã¤ã¥ã;tetsuduki ãã¤ãŽã‚‡ã†;sotsugyou ã¸ã„ãã¤;heisotsu ãã£ãょ;sokkyo ã—ãã‚“;shison ã¾ã”ã³ã;magobiki ã¾ã”ã‚€ã™ã‚;magomusume ã¡ãŸã„;chitai ãŠã³ã˜;obiji ã­ã£ãŸã„ãŽã‚‡;nettaigyo ã¸ã„ãŸã„;heitai ãã‚“ãŸã„;guntai ã¶ãŸã„;butai ã¯ã£ãŸã¤;hattatsu ãŸã¤ã˜ã‚“;tatsujin ã²ã¨ãŸã¡;hitotachi ãŸã‚“ã„;tan_i ãŸã‚“ã˜ã‚…ã‚“;tanjun ãŸã‚“ã©ã;tandoku ãã†ã ã‚“ã‚„ã;soudan_yaku ã‹ã„ã ã‚“;kaidan ã ã‚“ã‚;danwa ã›ã„ã˜;seiji ã¡ã‚ã‚“;chian ã¡ã‚Šã‚‡ã†;chiryou ã»ã†ã¡;houchi ãŠãã‚‚ã®;okimono ãŠãã°;okiba ã¡ã‚‡ãã‚“;chokin ã¡ã‚‡ãžã†;chozou ã¡ã‚‡ã™ã„ã¡;chosuichi ã¡ã‚‡ã†ã›ã‚“;chousen ã¡ã‚‡ã†ãˆã‚“;chouen ã ã„ã¡ã‚‡ã†;daichou ã•ã„ã¦ã„;saitei ã¦ã„り;teiri ã¦ã„らã;teiraku ã‹ã„ã¦ã„;kaitei ãŠããã“;okusoko ã¦ã„りゅã†;teiryuu ã¦ã„ã—;teishi ã¦ã„ã—ゃã˜ã‚‡;teishajo ã¦ã„ã§ã‚“;teiden ã‚‚ãã¦ã;mokuteki りãã†ã¦ã;risouteki ã¾ã¨ã¯ãšã‚Œ;matohazure ã˜ã¦ã‚“;jiten ã¦ã‚“ãょ;tenkyo ã¦ã‚“ã‘ã„;tenkei ã§ã‚“ã›ã¤;densetsu ã§ã‚“ã;denki ã§ã‚“ã›ã‚“ã³ã‚‡ã†;densenbyou ã¨ã»ã—ゃ;tohosha ã‚ã ã°ãª;adabana ã©ã‚Šã‚‡ã;doryoku ã©ã‚Šã‚‡ãã‹;doryokuka ã¤ã¨ã‚ã¦;tsutomete ã¨ã†ã ã„;toudai ã§ã‚“ã¨ã†;dentou ã¨ã†ã›ã‚“;tousen ã—ょãã©ã†;shokudou ã©ã†ã©ã†;doudou ã‚ã†ã©ã†;roudou ã¯ãŸã‚‰ãã¦;hatarakite ã¯ãŸã‚‰ãã‚‚ã®;hatarakimono ゆã†ã©ã;yuudoku ãã®ã©ã;kinodoku ã—ょãã¡ã‚…ã†ã©ã;shokuchuudoku ã­ã£ãŸã„;nettai ã­ã¤ã‚ŠããŒã;netsurikigaku ã­ã‚“りã;nenriki ã­ã‚“ã„り;nen_iri ã­ã‚“ã¶ã¤;nenbutsu ã¯ã„ã›ã‚“;haisen ã¯ã„ãã†;haisou ã¯ã„ã¼ãã—ã‚…ãŽ;haibokushugi ã”ã°ã„;gobai ã°ã„ã‹;baika ã°ã„ã™ã†;baisuu ã¯ã‹ã›;hakase ã°ãã¨;bakuto ã¯ãã¶ã¤ã‹ã‚“;hakubutsukan ã²ã‚‹ã‚ã—;hirumeshi ã„ã„ã ;iida ã²ã“ã†ã;hikouki ã²ã”;higo ã¨ã³ã ã™;tobidasu ã²ã‚ˆã†;hiyou ã—ょã†ã²ã—ゃ;shouhisha ã›ã„ã‹ã¤ã²;seikatsuhi ã²ã¤ã‚ˆã†;hitsuyou ã²ã£ã—;hisshi ã²ã¤ãœã‚“;hitsuzen ãˆã‚“ã´ã¤;enpitsu ã²ã£ã—ゃ;hissha ãµã§ã¥ã‹ã„;fudedukai ã²ã‚‡ã†ã‘ã¤;hyouketsu ã¨ã†ã²ã‚‡ã†;touhyou ã§ã‚“ã´ã‚‡ã†;denpyou ã²ã‚‡ã†ã˜ã‚…ã‚“;hyoujun りã¦ã„ã²ã‚‡ã†;riteihyou ã²ã‚‡ã†ã—ã;hyoushiki ãµã‚ã„;fumei ãµã¸ã„;fuhei ã¶ãã¿;bukimi ã«ã‚“ã·;ninpu ãµã˜ã‚“;fujin ãµã†ãµ;fuufu ãµã¡ã‚ƒã;fuchaku ã¤ãã‚ã†;tsukiau ãªã¥ã‘ã‚‹;nadukeru ã›ã„ãµ;seifu ãµã‘ã‚“;fuken ãょã†ã¨ãµ;kyoutofu ãµããŽã‚‡ã†;fukugyou ãµãã—;fukushi ãµãりょã†ã˜;fukuryouji ã‹ãµã‚“;kafun ã“ãªã”ãª;konagona ã‚€ãŽã“;mugiko ã¸ã„ã—;heishi ã»ã¸ã„;hohei ã¸ã„ã;heiki ã¹ã¤ã‚ã„;betsumei ã¨ãã¹ã¤;tokubetsu ã‚ã‹ã‚Œ;wakare ã¸ã‚“ãょã†;henkyou ãã‚“ãºã‚“;kinpen ã‹ã‚ã¹;kawabe ã¸ã‚“ã›ã„;hensei ãŸã„ã¸ã‚“;taihen ã‹ã‚りもã®;kawarimono ã¹ã‚“ã˜ã‚‡;benjo ゆã†ã³ã‚“;yuubin ã“ã¥ã¤ã¿;kodutsumi ã»ã†ã„;houi ã¤ã¤ã¿ãŒã¿;tsutsumigami ã»ã†ãŒã;hougaku ãµã»ã†;fuhou ã—ã¤ã¼ã†;shitsubou ãŒã‚“ã¼ã†;ganbou ã¼ã†ã‘ã‚“;bouken ã¼ãã˜ã‚‡ã†;bokujou ã»ã†ã¼ã;houboku ã¾ãã°ã¨ã‚Š;makibatori ã—ã‚…ã†ã¾ã¤;shuumatsu ã™ãˆã£ã“;suekko ã›ã„ãã¾ã¤;seikimatsu ã¾ã‚“ã’ã¤;mangetsu ã¾ã‚“ãžã;manzoku ã¾ã‚“ã¡ã‚‡ã†;manchou ã¿ã‚ƒã£ã‹ã‚“;myakkan ã“ã†ã¿ã‚ƒã;koumyaku ã•ã‚“ã¿ã‚ƒã;sanmyaku ã“ãã¿ã‚“;kokumin ã¿ã‚“ã‹ã‚“;minkan ã¿ã‚“ã—ã‚…ã—ã‚…ãŽ;minshushugi ã‚„ããã;yakusoku ã›ã¤ã‚„ã;setsuyaku ã‚„ãã”ã˜ã‚…ã†ã«ã‚“;yakugojuunin ゆã†ã—ゃ;yuusha ゆã†ã;yuuki ã„ã•ã¿ã‚ã—;isamiashi ãµã²ã¤ã‚ˆã†;fuhitsuyou よã†ã¦ã‚“;youten ã˜ã‚…ã†ã‚ˆã†;juuyou よã†ã›ã„;yousei ãˆã„よã†ã—;eiyoushi ãょã†ã‚ˆã†;kyouyou よãã—ã¤;yokushitsu ã«ã£ã“ã†ã‚ˆã;nikkouyoku ã¿ãšã‚ã³;mizuabi りãˆã;rieki りよã†;riyou ããã‚;kikime りããã‚“;rikugun ã˜ã‚‡ã†ã‚Šã;jouriku ãŸã„りã;tairiku りょã†ã—ã‚“;ryoushin ã‹ã„りょã†;kairyou よã•;yosa ã’んりょã†;genryou りょã†ãã‚“;ryoukin ã˜ã‚…ã†ã‚Šã‚‡ã†;juuryou ã¶ã‚“りょã†;bunryou ãŸã„りょã†ã›ã„ã•ã‚“;tairyouseisan ã—ゃりん;sharin ã•んりんã—ゃ;sanrinsha ã‚ãªã’;wanage ã—ã‚…ã‚‹ã„;shurui ã¶ã‚“ã‚‹ã„;bunrui ã‚‹ã„ã˜;ruiji れã„ã˜ã‚‡ã†;reijou ã‚ã„れã„ã»ã†;meireihou ã—れã„ã‹ã‚“;shireikan れã„ãžã†;reizou れã„ã›ã„;reisei ã²ãˆã—ょã†;hieshou れã„ãŒã„;reigai れã„ã­ã‚“;reinen ãŸã¨ãˆã°;tatoeba れãã—ã‹;rekishika ã‘ã„れã;keireki ã¸ã‚“れã;henreki れんらãã›ã‚“;renrakusen れんã˜ã‚…ã†;renjuu れんãã†;rensou ãんれん;kunren ã›ã‚“れん;senren ã­ã‚Šã“;neriko ã‚ã†ã˜ã‚“;roujin ã‚ã†ã‚Œã‚“;rouren ã‚ã†ã‚Œã„ã­ã‚“ãã‚“;roureinenkin ã‚ã†ã©ã†ã—ゃ;roudousha ãã‚ã†;kurou ã‚ã†ã©ã†ã‹ã‚“ã‘ã„;roudoukankei ãã‚ã;kiroku ã˜ã¤ã‚ã;jitsuroku ã‚ããŠã‚“;rokuon ã‚ã¤ã‚Šã‚‡ã;atsuryoku ã§ã‚“ã‚ã¤;den_atsu ã‚ã£ã¨ã†ã¦ã;attouteki ã„ã˜ã‚…ã†;ijuu ã„ã¿ã‚“;imin ã„ã©ã†;idou ã’ã‚“ã„ã‚“;gen_in ã—ã„ã‚“;shiin ã„ã‚“ãŒã‹ã‚“ã‘ã„;ingakankei ãˆã„ãžã;eizoku ãˆã„ã˜ã‚…ã†ã—ゃ;eijuusha ã‘ã„ãˆã„;keiei ãˆã„ãŽã‚‡ã†;eigyou ãˆã„ã—ょ;eisho ãˆã„ã›ã„;eisei ã—ã‚…ãˆã„;shuei ã˜ãˆã„;jiei ã¼ã†ãˆã;boueki ãˆãã—ゃ;ekisha ã‚ã‚“ã„;an_i ゆã†ãˆã;yuueki ã¾ã™ã¾ã™;masumasu りãˆãã¯ã„ã¨ã†;riekihaitou ãˆããŸã„;ekitai ãˆãã‹;ekika ã‘ã¤ãˆããŒãŸ;ketsuekigata ãˆã‚“ã—ã‚…ã¤;enshutsu ã—ã‚…ã¤ãˆã‚“;shutsuen ãˆã‚“ãœã¤;enzetsu ãŠã†ã¨ã†;outou ã¯ã‚“ã®ã†;hannou ãŠã†ã‚ˆã†;ouyou ãŠã†ãµã;oufuku ãŠã†ã˜;ouji ãŠã†ã‚‰ã„;ourai ãŠã‚“ã˜ã‚“;onjin ãŠã‚“ã—らãš;onshirazu ãŠã‚“ãŒãˆã—;ongaeshi ã‹ã›ã¤;kasetsu ã‹ã‚Šã«;karini ã‘ã³ã‚‡ã†;kebyou ã‹ã¡;kachi ã‹ã‹ã;kakaku ã¶ã£ã‹;bukka ã›ã„ã‹;seika ãã ã‚‚ã®;kudamono ã¯ãŸã—ã¦;hatashite ã‹ã“ã†;kakou ãµã;fugu ã‹ã°;kaba ã¤ã†ã‹;tsuuka ã‹ã“ã‘ã„;kakokei ã„ã„ã™ãŽ;iisugi ãŒã—;gashi ã­ã‚“ãŒã˜ã‚‡ã†;nengajou ã—ã‚…ããŒã‹ã„;shukugakai ãµã‚†ã‹ã„;fuyukai ã‹ã„らã;kairaku ã‹ã„ã‹ã¤;kaikatsu ã‹ã„ã›ã¤;kaisetsu りã‹ã„;rikai ã¶ã‚“ã‹ã„;bunkai ã—ã‹ã;shikaku ã›ã„ã‹ã;seikaku ã—ょゆã†ã‹ã;shoyuukaku ã›ã„ã‹ã;seikaku ã‹ãã«ã‚“;kakunin ã‹ãã˜ã¤;kakujitsu ãã‚“ãŒã;kingaku ãŒãã‚ã‚“;gakumen ã²ãŸã„ãŽã‚;hitaigiwa ã‹ã‚“ã“ã†;kankou ã«ã£ã‹ã‚“;nikkan ã¯ã£ã‹ã‚“;hakkan ã‹ã‚“ã›ã‚“;kansen ã‹ã‚“ã¶;kanbu ã‹ã‚“ã˜;kanji ã‹ã‚“れã„;kanrei よãªã‚ŒãŸ;yonareta ã‹ã‚“ã’ã„;kangei ã‹ã‚“らã;kanraku ã“ã†ã‹ã‚“;koukan ãã†ãŒã‚“ãょã†;sougankyou ã«ããŒã‚“;nikugan ã¡ã¾ãªã“;chimanako ãã»ã‚“;kihon ããã‚“;kikin ãã‚“ã—;kinshi ãã‚“ãˆã‚“;kin_en ã’ã‚“ãã‚“;genkin ã˜ã;jiku ããŽã‚Š;kugiri ã‚‚ã‚“ã;monku ãんよã¿;kun_yomi ãんれんã—;kunrenshi ãょã†ãã‚“ã¦ã;kyoukunteki ãã‚“ã—ã‚…ã†;gunshuu ãŽã‚‡ãã‚“;gyogun ãã‚“ãょ;gunkyo ã‘ã„ã–ã„;keizai ã‘ã„ã›ã‚“;keisen ã‘ã„ã‹;keika ã‘ã£ã±ã;keppaku ã‘ã£ãºã;keppeki ã„ã•ãŽã‚ˆã;isagiyoku ã˜ã‘ã‚“;jiken よã†ã‘ã‚“;youken ã˜ã‚‡ã†ã‘ã‚“;jouken りょã‘ã‚“;ryoken ã—ょã†ã‘ã‚“;shouken ã¦ã„ãã‘ã‚“;teikiken ã‘ã‚“ã‚ã;ken_aku ã»ã‘ã‚“;hoken ã‘ã‚“ã;kenso ã‘ã‚“ã¨ã†;kentou ãŸã‚“ã‘ã‚“;tanken ã‘ã‚“ã•ã„ã‚“;kensain ã‘ã‚“ã·;kenpu ã˜ã‚“ã‘ã‚“;jinken ãã¬ã‚‚ã®;kinumono ã’ã‚“ã©;gendo ã’ã‚“ã‹ã„;genkai ã‚€ã’ã‚“;mugen ã¯ã¤ã’ã‚“;hatsugen ã’ã‚“ã—ょã†;genshou ã’ã‚“ã˜ã¤;genjitsu ã’ã‚“ã—ょã†;genshou ã‹ã’ã‚“;kagen ã‚ã¹ã‚Š;meberi ã“ã˜;koji ã“ã‚„ã¾ã ã—;koyamadashi ã“ã˜ã‚“;kojin ã“ã›ã„;kosei ã„ã£ã“;ikko ã¹ã‚“ã”ã—;bengoshi ã»ã”;hogo ã”ãˆã„;goei ã“ã†ã‹;kouka ゆã†ã“ã†;yuukou ããã‚;kikime ã¶ã‚ã¤;buatsu ã“ã†ã›ã„;kousei ã“ã†ã˜ã‚‡ã†;koujou ã“ã†ã¡;kouchi ã“ã†ã•ã;kousaku ã“ã†ã†ã‚“ã;kouunki ã“ã†ã¶ã¤;koubutsu ã“ã†ã›ã;kouseki ãŸã‚“ã“ã†;tankou ã“ã†ã›ã„;kousei ã“ã“ã‚ãŒã¾ãˆ;kokorogamae ã“ã†ãŽ;kougi ã“ã†ãˆã‚“;kouen ã“ã†ã—;koushi ã“ã‚“ã‘ã¤;konketsu ã“んらん;konran ã¾ãœã‚‚ã®;mazemono ã‘ã‚“ã•;kensa ã—ã‚“ã•;shinsa ã•ã‚‚ã‚“;samon ã•ã„ã›ã„;saisei ã•ã„ã‹ã‚“;saikan ã•らã„ã­ã‚“;sarainen ã•ã„ãªã‚“;sainan ã•ã„ãŒã„;saigai ã‹ã•ã„;kasai ã”ã•ã„;gosai ãµã•ã„;fusai ã²ã¨ã¥ã¾;hitoduma ã•ã„よã†;saiyou ã•ã„ã—ã‚…ã†;saishuu ã•ã„ã—ã‚…;saishu ã˜ã£ã•ã„;jissai ã¾ã©ãŽã‚;madogiwa ãã‚“ã–ã„;sonzai ã–ã„りゅã†;zairyuu ã–ã„ã—ょ;zaisho ã–ã„ã•ã‚“;zaisan ã–ã„ã ã‚“;zaidan ã–ã„ã›ã„ã¦ã;zaiseiteki ã¯ã‚“ã–ã„;hanzai ã–ã„ã‚ã;zaiaku ã¤ã¿ã¶ã‹ã„;tsumibukai ã–ã¤ã ã‚“;zatsudan ã–ã¤ãŠã‚“;zatsuon ãžã†ã²ã‚‡ã†;zouhyou ã•ã‚“ãŽã‚‡ã†;sangyou よã†ã•ã‚“;yousan ãらã¾ã‚;soramame ã•ã‚“ã;sanso ã•ã‚“ã›ã„;sansei ãˆã‚“ã•ã‚“;ensan ã•ã‚“ã›ã„;sansei ã•ã‚“ã³ã‹;sanbika ã•ã‚“ã˜;sanji ã—ã¦ã‚“;shiten ã—ã˜;shiji ã—ã¦ã‚“;shiten ã„ã—;ishi ã—ã¼ã†;shibou ゆã†ã—;yuushi ãょã†ã—;kyoushi ã—ã²ã‚‡ã†;shihyou ã—ã ã‚“;shidan ã—ã»ã‚“;shihon ã—りょã†;shiryou ã—ãã‚“;shikin ã‚ã‚“ã˜;anji ã¦ã‚“ã˜;tenji ã—ãょã†;shikyou ã‚‹ã„ã˜ã²ã‚“;ruijihin ãˆã›;ese ã«ã‚ã†;niau ã“ã˜;koji ã—ょã†ã«;shouni ã˜ã©ã†ã¶ã‚“ãŒã;jidoubungaku ã˜ã‚‡ã†ã—ã;joushiki ã„ã—ã;ishiki ã¡ã—ãã˜ã‚“;chishikijin ã²ã‚“ã—ã¤;hinshitsu ã—ã¡ã‚„;shichiya ã²ã¨ã˜ã¡;hitojichi ã—ã‚…ãã—ゃ;shukusha ã—ゃãˆã„;shaei ã„ãªã‹ã‚‚ã®;inakamono ã—ゃã–ã„;shazai ã—ゃれã„;sharei ã‹ã‚“ã—ゃ;kansha ã˜ã‚…ãŽã‚‡ã†;jugyou ã˜ã‚…よ;juyo ãょã†ã˜ã‚…;kyouju ã—ã‚…ã†ã«ã‚…ã†;shuunyuu ã—ã‚…ã†ãˆã;shuueki ã—ã‚…ã†ã‚ˆã†ã‚Šã‚‡ã;shuuyouryoku ã—ã‚…ã†ã‚Š;shuuri ã—ã‚…ã†ã›ã„;shuusei ã—ã‚…ã†ãŽã‚‡ã†;shuugyou ã“ã†ã—ã‚…ã†;koushuu ãŸã„ã—ã‚…ã†;taishuu ãŒã£ã—ã‚…ã†ã“ã;gasshuukoku ã—ã‚…ããŒ;shukuga ã—ã‚…ãã˜;shukuji ã„ã‚ã„ã”ã¨;iwaigoto ãœã‚“ã˜ã‚…ã¤;zenjutsu ã˜ã‚…ã¤ã”;jutsugo ã˜ã‚‡ã˜ã‚…ã¤;jojutsu ãŽã˜ã‚…ã¤ã¦ã;gijutsuteki ã’ã„ã˜ã‚…ã¤ã¦ã;geijutsuteki ã—ã‚…ã˜ã‚…ã¤;shujutsu ã˜ã‚…ã‚“ã³;junbi ã™ã„ã˜ã‚…ã‚“;suijun ã˜ã‚…ã‚“ã‘ã£ã—ょã†;junkesshou ã˜ã‚‡ã¶ã‚“;jobun ã˜ã‚‡ã‚Œã¤;joretsu ã˜ã‚‡ã™ã†;josuu ã˜ã‚‡ãょ;jokyo ã‚ã‚“ã˜ã‚‡;menjo ãã†ã˜;souji ã—ょã†ãŸã„;shoutai ã—ょã†ã—ã‚…ã†;shoushuu ã¦ã¾ã­ã;temaneku ã—ょã†ã¡;shouchi ã—ょã†ã«ã‚“;shounin ã‘ã„ã—ょã†ã—ゃ;keishousha ã—ょã†ã”ã†;shougou ã—ょã†ã•ã‚“;shousan ã‚ã„ã—ょã†;meishou ã—ょã†ã«ã‚“;shounin ã‚ã‚“ã—ょã†;ronshou ã—ょã†ã‚ã„;shoumei ã‚€ã˜ã‚‡ã†ã‘ã‚“;mujouken ã˜ã‚‡ã†ã‚„ã;jouyaku ã˜ã‚‡ã†ã¦ã¤;joutetsu ã˜ã‚‡ã†ãŸã„;joutai ã’ã‚“ã˜ã‚‡ã†;genjou ã—ょã†ãŸã„ã˜ã‚‡ã†;shoutaijou ã²ã˜ã‚‡ã†;hijou ã˜ã‚‡ã†ã‚Œã„;jourei ã«ã¡ã˜ã‚‡ã†;nichijou ã©ã†ã˜ã‚‡ã†;doujou ã˜ã‚‡ã†ã›ã„;jousei ãªã•ã‘ãªã„;nasakenai ã—ょã£ã;shokki ãã—ãã¦ã;soshikiteki ãŠã‚Šã‚‚ã®;orimono ã—ょãã«ã‚“;shokunin ã—ょããŽã‚‡ã†;shokugyou ã—ょãã„ã‚“;shokuin ã›ã„ã©;seido ã›ã„ã—;seishi ãょã†ã›ã„;kyousei ã ã‚“ã›ã„;dansei ã›ã„ã¦ã;seiteki ã—ょã†ã¶ã‚“;shoubun ãŽã‚‡ã†ã›ã„;gyousei ã›ã„ã˜ã‹;seijika ã¡ã‚…ã†ãŠã†ã›ã„ãµ;chuuouseifu ã›ã„りょã;seiryoku ã›ã„ã¿ã¤;seimitsu ã¶ã—ょã†;bushou ã›ã„ãžã†;seizou ã›ã„ã›ã„;seisei ã«ã»ã‚“ã›ã„;nihonsei ãœã„ãã‚“;zeikin ãœã„ã‚€ã—ょ;zeimusho ã—ょã¨ããœã„;shotokuzei ã›ãã«ã‚“;sekinin ã˜ã›ã;jiseki ã›ãã‚€;sekimu ã›ã„ã›ã;seiseki ãŽã‚‡ã†ã›ã;gyouseki ã¼ã†ã›ã;bouseki ã‚ã‚“ã›ã¤;mensetsu ã›ã¤ãžã;setsuzoku ã¤ãŽã‚;tsugime ã›ã£ã¡;secchi ã›ã£ã‘ã„;sekkei ã›ã¤ã‚Šã¤;setsuritsu ãœã£ã›ã‚“;zessen ã—ãŸãŸã‚‰ãš;shitatarazu ã¹ã‚“ãœã¤;benzetsu ãœã¤ã¼ã†;zetsubou ãœã£ãŸã„ã¦ã;zettaiteki ãŸãˆãš;taezu ã“ãœã«;kozeni ãã‚“ã›ã‚“;kinsen ã•ã„ã›ã‚“;saisen ãœã‚“ã„;zen_i ã—ã‚“ãœã‚“;shinzen ãœã‚“ã”ã•ã;zengosaku ãã›ã‚“;sosen ã›ã‚“ãž;senzo ããµã¼;sofubo ã’ã‚“ã;genso よã†ã;youso ã™ã‚ã—;suashi ãã†ãŒã;sougaku ãã†ã”ã†;sougou ãã†ã‚Šã ã„ã˜ã‚“;souridaijin ãžã†ã›ã‚“;zousen ã‚‚ããžã†;mokuzou ã˜ã‚“ãžã†;jinzou ãã†ãžã†;souzou ã‚‚ããžã†;mokuzou ã’ã‚“ãžã†;genzou ãžã†ã ã„;zoudai ãžã†ãœã„;zouzei ãžã†ãµã;zoufuku ãããã¦ã;kisokuteki ã»ã†ãã;housoku ã’ã‚“ãã;gensoku ããã¦ã„;sokutei ããã¡;sokuchi ã¯ã‹ã‚ŠãŒãŸã„;hakarigatai ãã‚“ãžã;kinzoku ãµãžã;fuzoku ãžãã‚ã„;zokumei ãã‚“ã—ã¤;sonshitsu ãã‚“ãŒã„ã ã‹;songaidaka ã„ã„ãã“ãªã„;iisokonai ã“ã†ãŸã„;koutai ãŸã„ã—ょã;taishoku ãŸã„ã„;taii ãŸã„ã²;taihi ã‹ã—ãã‚“;kashikin ã‹ã—ã‚„;kashiya ãŸã„ã©;taido ãŸã„ã›ã„;taisei ã‚ã–ã‚ã–;wazawaza ã ã‚“ãŸã„;dantai ãµã¨ã‚“;futon ã ã‚“ã‘ã¤;danketsu ã›ã¤ã ã‚“;setsudan ã ã‚“ã’ã‚“;dangen ã“ã¨ã‚りãŒã;kotowarigaki ã‘ã‚“ã¡ã;kenchiku ã‘ã‚“ã¡ãã‹;kenchikuka ããšããªãŠã™;kizukinaosu ã—ã‚…ã¡ã‚‡ã†;shuchou ã‹ãã¡ã‚‡ã†;kakuchou ã¿ã¯ã‚‹;miharu ã¦ã„ã—ã‚…ã¤;teishutsu ãœã‚“ã¦ã„;zentei ã¡ã‚‡ã†ã¡ã‚“;chouchin ã¦ã„ã©;teido ã‹ã¦ã„;katei ã»ã©ã¡ã‹ã„;hodochikai ã¦ãã¨ã†;tekitou ã¦ãã›ã„;tekisei ã¦ã£ã;tekki ã¦ãã„;tekii ã‚€ã¦ã;muteki ã‹ãŸãã†ã¡;katakiuchi ã§ã‚“ã¨ã†;dentou ã¨ã†ã‘ã„;toukei ã ã„ã¨ã†ã‚Šã‚‡ã†;daitouryou ã©ã†ãžã†;douzou ã©ã†ã‹;douka ã›ã„ã©ã†;seidou ã—ã©ã†;shidou ã—ã‚…ã©ã†ã‘ã‚“;shudouken ã§ã‚“ã©ã†;dendou ã¨ãã¡ã‚‡ã†;tokuchou ã¨ãゆã†;tokuyuu ã¨ãã—ょã;tokushoku ã¨ãã¦ã‚“;tokuten ã—ょã¨ã;shotoku ã‚りã†ã‚‹;ariuru ã©ã†ã¨ã;doutoku ã¨ããŽ;tokugi ã¨ã£ãり;tokkuri ã©ããˆã„;dokuei ã²ã¨ã‚Šã”ã¨;hitorigoto ã©ãりã¤;dokuritsu ã«ã‚“ã‚ã„;ninmei ã«ã‚“ã„;nin_i ã›ãã«ã‚“ã—ゃ;sekininsha ã­ã‚“りょã†;nenryou ã­ã‚“ã—ょã†;nenshou ã‚‚ãˆã¤ã;moetsuku ã‹ã®ã†ã›ã„;kanousei ã®ã†ã‚Šã‚‡ã;nouryoku ã®ã†ã‚ã‚“;noumen ã¯ã•ã‚“;hasan ã¯ãã‚“;hason ã‚„ã¶ã‚Œã‚;yabureme ã¯ã‚“ã«ã‚“;hannin ã¯ã‚“ã„;han_i ã¯ã‚“ã–ã„ãŒã;hanzaigaku ã¯ã‚“ã ã‚“;handan ã¯ã‚“ã˜;hanji ã¯ã‚“ã“;hanko ã—ã‚…ã£ã±ã‚“ã—ゃ;shuppansha ã¯ã‚“ãŒ;hanga ã¯ã‚“ã‘ã‚“;hanken ã²ã‚Œã„;hirei ã²ã‹ã;hikaku ãらã¹ã‚‚ã®;kurabemono ã²ã‚Šã‚‡ã†;hiryou ã²ã¾ã‚“;himan ã“ãˆã¤ã¡;koetsuchi ã²ã«ã‚“;hinin ã²ã”ã†ã‚Šã¦ã;higouriteki ã²ã“ã†;hikou ã›ã¤ã³;setsubi ã˜ã‚…ã‚“ã³ã¡ã‚…ã†;junbichuu ããªãˆã¤ã‘;sonaetsuke ã„ã£ã´ã‚‡ã†;ippyou ã“ã‚ã ã‚ら;komedawara ã©ã²ã‚‡ã†;dohyou ã²ã‚‡ã†ã‹;hyouka ã²ã‚‡ã†ã°ã‚“;hyouban ã‚ãã²ã‚‡ã†;akuhyou ã²ã‚“ã‘ã¤;hinketsu ã²ã‚“ã“ã‚“;hinkon ã³ã‚“ã¼ã†ã˜ã‚“;binboujin ã¯ã„ãµ;haifu ã‚‚ã†ãµ;moufu ã¬ã®ã˜;nunoji ãµã˜ã‚“;fujin ã—ã‚…ãµ;shufu ãµã¡ã‚‡ã†;fuchou ãµã‚†ã†;fuyuu ã¨ã¿ãã˜;tomikuji ãµã˜ã•ã‚“;fujisan ã¶ã—ã©ã†;bushidou ã¶ã;buki ã‚€ã—ゃ;musha ãµã£ã‹ã¤;fukkatsu ã‹ã„ãµã;kaifuku ã¡ã‚‡ã†ãµã;choufuku ãµãã›ã„;fukusei ã¶ã£ãょã†;bukkyou ã˜ã‚‡ã†ã¶ã¤;joubutsu ã®ã©ã¼ã¨ã‘;nodobotoke ã¸ã‚“ã—ã‚…ã†ã—ゃ;henshuusha ã¸ã‚“ã›ã„;hensei ã‚ã¿ã‚‚ã®;amimono ã¹ã‚“ã¨ã†;bentou ã¹ã‚“ã‚ã‚“;benron ã¹ã‚“ã¾ã;benmaku ã‹ãã»;kakuho ã»ãžã‚“;hozon ã›ã„ã‚ã„ã»ã‘ã‚“;seimeihoken ã¼ã¡;bochi ã¼ã²ã‚‡ã†;bohyou ã¯ã‹ã¾ã„り;hakamairi ã»ã†ã“ã;houkoku ã§ã‚“ã½ã†;denpou ã»ã†ã—ã‚…ã†;houshuu ã»ã†ã•ã;housaku ã»ã†ãµ;houfu ã»ã†ã¾ã‚“;houman よã¼ã†;yobou ã¼ã†ã™ã„;bousui ã¼ã†ãˆã„;bouei ã¼ã†ãˆããŽã‚‡ã†;bouekigyou ã¼ã†ãˆããµã†;bouekifuu ã¼ã†ãˆãã—ゃ;bouekisha ã¼ã†ã‚Šã‚‡ã;bouryoku ã°ãã‚;bakuro ã‚ã°ã‚Œã‚‚ã®;abaremono ã¿ã‚‰ã„;mirai ã¿ã¡;michi ã¾ã ã¾ã ;madamada ãŽã‚€;gimu ã˜ã‚€ã—ょ;jimusho ã—ょãã‚€;shokumu むりょã†;muryou ã¶ã˜;buji ã‚ã„ã‚;meiro ã‚ã„ã‚€;meimu ã¾ã‚ˆã„ã”;mayoigo ã‚‚ã‚ã‚“;momen ã‚ãŸã’;watage ã‚ãŸãŒã—;watagashi ゆã—ã‚…ã¤;yushutsu ゆãã†;yusou ã†ã‚“ゆ;un_yu よã¶ã‚“;yobun よã‘ã„;yokei ã”ã˜ã‚…ã†ã‚ã¾ã‚Š;gojuuamari よãã‚“;yokin ã‚ãšã‹ã‚Šã«ã‚“;azukarinin ã‚ãšã‹ã‚Šã—ょã†;azukarishou ã³ã‚ˆã†ã„ã‚“;biyouin ãªã„よã†;naiyou ã‘ã„よã†ã—;keiyoushi ã®ã†ã‚Šã¤;nouritsu ã¨ã†ãã¤;tousotsu ãœã„りã¤;zeiritsu りゃãã”;ryakugo りゃãã›ã¤;ryakusetsu りゃããš;ryakuzu ã‚‹ã™ã°ã‚“;rusuban ã¨ã‚ãŒã­;tomegane りょã†ã˜;ryouji りょã†ã©;ryoudo よã†ã‚Šã‚‡ã†;youryou ã„よã†;iyou ã„ã˜ã‚‡ã†;ijou ã„ã˜ã‚“;ijin ã„ã§ã‚“;iden ã„ã—ã¤;ishitsu ゆã„ã”ã‚“;yuigon りょã†ã„ã;ryouiki ã¡ã„ã;chiiki ãã„ã;kuiki ã„ã¡ã¾ã‚“ãˆã‚“;ichiman_en ã„ã£ã›ã‚“;issen ã«ã˜ã‚…ã†ã„ã¡;nijuuichi ã†ã¡ã‚…ã†;uchuu ã©ã†ã†;douu ã†ã¡ã‚‡ã†ã¦ã‚“;uchouten ã†ã‚‚ã†;umou ã¯ãŠã‚Š;haori ã„ã¡ã‚;ichiwa ãˆã„ãŒã‹ã‚“;eigakan ã¯ã‚“ãˆã„;han_ei ゆã†ã°ãˆ;yuubae ãˆã‚“ã¡ã‚‡ã†;enchou ãˆã‚“ã;enki ã®ã³ã®ã³;nobinobi ãˆã‚“ãŒã‚“;engan ãˆã‚“ã©ã†;endou ãˆã‚“ã›ã‚“;ensen ã‹ã®ã†;kanou ã‹ã‘ã¤;kaketsu ã„ã†ã¹ã;iubeki ã˜ãŒ;jiga ã‚ãŒã¾ã¾;wagamama ã‚れã‚れ;wareware ã›ã£ã‹ã„;sekkai ã¯ã„ã„ã‚;haiiro ã‹ã–ã‚“ã°ã„;kazanbai ã—ãŒã„;shigai ã‹ã„ã©ã†;kaidou ãã‚…ã†ã‘ã¤ã;kyuuketsuki ã™ã„ã¨ã‚‹;suitoru ãã‚…ã†ã;kyuuso ãªãã‚€ã—;nakimushi ãªãã ã™;nakidasu ã¦ã„ãょã†;teikyou ã¨ã‚‚ã¾ã‚り;tomomawari ãよã†;kuyou ãょã†ã¶;kyoubu ã‚€ãªã’;munage ã©ãょã†;dokyou ã¼ã†ãょã†;boukyou ã”ã†ã—;goushi ãょã†ã©;kyoudo ã—ã‚…ã£ãã‚“;shukkin ãã‚“ã¹ã‚“ã›ã„;kinbensei ã¤ã¨ã‚ã•ã;tsutomesaki ãã‚“ã«ã;kinniku ã™ã˜ã¿ã¡;sujimichi ã™ã˜ãŒã;sujigaki ã‹ã‘ã„;kakei ã‘ã„ã¨ã†;keitou ã‘ã„れã¤;keiretsu ã¡ã‚‡ã£ã‘ã„;chokkei ã—ょã†ã‘ã„;shoukei ã¡ã‚‡ãã˜ã‚‡ã†ã‘ã„ã“ã†;chokujoukeikou ãã‚“ã‘ã„;sonkei ã‘ã„ã”;keigo ã„ã‘ã„;ikei ã‘ã„ã‹ã‚“;keikan ã‘ã„ã“ã;keikoku ã‘ã„ã»ã†;keihou ã’ãã˜ã‚‡ã†;gekijou ã’ãã¦ã;gekiteki ã’ãã¤ã†;gekitsuu ã‘ã£ãょã˜ã‚“;kekkyojin ã‚ãªã”;anago ã‚ãªã†ã‚;anaume ã‘ã‚“ãŽã‚‡ã†;kengyou ã‘んよã†;ken_you ã—ã‹ã­ã‚‹;shikaneru ã‘んり;kenri ã‘ã‚“ã“ã†;kenkou ã”ã‚“ã’;gonge ã‘ã‚“ã½ã†;kenpou ã‘ã‚“ã—ょã†;kenshou ã‘ã‚“ãºã„;kenpei ã—ã’ã‚“;shigen ã’ã‚“ã›ã‚“;gensen ã’ã‚“ã˜;genji ã’ã‚“ã‹ã;genkaku ã’ã‚“ã´;genpi ãã†ã”ã‚“;sougon ã˜ã“;jiko ã¡ã;chiki りã“;riko ã“ãã‚…ã†;kokyuu ã¦ã‚“ã“;tenko よã³ã‚‚ã®;yobimono ã”ã‹ã„;gokai ã”ã¯ã‚“;gohan ã”ã‚„ã;goyaku ã“ã†ã”ã†;kougou ã“ã†ã²;kouhi ã”ã”;gogo ã“ã†ã„;koui ã“ã†ã ã‚“ã—;koudanshi ã“ã†ã—;koushi ã“ã†ã“ã†;koukou ãµã“ã†;fukou ã“ã†ãŸã„ã—;koutaishi ã»ã†ãŠã†;houou ã‚ã„ã˜ã¦ã‚“ã®ã†;meijitennou ã“ã†ã‚ˆã†;kouyou ã—ã‚“ã;shinku ã“ã†ã¡ã‚ƒ;koucha ã“ã†ã†;kouu ã“ã†ãµã;koufuku ã®ã‚ŠãŠã‚Š;noriori ã“ã†ã¦ã¤;koutetsu ã›ã„ã“ã†ã˜ã‚‡;seikoujo ã¯ãŒã­ã„ã‚;haganeiro ã˜ã“ã;jikoku ã“ãã„ã‚“;kokuin ãã–ã¿ã‚;kizamime ã“ãã‚‚ã¤;kokumotsu ã“ãã‚‹ã„;kokurui ã“ããã†;kokusou ã“ã£ã›ã¤;kossetsu ã‚ã†ã“ã¤;roukotsu ã»ã­ãŠã‚‹;honeoru ã“ã‚“ãªã‚“;konnan ã“ã‚“ã;konku ã“ã¾ã‚‰ã›ã‚‹;komaraseru ã•ãã‚“;sakin ã˜ã‚ƒã‚Š;jari ã™ãªã¯ã¾;sunahama ã–ã›ã;zaseki ã–ã ã‚“ã‹ã„;zadankai ãŽã‚“ã–;ginza ã‘ã„ã–ã„ãŒã;keizaigaku ã¸ã‚“ã•ã„;hensai ã™ã¾ãªã„;sumanai ã•ã„ã°ã‚“;saiban ãŸã¡ããš;tachikuzu ãŸã¡ã‹ãŸ;tachikata ã›ã„ã•ã;seisaku ãŸã„ã•ã;taisaku ã•ãã©ã†ã‹;sakudouka ã•ã£ã—;sasshi ã«ã•ã¤;nisatsu ãŸã‚“ã–ã;tanzaku ã—ãã‚…ã†;shikyuu ã’ã—;geshi ã„ãŸã‚‰ãªã„;itaranai ã—りã¤;shiritsu ã‚ãŸã—ãŸã¡;watashitachi ã—ã˜;shiji ã—ã›ã„;shisei よã†ã—;youshi ã™ãŒãŸã¿;sugatami ã—りょã;shiryoku ã—ã‹ã;shikaku ã©ã†ã—;doushi ã“ã¨ã°ãŒã;kotobagaki ã»ã‚“ã—;honshi ã—ã‚…ã†ã‹ã‚“ã—;shuukanshi ã˜ã—ゃã;jishaku ã˜ã;jiki ã˜ã‚Šã‚‡ã;jiryoku ã¡ã‚…ã†ã—ゃã;chuushaki ã„ãŸãŠã™;itaosu ã—ゃã’ãã˜ã‚‡ã†;shagekijou ãã—ゃ;kisha ã™ã¦ã”;sutego ã™ã¦ãŠã;suteoku ã—ゃãã©;shakudo ã—ゃãã¯ã¡;shakuhachi ã›ãã¡;sekichi ã‹ã„ã—ゃã;kaishaku ã—ゃãã»ã†;shakuhou ã—ゃãã‚ã„;shakumei ã˜ã‚ƒãã­ã‚“;jakunen ã‚‚ã—ãã¯;moshikuha ã‚ã‹ã‚‚ã®;wakamono ã˜ã‚…よã†;juyou ã²ã¤ã˜ã‚…ã²ã‚“;hitsujuhin ã˜ã‚…ãã‚…ã†;jukyuu ã˜ã‚…ã—;jushi ã˜ã‚…りã¤;juritsu ã˜ã‚…ã²;juhi ã—ã‚…ã†ãょã†;shuukyou ãã†ã‘;souke ã—ã‚…ã†ã¯;shuuha ã˜ã‚‡ã†ã˜ã‚…;jouju ã«ã¤ã„ã¦;nitsuite ã—ã‚…ã†ã—ょã;shuushoku ã˜ã‚…ã†ãŽã‚‡ã†ã„ã‚“;juugyouin ã˜ã‚…ã†ã—ゃ;juusha ã—ãŸãŒã£ã¦;shitagatte ã˜ã‚…ã†ã›ã‚“;juusen ã»ã†ã˜ã‚…ã†;houjuu ãŸã¦ãŒã;tategaki ã—ã‚…ãã—ょã†;shukushou ãŸã‚“ã—ã‚…ã;tanshuku ã¡ã¢ã¿ã©ã‚;chidimidome ã›ã„ã˜ã‚…ã;seijuku ã¯ã‚“ã˜ã‚…ã;hanjuku ã˜ã‚…ãれん;jukuren ã˜ã‚…ã‚“ã™ã„;junsui ã˜ã‚…ã‚“ã‚‚ã†;junmou ã˜ã‚…ã‚“ãˆã;jun_eki ã—ょり;shori ã—ょã¡;shochi ã—ょã—ょ;shosho ã—ょã‚ã„;shomei ã—ょã„ã‚“;shoin ã‘ã„ã•ã¤ã—ょ;keisatsusho ã—ょã¨ã†;shotou ã—ょãã‚“;shokun ã‚‚ã‚ã¦;morote ã—ょã†ã‚‰ã„;shourai ã—ょã†ãã‚“;shougun ã¾ã•ã«;masani ãã—ょã†;kushou ã‚らã„ã”ãˆ;waraigoe ãˆãŒãŠ;egao ã—ã—ょã†ã—ゃ;shishousha ã—ょã†ãŒã„;shougai ããšã¤ã‘ã‚‹;kizutsukeru ã—ょã†ãŒã„;shougai ã—ょã†ã˜;shouji ã•ã—ã•ã‚ã‚‹;sashisawaru ã˜ã‚‡ã†ã‹ã¾ã¡;joukamachi ã²ã‚ã˜ã˜ã‚‡ã†;himejijou ã—ã‚ã‚ã¨;shiroato ã˜ã‚‡ã†ã;jouki ã˜ã‚‡ã†ã‚Šã‚…ã†;jouryuu ã‚€ã—ã‚ã¤ã„;mushiatsui ã»ã†ã—ã‚“;houshin ã—ã‚“ã‚;shinro ã¯ã‚ŠãŒã­;harigane ã˜ã‚“ã‚ã„;jin_ai ã˜ã‚“ã—ゃ;jinsha ã«ãŠã†;niou ã™ã„ã¡ã‚‡ã;suichoku ã‚ã¾ã ã‚Œ;amadare ãŸã‚Œã‹ã–り;tarekazari ã™ã„り;suiri ã™ã„ã›ã‚“ã—ゃ;suisensha ã™ã„ã—ã‚“ã;suishinki ã™ã‚“ã½ã†;sunpou ã„ã£ã™ã‚“;issun ã™ã‚“ã¶ã‚“;sunbun ãœã›ã„;zesei ã“れら;korera ã›ã„ã—ょ;seisho ã›ã„ã˜ã‚“;seijin ã—ã‚“ã›ã„;shinsei ã›ã„ã„;seii ã›ã„ã˜ã¤;seijitsu ã¾ã“ã¨ã«;makotoni ã›ã‚“ã§ã‚“;senden ã›ã‚“ã“ã;senkoku ã›ã‚“ãょã†ã—;senkyoushi ã›ã‚“ã‚‚ã‚“;senmon ã›ã‚“よã†;sen_you ã›ã‚“ã›ã„;sensei ãŠã‚“ã›ã‚“ã˜ã‚‡ã†;onsenjou ã›ã‚“ã™ã„;sensui ã²ã›ã‚“;hisen ã›ã‚“れã„;senrei ã¦ã‚らã„;tearai ã›ã‚“ã—ょã;senshoku ãã‚ã‚‚ã®;somemono ã—ã¿ã“ã‚€;shimikomu ã°ã‚“ãã†;bansou ãã†ãŒãã©ã†;sougakudou ãã†ã˜ã‚‡ã†;soujou ã¾ã©ãã¡;madoguchi ã§ã¾ã©;demado ã©ã†ãã†ã‹ã„;dousoukai ãã†ãžã†;souzou ãã†ã‚Šã¤ã—ゃ;souritsusha ãã†ã„;soui ã‹ãã†;kasou ãã†ã†ã‚“;souun ã“ã†ãã†ã³ã‚‹;kousoubiru ãã†ã˜ã‚…ã†ã—;soujuushi ã›ã£ãã†;sessou ã‚ã‚„ã¤ã‚Šã«ã‚“ãŽã‚‡ã†;ayatsuriningyou ãžã†ã—ょ;zousho ãžã†ã¨ã;zoutoku ã•ã‹ãら;sakagura ãžã†ã;zouki ãªã„ãžã†;naizou ã—ã‚“ãžã†ãŒã;shinzougaku ãžãã”;zokugo ãžã£ã‹;zokka ãµã†ãžã;fuuzoku ã›ã„ãžã‚“;seizon ãžã‚“ã˜ã‚ˆã‚Š;zonjiyori ãã‚“ã–ã„ã—ゃ;sonzaisha ãã‚“ã¡ã‚‡ã†;sonchou ãã‚“ã®ã†ã‹;sonnouka ãんりょ;sonryo ã˜ãŸã;jitaku ãŸãã¡;takuchi ãŸã‚“ã¨ã†;tantou ã«ãªã„ã—ょã†ã«ã‚“;ninaishounin ãŒãã—ã‚…ã†ãµãŸã‚“;gakushuufutan ãŸã‚“ã¡;tanchi ãŸã‚“ãã‚…ã†ã—ゃ;tankyuusha ã•ãりã ã™;saguridasu ã ã‚“ã‹ã„;dankai ã¾ã‚りã‹ã„ã ã‚“;mawarikaidan ã¦ã‚“らんã‹ã„;tenrankai ã¦ã‚“ã¼ã†;tenbou ã¨ã†ãŽ;tougi ã†ã¡ã„ã‚‹;uchiiru ã¨ã†ã°ã¤ãã‚“;toubatsugun ã›ã„ã¨ã†;seitou ã‚ã†ã©ã†ã¨ã†;roudoutou ã¨ã†ã¯;touha ã•ã¨ã†;satou ã¨ã†ã„;toui ã¨ã†ã¶ã‚“;toubun ã¨ã©ã‘ã—ょ;todokesho ã¨ã©ã‘ã§ã‚‹;todokederu ゆãã¨ã©ã;yukitodoku ãªã‚“ã¿ã‚“;nanmin ãªã‚“ãŽ;nangi ã¿ãŒãŸã„;migatai ã«ã¾ã‚“ãˆã‚“;niman_en ã«ã˜ã‚…ã†;nijuu ã«ã›ã‚“;nisen ãŽã‚…ã†ã«ã‚…ã†;gyuunyuu ã«ã‚…ã†ã•ã‚“;nyuusan ã«ã‚…ã†ã¼ã†;nyuubou ã«ã‚“ã—ã;ninshiki ã«ã‚“ã‹;ninka ã¿ã¨ã‚ã„ã‚“;mitomein ã®ã†ãœã„;nouzei ãªã‚„;naya ã™ã„ã¨ã†ã¼;suitoubo ãšã®ã†;zunou ã—ã‚…ã®ã†;shunou ã®ã†ã—ょã†ãŒã„;noushougai ã¯ã‘ã‚“;haken ãŸãªã‹ã¯;tanakaha れã„ã¯ã„;reihai ã¯ã„ã;haigu ã¯ã„ã”;haigo ã›ãªã‹;senaka ã¯ã„ã—ã‚“;haishin ã¯ã„ã³ã‚‡ã†;haibyou ã¯ã„ãˆã‚“;haien ã¯ã„ãžã†;haizou ã¯ã„ゆã†;haiyuu ã¯ã„ã;haiku ã¯ã„ã˜ã‚“;haijin ã¯ã‚“ã¡ã‚‡ã†;hanchou ãã‚…ã†ã”ã¯ã‚“;kyuugohan ã¯ã‚“ã§ã‚“;handen ã°ã‚“ã‚ã—;banmeshi ã°ã‚“ã‹;banka ã“ã‚“ã°ã‚“;konban ã²ã«ã‚“;hinin ã²ã¦ã„ã”;hiteigo ã„ãªã‚ãªã„;inamenai ã²ã¯ã‚“;hihan ã²ã²ã‚‡ã†;hihyou ã²ã˜ã‚…ã‚“;hijun ã²ã¿ã¤;himitsu ã”ãã²;gokuhi ã²ã—ょ;hisho ãµãã¶;fukubu ã¯ã‚‰ã ã¡;haradachi ã¡ã‚…ã†ãµã;chuufuku ãµã‚“ã;funki ãµã‚“ã¨ã†;funtou ãµã‚‹ã„ãŸã¤;furuitatsu ã¸ã„ã‹;heika ã¸ã„ã‘ã‚“;heiken ã¦ã‚“ãŠã†ã¸ã„ã‹;ten_ouheika ã¸ã„ã¦ã‚“;heiten ã¸ã„ã“ã†;heikou ã—ã‚ã ã™;shimedasu ã ã‚“ãºã‚“;danpen ã‹ãŸã¦;katate ã‹ãŸã¥ã‘ã‚‹;katadukeru ã»ã˜ã‚‡;hojo ã»ã˜ã‚…ã†;hojuu ã»ãょã†;hokyou ã»ã†ã›ã;houseki ã–ã„ã»ã†;zaihou ã“ã ã‹ã‚‰;kodakara ã»ã†ã‚‚ã‚“;houmon らã„ã»ã†ã—ゃ;raihousha ãŸã‚“ã¼ã†;tanbou ã—ã¼ã†;shibou ã‚‚ã†ã˜ã‚ƒ;mouja ã¼ã†ã‚ã„;boumei ã¼ã†ãゃã;boukyaku ã¼ã†ãŠã‚“;bouon ã‚ã™ã‚ŒãŒã¡;wasuregachi ã—ã‚“ã¼ã†;shinbou ã¼ã†ãらãµ;bougurafu ã¼ã†ã¹ã«;boubeni ã„ã¡ã¾ã„;ichimai ã«ã¾ã„ã˜ãŸ;nimaijita ã«ã¾ã„ãŒã„;nimaigai ã¦ã‚“ã¾ã;tenmaku ã‹ã„ã¾ã;kaimaku ã°ããµ;bakufu ã¿ã¤ã©;mitsudo ã¿ã¤ã‚†;mitsuyu ã‚ã‚“ã¿ã¤;menmitsu れんã‚ã„;renmei ã©ã†ã‚ã„;doumei ã‹ã‚ã„;kamei ã‚‚ã‘ã„;mokei ã‚‚ã—ゃ;mosha ãã¼;kibo ã‚„ã•ã;yasaki ã‚„ã˜ã‚‹ã—;yajirushi ã„ã£ã—;isshi ã»ã‚“ã‚„ã;hon_yaku ã¤ã†ã‚„ã;tsuuyaku ã„ã„ã‚ã‘;iiwake ゆã†ã³ã‚“;yuubin ゆã†ãã†;yuusou ゆã†ã¦ã„;yuutei ゆã†ã—ã‚…ã†;yuushuu ゆã†ã›ã‚“;yuusen ã˜ã‚‡ã‚†ã†;joyuu よã†ã˜;youji ãŠã•ãªã”;osanago よã†ã²;youhi よã†ã™ã„;yousui ã²ã¤ã˜ã‹ã„;hitsujikai よãã¼ã†;yokubou ã—ょãよã;shokuyoku ã‚‚ã®ã»ã—ã’;monohoshige よãã˜ã¤;yokujitsu よãã¡ã‚‡ã†;yokuchou よãよãã­ã‚“;yokuyokunen らんã¼ã†;ranbou ã¯ã‚“らん;hanran ã¿ã ã‚Œã‚ã—;midareashi らんãŠã†;ran_ou ã•んらん;sanran ãªã¾ãŸã¾ã”;namatamago ã”らん;goran ã‹ã„らん;kairan ã‹ã‚“らん;kanran りã‚ã‚“;rimen ã†ã‚‰ã‘;urake ã†ã‚‰ã¥ã‘ã‚‹;uradukeru ãりã¤;kiritsu りã¡ãŽ;richigi りんã˜;rinji りんã‹ã„;rinkai りんã›ã;rinseki ã‚ã„ã‚ã†;meirou ã‚ã†ã»ã†;rouhou ã‚ã†ã©ãã»ã†;roudokuhou ã‚ã‚“ã¶ã‚“;ronbun りã‚ã‚“;riron ã‚んり;ronri ã‚ã­ã£ãŸã„;anettai ãŠã†ã‚;oua ã‚りゅã†;aryuu ã²ã‚ã„;hiai ã‚ã„ã‹;aika ã‚‚ã®ã®ã‚ã‚れ;mononoaware ã‚ãã—ã‚…;akushu ã«ãŽã‚Šã‚„;nigiriya ã«ãŽã‚Šã‚ã—;nigirimeshi ã¨ã‚Šã‚ã¤ã‹ã„;toriatsukai ã“ãã¤ã‹ã†;kokitsukau ãゃãã‚ã¤ã‹ã„;kyakuatsukai ã„らã„;irai ã„ãœã‚“;izen ãˆã“ã˜;ekoji ã„りょã;iryoku ã„ã’ã‚“;igen ãŠã©ã—ã‚‚ã‚“ã;odoshimonku ã“ã†ã„;koui ãŸã‚ã™ã˜;tamesuji ã—ã™ãŽã‚‹;shisugiru ãŸã„ã„;taii ã—ょã†ã„;shoui ã„ã‹ã‚“;ikan ã„ã ã„;idai ã„ã˜ã‚“;ijin ãˆã‚‰ã¶ã¤;erabutsu ãã†ã„;soui ã„ã¯ã‚“;ihan ã„ã„ã¡ãŒã„;iichigai ã„ã˜;iji ã„ã—ã‚“;ishin ã›ã‚“ã„;sen_i ã„ã‚‚ã‚“;imon ã„ã‚ã‚“;ian ãªãã•ã¿ã‚‚ã®;nagusamimono ã„ã©;ido ã‘ã„ã„ãŽ;keiigi ã¬ãã„ã¨;nukiito ã„ã£ã´ã‚“;ippin ãれや;soreya ã„ã£ã—ã‚…ã¤;isshutsu ã•ã¨ã„ã‚‚;satoimo ã„ã‚‚ãŒã„;imogai ã‚„ãã„ã‚‚;yakiimo ã“ã‚“ã„ã‚“;kon_in ã„ã‚“ã›ã;inseki ã„ã‚“ãžãã°ã¤;inzokubatsu ã„ã‚“ã;inki ã„ã‚“ã¶;inbu ã‹ã’ãã¡;kageguchi ã„ã‚“ãょ;inkyo ã„ã‚“ã˜ã‚ƒ;inja ã‹ãれãŒ;kakurega ã„ã‚“ã¶ã‚“;inbun ã„んりã¤;inritsu ãŠã‚“ã„ã‚“;on_in ãˆã„ã‹;eika ãˆã„ãã†;eisou ãˆã„ã—;eishi ãˆã„ãょã†;eikyou ãˆã„ãžã†;eizou ã‹ã’ã‚€ã—ゃ;kagemusha ãˆã„り;eiri ãˆã„ã‹ã;eikaku ã›ã„ãˆã„;seiei ã¼ã†ãˆã;boueki ã‚ããˆã;akueki ã‚„ãã³ã‚‡ã†;yakubyou ããˆã¤;kietsu ãˆã¤ã‚‰ã;etsuraku ã¾ã‚“ãˆã¤;man_etsu ゆã†ãˆã¤;yuuetsu ãˆã£ãょã†;ekkyou ãŠã„ã“ã™;oikosu ã¯ã„ãˆã¤;haietsu ãˆã£ã‘ã‚“;ekken ãˆã£ã‘ã‚“ã—ã¤;ekkenshitsu ãˆã£ãºã„;eppei ã‘ã‚“ãˆã¤;ken_etsu ãˆã¤ã‚‰ã‚“ã—ã¤;etsuranshitsu ã‹ãˆã‚“;kaen ã®ã†ãˆã‚“;nouen ãˆã‚“ã¦ã‚“;enten ãˆã‚“ã‹ã„;enkai ãˆã‚“らã;enraku ã—ã‚…ãˆã‚“;shuen ãˆã‚“ã˜ã‚‡;enjo ãŠã†ãˆã‚“;ouen ã›ã„ãˆã‚“;seien ãˆã‚“ã¨ã¤;entotsu ãã‚“ãˆã‚“;kin_en ãŸã°ã“;tabako ã‚‹ã„ã˜ã‚“ãˆã‚“;ruijin_en ã‚„ãˆã‚“;yaen ã•ã‚‹ã¾ã­ã‚„;sarumaneya ã‚ãˆã‚“;aen ã“ããˆã‚“;kokuen ãˆã‚“ã´ã¤ã„れ;enpitsuire ãˆã‚“ãŒã‚;engawa ãµã¡ã¬ã„;fuchinui ãˆã‚“ã ã‚“;endan ãŠã›ã‚“;osen ãŠã—ょã;oshoku よã”れもã®;yogoremono ãŠã†ã‚ã‚“;oumen ãã¼ã¡;kubochi ã¸ã“ã¿;hekomi ãŠã†ã—ã‚…ã†;oushuu ãŠã—ã„れ;oshiire ã¦ãŠã—ãã‚‹ã¾;teoshiguruma ãŠã†ã—ã‚…ã†;oushuu ãŠã†ã¹ã„;oubei ãŠã†ã—ã‹ã‚“;oushikan ãŠã†ã ;ouda ãªãりã“ã¿;nagurikomi ãªãりã‚ã†;naguriau ãŠã†ã¨ã†;outou ã•ãらã„ã‚;sakurairo ã•ãらã«ã;sakuraniku ã‚ã†ãŠã†;rouou ãã‚“ãŠã†;son_ou ã’ã‚“ãŠããª;gen_okina ãŠããã“;okusoko ãŠãã•ã¾;okusama ãŠããŽ;okugi ããŠã;kioku ã¤ã„ãŠã;tsuioku ãŠããã;okusoku ゆã†ã;yuugu ãµã;fugu ãã³ã˜ã‚“ãã†;gubijinsou ãŠã¤ã—ã‚…;otsushu ãŠã¨ã‚;otome ãŠã¤ã«;otsuni ãŠã‚ã—ã†ã‚Š;oroshiuri ãŠã‚ã—ã—ょã†;oroshishou ãŠã‚ã—ã ã„ã“ã‚“;oroshidaikon ãŠã‚“ã‚;onwa ãŠã‚“ã¨ã†;ontou ã¸ã„ãŠã‚“;heion ã‹ã˜ã‚“;kajin ãœã£ã‹;zekka ã‹ã•ã;kasaku ã‹ã©ã†ãょã†;kadoukyou ã—ょã‹;shoka ã‹ãã†;kakuu ã‹ã³;kabi ã¡ã‚…ã†ã‹;chuuka ã¯ãªã°ãªã—ã„;hanabanashii ã›ã„ã‹;seika ã¿ãšãŒã—;mizugashi ã†ãšã¾ã;uzumaki ã‹ã›ã‚“;kasen ã‹ã¡ã‚…ã†;kachuu ã¯ãªã‚ˆã‚;hanayome ã‹ã—;kashi ã¦ã‚“ã‹;tenka ãã‚…ã†ã‹;kyuuka よã‹;yoka ã²ã¾ã©ã‚‹;himadoru ã‹ãµã;kafuku ã•ã„ã‹;saika ã‹ã“ã‚“;kakon ã›ã„ã‹;seika ãã¤ã—ãŸ;kutsushita ãªãŒãã¤;nagagutsu ã‹ã‚‚ã;kamoku ã‹ãµ;kafu ã‹ã’ã‚“;kagen ã‹ã˜ã‚‡ã†ãŒã;kajougaki ã‹ã—ょ;kasho ã„ã£ã“;ikko ã‹ãŽã‚‡ã†;kagyou ã‹ã›ãŽã¦;kasegite ã¨ã‚‚ã‹ã›ãŽ;tomokasegi ã‹ã°ã‚Š;kabari ãŒãŒã‚“ã¼;gaganbo ã‹ã‚„りã³;kayaribi ゆã†ãŒ;yuuga ãŒã”ã†;gagou ãŒã—ã‚…;gashu ããŒ;kiga ãŒã;gaki ãŒã—;gashi ã‹ã„ã«ã‚…ã†;kainyuu ã‹ã„ã‹ã;kaikaku ã˜ã“ã—ょã†ã‹ã„;jikoshoukai ã‘ã„ã‹ã„;keikai ã‹ã„りã¤;kairitsu ã‹ã„ãŽã‚‡ã†;kaigyou ã‹ã„ã ã‚“;kaidan ã‹ã„ã¶ã¤;kaibutsu ã‚ã‚„ã—ã’;ayashige ã‹ã„ãŸã„ã—ゃ;kaitaisha ゆã†ã‹ã„;yuukai ã‹ã„ã˜ã‚‡ã†;kaijou ã“ã†ã‹ã„;koukai ãã‚„ã—ã•;kuyashisa ãã‚„ã¿ã˜ã‚‡ã†;kuyamijou ã‹ã„ã•ã„;kaisai ã‹ã„ã‚€;kaimu ã¿ãªã•ã¾;minasama ãã‚“ã‹ã„;kinkai ã‹ã„ã“ã†;kaikou ã•ã‚“ã‹ã„;sankai ã¯ã‹ã„;hakai ã‹ã„ã‚ã¤;kaimetsu ã‹ã„ã‘ã¤ã³ã‚‡ã†;kaiketsubyou ã‹ã„ã¡ã‚…ã†;kaichuu ãµã¨ã“ã‚ã§;futokorode ã˜ã‚…ã£ã‹ã„;jukkai ã ã‚“ãŒã„ã—ゃ;dangaisha ã ã‚“ãŒã„;dangai ãŒã„ãã†;gaisou ã—ょã†ãŒã„;shougai ã•ã„ãŒã„;saigai ã¦ã‚“ãŒã„;tengai ãŒã„ãŸã‚“;gaitan ã‹ã‚“ãŒã„;kangai ãŒã„ãœã‚“;gaizen ãŒã„ã¨ã†;gaitou ã¨ã†ãŒã„;tougai ãŒã„ã¯ã;gaihaku ãŒã„ã­ã‚“;gainen ãŒã„りゃã;gairyaku ãŸã„ãŒã„;taigai ã‹ãã­;kakine ã„ã‘ãŒã;ikegaki ã‹ã„ã¾ã¿ã‚‹;kaimamiru ã‹ãã—ã‚“;kakushin ã‘ã£ã‹ã;kekkaku ã‹ãã¸ã„ã;kakuheiki ã‹ã„ãŒã‚‰;kaigara ã“ã†ã‹ã;koukaku ã¡ã‹ã;chikaku りんã‹ã;rinkaku ã˜ã‚‡ã†ã‹ã;joukaku ゆã†ã‹ã;yuukaku ã²ã‹ã;hikaku ã“ã†ã‚Šã‚‡ã†;kouryou ãŸã„ã“ã†;taikou ã‹ãり;kakuri ã‹ã‚“ã‹ã;kankaku ã‹ãã—ã‚…ã†;kakushuu ã‹ãã¨ã;kakutoku ãŽã‚‡ã‹ã;gyokaku ãˆã‚‚ã®;emono ã„ã‹ã;ikaku ã‹ãã©;kakudo ã„ã‹ãã¦ã;ikakuteki ã—ã‚…ã†ã‹ã;shuukaku ãŸã‹ã;takaku ã—ã‚…ã†ã‹ãã ã‹;shuukakudaka ã•ã‚“ãŒã;sangaku ãŒããµ;gakufu ã†ã‚“ãœã‚“ã ã‘;unzendake ã‹ã‹ã‚Šã³ã¨;kakaribito ã¿ã‹ã‘;mikake ã“ã—ã‹ã‘ã‚‹;koshikakeru ã²ãŒãŸ;higata ã›ãã“;sekiko ã«ã„ãŒãŸã—;niigatashi ã„ã£ã‹ã¤;ikkatsu ã‹ã£ã“;kakko ã»ã†ã‹ã¤ã¦ã;houkatsuteki ã‹ã£ã•ã„;kassai ãょã†ã‹ã¤;kyoukatsu ã„ã£ã‹ã¤;ikkatsu ã‹ã£ã™ã„;kassui ã‹ã¤ã¼ã†;katsubou ã‹ã‚ã;kawaki ãˆã‚“ã‹ã¤;enkatsu ã‹ã£ãã†ã‚;kassouro ã™ã¹ã‚Šã‚„ã™ã„;suberiyasui ã‹ã£ã—ょã;kasshoku ã‹ã£ãŸã‚“;kattan ã‹ã£ã·;kappu ã—ょã‹ã¤;shokatsu ã‹ã‚“ã‹ã¤;kankatsu ã¨ã†ã‹ã¤;toukatsu ã‹ã¤ã¾ãŸ;katsumata ã‹ã¤;katsu ã“ã†ã—ょ;kousho ã‹ã‚Šã„れ;kariire ã‹ã‚Šã“ã‚€;karikomu ãã•ã‹ã‚Šã;kusakariki ã‚ã¾ã–ã‘;amazake ã‹ã‚“ã’ã‚“;kangen ã‚ã¾ãˆ;amae ã¯ã£ã‹ã‚“;hakkan ã‹ã‚“ãŒã‚“;kangan ã‚ã›ã¿ãš;asemizu ã‹ã‚“ã¥ã‚;kandume ã‹ã‚“ãり;kankiri ãã‹ã‚“;kikan ã‹ã‚“ãžã†;kanzou ã‹ã‚“ã˜ã‚“;kanjin ãã‚‚ã£ãŸã¾;kimottama ãŠã†ã‹ã‚“;oukan ãˆã„ã‹ã‚“;eikan ã‹ã‚“ã‚‚ã†;kanmou ã‹ã‚“ã¼ã¤;kanbotsu ã‘ã£ã‹ã‚“;kekkan ã‹ã‚“らã;kanraku ã‹ã‚“ã§ã‚“ã¡;kandenchi ã‹ã‚“ãã†ã;kansouki ã‹ã‚ã„ãŸ;kawaita ã‹ã‚“ã¹ã‚“;kanben ã‹ã‚“ã˜ã‚‡ã†;kanjou ã‹ã‚“ã¡ãŒã„;kanchigai ã‹ã‚“ã˜ã‚ƒ;kanja ã‹ã‚“ã¶;kanbu ãªãŒã‚ãšã‚‰ã„;nagawazurai ã‹ã‚“ã¤ã†;kantsuu ã˜ã‚…ã†ã‹ã‚“;juukan ã‹ã‚“りゅã†;kanryuu ã‹ã‚“ã‚‚ã‚“;kanmon ãょã†ã‹ã‚“;kyoukan ã‚ã‚ãã”ãˆ;wamekigoe ã‹ã‚“ã«ã‚“;kannin ãŸã‚“ã®ã†;tannou ãŸãˆãŒãŸã„;taegatai ã‹ã‚“ã;kanki ã‹ãˆãŽ;kaegi ã“ã†ã‹ã‚“ãŒãã›ã„;koukangakusei ゆã†ã‹ã‚“;yuukan ã‹ã‚“ãœã‚“;kanzen ã‚ãˆãªã;aenaku ã‹ã‚“ãŠã‘;kan_oke ã›ã£ã‹ã‚“;sekkan ã²ã¤ãŽã ã„;hitsugidai ã—ゃã£ã‹ã‚“;shakkan らã£ã‹ã‚“;rakkan ã‹ã‚“ãŸã„;kantai ã‹ã‚“ã›ã„;kansei ã‹ã‚“ã•ã‚“;kansan ã‹ã‚“ã˜ã‚“;kanjin ã‹ã‚“ã ã„;kandai ã‹ã‚“よã†;kan_you ã‹ã‚“ã„;kan_i ã‹ã‚“ã—;kanshi ãã†ã‹ã‚“;soukan ã‹ã‚“ãã‚“;kankin ã‹ã‚“ã‚;kanwa ã‹ã‚“りゅã†;kanryuu ゆるゆる;yuruyuru ã„ã‹ã‚“;ikan ã‹ã‚“ã“ã‚“;kankon ã†ã‚‰ã¿;urami ã‹ã‚“ã’ã‚“;kangen ã›ã„ã‹ã‚“ã—ゃ;seikansha ã¸ã‚“ã‹ã‚“;henkan ゆã³ã‚;yubiwa ã‹ã‚“ã˜ã‚‡ã†ã›ã‚“;kanjousen ã‹ã‚“ãょã†;kankyou ãã‚“ã‹ã‚“;gunkan ã‹ã‚“ãŸã„;kantai ã‹ã‚“ã—ã‚…;kanshu ã­ã‚“ã‹ã‚“;nenkan ã‹ã‚“ã—ょã†;kanshou ã‹ã‚“ãŒã¿ã¦;kangamite ã»ã†ãŒã‚“;hougan ãŒã‚“ゆã†ã‚Šã‚‡ã†;gan_yuuryou ãµãã‚ã¦;fukumete ãŒã‚“ã“;ganko ãŒã‚“ã‘ã‚“;ganken ããŽã‚‡ã†;kigyou ãã‹ã;kikaku ãã‚ã ã¦;kuwadate ãã‚;kiro ã¶ã‚“ã;bunki ãŸã;taki ãã¡ã‚…ã†;kichuu ãã‚“ã;kinki ã„ã¿ãらã†;imikirau ãã™ã†;kisuu ã—ã‚“ã;shinki ãã‘ã„;kikei ãã­ã‚“;kinen ãã¨ã†;kitou ã„ã®ã‚Šã‚ã†;inoriau ãã©ã†;kidou ã‚€ãã©ã†;mukidou ã˜ã‚‡ã†ã;jouki ãã›ã„;kisei ãã“ã‚“;kikon ãã¦ã„;kitei ãã‹ã‚“;kikan ã†ãˆã˜ã«;uejini ããŒã“ã†ã—ã‚“;kigakoushin ãã‹ã„;kikai ãã›ã;kiseki ãŠã«ã”ã£ã“;onigokko ãã‹ãŒã;kikagaku ãã—;kishi ã—ょã†ãŽ;shougi ãã¦ã;kiteki ã»ã†ã;houki ãã‘ã‚“;kiken ãã˜;kiji ã“ã†ã;kouki ãã›ã;kiseki ã‹ãŒã‚„ã;kagayaki ãã—;kishi ãã¸ã„;kihei ã„ã£ãã†ã¡;ikkiuchi ã¦ããŽ;tekigi ã¹ã‚“ãŽ;bengi よã‚ã—ã;yoroshiku ã«ã›ã‚‚ã®;nisemono ãŽãœã‚“;gizen ã„ã¤ã‚りもã®;itsuwarimono ã•ãŽ;sagi ãŽã¾ã‚“;giman ã‚ã–ã‚€ãã¨ã‚‹;azamukitoru ãŽã—ã;gishiki ãŽã¦ã‚“;giten れã„ãŽ;reigi ゆã†ãŽã¦ã;yuugiteki ãŽãŒ;giga ãŸã‚ã”ã¨;tawagoto ã‚‚ãŽ;mogi ãŽã›ã„;gisei ãŽã›ã„ã”;giseigo ãŽã›ã„;gisei ãŽã ;gida ãŽã›ã„ã›ã„ã©;giseiseido ã®ãŽã;nogiku ãã£ã‹;kikka ããã°ã‚“;kikuban ãã¡ã«ã¡;kichinichi ãã£ã½ã†;kippou ãµãã¤;fukitsu ãã¤ãˆã‚“;kitsuen ãã£ã™ã„ã›ã‚“;kissuisen ãã¤ã‚‚ã‚“;kitsumon ã¤ã¾ã‚Š;tsumari ã¤ã‚ã“ã‚€;tsumekomu ãゃã£ã‹;kyakka ãŸã„ãゃã;taikyaku ã•ã¦;sate ãゃã£ã‹;kyakka ãゃãŸã¤;kyatatsu ã‚ã—ã«;ashini ãŽã‚ƒãã•ã¤;gyakusatsu ãŽã‚ƒããŸã„;gyakutai ã–ã‚“ãŽã‚ƒã;zangyaku ãã‚…ã†ã ã„ã¦ã‚“;kyuudaiten ã¤ã„ãã‚…ã†;tsuikyuu ãŠã‚ˆã³ã”ã—;oyobigoshi ã•ãã‚…ã†;sakyuu ãã‚…ã†ã—ã‚“;kyuushin ãŠã‹ã¹;okabe ã‚ã†ãã‚…ã†;roukyuu ãµãã‚…ã†;fukyuu ãã¡ã°;kuchiba ãµã‚“ãã‚…ã†;funkyuu ãã‚…ã†ã ã‚“;kyuudan ãã‚…ã†ã‚ã„;kyuumei ãã‚…ã†ãょã;kyuukyoku ãã‚…ã†ãょã†;kyuukyou ãã‚…ã†ãã¤;kyuukutsu ãょã˜ã‚“;kyojin ãょã ã„;kyodai ãょã²;kyohi ãょãœã¤;kyozetsu ãょã²;kyohi ãょã—;kyoshi ã“ã‚“ãょ;konkyo ã—ょã†ã“;shouko よりã©ã“ã‚;yoridokoro ãょãŽ;kyogi ã“ãã†;kokuu ãょむã—ã‚…ãŽ;kyomushugi ãょり;kyori ãょã“ã¤;kyokotsu ãã£ãょãŽ;sokkyogi ãŽã‚‡ã—ゃ;gyosha ã”よã†;goyou ãŠã‚“ã¡ã‚…ã†;onchuu ãょã†ã‚ã;kyouaku ãょã†ã•ã;kyousaku ãã£ãょã†;kikkyou ãœã£ãょã†;zekkyou ã•ã‘ã³ã”ãˆ;sakebigoe ã•ã‘ã³ã ã™;sakebidasu ãょã†ã˜ã‚“;kyoujin ãょã†ã’ã‚“;kyougen ãã‚‹ã£ãŸ;kurutta ãょã†ã˜ã‚…ã—ゃ;kyoujusha ãょã†ã‚†ã†;kyouyuu ãょã†ã‚‰ã;kyouraku ã˜ã‚‡ã†ãょã†;joukyou ã˜ã£ãょã†;jikkyou ã„ã‚ã‚“ã‚„;iwan_ya ãょã†ã“ã;kyoukoku ã¡ãょã†;chikyou ã‹ã„ãょã†;kaikyou ãょã†ã’ã;kyougeki ã„ãŸã°ã•ã¿;itabasami ã¯ã•ã¿ã‚€ã—;hasamimushi ãょã†ãŽ;kyougi ã“ã†ãょã†;koukyou ã›ã¾ãã‚‹ã—ã„;semakurushii ãょã†ãµ;kyoufu ãょã†ãˆã„ã³ã‚‡ã†;kyoueibyou ãŠãれã„ã‚‹;osoreiru ãょã†ã˜ã‚…ã‚“;kyoujun ãょã†ã‘ã„;kyoukei ãょã†ã‘ã‚“;kyouken ãょã†ã¯ã;kyouhaku ãょã†ã„;kyoui ãŠã©ã‹ã—ã¦;odokashite ãょã†ã›ã„ã¦ã;kyouseiteki ããょã†;kikyou ãŸã‚ãªãŠã™;tamenaosu ã²ã³ãã‚ãŸã‚‹;hibikiwataru ã‚ããˆã„ãょã†;akueikyou ã“ã†ãょã†ãょã;koukyoukyoku ãょã†ã„;kyoui ãょã†ãŒã;kyougaku ãŠã©ã‚ãã¹ã;odorokubeki ãŽã‚‡ã†ã¦ã‚“;gyouten ã—ã‚“ã“ã†;shinkou ãŠãŠã›ã ã™;oosedasu ãŽã‚‡ã†ã¦ã‚“;gyouten ã¤ã†ãŽã‚‡ã†;tsuugyou ãŽã‚‡ã†ã›ã„;gyousei ãŽã‚‡ã†ã—;gyoushi ã“りã—ょã†;korishou ã“ã£ãŸ;kotta ãんりょã†;kinryou ãã‚“ã‚;kinme ãµãã‚“;fukin ã•ã„ãã‚“;saikin ãã‚“ã‚‹ã„;kinrui ã»ãã‚“ã—ゃ;hokinsha ã¦ãµã†ãã‚“;tefuukin ãã‚“ã›ã‚“;kinsen ã“ã¨ã¥ã‚;kotodume ãã‚“ã¡ã‚‡ã†;kinchou ãã‚“ãã‚…ã†;kinkyuu ãã‚“ã¿ã¤;kinmitsu ãã‚“ã’ã‚“;kingen ãã‚“ã‘ã„;kinkei ã¤ã¤ã—ã‚“ã§;tsutsushinde ãょã†ãã‚“;kyoukin ãã‚“ã©;kindo ãˆã‚Šãã³;erikubi ãŽã‚“ãˆã„;gin_ei ãŽã‚“ã¿;ginmi ãŽã‚“ゆã†ã—ã˜ã‚“;gin_yuushijin ã›ã‚“ãã—ゃ;senkusha ã‹ã‚Šã ã™;karidasu ã‹ã‘ãŠã¡;kakeochi ãã˜ã‚“;gujin ããšã‚‹;guzuru ãã“ã†;gukou ãã†ãœã‚“;guuzen ãã†ãžã†;guuzou ã¯ã„ãã†ã—ゃ;haiguusha ããã†;kiguu ãŸã„ãã†;taiguu ãµãã†;fuguu ã„ã¡ãã†;ichiguu ã™ã¿ã„ã—;sumiishi ã‹ãŸã™ã¿;katasumi ãã£ã·ã;kuppuku ãµãã¤;fukutsu ãã£ã›ã¤;kussetsu ã¯ã£ãã¤;hakkutsu ã»ã‚Šã ã™;horidasu ã•ã„ãã¤;saikutsu ãりã„ã¨;kuriito ãりã“ã™;kurikosu ãりã‹ãˆã™;kurikaesu ãã‚“ã—ょã†;kunshou ã—ã‚…ãã‚“;shukun ãã‚“ã„;kun_i ãã‚“ã“ã†;kunkou ãã‚“ã„ã;kun_iku ãã‚“ã·ã†;kunpuu ã—ょã‘ã„;shokei ã—ã‘ã„;shikei ã‘ã„ã˜;keiji ãã‚…ã†ã‘ã„;kyuukei ã¡ã‹ã‘ã„;chikakei ã¯ãã;haguki ã‘ã„ã‚„ã;keiyaku ã‘ã„ã;keiki ã‘ã„ã„ã‚“;keiin ã‘ã„よ;keiyo ã¡ãˆ;chie ã‚ãã¿ã¶ã‹ã„;megumibukai ã‘ã„ã¯ã¤;keihatsu ã‘ã„ã˜;keiji ã¯ã„ã‘ã„;haikei ã‘ã„ã˜ã°ã‚“;keijiban ãœã‚“ã‘ã„;zenkei ã‘ã„よã†;keiyou ã‘ã„ã“ã;keikoku ã›ã£ã‘ã„;sekkei ã‘ã„りゅã†;keiryuu ã‘ã„ã“ã†;keikou ã‘ã„ã›ã¤;keisetsu ã»ãŸã‚‹ãŒã‚Š;hotarugari ã‘ã„ã“ã†;keikou ã‘ã„ã¨ã†;keitou ã‘ã„ã—ゃã©;keishado ã‘ã„ãŸã„;keitai ã¦ã„ã‘ã„;teikei ã²ã£ã‘ã„;hikkei ã‘ã„ãžã;keizoku ã¾ã¾ã“;mamako ã¤ãŽãŸã—;tsugitashi ã‘ã„ã—ã‚…ã;keishuku ã‘ã„ã˜;keiji ã‘ã„ãŒ;keiga ãã‚…ã†ã‘ã„;kyuukei ã—ょã†ã‘ã„;shoukei ã„ã“ã„;ikoi ã‘ã„らん;keiran ã‘ã„ã—ゃ;keisha ã‘ã„ã‚ã„;keimei ã‹ã‚“ã’ã„ã‹ã„;kangeikai ã’ã„ã”ã†;geigou ã‚€ã‹ãˆã–ã‘;mukaezake ã’ã„ゆ;geiyu ã»ã’ã„;hogei ã–ã¨ã†ãã˜ã‚‰;zatoukujira ãã’ã;sogeki ã“ã†ã’ã;kougeki ã¯ã‚„ã†ã¡;hayauchi ã‹ã‚“ã’ã;kangeki ã’ã£ã‹;gekka ã¯ã’ã—ã•;hageshisa ã‘ã£ã—;kesshi ã‘ã£ã—ã‚…ã¤;kesshutsu ã‘ã£ã•ã;kessaku ã‘ã‚“ã—ょã†;kenshou ã²ã‘ã‚“;hiken ã‹ãŸãŒã;katagaki ã‘ã‚“ã‚„ã;ken_yaku ã›ã£ã‘ã‚“;sekken ãã‚“ã‘ã‚“;kinken ã‘ã‚“ã©ã†;kendou ã‘ã‚“ã¶;kenbu ãŸã‚“ã‘ã‚“;tanken ã„ã£ã‘ã‚“;ikken ã‘ã‚“ã¨ã†;kentou ã®ãã•ã;nokisaki ã›ã„ãã†ã‘ã‚“;seisouken ã‘ã‚“ãŒã„;kengai ãょã†ã•ã‚“ã‘ã‚“;kyousanken ã‘ã‚“ã˜ã¤;kenjitsu ã‘ã‚“ã”;kengo ã¡ã‚…ã†ã‘ã‚“;chuuken ã‘ã‚“ãŠ;ken_o ãã’ã‚“;kigen ã„ã‚„ã„ã‚„;iyaiya ã‘ã‚“ã˜ã‚‡ã†;kenjou ã“ã‚“ã ã¦;kondate ã‘ã‚“ã—ã‚“;kenshin ã¯ã‘ã‚“;haken ã“ã¥ã‹ã„;kodukai やりãªãŠã™;yarinaosu ã‘ã‚“ã˜ã‚ƒ;kenja ã‘ã‚“ã‚ã„;kenmei ã‹ã—ã“ã ã¦;kashikodate ã‘ã‚“ãã‚“;kenson ã‘ã‚“ãょ;kenkyo ã‘ã‚“ã˜ã‚‡ã†;kenjou ã‘ã‚“ã¡ã‚…ã†;kenchuu ãŠãŠã¾ã‚†;oomayu ã‹ã‚‰ã¾ã‚†;karamayu ã‘ã‚“ã¡ã‚‡;kencho ã‘んよã†;ken_you ã‘ã‚“ã³ãょã†;kenbikyou ã‘ã‚“ã‚ã„;kenmei ã‘ã­ã‚“;kenen ã„ã®ã¡ãŒã‘;inochigake ã’ã‚“ãã†;gensou ã’ã‚“ãžã†;genzou ã’ã‚“ã˜ã‚…ã¤;genjutsu ã’ã‚“ã¿ã‚‡ã†;genmyou ã’ã‚“ã‹ã‚“;genkan ãã‚ã†ã¨;kurouto ã›ã„ã’ã‚“;seigen ゆã¿ã¥ã‚‹;yumiduru ã’ã‚“ãŒã£ã;gengakki ã“ã˜ã„ã‚“;kojiin ã“ã©ã;kodoku ã“りã¤;koritsu ã“ã‘ã„;kokei ã“ã˜ã‚‡ã†;kojou ã“ã¨ã†;kotou ã“ã—;koshi ãµã‚†ãŒã‚Œ;fuyugare ã‹ã‚Œã¯;kareha ã“よã†;koyou ã‚„ã¨ã„ã«ã‚“;yatoinin ã‹ã„ã“;kaiko ã“ã ã„;kodai ã“ã˜;koji ã»ã“りãŒãŠ;hokorigao ã“ã©ã†;kodou ãŸã„ã“;taiko ã“ã¤ã¥ã¿;kotsudumi ã“りょ;koryo ã‹ã„ã“;kaiko ã“ã‚‚ã‚“;komon ãã†ã”;sougo ã”ã˜ã‚‡;gojo ãŸãŒã„ã¡ãŒã„;tagaichigai ã”ãµã;gofuku ãれãれも;kureguremo ãれã¦;kurete ã”らã;goraku ã‹ã‚“ã”;kango ã”らãã²ã‚“;gorakuhin ã”ã›ã„;gosei ã‹ãã”;kakugo ã•ã¨ã‚Š;satori ã”ã„ã—;goishi ã”ã°ã‚“;goban ã”ã†ã¡;gouchi ã³ã“ã†;bikou ãã“ã†;kikou ã“ã†ã—;koushi ãŽã“ã†;gikou ã“ã†ã’ã‚“;kougen ã›ã„ã“ã†;seikou ã“ã†ã¡ã‚…ã†;kouchuu ã“ã†ã—ã‚…;koushu ã‹ã‚“ã ã‹ã„;kandakai ã„りãˆ;irie ã“ã†ã“;kouko ãˆã©;edo ãŸã‚“ã“ã†;tankou ã“ã†ãµ;koufu ãŸã„ã“ã†;taikou ã“ã†ãŽ;kougi ã“ã†ãã†;kousou ã“ã†ã’ãã—ゃ;kougekisha ã›ã‚“ã“ã†;senkou ã›ã‚ã„ã‚‹;semeiru ã“ã†ã—ã‚“;koushin ã„ã¾ã•ら;imasara よãµã‘;yofuke ã“ã†ãã;kousoku ã“ã†ã„ã‚“;kouin ã‹ã‹ã‚らãš;kakawarazu ã—ã‚…ã“ã†;shukou ã“ã†ã¦ã„;koutei ã“ã†ã‘ã„;koukei ã“ã†ã˜ã‚‡ã†;koujou ã“ã†ãã‚…ã†;koukyuu ã“ã†ã‚Œã„;kourei ã“ã†ãšã„;kouzui ã“ã†ã›ããã†;kousekisou ã“ã†ã ã„;koudai ã“ã†ã¦ã‚“;kouten ã‚れã¡;arechi ã‚らãªã¿;aranami ã“ã†ãŒã„;kougai ãã‚“ã“ã†;kinkou ã“ã†ã‚„;kouya ã“ã†ã™ã„;kousui ã“ã†ã;kouki ã„ã‚ã‹;iroka ã“ã†ã—ゃã;koushaku ãŠãŠãŸã“ã†;ootakou ãŠã†ã“ã†;oukou ã“ã†ã‘ã‚“;kouken ã­ã‚“ã;nengu ã¿ã¤ãŽã‚‚ã®;mitsugimono ã²ã‹ãˆã˜ã‚‡;hikaejo ã“ã†ã;kouso ã²ã‹ãˆãŒã;hikaegaki ãょã†ã“ã†;kyoukou ãŠãŠã‚ã‚ã¦;ooawate ã‚ã‚ã¦ã‚‚ã®;awatemono ã“ã†ã‹;kouka ã“ã†ã‹;kouka ã“ã†ã™ã„;kousui ã“ã†ã—ã‚…ã ã„;koushudai ã—ã‚ã“ã‚ã™;shimekorosu ã—ã¼ã‚Šã ã™;shiboridasu ã“ã†ã‚‚ã;koumoku ã˜ã“ã†;jikou ã˜ã‚‡ã†ã“ã†;joukou ã’ã™ã„ã“ã†;gesuikou ã¿ãžãり;mizokiri ã©ã¶ã­ãšã¿;dobunezumi よã†ã“ã†;youkou ãŸã„ã“ã†;taikou ã¤ãªã³ã;tsunabiki ã“ã†ã¼;koubo ã“ã†ã;kouso ã¯ã£ã“ã†;hakkou ã’ã‚“ã“ã†;genkou ã¨ã†ã“ã†;toukou ãã†ã“ã†;soukou ãã‚“ã“ã†;kinkou ã¸ã„ã“ã†;heikou ã“ã†ã;kouki ã“ã†ã«ã‚…ã†;kounyuu ã“ã†ã°ã„;koubai ã“ã†ã©ã;koudoku ã”ã†ã‚‚ã‚“;goumon ã”ã†ã›ã;gouseki ã”ã†ã‚‚ã‚“ã ã„;goumondai ã”ã†ã‘ã‚“;gouken ã”ã†ã‚‚ã†;goumou ã”ã†ã¡ã‚‡ã;gouchoku ã”ã†ã†;gouu ã”ã†ãã†;gousou ã”ã†ã—ã‚…ã†;goushuu ã“ããµã;kokufuku ã“ã£ã;kokki ã“ãã‚ã„;kokumei ã“ãã—;kokushi ã–ã‚“ã“ã;zankoku ã“ãã—ょ;kokusho ã”ãã‚‚ã‚“;gokumon ã˜ã”ã;jigoku ãŽã”ã;gigoku ã¿ã“ã¿;mikomi ã²ã¨ã”ã¿;hitogomi ã“ã‚ã‚‚ã®;komemono ã“ã‚“ã¡ã‚…ã†;konchuu ã“ã‚“ã¶;konbu ã“ã†ã“ã‚“;koukon ã‹ã„ã“ã‚“;kaikon ã„ã“ã‚“;ikon ã†ã‚‰ã¿ã”ã¨;uramigoto ã“ã‚“ã‚„ã;kon_yaku ã‘ã£ã“ã‚“ã—ã;kekkonshiki ã—ã‚“ã“ã‚“ãµã†ãµ;shinkonfuufu ã“ã‚“ã„ã‚;kon_iro ã“ã‚“ã‚„;kon_ya ã®ã†ã“ã‚“;noukon れã„ã“ã‚“;reikon ã—ょã†ã“ã‚“;shoukon ãŸã¾ã’ã‚‹;tamageru ã‹ã„ã“ã‚“;kaikon ã“ã‚“ã§ã‚“;konden ã¿ã‹ã„ã“ã‚“ã¡;mikaikonchi ã“ã‚“ã ã‚“;kondan ã“ã‚“ãŒã‚“;kongan ã“ã‚“ã„;kon_i ã»ã•;hosa ã•ã‹ã‚“;sakan ãŸã„ã•;taisa ã—ã•;shisa ãょã†ã•;kyousa ãょã†ã•ã—ゃ;kyousasha ã•ãŽã—;sagishi ã•ã—ã‚…;sashu ã•ã—ょã†;sashou ã•ã“ã;sakoku れんã•;rensa ãã•りã©ã‚;kusaridome ã•ã„ã²ã‚‡ã†ã›ã‚“;saihyousen ã•ã„ã¸ã‚“;saihen ãã ã‘ãŸ;kudaketa ã—ã‚…ã•ã„ã—ゃ;shusaisha ã•ã„りょã†;sairyou ã•ã„ã—ょã†;saishou ã•ã„ã°ã„;saibai ã¼ã‚“ã•ã„;bonsai ã›ã‚“ã–ã„;senzai ã—ãã•ã„;shikisai ãŸã‚“ã•ã„;tansai ã•ã„ã†ã‚“;saiun ã•ã„ã‹ã„;saikai ã—ょã•ã„;shosai ã‘ã£ã•ã„;kessai ã•ã„ã‚€;saimu ã•ã„ã‘ã‚“;saiken ã•ã„ã‘ã‚“ã—ゃ;saikensha ã—ã‚…ã•ã„;shusai ã•ã„ãã;saisoku ã•ã„ã¿ã‚“;saimin ã«ã•ã„;nisai ã•ã„ã²;saihi ã›ã„ã¼;seibo ã›ãã•ã„;sekisai ã‘ã„ã•ã„;keisai ãã•ã„;kisai ã‚„ãã–ã„ã—;yakuzaishi ã‚„ãã–ã„;yakuzai ã‹ã‚“ã’ã–ã„;kangezai ãªãŒã•ã;nagasaki ã—ã¾ã–ã;shimazaki ãã;kiku ã•ãã˜ã‚‡;sakujo ã•ãã’ã‚“;sakugen ã‘ãšã‚Šã¨ã‚‹;kezuritoru ã•ãã„ã‚“;sakuin ã—ã•ã;shisaku ã¦ã£ã•ã;tessaku ã•ãã•ã‚“;sakusan ã™ã®ã‚‚ã®;sunomono ã™ã¥ã‘;suduke ã•ãã—ã‚…;sakushu ã‚ã£ã•ã;assaku ã—ã¼ã‚Šã¨ã‚‹;shiboritoru ã•ãã”;sakugo ã•ã£ã‹ã;sakkaku ã¨ã†ã•ã;tousaku ã—ãã–ã;shikizaki ãŠãã–ã;osozaki ã•ãã®ã“ã‚‹;sakinokoru ã•ã¤ã„れ;satsuire ãªãµã ;nafuda ã›ã‚“ãˆã‚“ã•ã¤;sen_ensatsu ã•ã¤ãˆã„;satsuei ã¨ã‚ŠãªãŠã™;torinaosu ã¤ã¾ã¿ãã„;tsumamigui ã•ã£ã‹ã—ょã†;sakkashou ã™ã‚Œã¡ãŒã†;surechigau ã™ã‚Šã“ã‚€;surikomu ã¯ã„ã–ら;haizara ãŠãŠã–ら;oozara ã•らã‚らã„;saraarai ã•ã‚“ã°ã—;sanbashi ã•ã˜ã;sajiki ã•ã‚“ã©ã†;sandou ã•ã‚“ã’ã;sangeki ã–ã‚“ã•ã¤;zansatsu ã²ã•ã‚“;hisan ã•ã‚“ã‹;sanka ã‚ã¾ãŒã•;amagasa ã²ãŒã•;higasa ã–ã‚“ã¦ã„ã¦ã;zanteiteki ã–ã‚“ã˜;zanji ã—ã°ã‚‰ãã—ã¦;shibarakushite よã†ã—;youshi ã—ã‚…ã—;shushi ã†ã¾ã†ã¾ã¨;umaumato ã†ã‹ãŒã„ã”ã¨;ukagaigoto ã—ã“ã†;shikou ã†ã‹ãŒã„ã•ãã‚‹;ukagaisaguru ã‚ã„ã—;meishi ã•ã—ã¿;sashimi ã¨ã’ã¬ã;togenuki ã—ãŸã„;shitai ãˆã ã¥ã®;edaduno ã‹ã‚Œãˆã ;kareeda ã—ãµã;shifuku ãµãã—;fukushi ãµãã—ã“ã£ã‹;fukushikokka ã—ãŸã„;shitai ã‹ã—;kashi ã›ã‚“ãŸãã—;sentakushi ã—ã›ã¤;shisetsu ã˜ã£ã—;jisshi ã›ã‚„ã;seyaku ã—ã¼ã†;shibou ã‚ã¶ã‚‰ã‘;aburake ã‚„ã«ã‚;yanime ã—ãˆã‚“;shien むらã•ãã„ã‚;murasakiiro ã—ãŒã„ã›ã‚“;shigaisen ã—ã—;shishi ã“ã†ã—;koushi ã“ã†ã—;koushi ã—ã„ã;shiiku ã‹ã„ã¬ã—;kainushi ã‹ã„ã„ã¬;kaiinu ã—ゆã†;shiyuu ã‚ã†ã—;meushi ã‚ã„ã¬;meinu ã—ã‹;shika ãŠã‚“ã—;onshi ãŸã¾ã‚‚ã®;tamamono ã—ã˜ã‚…ã‚“;shijun ã—ã‚‚ã‚“;shimon ã—ã‚‚ã‚“ãã‹ã‚“;shimonkikan ã˜ã˜ã‚…ã†;jijuu ã˜ã˜ã‚‡;jijo ã˜ãã†;jisou ã˜ã‚ˆã†;jiyou ã˜ã¿;jimi ã˜ã†;jiu ã˜ã²;jihi ã˜ãœã‚“;jizen ã˜ã‚ã„;jiai ãŽã‚‡ã˜;gyoji ã“ãã˜;kokuji ã„ã‚“ã˜;inji ã—ゃã˜ã;shajiku ã¡ã˜ã;chijiku ã˜ãã‚‚ã®;jikumono ã—ã£ã‹ã‚“;shikkan ã—ã£ãã†;shissou ã¨ã£ãã«;tokkuni ã—ã£ã´ã¤;shippitsu ã—ã‚…ã†ã­ã‚“;shuunen ã¨ã‚Šãªã™;torinasu ã—ã¤ã©;shitsudo ã—ã£ã¡;shicchi ã—ã‚ã£ã½ã„;shimeppoi ã—ã£ã;shikki ã—ã£ã“ã;shikkoku ã†ã‚‹ã—ã¬ã‚Š;urushinuri ã—ã°ãµ;shibafu ã—ã°ã„;shibai ã—ã°ã‹ã‚Šã;shibakariki よã†ã—ゃ;yousha ã—ゃã‚ã‚“;shamen ãŠã‚“ã—ゃ;onsha ã—ゃã‚ã‚“;shamen ã—ゃã»ã†ã‘ã„;shahoukei ãªãªã‚ã¤ãŽ;nanametsugi ã—ゃãµã¤;shafutsu ãªã¾ã«ãˆ;namanie ã«ãŸã¦ã‚‹;nitateru ã—ゃã«ã‚€ã«;shanimuni ã—ゃã“ã†ã¾ã;shakoumaku ã—ゃã ã‚“ã;shadanki ã˜ã‚ƒã‚ã;jaaku ã‚€ã˜ã‚ƒã;mujaki ã‹ãœ;kaze ã˜ã‚ƒã‹ã‚“;jakan ã ã“ã†;dakou ã¸ã³ã‹ã‚;hebikawa ã„ã£ã—ゃã;isshaku ã•ã‚“ã—ゃã;sanshaku ã˜ã£ã—ゃã;jisshaku ã—ゃããµ;shakufu ã°ã‚“ã—ゃã;banshaku ã—ゃãりょã†;shakuryou ã—ゃãã„;shakui ã˜ã‚…ã—ゃã;jushaku ã ã‚“ã—ゃã;danshaku ã›ã„ã˜ã‚ƒã;seijaku ã›ãã°ã;sekibaku ã•ã³ã—ã•;sabishisa ã—ã‚…ã„ã‚;shuiro ã—ã‚…ã«ã;shuniku ã—ã‚…ã²ã¤;shuhitsu ã—ゅりょã†;shuryou ã‹ã‚Šã„ã¬;kariinu ã‹ã‚Šã“ã¿;karikomi ã¨ãã—ã‚…;tokushu ã—ã‚…ã—ょã†;shushou ã“ã¨ã•ら;kotosara ã—ã‚…ãŽã‚‡ã;shugyoku ã—ã‚“ã˜ã‚…;shinju ã˜ã‚…ãš;juzu ã—ã‚…ã¿;shumi ã—ã‚…ã„;shui ã—ã‚…ã“ã†;shukou ã˜ã‚…ã¿ã‚‡ã†;jumyou ã¡ã‚‡ã†ã˜ã‚…;chouju ã¹ã„ã˜ã‚…;beiju ã˜ã‚…ãょã†;jukyou ã˜ã‚…ã—ゃ;jusha ã˜ã‚…ãŒã;jugaku ã—ã‚…ã†ã˜ã‚“;shuujin ã—ã‚…ã†ãˆã;shuueki ã—ã‘ã„ã—ã‚…ã†;shikeishuu ã—ã‚…ã†ã“ã†;shuukou ãµãªã‚ãã³;funaasobi ã“ã¶ã­;kobune ã—ã‚…ã†ã•ã„;shuusai ã—ã‚…ã†ã„ã¤;shuuitsu ã—ã‚…ã†ã³;shuubi ã—ã‚…ã†ã;shuuki ãžãã—ã‚…ã†;zokushuu ãã•ã¿;kusami ã—ã‚…ã†ã—ょã†;shuushou ã‚ã„ã—ã‚…ã†;aishuu ã†ã‚Œã„ãŒãŠ;ureigao ã»ã†ã—ã‚…ã†;houshuu ãŠã†ã—ã‚…ã†;oushuu ã‘ã‚“ã—ã‚…ã†;kenshuu ã—ã‚…ã†ã‚ã;shuuaku ã—ã‚…ã†ã¶ã‚“;shuubun ã¿ã«ãã•;minikusa ã—ã‚…ã†ã‚‰ã„;shuurai ãã†ã—ã‚…ã†;kuushuu ã›ã—ã‚…ã†;seshuu ã‹ã˜ã‚…ã†;kajuu ã¼ãã˜ã‚…ã†;bokujuu ã¿ãã—ã‚‹;misoshiru ã˜ã‚…ã†ã¶ã‚“;juubun ã˜ã‚…ã†ã˜ã¤;juujitsu ã‚ã¦ãŒã†;ategau ã˜ã‚…ã†ã©ã†;juudou ã«ã‚…ã†ã˜ã‚ƒã;nyuujaku ã‚„ã‚らã‹ã‚‚ã®;yawarakamono ã˜ã‚…ã†ãŸã„;juutai ã—ã¶ã¿;shibumi ã—ã¶ã—ã¶;shibushibu ã—ょã†ã˜ã‚…ã†;shoujuu ã˜ã‚…ã†ã‘ã‚“;juuken ã˜ã‚…ã†ã‹;juuka ã˜ã‚…ã†ã„;juui ã˜ã‚…ã†ã¦ã;juuteki ã¡ã‚‡ã†ã˜ã‚…ã†;choujuu ãŠã˜;oji ãŠã°;oba ã¯ãã—ã‚…ã;hakushuku ã¦ã„ã—ã‚…ã;teishuku ã—ã‚…ãã˜ã‚‡;shukujo ã—ã—ã‚…ã;shishuku ã—ã‚…ããœã‚“;shukuzen ã˜ã—ã‚…ã;jishuku ã’ã‚“ã—ã‚…ã;genshuku ã˜ã‚…ãã›ã„;jukusei ã˜ã‚…ããã;jukusoku ã—ã˜ã‚…ã;shijuku ã—ã‚…ã‚“ã•ã„;shunsai ã—ã‚…ã‚“ã‘ã¤;shunketsu ã—ã‚…ã‚“ã©ã†;shundou ã„ã£ã—ã‚…ã‚“;isshun ã—ã‚…ã‚“ã‹ã‚“;shunkan ã¾ãŸãŸãã¾ã«;matatakumani ã˜ã‚‡ã†ã˜ã‚…ã‚“;joujun ã¡ã‚…ã†ã˜ã‚…ã‚“;chuujun ã’ã˜ã‚…ã‚“;gejun ã˜ã‚…ã‚“ã‹ã„;junkai ã˜ã‚…ã‚“ã•;junsa ã²ã¨ã‚ãり;hitomeguri ã‚€ã˜ã‚…ã‚“;mujun ã†ã—ã‚ã ã¦;ushirodate ãŸã¦ã¤ã;tatetsuku ã˜ã‚…ã‚“ã„;jun_i ã²ã˜ã‚…ã‚“;hijun ã˜ã‚…ã‚“ãょ;junkyo ã˜ã‚…ã‚“ã—;junshi ã˜ã‚…ã‚“ãょã†ã—ゃ;junkyousha ã˜ã‚…ã‚“ã—ょã;junshoku ã„ã‚“ã˜ã‚…ã‚“;injun ã˜ã‚…ã‚“ã‹ã‚“;junkan ã‚ãã˜ã‚…ã‚“ã‹ã‚“;akujunkan ã˜ã‚…ã‚“ã‹ã¤;junkatsu りã˜ã‚…ã‚“;rijun ã˜ã‚…ã‚“ãŸã;juntaku ã˜ã‚…ã‚“ã—ã‚…;junshu ã˜ã‚…ã‚“ã½ã†;junpou ã˜ã‚…ã‚“ã½ã†;junpou ã—ょã¿ã‚“;shomin ã—ょむ;shomu ã—ょã—;shoshi ãŸã‚“ã—ょ;tansho ã¯ãªãŠ;hanao ã˜ã‚‡ã˜ã‚‡ã†;jojou ã«ã‚‡ã˜ã¤;nyojitsu ã˜ã‚‡ã˜ã‚…ã¤;jojutsu ã˜ã‚‡ã˜ã‚‡ã†ã¦ã;jojouteki ã˜ã‚‡ãã‚“;jokun ã˜ã‚‡ã“ã†;jokou ã˜ã‚‡ã˜ã‚‡ã«;jojoni ã˜ã‚‡ã»;joho ã¾ã™ã‚;masume ã«ã—ょã†;nishou ã„ã£ã—ょã†ã³ã‚“;isshoubin ã—ょã†ã—ã‚…ã†;shoushuu ã—ょã†ã‹ã‚“;shoukan ã‚ã—ã¤ã‹ã„;meshitsukai ã—ã—ょã†;shishou ãょã—ょã†;kyoshou ã„ã—ょã†;ishou ã³ã‚‡ã†ã—ょã†;byoushou ゆã‹ã¯ã‚Š;yukahari ã¨ã“ã®ã¾;tokonoma ã—ょã†ã»ã‚“;shouhon ã—ã—ょã†;shishou ã—ょã†ã‚„ã;shouyaku ã—ょã†ãžã†;shouzou ãµã—ょã†;fushou ã‚ã‚„ã‹ã‚Šã‚‚ã®;ayakarimono ã—ょã†ãã†;shousou ã“ã†ã—ょã†;koushou ãªãŠãªãŠ;naonao ã—ょã†ã—ã‚“;shoushin ã˜ã‚‡ã†ã—ょã†;joushou ã—ょã†ã“ã†ã;shoukouki ã¾ã¤ã°;matsuba ã¾ã¤ã°ã‚‰;matsubara ã—ょã†ã¡ãã°ã„;shouchikubai ã—ょã†ã;shouki ã—ょã†ãŸã;shoutaku ã¬ã¾ã¡;numachi ã¦ã£ã—ょã†;tesshou よã„ã¥ã;yoiduki よã„ã”ã—;yoigoshi ã—ょã†ã˜ã‚‡ã†;shoujou ãˆã‚“ã—ょã†;enshou ãょã†ãµã—ょã†;kyoufushou ã¯ã£ã—ょã†ã¡;hasshouchi ãã£ã—ょã†;kisshou ãµã—ょã†ã˜;fushouji ã“ã†ã—ょã†;koushou ã‹ã‚“ã—ょã†;kanshou ã—ょã†ãŒã„;shougai ã—ょã†ã‹ã„;shoukai ã—ょã†ã‹ã„ã—ゃ;shoukaisha ã—ょã†ã‹ã„ã˜ã‚‡ã†;shoukaijou ãã—ょã†;soshou ãã—ょã†ã«ã‚“;soshounin ãã—ょã†ã²ã‚ˆã†;soshouhiyou ã—ょã†ã¡ã‚…ã†;shouchuu ã—ゃã—ょã†;shashou ã—ょãã—ょã†;shokushou ã™ã„ã—ょã†;suishou ã—ょã†ã‹;shouka ã‘ã£ã—ょã†;kesshou ã—ょã†ã©;shoudo ã—ょã†ã—ã‚“;shoushin ãã‚ã“ã’;kurokoge ã—ょã†ã•ã‚“;shousan ã—ょã†ã‚„ã;shouyaku ãŒã‚‰ã™;garasu ã‘ã—ょã†;keshou ã‘ã—ょã†ã²ã‚“;keshouhin ã‘ã—ょã†ã—ã¤;keshoushitsu ã—ょã†ã—ょ;shousho ã—ょã†ã‚Œã„;shourei ãŸã„ã—ょã†;taishou ã—ょã†ã‚Œã„;shourei ã™ã„ã—ょã†;suishou ã—ょã†ãŒããã‚“;shougakukin ã—ょã†ã•ã„;shousai ã¿ã—ょã†;mishou ãã‚ã—ã;kuwashiku ã²ã‚‡ã†ã—ょã†;hyoushou ã‘ã‚“ã—ょã†;kenshou ã—ょã†ã¨ã;shoutoku ã—ょã†ã¨ã¤;shoutotsu ã—ょã†ã©ã†;shoudou ã›ã£ã—ょã†;sesshou ã—ょã†ãã‚“;shoukin ã—ょã†ãゃã;shoukyaku ã¹ã‚“ã—ょã†;benshou ãŒã‚“ã—ょã†;ganshou ã‚ã‚“ã—ょã†;anshou ã•ã‚“ã”ã—ょã†;sangoshou ã‘ã„ã—ょã†;keishou ã¤ã‚ŠãŒã­ã©ã†;tsuriganedou ã—ょã†ã«ã‚…ã†ã›ã;shounyuuseki ã›ãŸã‘;setake ã»ã†ã˜ã‚‡ã†;houjou ã˜ã‚‡ã†ã ã‚“;joudan ã˜ã‚‡ã†ã¡ã‚‡ã†;jouchou ã˜ã‚‡ã†ã”;jougo ã˜ã‚‡ã†ã‹;jouka ãµã˜ã‚‡ã†;fujou ã˜ã‚‡ã†ã™ã„;jousui ã˜ã‚‡ã†ã‚ˆ;jouyo よã˜ã‚‡ã†;yojou ã‹ã˜ã‚‡ã†;kajou ã˜ã‚‡ã†ã;jouku ã«ã˜ã‚‡ã†;nijou ãŸãŸã¿ã“ã‚€;tatamikomu ãŠããªã‚;okinawa ãªã‚ã°ã‚Š;nawabari ã˜ã˜ã‚‡ã†ã˜ã°ã;jijoujibaku ã©ã˜ã‚‡ã†;dojou ã˜ã‚‡ã†ã©;joudo ã¦ã‚“ã˜ã‚‡ã†;tenjou れã„ã˜ã‚‡ã†;reijou ã‚ã„ã˜ã‚‡ã†;aijou ã˜ã‚‡ã†ã¾ãˆ;joumae ã¦ã˜ã‚‡ã†;tejou ã˜ã‚‡ã†ã–ã„;jouzai ã˜ã‚‡ã†ã»;jouho ã˜ã‚‡ã†ã¨;jouto ãŠã‚„ゆãšã‚Š;oyayuzuri ã˜ã‚‡ã†ãžã†;jouzou ã˜ã‚‡ã†ã›ã„;jousei ã‹ã‚‚ã—ã ã™;kamoshidasu ã›ã„ã—ょã;seishoku りã—ょã;rishoku ãµãˆã ã‹;fuedaka ãã†ã—ょã;soushoku ãã³ã‹ã–り;kubikazari ã‹ã–りもã®;kazarimono ã—ょãã—ã‚…;shokushu ã›ã£ã—ょã;sesshoku ãµã‚Œã‚ã†;fureau ã„ã—ょã;ishoku ã—ょãã¼ã†;shokubou ã—ょããŸã;shokutaku ã¶ã˜ã‚‡ã;bujoku ãã¤ã˜ã‚‡ã;kutsujoku ã›ã¤ã˜ã‚‡ã;setsujoku ã—ã‚“ã—ã‚…ã;shinshuku ã¤ã„ã—ã‚“;tsuishin ã›ã®ã³;senobi ã—ã‚“ã;shinku ã‹ã‚‰ã¿;karami ã‹ã‚ã†ã˜ã¦;karoujite ã—ã‚“ã«ã‚…ã†;shinnyuu ã—ã‚“ãŒã„;shingai ã—んりゃã;shinryaku ã—ã‚“ã—ã‚“;shinshin ã¤ãªã¿;tsunami ã¤ã¤ã†ã‚‰ã†ã‚‰;tsutsuuraura ã—ã‚“ãŠã‚“;shin_on ã“ã†ã—ã‚“;koushin ã“ã†ã—ã‚“;koushin ã«ã‚“ã—ã‚“;ninshin ã«ã‚“ã—ã‚“ã‹ã®ã†;ninshinkanou ã«ã‚“ã—ã‚“ã‘ã‚“ã•;ninshinkensa ã—ã‚“ã©ã†;shindou ãµã‚Šãã‚‹;furikiru ã«ã­ã‚“ã¶ã‚Š;ninenburi ã—ã‚“ã—ょã;shinshoku ã—ã‚“ã™ã„;shinsui ã¿ãšã³ãŸã—;mizubitashi ã—ã‚“ã—;shinshi ã—ã‚“ã—ょã†;shinshou ã—ã‚“ã—ã‚ã;shinshiroku ã—ã‚“ã ã‚“;shindan ã—ã‚“ã•ã¤;shinsatsu ãŠã†ã—ã‚“;oushin ã—ã‚“ã—ã¤;shinshitsu ã­ã„ã‚‹;neiru ã­ã‹ã—ã‚‚ã®;nekashimono ã—ã‚“ã¡ã‚‡ã†;shinchou ãã‚“ã—ã‚“;kinshin ã¤ã¤ã—ã¿ã¶ã‹ã„;tsutsushimibukai ã—ã‚“ãŽ;shingi ãµã—ã‚“;fushin ã—ã‚“ã±ã‚“;shinpan ã˜ã—ã‚“;jishin ã¿ã¶ã‚‹ã„;miburui ãµã‚‹ãˆã”ãˆ;furuegoe ã—ã‚“ãŸã‚“;shintan ãŸããŽã“ã‚„;takigikoya ã¾ãã‚り;makiwari ã¯ãã˜ã‚“;hakujin ã¯ã‚‚ã®;hamono りょã†ã°;ryouba ã˜ã‚“りょã;jinryoku ã˜ã‚“ã¿ã‚‰ã„;jinmirai ã“ã“ã‚ã¥ãã—;kokorodukushi ã˜ã‚“ãã;jinsoku ã˜ã‚“らã„;jinrai ãµã‚“ã˜ã‚“;funjin ã˜ã‚“ã ã„;jindai ã˜ã‚“ã‚ã;jinroku ã“ã†ã˜ã‚“;koujin ã˜ã‚“ã¨ã†;jintou ã˜ã‚“ã¡;jinchi ã˜ã‚“ã¤ã†;jintsuu ã˜ã‚“ã‚‚ã‚“;jinmon ã˜ã‚“ã˜ã‚‡ã†;jinjou ãŸãšã­ã ã™;tazunedasu ã“ã™ã„;kosui ãµã¶ã;fubuki ãµããŸãŠã™;fukitaosu ã™ã„ã˜;suiji ã‚ã—ãŸã;meshitaki ã˜ã™ã„;jisui ã¨ã†ã™ã„;tousui ã’ã‚“ã™ã„;gensui ã—ょã†ã™ã„;shousui ã™ã„ã³;suibi ã„ãã”ã¨;ikigoto ã™ã„ã˜ã‚“;suijin ã™ã„ã˜ã‚ƒã;suijaku ã‚ã†ã™ã„;rousui ã›ã„ã™ã„;seisui ã¾ã™ã„;masui よã£ã±ã‚‰ã„;yopparai ãµãªã‚ˆã„;funayoi ã™ã„ã“ã†;suikou ã¿ã™ã„;misui ã—ã¨ã’ã‚‹;shitogeru ã™ã„ã¿ã‚“;suimin ã˜ã‚…ãã™ã„;jukusui ã”ã™ã„;gosui ã™ã„ã˜ã‚‡ã†;suijou ã„ãªã»;inaho ã»ã•ã;hosaki ã¼ã†ã™ã„;bousui ã©ãã›ã‚“;dokusen ã†ã‚‰ãªã„ã—ゃ;uranaisha ã—ã‚ãŸ;shimeta ã›ã‚“ã™;sensu ã›ã‚“ã·ã†ã;senpuuki ã›ã‚“ã‘ã„;senkei ã›ã‚“ã¬ã;sennuki ãã‚…ã†ã™ã„ã›ã‚“;kyuusuisen ã—ょã†ã‹ã›ã‚“;shoukasen ã›ã‚“ã‹ã„;senkai ã›ã‚“ã°ã‚“;senban ã—ã‚…ã†ã›ã‚“;shuusen ã˜ã£ã›ã‚“;jissen ã˜ã£ã›ã‚“ã¦ã;jissenteki ã˜ã£ã›ã‚“ã—ã‚…ãŽ;jissenshugi ã›ã‚“ã¦ã¤;sentetsu ã›ã‚“ã“ã†;senkou よã†ã›ã‚“;yousen ã›ã‚“ã–ã„;senzai ã›ã‚“ã™ã„;sensui ã‚‚ãりã“ã‚€;mogurikomu ã›ã‚“ãˆã‚“;sen_en ã¸ã‚“ã›ã‚“;hensen ã›ã‚“ã’;senge ã™ã„ã›ã‚“;suisen ã›ã‚“ã“ã¤;senkotsu ã˜ã›ã‚“;jisen ã›ã‚“ã„;sen_i ã›ã‚“ã•ã„;sensai ã›ã‚“ã‚‚ã†;senmou ã›ã‚“ãŽã‚‡;sengyo ã›ã‚“ã‚ã„;senmei ã¡ã‚‡ã†ã›ã‚“;chousen ã–ãœã‚“;zazen ãœã‚“ã—ã‚…ã†;zenshuu ãœã‚“ã§ã‚‰;zendera デパート;depaato ã»ã£ã‹ã„ã©ã†;hokkaidou ã»ã‚“ã—ã‚…ã†;honshuu ã—ã“ã;shikoku インド;indo アメリカ;amerika ãれん;soren ãらã„;kurai ãŸã„ã¸ã‚“;taihen ã¾ã‚“ã„ã‚“;man_in ã‚‚ã†;mou ãã®ã†;kinou ã‚ã•;asa ã²ã‚‹;hiru よる;yoru ã‘ã•;kesa ã•ãã‚„;sakuya ã„ã£ã—ょã«;isshoni ãœã‚“ãŸã„ã§;zentaide ãœã‚“ãŸã„ã§;zentaide ã¸ã„ã»ã†ã‚­ãƒ­ãƒ¡ãƒ¼ãƒˆãƒ«;heihoukiromeetoru ã‹ã„;kai キロ;kiro ãŠã‚Šã‚‹;oriru ã­ã‚‹;neru ã§ã‚‹;deru ã†ã¾ã‚Œã‚‹;umareru ã‹ã†;kau ã¯ã„ã‚‹;hairu ã‚ã‚ãŒãµã‚‹;amegafuru ゆããŒãµã‚‹;yukigafuru ã•ã;saku ãµã‚ã«ã¯ã„ã‚‹;furonihairu ã‘ã£ã“ã‚“ã™ã‚‹;kekkonsuru ã¦ã‚‰;tera ã¡ã‚ƒã¿ã›;chamise ã‚„ã¾ã¿ã¡;yamamichi ãら;sora ã¿ã©ã‚Š;midori ã¡ã‚‡ã†ã˜ã‚…ã†;choujuu ãŽãŒ;giga ã¯ã„ã;haiku ã‚ã—;ashi ã¯ãªã—;hanashi ã—ã‘ã‚“;shiken ã¦ã¤ã¥ã;tetsuduki ã«ã‚;niwa ã³ã‚‡ã†ã;byouki ã˜ã‚…ãŽã‚‡ã†;jugyou ã‘ã‚“ã¶ã¤;kenbutsu ãˆã¯ãŒã;ehagaki ã‚ã„ã—ょ;meisho ã ã„ã¶ã¤;daibutsu ãŸã„ã—ゃ;taisha ã˜ã‚“ã˜ã‚ƒ;jinja ã—ã‹;shika ã“ã˜ã‹;kojika ãŽã‚‡ã†ã˜;gyouji ã‹ã¦ã„;katei ã—ょã†ãŒã¤;shougatsu ã‹ã©ã¾ã¤;kadomatsu ã—ã‚ãªã‚;shimenawa ã‚‚ã¡;mochi ã›ã¤ã¶ã‚“;setsubun ã¾ã‚;mame ãŠã«;oni ãµãã®ã‹ã¿;fukunokami ã²ãªã¾ã¤ã‚Š;hinamatsuri ã²ãªã«ã‚“ãŽã‚‡ã†;hinaningyou ãŸã‚“ã”ã®ã›ã£ã;tangonosekku ã¯ã˜ã‚;hajime ã¾ã¤ã‚Š;matsuri ã“ã„ã®ã¼ã‚Š;koinobori ãŸãªã°ãŸ;tanabata ã»ã—;hoshi ã†ã—ã‹ã„;ushikai ã†ã—;ushi ã§ã‚“ã›ã¤;densetsu ã‚ã¾ã®ãŒã‚;amanogawa ãŠã‚Šã²ã‚;orihime ãƒã‚¤ã‚­ãƒ³ã‚°;haikingu ã¾ã¤ãŠã°ã—ょã†;matsuobashou ã¤ã‚ãŸã„;tsumetai ã¿ã˜ã‹ã„;mijikai ãŸã®ã—ã„;tanoshii ã‹ã‚ã„らã—ã„;kawairashii ã‚ãŠã„;aoi ã•ã„ã‚ã„;saiwai ã‹ã‚“ãŸã‚“;kantan ãµã—ã‚“ã›ã¤;fushinsetsu ã’ã‚“ã;genki ロマンãƒãƒƒã‚¯;romanchikku ã³ã‚‡ã†ã;byouki ã„ãã¤ã‹;ikutsuka ã”ãœã‚“;gozen ã©;do ã“ã„ã®ã¼ã‚ŠãŠãŸã¦ã‚‹;koinoboriotateru ã¯ã—ã‚‹;hashiru ãƒã‚¤ã‚­ãƒ³ã‚°ã«ã„ã;haikinguniiku ã¯ã„ãã‚’ã¤ãã‚‹;haikuwotsukuru ã—ゃã—ã‚“ã‚’ã¨ã‚‹;shashinwotoru ãŠãã‚‹;okuru ã‹ã–ã‚‹;kazaru ã¾ã;maku ãŠã„ã ã™;oidasu ã¾ã­ã;maneku ã‚ãŸã‚‹;wataru ã‚ã†;au ã‘ã‚“ã¶ã¤ã™ã‚‹;kenbutsusuru ãã‚‹;kuru ãŠãŠãœã„;oozei ã“ã¨ã‚Š;kotori ã„ã‘;ike ã¯ã—;hashi ã“ã„;koi ã—ゃã›ã„;shasei ã¡ã‚…ã†ãŒãã›ã„;chuugakusei ã¶ã‚‰ã‚“ã“;buranko ã“ã‹ã’;kokage ã ã‚“ã˜ã‚‡;danjo ã²ã‹ã‚Š;hikari ã¹ã‚“ã¨ã†;bentou ã‹ã ã‚“;kadan ãŠã‹;oka ã¨ãŠã;tooku ã™ã‚‚ã†;sumou ã‹ã­;kane ãã‚‹ã¾;kuruma ã§ã‚“ã‚ã°ã‚“ã”ã†;denwabangou ã„ã‘ã°ãª;ikebana ã§ã—;deshi ãŠã¼ã‚“;obon ã›ã‚“ãž;senzo ãŸã¾ã—ã„;tamashii ã¾ã‚“ã’ã¤;mangetsu ãŠã¤ãã¿;otsukimi ã†ã‚“ã©ã†ã‹ã„;undoukai ã²ã¨ã³ã¨;hitobito ã“ã‚;kome ã¨ã‚Šã„れ;toriire ã»ã†ã•ã;housaku むら;mura ã‚ãã¾ã¤ã‚Š;akimatsuri ã—ã¡ã”ã•ã‚“;shichigosan ã¨ã—;toshi ã¨ã—;toshi ãŠãŠãã†ã˜;oosouji ãŠãŠã¿ãã‹;oomisoka よãªã‹;yonaka ã˜ã‚‡ã‚„ã®ã‹ã­;joyanokane ベンãƒ;benchi ãƒãƒ¼ãƒ¢ãƒ‹ã‚«;haamonika ボール;booru ãƒãƒ³ã‚«ãƒ;hankachi デパート;depaato ジャズ;jazu スãƒãƒ¼ãƒ„;supootsu シーズン;shiizun サイクリング;saikuringu ã ã„ã‚‚ã‚“ã˜;daimonji ã‹ã‚“ã¨ã†;kantou ã‹ã‚“ã•ã„;kansai ãã‚ã„;kuroi ã‚ã‹ã‚‹ã„;akarui ãµã¹ã‚“;fuben ã˜ã‚‡ã†ãš;jouzu モダン;modan ã•ã„ã”;saigo ã•ã„;sai ãŠã¡ã‚‹;ochiru ãªã’ã‚‹;nageru ãŠã—ãˆã‚‹;oshieru ãŠã¡ã‚ƒã‚’ãŸã¦ã‚‹;ochawotateru コーヒーをã„れる;koohiiwoireru ã‚ã¤ã‚ã‚‹;atsumeru ã‚€ã‹ãˆã‚‹;mukaeru ã²ã‚’ã¤ã‘ã‚‹;hiwotsukeru ã•ã;saku ã‚ãã¶;asobu ã†ãŸã†;utau ã¯ã—ãŒã‹ã‹ã‚‹;hashigakakaru ã¶ã‚‰ã‚“ã“ã«ã®ã‚‹;burankoninoru ã¯ãªã™;hanasu ã‚‚ã¤;motsu ã¾ã‚ã‚‹;mawaru ãƒãƒ¼ãƒ¢ãƒ‹ã‚«ã‚’ãµã;haamonikawofuku ã™ã‚‚ã†ã‚’ã¨ã‚‹;sumouwotoru ã¿ãŠã‚ã™;miorosu ã²ã‹ã‚‹;hikaru ã«ã™ã‚€;nisumu ã—ã‚‹;shiru ã²ã‚‰ã;hiraku ã—ã¾ã‚‹;shimaru ã¾ãŒã‚‹;magaru ãµã¨ã‚‹;futoru ピアノをã²ã;pianowohiku シャツをã¬ã;shatsuwonugu ã¨ãŠã‚‹;tooru ã™ã‚€;sumu ã„ã‚ã†;iwau ã«ã¾ã„ã‚‹;nimairu ã‚‚ã¡ã‚’ã¤ã;mochiwotsuku ãŠã˜ã‚ƒã¾ã™ã‚‹;ojamasuru ã—ょã†ã‹ã„ã™ã‚‹;shoukaisuru ã¤ã‚†;tsuyu ã¤ã‚†ã‚ã‘;tsuyuake ãªã¤ã‚„ã™ã¿;natsuyasumi ã¯ã‚Œ;hare ãªã¤ã‚„ã¾;natsuyama ã“ã†ã–ã‚“ã—ょãã¶ã¤;kouzanshokubutsu ãã‚‚;kumo ã¯ã‚“ã¨ã†;hantou ã‹ã„ãŒã‚“;kaigan ã¶ã‚“ã‹;bunka ã›ã„ã˜;seiji ã•ã‚“ãŽã‚‡ã†;sangyou ã¡ã‚…ã†ã—ã‚“;chuushin ã—ãœã‚“;shizen ã¿ãšã†ã¿;mizuumi ã®ã¯ã‚‰;nohara ã¡ã¸ã„ã›ã‚“;chiheisen ゆã†ã²;yuuhi ã—ã‚…ã†ã‹ã;shuukaku ã‚‚ã®;mono ã•ã‹ãª;sakana ã¦ã„りゅã†ã˜ã‚‡;teiryuujo ã‹ãœ;kaze ã“ã‘;koke ã‚„ã¾ã”ã‚„;yamagoya ã›ã„ã;seiki れãã—;rekishi ãã‚‚ã®;kimono ã¬ã®;nuno ã‚ãª;ana ã‚ãŸã¾;atama ã“ãµã‚“;kofun ã¯ã«ã‚;haniwa ãµããã†;fukusou ã“ã‚;koro ã¯ã‹ã¾;hakama ã¸ã„ã‚ã‚“ã˜ã ã„;heianjidai ã‹ã¾ãらã˜ã ã„;kamakurajidai ã‚€ã‚ã¾ã¡ã˜ã ã„;muromachijidai ãœã‚“ã˜;zenji ãœã‚“ã—ã‚“ã¦ã;zenshinteki ã¨ã†ãœã‚“;touzen ã—ã‚…ã†ãœã‚“;shuuzen ã—ã‚…ã†ãœã‚“ã“ã†;shuuzenkou ã¤ãã‚ã„ã‹ã–ã‚‹;tsukuroikazaru ãã—;soshi ããŒã„;sogai ã‘ã‚“ã;kenso ããœã„;sozei ãã—ゃã;soshaku ãã—ゃã£ã‘ã‚“;soshakken ãã¡;sochi ãã˜;soji ãょã;kyoso ãã¾ã¤;somatsu ãã¨ã†;sotou ã‚らã™ã˜;arasuji ãã‹ã;sokaku ãã‹ã„ã—ゃ;sokaisha ã†ã¨ã†ã¨ã—ã„;utoutoshii ãã—ょã†ã˜ã‘ã‚“;soshoujiken ã“ãã;kokuso ã‚ã„ã;aiso ããžã†;sozou ã¡ã‚‡ã†ã;chouso ã‹ãã›ã„;kasosei ãã›ã;soseki ãã;kiso ããã¦ã;kisoteki ãã†ã»ã†;souhou ã‚€ãã†;musou ãµãŸã”;futago ãã†ã ã„;soudai ãょã†ãã†;kyousou ãã†ã—ゃ;sousha ãã†ã”ã‚“;sougon ã—ょã†ãˆã‚“;shouen ã¹ã£ãã†;bessou ãã†ã•;sousa ãã†ã•ã;sousaku ã•ãŒã—ã ã™;sagashidasu ãã†ã«ã‚…ã†;sounyuu ãã†ã‚;souwa ã•ã—ãˆ;sashie ãã†ãˆã‚“;souen ãã‚ã„ã‚;kuwairo ãã‚ã°ãŸã‘;kuwabatake ãã†ã˜ã;soujiki ã„ã£ãã†;issou ã¯ãã ã™;hakidasu ã»ã†ãã†;housou ãã‚“ãã†;gunsou ãã†ã—;soushi ããã†;kisou ã™ã°ã“;subako ã™ã ã¤;sudatsu ãã†ã—ã¤;soushitsu ã‚‚ãµã;mofuku ã‚‚ã¡ã‚…ã†;mochuu ãã†ã—ã;soushiki ãã†ãŽã‚„;sougiya ãã†ã‹;souka ãã†ã¡;souchi ã„ã—ょã†;ishou ã¸ã‚“ãã†;hensou ãã†ã„ã‚“;souin ã“ã†ãã†;kousou ãã†ã—ょã;soushoku ãã†ãã†;souguu ãã†ãªã‚“;sounan ãã†ãªã‚“ã—ã‚“ã”ã†;sounanshingou ã™ã„ãã†;suisou よããã†;yokusou ã—ãã†;shisou ã‹ã‚“ãã†;kansou ã—ょã†ãã†;shousou ã“ã†ãã†ã¡;kousouchi ãã†ãŒã„;sougai ã—もよ;shimoyo ã—ã‚‚ãµã‚Šã«ã;shimofuriniku ãã†ãŠã‚“;souon ãã†ã©ã†;soudou ãŠãŠã•ã‚ãŽ;oosawagi ã‚‚ã¬ã‘;monuke ã‹ã„ãã†;kaisou ã—ãã†;shisou ãžã†ãŠ;zouo ã«ãらã—ã„;nikurashii ã«ãã¿ã‚ã†;nikumiau ãžã†ã‚ˆ;zouyo ããžã†;kizou ãŠãりもã®;okurimono ããã„;sokui ãã£ã“ã;sokkoku ããã›ã;sokuseki ã‘ã£ãã;kessoku ã¯ãªãŸã°;hanataba ã¤ã‹ã®ã¾;tsukanoma ããã—ã‚“;sokushin ã•ã„ãã;saisoku ããã›ã„;sokusei ã‹ã„ãžã;kaizoku ã¨ã†ãžã;touzoku ãžããã‚“;zokugun ã ã¨ã†;datou ã ãょã†;dakyou ã ã‘ã¤;daketsu ã ã‚‰ã;daraku ã ãŸã„;datai ã ã‚‰ãã¼ã†ãš;darakubouzu ã ã‚Šã‚‡ã;daryoku ãŸã„ã ;taida ã ã;daki ã ã‚‚ã®;damono ã ã°;daba ã‚€ã ;muda ãŸã„ãã‚…ã†;taikyuu ãŸã„ã‹;taika ãŸãˆãŒãŸã„;taegatai ãŸã„ãŽã‚‡ã†;taigyou ãªã¾ã‘ã‚‚ã®;namakemono ãŠã“ãŸã‚ŠãŒã¡;okotarigachi ãŸã„ã˜;taiji ã˜ã‚…ãŸã„;jutai ãŸã„ã°ã‚“;taiban ãŸã„ãœã‚“;taizen ã‚ã‚“ãŸã„;antai ãŸã„ã›ã„;taisei ゆã†ãŸã„;yuutai ゆã†ãŸã„ã‚‹ã„;yuutairui ã¦ã¶ãã‚;tebukuro ãŸã„ã»;taiho ãŸã„ã»ã—ゃ;taihosha ãŸã„ã‚„;taiya ã ã„ãŸã„;daitai りょã†ãŒãˆ;ryougae ã¨ã‚Šã‹ãˆ;torikae ãŸã„ã–ã„;taizai ã¦ã„ãŸã„;teitai ãŸã„ã®ã†;tainou ãよãŸã;kiyotaki ãŸããŒã‚;takigawa ã‘ã”ã‚“ã ã;kegondaki ã•ã„ãŸã;saitaku ã›ã‚“ãŸã;sentaku ã›ã‚“ãŸãã‹ã‚‚ã;sentakukamoku ã“ã†ãŸã;koutaku ã•ã‚ã¡;sawachi ãŸã£ãã‚…ã†;takkyuu ãŸããˆã¤;takuetsu ã—ょããŸã;shokutaku ãŸãã—ょã;takushoku ã‹ã„ãŸã;kaitaku ãŽã‚‡ãŸã;gyotaku ãŸãã›ã‚“;takusen ãŸããã†;takusou ã„ãŸã;itaku ã›ã‚“ãŸãã;sentakuki ã›ã‚“ãŸãã‚‚ã®;sentakumono ã˜ã‚…ã ã;judaku ã—ょã†ã ã;shoudaku ã‹ã„ã ã;kaidaku ã ãりゅã†;dakuryuu ã ããŠã‚“;dakuon ã«ã”りãˆ;nigorie ãŸã ã—ãŒã;tadashigaki ãŸã ã—ã¥ã;tadashiduki ãŸã˜ã¾;tajima ã ã¤ã„;datsui ã ã£ã´;dappi ã ã£ã—ã‚…ã¤;dasshutsu ã ã£ã—ã‚…;dasshu ã ã£ã‹ã„;dakkai ã†ã°ã„ã•ã‚‹;ubaisaru ã¨ã ãª;todana ã»ã‚“ã ãª;hondana ã¶ã©ã†ã ãª;budoudana ãŸã‚“ã­ã‚“;tannen ãŸã‚“ã›ã„;tansei ã«ã¬ã‚Š;ninuri ã ã„ãŸã‚“;daitan ãŸã‚“ã›ã;tanseki らããŸã‚“;rakutan ãŸã‚“ã™ã„;tansui ãŸã‚“ã—ょã;tanshoku ã‚ã‚ゆã;awayuki ãŸã‚“ãã;tansoku ãょã†ãŸã‚“;kyoutan ãªã’ãã•ã‘ã¶;nagekisakebu ãょããŸã‚“;kyokutan ãŸã‚“ã›ã„;tansei ã¿ã¡ã°ãŸ;michibata ãŸã‚“ã˜ã‚‡ã†ã³;tanjoubi ã“ã†ãŸã‚“;koutan ã“ã†ãŸã‚“;koutan ãŸã‚“ã“ã†ã˜ã‚‡;tankoujo ãŸã‚“れん;tanren ãŸã‚“ãã‚“;tankin ã ã‚“ã‚„ã;dan_yaku ã ã‚“りょã;danryoku ã²ãã¦;hikite ã‹ã ã‚“;kadan ã ã‚“ã˜ã‚‡ã†;danjou ã©ãŸã‚“ã°;dotanba ã¡ã˜ã‚‡ã;chijoku ã‚€ã¡;muchi ã¯ã˜ã„ã‚‹;hajiiru ã„ã£ã¡;icchi ã¡ã‚ã„ã¦ã;chimeiteki ã„ãŸã—ã‹ãŸ;itashikata ã¡ã“ã;chikoku ã¡ã¡;chichi ãŠãã–ã;osozaki ã¯ãã¡;hakuchi ãã¡;guchi ã¡ã˜ã‚‡ã†;chijou ã¡ãŽã‚‡;chigyo ã¡ã›ã¤;chisetsu よã†ã¡ãˆã‚“;youchien ã‹ã¡ã;kachiku ã¡ãã—ょã†;chikushou ã¡ãã•ã‚“;chikusan ãã¡ã;kuchiku ã¡ãã„ã¡;chikuichi ã¡ãã”ã¦ã;chikugoteki ã¡ã‚‡ã¡ã;chochiku ã¡ãã§ã‚“;chikuden ã¡ãã›ã;chikuseki ã¡ã¤ã˜ã‚‡;chitsujo ã‹ã‚“ã¡ã¤;kanchitsu ã¡ã¤ã‚ã;chitsuroku ã¡ã£ã—;chisshi ã¡ã£ãã;chissoku ã¡ã£ã;chisso ã¡ã‚ƒãã—;chakushi ã¯ã„ã¡ã‚ƒã;haichaku ã¡ã‚ƒãã•ã„;chakusai ã¡ã‚…ã†ã¦ã‚“;chuuten ãŠãã‚ã„;okiai ãŠãã¥ã‚Š;okiduri ã¡ã‚…ã†ã—ã‚…ã¤;chuushutsu ã¡ã‚…ã†ã—ょã†;chuushou ã¡ã‚…ã†ã›ã‚“;chuusen ã›ã£ã¡ã‚…ã†;secchuu ã¡ã‚…ã†ã—ã‚“;chuushin ãã¡ã‚…ã†;kuchuu ã¡ã‚…ã†ãžã†;chuuzou ã¡ã‚…ã†ã¦ã¤;chuutetsu ã„ãŒãŸ;igata ã¡ã‚…ã†ã—ゃ;chuusha ã¡ã‚…ã†ã–ã„;chuuzai ã¡ã‚…ã†ã«ã¡;chuunichi ã‘ã„ã¡ã‚‡ã†;keichou ã¡ã‚‡ã†ã‚‚ã‚“;choumon ã¨ã‚€ã‚‰ã„ãŒã£ã›ã‚“;tomuraigassen ã¡ã‚‡ã†ã¯ã¤;chouhatsu ã¡ã‚‡ã†ã›ã‚“;chousen ã¡ã‚‡ã†ã›ã‚“ã¦ã;chousenteki ã¡ã‚‡ã†ã“ã;choukoku ã¡ã‚‡ã†ãžã†;chouzou ã¦ã¼ã‚Š;tebori ã¡ã‚‡ã†ã¼ã†;choubou ãªãŒã‚;nagame ã¡ã‚‡ã†ã¼ã†ãœã£ã‘ã„;choubouzekkei ã¤ã‚Šã°;tsuriba ã¡ã‚‡ã†ãŽã‚‡;chougyo ã¤ã‚Šã›ã‚“;tsurisen ã¼ã†ã¡ã‚‡ã†;bouchou ãµãれã£ã¤ã‚‰;fukurettsura ãµãらã—ã“;fukurashiko ã¡ã‚‡ã†ã˜ã‚“;choujin ã¡ã‚‡ã†ã‹;chouka ã«ã‚…ã†ã¡ã‚‡ã†;nyuuchou ã¡ã‚‡ã†ã‚„ã;chouyaku ã¨ã³ã„ãŸ;tobiita ã¯ã­ã‹ãˆã‚‹;hanekaeru ã—ょã†ã¡ã‚‡ã†;shouchou ã¡ã‚‡ã†ã—ã‚…ã†;choushuu ã¨ãã¡ã‚‡ã†;tokuchou ã›ã„ã¡ã‚‡ã†;seichou ã™ã¿ãã‚‹;sumikiru ã™ã¾ã—ãŒãŠ;sumashigao ã¡ã‚‡ã†ã“ã†;choukou ã¨ã†ã¡ã‚‡ã†;touchou ã¡ã‚‡ã†ã—ã‚“ã;choushinki ã¡ã‚‡ã†ã°ã¤;choubatsu ã¡ã‚‡ã†ã‹ã„;choukai ã“りã”り;korigori ã¡ã‚‡ãã”;chokugo ã¡ã‚‡ãã—;chokushi ã¡ã‚‡ãã«ã‚“;chokunin ã¡ã‚“ã¼ã¤;chinbotsu ã¡ã‚“ãŸã„;chintai ã¡ã‚“ã‹;chinka ã¡ã‚“ã;chinki ã¡ã‚“ã´ã‚“;chinpin ã¡ã‚“ã½ã‚“;chinpon ã¡ã‚“;chin ã¡ã‚“ã®;chinno ã¡ã‚“ã¨ã;chintoku ã¡ã‚“ã˜ã‚‡ã†;chinjou ã¡ã‚“れã¤;chinretsu ã—ã‚“ã¡ã‚“ãŸã„ã—ゃ;shinchintaisha ã¡ã‚“ã¤ã†ã–ã„;chintsuuzai ã¡ã‚“ã›ã„;chinsei ã¶ã‚“ã¡ã‚“;bunchin ã¤ã„らã;tsuiraku ã’ãã¤ã„;gekitsui ã¤ã„ã—;tsuishi ã‹ã„ã¥ã‹;kaiduka ã¤ã‹ã‚ãª;tsukaana ãŸã‹ã‚‰ã¥ã‹;takaraduka ã¤ã‘ã‚‚ã®;tsukemono ã¡ã‚ƒã¥ã‘;chaduke ã—ãŠã¥ã‘;shioduke ãŸã¦ã¤ã¼;tatetsubo ã”ã¤ã¼;gotsubo ã¤ã¼ã™ã†;tsubosuu ãã‚…ã†ã¦ã„;kyuutei ã»ã†ã¦ã„;houtei ã¦ã„ã—ã‚“;teishin ã¦ã„ã˜ã‚‡ã†;teijou ãžã†ã¦ã„;zoutei ã—ã‚“ã¦ã„;shintei ã¦ã„ã“ã†;teikou ã¦ã„ã¨ã†;teitou ã¦ã„ãŸã;teitaku ã¦ã„ãªã„;teinai ã‹ã‚“ã¦ã„;kantei ã¦ã„ã—ã‚…;teishu りょã¦ã„;ryotei りょã†ã¦ã„;ryoutei ã¦ã„ãã†;teisou ã¦ã„ã›ã¤;teisetsu ã¦ã„ã˜ã¤;teijitsu ã¦ã„ã“ã;teikoku ã¦ã„ãŠã†;teiou ã¦ã„ãŠã†ã›ã£ã‹ã„;teiousekkai ã¦ã„ã›ã„;teisei ã‹ã„ã¦ã„;kaitei ã‹ã„ã¦ã„ã°ã‚“;kaiteiban ã¦ã„ãã†;teisou ã¦ã„ã—ã‚“;teishin ã¦ã„ã˜;teiji ãŸã‚“ã¦ã„;tantei ãªã„ã¦ã„;naitei ã¦ã„ã•ã¤;teisatsu ã¼ã†ã¯ã¦ã„;bouhatei ã¦ã„ã¼ã†;teibou ã¦ã„ã¼ã†ã¥ãŸã„;teiboudutai ã‹ã‚“ã¦ã„;kantei ã¦ã„ã“;teiko ãã‚…ã†ã‚ã„ã¦ã„;kyuumeitei ã—ã‚ãり;shimekiri ã¦ã„ã‚„ã;teiyaku ã—ã‚ã ã—;shimedashi ã§ã„ã©;deido ã“ã†ã§ã„;koudei ã©ã‚ã‚ã—;doroashi ãã¦ã;kiteki ã¦ãã—ã‚…;tekishu ãã¡ã¶ãˆ;kuchibue ã¦ãよã†;tekiyou ã¦ãã¯ã¤;tekihatsu ã¤ã¿ã¨ã‚‹;tsumitoru ã™ã„ã¦ã;suiteki ã„ã£ã¦ã;itteki ã¦ãã‹;tekika ã“ã†ã¦ã¤;koutetsu ã¦ã¤ã‚Šã¤;tetsuritsu ã¦ã£ã;tekki ã¦ã¤ãŒã;tetsugaku ã¦ã¤ã˜ã‚“;tetsujin ã›ã‚“ã¦ã¤;sentetsu ã¦ã¤ã‚„;tetsuya ã¦ã£ã¦ã„ã¦ã;tetteiteki ã‹ã‚“ã¦ã¤;kantetsu ã¦ã£ã—ã‚…ã†;tesshuu ã¦ã£ãょ;tekkyo ã¦ã£ã‹ã„;tekkai ã¦ã‚“ã‹;tenka ã¦ã‚“ã·;tenpu ããˆãŽ;soegi ãã‚…ã†ã§ã‚“;kyuuden ã”ã¦ã‚“;goten ã¨ã®ã•ã¾;tonosama ã»ãã¨ã›ã„;hokutosei ã¨ã—ã‚…;toshu ãŸã„ã¨;taito ã¨ã–ã„;tozai ã¯ãã‘;hakike ã¨ã„ã;toiki ã¨ã¡ã‚…ã†;tochuu ã¨ãŸã‚“;totan ãœã‚“ã¨;zento ã¨ã“ã†;tokou ã¨ã›ã„;tosei ã„ã„ã‚ãŸã™;iiwatasu ã¬ã‚Šã‚‚ã®;nurimono ã¨ãã†;tosou ã¬ã‚Šãã™ã‚Š;nurigusuri ã©ã‚Œã„;dorei ã‚„ã¤ã‚‰;yatsura ã‚„ã£ã“ã•ã‚“;yakkosan ã©ã;doki ã©ãªã‚‹;donaru ã„ã‹ã‚Šãã‚‹ã†;ikariguruu ã¨ã†ãµ;toufu ã ã„ãš;daizu ã¾ã‚ã»ã‚“;mamehon ã¨ã†ã‚‰ã„;tourai ã¨ã†ãŸã¤;toutatsu ã¨ã†ã¦ã„;toutei ã¨ã†ã¼ã†ã—ゃ;toubousha ã¿ã®ãŒã™;minogasu ã«ã’ã¿ã¡;nigemichi ã¨ã†ã•ã‚“;tousan ã‚ã‚“ã©ã†;mendou ã¨ã†ã¡;touchi れã„ã¨ã†ã–ã„;reitouzai ã¨ã†ã‘ã¤;touketsu ã“ãŠã‚Šã¤ã;kooritsuku ã¨ã†ã»ã‚“;touhon ã‘ã¨ã†ã˜ã‚“;ketoujin ã‹ã‚‰ã¦;karate ã¯ãã¨ã†;hakutou ã‚‚ã‚‚ã„ã‚;momoiro ã¨ã†ã’ã‚“ãょã†;tougenkyou ã¨ã†ã‚ã„;toumei ã¨ã†ã—ゃ;tousha ã™ãã¨ãŠã‚‹;sukitooru ã‚ã„ã¨ã†;aitou ã¤ã„ã¨ã†;tsuitou ã„ãŸã‚€ã¹ã;itamubeki ã¨ã†ã‚ˆã†;touyou ã”ã†ã¨ã†;goutou ã¬ã™ã³ã¨;nusubito ã¨ã†ã;touki ãã‚“ã¨ã†;kuntou ã¨ã†ãœã‚“;touzen ã›ãã¨ã†;sekitou ãã¨ã°;sotoba ã”ã˜ã‚…ã†ã®ã¨ã†;gojuunotou ã¨ã†ã•ã„;tousai ã¨ã†ã˜ã‚‡ã†;toujou ã¨ã†ã˜ã‚‡ã†ã‘ã‚“;toujouken ã³ã‚‡ã†ã¨ã†;byoutou ã‚€ãªãŽ;munagi ã¹ã¤ã‚€ã­;betsumune ã¦ã‚“ã­ã‚“ã¨ã†;tennentou ã™ã„ã¨ã†;suitou ã—ã‚…ã¨ã†;shutou ãˆã‚“ã¨ã†;entou ã¤ã¤ã¬ã‘;tsutsunuke ã¤ã¤ãŒãŸ;tsutsugata ã™ã„ã¨ã†;suitou ã„ãªã•ã;inasaku ã‚ã›ã ;waseda ã¨ã†ã¯;touha ãµã¿ã“ã‚€;fumikomu ã‚ã—ã¶ã¿;ashibumi ã¨ã†ã»ã‚“;touhon ã¨ã†ã—ゃ;tousha ã¨ã†ã—ゃã;toushaki ã¨ã†ã—;toushi ã¨ã†ã—;toushi ã›ã‚“ã¨ã†ã;sentouki ã¨ã†ã;touki ã¨ã†ã‚‰ã;touraku ã¼ã†ã¨ã†;boutou ã©ã†ã•ã¤;dousatsu ãã†ã©ã†;kuudou ã©ã†ãã¤;doukutsu ã©ã†ãŸã„;doutai ãã†ã©ã†ã›ã‚“;soudousen ã©ã†ã¾ã‚り;doumawari ã¨ã†ã’ã¿ã¡;tougemichi ã†ã™ã„ã¨ã†ã’;usuitouge よんã˜ã‚…ã†ã®ã¨ã†ã’;yonjuunotouge ã¨ãã‚ã„;tokumei ã„ã‚“ã¨ã;intoku ã²ã¨ã;hitoku ã‹ã‚“ã¨ã;kantoku ã¨ãれã„;tokurei ã¨ããã;tokusoku ã¨ãã—;tokushi ãã¨ã;kitoku ã¨ãã¨;tokuto ã¨ã¤ã‚ã‚“;totsumen ã§ã“ã¼ã“;dekoboko ãŠã†ã¨ã¤;outotsu ã¨ã¤ãœã‚“;totsuzen ã¨ã¤ã«ã‚…ã†;totsunyuu ã¤ã£ã“ã‚€;tsukkomu ã¨ã‚“ãˆã„;ton_ei ã¡ã‚…ã†ã¨ã‚“;chuuton ã¡ã‚…ã†ã¨ã‚“ã¡;chuutonchi ã¨ã‚“ã‚‚ã†;tonmou ã¶ãŸã«ã;butaniku ã¨ã‚“カツ;tonkatsu ã©ã‚“ã‹ã‚“;donkan ã©ã‚“ã•ã„;donsai ã«ã³ã„ã‚;nibiiro ã©ã‚“ã¦ã‚“;donten ãもりãŒã¡;kumorigachi ã¯ãªãもり;hanagumori ãªã‚“ã‹;nanka ãªã‚“ã™ã„;nansui ãªã‚“ã˜ã‚ƒã;nanjaku ã«ãã†;nisou ã‚ã¾ã§ã‚‰;amadera ã³ãã«;bikuni ã¨ã†ã«ã‚‡ã†ã³ã‚‡ã†;tounyoubyou ã«ã‚‡ã†ã;nyouso ã«ã‚‡ã†ã„;nyoui ã«ã‚“ã·;ninpu ãµã«ã‚“ã—ょã†;funinshou ã«ã‚“ã—ã‚“ã¡ã‚‡ã†ã›ã¤;ninshinchousetsu ã«ã‚“ãŸã„;nintai ã«ã‚“ã˜ã‚ƒ;ninja ã—ã®ã³ã“ã‚€;shinobikomu ã‚ã‚“ã­ã„;annei ã¦ã„ã­ã„;teinei ã­ã„ã˜ã¤;neijitsu ã­ã‚“ã©;nendo ã­ã‚“ã¡ã‚ƒã;nenchaku ã­ã°ã‚Šã¥ã‚ˆã„;nebariduyoi ãã®ã†;kunou ã®ã†ã•ã¤;nousatsu ãŠã†ã®ã†;ounou ã®ã†ã‹;nouka ã®ã†ã“ã†;noukou ã‚ã¶ã‚‰ã£ã“ã„;aburakkoi ã¯ã‚ã;haaku ã¯ã˜ã‚…ã†;hajuu ã¨ã£ã¦;totte ã¯ã‘ã‚“;haken ã¯ã;haki ã›ã„ã¯;seiha ã‚ã†ã°;rouba ã•ã‚“ã°;sanba ãŠã«ã°ã°;onibaba ãŽã‚‡ãã¯ã„;gyokuhai ã•ã‹ãšãã”ã¨;sakazukigoto ã¯ã„ã˜ã‚‡;haijo ã¯ã„ã™ã„;haisui ã¯ã„ãガス;haikigasu ã¯ã„ã—;haishi ã¯ã„ã˜;haiji ã™ãŸã‚Šã‚‚ã®;sutarimono ã‚ãŒã¯ã„;wagahai ã›ã‚“ã±ã„;senpai ã¯ã„ã—ã‚…ã¤;haishutsu ã°ã„ã‹;baika ã†ã‚ã—ã‚…;umeshu ã¤ã‚†;tsuyu ã°ã„よã†;baiyou ã•ã„ã°ã„ã—ゃ;saibaisha ã°ã„ã¡;baichi ã°ã„ã›ãã—ゃ;baisekisha ã°ã„ã—ã‚“;baishin ã°ã„ãŠã‚“;baion ã°ã„ã‹ã„;baikai ã—ょãã°ã„;shokubai ã°ã„ãŸã„;baitai ã°ã„ã—ょã†;baishou ã°ã„ã—ょã†ãã‚“;baishoukin ãã‚“ãŒã„ã°ã„ã—ょã†;songaibaishou ã¯ãã—ゃã;hakushaku ãŠã˜;oji ãŒã¯ã;gahaku ã¯ãã—ã‚…;hakushu ã²ã‚‡ã†ã—;hyoushi ã¯ãã—ゃ;hakusha ã—ã‚…ãã¯ã;shukuhaku ã¨ã¾ã‚Šã°ã‚“;tomariban ã„ã£ã±ã;ippaku ã¯ããŒã„;hakugai ã¯ãりょã;hakuryoku ã›ã£ã±ã;seppaku ã›ã‚“ã±ã;senpaku ã¯ãらã„;hakurai ã¯ãよã†;hakuyou ã†ã™ãŽ;usugi ã‘ã„ã¯ã;keihaku ã†ã™ã‹ã‚;usukawa ã°ããœã‚“;bakuzen ã°ãã°ã;bakubaku ã•ã°ã;sabaku ããã°ã;sokubaku ã»ã°ã;hobaku ã—ã°ã‚Šãã³;shibarikubi ã°ãã¯ã¤;bakuhatsu ã°ãã ã‚“;bakudan ã’ã‚“ã°ã;genbaku ã“ã°ã“;kobako ã¯ã“ã¶ã­;hakobune ã¯ã“ã„り;hakoiri ã¯ã ã„ã‚;hadairo ã™ã¯ã ;suhada ãã‚;kime ã†ãˆãã°ã¡;uekibachi ã¯ã¡ã¾ã;hachimaki ã„ã¯ã¤;ihatsu ã¨ã†ã¯ã¤;touhatsu ã•ã‚“ã±ã¤;sanpatsu ã‹ã¿ãŒãŸ;kamigata ã°ã£ã•ã„;bassai ã›ã„ã°ã¤;seibatsu ã•ã¤ã°ã¤;satsubatsu ã°ã¤ãã‚“;batsugun ã¬ã‘ã‚ãª;nukeana ã¦ã¬ã‹ã‚Š;tenukari ã°ã£ãã‚“;bakkin ã—ょã°ã¤;shobatsu ã°ã¡ã‚ãŸã‚Š;bachiatari ã‚‚ã‚“ã°ã¤;monbatsu ã°ã¤ãžã;batsuzoku ã–ã„ã°ã¤;zaibatsu ã¯ã‚“ã›ã‚“;hansen ã»ã°ã—ら;hobashira ã»ã‹ã‘ã‚‹;hokakeru ã©ã†ã¯ã‚“ã—ゃ;douhansha ã°ã‚“ãã†ã—ゃ;bansousha ã‚ã„ã¨ã‚‚ãªã†;aitomonau ã¡ã¯ã‚“;chihan ã“ã¯ã‚“;kohan ã“ã¯ã‚“ã—ã˜ã‚“;kohanshijin ã„ã£ã±ã‚“;ippan ãœã‚“ã±ã‚“;zenpan ã‹ã¯ã‚“;kahan ã¯ã‚“ã°ã„;hanbai ã—ã¯ã‚“;shihan ã¯ã‚“ã‚;hanro ã†ã‚“ã±ã‚“;unpan ã¯ã‚“ãã†;hansou ã¯ã‚“ãã†ãŸã„;hansoutai ã¯ã‚“ã–ã¤;hanzatsu ã¼ã‚“ã®ã†;bonnou ã¯ã‚“ã‚ã†;hanrou ã¯ã‚“ã·;hanpu ã¯ã‚“ã“ã†;hankou ã¯ã‚“ã±ã;hanpaku ã‚‚ã¯ã‚“;mohan ãã¯ã‚“;kihan ã¯ã‚“ã„ãªã„;han_inai ã¯ã‚“ã˜ã‚‡ã†;hanjou ã¯ã‚“ã–ã¤;hanzatsu ã¯ã‚“ã—ょã;hanshoku ã¯ã‚“ã—ã‚…;hanshu ã¯ã‚“ã¹ã„;hanbei ã‹ãŒã¯ã‚“;kagahan ã°ã‚“ã˜ã‚“;banjin ã°ã‚“ã“ã†;bankou ã‚„ã°ã‚“;yaban ãˆã‚“ã°ã‚“;enban ãã°ã‚“;kiban ã™ã„ã°ã‚“;suiban ãŠã†ã²;ouhi ã²ã§ã‚“ã‹;hidenka ã“ã†ãŸã„ã—ã²;koutaishihi ã‹ã‚Œã—;kareshi ã‹ã®ã˜ã‚‡;kanojo ã²ãŒã‚“;higan ã²ã‘ã‚“;hiken ã²ã‚Œã;hireki ã²ã‚ã†;hirou ã²ã’;hige ã²ãã¤;hikutsu ã²ãã‚“;hikin ã²ã‚ã†;hirou ã¤ã‹ã‚Œã‚;tsukareme ã¤ã‹ã‚Œãã‚‹;tsukarekiru ã²ãŒã„ã—ゃ;higaisha ã²ãµã;hifuku ã²ã“ãã«ã‚“;hikokunin ã‹ã„ã²;kaihi ã‚‚ã‚“ã´;monpi ã¨ã³ã‚‰ãˆ;tobirae ã²ã‚ã„;himei ã›ãã²;sekihi ãã­ã‚“ã²;kinenhi ã²ãŽã‚‡ã†;higyou ã²ã‚ã‚“;himen ã¾ã‹ã‚Šã¨ãŠã‚‹;makaritooru ã‹ã„ã²;kaihi ãµã‹ã²;fukahi ã²ã«ã‚“;hinin ã³ã“ã¤;bikotsu ã“ã†ã³;koubi ã—ã£ã½;shippo ã³ã•ã„;bisai ã³ã“ã†;bikou ã³ã“ã†;bikou ã²ã£ã¦ã;hitteki ã²ã£ã·;hippu ã„ã£ã´ã;ippiki ã¶ã‚“ã´ã¤;bunpitsu ã²ã«ã‚‡ã†;hinyou ã²ã«ã‚‡ã†ãã‹;hinyoukika ã²ã‚ã¿ã‚„;himemiya ã²ã‚ãŒã;himegaki よã†ã“ã²ã‚;youkohime ã²ã‚‡ã†ã¯ã;hyouhaku ã²ã‚‡ã†ã¡ã‚ƒã;hyouchaku ã²ã‚‡ã†ã‚Šã‚…ã†ã—ゃ;hyouryuusha ã—ã‚…ã³ã‚‡ã†;shubyou ã¿ã‚‡ã†ã˜;myouji ãªãˆãŽ;naegi ã³ã‚‡ã†ã—ゃ;byousha ã¦ã‚“ã³ã‚‡ã†;tenbyou ãˆãŒãã ã™;egakidasu ã‚ã„ã³ã‚‡ã†;aibyou ã­ã“ãœ;nekoze シャムã­ã“;shamuneko ã‹ã„ã²ã‚“;kaihin ã¯ã¾ã¹;hamabe ã¯ã¾ã¨ã³ã‚€ã—;hamatobimushi ã—ã‚…ã²ã‚“;shuhin らã„ã²ã‚“;raihin ã²ã‚“ãゃã;hinkyaku ã²ã‚“ã±ã‚“ã«;hinpanni ã²ã‚“ã±ã¤;hinpatsu ã²ã‚“ã©;hindo ã³ã‚“ãã;binsoku ãˆã„ã³ã‚“;eibin ãã³ã‚“;kibin ã³ã‚“ã¥ã‚;bindume ã‹ã³ã‚“;kabin ã¤ã‚‹ã¹;tsurube ãµã˜ã‚‡;fujo ãµã‚ˆã†;fuyou ãµã„ã;fuiku ãょã†ãµã—ょã†;kyoufushou ã„ãµ;ifu ãょã†ãµã—ょã†ã›ã¤;kyoufushousetsu ãµãžã;fuzoku ããµ;kifu ãµãã‚“;fukin ãµãˆã‚“;fuen ãµã«ã‚“;funin ãµã«ã‚“ã¡;funinchi ãµã‚Šã‚‡ã;furyoku ã†ã‚ã;uwaki ã†ãよ;ukiyo ãã£ã·;kippu ãµã”ã†;fugou ãµã”ã†;fugou ãµã¤ã†;futsuu ãµã¸ã‚“;fuhen ãµãã‚…ã†;fukyuu ãµã—ã‚“;fushin ãµã¯ã„;fuhai ãã•れ;kusare ãµã›ã¤;fusetsu ã—ãã‚‚ã®;shikimono ã‚„ã—ã;yashiki ã²ãµãˆã‚“;hifuen ã‹ã‚“ã·;kanpu ã¯ã ãŽ;hadagi ãµã‹;fuka ãµã—;fushi ã’ã£ã·;geppu ãŒããµ;gakufu ã‘ã„ãµ;keifu ã­ã‚“ã·;nenpu ã¶ã˜ã‚‡ãã¦ã;bujokuteki ã‘ã„ã¶;keibu ã¶ã¾ã‚“;buman ã¶ãŸã„;butai ã¾ã„ã“;maiko ãµã‚‹ã¾ã„;furumai ãµã†ã¨ã†;fuutou ãµã†ã•;fuusa ã»ã†ã‘ã‚“;houken ããµã;kifuku ã›ã‚“ã·ã;senpuku ãµã—ã¦;fushite ã—ã‚“ã·ã;shinpuku ãŒãµã;gafuku よã“ã¯ã°;yokohaba ã¦ã‚“ã·ã;tenpuku ãµãã‚ã‚“;fukumen ãµãã™ã„;fukusui ã¯ã‚‰ã„ã‚‚ã©ã™;haraimodosu ãµã£ã¦ã„;futtei ã¯ã‚‰ã„ã ã™;haraidasu ãµã£ã¦ã‚“;futten ã‚ããŸã¤;wakitatsu ã‚ãã§ã‚‹;wakideru ãµã‚“ã—ã¤;funshitsu ãµã‚“ãã†;funsou ãµã‚“ã·ã‚“;funpun ãµã‚“ã„ã;fun_iki ã‚€ãµã‚“;mufun ãã†ãµã‚“;soufun ãµã‚“ã‹;funka ãµã‚“ã™ã„;funsui ãµãã ã™;fukidasu ã“ãµã‚“;kofun ãµã‚“ã¼;funbo ãµã‚“ã¼ã®ã¡;funbonochi ãµã‚“ãŒã„;fungai ãµã‚“ã©;fundo ãŽãµã‚“;gifun ã¸ã„ã—ã‚…;heishu ã“ã†ãŠã¤ã¸ã„;kouotsuhei ã²ã®ãˆ;hinoe ãŒã£ãºã„;gappei ã¸ã„よã†;heiyou ã¸ã„ã¯ã¤;heihatsu ã¸ã„ã“ã†;heikou ãªã¿ã;namiki ã¤ããªã¿;tsukinami ãŠã†ã¸ã„;ouhei ã„ãˆãŒã‚‰;iegara ãŠãŠãŒã‚‰;oogara ã„ãŸã¹ã„;itabei ã©ã¹ã„;dobei ã¸ã„ã”ã—;heigoshi ã—ã¸ã„;shihei ã‹ã¸ã„;kahei ã”ã¸ã„;gohei ã¸ã„ã—ゃ;heisha ã²ã¸ã„;hihei ã¸ã„ãŒã„;heigai ã¸ããŒ;hekiga ãŒã‚“ãºã;ganpeki ã‹ã¹ãŒã¿;kabegami ã¨ã†ã¸ã;touheki ã—ã‚…ã†ã¸ã;shuuheki ãã›ã’;kusege ã¸ã‚“ã“ã†;henkou ã¸ã‚“ã‘ã‚“;henken ã¸ã‚“ãã¤;henkutsu ãµã¸ã‚“ã›ã„;fuhensei ã¸ã‚“ã–ã„;henzai ã„ã£ãºã‚“;ippen ã»ã‹ã;hokaku ã¨ã‚‰ãˆã©ã“ã‚;toraedokoro ã¤ã‹ã¾ãˆã©ã“ã‚;tsukamaedokoro ã†ã‚‰ãªã¿;uranami ã†ã‚‰ã‹ãœ;urakaze ã†ã‚‰ã–ã¨;urazato ã¦ã‚“ã½;tenpo ã»ãã†;hosou ã»ãã†ã©ã†ã‚;hosoudouro ã¼ã—ã‚…ã†;boshuu ã¼ãã‚“;bokin ãŠã†ã¼;oubo ã¼ã˜ã‚‡ã†;bojou ã‘ã„ã¼;keibo ã¼ã—ã‚“;boshin ã¼ã—ã‚…ã‚“;boshun ゆã†ãれ;yuugure ãらã—ã‹ãŸ;kurashikata ã‚ã„ã¼;meibo ã¼ã;boki ã¡ã‚‡ã†ã¼;choubo ã»ã†ã“ã†;houkou ã»ã†ã—;houshi ã»ã†ã;houki ã»ã†ãŒ;houga れんã½ã†;renpou ã»ã‚“ã½ã†;honpou ã»ã†ã—;houshi ã»ã†ã®ã†;hounou ã—ã‚“ã½ã†;shinpou ã ãã¤ã;dakitsuku ã»ã†ã‹ã„;houkai ã‹ã‹ãˆã“ã‚€;kakaekomu ãã»ã†;kihou ã¯ã£ã½ã†;happou ã‚ã‚ã ã¤;awadatsu ã»ã†ã—;houshi ã»ã†ã„;houi ã•ã„ã¼ã†;saibou ã»ã†ãã‚…ã†;houkyuu ã­ã‚“ã½ã†;nenpou ã»ã†ã‚ãã¾ã„;hourokumai ã‚‚ã»ã†;mohou ã‚‚ã»ã†ã—ゃ;mohousha ãªã‚‰ã„ã‘ãšã‚Š;naraikezuri ã—ã‚…ã»ã†;shuhou れんã½ã†;renpou ã¿ã­ã†ã¡;mineuchi ã»ã†ãŒã‚“;hougan ã¦ã£ã½ã†;teppou ãŸã„ã»ã†;taihou ã»ã†ã‹ã„;houkai ãªã ã‚Œ;nadare ã‚„ã¾ããšã‚Œ;yamakuzure ã»ã†ã‚;houwa ã»ã†ã—ょã;houshoku ã‚ãã—ょã†;akishou ã»ã†ã—ょã†;houshou ã»ã†ã³;houbi ã»ã‚ã“ã¨ã°;homekotoba ã»ã†ã”ã†;hougou ã¬ã„ã‚‚ã®;nuimono ã¬ã„ã‚;nuime ã‘ã¤ã¼ã†;ketsubou ã³ã‚“ã¼ã†;binbou ãŸã„ã¼ã†;taibou ãŸã¼ã†;tabou ã¯ã‚“ã¼ã†;hanbou ã¼ã†ã•ã¤;bousatsu ã¼ã†ãš;bouzu ã¼ã†ã‚„;bouya ã¼ã†ã‹ã‚“;boukan ã¼ã†ãŒã„;bougai ã¼ã†ã—;boushi ã•ã¾ãŸã’ãªã—;samatagenashi ã¼ã†ã—ã¤;boushitsu ãµã•ãµã•;fusafusa ã›ã‚ã«ã‚‡ã†ã¼ã†;sewanyoubou ã—ã¼ã†ãã†;shibousou ã—ã¼ã†ã‹ãŸ;shiboukata ã—ã¼ã†ãã—ã;shibousoshiki ã¼ã†ã—;boushi ã¼ã†ã—ょ;bousho ãŠãŠãŸãªã«ãŒã—;ootananigashi ã¼ã†ã‘ã‚“;bouken ã‹ã‚“ã¼ã†;kanbou ãŠã‹ã—ã¦;okashite ã‹ã„ã¼ã†;kaibou ã‹ã„ã¼ã†ãŒã;kaibougaku ã›ã„ãŸã„ã‹ã„ã¼ã†;seitaikaibou ã¼ã†ã;bouki ã¼ã†ã‚‚ã†;boumou ã¼ã†ã›ããŽã‚‡ã†;bousekigyou ã¼ã†ã¡ã‚‡ã†;bouchou ã¼ã†ã‹ã‚“;boukan ã¼ã†ã¡ã‚…ã†;bouchuu ã¼ã†ã—;boushi ã‚ã„ã‚‚ã†;meimou ã‚‚ã†ã‚‚ã;moumoku ã‚‚ã‚“ã‚‚ã†;monmou ã‚ãらã°ã‚“;mekuraban ã—ょã†ã‚‚ã†;shoumou ãã‚“ã‚‚ã†;sonmou ã—ã‚“ã—ã‚“ã‚‚ã†ã˜ã‚ƒã;shinshinmoujaku ã‚‚ã†ã‚Œã¤;mouretsu ã‚‚ã†ã˜ã‚…ã†;moujuu ã‚‚ã•;mosa ãŽã‚‡ã‚‚ã†;gyomou ã‚ã¿ã©;amido ã¤ã†ã—ã‚“ã‚‚ã†;tsuushinmou ã‚‚ãã•ã¤;mokusatsu ã¡ã‚“ã‚‚ã;chinmoku ã ã¾ã‚Šã“ã‚€;damarikomu ã‚‚ã‚“ã—ょã†;monshou ã—ã‚‚ã‚“;shimon ã¯ã‚‚ã‚“;hamon ã«ã‚‚ã‚“ã‚;nimonme ã”ã‚‚ã‚“ã‚;gomonme ã•ã‚“ã‚‚ã‚“ã‚;sanmonme ã‚„ã£ã‹ã„;yakkai ã‚„ãã³;yakubi ã•ã„ã‚„ã;saiyaku ã‚„ãã—ã‚“;yakushin ã²ã‚„ã;hiyaku ãŠã©ã‚Šã“ã‚€;odorikomu ゆã‹ã„;yukai ゆãˆã¤;yuetsu ゆらã;yuraku ãょã†ã‚†;kyouyu ã›ã¤ã‚†;setsuyu ゆã—;yushi ã¡ã‚†;chiyu ã¸ã„ゆ;heiyu ゆã”ã†;yugou ゆã„ã„ã¤;yuiitsu ãŸã ã„ã¾;tadaima ã„ã„ã ãã ã;iidakudaku ゆã†ãょã†;yuukyou ゆã†ã’ã‚“;yuugen ゆã†ã‹ã„;yuukai ゆã†ãœã‚“;yuuzen ゆã†ã¡ã‚‡ã†;yuuchou ゆã†ãã‚…ã†;yuukyuu ゆã†ã—;yuushi ゆã†ã‚ˆ;yuuyo ゆã†ã‚ˆãã‹ã‚“;yuuyokikan ゆã†ãµã;yuufuku よゆã†;yoyuu ãµã‚†ã†ã‹ã„ãã‚…ã†;fuyuukaikyuu ゆã†ã¹ã‚“;yuuben ゆã†ã—ゃ;yuusha ãŠã†ã—;oushi ゆã†ã‚ã;yuuwaku ゆã†ã©ã†;yuudou ã•ãã„ã¿ãš;sasoimizu ゆã†ã—ã‚…ã†;yuushuu ã†ã‚ŒãˆãŒãŠ;ureegao ã‚‚ã®ã†ã„;monoui ゆã†ã‚;yuuwa ãんゆã†;kin_yuu ゆã†ãšã†;yuuzuu ã‚ãŸãˆã¬ã—;ataenushi ã‹ã‚“よ;kan_yo ã˜ã‚…よã—ã;juyoshiki ã‚ã„よ;meiyo ãˆã„よ;eiyo ã»ã¾ã‚ŒãŸã‹ã„;homaretakai ã¡ã‚…ã†ã‚ˆã†;chuuyou ã¼ã‚“よã†;bon_you ãよã†ã¡ã‚‡ã†;soyouchou よã†ã™ã„;yousui ã‚ã’ã°;ageba ã‚ã’ã‚‚ã®;agemono ã©ã†ã‚ˆã†;douyou ゆりã„ã™;yuriisu ゆれã©ã‚;yuredome よã†ãˆã;youeki よã†ã‹ã„;youkai ã¨ã‘ã‚ã†;tokeau よã†ã¤ã†;youtsuu ã“ã—ã«ã;koshiniku ã‚‚ã®ã”ã—;monogoshi ãŠã©ã‚Šã“;odoriko ã¶ã‚ˆã†;buyou ãŠã©ã‚Šã˜;odoriji よã†ãŽã‚‡ã†;yougyou よã†ãŽã‚‡ã†ã‹;yougyouka ã‹ã‚“ãã†ãŒã¾;kansougama よã†ã”;yougo よã†ã‚Šã¤;youritsu ã»ã†ã‚ˆã†;houyou よã†ãょã;youkyoku ã¿ã‚“よã†;min_you ã†ãŸã„ã¼ã‚“;utaibon よãã—;yokushi よãã‚ã¤;yokuatsu よãã›ã„;yokusei ã†ã‚ˆã;uyoku よããŸã‚“;yokutan よãりゅã†;yokuryuu らã—ã‚“;rashin ã›ãらら;sekirara ã¯ã ã‹ã†ã¾;hadakauma られã¤;raretsu らã¦ã‚“;raten ã‚‚ã†ã‚‰ã¦ã;mourateki らã„ã†;raiu らã„ã‚ã„;raimei ãŽã‚‡ã‚‰ã„;gyorai ã—んらã„;shinrai ãŸã‚ˆã‚Šãªã„;tayorinai ãŸã®ã¿;tanomi れんらã;renraku ã‹ã‚‰ã¿ã‚ã†;karamiau ã‹ã‚‰ã¿ã¤ã;karamitsuku らãã®ã†;rakunou らãã•ã‚“;rakusan ã‹ã‚“らã;kanraku らんよã†;ran_you らんã´;ranpi ã¯ã‚“らん;hanran らんã‹ã‚“;rankan ãã†ã‚‰ã‚“;kuuran らんãŒã„;rangai りã„ã‚“;riin ã®ã†ã‚Š;nouri りã—ã‚…ã†;rishuu ã’り;geri ã›ãり;sekiri ãˆãり;ekiri りれã;rireki りã“ã†;rikou ã¯ãã‚‚ã®;hakimono ã¶ã‚“り;bunri りりã;ririku ã¡ã°ãªã‚Œ;chibanare りゅã†ã—;ryuushi ã‹ã‚Šã‚…ã†ã‹ã„;karyuukai ã›ã‚“りゅã†;senryuu ãょã†ã‚Šã‚…ã†;kyouryuu りゅã†ã˜ã‚“;ryuujin ãŸã¤ã¾ã;tatsumaki りゅã†ã—;ryuushi ã²ã¨ã¤ã¶;hitotsubu りゅã†ã‚Šã‚…ã†;ryuuryuu りゅã†ã›ã„;ryuusei りゅã†ã;ryuuki ã“ã†ã‚Šã‚…ã†;kouryuu りゅã†ã•ã‚“;ryuusan ã„ãŠã†;iou りゅã†ã‹ãŽã‚“;ryuukagin りょã—ã‚…ã†;ryoshuu ã»ã‚Šã‚‡;horyo ãµã‚Šã‚‡;furyo ãˆã‚“りょ;enryo ã“ã†ã‚Šã‚‡;kouryo むりょ;muryo りょã†ã‹ã„;ryoukai りょã†ã—ょã†;ryoushou ã—ã‚…ã†ã‚Šã‚‡ã†;shuuryou りょã†ã¿;ryoumi ã™ãšã¿ã ã„;suzumidai ã™ãšã‹ãœ;suzukaze りょã†ã—;ryoushi りょã†ã˜ã‚…ã†;ryoujuu ã—ょã†ã‚Šã‚‡ã†;shouryou りょã†ã¼;ryoubo ãã‚…ã†ã‚Šã‚‡ã†;kyuuryou ã”りょã†;goryou ã©ã†ã‚Šã‚‡ã†;douryou りょã†ã‚†ã†;ryouyuu ã‹ã‚“りょã†;kanryou りょã†ã›ã„;ryousei りょã†ã‹;ryouka りょã†ã¡ã‚‡ã†;ryouchou りょã†ã»ã†;ryouhou りょã†ã‚ˆã†;ryouyou ã„りょã†ã¯ã‚“;iryouhan ã—ょãりょã†;shokuryou ã²ã‚‡ã†ã‚ã†;hyourou りょã†ã©ã†;ryoudou りんもã†;rinmou ã«ã‚Šã‚“;nirin ã„ã¡ã¶ã„ã¡ã‚Šã‚“;ichibuichirin りんり;rinri ã˜ã‚“りん;jinrin ãœã¤ã‚Šã‚“;zetsurin りんã—ã¤;rinshitsu りんã›ã¤;rinsetsu ã¨ãªã‚Šã‚ã†;tonariau ã‚‹ã„ã‹ã‚“;ruikan ãªã¿ã ã‚ã‚;namidaame ãらãªã¿ã ;soranamida ã‚‹ã„ã‘ã„;ruikei ã‚‹ã„ã›ã;ruiseki ã‘ã„ã‚‹ã„;keirui ã©ã‚‹ã„;dorui ã¦ãã‚‹ã„;tekirui ã‚‹ã„ã—ã‚“;ruishin ã›ã„れã„;seirei ã—ょã†ã‚Œã„ãã‚“;shoureikin ã¯ã’ã¿ã‚ã†;hagemiau ã‚‚ã©ã—ãœã„;modoshizei ã¸ã‚“れã„;henrei ã‚‚ã©ã—ãã†;modoshisou ã§ã‚“れã„;denrei ãµã†ã‚Šã‚“;fuurin ã™ãšãªã‚Š;suzunari れã„ã•ã„;reisai れã„ã‹;reika れã„らã;reiraku ゆã†ã‚Œã„;yuurei ã‚ãりょã†;akuryou ãŸã¾ã‚„;tamaya ã©ã‚Œã„ã›ã„;doreisei れã„ã˜ã‚…ã†;reijuu れã„ãžã;reizoku ã­ã‚“れã„;nenrei ã¿ã‚‡ã†ã‚Œã„;myourei ã“ã†ã‚Œã„;kourei れã„ã˜ã‚“;reijin ã³ã‚Œã„;birei ã—ã‚…ã†ã‚Œã„;shuurei れãã­ã‚“;rekinen ã›ã„れã;seireki ã¯ãªã”よã¿;hanagoyomi ã²ã‚Œã¤;hiretsu れã¤ã˜ã‚‡ã†;retsujou れã£ã¨ã†;rettou れã£ã‹;rekka れã¤ã˜ã‚‡;retsujo れã£ã·ã†;reppuu ã¯ã‚Œã¤;haretsu ã¶ã‚“れã¤;bunretsu ã•ã‘ã‚;sakeme れんã‚ã„;ren_ai ã—ã¤ã‚Œã‚“;shitsuren ã“ã„ã³ã¨;koibito れんã¡ã‚‡ã;renchoku れんã‹;renka ã¯ã‚Œã‚“ã¡;harenchi れんãã‚“ã˜ã‚…ã¤;renkinjutsu れんã›ã„;rensei ã­ã‚ŠãŒã­;nerigane ã‚ã¸ã‚“;rohen ã ã‚“ã‚;danro ã’ã‚“ã—ã‚;genshiro ã‚ã—ã‚…ã¤;roshutsu よã¤ã‚†;yotsuyu ã‚ã¦ã‚“;roten ã—ã‚“ã‚ã†;shinrou ã‚ã†ã©ã†;roudou ãŸã‚ã†;tarou ã¯ã‚ã†;harou ã‚ã†ã²;rouhi ã‚ã†ã«ã‚“;rounin ã‚ã†ã‹;rouka ãŒã‚ã†;garou ã‹ã„ã‚ã†;kairou ã—ょã†ã‚ã†;shourou ã¼ã†ã‚ã†;bourou ã‚ã†ã‹ã;roukaku ã‚ã†ã§ã‚“;rouden ã‚ã†ã—ã‚…ã¤;roushutsu ã‚ã¾ã‚‚り;amamori ã—ã‚…ã†ã‚ã„;shuuwai ãžã†ã‚ã„;zouwai ã¾ã‹ãªã„ã¤ã;makanaitsuki ã‚ã„ã‚ã;meiwaku ã‚ãã›ã„;wakusei ã¨ã¾ã©ã„;tomadoi ã‚ããã¿;wakugumi ã‚ããªã—;wakunashi ã‚ããªã„;wakunai ã“ã†ã‚ã‚“;kouwan ã‚ã‚“ã«ã‚…ã†;wannyuu ã¨ã†ãょã†ã‚ã‚“;toukyouwan ã‚ã‚“ã—ょã†;wanshou ã—ã‚…ã‚ã‚“;shuwan ã»ãã†ã§;hosoude ã¯ãª;hana ã‚‚ã‚‚;momo ã°ã‚‰;bara ã«ã»ã‚“;nihon ã«ã»ã‚“ã˜ã‚“;nihonjin ãŒãã›ã„;gakusei ã‹ã„ã—ゃã„ã‚“;kaishain ã„ã‚‚ã†ã¨;imouto ã„ã¨ã“;itoko ã²ã¨;hito ãŽã‚“ã“ã†;ginkou ゆã†ã³ã‚“ãょã;yuubinkyoku ãã£ã¦;kitte ã†ã‚Šã°;uriba ã»ã‚“;hon ã³ã‚‡ã†ã„ã‚“;byouin ã¨ã—ょã‹ã‚“;toshokan ã¨ã†ãょã†ãˆã;toukyoueki ã ã„ãŒã;daigaku ã—ゃã—ã‚“;shashin ã‹ã„ã—ゃ;kaisha ã˜ã©ã†ã—ゃ;jidousha ã—ã‚…ã¨;shuto ã‚ã„ã—;meishi ã—ã”ã¨;shigoto ã‘ã‚“ã¡ãã‹;kenchikuka ãŠã¨ã†ã¨;otouto ã§ã‚“ãã™ãŸã‚“ã©;denkisutando ドイツ;doitsu ドイツジン;doitsujin カメラ;kamera ã‚¿ãƒã‚³;tabako メガãƒ;megane ノート;nooto ボールペン;boorupen イギリス;igirisu ロンダン;rondan ã³ã˜ã‚…ã¤ã‹ã‚“;bijutsukan ã‚ãŸã‚Š;atari ãµã‚“;fun ã“ã†ã˜ã‚‡ã†;koujou ãŸã¦ã‚‚ã®;tatemono ã’ãã˜ã‚‡ã†;gekijou ã¾ã¡;machi ã•ã‘;sake ã†ã¿;umi ã‚„ã¾;yama ã¿ãš;mizu ã«ã»ã‚“ã”;nihongo ãã‹ã„;kikai ã²ã¨ãŸã¡;hitotachi ã—ょã†ã›ã¤;shousetsu ãŠã‚“ãª;onna ãŠã‚“ãªã®ã²ã¨;onnanohito ã¤ãŽ;tsugi ã‚€ã“ã†;mukou ãŒã‹;gaka ã‚„ã­;yane れんãŒ;renga タイヤ;taiya ホテル;hoteru タイプライター;taipuraitaa ビル;biru コーヒー;koohii ã¡ã„ã•ã„;chiisai ãªãŒã„;nagai ã‚ã‹ã„;akai ã‚ã‹ã„;wakai ãŠãŠãã„;ookii ã‚„ã•ã—ã„;yasashii ãµã‚‹ã„;furui ã‚„ã™ã„;yasui ã‹ã‚‹ã„;karui ã¤ã‚ˆã„;tsuyoi ã¨ãŠã„;tooi ã—ã‚ã„;shiroi ãŠã‚‚ã„;omoi ã—ã‚“ã›ã¤;shinsetsu ã—ãšã‹;shizuka ゆã†ã‚ã„;yuumei ãŸã„ã¸ã‚“;taihen ã¨ã¦ã‚‚;totemo ãµã‚“;fun ãˆã„ãŽã‚‡ã†ã‹;eigyouka ã‹ã¡ã‚‡ã†;kachou ã»ã‚“ã ãª;hondana ã‘ã„ã•ã‚“ã;keisanki ã“ãã°ã‚“;kokuban ãˆã‚“ã´ã¤;enpitsu りんã”;ringo ã©ã†ã‚;douro ã“ã©ã‚‚;kodomo ãŠã‚“ãªã®ã“;onnanoko ãŠã¨ã“ã®ã“;otokonoko ã„ã¬;inu ã¨ã‚Š;tori ã­ã“;neko ã‹ã‚“ã“ãã˜ã‚“;kankokujin ã‹ãžã;kazoku ã—ã‚…ã¿;shumi ã—ã‚…ã†ã—ã‚…ã†;shuushuu ã“ã†ã“ã†ã›ã„;koukousei ãょã†ã ã„;kyoudai ドア;doa カレンダー;karendaa ロッカー;rokkaa トイレ;toire テレビ;terebi テーブル;teeburu コンピューター;konpyuutaa ゴルフ;gorufu ã”ã‚‹ãµã˜ã‚‡ã†;gorufujou メンãƒãƒ¼;menbaa クラブ;kurabu ヤード;yaado キャヂィー;kyadii ã†ãˆ;ue ã†ã—ã‚;ushiro ã²ã ã‚Š;hidari ã¿ãŽ;migi よã“;yoko ã¾ã‚“ãªã‹;mannaka ãŠã;oku ã™ã¿;sumi ã‹ã©;kado ã‚ã„ã ;aida ã„ã¾;ima ã¤;tsu ã«ã‚“;nin ã•ã¤;satsu ã»ã‚“;hon ã ã„;dai ã»ã†;hou ã»ã»ã†;hohou ã¯ã‚“;han ã¡ã‚…ã†ã”ãã”;chuugokugo ã‚ã•ã”ã¯ã‚“;asagohan ã“ã†ãŒã„;kougai ãˆã;eki ã—ã”ã¨;shigoto りょã“ã†ã—ゃ;ryokousha ã—ã¦ã‚“;shiten ãœã‚“ã“ã;zenkoku ã—ã‚…ã£ã¡ã‚‡ã†;shucchou ã—ゃã„ã‚“;shain ãŒã„ã—ã‚…ã¤;gaishutsu ã¦ãŒã¿;tegami ã¦ã‚“ã„ã‚“;ten_in ã—ã‚…ã‚‹ã„;shurui ã¦ã„ã‹;teika ã‚ã‚“ãœã„;menzei ã•ã¤;satsu ã»ã—ょã†ã—ょ;hoshousho ã˜ã³ã;jibiki ãˆã„ã”;eigo ã‘ã‚“ã½ã†;kenpou ãã­ã‚“ã³;kinenbi ãŸã°ã“ã‚„;tabakoya ã¶ã©ã†ã—ã‚…;budoushu ã“ã†ãŸã„;koutai タクシー;takushii ビール;biiru パン;pan フイルム;fuirumu カラー;karaa ãƒã‚¬ã‚«ãƒ©ãƒ¼;negakaraa ãƒã‚¸;poji ズームレンズ;zuumurenzu ショートズーム;shootozuumu ミリ;miri ズーム;zuumu パスãƒãƒ¼ãƒˆ;pasupooto ãƒã‚¹;basu ãã‚…ã†ã—ã‚…ã†;kyuushuu ãŸã„ã¸ã‚“;taihen よã;yoku ã¨ãã©ã;tokidoki ã™ã“ã—;sukoshi ゆã£ãり;yukkuri ã‚ã£ãŸã«;mettani ã‚ã•;asa ã²ã‚‹;hiru よる;yoru らã„ã—ã‚…ã†;raishuu ãˆã‚“;en ã‹ã„;kai ã§ã™ã‹ã‚‰;desukara ãれã§ã‚;soredewa ã§ã‚ã˜ã‚ƒã‚;dewajaa ãれã‹ã‚‰;sorekara ãªã‚‹ã»ã©;naruhodo ã‹ã‚‰;kara ã¾ã§;made ã»ã©;hodo ãŠãã‚‹;okiru ã¿ã‚‹;miru テレビãŠã¿ã‚‹;terebiomiru ã„ã‚‹;iru ã¯ã˜ã‚ã‚‹;hajimeru ãŸã¹ã‚‹;taberu ã§ã‚“ã‚ãŠã‹ã‘ã‚‹;denwaokakeru ã‚ã‚‹;aru ã‚ã‚‹ã;aruku ã„ã;iku ã‹ã‹ã‚‹;kakaru ã¯ã˜ã¾ã‚‹;hajimaru よむ;yomu ã®ã‚€;nomu ãŸã°ã“ãŠã™ã†;tabakoosuu ã¾ã¤;matsu ã—ã‚…ã£ã¡ã‚‡ã†ã™ã‚‹;shucchousuru ãŒã„ã—ã‚…ã¤ã™ã‚‹;gaishutsusuru ã•ã‚“ã½ã™ã‚‹;sanposuru ã²ã‚‹ã”ã¯ã‚“;hirugohan ã°ã‚“ã”ã¯ã‚“;bangohan ã¡ã‹;chika ã¡ã‹ã¦ã¤;chikatetsu ã—ょãã©ã†;shokudou ã‚ã†ã‹;rouka ã„りãã¡;iriguchi ã™ã—;sushi ã¡ã‚…ã£ã¡ã‚‡ã†ã‚Šã‚‡ã“ã†;chucchouryokou ãã£ã·;kippu ã“ã†ã¤ã†ã“ã†ã—ゃ;koutsuukousha ã–ã›ã;zaseki ã–ã›ãã—ã¦ã„ã‘ã‚“;zasekishiteiken ã—ã¦ã„ã›ã;shiteiseki ã—ã‚“ã ã„ã‘ã‚“;shindaiken ã—ã‹ãŸ;shikata ã„ã;iki ã‹ãˆã‚Š;kaeri ã¯ã‚„ãŠã;hayaoki ã“ã†ã¡ã‚ƒ;koucha ã»ã†ã“ãã—ょ;houkokusho ãˆã„ãŒ;eiga ãˆã„ãŒã‹ã‚“;eigakan ã¨ã‚‚ã ã¡;tomodachi ãµã;fuku ãã¤;kutsu ã—ãŸãŽ;shitagi ã˜ã‚‡ã†ãã†;joukuu ãã‚…ã†ã“ã†;kyuukou ãã‚…ã†ã‚Šã‚‡ã†;kyuuryou ã‘ã£ã“ã‚“;kekkon ãªã¤;natsu ã‚ã;aki ãµã‚†;fuyu ã—ã¾;shima ã—ã¾ãã«;shimaguni ãŠãŠãã•;ookisa ã˜ã‚“ã“ã†ã¿ã¤ã©;jinkoumitsudo ãœã‚“ãŸã„;zentai ã‚„ã¾;yama ã‹ã–ã‚“;kazan ã¸ã„ã‚„;heiya ã‹ã‚;kawa ゆã;yuki ã‚ã‚;ame ãŸã„ãµã†;taifuu ã‚‚ã¿ã˜;momiji ã“ã†ã‚ˆã†;kouyou ãƒãƒ£ãƒ³ãƒãƒ«;channeru エレベーター;erebeetaa カレーライス;kareeraisu コメヂィー;komedii ãã‚…ã†ã¦ã„;kyuutei ãµã˜ã‚“;fujin ã˜ã‚…ã†ã«ã²ã¨ãˆ;juunihitoe ã“ãã§;kosode ãµã ã‚“ãŽ;fudangi ãã“ã†;kikou ãã§;sode ã™ã;suso ã‹ã¤ã©ã†;katsudou よã†ãµã;youfuku ã‘ã£ã“ã‚“ã—ã;kekkonshiki ãã‹ã„;kikai ガイドブック;gaidobukku テント;tento ゲーム;geemu キャンプファイヤー;kyanpufaiyaa ループ;ruupu ワンピース;wanpiisu ツーピース;tsuupiisu スタイル;sutairu プウル;puuru ã¡ã‚‡ã†ã›ã‚“;chousen ã•ã£ã½ã‚;sapporo ã¾ã—ã‚…ã†ã“;mashuuko ã—れã¨ã“ã¯ã‚“ã¨ã†;shiretokohantou ã»ã ã‹;hodaka ã®ã‚Šãら;norikura ã¿ãªã¿ã‚¢ãƒ«ãƒ—ス;minamiarupusu ããŸã ã‘;kitadake ã—ょã†ãªã‚“ã‹ã„ãŒã‚“;shounankaigan ã“ã‘ã§ã‚‰;kokedera ãŠãã„;osoi ã²ã‚ã„;hiroi ユニーク;yuniiku ã›ã„ã—ã;seishiki ã¨ãã¹ã¤;tokubetsu ゆã†ã ã„;yuudai ã ã„ã˜ã‚‡ã†ã¶;daijoubu ã¡ã„ã•ãª;chiisana ãŠãªã˜;onaji ドイツã›ã„;doitsusei ãã‚“ãªã«;sonnani ã˜ã¤ã«;jitsuni ã‘ã£ã—ã¦;kesshite ã™ã“ã—ã‚‚;sukoshimo ã‚ã™;asu ãれã¨ã‚‚;soretomo ã°ã‹ã‚Š;bakari ã—ã‹;shika ã ã‚Œã‚‚;daremo ã©ã“ã«ã‚‚;dokonimo ãªã«ã‚‚;nanimo ã¨ã‚‚;tomo ã‹ã‚“ã˜ã‚‹;kanjiru ã«ã«ã‚‹;niniru コートをãã‚‹;kootowokiru ã‹ã‚“ãŒãˆã‚‹;kangaeru ãŸãšã­ã‚‹;tazuneru ã‚ã‘ã‚‹;akeru ã‹ã•ã­ã‚‹;kasaneru ã«ã®ã¼ã‚‹;ninoboru ã²ã‚‰ã;hiraku ã—ã¬;shinu ã¨ã¶;tobu ã¨ã¾ã‚‹;tomaru テントをã¯ã‚‹;tentowoharu ã‹ã“ã‚€;kakomu ã¯ã;haku ã˜ã‚…ã†ã˜ã¤ã™ã‚‹;juujitsusuru ã¯ã£ãŸã¤ã™ã‚‹;hattatsusuru ã«ã¦ãã™ã‚‹;nitekisuru ã«ã‹ã‚“ã©ã†ã™ã‚‹;nikandousuru ã‚ãŸã‚Š;atari ã—ã‚“ã”ã†;shingou ã²ã‚ƒã;hyaku ã“ã†ã•ã¦ã‚“;kousaten ãŒã‚;gawa ã»ã†;hou ã¿ã›;mise ã˜ã—ょ;jisho ããã;kisoku ã“ãˆ;koe ã—ょãã˜;shokuji ã‚ã—ょã;washoku ã¡ã‚…ã†ã‹ã‚Šã‚‡ã†ã‚Š;chuukaryouri ã™ã—ã‚„;sushiya ã¦ã£ã‹;tekka もりã‚ã‚ã›;moriawase ã‚ã‹ã ã—;akadashi ã®ã¿ã‚‚ã®;nomimono ã•ã—ã¿;sashimi ã„ãŸã¾ãˆ;itamae ã®ã†ãŽã‚‡ã†;nougyou ã®ã†ãŽã‚‡ã†ã“ã;nougyoukoku ã®ã†ãŽã‚‡ã†ã˜ã‚“ã“ã†;nougyoujinkou ã®ã†ãŽã‚‡ã†ã›ã„ã•ã‚“ã¶ã¤;nougyouseisanbutsu ã›ã‚“ã”;sengo ã›ã‚“ãœã‚“;senzen ã“ã†ãŽã‚‡ã†;kougyou ã“ã†ãŽã‚‡ã†ã“ã;kougyoukoku ã‚ã†ã©ã†ã˜ã‚“ã“ã†;roudoujinkou ã™ã„ã•ã‚“ãŽã‚‡ã†;suisangyou ãˆã‚“よã†ãŽã‚‡ãŽã‚‡ã†;en_yougyogyou ã ã„ã„ã¡ã˜ã•ã‚“ãŽã‚‡ã†;daiichijisangyou ã ã„ã«ã˜ã•ã‚“ãŽã‚‡ã†;dainijisangyou ã ã„ã•ã‚“ã˜ã•ã‚“ãŽã‚‡ã†;daisanjisangyou サービスãŽã‚‡ã†;saabisugyou ãã‹ã„ã‹;kikaika ã¾ã‚り;mawari ãˆã‚“ãŒã‚“;engan ã¯ã„ã™ã„;haisui ã‚‚ãã–ã„;mokuzai ã˜ã‚…よã†;juyou ãょã†ãã‚…ã†;kyoukyuu ã“ããªã„;kokunai ã“ããŒã„;kokugai ãŒã„ã“ãã˜ã‚“;gaikokujin ãŒã„ã“ãã”;gaikokugo ゆã«ã‚…ã†;yunyuu ゆã—ã‚…ã¤;yushutsu ã¦ã¤;tetsu ã©ã†;dou ã“ã†ã¶ã¤;koubutsu ã›ãゆ;sekiyu ã›ããŸã‚“;sekitan メートル;meetoru ãƒã‚¤ã‚¯;baiku ケーキ;keeki ペン;pen スウプ;suupu ジョギング;jogingu ã•ã‚€ã„;samui ã‚ã¤ã„;atsui ã‚ã¤ã„;atsui ã‚ãŸãŸã‹ã„;atatakai ã‚ãŸãŸã‹ã„;atatakai ã‹ã‚ã„ãã†;kawaisou ãã‚…ã†ãã;kyuusoku ãŠã‚‚;omo ã™ã£ã‹ã‚Š;sukkari ã‚‚ã£ã¨;motto ã‹ãªã‚‰ãš;kanarazu ã­ã‚“ã­ã‚“;nennen ã‚„ã;yaku ã™ã;sugu ã‚‚ã¨ã‚‚ã¨;motomoto ã“ã‚“ã‚„;kon_ya ã“ã®ã¾ãˆ;konomae ã¿ãª;mina ã„ã£ã—ょã«;isshoni ã«ã¡ã‹ã‚“;nichikan ã—ã‚…ã†ã‹ã‚“;shuukan ã­ã‚“ã‹ã‚“;nenkan ãれã«;soreni ã®ã†ã¡;nouchi ã—ã‚ã‚‹;shimeru よã”れる;yogoreru ãµãˆã‚‹;fueru ãã‚’ã¤ã‘ã‚‹;kiwotsukeru ã¾ã¤;matsu ã¯ã‚‰ã†;harau ã¯ãŸã‚‰ã;hataraku ã¨ã¾ã‚‹;tomaru ã¾ã‚‚ã‚‹;mamoru ã™ã™ã‚€;susumu ã«ã¸ã‚‹;niheru ã­ã¤ãŒã‚ã‚‹;netsugaaru ã›ã‚“ãŸãã™ã‚‹;sentakusuru ã—ã‚…ã£ã±ã¤ã™ã‚‹;shuppatsusuru ã¡ã‚…ã†ã‚‚ã‚“ã™ã‚‹;chuumonsuru ゆã«ã‚…ã†ã™ã‚‹;yunyuusuru ゆã—ã‚…ã¤ã™ã‚‹;yushutsusuru ã‚ã„ã•ã¤ã™ã‚‹;aisatsusuru ã›ã„ã•ã‚“ã™ã‚‹;seisansuru りã£ã—ã‚…ã‚“;risshun りã£ã‹;rikka りã£ã—ã‚…ã†;risshuu りã£ã¨ã†;rittou ã¯ã˜ã¾ã‚Š;hajimari ãŠã‚り;owari ã¾ãªã¤;manatsu ã¾ãµã‚†;mafuyu ã‚ã¤ã•;atsusa ã¯ã‚“ã˜ã¤;hanjitsu ã¯ã‚“ã¤ã;hantsuki ã¯ã‚“ã¨ã—;hantoshi ã‹ã„ã™ã„よã;kaisuiyoku ã‚„ã¾ã‚„ã¾;yamayama ã¾ã©;mado ã¼ã‚“ãŠã©ã‚Š;bon_odori ã‚らã„ã”ãˆ;waraigoe ã‘ã‚“ã¶ã¤ã«ã‚“;kenbutsunin ã‚;wa ã‹ã‚‰ã ;karada ãã†ã“ã†;kuukou ã‹ã„ã‚‚ã®;kaimono ã¯;ha ããŒãˆ;kigae ã‚„ãã‚…ã†;yakyuu ã—ã‚…ã†ã—ょã;shuushoku ã“ã†ã“ãŒã;koukogaku ã—りょã†;shiryou ã¦ã‚“ã®ã†ã‘;tennouke ã—ãžã;shizoku ã†ã£ãŸãˆ;uttae ã¯ã‚“ã ã‚“;handan ã¿ã‚„ã“;miyako りゅã†ãŒãã›ã„;ryuugakusei ã›ã„ã˜ãŸã„ã›ã„;seijitaisei ã‹ãりã¤;kakuritsu ã¡ã»ã†;chihou ã›ã„ã—ã‚“;seishin ã–ã„ã›ã„;zaisei ã›ã„りょã;seiryoku ヨーロッパ;yooroppa ホーム;hoomu ドア;doa テニス;tenisu ラケット;raketto コート;kooto ベンãƒ;benchi ジュース;juusu ãƒãƒ¬ãƒ¼ãƒœãƒ¼ãƒ«;bareebooru ãƒã‚¹ã‚±ãƒƒãƒˆãƒœãƒ¼ãƒ«;basukettobooru スãƒãƒ¼ãƒ„;supootsu テニスシューズ;tenisushuuzu ã¡ã‚…ã†ã¶ã¡ã»ã†;chuubuchihou ã“ã˜ã;kojiki ã˜ã‚‡ã†ã‚‚ã‚“ã¶ã‚“ã‹;joumonbunka やよã„ã¶ã‚“ã‹;yayoibunka ã“ãµã‚“ã¶ã‚“ã‹;kofunbunka ã‚ã™ã‹ã˜ã ã„;asukajidai ãªã‚‰ã˜ã ã„;narajidai ã—ã›ã„ã›ã„ã©;shiseiseido ã—ょã†ã¨ããŸã„ã—;shoutokutaishi ã»ã†ã‚Šã‚…ã†ã˜;houryuuji ãŸã„ã‹ã®ã‹ã„ã—ã‚“;taikanokaishin ã˜ã‚“ã—ã‚“ã®ã‚‰ã‚“;jinshinnoran ã¨ã;toki ã‚ã„ã ;aida ã•ã³ã—ã„;sabishii ã•ã‚ãŒã—ã„;sawagashii ã™ãšã—ã„;suzushii ã›ã¾ã„;semai ã‹ã—ã“ã„;kashikoi ã‚€ã—ã‚ã¤ã„;mushiatsui ã›ã„ã—ã‚“ã¦ã;seishinteki ã–ã„ã›ã„ã¦ã;zaiseiteki ã„ã‚ゆる;iwayuru ã‚ãŒ;waga ãšã£ã¨;zutto ã™ã“ã—;sukoshi ãã®ã”;sonogo シャワーをã‚ã³ã‚‹;shawaawoabiru ã®ã³ã‚‹;nobiru ãªãŒã‚Œã‚‹;nagareru ãªãŒã‚Œã‚‹;nagareru ãªãŒã‚Œã‚‹;nagareru ラジオをã¤ã‘ã‚‹;rajiowotsukeru ベンãƒã«ã“ã—ã‹ã‘ã‚‹;benchinikoshikakeru ã‚ã™ã‚Œã‚‹;wasureru ã†ã£ãŸãˆã‚‹;uttaeru ãŸã¦ã‚‹;tateru ã¤ãŸãˆã‚‹;tsutaeru ã”ã¡ãã†ã‚’ã¤ãã‚‹;gochisouwotsukuru ã¯ã;haku ã­ã‚€ã‚‹;nemuru ã™ã‚ã‚‹;suwaru ã†ã”ã;ugoku ã—ã¾ã‚‹;shimaru ã¯ã‚’ã¿ãŒã;hawomigaku ã­ãŒã†;negau ã¨ã‚‹;toru ã¤ãã‚‹;tsukuru ã¤ãã‚‹;tsukuru ã¯ã‚“ã ã‚“ã‚’ãã ã™;handanwokudasu ã†ã¤ã‚‹;utsuru ã“ã¾ã‚‹;komaru ã†ã‚“ã¦ã‚“ã™ã‚‹;untensuru ã—ã‚…ã†ã—ょãã™ã‚‹;shuushokusuru ã‹ãりã¤ã™ã‚‹;kakuritsusuru ã—ょãã˜ã‚’ã™ã‚‹;shokujiwosuru ã‹ã„ã‚‚ã®ã‚’ã™ã‚‹;kaimonowosuru ããŒãˆã‚’ã™ã‚‹;kigaewosuru テニスをã™ã‚‹;tenisuwosuru ã‚„ãã‚…ã†ã‚’ã™ã‚‹;yakyuuwosuru りゅã†ãŒãã™ã‚‹;ryuugakusuru ã¡ãã‚…ã†;chikyuu ã‚‚ã¨ã‚ã‚‹;motomeru ã™ãã†;sukuu ã‚„ãã‚‚ã¡;yakimochi ã™ãªãŠ;sunao ãŸã„ã—ãŸ;taishita ã†ã¤;utsu ã„ã˜ã‚‡ã†;ijou ãã‚…ã†ã—;kyuushi ã³ã£ãり;bikkuri ã¿ã¡ã—ãŠ;michishio ã‚’ã®ã¼ã‚‹;wonoboru ãã³ãˆã¨ã—ゃã‹ã„ã—ã‚…ãŽãょã†ã‚ã“ãれんã½ã†;sobietoshakaishugikyouwakokurenpou ãµã‘ã‚“ã“ã†;fukenkou splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_romanize.test.php000066400000000000000000000020141134327003500253640ustar00rootroot00000000000000 */ function test_japanese(){ $tests = file(dirname(__FILE__).'/utf8_kanaromaji.txt'); $line = 1; foreach($tests as $test){ list($jap,$rom) = explode(';',trim($test)); $chk = utf8_romanize($jap); #if($chk != $rom) echo "$jap\t->\t$chk\t!=\t$rom\t($line)\n"; $this->assertEqual($chk,$rom); $line++; } } /** * Test romanization of character that would usually be deaccented in a different * way FS#1117 * * @author Andreas Gohr */ function test_deaccented(){ $this->assertEqual("a A a A a o O",utf8_romanize("Ã¥ Ã… ä Ä ä ö Ö")); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_stripspecials.test.php000066400000000000000000000017751134327003500264420ustar00rootroot00000000000000assertEqual(utf8_stripspecials($test[0],$test[1],$test[2]),$test[3]); } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_substr.test.php000066400000000000000000000030251134327003500250650ustar00rootroot00000000000000assertEqual(utf8_substr($test[0],$test[1],$test[2]),$test[3]); } } function test2_bug891() { // we test multiple cases here - format: in, offset, length, out $tests = array(); $str = str_repeat('в',66000).'@@'; $tests[] = array($str, 65600, 1, 'в'); $tests[] = array($str,0,66002,$str); foreach($tests as $test){ $this->assertEqual(utf8_substr($test[0],$test[1],$test[2]),$test[3]); } } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_unicode.test.php000066400000000000000000000026131134327003500251730ustar00rootroot00000000000000assertEqual(utf8_to_unicode($in),$out); } function test_from_2byte(){ $in = "\xc3\xbc"; $out = array(252); $this->assertEqual(utf8_to_unicode($in),$out); } function test_from_3byte(){ $in = "\xe2\x99\x8a"; $out = array(9802); $this->assertEqual(utf8_to_unicode($in),$out); } function test_from_4byte(){ $in = "\xf4\x80\x80\x81"; $out = array(1048577); $this->assertEqual(utf8_to_unicode($in),$out); } function test_to_1byte(){ $out = 'a'; $in = array(97); $this->assertEqual(unicode_to_utf8($in),$out); } function test_to_2byte(){ $out = "\xc3\xbc"; $in = array(252); $this->assertEqual(unicode_to_utf8($in),$out); } function test_to_3byte(){ $out = "\xe2\x99\x8a"; $in = array(9802); $this->assertEqual(unicode_to_utf8($in),$out); } function test_to_4byte(){ $out = "\xf4\x80\x80\x81"; $in = array(1048577); $this->assertEqual(unicode_to_utf8($in),$out); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/inc/utf8_utf16be.test.php000066400000000000000000000012511134327003500250160ustar00rootroot00000000000000assertEqual(utf8_to_utf16be($this->utf8), $this->utf16); } /** * Convert from UTF-16BE to UTF-8 */ function test_from16be(){ $this->assertEqual(utf16be_to_utf8($this->utf16),$this->utf8); } } //Setup VIM: ex: et ts=2 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/lib/000077500000000000000000000000001134327003500211035ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/000077500000000000000000000000001134327003500216645ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/css_css_compress.test.php000066400000000000000000000036131134327003500267310ustar00rootroot00000000000000assertEqual(css_compress($text), ''); } function test_mlcom2(){ $text = '#comment/* */ { color: lime; }'; $this->assertEqual(css_compress($text), '#comment/* */{color:lime;}'); } function test_slcom1(){ $text = '// this is a comment'; $this->assertEqual(css_compress($text), ''); } function test_slcom2(){ $text = '#foo { color: lime; // another comment }'; $this->assertEqual(css_compress($text), '#foo{color:lime;}'); } function test_slcom3(){ $text = '#foo { background-image: url(http://foo.bar/baz.jpg); }'; $this->assertEqual(css_compress($text), '#foo{background-image:url(http://foo.bar/baz.jpg);}'); } function test_hack(){ $text = '/* Mac IE will not see this and continue with inline-block */ /* \\*/ display: inline; /* */'; $this->assertEqual(css_compress($text), '/* \\*/display:inline;/* */'); } function test_hack2(){ $text = '/* min-height hack for Internet Explorer http://www.cssplay.co.uk/boxes/minheight.html */ /*\\*/ * html .page { height: 450px; } /**/'; $this->assertEqual(css_compress($text), '/*\\*/* html .page{height:450px;}/**/'); } function test_nl1(){ $text = "a{left:20px;\ntop:20px}"; $this->assertEqual(css_compress($text), 'a{left:20px;top:20px}'); } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress.test.php000066400000000000000000000067041134327003500264050ustar00rootroot00000000000000assertEqual(js_compress($text), ''); } function test_mlcom2(){ $text = 'var foo=6;/* another comment */'; $this->assertEqual(js_compress($text), 'var foo=6;'); } function test_mlcomcond(){ $text = '/*@if (@_win32)'; $this->assertEqual(js_compress($text), '/*@if(@_win32)'); } function test_slcom1(){ $text = '// an comment'; $this->assertEqual(js_compress($text), ''); } function test_slcom2(){ $text = 'var foo=6;// another comment '; $this->assertEqual(js_compress($text), 'var foo=6;'); } function test_slcom3(){ $text = 'var foo=6;// another comment / or something with // comments '; $this->assertEqual(js_compress($text), 'var foo=6;'); } function test_regex1(){ $text = 'foo.split( /[a-Z\/]*/ );'; $this->assertEqual(js_compress($text), 'foo.split(/[a-Z\/]*/);'); } function test_regex_in_array(){ $text = '[/"/ , /"/ , /"/]'; $this->assertEqual(js_compress($text), '[/"/,/"/,/"/]'); } function test_regex_in_hash(){ $text = '{ a : /"/ }'; $this->assertEqual(js_compress($text), '{a:/"/}'); } function test_regex_preceded_by_spaces_caracters(){ $text = "text.replace( \t \r\n /\"/ , ".'"//" )'; $this->assertEqual(js_compress($text), 'text.replace(/"/,"//")'); } function test_dquot1(){ $text = 'var foo="Now what \\" \'do we//get /*here*/ ?";'; $this->assertEqual(js_compress($text), $text); } function test_dquot2(){ $text = 'var foo="Now what \\\\\\" \'do we//get /*here*/ ?";'; $this->assertEqual(js_compress($text), $text); } function test_dquotrunaway(){ $text = 'var foo="Now where does it end'; $this->assertEqual(js_compress($text), "$text"); } function test_squot1(){ $text = "var foo='Now what \\' \"do we//get /*here*/ ?';"; $this->assertEqual(js_compress($text), $text); } function test_squotrunaway(){ $text = "var foo='Now where does it end"; $this->assertEqual(js_compress($text), "$text"); } function test_nl1(){ $text = "var foo=6;\nvar baz=7;"; $this->assertEqual(js_compress($text), 'var foo=6;var baz=7;'); } function test_lws1(){ $text = " \t var foo=6;"; $this->assertEqual(js_compress($text), 'var foo=6;'); } function test_tws1(){ $text = "var foo=6; \t "; $this->assertEqual(js_compress($text), 'var foo=6;'); } function test_shortcond(){ $text = "var foo = (baz) ? 'bar' : 'bla';"; $this->assertEqual(js_compress($text), "var foo=(baz)?'bar':'bla';"); } /** * Test the files provided with the original JsStrip */ function test_original(){ $files = glob(dirname(__FILE__).'/js_js_compress/test-*-in.js'); foreach($files as $file){ $info = "Using file $file"; $this->signal('failinfo',$info); $this->assertEqual(js_compress(file_get_contents($file)), file_get_contents(substr($file,0,-5).'out.js')); }; } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/000077500000000000000000000000001134327003500247075ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-in.js000066400000000000000000000000601134327003500331300ustar00rootroot00000000000000 var s = " /* this is a comment */ " ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInDoubleQuotes1-out.js000066400000000000000000000000421134327003500333310ustar00rootroot00000000000000var s=" /* this is a comment */ ";splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-in.js000066400000000000000000000000501134327003500331300ustar00rootroot00000000000000 var s = "// this is a comment "; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInDoubleQuotes2-out.js000066400000000000000000000000361134327003500333350ustar00rootroot00000000000000var s="// this is a comment ";splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInSingleQuotes1-in.js000066400000000000000000000000601134327003500331370ustar00rootroot00000000000000 var s = ' /* this is a comment */ ' ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInSingleQuotes1-out.js000066400000000000000000000000421134327003500333400ustar00rootroot00000000000000var s=' /* this is a comment */ ';splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInSingleQuotes2-in.js000066400000000000000000000000501134327003500331370ustar00rootroot00000000000000 var s = '// this is a comment '; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentInSingleQuotes2-out.js000066400000000000000000000000361134327003500333440ustar00rootroot00000000000000var s='// this is a comment ';splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentMultiline-in.js000066400000000000000000000002011134327003500321040ustar00rootroot00000000000000 if (true) { /* this * is a * multiline comment */ document.write("true"); /* this is another */ } splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentMultiline-out.js000066400000000000000000000000411134327003500323070ustar00rootroot00000000000000if(true){document.write("true");}splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentSingleLine-in.js000066400000000000000000000001461134327003500322030ustar00rootroot00000000000000 if (true) { // this is a single line comment document.write("true") ; // another } splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-CommentSingleLine-out.js000066400000000000000000000000411134327003500323760ustar00rootroot00000000000000if(true){document.write("true");}splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-IfThenElseBraces-in.js000066400000000000000000000001451134327003500317340ustar00rootroot00000000000000 if ( true ) { document.write("foo"); } else { document.write("bar"); } splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-IfThenElseBraces-out.js000066400000000000000000000000741134327003500321360ustar00rootroot00000000000000if(true){document.write("foo");}else{document.write("bar");}splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-IfThenElseNoBraces-in.js000066400000000000000000000001161134327003500322270ustar00rootroot00000000000000 if ( true ) document.write("foo"); else document.write("bar"); splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-IfThenElseNoBraces-out.js000066400000000000000000000000711134327003500324300ustar00rootroot00000000000000if(true)document.write("foo");else document.write("bar");splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpBackslash-in.js000066400000000000000000000000401134327003500316660ustar00rootroot00000000000000 var r = / a backslash\// ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpBackslash-out.js000066400000000000000000000000271134327003500320740ustar00rootroot00000000000000var r=/ a backslash\//;splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpSimple-in.js000066400000000000000000000000321134327003500312250ustar00rootroot00000000000000 var r = /simple/g ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpSimple-out.js000066400000000000000000000000201134327003500314230ustar00rootroot00000000000000var r=/simple/g;splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-in.js000066400000000000000000000000571134327003500332510ustar00rootroot00000000000000 var r = / simple with whitespace /g ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpSimpleWhitespace-out.js000066400000000000000000000000421134327003500334440ustar00rootroot00000000000000var r=/ simple with whitespace /g;splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpString-in.js000066400000000000000000000000721134327003500312460ustar00rootroot00000000000000 var r = "fruit" ; r.replace ( /fruit/g, "apple") ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-RegexpString-out.js000066400000000000000000000000521134327003500314450ustar00rootroot00000000000000var r="fruit";r.replace(/fruit/g,"apple");splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementDoWhile-in.js000066400000000000000000000000461134327003500320460ustar00rootroot00000000000000var x = 0; do x=x+1 while (x < 10); splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementDoWhile-out.js000066400000000000000000000000351134327003500322450ustar00rootroot00000000000000var x=0;do x=x+1 while(x<10);splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementForIn-in.js000066400000000000000000000000561134327003500315310ustar00rootroot00000000000000for ( var x in foo ) document.write(x); splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementForIn-out.js000066400000000000000000000000431134327003500317260ustar00rootroot00000000000000for(var x in foo)document.write(x);splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementNew-in.js000066400000000000000000000000311134327003500312360ustar00rootroot00000000000000var x = new Object();splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementNew-out.js000066400000000000000000000000231134327003500314400ustar00rootroot00000000000000var x=new Object();splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementSwitchCase-in.js000066400000000000000000000000731134327003500325500ustar00rootroot00000000000000var x = 1; switch (x) { case 1: document.write(1); }splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StatementSwitchCase-out.js000066400000000000000000000000541134327003500327500ustar00rootroot00000000000000var x=1;switch(x){case 1:document.write(1);}splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StringDoubleQuotes-in.js000066400000000000000000000000721134327003500324270ustar00rootroot00000000000000 var s1 = "double \"quotes\"" ; var s2 = "'test'" ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StringDoubleQuotes-out.js000066400000000000000000000000531134327003500326270ustar00rootroot00000000000000var s1="double \"quotes\"";var s2="'test'";splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StringSingleQuotes-in.js000066400000000000000000000001541134327003500324370ustar00rootroot00000000000000 var s1 = 'single \'quotes\' ' ; var s2= '/* test */' ; var s3 = '// test' ; var s4 = '"test"' ; splitbrain-dokuwiki-d6c824b/_test/cases/lib/exe/js_js_compress/test-StringSingleQuotes-out.js000066400000000000000000000001211134327003500326320ustar00rootroot00000000000000var s1='single \'quotes\' ';var s2='/* test */';var s3='// test';var s4='"test"';splitbrain-dokuwiki-d6c824b/_test/debug.note000066400000000000000000000003111134327003500212070ustar00rootroot00000000000000print "-----------------------------------------------------\n"; print_r(array_map('stripbyteindex',$this->H->calls)); print "-----------------------------------------------------\n"; print_r($calls); splitbrain-dokuwiki-d6c824b/_test/index.php000066400000000000000000000114431134327003500210620ustar00rootroot00000000000000 'Simple Test', 'path' => SIMPLE_TEST)); } function & DW_TESTS_GetReporter() { static $Reporter = NULL; if ( !$Reporter ) { switch ( DW_TESTS_OUTPUT ) { case DW_TESTS_OUTPUT_XML: require_once SIMPLE_TEST . 'xml.php'; $Reporter = new XmlReporter(); break; case DW_TESTS_OUTPUT_HTML: default: $Reporter = new HTMLReporter('utf-8'); break; } } return $Reporter; } function DW_TESTS_PaintRunMore() { switch ( DW_TESTS_OUTPUT ) { case DW_TESTS_OUTPUT_XML: break; case DW_TESTS_OUTPUT_HTML: default: echo "

Run more tests

"; break; } } function DW_TESTS_PaintHeader() { switch ( DW_TESTS_OUTPUT ) { case DW_TESTS_OUTPUT_XML: header('Content-Type: text/xml; charset="utf-8"'); break; case DW_TESTS_OUTPUT_HTML: $header = << Dokuwiki: Unit Test Suite EOD; echo $header; default: break; } } function DW_TESTS_PaintSuiteHeader() { switch ( DW_TESTS_OUTPUT ) { case DW_TESTS_OUTPUT_XML: break; case DW_TESTS_OUTPUT_HTML: default: echo "

Dokuwiki: Unit Test Suite

\n"; echo "

Test groups"; echo " || Test cases

"; break; } } function DW_TESTS_PaintCaseList() { switch ( DW_TESTS_OUTPUT ) { case DW_TESTS_OUTPUT_XML: echo XMLTestManager::getTestCaseList(TEST_CASES); break; case DW_TESTS_OUTPUT_HTML: default: echo HTMLTestManager::getTestCaseList(TEST_CASES); break; } } function DW_TESTS_PaintGroupTestList() { switch ( DW_TESTS_OUTPUT ) { case DW_TESTS_OUTPUT_XML: echo XMLTestManager::getGroupTestList(TEST_GROUPS); break; case DW_TESTS_OUTPUT_HTML: default: echo HTMLTestManager::getGroupTestList(TEST_GROUPS); break; } } function DW_TESTS_PaintFooter() { switch ( DW_TESTS_OUTPUT ) { case DW_TESTS_OUTPUT_XML: break; case DW_TESTS_OUTPUT_HTML: default: $footer = << EOD; echo $footer; break; } } /** OUTPUT STARTS HERE **/ // If it's a group test if (isset($_GET['group'])) { if ('all' == $_GET['group']) { TestManager::runAllTests(DW_TESTS_GetReporter()); } else { TestManager::runGroupTest(ucfirst($_GET['group']), TEST_GROUPS, DW_TESTS_GetReporter()); } DW_TESTS_PaintRunMore(); exit(); } // If it's a single test case if (isset($_GET['case'])) { TestManager::runTestCase($_GET['case'], TEST_CASES, DW_TESTS_GetReporter()); DW_TESTS_PaintRunMore(); exit(); } // Else it's the main page DW_TESTS_PaintHeader(); DW_TESTS_PaintSuiteHeader(); if (isset($_GET['show']) && $_GET['show'] == 'cases') { DW_TESTS_PaintCaseList(); } else { /* no group specified, so list them all */ DW_TESTS_PaintGroupTestList(); } DW_TESTS_PaintFooter(); splitbrain-dokuwiki-d6c824b/_test/lib/000077500000000000000000000000001134327003500200055ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/_test/lib/cli_reporter.php000066400000000000000000000063421134327003500232140ustar00rootroot00000000000000"); } if (! defined('ST_FAILS_RETURN_CODE')) { define('ST_FAILS_RETURN_CODE', 1); } if (version_compare(phpversion(), '4.3.0', '<') || php_sapi_name() == 'cgi') { define('STDOUT', fopen('php://stdout', 'w')); define('STDERR', fopen('php://stderr', 'w')); register_shutdown_function( create_function('', 'fclose(STDOUT); fclose(STDERR); return true;')); } /** * Minimal command line test displayer. Writes fail details to STDERR. Returns 0 * to the shell if all tests pass, ST_FAILS_RETURN_CODE if any test fails. */ class CLIReporter extends SimpleReporter { var $faildetail_separator = ST_FAILDETAIL_SEPARATOR; var $_failinfo; function CLIReporter($faildetail_separator = NULL) { $this->SimpleReporter(); if (! is_null($faildetail_separator)) { $this->setFailDetailSeparator($faildetail_separator); } } function setFailDetailSeparator($separator) { $this->faildetail_separator = $separator; } /** * Return a formatted faildetail for printing. */ function &_paintTestFailDetail(&$message) { $buffer = ''; $faildetail = $this->getTestList(); array_shift($faildetail); $buffer .= implode($this->faildetail_separator, $faildetail); $buffer .= $this->faildetail_separator . "$message\n"; return $buffer; } /** * Paint fail faildetail to STDERR. */ function paintFail($message) { parent::paintFail($message); fwrite(STDERR, 'FAIL' . $this->faildetail_separator . $this->_paintTestFailDetail($message)); if($this->_failinfo){ fwrite(STDERR, ' additional info was: '.$this->_failinfo."\n"); $this->_failinfo = ''; } } /** * Paint exception faildetail to STDERR. */ function paintException($message) { parent::paintException($message); fwrite(STDERR, 'EXCEPTION' . $this->faildetail_separator . $this->_paintTestFailDetail($message)); } /** * Handle failinfo message */ function paintSignal($type,$message) { parent::paintSignal($type,$message); if($type = 'failinfo') $this->_failinfo = $message; } /** * Paint a footer with test case name, timestamp, counts of fails and * exceptions. */ function paintFooter($test_name) { $buffer = $this->getTestCaseProgress() . '/' . $this->getTestCaseCount() . ' test cases complete: '; if (0 < ($this->getFailCount() + $this->getExceptionCount())) { $buffer .= $this->getPassCount() . " passes"; if (0 < $this->getFailCount()) { $buffer .= ", " . $this->getFailCount() . " fails"; } if (0 < $this->getExceptionCount()) { $buffer .= ", " . $this->getExceptionCount() . " exceptions"; } $buffer .= ".\n"; fwrite(STDOUT, $buffer); exit(ST_FAILS_RETURN_CODE); } else { fwrite(STDOUT, $buffer . $this->getPassCount() . " passes.\n"); } } } splitbrain-dokuwiki-d6c824b/_test/lib/mock_functions.php000066400000000000000000000455441134327003500235530ustar00rootroot00000000000000deploy(); return $mock; } /** * Removes the mock function implementation and restores * the real implementation (if one existed) * @TODO Would be good to have this called automatically * @param string $function Function name * @access public * @static */ function restore($function) { $mock = & MockFunction::_instance($function); $mock->restore(); } /** * Fetch a singleton instance of SimpleMockFunction * @param string $function Function name * @param boolean $fresh Force a fresh instance * @access private * @static */ function &_instance($function, $fresh = FALSE) { static $singleton = array(); $function = strtolower($function); if ( $fresh ) { if ( isset($singleton[$function]) ) { unset($singleton[$function]); } } if ( !isset($singleton[$function]) ) { // TODO: case sensitivity issues $class = $function."MockFunction"; MockFunction::_generateSubClass($class, $function); $singleton[$function] = new $class($function); } return $singleton[$function]; } /** * Required for strict mode and SimpleMock * @TODO Should perhaps be placed in SimpleFunctionGenerator * @param string $class subclass name * @param string $method method name * @access private * @static */ function _generateSubClass($class, $method) { if ( class_exists($class) ) { return; } $code = "class $class extends SimpleMockFunction {\n"; $code .= " function $method () {}\n"; $code .= "}\n"; eval($code); } /** * Changes the default wildcard object. * @param string $function Function name wildcard applies to * @param mixed $wildcard Parameter matching wildcard. * @access public * @static */ function setWildcard($function, $wildcard) { $mock = & MockFunction::_instance($function); $mock->setWildcard($wildcard); } /** * Fetches the call count of a function so far. * @param string $function Function name called. * @return Number of calls so far. * @access public * @static */ function getCallCount($function) { $mock = & MockFunction::_instance($function); return $mock->getCallCount($function); } /** * Sets a return for a parameter list that will * be passed by value for all calls to this function. * @param string $function Function name. * @param mixed $value Result of call passed by value. * @param array $args List of parameters to match * including wildcards. * @access public * @static */ function setReturnValue($function, $value, $args = false) { $mock = & MockFunction::_instance($function); $mock->setReturnValue($function, $value, $args); } /** * Sets a return for a parameter list that will * be passed by value only when the required call count * is reached. * @param integer $timing Number of calls in the future * to which the result applies. If * not set then all calls will return * the value. * @param string $function Function name. * @param mixed $value Result of call passed by value. * @param array $args List of parameters to match * including wildcards. * @access public * @static */ function setReturnValueAt($timing, $function, $value, $args = false) { $mock = & MockFunction::_instance($function); $mock->setReturnValueAt($timing, $function, $value, $args); } /** * Sets a return for a parameter list that will * be passed by reference for all calls. * @param string $function Function name. * @param mixed $reference Result of the call will be this object. * @param array $args List of parameters to match * including wildcards. * @access public * @static */ function setReturnReference($function, &$reference, $args = false) { $mock = & MockFunction::_instance($function); $mock->setReturnReference($function, $reference, $args); } /** * Sets a return for a parameter list that will * be passed by value only when the required call count * is reached. * @param integer $timing Number of calls in the future * to which the result applies. If * not set then all calls will return * the value. * @param string $function Function name. * @param mixed $reference Result of the call will be this object. * @param array $args List of parameters to match * including wildcards. * @access public * @static */ function setReturnReferenceAt($timing, $function, &$reference, $args = false) { $mock = & MockFunction::_instance($function); $mock->setReturnReferenceAt($timing, $function, $reference, $args); } /** * Sets up an expected call with a set of * expected parameters in that call. All * calls will be compared to these expectations * regardless of when the call is made. * @param string $function Function call to test. * @param array $args Expected parameters for the call * including wildcards. * @param string $message Overridden message. * @access public * @static */ function expectArguments($function, $args, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectArguments($function, $args, $message); } /** * Sets up an expected call with a set of * expected parameters in that call. The * expected call count will be adjusted if it * is set too low to reach this call. * @param integer $timing Number of calls in the future at * which to test. Next call is 0. * @param string $function Function call to test. * @param array $args Expected parameters for the call * including wildcards. * @param string $message Overridden message. * @access public * @static */ function expectArgumentsAt($timing, $function, $args, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectArgumentsAt($timing, $function, $args, $message); } /** * Sets an expectation for the number of times * a function will be called. * @param string $function Function call to test. * @param integer $count Number of times it should * have been called at tally. * @param string $message Overridden message. * @access public * @static */ function expectCallCount($function, $count, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectCallCount($function, $count, $message); } /** * Sets the number of times a function may be called * before a test failure is triggered. * @param string $function Function call to test. * @param integer $count Most number of times it should * have been called. * @param string $message Overridden message. * @access public * @static */ function expectMaximumCallCount($function, $count, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectMaximumCallCount($function, $count, $message); } /** * Sets the minimum number of times the function must be called * otherwise a test failure is triggered * @param string $function Function call to test. * @param integer $count Least number of times it should * have been called. * @param string $message Overridden message. * @access public * @static */ function expectMinimumCallCount($function, $count, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectMinimumCallCount($function, $count, $message); } /** * Convenience method for barring a function * call. * @param string $function Function call to ban. * @param string $message Overridden message. * @access public * @static */ function expectNever($function, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectNever($function, $message); } /** * Convenience method for a single function * call. * @param string $function Function call to track. * @param array $args Expected argument list or * false for any arguments. * @param string $message Overridden message. * @access public * @static */ function expectOnce($function, $args = false, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectOnce($function, $args, $message); } /** * Convenience method for requiring a function * call. * @param string $function Function call to track. * @param array $args Expected argument list or * false for any arguments. * @param string $message Overridden message. * @access public * @static */ function expectAtLeastOnce($function, $args = false, $message = '%s') { $mock = & MockFunction::_instance($function); $mock->expectAtLeastOnce($function, $args, $message); } function atTestEnd($function) { $mock = & MockFunction::_instance($function); $mock->atTestEnd($function); } } /** * Represents a single, mocked function, tracking calls made to it * @package SimpleTest * @subpackage MockFunctions */ class SimpleMockFunction extends SimpleMock { var $_is_mocked = FALSE; var $_generator; /** * Sets up the mock, creating a generator depending on whether * the function is already declared * @param string $function Name of function being mocked */ function SimpleMockFunction($function) { SimpleMock :: SimpleMock(); if ( function_exists($function) ) { $this->_generator = new SimpleDeclaredFunctionGenerator($function); } else { $this->_generator = new SimpleUndeclaredFunctionGenerator($function); } } /** * Deploys the mock function implementation into PHP's function * table, replacing any existing implementation * @access public */ function deploy() { if ( !$this->_is_mocked ) { $this->_is_mocked = TRUE; $this->_generator->deploy(); } } /** * Restores the state of PHP's function table to that before * the mock function was deployed. Removes the mock function * implementation and restores any existing implementation of * that function * @access public */ function restore() { if ( $this->_is_mocked ) { $this->_is_mocked = FALSE; $this->_generator->restore(); } } } /** * Base class for deploying and restoring from mock functions * @package SimpleTest * @subpackage MockFunctions * @abstract */ class SimpleFunctionGenerator { var $_function; /** * @TODO Validate the function name (as it's being used in eval) * @TODO Add list of illegal functions (ones which must not be mocked * as they will break SimpleTest, which uses them) * @param string $function Name of function being mocked */ function SimpleFunctionGenerator($function) { $this->_function = $function; } /** * Generates the mock function implementation, using eval * @access private */ function _generateMockFunction() { $code = "function " . $this->_function . "() {\n"; $code .= " \$args = func_get_args();\n"; $code .= " \$mock = & MockFunction::_instance('".$this->_function."');\n"; $code .= " \$result = &\$mock->_invoke(\"".$this->_function."\", \$args);\n"; $code .= " return \$result;\n"; $code .= "}\n"; eval($code); } } /** * Mock function generator for functions which have already been declared * @package SimpleTest * @subpackage MockFunctions */ class SimpleDeclaredFunctionGenerator extends SimpleFunctionGenerator { var $_tmp_function = NULL; /** * Invokes the _generateTmpFnFname * @param string $function Name of function being mocked */ function SimpleDeclaredFunctionGenerator($function) { SimpleFunctionGenerator::SimpleFunctionGenerator($function); $this->_generateTmpFnFname(); } /** * Generates a temporary name for the declared function implementation * which is will be renamed to while the mock function is in use * @access private */ function _generateTmpFnFname() { static $count = 1; $this->_tmp_function = 'tmp_'.md5(time().$this->_function.$count); $count++; } /** * Deploys the mock function implementation * @access public */ function deploy() { runkit_function_rename( $this->_function, $this->_tmp_function ) or trigger_error('Error archiving real function implementation', E_USER_ERROR); $this->_generateMockFunction(); } /** * Removes the mock function implementation and restores * the previously declared implementation * @access public */ function restore() { runkit_function_remove($this->_function) or trigger_error('Error removing mock function', E_USER_ERROR); runkit_function_rename( $this->_tmp_function, $this->_function ) or trigger_error('Error restoring real function', E_USER_ERROR); } } /** * Mock function generator for functions which have not * already been declared * @package SimpleTest * @subpackage MockFunctions */ class SimpleUndeclaredFunctionGenerator extends SimpleFunctionGenerator { /** * Deploys the mock function implementation * @access public */ function deploy() { $this->_generateMockFunction(); } /** * Removes the mock function implementation * @access public */ function restore() { runkit_function_remove($this->_function) or trigger_error('Error removing mock function', E_USER_ERROR); } } splitbrain-dokuwiki-d6c824b/_test/lib/rss_writer_class.php000066400000000000000000000304241134327003500241110ustar00rootroot00000000000000error=("required ".$scope." property \"".$property."\" is already set"); return 0; } $required[$property]=1; $required_properties++; } else { if(IsSet($optional[$property])) { if($optional[$property]) { $this->error=("optional ".$scope." property \"".$property."\" is already set"); return 0; } $optional[$property]=1; } else { if(GetType($colon=strpos($property,":",0))=="integer") { $namespace=substr($property,0,$colon); if(!(!strcmp($namespace,"rdf") || IsSet($this->rssnamespaces[$namespace]))) $this->error=("the name space of property \"".$property."\" was not declared"); } else $this->error=("\"".$property."\" is not a supported ".$scope." property"); } } if(!($this->adddatatag($property,$noattributes,$properties[$property],$parent,$path))) return 0; Next($properties); $end=(GetType($property=Key($properties))!="string"); } if($required_propertieserror=("it was not specified the required ".$scope." property \"".$property."\""); return 0; } Next($required); $end=(GetType($property=Key($required))!="string"); } } return 1; } /* * Public functions * */ Function addchannel(&$properties) { if(strcmp($this->error,"")) return 0; if(strcmp($this->channel,"")) { $this->error="a channel was already added"; return 0; } $channel_attributes=array(); switch($this->specification) { case "0.9": $root="rdf:RDF"; $attributes=array("xmlns:rdf"=>"http://www.w3.org/1999/02/22-rdf-syntax-ns#","xmlns"=>"http://my.netscape.com/rdf/simple/0.9/"); $required=array("description"=>0,"link"=>0,"title"=>0); $optional=array(); break; case "0.91": $root="rss"; $attributes=array("version"=>$this->specification); $required=array("description"=>0,"language"=>0,"link"=>0,"title"=>0); $optional=array("copyright"=>0,"docs"=>0,"lastBuildDate"=>0,"managingEditor"=>0,"pubDate"=>0,"rating"=>0,"webMaster"=>0); break; case "1.0": if(!strcmp($this->about,"")) { $this->error="it was not specified the about URL attribute"; return 0; } $root="rdf:RDF"; $attributes=array("xmlns:rdf"=>"http://www.w3.org/1999/02/22-rdf-syntax-ns#","xmlns"=>"http://purl.org/rss/1.0/"); Reset($this->rssnamespaces); $end=(GetType($namespace=Key($this->rssnamespaces))!="string"); for(;!$end;) { if(!strcmp($namespace,"rdf")) { $this->error="the rdf namespace is being redeclared"; return 0; } $attributes[("xmlns:".$namespace)]=$this->rssnamespaces[$namespace]; Next($this->rssnamespaces); $end=(GetType($namespace=Key($this->rssnamespaces))!="string"); } $channel_attributes=array("rdf:about"=>$this->about); $required=array("description"=>0,"link"=>0,"title"=>0); $optional=array(); break; default: $this->error="it was not specified a supported RSS specification version"; return 0; } $this->addtag($root,$attributes,"",$path,1); $this->root=$path; if(!($this->addtag("channel",$channel_attributes,$this->root,$path,1))) return 0; if(!($this->addrssproperties($properties,$path,$required,$optional,"channel"))) return 0; $this->channel=$path; return 1; } Function additem(&$properties) { if(strcmp($this->error,"")) return 0; if(!strcmp($this->channel,"")) { $this->error="the channel was not yet added"; return 0; } if(strcmp($this->textinput,"")) { $this->error="items can not be added to the channel after defining the textinput"; return 0; } $attributes=array(); switch($this->specification) { case "0.9": $parent=$this->root; break; case "0.91": $parent=$this->channel; break; case "1.0": if(IsSet($properties["link"])) $attributes["rdf:about"]=$properties["link"]; $parent=$this->root; break; default: $this->error="it was not specified a supported RSS specification version"; return 0; } if(!($this->addtag("item",$attributes,$parent,$path,1))) return 0; $required=array("link"=>0,"title"=>0); $optional=array("description"=>0); if(!($this->addrssproperties($properties,$path,$required,$optional,"item"))) return 0; if(!strcmp($this->specification,"1.0")) { if(!strcmp($this->itemsequence,"")) { $attributes=array(); if(!($this->addtag("items",$attributes,$this->channel,$path,1) && $this->addtag("rdf:Seq",$attributes,$path,$path,1))) return 0; $this->itemsequence=$path; } $attributes=array("rdf:resource"=>$properties["link"]); if(!($this->addtag("rdf:li",$attributes,$this->itemsequence,$path,0))) return 0; } $this->items++; return 1; } Function addimage(&$properties) { if(strcmp($this->error,"")) return 0; if(!strcmp($this->channel,"")) { $this->error="the channel was not yet added"; return 0; } if(strcmp($this->image,"")) { $this->error="the channel image was already associated"; return 0; } if($this->items!=0) { $this->error="the image can only be defined before adding the channel items"; return 0; } $attributes=array(); switch($this->specification) { case "0.9": $parent=$this->root; break; case "0.91": $parent=$this->channel; break; case "1.0": if(IsSet($properties["url"])) $attributes["rdf:about"]=$properties["url"]; $parent=$this->root; break; default: $this->error="it was not specified a supported RSS specification version"; return 0; } if(!($this->addtag("image",$attributes,$parent,$path,1))) return 0; $this->image=$path; $required=array("link"=>0,"title"=>0,"url"=>0); $optional=array("description"=>0,"width"=>0,"height"=>0); if(!($this->addrssproperties($properties,$this->image,$required,$optional,"image"))) return 0; if(!strcmp($this->specification,"1.0")) { $attributes=array("rdf:resource"=>$properties["url"]); return $this->addtag("image",$attributes,$this->channel,$path,0); } return 1; } Function addtextinput(&$properties) { if(strcmp($this->error,"")) return 0; if(!strcmp($this->channel,"")) { $this->error="the channel was not yet added"; return 0; } if(strcmp($this->textinput,"")) { $this->error="the channel text input was already associated"; return 0; } if($this->items==0 && !$this->allownoitems) { $this->error="it were not specified any items before defining the channel text input"; return 0; } $attributes=array(); switch($this->specification) { case "0.9": $parent=$this->root; break; case "0.91": $parent=$this->channel; break; case "1.0": if(IsSet($properties["link"])) $attributes["rdf:about"]=$properties["link"]; $parent=$this->root; break; default: $this->error="it was not specified a supported RSS specification version"; return 0; } if(!($this->addtag("textinput",$attributes,$parent,$path,1))) return 0; $this->textinput=$path; $required=array("description"=>0,"link"=>0,"name"=>0,"title"=>0); $optional=array(); if(!($this->addrssproperties($properties,$this->textinput,$required,$optional,"textinput"))) return 0; if(!strcmp($this->specification,"1.0")) { $attributes=array("rdf:resource"=>$properties["link"]); return $this->addtag("textinput",$attributes,$this->channel,$path,0); } return 1; } Function writerss(&$output) { if(strcmp($this->error,"")) return 0; if(!strcmp($this->channel,"")) { $this->error="it was not defined the RSS channel"; return 0; } if($this->items==0 && !$this->allownoitems) { $this->error="it were not defined any RSS channel items"; return 0; } switch($this->specification) { case "0.9": $this->dtdtype="PUBLIC"; $this->dtddefinition="-//Netscape Communications//DTD RSS 0.9//EN"; $this->dtdurl="http://my.netscape.com/publish/formats/rss-0.9.dtd"; break; case "0.91": $this->dtdtype="PUBLIC"; $this->dtddefinition="-//Netscape Communications//DTD RSS 0.91//EN"; $this->dtdurl="http://my.netscape.com/publish/formats/rss-0.91.dtd"; break; case "1.0": $this->dtdtype=""; break; default: $this->error="it was not specified a supported RSS specification version"; return 0; } return $this->write($output); } }; } splitbrain-dokuwiki-d6c824b/_test/lib/testmanager.php000066400000000000000000000367331134327003500230440ustar00rootroot00000000000000 $value) { define($key, $value); } TestManager::_installSimpleTest(); list($version) = file(SIMPLE_TEST.'VERSION'); $version = trim($version); if(!version_compare('1.0.1alpha',$version,'<')){ echo "At least SimpleTest Version 1.0.1alpha is required."; echo " Yours is $version\n"; exit; } } function _installSimpleTest() { require_once SIMPLE_TEST . 'unit_tester.php'; require_once SIMPLE_TEST . 'web_tester.php'; require_once SIMPLE_TEST . 'mock_objects.php'; require_once 'web.inc.php'; require_once 'mock_functions.php'; } function runAllTests(&$reporter) { $manager =& new TestManager(); $test_cases =& $manager->_getTestFileList(); $test =& new GroupTest('All Tests'); foreach ($test_cases as $test_case) { $test->addTestFile($test_case); } $test->run($reporter); } function runTestCase($testcase_name, $test_case_directory, &$reporter) { $manager =& new TestManager(); $testcase_name = preg_replace('/[^a-zA-Z0-9_:]/','',$testcase_name); $testcase_name = str_replace(':',DIRECTORY_SEPARATOR,$testcase_name); $testcase_file = $test_case_directory . DIRECTORY_SEPARATOR . strtolower($testcase_name) . $manager->_testcase_extension; if (! file_exists($testcase_file)) { trigger_error("Test case {$testcase_file} cannot be found", E_USER_ERROR); } $test =& new GroupTest("Individual test case: " . $testcase_name); $test->addTestFile($testcase_file); $test->run($reporter); } function runTestFile($testcase_file, &$reporter) { $manager =& new TestManager(); if (! file_exists($testcase_file)) { trigger_error("Test case {$testcase_file} cannot be found", E_USER_ERROR); } $test =& new GroupTest("Individual test case: " . $testcase_file); $test->addTestFile($testcase_file); $test->run($reporter); } function runGroupTest($group_test_name, $group_test_directory, &$reporter) { $manager =& new TestManager(); $group_test_name = preg_replace('/[^a-zA-Z0-9_:]/','',$group_test_name); $group_test_name = str_replace(':',DIRECTORY_SEPARATOR,$group_test_name); $file_path = $group_test_directory . DIRECTORY_SEPARATOR . strtolower($group_test_name) . $manager->_grouptest_extension; if (! file_exists($file_path)) { trigger_error("Group test {$group_test_name} cannot be found at {$file_path}", E_USER_ERROR); } require_once $file_path; $test =& new GroupTest($group_test_name . ' group test'); foreach ($manager->_getGroupTestClassNames($file_path) as $group_test) { $test->addTestCase(new $group_test()); } $test->run($reporter); } function addTestCasesFromDirectory(&$group_test, $directory = '.') { $manager =& new TestManager(); $test_cases =& $manager->_getTestFileList($directory); foreach ($test_cases as $test_case) { $group_test->addTestFile($test_case); } } function &getTestCaseList($directory = '.') { $manager =& new TestManager(); return $manager->_getTestCaseList($directory); } function &_getTestCaseList($directory = '.') { $base = TEST_GROUPS . DIRECTORY_SEPARATOR; $file_list =& $this->_getTestFileList($directory); $testcases = array(); foreach ($file_list as $testcase_file) { $case = str_replace($this->_testcase_extension, '',$testcase_file); $case = str_replace($base, '', $case); $case = str_replace(DIRECTORY_SEPARATOR, ':', $case); $testcases[$testcase_file] = $case; } return $testcases; } function &_getTestFileList($directory = '.') { return $this->_getRecursiveFileList($directory, array(&$this, '_isTestCaseFile')); } function &getGroupTestList($directory = '.') { $manager =& new TestManager(); return $manager->_getTestGroupList($directory); } function &_getTestGroupFileList($directory = '.') { return $this->_getRecursiveFileList($directory, array(&$this, '_isTestGroupFile')); } function &_getTestGroupList($directory = '.') { $base = TEST_GROUPS . DIRECTORY_SEPARATOR; $file_list =& $this->_getTestGroupFileList($directory); $grouptests = array(); foreach ($file_list as $grouptest_file) { $group = str_replace($this->_grouptest_extension, '',$grouptest_file); $group = str_replace($base, '', $group); $group = str_replace(DIRECTORY_SEPARATOR, ':', $group); $grouptests[$grouptest_file] = $group; } sort($grouptests); return $grouptests; } function &_getGroupTestClassNames($grouptest_file) { $file = implode("\n", file($grouptest_file)); preg_match("~lass\s+?(.*)\s+?extends GroupTest~", $file, $matches); if (! empty($matches)) { unset($matches[0]); return $matches; } else { return array(); } } function &_getRecursiveFileList($directory = '.', $file_test_function) { $dh = opendir($directory); if (! is_resource($dh)) { trigger_error("Couldn't open {$directory}", E_USER_ERROR); } $file_list = array(); while ($file = readdir($dh)) { $file_path = $directory . DIRECTORY_SEPARATOR . $file; if (0 === strpos($file, '.')) continue; if (is_dir($file_path)) { $file_list = array_merge($file_list, $this->_getRecursiveFileList($file_path, $file_test_function)); } if ($file_test_function[0]->$file_test_function[1]($file)) { $file_list[] = $file_path; } } closedir($dh); return $file_list; } function _isTestCaseFile($file) { return $this->_hasExpectedExtension($file, $this->_testcase_extension); } function _isTestGroupFile($file) { return $this->_hasExpectedExtension($file, $this->_grouptest_extension); } function _hasExpectedExtension($file, $extension) { return $extension == strtolower(substr($file, (0 - strlen($extension)))); } } /** * @package WACT_TESTS */ class CLITestManager extends TestManager { function &getGroupTestList($directory = '.') { $manager =& new CLITestManager(); $group_tests =& $manager->_getTestGroupList($directory); $buffer = "Available grouptests:\n"; foreach ($group_tests as $group_test) { $buffer .= " " . $group_test . "\n"; } return $buffer . "\n"; } function &getTestCaseList($directory = '.') { $manager =& new CLITestManager(); $test_cases =& $manager->_getTestCaseList($directory); $buffer = "Available test cases:\n"; foreach ($test_cases as $test_case) { $buffer .= " " . $test_case . "\n"; } return $buffer . "\n"; } } class HTMLTestManager extends TestManager { var $_url; function HTMLTestManager() { $this->_url = $_SERVER['PHP_SELF']; } function getBaseURL() { return $this->_url; } function &getGroupTestList($directory = '.') { $manager =& new HTMLTestManager(); $group_tests =& $manager->_getTestGroupList($directory); if (1 > count($group_tests)) { return "

No test groups set up!

"; } $buffer = "

Available test groups:

\n\n"; return $buffer; } function &getTestCaseList($directory = '.') { $manager =& new HTMLTestManager(); $testcases =& $manager->_getTestCaseList($directory); if (1 > count($testcases)) { return "

No test cases set up!

"; } $buffer = "

Available test cases:

\n
    "; foreach ($testcases as $testcase) { $buffer .= "
  • " . $testcase . "
  • \n"; } $buffer .= "
\n"; return $buffer; } } /** * @package WACT_TESTS */ class XMLTestManager extends HTMLTestManager { function XMLTestManager() { parent::HTMLTestManager(); } function &getGroupTestList($directory = '.') { $manager =& new XMLTestManager(); $group_tests =& $manager->_getTestGroupList($directory); $rss = & $manager->_getRssWriter(); if (1 > count($group_tests)) { $rss->writeRss($output); return $output; } $properties["title"]="All Tests"; $properties["description"]="All Tests"; $properties["link"]='http://'.$_SERVER['SERVER_NAME']. $manager->getBaseURL()."?group=all&output=xml"; $rss->additem($properties); foreach ($group_tests as $group_test) { $properties["title"]=$group_test; $properties["description"]=$group_test; $properties["link"]='http://'.$_SERVER['SERVER_NAME']. $manager->getBaseURL(). "?group={$group_test}&output=xml"; $rss->additem($properties); } if ( !$rss->writeRss($output) ) { die ( $rss->error ); } return $output; } function &getTestCaseList($directory = '.') { $manager =& new XMLTestManager(); $testcases =& $manager->_getTestCaseList($directory); $rss = & $manager->_getRssWriter(); if (1 > count($testcases)) { $rss->writeRss($output); return $output; } foreach ($testcases as $testfile => $testcase) { $properties["title"]=$testcase; $properties["description"]=$testcase; $properties["link"]='http://'.$_SERVER['SERVER_NAME']. $manager->getBaseURL()."?case=" . urlencode($testcase) . "&output=xml"; // Comment this out for performance? $properties["dc:date"]=gmdate("Y-m-d\TH:i:sO",filemtime($testfile)); $rss->additem($properties); } $rss->writeRss($output); return $output; } function &_getRssWriter() { $url = 'http://'.$_SERVER['SERVER_NAME'].str_replace('index.php','',$_SERVER['PHP_SELF']); require_once TEST_ROOT . '/lib/xml_writer_class.php'; require_once TEST_ROOT . '/lib/rss_writer_class.php'; $rss_writer_object=& new rss_writer_class(); $rss_writer_object->specification="1.0"; $rss_writer_object->about=$url."index.php?output=xml"; $rss_writer_object->stylesheet=$url."rss2html.xsl"; $rss_writer_object->rssnamespaces["dc"]="http://purl.org/dc/elements/1.1/"; // Channel Properties $properties=array(); $properties["title"]="Dokuwiki Unit Test Cases"; $properties["description"]="Dokuwiki Unit Test Cases"; $properties["link"]="http://wiki.splitbrain.org/"; $properties["dc:date"]=gmdate("Y-m-d\TH:i:sO"); $rss_writer_object->addchannel($properties); // Logo like this (if we had one) /* $properties=array(); $properties["link"]="http://www.phpclasses.org/"; $properties["title"]="PHP Classes repository logo"; $properties["description"]="Repository of components and other resources for PHP developers"; $rss_writer_object->addimage($properties); */ return $rss_writer_object; } } /** * @package WACT_TESTS */ class RemoteTestManager extends TestManager { function RemoteTestManager() { RemoteTestManager::_installSimpleTest(); } function _installSimpleTest() { require_once SIMPLE_TEST . 'remote.php'; } function runAllTests(&$reporter, $url = FALSE) { $groups = RemoteTestManager::getGroupTestList($url); $T = &new RemoteTestCase($groups['All Tests']); $T->run($reporter); } function runTestUrl($case_url,& $reporter, $url = FALSE) { RemoteTestManager::_installSimpleTest(); $T = &new RemoteTestCase($case_url); $T->run($reporter); } function runTestCase($case_id,& $reporter, $url = FALSE) { $cases = RemoteTestManager::getTestCaseList($url); if ( !array_key_exists($case_id, $cases) ) { trigger_error("Unknown test id $case_id\n",E_USER_ERROR); } $T = &new RemoteTestCase($cases[$case_id]); $T->run($reporter); } function runGroupTest($group_name, &$reporter, $url = FALSE) { $groups = RemoteTestManager::getGroupTestList($url); if ( !array_key_exists($group_name, $groups) ) { trigger_error("Unknown group $group_name\n",E_USER_ERROR); } $T = &new RemoteTestCase($groups[$group_name]); $T->run($reporter); } function & getGroupTestList($url = FALSE) { if ( !$url ) { $url = REMOTE_TEST_URL; } $url .= '?output=xml'; $manager =& new RemoteTestManager(); $rss = & $manager->_getRssReader($url); $groupList = array(); foreach ($rss->getItems() as $item) { $groupList[$item['title']] = $item['link']; } return $groupList; } function &getTestCaseList($url = FALSE) { if ( !$url ) { $url = REMOTE_TEST_URL; } $url .= '?show=cases&output=xml'; $manager =& new RemoteTestManager(); $rss = & $manager->_getRssReader($url); $caseList = array(); foreach ($rss->getItems() as $item) { $caseList[$item['title']] = $item['link']; } return $caseList; } function &_getRssReader($url) { require_once "XML/RSS.php"; $rss_reader =& new XML_RSS($url); $status = $rss_reader->parse(); if (PEAR::isError($status) ) { trigger_error($status->getMessage(),E_USER_WARNING); } return $rss_reader; } } splitbrain-dokuwiki-d6c824b/_test/lib/web.inc.php000066400000000000000000000025201134327003500220420ustar00rootroot00000000000000assertResponse(array(200)); $this->assertNoUnwantedPattern('/Warning:/i'); $this->assertNoUnwantedPattern('/Error:/i'); $this->assertNoUnwantedPattern('/Fatal error/i'); } function assertWantedLiteral($str) { $this->assertWantedPattern('/' . preg_quote($str, '/'). '/'); } function assertNoUnWantedLiteral($str) { $this->assertNoUnWantedPattern('/' . preg_quote($str, '/'). '/'); } function &_fileToPattern($file) { $file_as_array = file($file); $pattern = '#^'; foreach ($file_as_array as $line) { /* strip trailing newline */ if ($line[strlen($line) - 1] == "\n") { $line = substr($line, 0, strlen($line) - 1); } $line = preg_quote($line, '#'); /* replace paths with wildcard */ $line = preg_replace("#'/[^']*#", "'.*", $line); $pattern .= $line . '\n'; } /* strip final newline */ $pattern = substr($pattern, 0, strlen($pattern) - 2); $pattern .= '$#i'; return $pattern; } } splitbrain-dokuwiki-d6c824b/_test/lib/xml_writer_class.php000066400000000000000000000225131134327003500241020ustar00rootroot00000000000000inputencoding,$this->outputencoding)) $encodeddata=$this->escapedata($data); else { switch(strtolower($this->outputencoding)) { case "utf-8": if(!strcmp(strtolower($this->inputencoding),"iso-8859-1")) { $encoded_data=utf8_encode($this->escapedata($data)); $encodeddata=$encoded_data; } else { $this->error=("can not encode iso-8859-1 data in ".$this->outputencoding); return 0; } break; case "iso-8859-1": if(!strcmp(strtolower($this->inputencoding),"utf-8")) { $decoded=utf8_decode($data); $encodeddata=$this->escapedata($decoded); } else { $this->error=("can not encode utf-8 data in ".$this->outputencoding); return 0; } break; default: $this->error=("can not encode data in ".$this->inputencoding); return 0; } } return 1; } Function writetag(&$output,$path,$indent) { $tag=$this->structure[$path]["Tag"]; $output.=("<".$tag); $attributecount=count($this->structure[$path]["Attributes"]); if($attributecount>0) { $attributes=$this->structure[$path]["Attributes"]; Reset($attributes); $end=(GetType($key=Key($attributes))!="string"); for(;!$end;) { $output.=(" ".$key."=\"".$attributes[$key]."\""); Next($attributes); $end=(GetType($key=Key($attributes))!="string"); } } $elements=$this->structure[$path]["Elements"]; if($elements>0) { $output.=">"; $doindent=$this->structure[$path]["Indent"]; $elementindent=(($doindent) ? $this->linebreak.$indent.$this->indenttext : ""); $element=0; for(;$element<$elements;) { $elementpath=($path.",".strval($element)); $output.=$elementindent; if(IsSet($this->nodes[$elementpath])) { if(!($this->writetag($output,$elementpath,$indent.$this->indenttext))) return 0; } else $output.=$this->structure[$elementpath]; $element++; } $output.=((($doindent) ? $this->linebreak.$indent : "").""); } else $output.="/>"; return 1; } /* * Public functions * */ Function write(&$output) { if(strcmp($this->error,"")) return 0; if(!(IsSet($this->structure["0"]))) { $this->error="XML document structure is empty"; return 0; } $output=("outputencoding."\"?>".$this->linebreak); if(strcmp($this->dtdtype,"")) { $output.=("structure["0"]["Tag"]." "); switch($this->dtdtype) { case "INTERNAL": if(!strcmp($this->dtddefinition,"")) { $this->error="it was not specified a valid internal DTD definition"; return 0; } $output.=("[".$this->linebreak.$this->dtddefinition.$this->linebreak."]"); break; case "SYSTEM": if(!strcmp($this->dtdurl,"")) { $this->error="it was not specified a valid system DTD url"; return 0; } $output.="SYSTEM"; if(strcmp($this->dtddefinition,"")) $output.=(" \"".$this->dtddefinition."\""); $output.=(" \"".$this->dtdurl."\""); break; case "PUBLIC": if(!strcmp($this->dtddefinition,"")) { $this->error="it was not specified a valid public DTD definition"; return 0; } $output.=("PUBLIC \"".$this->dtddefinition."\""); if(strcmp($this->dtdurl,"")) $output.=(" \"".$this->dtdurl."\""); break; default: $this->error="it was not specified a valid DTD type"; return 0; } $output.=(">".$this->linebreak); } if(strcmp($this->stylesheet,"")) { if(!strcmp($this->stylesheettype,"")) { $this->error="it was not specified a valid stylesheet type"; return 0; } $output.=("stylesheettype."\" href=\"".$this->stylesheet."\"?>".$this->linebreak); } if(strcmp($this->generatedcomment,"")) $output.=("".$this->linebreak); return $this->writetag($output,"0",""); } Function addtag($tag,&$attributes,$parent,&$path,$indent) { if(strcmp($this->error,"")) return 0; $path=((!strcmp($parent,"")) ? "0" : ($parent.",".strval($this->structure[$parent]["Elements"]))); if(IsSet($this->structure[$path])) { $this->error=("tag with path ".$path." is already defined"); return 0; } $encodedattributes=array(); Reset($attributes); $end=(GetType($attribute_name=Key($attributes))!="string"); for(;!$end;) { $encodedattributes[$attribute_name]=""; if(!($this->encodedata($attributes[$attribute_name],$encoded_data))) return 0; $encodedattributes[$attribute_name]=$encoded_data; Next($attributes); $end=(GetType($attribute_name=Key($attributes))!="string"); } $this->structure[$path]=array( "Tag"=>$tag, "Attributes"=>$encodedattributes, "Elements"=>0, "Indent"=>$indent ); $this->nodes[$path]=1; if(strcmp($parent,"")) $this->structure[$parent]["Elements"]=($this->structure[$parent]["Elements"]+1); return 1; } Function adddata($data,$parent,&$path) { if(strcmp($this->error,"")) return 0; if(!(IsSet($this->structure[$parent]))) { $this->error=("the parent tag path".$path."is not defined"); return 0; } if(!strcmp($data,"")) return 1; $path=($parent.",".strval($this->structure[$parent]["Elements"])); if(!($this->encodedata($data,$encoded_data))) return 0; $this->structure[$path]=$encoded_data; $this->structure[$parent]["Elements"]=($this->structure[$parent]["Elements"]+1); return 1; } Function adddatatag($tag,&$attributes,$data,$parent,&$path) { return $this->addtag($tag,$attributes,$parent,$path,0) && $this->adddata($data,$path,$datapath); } }; } splitbrain-dokuwiki-d6c824b/_test/remotetests.php000077500000000000000000000107401134327003500223330ustar00rootroot00000000000000#!/usr/bin/php -q '; $opt_caselist = FALSE; $opt_grouplist = FALSE; $opt_caseid = FALSE; $opt_caseurl = FALSE; $opt_groupfile = FALSE; $opt_url = FALSE; include_once(DOKU_INC.'inc/cliopts.php'); $short_opts = "c:f:g:hils:p:u:"; $long_opts = array("case=","caselist","help", "caseurl=", "group=", "grouplist", "separator=", "path=","url="); $OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts); if ( $OPTS->isError() ) { fwrite( STDERR, $OPTS->getMessage() . "\n"); usage($available_grouptests); exit(1); } foreach ($OPTS->options as $key => $val) { switch ($key) { case 'c': case 'case': $opt_caseid = $val; break; case 'h': case 'help': usage(); break; case 'f': case 'caseurl': $opt_caseurl = $val; break; case 'g': case 'group': $opt_groupfile = $val; break; case 'i': case 'caselist': $opt_caselist = TRUE; break; case 'l': case 'grouplist': $opt_grouplist = TRUE; break; case 's': case 'separator': $opt_separator = $val; break; case 'p': case 'path': if (file_exists($val)) { define('SIMPLE_TEST', $val); } break; case 'u': case '--url': $opt_url = $val; break; } } if ( ! $opt_url ) { if ( !defined('REMOTE_TEST_URL') ) { fwrite( STDERR, "No test URL defined. Either modify tests.ini or use -u option\n"); exit(1); } else { $opt_url = REMOTE_TEST_URL; } } if (!@include_once SIMPLE_TEST . 'reporter.php') { if ( defined(SIMPLE_TEST) ) { fwrite( STDERR, "Where's Simple Test ?!? Not at ".SIMPLE_TEST." \n"); } else { fwrite( STDERR, "Where's Simple Test ?!? SIMPLE_TEST not even defined!\n"); } exit(1); } require_once 'lib/cli_reporter.php'; /* list grouptests */ if ($opt_grouplist) { $groups = RemoteTestManager::getGroupTestList($opt_url); fwrite( STDOUT, "Available grouptests:\n"); foreach ( array_keys($groups) as $group ) { fwrite( STDOUT, $group."\n"); } } /* list test cases */ if ($opt_caselist) { $cases = RemoteTestManager::getTestCaseList($opt_url); fwrite( STDOUT, "Available tests tests:\n"); foreach ( array_keys($cases) as $case ) { fwrite( STDOUT, $case."\n"); } } /* exit if we've displayed a list */ if ( $opt_grouplist || $opt_caselist ) { exit(0); } /* run a test case given it's URL */ if ($opt_caseurl) { RemoteTestManager::runTestUrl($opt_caseurl, new CLIReporter($opt_separator), $opt_url); exit(0); } /* run a test case by id*/ if ($opt_caseid) { RemoteTestManager::runTestCase($opt_caseid, new CLIReporter($opt_separator), $opt_url); exit(0); } /* run a grouptest */ if ($opt_groupfile) { RemoteTestManager::runGroupTest( $opt_groupfile, new CLIReporter($opt_separator), $opt_url ); exit(0); } /* run all tests */ RemoteTestManager::runAllTests(new CLIReporter($opt_separator), $opt_url); exit(0); ?>splitbrain-dokuwiki-d6c824b/_test/rss2html.xsl000066400000000000000000000066361134327003500215600ustar00rootroot00000000000000 <xsl:for-each select="rdf:RDF/rss:channel"> <xsl:value-of select="rss:description"/> </xsl:for-each>
0
( )

  • ( )

POST
text submit
splitbrain-dokuwiki-d6c824b/_test/runtests.php000077500000000000000000000072771134327003500216570ustar00rootroot00000000000000#!/usr/bin/php -q '; $opt_caselist = FALSE; $opt_grouplist = FALSE; $opt_caseid = FALSE; $opt_casefile = FALSE; $opt_groupfile = FALSE; include_once(DOKU_INC.'inc/cliopts.php'); $short_opts = "c:f:g:hils:p:"; $long_opts = array("case=","caselist","help", "file=", "group=", "grouplist", "separator=", "path="); $OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts); if ( $OPTS->isError() ) { fwrite( STDERR, $OPTS->getMessage() . "\n"); usage($available_grouptests); exit(1); } foreach ($OPTS->options as $key => $val) { switch ($key) { case 'c': case 'case': $opt_caseid = $val; break; case 'h': case 'help': usage(); break; case 'f': case 'file': $opt_casefile = $val; break; case 'g': case 'group': $opt_groupfile = $val; break; case 'i': case 'caselist': $opt_caselist = TRUE; break; case 'l': case 'grouplist': $opt_grouplist = TRUE; break; case 's': case 'separator': $opt_separator = $val; break; case 'p': case 'path': if (file_exists($val)) { define('SIMPLE_TEST', $val); } break; } } if (!@include_once SIMPLE_TEST . 'reporter.php') { die("Where's Simple Test ?!? Not at ".SIMPLE_TEST); } require_once 'lib/cli_reporter.php'; /* list grouptests */ if ($opt_grouplist) { echo CLITestManager::getGroupTestList(TEST_GROUPS); } /* list test cases */ if ($opt_caselist) { echo CLITestManager::getTestCaseList(TEST_CASES); } /* exit if we've displayed a list */ if ( $opt_grouplist || $opt_caselist ) { exit(0); } /* run a test case */ if ($opt_casefile) { TestManager::runTestFile($opt_casefile, new CLIReporter($opt_separator)); exit(0); } /* run a test case by id*/ if ($opt_caseid) { TestManager::runTestCase($opt_caseid, TEST_CASES, new CLIReporter($opt_separator)); exit(0); } /* run a grouptest */ if ($opt_groupfile) { TestManager::runGroupTest($opt_groupfile, TEST_GROUPS, new CLIReporter($opt_separator)); exit(0); } /* run all tests */ TestManager::runAllTests(new CLIReporter($opt_separator)); exit(0); ?> splitbrain-dokuwiki-d6c824b/_test/tests.css000066400000000000000000000010371134327003500211140ustar00rootroot00000000000000body { background-color:#eee; color:#000; font:100%/1.2em Georgia,Verdana,Arial,Helvetica,sans-serif; margin-left:20ex; max-width:120ex; } #sf { float:right; } h1 { background-image:url(rephlux.png); background-repeat:no-repeat; margin-top:0; padding:20px 0 0 90px; color:#600; font-size:3em; line-height: 1em; background-color:inherit; border-bottom:9px double #333; } pre { font-size:120%; line-height:1.2em; color:#006; }splitbrain-dokuwiki-d6c824b/_test/tests.ini000066400000000000000000000005711134327003500211050ustar00rootroot00000000000000TEST_ENABLED = 0 ; For performing "web tests" - PHP scripts acting as web browser WEB_TEST_URL = http://localhost/dokuwiki ; See http://www.sitepoint.com/blogs/2004/06/15/simple-test-remote-testing/ REMOTE_TEST_URL = http://localhost/dokuwiki/test/index.php ;PROXY = http://proxyuser:proxypwd@proxy.yourdomain.com:8080 ; Path to Simple Test SIMPLE_TEST = ../../simpletest/ splitbrain-dokuwiki-d6c824b/_test/webtest-stripper.sh000077500000000000000000000015761134327003500231320ustar00rootroot00000000000000#!/bin/sh ################################################################################ # Quick script to make simpletest web test fail output more legible # # Run the web test group from the command line w/ the command: # # $ ./runtests.php -g [GROUP] 2> tmp # # redirecting the error messages to the file tmp # # Then run this command on the tmp file # # $ ./webtest-stripper.sh tmp # ################################################################################ usage="Usage: ${0} [WEB_TEST_OUTPUT_FILE]"; if [ -z "$1" ]; then echo $usage; exit 1; elif [ ! -f "$1" ]; then echo "${1} is not a file!"; echo $usage; exit 1; fi sed -e 's/\\n/\ /g' "${1}" |\ sed -e 's/\\//g' |\ sed -e 's/FAIL.*Pattern \[\#\^/EXPECTED:\ /g' |\ sed -e 's/\$#i\].*string \[/\ \ GOT:\ /g' |\ sed -e 's/\]$/\ ----------------------------------------------------------------\ /g' exit 0splitbrain-dokuwiki-d6c824b/bin/000077500000000000000000000000001134327003500166715ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/bin/.htaccess000066400000000000000000000000411134327003500204620ustar00rootroot00000000000000order allow,deny deny from all splitbrain-dokuwiki-d6c824b/bin/dwpage.php000077500000000000000000000224311134327003500206560ustar00rootroot00000000000000#!/usr/bin/php [working_file] Checks out a file from the repository, using the wiki id and obtaining a lock for the page. If a working_file is specified, this is where the page is copied to. Otherwise defaults to the same as the wiki page in the current working directory. EXAMPLE $ ./dwpage.php checkout wiki:syntax ./new_syntax.txt OPTIONS -h, --help=: get help -f: force obtaining a lock for the page (generally bad idea) "; break; case 'commit': print "Usage: dwpage.php [opts] -m \"Msg\" commit Checks in the working_file into the repository using the specified wiki id, archiving the previous version. EXAMPLE $ ./dwpage.php -m \"Some message\" commit ./new_syntax.txt wiki:syntax OPTIONS -h, --help=: get help -f: force obtaining a lock for the page (generally bad idea) -t, trivial: minor change -m (required): Summary message describing the change "; break; case 'lock': print "Usage: dwpage.php [opts] lock Obtains or updates a lock for a wiki page EXAMPLE $ ./dwpage.php lock wiki:syntax OPTIONS -h, --help=: get help -f: force obtaining a lock for the page (generally bad idea) "; break; case 'unlock': print "Usage: dwpage.php [opts] unlock Removes a lock for a wiki page. EXAMPLE $ ./dwpage.php unlock wiki:syntax OPTIONS -h, --help=: get help -f: force obtaining a lock for the page (generally bad idea) "; break; default: print "Usage: dwpage.php [opts] Utility to help command line Dokuwiki page editing, allow pages to be checked out for editing then committed after changes Normal operation would be; ACTIONS checkout: see $ dwpage.php --help=checkout commit: see $ dwpage.php --help=commit lock: see $ dwpage.php --help=lock OPTIONS -h, --help=: get help e.g. $ ./dwpage.php -hcommit e.g. $ ./dwpage.php --help=commit "; break; } } #------------------------------------------------------------------------------ function getUser() { $user = getenv('USER'); if (empty ($username)) { $user = getenv('USERNAME'); } else { return $user; } if (empty ($username)) { $user = 'admin'; } return $user; } #------------------------------------------------------------------------------ function getSuppliedArgument($OPTS, $short, $long) { $arg = $OPTS->get($short); if ( is_null($arg) ) { $arg = $OPTS->get($long); } return $arg; } #------------------------------------------------------------------------------ function obtainLock($WIKI_ID) { global $USERNAME; if ( !file_exists(wikiFN($WIKI_ID)) ) { fwrite( STDERR, "$WIKI_ID does not yet exist\n"); } $_SERVER['REMOTE_USER'] = $USERNAME; if ( checklock($WIKI_ID) ) { fwrite( STDERR, "Page $WIKI_ID is already locked by another user\n"); exit(1); } lock($WIKI_ID); $_SERVER['REMOTE_USER'] = '_'.$USERNAME.'_'; if ( checklock($WIKI_ID) != $USERNAME ) { fwrite( STDERR, "Unable to obtain lock for $WIKI_ID\n" ); exit(1); } } #------------------------------------------------------------------------------ function clearLock($WIKI_ID) { global $USERNAME ; if ( !file_exists(wikiFN($WIKI_ID)) ) { fwrite( STDERR, "$WIKI_ID does not yet exist\n"); } $_SERVER['REMOTE_USER'] = $USERNAME; if ( checklock($WIKI_ID) ) { fwrite( STDERR, "Page $WIKI_ID is locked by another user\n"); exit(1); } unlock($WIKI_ID); if ( file_exists(wikiLockFN($WIKI_ID)) ) { fwrite( STDERR, "Unable to clear lock for $WIKI_ID\n" ); exit(1); } } #------------------------------------------------------------------------------ function deleteLock($WIKI_ID) { $wikiLockFN = wikiLockFN($WIKI_ID); if ( file_exists($wikiLockFN) ) { if ( !unlink($wikiLockFN) ) { fwrite( STDERR, "Unable to delete $wikiLockFN\n" ); exit(1); } } } #------------------------------------------------------------------------------ $USERNAME = getUser(); $CWD = getcwd(); $SYSTEM_ID = '127.0.0.1'; #------------------------------------------------------------------------------ $OPTS = Doku_Cli_Opts::getOptions( __FILE__, 'h::fm:u:s:t', array( 'help==', 'user=', 'system=', 'trivial', ) ); if ( $OPTS->isError() ) { print $OPTS->getMessage()."\n"; exit(1); } if ( $OPTS->has('h') or $OPTS->has('help') or !$OPTS->hasArgs() ) { usage(getSuppliedArgument($OPTS,'h','help')); exit(0); } if ( $OPTS->has('u') or $OPTS->has('user') ) { $USERNAME = getSuppliedArgument($OPTS,'u','user'); } if ( $OPTS->has('s') or $OPTS->has('system') ) { $SYSTEM_ID = getSuppliedArgument($OPTS,'s','system'); } #------------------------------------------------------------------------------ switch ( $OPTS->arg(0) ) { #---------------------------------------------------------------------- case 'checkout': $WIKI_ID = $OPTS->arg(1); if ( !$WIKI_ID ) { fwrite( STDERR, "Wiki page ID required\n"); exit(1); } $WIKI_FN = wikiFN($WIKI_ID); if ( !file_exists($WIKI_FN) ) { fwrite( STDERR, "$WIKI_ID does not yet exist\n"); exit(1); } $TARGET_FN = $OPTS->arg(2); if ( empty($TARGET_FN) ) { $TARGET_FN = getcwd().'/'.basename($WIKI_FN); } if ( !file_exists(dirname($TARGET_FN)) ) { fwrite( STDERR, "Directory ".dirname($TARGET_FN)." does not exist\n"); exit(1); } if ( stristr( realpath(dirname($TARGET_FN)), realpath($conf['datadir']) ) !== false ) { fwrite( STDERR, "Attempt to check out file into data directory - not allowed\n"); exit(1); } if ( $OPTS->has('f') ) { deleteLock($WIKI_ID); } obtainLock($WIKI_ID); # Need to lock the file first? if ( !copy($WIKI_FN, $TARGET_FN) ) { fwrite( STDERR, "Unable to copy $WIKI_FN to $TARGET_FN\n"); clearLock($WIKI_ID); exit(1); } print "$WIKI_ID > $TARGET_FN\n"; exit(0); break; #---------------------------------------------------------------------- case 'commit': $TARGET_FN = $OPTS->arg(1); if ( !$TARGET_FN ) { fwrite( STDERR, "Target filename required\n"); exit(1); } if ( !file_exists($TARGET_FN) ) { fwrite( STDERR, "$TARGET_FN does not exist\n"); exit(1); } if ( !is_readable($TARGET_FN) ) { fwrite( STDERR, "Cannot read from $TARGET_FN\n"); exit(1); } $WIKI_ID = $OPTS->arg(2); if ( !$WIKI_ID ) { fwrite( STDERR, "Wiki page ID required\n"); exit(1); } if ( !$OPTS->has('m') ) { fwrite( STDERR, "Summary message required\n"); exit(1); } if ( $OPTS->has('f') ) { deleteLock($WIKI_ID); } $_SERVER['REMOTE_USER'] = $USERNAME; if ( checklock($WIKI_ID) ) { fwrite( STDERR, "$WIKI_ID is locked by another user\n"); exit(1); } obtainLock($WIKI_ID); saveWikiText($WIKI_ID, file_get_contents($TARGET_FN), $OPTS->get('m'), $OPTS->has('t')); clearLock($WIKI_ID); exit(0); break; #---------------------------------------------------------------------- case 'lock': $WIKI_ID = $OPTS->arg(1); if ( !$WIKI_ID ) { fwrite( STDERR, "Wiki page ID required\n"); exit(1); } if ( $OPTS->has('f') ) { deleteLock($WIKI_ID); } obtainLock($WIKI_ID); print "Locked : $WIKI_ID\n"; exit(0); break; #---------------------------------------------------------------------- case 'unlock': $WIKI_ID = $OPTS->arg(1); if ( !$WIKI_ID ) { fwrite( STDERR, "Wiki page ID required\n"); exit(1); } if ( $OPTS->has('f') ) { deleteLock($WIKI_ID); } else { clearLock($WIKI_ID); } print "Unlocked : $WIKI_ID\n"; exit(0); break; #---------------------------------------------------------------------- default: fwrite( STDERR, "Invalid action ".$OPTS->arg(0)."\n" ); exit(1); break; } splitbrain-dokuwiki-d6c824b/bin/indexer.php000077500000000000000000000102171134327003500210440ustar00rootroot00000000000000#!/usr/bin/php isError() ) { fwrite( STDERR, $OPTS->getMessage() . "\n"); _usage(); exit(1); } $CLEAR = false; $QUIET = false; foreach ($OPTS->options as $key => $val) { switch ($key) { case 'h': case 'help': _usage(); exit; case 'c': case 'clear': $CLEAR = true; break; case 'q': case 'quiet': $QUIET = true; break; } } #------------------------------------------------------------------------------ # Action if($CLEAR) _clearindex(); _update(); #------------------------------------------------------------------------------ function _usage() { print "Usage: indexer.php Updates the searchindex by indexing all new or changed pages when the -c option is given the index is cleared first. OPTIONS -h, --help show this help and exit -c, --clear clear the index before updating -q, --quiet don't produce any output "; } function _update(){ global $conf; // upgrade to version 2 if (!@file_exists($conf['indexdir'].'/pageword.idx')){ _lock(); idx_upgradePageWords(); _unlock(); } $data = array(); _quietecho("Searching pages... "); search($data,$conf['datadir'],'search_allpages',array('skipacl' => true)); _quietecho(count($data)." pages found.\n"); foreach($data as $val){ _index($val['id']); } } function _index($id){ global $CLEAR; // if not cleared only update changed and new files if(!$CLEAR){ $idxtag = metaFN($id,'.indexed'); if(@file_exists($idxtag)){ if(io_readFile($idxtag) >= INDEXER_VERSION){ $last = @filemtime(metaFN($id,'.indexed')); if($last > @filemtime(wikiFN($id))) return; } } } _lock(); _quietecho("$id... "); idx_addPage($id); io_saveFile(metaFN($id,'.indexed'),INDEXER_VERSION); _quietecho("done.\n"); _unlock(); } /** * lock the indexer system */ function _lock(){ global $conf; $lock = $conf['lockdir'].'/_indexer.lock'; $said = false; while(!@mkdir($lock, $conf['dmode'])){ if(time()-@filemtime($lock) > 60*5){ // looks like a stale lock - remove it @rmdir($lock); }else{ if($said){ _quietecho("."); }else{ _quietecho("Waiting for lockfile (max. 5 min)"); $said = true; } sleep(15); } } if($conf['dperm']) chmod($lock, $conf['dperm']); if($said) _quietecho("\n"); } /** * unlock the indexer sytem */ function _unlock(){ global $conf; $lock = $conf['lockdir'].'/_indexer.lock'; @rmdir($lock); } /** * Clear all index files */ function _clearindex(){ global $conf; _lock(); _quietecho("Clearing index... "); io_saveFile($conf['indexdir'].'/page.idx',''); $dir = @opendir($conf['indexdir']); if($dir!==false){ while(($f = readdir($dir)) !== false){ if(substr($f,-4)=='.idx' && (substr($f,0,1)=='i' || substr($f,0,1)=='w')) @unlink($conf['indexdir']."/$f"); } } _quietecho("done.\n"); _unlock(); } function _quietecho($msg) { global $QUIET; if(!$QUIET) echo $msg; } //Setup VIM: ex: et ts=2 enc=utf-8 : splitbrain-dokuwiki-d6c824b/bin/render.php000077500000000000000000000032761134327003500206740ustar00rootroot00000000000000#!/usr/bin/php */ if ('cli' != php_sapi_name()) die(); ini_set('memory_limit','128M'); if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); define('NOSESSION',1); require_once(DOKU_INC.'inc/init.php'); require_once(DOKU_INC.'inc/common.php'); require_once(DOKU_INC.'inc/parserutils.php'); require_once(DOKU_INC.'inc/cliopts.php'); // handle options $short_opts = 'hr:'; $long_opts = array('help','renderer:'); $OPTS = Doku_Cli_Opts::getOptions(__FILE__,$short_opts,$long_opts); if ( $OPTS->isError() ) { fwrite( STDERR, $OPTS->getMessage() . "\n"); _usage(); exit(1); } $RENDERER = 'xhtml'; foreach ($OPTS->options as $key => $val) { switch ($key) { case 'h': case 'help': _usage(); exit; case 'r': case 'renderer': $RENDERER = $val; } } // do the action $source = stream_get_contents(STDIN); $info = array(); $result = p_render($RENDERER,p_get_instructions($source),$info); if(is_null($result)) die("No such renderer $RENDERER\n"); echo $result; /** * Print usage info */ function _usage(){ print "Usage: render.php Reads DokuWiki syntax from STDIN and renders it with the given renderer to STDOUT OPTIONS -h, --help show this help and exit -r, --renderer the render mode (default: xhtml) "; } splitbrain-dokuwiki-d6c824b/bin/wantedpages.php000077500000000000000000000074401134327003500217140ustar00rootroot00000000000000#!/usr/bin/php pathID(substr($dir.'/'.$entry,$trunclen)), 'file'=> $dir.'/'.$entry, ); $pages[] = $page; } } closedir($dh); return $pages; } #------------------------------------------------------------------------------ function dw_internal_links($page) { global $conf; $instructions = p_get_instructions(file_get_contents($page['file'])); $links = array(); $cns = getNS($page['id']); $exists = false; foreach($instructions as $ins){ if($ins[0] == 'internallink' || ($conf['camelcase'] && $ins[0] == 'camelcaselink') ){ $mid = $ins[1][0]; resolve_pageid($cns,$mid,$exists); if ( !$exists ) { list($mid) = explode('#',$mid); //record pages without hashs $links[] = $mid; } } } return $links; } #------------------------------------------------------------------------------ $OPTS = Doku_Cli_Opts::getOptions(__FILE__,'h',array('help')); if ( $OPTS->isError() ) { fwrite( STDERR, $OPTS->getMessage() . "\n"); exit(1); } if ( $OPTS->has('h') or $OPTS->has('help') ) { usage(); exit(0); } $START_DIR = $conf['datadir']; if ( $OPTS->numArgs() == 1 ) { $START_DIR .= '/' . $OPTS->arg(0); } #------------------------------------------------------------------------------ $WANTED_PAGES = array(); foreach ( dw_get_pages($START_DIR) as $WIKI_PAGE ) { $WANTED_PAGES = array_merge($WANTED_PAGES,dw_internal_links($WIKI_PAGE)); } $WANTED_PAGES = array_unique($WANTED_PAGES); sort($WANTED_PAGES); foreach ( $WANTED_PAGES as $WANTED_PAGE ) { print $WANTED_PAGE."\n"; } exit(0); splitbrain-dokuwiki-d6c824b/conf/000077500000000000000000000000001134327003500170465ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/conf/.htaccess000066400000000000000000000001051134327003500206400ustar00rootroot00000000000000## no access to the conf directory order allow,deny deny from all splitbrain-dokuwiki-d6c824b/conf/acl.auth.php.dist000066400000000000000000000007001134327003500222150ustar00rootroot00000000000000# acl.auth.php # # Don't modify the lines above # # Access Control Lists # # Editing this file by hand shouldn't be necessary. Use the ACL # Manager interface instead. # # If your auth backend allows special char like spaces in groups # or user names you need to urlencode them (only chars <128, leave # UTF-8 multibyte chars as is) # # none 0 # read 1 # edit 2 # create 4 # upload 8 # delete 16 * @ALL 8 splitbrain-dokuwiki-d6c824b/conf/acronyms.conf000066400000000000000000000123601134327003500215520ustar00rootroot00000000000000# Acronyms. ACL Access Control List AFAICS As far as I can see AFAIK As far as I know AFAIR As far as I remember AJAX Asynchronous JavaScript and XML AIM AOL (America Online) Instant Messenger AOL America Online API Application Programming Interface ASAP As soon as possible ASCII American Standard Code for Information Interchange ASP Active Server Pages BTW By the way CGI Common Gateway Interface CMS Content Management System CSS Cascading Style Sheets CVS Concurrent Versions System DBA Database Administrator DHCP Dynamic Host Configuration Protocol DHTML Dynamic HyperText Markup Language DMCA Digital Millenium Copyright Act DNS Domain Name System DOM Document Object Model DTD Document Type Definition EOF End of file EOL End of line EOM End of message EOT End of text ESMTP Extended Simple Mail Transfer Protocol FAQ Frequently Asked Questions FDL GNU Free Documentation License FTP File Transfer Protocol FOSS Free & Open-Source Software FLOSS Free/Libre and Open Source Software FUD Fear, Uncertainty, and Doubt GB Gigabyte GHz Gigahertz GIF Graphics Interchange Format GPL GNU General Public License GUI Graphical User Interface HTML HyperText Markup Language HTTP Hyper Text Transfer Protocol IANAL I am not a lawyer (but) ICANN Internet Corporation for Assigned Names and Numbers ICQ I seek you (Instant Messenger) IE5 Internet Explorer 5 IE6 Internet Explorer 6 IE Internet Explorer IIRC If I remember correctly IIS Internet Information Services IMAP Internet Message Access Protocol IMHO In my humble opinion IMO In my opinion IOW In other words IRC Internet Relay Chat IRL In real life ISO International Organization for Standardization ISP Internet Service Provider JDK Java Development Kit JPEG Joint Photographics Experts Group JPG Joint Photographics Experts Group JS JavaScript KISS Keep it simple stupid LDAP Lightweight Directory Access Protocol LGPL GNU Lesser General Public License LOL Laughing out loud MathML Mathematical Markup Language MB Megabyte MHz Megahertz MIME Multipurpose Internet Mail Extension MIT Massachusetts Institute of Technology MML Mathematical Markup Language MP3 Motion Picture Experts Group Layer 3 MPEG Motion Picture Experts Group MSDN Microsoft Developer Network MS Microsoft MSIE Microsoft Internet Explorer NIS Network Information Service NS4.7 Netscape 4.7 NS4 Netscape 4 NS6 Netscape 6 NS7 Netscape 7 OMG Oh my God OPML Outline Processor Markup Language OS Operating System OSS Open Source Software OTOH On the other hand P2P Peer to Peer PDA Personal Digital Assistant PDF Portable Document Format Perl Practical Extraction and Report Language PERL Practical Extraction and Report Language PHP Hypertext Preprocessor PICS Platform for Internet Content Selection PIN Personal Identification Number PITA Pain in the Ass PNG Portable Network Graphics POP3 Post Office Protocol 3 POP Post Office Protocol QoS Quality of Service RAID Redundant Array of Inexpensive Disks RDF Resource Description Framework ROTFL Rolling on the floor laughing RPC Remote Procedure Call RSS Rich Site Summary RTFM Read The Fine Manual RTF Rich Text File SCSI Small Computer System Interface SDK Software Development Kit SGML Standard General Markup Language SMIL Synchronized Multimedia Integration Language SMTP Simple Mail Transfer Protocol SOAP Simple Object Access Protocol spec specification SQL Structured Query Language SSH Secure Shell SSI Server Side Includes SSL Secure Sockets Layer SVG Scalable Vector Graphics TIA Thanks in advance TIFF Tagged Image File Format TLD Top Level Domain TOC Table of Contents URI Uniform Resource Identifier URL Uniform Resource Locator URN Uniform Resource Name VBA Visual Basic for Applications VB Visual Basic W3C World Wide Web Consortium WAN Wide Area Network WAP Wireless Access Protocol WML Wireless Markup Language WTF? What the f*** WWW World Wide Web WYSIWYG What You See Is What You Get XHTML Extensible HyperText Markup Language XML Extensible Markup Language XSD XML (Extensible Markup Language) Schema Definition XSL Extensible Stylesheet Language XSLT Extensible Stylesheet Language Transformations XUL XML User Interface Language YMMV Your mileage may vary splitbrain-dokuwiki-d6c824b/conf/dokuwiki.php000066400000000000000000000252351134327003500214140ustar00rootroot00000000000000 tags // 'htmldiff' - diff as HTML table // 'html' - the full page rendered in XHTML $conf['rss_update'] = 5*60; //Update the RSS feed every n seconds (defaults to 5 minutes) $conf['recent_days'] = 7; //How many days of recent changes to keep. (days) $conf['rss_show_summary'] = 1; //Add revision summary to title? 0|1 $conf['broken_iua'] = 0; //Platform with broken ignore_user_abort (IIS+CGI) 0|1 $conf['xsendfile'] = 0; //Use X-Sendfile (1 = lighttpd, 2 = standard) $conf['renderer_xhtml'] = 'xhtml'; //renderer to use for main page generation $conf['rememberme'] = 1; //Enable/disable remember me on login //Set target to use when creating links - leave empty for same window $conf['target']['wiki'] = ''; $conf['target']['interwiki'] = ''; $conf['target']['extern'] = ''; $conf['target']['media'] = ''; $conf['target']['windows'] = ''; //Proxy setup - if your Server needs a proxy to access the web set these $conf['proxy']['host'] = ''; $conf['proxy']['port'] = ''; $conf['proxy']['user'] = ''; $conf['proxy']['pass'] = ''; $conf['proxy']['ssl'] = 0; /* Safemode Hack */ $conf['safemodehack'] = 0; //read http://www.dokuwiki.org/config:safemodehack ! $conf['ftp']['host'] = 'localhost'; $conf['ftp']['port'] = '21'; $conf['ftp']['user'] = 'user'; $conf['ftp']['pass'] = 'password'; $conf['ftp']['root'] = '/home/user/htdocs'; splitbrain-dokuwiki-d6c824b/conf/entities.conf000066400000000000000000000005411134327003500215410ustar00rootroot00000000000000# Typography replacements # # Order does matter! # # You can use HTML entities here, but it is not recomended because it may break # non-HTML renderers. Use UTF-8 chars directly instead. <-> ↔ -> → <- ↠<=> ⇔ => ⇒ <= ⇠>> » << « --- — -- – (c) © (tm) â„¢ (r) ® ... … splitbrain-dokuwiki-d6c824b/conf/interwiki.conf000066400000000000000000000144101134327003500217220ustar00rootroot00000000000000# Each URL may contain one of the placeholders {URL} or {NAME} # {URL} is replaced by the URL encoded representation of the wikiname # this is the right thing to do in most cases # {NAME} this is replaced by the wikiname as given in the document # no further encoding is done # If no placeholder is defined the urlencoded name is appended to the URL # You can add more InterWiki shortcuts here. wp http://en.wikipedia.org/wiki/{NAME} wpfr http://fr.wikipedia.org/wiki/{NAME} wpde http://de.wikipedia.org/wiki/{NAME} wpes http://es.wikipedia.org/wiki/{NAME} wppl http://pl.wikipedia.org/wiki/{NAME} wpjp http://ja.wikipedia.org/wiki/{NAME} wpmeta http://meta.wikipedia.org/wiki/{NAME} doku http://www.dokuwiki.org/ dokubug http://bugs.splitbrain.org/index.php?do=details&task_id= rfc http://www.cs.ccu.edu.tw/~chm91u/rfc2html.php?in= man http://man.cx/ amazon http://www.amazon.com/exec/obidos/ASIN/{URL}/splitbrain-20/ amazon.de http://www.amazon.de/exec/obidos/ASIN/{URL}/splitbrain-21/ amazon.uk http://www.amazon.co.uk/exec/obidos/ASIN/ phpfn http://www.php.net/{NAME} coral http://{HOST}.{PORT}.nyud.net:8090/{PATH}?{QUERY} freecache http://freecache.org/{NAME} sb http://www.splitbrain.org/go/ google.de http://www.google.de/search?q= go http://www.google.com/search?q={URL}&btnI=lucky # Standards from http://usemod.com/intermap.txt follow AbbeNormal http://www.ourpla.net/cgi-bin/pikie.cgi? AcadWiki http://xarch.tu-graz.ac.at/autocad/wiki/ Acronym http://www.acronymfinder.com/af-query.asp?String=exact&Acronym= Advogato http://www.advogato.org/ AIWiki http://www.ifi.unizh.ch/ailab/aiwiki/aiw.cgi? ALife http://news.alife.org/wiki/index.php? AndStuff http://andstuff.org/wiki.php? Annotation http://bayle.stanford.edu/crit/nph-med.cgi/ AnnotationWiki http://www.seedwiki.com/page.cfm?wikiid=368&doc= AwarenessWiki http://taoriver.net/aware/ BenefitsWiki http://www.benefitslink.com/cgi-bin/wiki.cgi? BridgesWiki http://c2.com/w2/bridges/ C2find http://c2.com/cgi/wiki?FindPage&value= Cache http://www.google.com/search?q=cache: CLiki http://ww.telent.net/cliki/ CmWiki http://www.ourpla.net/cgi-bin/wiki.pl? CreationMatters http://www.ourpla.net/cgi-bin/wiki.pl? DejaNews http://www.deja.com/=dnc/getdoc.xp?AN= DeWikiPedia http://www.wikipedia.de/wiki.cgi? Dictionary http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query= DiveIntoOsx http://diveintoosx.org/ DocBook http://docbook.org/wiki/moin.cgi/ DolphinWiki http://www.object-arts.com/wiki/html/Dolphin/ EfnetCeeWiki http://purl.net/wiki/c/ EfnetCppWiki http://purl.net/wiki/cpp/ EfnetPythonWiki http://purl.net/wiki/python/ EfnetXmlWiki http://purl.net/wiki/xml/ EljWiki http://elj.sourceforge.net/phpwiki/index.php/ EmacsWiki http://www.emacswiki.org/cgi-bin/wiki.pl? FinalEmpire http://final-empire.sourceforge.net/cgi-bin/wiki.pl? Foldoc http://www.foldoc.org/foldoc/foldoc.cgi? FoxWiki http://fox.wikis.com/wc.dll?Wiki~ FreeBSDman http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query= Google http://www.google.com/search?q= GoogleGroups http://groups.google.com/groups?q= GreenCheese http://www.greencheese.org/ HammondWiki http://www.dairiki.org/HammondWiki/index.php3? Haribeau http://wiki.haribeau.de/cgi-bin/wiki.pl? IAWiki http://www.IAwiki.net/ IMDB http://us.imdb.com/Title? JargonFile http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect= JiniWiki http://www.cdegroot.com/cgi-bin/jini? JspWiki http://www.ecyrd.com/JSPWiki/Wiki.jsp?page= KmWiki http://www.voght.com/cgi-bin/pywiki? KnowHow http://www2.iro.umontreal.ca/~paquetse/cgi-bin/wiki.cgi? LanifexWiki http://opt.lanifex.com/cgi-bin/wiki.pl? LegoWiki http://www.object-arts.com/wiki/html/Lego-Robotics/ LinuxWiki http://www.linuxwiki.de/ LugKR http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl? MathSongsWiki http://SeedWiki.com/page.cfm?wikiid=237&doc= MbTest http://www.usemod.com/cgi-bin/mbtest.pl? MeatBall http://www.usemod.com/cgi-bin/mb.pl? MetaWiki http://sunir.org/apps/meta.pl? MetaWikiPedia http://meta.wikipedia.com/wiki/ MoinMoin http://purl.net/wiki/moin/ MuWeb http://www.dunstable.com/scripts/MuWebWeb? NetVillage http://www.netbros.com/? OpenWiki http://openwiki.com/? OrgPatterns http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns? PangalacticOrg http://www.pangalactic.org/Wiki/ PersonalTelco http://www.personaltelco.net/index.cgi/ PhpWiki http://phpwiki.sourceforge.net/phpwiki/index.php? Pikie http://pikie.darktech.org/cgi/pikie? PPR http://c2.com/cgi/wiki? PurlNet http://purl.oclc.org/NET/ PythonInfo http://www.python.org/cgi-bin/moinmoin/ PythonWiki http://www.pythonwiki.de/ PyWiki http://www.voght.com/cgi-bin/pywiki? SeaPig http://www.seapig.org/ SeattleWireless http://seattlewireless.net/? SenseisLibrary http://senseis.xmp.net/? Shakti http://cgi.algonet.se/htbin/cgiwrap/pgd/ShaktiWiki/ SourceForge http://sourceforge.net/{NAME} Squeak http://minnow.cc.gatech.edu/squeak/ StrikiWiki http://ch.twi.tudelft.nl/~mostert/striki/teststriki.pl? SVGWiki http://www.protocol7.com/svg-wiki/default.asp? Tavi http://tavi.sourceforge.net/index.php? TmNet http://www.technomanifestos.net/? TMwiki http://www.EasyTopicMaps.com/?page= TWiki http://twiki.org/cgi-bin/view/{NAME} TwistedWiki http://purl.net/wiki/twisted/ Unreal http://wiki.beyondunreal.com/wiki/ UseMod http://www.usemod.com/cgi-bin/wiki.pl? VisualWorks http://wiki.cs.uiuc.edu/VisualWorks/ WebDevWikiNL http://www.promo-it.nl/WebDevWiki/index.php?page= WebSeitzWiki http://webseitz.fluxent.com/wiki/ Why http://clublet.com/c/c/why? Wiki http://c2.com/cgi/wiki? WikiPedia http://www.wikipedia.com/wiki/ WikiWorld http://WikiWorld.com/wiki/index.php/ YpsiEyeball http://sknkwrks.dyndns.org:1957/writewiki/wiki.pl? ZWiki http://www.zwiki.org/ splitbrain-dokuwiki-d6c824b/conf/license.php000066400000000000000000000030201134327003500211740ustar00rootroot00000000000000 'CC Attribution 3.0 Unported', 'url' => 'http://creativecommons.org/licenses/by/3.0/', ); $license['cc-by-nc'] = array( 'name' => 'CC Attribution-Noncommercial 3.0 Unported', 'url' => 'http://creativecommons.org/licenses/by-nc/3.0/', ); $license['cc-by-nc-nd'] = array( 'name' => 'CC Attribution-Noncommercial-No Derivative Works 3.0 Unported', 'url' => 'http://creativecommons.org/licenses/by-nc-nd/3.0/', ); $license['cc-by-nc-sa'] = array( 'name' => 'CC Attribution-Noncommercial-Share Alike 3.0 Unported', 'url' => 'http://creativecommons.org/licenses/by-nc-sa/3.0/', ); $license['cc-by-nd'] = array( 'name' => 'CC Attribution-No Derivative Works 3.0 Unported', 'url' => 'http://creativecommons.org/licenses/by-nd/3.0/', ); $license['cc-by-sa'] = array( 'name' => 'CC Attribution-Share Alike 3.0 Unported', 'url' => 'http://creativecommons.org/licenses/by-sa/3.0/', ); $license['cc-zero'] = array( 'name' => 'CC0 1.0 Universal', 'url' => 'http://creativecommons.org/publicdomain/zero/1.0/', ); $license['publicdomain'] = array( 'name' => 'Public Domain', 'url' => 'http://creativecommons.org/licenses/publicdomain/', ); $license['gnufdl'] = array( 'name' => 'GNU Free Documentation License 1.3', 'url' => 'http://www.gnu.org/licenses/fdl-1.3.html', ); splitbrain-dokuwiki-d6c824b/conf/local.php.dist000066400000000000000000000007161134327003500216170ustar00rootroot00000000000000 array('Iptc.Headline', 'img_title', 'text'), 20 => array('Iptc.Caption', 'img_caption', 'textarea', array('Exif.UserComment', 'Exif.TIFFImageDescription', 'Exif.TIFFUserComment')), 30 => array('Iptc.Byline', 'img_artist', 'text', array('Exif.TIFFArtist', 'Exif.Artist', 'Iptc.Credit')), 40 => array('Iptc.CopyrightNotice', 'img_copyr', 'text', array('Exif.TIFFCopyright', 'Exif.Copyright')), 50 => array('Iptc.Keywords', 'img_keywords', 'text', array('Exif.Category')), ); splitbrain-dokuwiki-d6c824b/conf/mime.conf000066400000000000000000000040421134327003500206440ustar00rootroot00000000000000# Allowed uploadable file extensions and mimetypes are defined here. # To extend this file it is recommended to create a mime.local.conf # file. Mimetypes that should be downloadable and not be opened in the # should be prefixed with a ! jpg image/jpeg jpeg image/jpeg gif image/gif png image/png swf application/x-shockwave-flash mp3 audio/mpeg ogg audio/ogg wav audio/wav tgz !application/octet-stream tar !application/x-gtar gz !application/octet-stream bz2 !application/octet-stream zip !application/zip rar !application/rar 7z !application/x-7z-compressed pdf application/pdf ps !application/postscript rpm !application/octet-stream deb !application/octet-stream doc !application/msword xls !application/msexcel ppt !application/mspowerpoint rtf !application/msword docx !application/vnd.openxmlformats-officedocument.wordprocessingml.document xlsx !application/vnd.openxmlformats-officedocument.spreadsheetml.sheet pptx !application/vnd.openxmlformats-officedocument.presentationml.presentation sxw !application/soffice sxc !application/soffice sxi !application/soffice sxd !application/soffice odc !application/vnd.oasis.opendocument.chart odf !application/vnd.oasis.opendocument.formula odg !application/vnd.oasis.opendocument.graphics odi !application/vnd.oasis.opendocument.image odp !application/vnd.oasis.opendocument.presentation ods !application/vnd.oasis.opendocument.spreadsheet odt !application/vnd.oasis.opendocument.text # You should enable HTML and Text uploads only for restricted Wikis. # Spammers are known to upload spam pages through unprotected Wikis. # Note: Enabling HTML opens Cross Site Scripting vulnerabilities # through JavaScript. Only enable this with trusted users. You # need to disable the iexssprotect option additionally to # adding the mime type here #html text/html #htm text/html #txt text/plain #conf text/plain #xml text/xml #csv text/csv splitbrain-dokuwiki-d6c824b/conf/msg000066400000000000000000000005441134327003500175620ustar00rootroot0000000000000025 The first line of this file contains a number, indicating which notification messages should not be displayed. This is the only information sent to dokuwiki.org when the updatecheck option is enabled. You usually don't need to change this number as it gets updated when you install the new release - but to ignore a certain message set its number here. splitbrain-dokuwiki-d6c824b/conf/mysql.conf.php.example000066400000000000000000000254151134327003500233110ustar00rootroot00000000000000 # Don't modify the lines above # # Userfile # # Format: # # user:MD5password:Real Name:email:groups,comma,seperated splitbrain-dokuwiki-d6c824b/conf/wordblock.conf000066400000000000000000013567051134327003500217240ustar00rootroot00000000000000# This is the URL blacklist from the chongqed.org database # it is available from http://blacklist.chongqed.org/ # You can use each line below as a regular expression # that can be tested against URLs on your wiki. # The last spammer was added on 2008-09-11 10:14:51 https?:\/\/([^\/]*\.)?-com-boob-sex-sexy\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?0--sex\.com https?:\/\/([^\/]*\.)?0-casinos\.org https?:\/\/([^\/]*\.)?0-poker\.net https?:\/\/([^\/]*\.)?00007\.com https?:\/\/([^\/]*\.)?001-mature-teacher\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?007vip\.cn https?:\/\/([^\/]*\.)?01incest\.za\.pl https?:\/\/([^\/]*\.)?021boy\.com https?:\/\/([^\/]*\.)?027168\.com https?:\/\/([^\/]*\.)?02incest\.za\.pl https?:\/\/([^\/]*\.)?03incest\.za\.pl https?:\/\/([^\/]*\.)?086books\.com https?:\/\/([^\/]*\.)?0esy-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?0lmz-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?0sxa-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?0tdwrmq8\.org https?:\/\/([^\/]*\.)?0x009\.blogspot\.com https?:\/\/([^\/]*\.)?1-888-pokermon\.com https?:\/\/([^\/]*\.)?1-adipex\.us https?:\/\/([^\/]*\.)?1-cialis\.us https?:\/\/([^\/]*\.)?1-craps\.net https?:\/\/([^\/]*\.)?1-levitra\.us https?:\/\/([^\/]*\.)?1-poker-game\.com https?:\/\/([^\/]*\.)?1-xenical\.us https?:\/\/([^\/]*\.)?10-best-online-casinosx\.blogspot\.com https?:\/\/([^\/]*\.)?100-25-ebony-free\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?10med\.com https?:\/\/([^\/]*\.)?10pharm\.com https?:\/\/([^\/]*\.)?114418523\.blogspot\.com https?:\/\/([^\/]*\.)?117000\.com https?:\/\/([^\/]*\.)?1177888888\.com https?:\/\/([^\/]*\.)?123clips-com-cq03\.blogspot\.com https?:\/\/([^\/]*\.)?123clips-com-td\.blogspot\.com https?:\/\/([^\/]*\.)?123clips-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?123clips-tp5\.blogspot\.com https?:\/\/([^\/]*\.)?126hao\.com https?:\/\/([^\/]*\.)?163car\.com https?:\/\/([^\/]*\.)?163school\.com\.cn https?:\/\/([^\/]*\.)?168chinese\.com https?:\/\/([^\/]*\.)?168english\.com https?:\/\/([^\/]*\.)?168standard\.com https?:\/\/([^\/]*\.)?181st-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?18to19-com-dbo26u\.blogspot\.com https?:\/\/([^\/]*\.)?18to19-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?1avoro\.info https?:\/\/([^\/]*\.)?1c1garettes-777\.tripod\.com https?:\/\/([^\/]*\.)?1centpoker\.us https?:\/\/([^\/]*\.)?1clickpoker\.us https?:\/\/([^\/]*\.)?1dollarpoker\.us https?:\/\/([^\/]*\.)?1ebalo\.org https?:\/\/([^\/]*\.)?1freepoker\.us https?:\/\/([^\/]*\.)?1gogo\.awardspace\.com https?:\/\/([^\/]*\.)?1golod\.org https?:\/\/([^\/]*\.)?1i-casino\.com https?:\/\/([^\/]*\.)?1jolla\.org https?:\/\/([^\/]*\.)?1kaj-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?1min\.us https?:\/\/([^\/]*\.)?1onlinepoker\.us https?:\/\/([^\/]*\.)?1ringtones\.fateback\.com https?:\/\/([^\/]*\.)?1st-in-poker\.us https?:\/\/([^\/]*\.)?1st-phentermine\.to\.pl https?:\/\/([^\/]*\.)?1st-place-poker\.com https?:\/\/([^\/]*\.)?1st-poker\.us https?:\/\/([^\/]*\.)?1stpharma\.noads\.biz https?:\/\/([^\/]*\.)?1stpharmacy\.rmcinfo\.fr https?:\/\/([^\/]*\.)?1stviagra\.coz\.in https?:\/\/([^\/]*\.)?1whs\.com https?:\/\/([^\/]*\.)?2-poker\.us https?:\/\/([^\/]*\.)?2008-web-hosting\.com https?:\/\/([^\/]*\.)?2010oa\.com https?:\/\/([^\/]*\.)?2228888\.com https?:\/\/([^\/]*\.)?24ringtonevme\.blogspot\.com https?:\/\/([^\/]*\.)?24x7\.soliday\.org https?:\/\/([^\/]*\.)?2apd-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?2cpo-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?30moms-com-dd8h8y1slq\.blogspot\.com https?:\/\/([^\/]*\.)?30moms-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?321\.cn https?:\/\/([^\/]*\.)?33b\.b33r\.net https?:\/\/([^\/]*\.)?33orgy\.org https?:\/\/([^\/]*\.)?3mac\.info https?:\/\/([^\/]*\.)?3pic-com-ai3\.blogspot\.com https?:\/\/([^\/]*\.)?3pic-com-kedet\.blogspot\.com https?:\/\/([^\/]*\.)?40inchplus-com-b4\.blogspot\.com https?:\/\/([^\/]*\.)?40inchplus-com-toqof\.blogspot\.com https?:\/\/([^\/]*\.)?40inchplus-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?4arf-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?4erni-pes\.blogspot\.com https?:\/\/([^\/]*\.)?4mednew\.com https?:\/\/([^\/]*\.)?4mkat4\.com https?:\/\/([^\/]*\.)?4onlinecasino4\.blogspot\.com https?:\/\/([^\/]*\.)?4t7e\.info https?:\/\/([^\/]*\.)?4tsmiget\.forumzen\.com https?:\/\/([^\/]*\.)?4tsutmon\.forumzen\.com https?:\/\/([^\/]*\.)?4udf-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?4x2\.net https?:\/\/([^\/]*\.)?510sms\.blogbus\.com https?:\/\/([^\/]*\.)?5188job\.com https?:\/\/([^\/]*\.)?51lac\.com https?:\/\/([^\/]*\.)?51lover\.org https?:\/\/([^\/]*\.)?51sms\.blogbus\.com https?:\/\/([^\/]*\.)?51web\.cn https?:\/\/([^\/]*\.)?51wisdom\.com https?:\/\/([^\/]*\.)?51wisdom\.com\.cn https?:\/\/([^\/]*\.)?51wisdom\.net https?:\/\/([^\/]*\.)?520sms\.blogbus\.com https?:\/\/([^\/]*\.)?52lac\.net https?:\/\/([^\/]*\.)?5417\.cn https?:\/\/([^\/]*\.)?54epson\.com https?:\/\/([^\/]*\.)?55\.2myip\.com https?:\/\/([^\/]*\.)?5588866\.com\.cn https?:\/\/([^\/]*\.)?56156\.com https?:\/\/([^\/]*\.)?563000\.com https?:\/\/([^\/]*\.)?56918\.com https?:\/\/([^\/]*\.)?59165\.net https?:\/\/([^\/]*\.)?5ijipiao\.com https?:\/\/([^\/]*\.)?5up-net-blmpo6qr0\.blogspot\.com https?:\/\/([^\/]*\.)?5up-net-wr00skgzbo\.blogspot\.com https?:\/\/([^\/]*\.)?63\.217\.31\.49 https?:\/\/([^\/]*\.)?6717\.com\.cn https?:\/\/([^\/]*\.)?69pose\.org https?:\/\/([^\/]*\.)?6tvju0a\.nokedem\.com https?:\/\/([^\/]*\.)?70678\.com https?:\/\/([^\/]*\.)?7171\.blogshot\.nl https?:\/\/([^\/]*\.)?72\.net\.cn https?:\/\/([^\/]*\.)?77zhong\.com https?:\/\/([^\/]*\.)?78\.net\.cn https?:\/\/([^\/]*\.)?79179\.com https?:\/\/([^\/]*\.)?7982257596\.blogspot\.com https?:\/\/([^\/]*\.)?7dftw79\.nokedem\.com https?:\/\/([^\/]*\.)?7j5lj\.info https?:\/\/([^\/]*\.)?7shg-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?7x7\.ruwe\.net https?:\/\/([^\/]*\.)?8-teenies\.freeinsite\.net https?:\/\/([^\/]*\.)?80880\.com https?:\/\/([^\/]*\.)?8224\.net https?:\/\/([^\/]*\.)?86wys\.com https?:\/\/([^\/]*\.)?87793798\.cn https?:\/\/([^\/]*\.)?888\.web\.com https?:\/\/([^\/]*\.)?88by88-ax4nzu\.blogspot\.com https?:\/\/([^\/]*\.)?88by88-com-hx06a\.blogspot\.com https?:\/\/([^\/]*\.)?88by88-com-nekuk\.blogspot\.com https?:\/\/([^\/]*\.)?88tm\.com https?:\/\/([^\/]*\.)?8pcg-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?8teenfiles-com-dzlvk\.blogspot\.com https?:\/\/([^\/]*\.)?8teenfiles-com-mj6\.blogspot\.com https?:\/\/([^\/]*\.)?8teenfiles-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?8thstreetlatinas-com-rw48o84iwl\.blogspot\.com https?:\/\/([^\/]*\.)?8vwx-adult-sites\.blogspot\.com https?:\/\/([^\/]*\.)?90001\.cn https?:\/\/([^\/]*\.)?911\.x24hr\.com https?:\/\/([^\/]*\.)?911w\.net https?:\/\/([^\/]*\.)?91yg\.com https?:\/\/([^\/]*\.)?96china\.com https?:\/\/([^\/]*\.)?96china\.net https?:\/\/([^\/]*\.)?96d2\.com https?:\/\/([^\/]*\.)?98-boot-disk-japanese-window\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?99aids\.com https?:\/\/([^\/]*\.)?a-blonde-babe-in-bikini\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?a-milf-video-preview\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?a-onedigitizing\.com https?:\/\/([^\/]*\.)?a-oneemb\.com https?:\/\/([^\/]*\.)?a-phentermine\.us https?:\/\/([^\/]*\.)?a-poker-casino\.com https?:\/\/([^\/]*\.)?a-porn-sex-adult-xxx\.com https?:\/\/([^\/]*\.)?aaeon\.com\.cn https?:\/\/([^\/]*\.)?aalita\.com https?:\/\/([^\/]*\.)?aalive\.info https?:\/\/([^\/]*\.)?aalop\.info https?:\/\/([^\/]*\.)?aamjh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?aaqqywh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ababd1\.com https?:\/\/([^\/]*\.)?abasti\.com https?:\/\/([^\/]*\.)?abbama\.com https?:\/\/([^\/]*\.)?abbc\.edu https?:\/\/([^\/]*\.)?abbleg4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?abca\.biz https?:\/\/([^\/]*\.)?abcink\.com https?:\/\/([^\/]*\.)?abijah\.phpbbx\.de https?:\/\/([^\/]*\.)?abijah\.romandie\.com https?:\/\/([^\/]*\.)?abito-da-sera\.bb22\.info https?:\/\/([^\/]*\.)?about-money-world\.com https?:\/\/([^\/]*\.)?aboutinfotech\.com https?:\/\/([^\/]*\.)?aboutmitsubishiparts\.cn https?:\/\/([^\/]*\.)?abriana\.phpbbx\.de https?:\/\/([^\/]*\.)?abrianna\.romandie\.com https?:\/\/([^\/]*\.)?absolutely-free-porn-clip-blogyvg\.blogspot\.com https?:\/\/([^\/]*\.)?absolutely-free-porn-clip-zone28k\.blogspot\.com https?:\/\/([^\/]*\.)?aburri\.com https?:\/\/([^\/]*\.)?academics\.smcvt\.edu https?:\/\/([^\/]*\.)?acantorr\.forumzen\.com https?:\/\/([^\/]*\.)?accounting-degree\.hotmail\.ru https?:\/\/([^\/]*\.)?accounting1degre\.chat\.ru https?:\/\/([^\/]*\.)?accredited-degre\.hotmail\.ru https?:\/\/([^\/]*\.)?accredited1degre\.chat\.ru https?:\/\/([^\/]*\.)?accredited2degre\.chat\.ru https?:\/\/([^\/]*\.)?acelacacel\.dl\.pl https?:\/\/([^\/]*\.)?acelalacel\.blogcu\.com https?:\/\/([^\/]*\.)?acelcocna\.lolbb\.com https?:\/\/([^\/]*\.)?aceldron\.lightbb\.com https?:\/\/([^\/]*\.)?acelgetric\.dl\.pl https?:\/\/([^\/]*\.)?acellibo\.dl\.pl https?:\/\/([^\/]*\.)?acellitroc\.xa\.pl https?:\/\/([^\/]*\.)?acelracer\.graphforum\.com https?:\/\/([^\/]*\.)?acelrel\.discutforum\.com https?:\/\/([^\/]*\.)?acgetvar\.iphorum\.com https?:\/\/([^\/]*\.)?achima\.phpbbx\.de https?:\/\/([^\/]*\.)?achima\.romandie\.com https?:\/\/([^\/]*\.)?achutsit\.forumzen\.com https?:\/\/([^\/]*\.)?acima\.phpbbx\.de https?:\/\/([^\/]*\.)?acima\.romandie\.com https?:\/\/([^\/]*\.)?acimah\.romandie\.com https?:\/\/([^\/]*\.)?aciphexbuy\.chip\.ms https?:\/\/([^\/]*\.)?aciphexcheap\.mysite\.de https?:\/\/([^\/]*\.)?aciphexcheapbuy\.cut\.by https?:\/\/([^\/]*\.)?aciphexgeneric\.redirect\.to https?:\/\/([^\/]*\.)?aciphexgenericbuy\.dive\.to https?:\/\/([^\/]*\.)?aclyulac\.forumzen\.com https?:\/\/([^\/]*\.)?acme-arts\.com https?:\/\/([^\/]*\.)?acmonno\.zikforum\.com https?:\/\/([^\/]*\.)?acne-medicinebco\.blogspot\.com https?:\/\/([^\/]*\.)?acololi\.winnerforum\.net https?:\/\/([^\/]*\.)?acouc\.zj\.pl https?:\/\/([^\/]*\.)?acrolrel\.blogcu\.com https?:\/\/([^\/]*\.)?acscuace\.forumzen\.com https?:\/\/([^\/]*\.)?actingland\.com https?:\/\/([^\/]*\.)?action-in-lesbian-lover\.gameover\.in\.ua https?:\/\/([^\/]*\.)?action36-kx8\.blogspot\.com https?:\/\/([^\/]*\.)?actonelbuy\.drop\.to https?:\/\/([^\/]*\.)?actonelcheap\.notrix\.ch https?:\/\/([^\/]*\.)?actonelcheapgeneric\.fanclub\.ms https?:\/\/([^\/]*\.)?actonelgeneric\.drop\.to https?:\/\/([^\/]*\.)?actonelonline\.drive\.to https?:\/\/([^\/]*\.)?acurahost\.cn https?:\/\/([^\/]*\.)?acuratrades\.cn https?:\/\/([^\/]*\.)?acxza\.szm\.sk https?:\/\/([^\/]*\.)?acyclovir\.1\.p2l\.info https?:\/\/([^\/]*\.)?ad0571\.com https?:\/\/([^\/]*\.)?adapturl\.com https?:\/\/([^\/]*\.)?adault\.adultserv\.info https?:\/\/([^\/]*\.)?adds1\.trafflow\.com https?:\/\/([^\/]*\.)?adipex-08pr\.blogspot\.com https?:\/\/([^\/]*\.)?adipex-911\.coz\.in https?:\/\/([^\/]*\.)?adipex-buyvie\.blogspot\.com https?:\/\/([^\/]*\.)?adipex-cc\.blogspot\.com https?:\/\/([^\/]*\.)?adipex-phenterminepwf\.blogspot\.com https?:\/\/([^\/]*\.)?adipex-wiki\.com https?:\/\/([^\/]*\.)?adipex\.1\.p2l\.info https?:\/\/([^\/]*\.)?adipex\.edu\.tf https?:\/\/([^\/]*\.)?adipex\.edublogs\.org https?:\/\/([^\/]*\.)?adipex\.health-livening\.com https?:\/\/([^\/]*\.)?adipexes\.blogspot\.com https?:\/\/([^\/]*\.)?adipexwoq\.blogspot\.com https?:\/\/([^\/]*\.)?adipexxdt\.blogspot\.com https?:\/\/([^\/]*\.)?adira\.phpbbx\.de https?:\/\/([^\/]*\.)?adira\.romandie\.com https?:\/\/([^\/]*\.)?adrienneee\.ifrance\.com https?:\/\/([^\/]*\.)?adrienneee\.xhostar\.com https?:\/\/([^\/]*\.)?adsenseready\.com https?:\/\/([^\/]*\.)?adult-clips-com-guqiax1tu\.blogspot\.com https?:\/\/([^\/]*\.)?adult-clips-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?adult-dating-free\.sexnation\.info https?:\/\/([^\/]*\.)?adult-dating\.sexnation\.info https?:\/\/([^\/]*\.)?adult-free-fucking-movie\.gameover\.in\.ua https?:\/\/([^\/]*\.)?adult-free-granny-video\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?adult-fx\.info https?:\/\/([^\/]*\.)?adult-list-com-wqf4ojq2uk\.blogspot\.com https?:\/\/([^\/]*\.)?adult-list-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?adult-personals\.sexnation\.info https?:\/\/([^\/]*\.)?adult-porn-clip-info887\.blogspot\.com https?:\/\/([^\/]*\.)?adult-sites-review\.beaffaired\.com https?:\/\/([^\/]*\.)?adult\.1foleks\.org https?:\/\/([^\/]*\.)?adult1clip\.blogspot\.com https?:\/\/([^\/]*\.)?adult1movies\.blogspot\.com https?:\/\/([^\/]*\.)?adult1video\.blogspot\.com https?:\/\/([^\/]*\.)?adult69club\.tripod\.com https?:\/\/([^\/]*\.)?adultbuffet-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?adultpersonalsxgj\.blogspot\.com https?:\/\/([^\/]*\.)?adultpersonalz\.net https?:\/\/([^\/]*\.)?adultsexvideo\.blogspot\.com https?:\/\/([^\/]*\.)?adultsitefind\.info https?:\/\/([^\/]*\.)?adultsiteshop\.info https?:\/\/([^\/]*\.)?adultsss\.cafe150\.com https?:\/\/([^\/]*\.)?adultsss\.freehostia\.com https?:\/\/([^\/]*\.)?adust\.my10gb\.com https?:\/\/([^\/]*\.)?advanceloanfast\.info https?:\/\/([^\/]*\.)?adventure-travel\.globaltr\.info https?:\/\/([^\/]*\.)?advice-kissing\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?adviser-financial-friendly-gay\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?adviser\.8888mb\.com https?:\/\/([^\/]*\.)?adwareremoval\.myinfo\.ws https?:\/\/([^\/]*\.)?ae\.siam\.edu https?:\/\/([^\/]*\.)?aebn-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?aezat\.myfreewebhost\.org https?:\/\/([^\/]*\.)?afdtf\.szm\.sk https?:\/\/([^\/]*\.)?affishe\.hostcroc\.com https?:\/\/([^\/]*\.)?affishe\.webmelia\.com https?:\/\/([^\/]*\.)?afraima\.phpbbx\.de https?:\/\/([^\/]*\.)?african-american-lesbian-personals\.gameover\.in\.ua https?:\/\/([^\/]*\.)?africanvagina-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?aftworld\.com https?:\/\/([^\/]*\.)?afxbmx\.info https?:\/\/([^\/]*\.)?agbht\.fr33webhost\.com https?:\/\/([^\/]*\.)?agclore\.dl\.pl https?:\/\/([^\/]*\.)?agcw-com-cme2qnyzyt\.blogspot\.com https?:\/\/([^\/]*\.)?agcw-com-r10opb\.blogspot\.com https?:\/\/([^\/]*\.)?agcw-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?agentlovelette\.250free\.com https?:\/\/([^\/]*\.)?aghas\.info https?:\/\/([^\/]*\.)?agmy3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?agrrjd4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?agylavu\.org https?:\/\/([^\/]*\.)?ah-me-com-af7ipw\.blogspot\.com https?:\/\/([^\/]*\.)?ah-me-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?ah-me-t7o\.blogspot\.com https?:\/\/([^\/]*\.)?ahava\.phpbbx\.de https?:\/\/([^\/]*\.)?ahuva\.phpbbx\.de https?:\/\/([^\/]*\.)?aidlov\.com https?:\/\/([^\/]*\.)?aids-china\.com https?:\/\/([^\/]*\.)?aids\.ik8\.com https?:\/\/([^\/]*\.)?aids1\.zj\.com https?:\/\/([^\/]*\.)?aids333\.net https?:\/\/([^\/]*\.)?aikn3\.szm\.sk https?:\/\/([^\/]*\.)?air520\.com https?:\/\/([^\/]*\.)?airfarelowest\.net https?:\/\/([^\/]*\.)?airline-ticket-now\.com https?:\/\/([^\/]*\.)?airline-ticket\.globaltr\.info https?:\/\/([^\/]*\.)?ajneuas\.com https?:\/\/([^\/]*\.)?akbxb\.fr33webhost\.com https?:\/\/([^\/]*\.)?akissbetweenthelegs-com-hesel\.blogspot\.com https?:\/\/([^\/]*\.)?akissbetweenthelegs-com-tsawya560\.blogspot\.com https?:\/\/([^\/]*\.)?akissbetweenthelegs-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?al-femminile\.freespase\.info https?:\/\/([^\/]*\.)?al4a-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?alabamamortgage-x\.com https?:\/\/([^\/]*\.)?alalal\.myrealboard\.com https?:\/\/([^\/]*\.)?alaldalli\.naturalforum\.net https?:\/\/([^\/]*\.)?alanthomashairsalon\.com https?:\/\/([^\/]*\.)?alarcit\.dynamicbb\.com https?:\/\/([^\/]*\.)?alaskamortgage-x\.com https?:\/\/([^\/]*\.)?alba-boob-jessica-slip\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?albergo-economici-rimini\.ll33\.info https?:\/\/([^\/]*\.)?albergo-parigi\.freespase\.info https?:\/\/([^\/]*\.)?albums-proshots\.com https?:\/\/([^\/]*\.)?alchita\.goodforum\.net https?:\/\/([^\/]*\.)?alchita\.grafbb\.com https?:\/\/([^\/]*\.)?aldabridgeman\.site\.io https?:\/\/([^\/]*\.)?aldarta\.discutforum\.com https?:\/\/([^\/]*\.)?aldomc\.jc\.pl https?:\/\/([^\/]*\.)?aldronboc\.lightbb\.com https?:\/\/([^\/]*\.)?aleluja\.asp2\.cz https?:\/\/([^\/]*\.)?alerou\.su\.pl https?:\/\/([^\/]*\.)?aleteta\.com https?:\/\/([^\/]*\.)?alexaner\.etowns\.net https?:\/\/([^\/]*\.)?alexmovies-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?alhilalb\.forumzen\.com https?:\/\/([^\/]*\.)?alias\.asp2\.cz https?:\/\/([^\/]*\.)?aliyah\.phpbbx\.de https?:\/\/([^\/]*\.)?aliza\.phpbbx\.de https?:\/\/([^\/]*\.)?all-rnb\.com https?:\/\/([^\/]*\.)?all4sexonline\.biz https?:\/\/([^\/]*\.)?allabout-casino\.com https?:\/\/([^\/]*\.)?allabout-poker\.com https?:\/\/([^\/]*\.)?allabout-poker\.net https?:\/\/([^\/]*\.)?allabout\.onplex\.de https?:\/\/([^\/]*\.)?allaboutx\.freeasyhost\.com https?:\/\/([^\/]*\.)?allaboutx\.hostingclub\.de https?:\/\/([^\/]*\.)?allaboutx\.m5t\.de https?:\/\/([^\/]*\.)?allall\.org https?:\/\/([^\/]*\.)?allcamsguide\.info https?:\/\/([^\/]*\.)?allcars\.digitalzones\.com https?:\/\/([^\/]*\.)?allcheapchat\.info https?:\/\/([^\/]*\.)?alldep\.com https?:\/\/([^\/]*\.)?allearjah\.com https?:\/\/([^\/]*\.)?alledasar\.com https?:\/\/([^\/]*\.)?allegra\.1\.p2l\.info https?:\/\/([^\/]*\.)?allegradgeneric\.sblog\.cz https?:\/\/([^\/]*\.)?allen-edmonds-shoes\.info https?:\/\/([^\/]*\.)?allergy\.1\.p2l\.info https?:\/\/([^\/]*\.)?allforsale\.org https?:\/\/([^\/]*\.)?allgoods\.be https?:\/\/([^\/]*\.)?allkinds-pills\.com https?:\/\/([^\/]*\.)?allkoholik\.php5\.cz https?:\/\/([^\/]*\.)?alllb\.com https?:\/\/([^\/]*\.)?alllf\.com https?:\/\/([^\/]*\.)?alllk\.com https?:\/\/([^\/]*\.)?alllm\.com https?:\/\/([^\/]*\.)?allln\.com https?:\/\/([^\/]*\.)?alllp\.com https?:\/\/([^\/]*\.)?allnewfilm\.com https?:\/\/([^\/]*\.)?allprintposters\.com https?:\/\/([^\/]*\.)?allsitesaccess-com-awfxbo7d\.blogspot\.com https?:\/\/([^\/]*\.)?alltel-ringtonedyd\.blogspot\.com https?:\/\/([^\/]*\.)?allvids-net-k0bdg\.blogspot\.com https?:\/\/([^\/]*\.)?allvids-net-kd0pe5\.blogspot\.com https?:\/\/([^\/]*\.)?allweb2006\.info https?:\/\/([^\/]*\.)?almgarc\.com https?:\/\/([^\/]*\.)?alneja\.goodbb\.net https?:\/\/([^\/]*\.)?alnm5\.fr33webhost\.com https?:\/\/([^\/]*\.)?alona\.phpbbx\.de https?:\/\/([^\/]*\.)?alonso\.stabilt\.se https?:\/\/([^\/]*\.)?alphabadgirls\.info https?:\/\/([^\/]*\.)?alprazolam-cc\.blogspot\.com https?:\/\/([^\/]*\.)?alprazolam-xanax\.com https?:\/\/([^\/]*\.)?alpy01\.republika\.pl https?:\/\/([^\/]*\.)?alracmon\.zikforum\.com https?:\/\/([^\/]*\.)?altacebuy\.page\.to https?:\/\/([^\/]*\.)?altacebuycheap\.gameday\.de https?:\/\/([^\/]*\.)?altacebuygeneric\.cut\.by https?:\/\/([^\/]*\.)?altacegeneric\.dive\.to https?:\/\/([^\/]*\.)?altacegenericcheap\.notrix\.at https?:\/\/([^\/]*\.)?altazel\.blogcu\.com https?:\/\/([^\/]*\.)?altrocvi\.jc\.pl https?:\/\/([^\/]*\.)?altse\.com https?:\/\/([^\/]*\.)?always-credit\.com https?:\/\/([^\/]*\.)?always-drugs\.com https?:\/\/([^\/]*\.)?always-medications\.com https?:\/\/([^\/]*\.)?alyssa-teen\.freeinsite\.net https?:\/\/([^\/]*\.)?amal-fucking-movie\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?amateur-ass-free-gallery\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?amateur-atk-hairy-heather-natural\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?amateur-black-naked\.protime\.in\.ua https?:\/\/([^\/]*\.)?amateur-blonde-cock\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?amateur-boob-bouncing\.gameover\.in\.ua https?:\/\/([^\/]*\.)?amateur-contacto-sexo\.gameover\.in\.ua https?:\/\/([^\/]*\.)?amateur-cum-queen\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?amateur-foto-free-nude\.medved\.od\.ua https?:\/\/([^\/]*\.)?amateur-free-erotic\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?amateur-free-grannie-picture-xxx\.medved\.od\.ua https?:\/\/([^\/]*\.)?amateur-free-indian-page-sex\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?amateur-free-man-naked\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?amateur-free-sex-xxx\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?amateur-fucking-milf\.protime\.in\.ua https?:\/\/([^\/]*\.)?amateur-fucking-public\.medved\.od\.ua https?:\/\/([^\/]*\.)?amateur-hard-com-a4w\.blogspot\.com https?:\/\/([^\/]*\.)?amateur-home-photo\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?amateur-index-nude\.gameover\.in\.ua https?:\/\/([^\/]*\.)?amateur-interracial-porn\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?amateur-man-naked\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?amateur-model-for-hire\.medved\.od\.ua https?:\/\/([^\/]*\.)?amateur-nympho-wife-site\.medved\.od\.ua https?:\/\/([^\/]*\.)?amateur-pages-porn\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?amateur-porn-clip-blog446\.blogspot\.com https?:\/\/([^\/]*\.)?amateur-porn-clip-blogqh1\.blogspot\.com https?:\/\/([^\/]*\.)?amateur-porn-clip-blogrv6\.blogspot\.com https?:\/\/([^\/]*\.)?amateur-porn-xxx\.medved\.od\.ua https?:\/\/([^\/]*\.)?amateur-pussy-redhead\.gameover\.in\.ua https?:\/\/([^\/]*\.)?amateur-teen-movie\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?amateur-teen-sex-movie\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?amateurcurves-com-silib\.blogspot\.com https?:\/\/([^\/]*\.)?amateurcurves-com-t7zh3\.blogspot\.com https?:\/\/([^\/]*\.)?amazingcum-com-bd7uu0\.blogspot\.com https?:\/\/([^\/]*\.)?ambien-online\.presteert\.nl https?:\/\/([^\/]*\.)?ambien\.1\.p2l\.info https?:\/\/([^\/]*\.)?ambien\.conto\.pl https?:\/\/([^\/]*\.)?ambien\.esguay\.com https?:\/\/([^\/]*\.)?ambien\.fws1\.com https?:\/\/([^\/]*\.)?ambien\.goodpharm\.info https?:\/\/([^\/]*\.)?ambien\.hav\.pl https?:\/\/([^\/]*\.)?ambien\.presteert\.nl https?:\/\/([^\/]*\.)?ambien\.skocz\.net https?:\/\/([^\/]*\.)?ambiena\.myblogvoice\.com https?:\/\/([^\/]*\.)?ambienpills\.coz\.in https?:\/\/([^\/]*\.)?ambienrx\.weboficial\.com https?:\/\/([^\/]*\.)?ambiens\.ru\.tf https?:\/\/([^\/]*\.)?amcq8\.szm\.sk https?:\/\/([^\/]*\.)?amenities\.8tt\.org https?:\/\/([^\/]*\.)?americansrebuildingneworleans\.com https?:\/\/([^\/]*\.)?amicizia-incontri\.bb22\.info https?:\/\/([^\/]*\.)?amico-maria\.freespase\.info https?:\/\/([^\/]*\.)?amidnitesunset\.blogspot\.com https?:\/\/([^\/]*\.)?amino-vera\.blogspot\.com https?:\/\/([^\/]*\.)?amira\.phpbbx\.de https?:\/\/([^\/]*\.)?amjrs\.myfreewebhost\.org https?:\/\/([^\/]*\.)?amoxil-500mg\.micrositehosting\.info https?:\/\/([^\/]*\.)?ampposo\.myfreewebhost\.org https?:\/\/([^\/]*\.)?amstre\.com https?:\/\/([^\/]*\.)?amyhunt\.com https?:\/\/([^\/]*\.)?amyjkb\.blogspot\.com https?:\/\/([^\/]*\.)?anacondasex\.info https?:\/\/([^\/]*\.)?anal-bareback-cum-fucking-shot\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?anal-coks-fuck-huge-mega\.gameover\.in\.ua https?:\/\/([^\/]*\.)?anal-cum-farting\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?anal-cum-fuck\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?anal-dildo-bondage\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-ebony-free-pic\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-ebony-fucking\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-first-pic-time\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-first-time\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-free-mature-sex\.medved\.od\.ua https?:\/\/([^\/]*\.)?anal-g\.com https?:\/\/([^\/]*\.)?anal-gang-bang-xxx\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-hard-male\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-hardcore-max-sex\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?anal-painful-virgin\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?anal-self-penetration\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?anal-sex-teen-tgp\.gameover\.in\.ua https?:\/\/([^\/]*\.)?anal-sex-video-x-g-g\.blogspot\.com https?:\/\/([^\/]*\.)?anal-sex-virgin\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?anal-shemale-site\.protime\.in\.ua https?:\/\/([^\/]*\.)?analsexeum\.blogspot\.com https?:\/\/([^\/]*\.)?anath\.phpbbx\.de https?:\/\/([^\/]*\.)?anbipbm\.myfreewebhost\.org https?:\/\/([^\/]*\.)?andrewsaluk\.com https?:\/\/([^\/]*\.)?andy-roddick-dick\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?angelcakez\.blogspot\.com https?:\/\/([^\/]*\.)?angry-sister\.blogspot\.com https?:\/\/([^\/]*\.)?anicke\.republika\.pl https?:\/\/([^\/]*\.)?anime-art-gay\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?anime-free-hardcore-info-remember\.medved\.od\.ua https?:\/\/([^\/]*\.)?anime-porn-clip-blog5a7\.blogspot\.com https?:\/\/([^\/]*\.)?ann-angel-tpi\.blogspot\.com https?:\/\/([^\/]*\.)?anna-morgan\.blogspot\.com https?:\/\/([^\/]*\.)?annqy\.szm\.sk https?:\/\/([^\/]*\.)?annugel--h\.blogspot\.com https?:\/\/([^\/]*\.)?annuncio-lavoro-milano\.host24h\.info https?:\/\/([^\/]*\.)?annuncio-lavoro-segretaria\.freehostss\.info https?:\/\/([^\/]*\.)?annuncio-online\.heroez\.info https?:\/\/([^\/]*\.)?anteyi\.cn https?:\/\/([^\/]*\.)?anthemboy8\.blogspot\.com https?:\/\/([^\/]*\.)?anti-aging-skin\.hotmail\.ru https?:\/\/([^\/]*\.)?anti_agin_skin\.chat\.ru https?:\/\/([^\/]*\.)?anti_aging_skin\.chat\.ru https?:\/\/([^\/]*\.)?antidepressants\.1\.p2l\.info https?:\/\/([^\/]*\.)?anus-lick-right-way\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?anw66\.blogspot\.com https?:\/\/([^\/]*\.)?anxiety\.1\.p2l\.info https?:\/\/([^\/]*\.)?anylight4u\.com https?:\/\/([^\/]*\.)?aosk\.com https?:\/\/([^\/]*\.)?apesapoppin\.blogspot\.com https?:\/\/([^\/]*\.)?apextwin\.ifrance\.com https?:\/\/([^\/]*\.)?apextwin\.php5\.cz https?:\/\/([^\/]*\.)?aponte\.net https?:\/\/([^\/]*\.)?appartamento-roma-vacanza\.ll11\.info https?:\/\/([^\/]*\.)?applyforit\.ucsd\.edu https?:\/\/([^\/]*\.)?apxgmlp\.myfreewebhost\.org https?:\/\/([^\/]*\.)?arbundar\.forumzen\.com https?:\/\/([^\/]*\.)?arcade\.ya\.com https?:\/\/([^\/]*\.)?areaseo\.com https?:\/\/([^\/]*\.)?arent-boot-made-these-walkin\.gameover\.in\.ua https?:\/\/([^\/]*\.)?argentina-gay-travel\.medved\.od\.ua https?:\/\/([^\/]*\.)?ariella\.phpbbx\.de https?:\/\/([^\/]*\.)?arielle\.phpbbx\.de https?:\/\/([^\/]*\.)?arinastes\.com https?:\/\/([^\/]*\.)?aristocort\.4\.pl https?:\/\/([^\/]*\.)?arizonamortgage-x\.com https?:\/\/([^\/]*\.)?arjj2\.szm\.sk https?:\/\/([^\/]*\.)?arketon24\.blogspot\.com https?:\/\/([^\/]*\.)?armyanch\.galeon\.com https?:\/\/([^\/]*\.)?arosson\.com https?:\/\/([^\/]*\.)?arsrz\.szm\.sk https?:\/\/([^\/]*\.)?art-xxx\.com https?:\/\/([^\/]*\.)?artbennett\.net https?:\/\/([^\/]*\.)?arthuriacasino\.com https?:\/\/([^\/]*\.)?artnposter\.com https?:\/\/([^\/]*\.)?arwuudes\.forumzen\.com https?:\/\/([^\/]*\.)?arwuuzet\.forumzen\.com https?:\/\/([^\/]*\.)?aryls\.info https?:\/\/([^\/]*\.)?asaearh\.blogspot\.com https?:\/\/([^\/]*\.)?asaia\.blogspot\.com https?:\/\/([^\/]*\.)?asas3\.com https?:\/\/([^\/]*\.)?ascht\.myfreewebhost\.org https?:\/\/([^\/]*\.)?asdiaalr\.forumzen\.com https?:\/\/([^\/]*\.)?aselfbas\.forumzen\.com https?:\/\/([^\/]*\.)?asfreyl\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ashkenazi\.phpbbx\.de https?:\/\/([^\/]*\.)?ashlee--serena\.freeinsite\.net https?:\/\/([^\/]*\.)?ashlee-clip-free-hand-job\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?asian-bang-gang\.protime\.in\.ua https?:\/\/([^\/]*\.)?asian-cum-sucker\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?asian-download-free-porn-video\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?asian-facial\.gameover\.in\.ua https?:\/\/([^\/]*\.)?asian-fucking-man-woman\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?asian-girl-anal\.medved\.od\.ua https?:\/\/([^\/]*\.)?asian-giving-blow-job\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?asian-mmf\.medved\.od\.ua https?:\/\/([^\/]*\.)?asian-porn-clip-info6g5\.blogspot\.com https?:\/\/([^\/]*\.)?asian-pussysjy\.blogspot\.com https?:\/\/([^\/]*\.)?asian-spread-leg\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?asian-teens\.freeinsite\.net https?:\/\/([^\/]*\.)?asiansexpvx\.blogspot\.com https?:\/\/([^\/]*\.)?asjnquaq\.com https?:\/\/([^\/]*\.)?asnmeq\.com https?:\/\/([^\/]*\.)?asrendes\.forumzen\.com https?:\/\/([^\/]*\.)?asricrac\.forumzen\.com https?:\/\/([^\/]*\.)?ass-bare-screensaver-sexy\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?ass-big-black-pussy\.gameover\.in\.ua https?:\/\/([^\/]*\.)?ass-big-free-woman\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?ass-bitch-hot\.protime\.in\.ua https?:\/\/([^\/]*\.)?ass-cock-large-nice-tit\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?ass-cum-gay-hole\.gameover\.in\.ua https?:\/\/([^\/]*\.)?ass-cute-fat\.medved\.od\.ua https?:\/\/([^\/]*\.)?ass-day-great-its-somebodys-whop\.gameover\.in\.ua https?:\/\/([^\/]*\.)?ass-dildo-in-man-use\.gameover\.in\.ua https?:\/\/([^\/]*\.)?ass-free-huge-movie-phat-tit\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?ass-free-mature-photo\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?ass-free-naked\.protime\.in\.ua https?:\/\/([^\/]*\.)?ass-fucked-porn-star\.medved\.od\.ua https?:\/\/([^\/]*\.)?ass-hit-up-yo\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?ass-hole-test\.protime\.in\.ua https?:\/\/([^\/]*\.)?ass-lick-slut-that\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?ass-man-photo-rumprater-com-woman\.medved\.od\.ua https?:\/\/([^\/]*\.)?ass-naked-pic-woman-young\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?ass-sa\.com https?:\/\/([^\/]*\.)?ass-traffic-thumb\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?assfilled-cofon\.blogspot\.com https?:\/\/([^\/]*\.)?assfucking-video\.hereandnow0\.com https?:\/\/([^\/]*\.)?assicurazione-moto\.freehostss\.info https?:\/\/([^\/]*\.)?asslick-free\.protime\.in\.ua https?:\/\/([^\/]*\.)?associate1degree\.chat\.ru https?:\/\/([^\/]*\.)?assparade-com-cdr6rm3\.blogspot\.com https?:\/\/([^\/]*\.)?astmiv\.com https?:\/\/([^\/]*\.)?astsam\.com https?:\/\/([^\/]*\.)?aswsu-ddp\.wsu\.edu https?:\/\/([^\/]*\.)?atar5\.szm\.sk https?:\/\/([^\/]*\.)?atashi-tada\.blogspot\.com https?:\/\/([^\/]*\.)?atchina\.com\.cn https?:\/\/([^\/]*\.)?atenololhqs\.blogspot\.com https?:\/\/([^\/]*\.)?atetech\.com\.cn https?:\/\/([^\/]*\.)?athenaindia\.com https?:\/\/([^\/]*\.)?ativan\.hav\.pl https?:\/\/([^\/]*\.)?ativan1\.skocz\.net https?:\/\/([^\/]*\.)?ativans\.eu\.tf https?:\/\/([^\/]*\.)?atkmodels-com-g2mc2j\.blogspot\.com https?:\/\/([^\/]*\.)?atkmodels-h6\.blogspot\.com https?:\/\/([^\/]*\.)?atmoc\.com https?:\/\/([^\/]*\.)?atrapy\.pl https?:\/\/([^\/]*\.)?auabkc3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?audibookclub\.info https?:\/\/([^\/]*\.)?audition-mature-sexy-video-woman\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?audx4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?auejds\.com https?:\/\/([^\/]*\.)?aufx8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?augmentin\.4\.pl https?:\/\/([^\/]*\.)?augmentinbuy\.megapage\.de https?:\/\/([^\/]*\.)?augmentinbuygeneric\.playsite\.de https?:\/\/([^\/]*\.)?augmentincheapbuy\.mine\.at https?:\/\/([^\/]*\.)?augmentincheapgeneric\.vacations\.to https?:\/\/([^\/]*\.)?augmentingeneric\.dive\.to https?:\/\/([^\/]*\.)?aumkryl\.myfreewebhost\.org https?:\/\/([^\/]*\.)?auntmia-ivmo1ckhbf\.blogspot\.com https?:\/\/([^\/]*\.)?auqkz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?aurar\.info https?:\/\/([^\/]*\.)?aurney\.blogspot\.com https?:\/\/([^\/]*\.)?aurora-snow-double-anal\.medved\.od\.ua https?:\/\/([^\/]*\.)?auto-insurance-2007\.com https?:\/\/([^\/]*\.)?auto-insurance-quote\.100freemb\.com https?:\/\/([^\/]*\.)?auto-occasioni\.bb22\.info https?:\/\/([^\/]*\.)?autoere\.info https?:\/\/([^\/]*\.)?autoinsurancevyo\.blogspot\.com https?:\/\/([^\/]*\.)?automobileliberty\.cn https?:\/\/([^\/]*\.)?ava-devine-friend-hot-mom\.protime\.in\.ua https?:\/\/([^\/]*\.)?avalonhyip\.com https?:\/\/([^\/]*\.)?avenue-x\.cn https?:\/\/([^\/]*\.)?avoidcar\.info https?:\/\/([^\/]*\.)?awardspace\.biz https?:\/\/([^\/]*\.)?awardspace\.info https?:\/\/([^\/]*\.)?awerda\.com https?:\/\/([^\/]*\.)?aweu\.cabspace\.com https?:\/\/([^\/]*\.)?axfa5\.szm\.sk https?:\/\/([^\/]*\.)?axnc0\.szm\.sk https?:\/\/([^\/]*\.)?axqui\.szm\.sk https?:\/\/([^\/]*\.)?axtu7\.szm\.sk https?:\/\/([^\/]*\.)?ayann\.dl\.pl https?:\/\/([^\/]*\.)?aynippa\.blogspot\.com https?:\/\/([^\/]*\.)?azn-chickadee\.blogspot\.com https?:\/\/([^\/]*\.)?azu-erlove\.blogspot\.com https?:\/\/([^\/]*\.)?azur3skye\.blogspot\.com https?:\/\/([^\/]*\.)?azzacash\.com https?:\/\/([^\/]*\.)?b-b-free-hentai-movie-j\.blogspot\.com https?:\/\/([^\/]*\.)?b-d-download-porn-movie-n\.blogspot\.com https?:\/\/([^\/]*\.)?b\.cn01\.hn\.org https?:\/\/([^\/]*\.)?babe-cam-filipina-web\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?babe-dutch-erotic-lingerie\.protime\.in\.ua https?:\/\/([^\/]*\.)?babe-forum-picture-porn-star\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?babe-hot-mature\.medved\.od\.ua https?:\/\/([^\/]*\.)?babesglamour-com-jotut\.blogspot\.com https?:\/\/([^\/]*\.)?babesglamour-com-mp21gz\.blogspot\.com https?:\/\/([^\/]*\.)?babibian\.dl\.pl https?:\/\/([^\/]*\.)?babooth\.ifrance\.com https?:\/\/([^\/]*\.)?babyhere\.net https?:\/\/([^\/]*\.)?bachelor1degree\.chat\.ru https?:\/\/([^\/]*\.)?back-bare-cum-dripping-fucked-humiliated-pussy-wealthy-woman\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?backroom-facial-margarita\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?bad-butt-byron-rub\.medved\.od\.ua https?:\/\/([^\/]*\.)?bad-butt-byrons-rub\.protime\.in\.ua https?:\/\/([^\/]*\.)?bad-credit-home-loanksl\.blogspot\.com https?:\/\/([^\/]*\.)?badassteens-com-gnvrh6\.blogspot\.com https?:\/\/([^\/]*\.)?badassteens-com-gyhb23dyw\.blogspot\.com https?:\/\/([^\/]*\.)?badgirlsblog-com-dcfmx8n2p\.blogspot\.com https?:\/\/([^\/]*\.)?badipex\.gog\.pl https?:\/\/([^\/]*\.)?bahatoca\.org https?:\/\/([^\/]*\.)?baikal-guide\.com https?:\/\/([^\/]*\.)?baikal-hotel\.info https?:\/\/([^\/]*\.)?baikal-shop\.com https?:\/\/([^\/]*\.)?baikal-tour\.biz https?:\/\/([^\/]*\.)?baikalguide\.com https?:\/\/([^\/]*\.)?baikalshop\.info https?:\/\/([^\/]*\.)?bakadeshi\.ifrance\.com https?:\/\/([^\/]*\.)?bakamandy\.blogspot\.com https?:\/\/([^\/]*\.)?bambulka\.info https?:\/\/([^\/]*\.)?bamigreenhouse\.com\.cn https?:\/\/([^\/]*\.)?bamima\.com https?:\/\/([^\/]*\.)?bandaoti\.dzsc\.com https?:\/\/([^\/]*\.)?bang-clip-gang-gang-movie\.gameover\.in\.ua https?:\/\/([^\/]*\.)?bang-gallery-gang-mature-woman\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?bang-gang-sex-tokyo\.gameover\.in\.ua https?:\/\/([^\/]*\.)?bank-of-america-credit-cardtja\.blogspot\.com https?:\/\/([^\/]*\.)?bank-of-fetish-resource\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?banns\.info https?:\/\/([^\/]*\.)?baqaek9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?baquma\.com https?:\/\/([^\/]*\.)?bareback-fuck-gay\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?barefootmaniacs-com-rpw1i1\.blogspot\.com https?:\/\/([^\/]*\.)?barely18-teens-com-sin\.blogspot\.com https?:\/\/([^\/]*\.)?barrystickets\.com https?:\/\/([^\/]*\.)?bartik\.asp2\.cz https?:\/\/([^\/]*\.)?barulena\.jconserv\.net https?:\/\/([^\/]*\.)?basalvar\.dl\.pl https?:\/\/([^\/]*\.)?basdeler\.su\.pl https?:\/\/([^\/]*\.)?basdombo\.dl\.pl https?:\/\/([^\/]*\.)?baslachi\.lightbb\.com https?:\/\/([^\/]*\.)?baslalhi\.myrealboard\.com https?:\/\/([^\/]*\.)?baslarol\.dl\.pl https?:\/\/([^\/]*\.)?basmonzel\.dl\.pl https?:\/\/([^\/]*\.)?baspaser\.zikforum\.com https?:\/\/([^\/]*\.)?baspasrac\.dl\.pl https?:\/\/([^\/]*\.)?baspasvi\.cultureforum\.net https?:\/\/([^\/]*\.)?basracchi\.dl\.pl https?:\/\/([^\/]*\.)?basteg\.com https?:\/\/([^\/]*\.)?bastim\.com https?:\/\/([^\/]*\.)?bastnecli\.frbb\.net https?:\/\/([^\/]*\.)?bastre\.com https?:\/\/([^\/]*\.)?bastru\.com https?:\/\/([^\/]*\.)?basuma\.com https?:\/\/([^\/]*\.)?bath-hardcore-teen\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?bath-product\.hotmail\.ru https?:\/\/([^\/]*\.)?bath-product\.pochta\.ru https?:\/\/([^\/]*\.)?bath_product\.chat\.ru https?:\/\/([^\/]*\.)?bathroom-fuck\.gameover\.in\.ua https?:\/\/([^\/]*\.)?bbcialis\.ovp\.pl https?:\/\/([^\/]*\.)?bbfast\.com https?:\/\/([^\/]*\.)?bbndsxtg-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?bbs\.cuesta\.edu https?:\/\/([^\/]*\.)?bbsporn\.com https?:\/\/([^\/]*\.)?bbuybaliumonline\.ovp\.pl https?:\/\/([^\/]*\.)?bbuycialisonline\.ovp\.pl https?:\/\/([^\/]*\.)?bbuylevitraonline\.ovp\.pl https?:\/\/([^\/]*\.)?bbuytram\.blogcu\.com https?:\/\/([^\/]*\.)?bbuytramadolonline\.ovp\.pl https?:\/\/([^\/]*\.)?bbuyviagraonlin\.forumlivre\.com https?:\/\/([^\/]*\.)?bbw-busty\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?bbw-club-in-san-diego\.medved\.od\.ua https?:\/\/([^\/]*\.)?bbw-old\.medved\.od\.ua https?:\/\/([^\/]*\.)?bbw-porn-clip-infotir\.blogspot\.com https?:\/\/([^\/]*\.)?bcam8\.szm\.sk https?:\/\/([^\/]*\.)?bcdh\.cn https?:\/\/([^\/]*\.)?bcialis\.c24\.pl https?:\/\/([^\/]*\.)?bcxz8\.szm\.sk https?:\/\/([^\/]*\.)?bdsm-lesbian-video\.gameover\.in\.ua https?:\/\/([^\/]*\.)?bdsm-personals-houston\.protime\.in\.ua https?:\/\/([^\/]*\.)?bdsm-toy\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?bdsm-video\.medved\.od\.ua https?:\/\/([^\/]*\.)?bdsm-vintage\.protime\.in\.ua https?:\/\/([^\/]*\.)?bdsmvideos-net-wb55nc\.blogspot\.com https?:\/\/([^\/]*\.)?bdsmvideos-net-wfa5qu\.blogspot\.com https?:\/\/([^\/]*\.)?bdsmvideos-net-wvckcgq2o\.blogspot\.com https?:\/\/([^\/]*\.)?beaffaired\.com https?:\/\/([^\/]*\.)?bear-build-gay\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?bear-chubby-young\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?bear-terry\.blogspot\.com https?:\/\/([^\/]*\.)?beastiality-live\.com https?:\/\/([^\/]*\.)?beautiful-ass-pic\.gameover\.in\.ua https?:\/\/([^\/]*\.)?beautiful-blonde-pole-dancer\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?beautifulzdrawing\.sex-systems\.com https?:\/\/([^\/]*\.)?beautyass-com-e1ca\.blogspot\.com https?:\/\/([^\/]*\.)?becloudsiss\.thehostcity\.com https?:\/\/([^\/]*\.)?bedspread-king\.keckins\.be https?:\/\/([^\/]*\.)?begcrucial\.justfree\.com https?:\/\/([^\/]*\.)?beginninghouse\.com https?:\/\/([^\/]*\.)?begot\.info https?:\/\/([^\/]*\.)?beijing-door\.cn https?:\/\/([^\/]*\.)?beijingimpression\.com https?:\/\/([^\/]*\.)?bekahboo3\.blogspot\.com https?:\/\/([^\/]*\.)?beldam\.dns1\.us https?:\/\/([^\/]*\.)?bemix\.info https?:\/\/([^\/]*\.)?benixon\.dl\.pl https?:\/\/([^\/]*\.)?benoit-r86\.blogspot\.com https?:\/\/([^\/]*\.)?benson-g68a\.blogspot\.com https?:\/\/([^\/]*\.)?benz-h51\.blogspot\.com https?:\/\/([^\/]*\.)?beqy\.org https?:\/\/([^\/]*\.)?berenupa\.info https?:\/\/([^\/]*\.)?berkeley-mdi56f\.blogspot\.com https?:\/\/([^\/]*\.)?berlin-o3g\.blogspot\.com https?:\/\/([^\/]*\.)?bernie-b18\.blogspot\.com https?:\/\/([^\/]*\.)?berrycow\.blogspot\.com https?:\/\/([^\/]*\.)?beryl-c3\.blogspot\.com https?:\/\/([^\/]*\.)?best-hotels-inns\.com https?:\/\/([^\/]*\.)?best-porn-clip-zone0mp\.blogspot\.com https?:\/\/([^\/]*\.)?best2006\.info https?:\/\/([^\/]*\.)?best568\.com https?:\/\/([^\/]*\.)?bestaftor\.com https?:\/\/([^\/]*\.)?bestallmed\.info https?:\/\/([^\/]*\.)?bestbuyonlinebooks\.com https?:\/\/([^\/]*\.)?bestcityhal\.com https?:\/\/([^\/]*\.)?bestcyberfish\.com https?:\/\/([^\/]*\.)?bestfreegift\.com https?:\/\/([^\/]*\.)?bestgames-winner\.com https?:\/\/([^\/]*\.)?besthallet\.com https?:\/\/([^\/]*\.)?bestinternetexplorer\.info https?:\/\/([^\/]*\.)?bestlowmortgagerates\.com https?:\/\/([^\/]*\.)?bestmaiden\.com https?:\/\/([^\/]*\.)?bestmercedesbez\.info https?:\/\/([^\/]*\.)?bestmitsubishiparts\.info https?:\/\/([^\/]*\.)?bestmp3online\.com https?:\/\/([^\/]*\.)?bestmp3online\.net https?:\/\/([^\/]*\.)?bestofe\.com https?:\/\/([^\/]*\.)?bestonline-medication\.com https?:\/\/([^\/]*\.)?bestonline-shopping\.com https?:\/\/([^\/]*\.)?bestorlean\.com https?:\/\/([^\/]*\.)?bestpricebentley\.info https?:\/\/([^\/]*\.)?bestsellsite\.com https?:\/\/([^\/]*\.)?bestxxxanal-1\.tripod\.com https?:\/\/([^\/]*\.)?bestyourown\.info https?:\/\/([^\/]*\.)?beta-dg174ivc\.blogspot\.com https?:\/\/([^\/]*\.)?beth-t6h6\.blogspot\.com https?:\/\/([^\/]*\.)?bethany-ezjn\.blogspot\.com https?:\/\/([^\/]*\.)?betsie-w4080\.blogspot\.com https?:\/\/([^\/]*\.)?betsy-rgxm2e\.blogspot\.com https?:\/\/([^\/]*\.)?better\.ws https?:\/\/([^\/]*\.)?betty-gy\.blogspot\.com https?:\/\/([^\/]*\.)?beverly-hax82jc3md\.blogspot\.com https?:\/\/([^\/]*\.)?bevjy\.szm\.sk https?:\/\/([^\/]*\.)?beyonce-knowles-nude\.blogspot\.com https?:\/\/([^\/]*\.)?bfekd\.szm\.sk https?:\/\/([^\/]*\.)?bfgtxs4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?bfi-k5xk7bnu\.blogspot\.com https?:\/\/([^\/]*\.)?bfnh2\.szm\.sk https?:\/\/([^\/]*\.)?bfqn\.com https?:\/\/([^\/]*\.)?bfvsa\.szm\.sk https?:\/\/([^\/]*\.)?bgpkvcr\.myfreewebhost\.org https?:\/\/([^\/]*\.)?bhncvw-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?bhqay\.fr33webhost\.com https?:\/\/([^\/]*\.)?bi-britney-spears-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?bi-whales\.blogspot\.com https?:\/\/([^\/]*\.)?bi-xxx-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?bianca-i7yj\.blogspot\.com https?:\/\/([^\/]*\.)?bianpinqi\.dzsc\.com https?:\/\/([^\/]*\.)?bicx7\.szm\.sk https?:\/\/([^\/]*\.)?bid-sohardcore-com\.blogspot\.com https?:\/\/([^\/]*\.)?bidsex\.net https?:\/\/([^\/]*\.)?big-big-clit-tit\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?big-bitch-booty-fucked-getting\.medved\.od\.ua https?:\/\/([^\/]*\.)?big-black-cock-movie-clip\.medved\.od\.ua https?:\/\/([^\/]*\.)?big-black-cock-pic\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?big-black-dick-fat-long\.medved\.od\.ua https?:\/\/([^\/]*\.)?big-blonde-mature-tit\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big-blonde-teen-tit\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big-body-fuck\.gameover\.in\.ua https?:\/\/([^\/]*\.)?big-boob-huge-large\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?big-bouncing-boob-movie\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?big-butt-shemale\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?big-cock-gay-guy-have\.protime\.in\.ua https?:\/\/([^\/]*\.)?big-cock-hard-sex\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big-cum-cum-shot\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?big-cum-movie-swallow-tit-xxx\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big-dick-fuck-hot-love-sexy-shemale-that\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?big-ebony-free-gallery-tit\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big-fat-boob\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big-free-lesbian-movie-online-porn\.protime\.in\.ua https?:\/\/([^\/]*\.)?big-huge-gigantic-boob\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?big-leg-babes\.medved\.od\.ua https?:\/\/([^\/]*\.)?big-leg-nice\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?big-okfl\.blogspot\.com https?:\/\/([^\/]*\.)?big-strap-on-dildo\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?big-tit-round-ass-jasmine\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?big-tit-round-ass-maria\.gameover\.in\.ua https?:\/\/([^\/]*\.)?big-tit-round-ass-picture\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?big-tits\.100freemb\.com https?:\/\/([^\/]*\.)?big-titted-bitch\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big-titts-round-ass\.protime\.in\.ua https?:\/\/([^\/]*\.)?big-young-cock\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?big\.de\.com https?:\/\/([^\/]*\.)?bigapple\.dtdns\.net https?:\/\/([^\/]*\.)?bigassadventure-com-g4lvyk\.blogspot\.com https?:\/\/([^\/]*\.)?bigbird-aus\.blogspot\.com https?:\/\/([^\/]*\.)?bigbreastlovers-com-suqoq\.blogspot\.com https?:\/\/([^\/]*\.)?bigcockteenaddiction-com-km\.blogspot\.com https?:\/\/([^\/]*\.)?bigcockteenaddiction-com-kpqf40\.blogspot\.com https?:\/\/([^\/]*\.)?bigdog-b14q6mwev\.blogspot\.com https?:\/\/([^\/]*\.)?bigfoot-c7l\.blogspot\.com https?:\/\/([^\/]*\.)?bigfreesex-com-i2csy2\.blogspot\.com https?:\/\/([^\/]*\.)?bigfreesex-com-subub\.blogspot\.com https?:\/\/([^\/]*\.)?biggest-cock-thickest\.gameover\.in\.ua https?:\/\/([^\/]*\.)?biggest-dildo-fuck-world\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?biggiebestparis\.com https?:\/\/([^\/]*\.)?biglietti-auguri\.net https?:\/\/([^\/]*\.)?biglietto-augurio\.freehostss\.info https?:\/\/([^\/]*\.)?bigmac-detr0i6y\.blogspot\.com https?:\/\/([^\/]*\.)?bigman-tycdhe62d\.blogspot\.com https?:\/\/([^\/]*\.)?bigmouthfuls-com-rvl7ep\.blogspot\.com https?:\/\/([^\/]*\.)?bignaturals-com-w0\.blogspot\.com https?:\/\/([^\/]*\.)?bigpenis\.digitalzones\.com https?:\/\/([^\/]*\.)?bigtitpatrol-com-bub8db06d\.blogspot\.com https?:\/\/([^\/]*\.)?bigtitsfans-com-rxc3ya\.blogspot\.com https?:\/\/([^\/]*\.)?bigtitsroundasses-com-b6auqkd60\.blogspot\.com https?:\/\/([^\/]*\.)?bigtitsroundasses-com-redeg\.blogspot\.com https?:\/\/([^\/]*\.)?bigtitsroundasses-com-rj85t35x3\.blogspot\.com https?:\/\/([^\/]*\.)?biib4\.szm\.sk https?:\/\/([^\/]*\.)?bike-boot-dirt-riding\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?bike-night\.grimgoe\.be https?:\/\/([^\/]*\.)?bikini-wax\.phpbb2\.us https?:\/\/([^\/]*\.)?bikinixxx-777now\.tripod\.com https?:\/\/([^\/]*\.)?bilbo-ea47j\.blogspot\.com https?:\/\/([^\/]*\.)?billy-r4negy1zwm\.blogspot\.com https?:\/\/([^\/]*\.)?binky-hu\.blogspot\.com https?:\/\/([^\/]*\.)?bio\.research\.ucsc\.edu https?:\/\/([^\/]*\.)?biopharmasite\.biz https?:\/\/([^\/]*\.)?biperq\.com https?:\/\/([^\/]*\.)?bird-iay2s\.blogspot\.com https?:\/\/([^\/]*\.)?birdie\.101freehost\.com https?:\/\/([^\/]*\.)?birth-control\.1\.p2l\.info https?:\/\/([^\/]*\.)?bisexual-cartoon-sex\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?bisexuals-cyber-fuck-horny-lesbian-lezzies-sex\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?bisson\.onthenet\.as https?:\/\/([^\/]*\.)?bit-tit-lesbian\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?bitch-fat-hot\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?bituka\.com https?:\/\/([^\/]*\.)?bivxr\.myfreewebhost\.org https?:\/\/([^\/]*\.)?bizaffiliatecenter\.com https?:\/\/([^\/]*\.)?bizarre-love-triangle-lyric-by-frente\.medved\.od\.ua https?:\/\/([^\/]*\.)?bizarre-sex-movie\.gameover\.in\.ua https?:\/\/([^\/]*\.)?bizhat\.com https?:\/\/([^\/]*\.)?bizhome\.org https?:\/\/([^\/]*\.)?bj-trj\.com https?:\/\/([^\/]*\.)?bjaoyunhui\.com https?:\/\/([^\/]*\.)?bjcee\.com https?:\/\/([^\/]*\.)?bjicp\.com https?:\/\/([^\/]*\.)?bjicp\.freewebpage\.org https?:\/\/([^\/]*\.)?bjicp\.net https?:\/\/([^\/]*\.)?bjicp\.org https?:\/\/([^\/]*\.)?bjjinhan\.com https?:\/\/([^\/]*\.)?bjlzhh\.com https?:\/\/([^\/]*\.)?bjocmc3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?bjqmzx\.com https?:\/\/([^\/]*\.)?bjrfinfo\.com https?:\/\/([^\/]*\.)?bjsscc\.com\.cn https?:\/\/([^\/]*\.)?bjtranslate\.com https?:\/\/([^\/]*\.)?bjwczx\.com https?:\/\/([^\/]*\.)?bjxiongfei\.com https?:\/\/([^\/]*\.)?bjxunda\.com https?:\/\/([^\/]*\.)?bjzktd\.com https?:\/\/([^\/]*\.)?bkclamcp\.t35\.com https?:\/\/([^\/]*\.)?bksar\.szm\.sk https?:\/\/([^\/]*\.)?bkzor\.szm\.sk https?:\/\/([^\/]*\.)?black-amateur-movie\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?black-asian-anal\.protime\.in\.ua https?:\/\/([^\/]*\.)?black-boob-sex\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?black-booty-movies-com-i0\.blogspot\.com https?:\/\/([^\/]*\.)?black-butt-fat-gay-man\.gameover\.in\.ua https?:\/\/([^\/]*\.)?black-chick-fuck\.medved\.od\.ua https?:\/\/([^\/]*\.)?black-chubby-ebony\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?black-clip-free-full-porn-blog4t5\.blogspot\.com https?:\/\/([^\/]*\.)?black-cock-facial\.protime\.in\.ua https?:\/\/([^\/]*\.)?black-cock-monster\.medved\.od\.ua https?:\/\/([^\/]*\.)?black-cock-white-cunt\.protime\.in\.ua https?:\/\/([^\/]*\.)?black-cum-shot-movie\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?black-domination-female-free-picture-teen\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?black-ebony-free-spreading-tgp\.medved\.od\.ua https?:\/\/([^\/]*\.)?black-fat-boob\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?black-free-gay-man-movie\.gameover\.in\.ua https?:\/\/([^\/]*\.)?black-gay-club\.gameover\.in\.ua https?:\/\/([^\/]*\.)?black-gay-sex-site\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?black-gay-teen-sex\.medved\.od\.ua https?:\/\/([^\/]*\.)?black-hoe-hardcore-sex-gallery\.protime\.in\.ua https?:\/\/([^\/]*\.)?black-hoe-that-suck-dick\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?black-jack-4u\.net https?:\/\/([^\/]*\.)?black-jack-black\.blogspot\.com https?:\/\/([^\/]*\.)?black-jacks\.us https?:\/\/([^\/]*\.)?black-jeweler\.org https?:\/\/([^\/]*\.)?black-leg-open-wide\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?black-lesbian-story\.protime\.in\.ua https?:\/\/([^\/]*\.)?black-man-fucking-white-sluts\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?black-monster-boob\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?black-monster-cock-mpeg\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?black-on-blonde-sex-picture\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?black-porn-clip-news8bn\.blogspot\.com https?:\/\/([^\/]*\.)?black-white-boob\.gameover\.in\.ua https?:\/\/([^\/]*\.)?black-wide-leg-pants\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?black-woman-sucking-dick\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?blackmisheru\.50webs\.org https?:\/\/([^\/]*\.)?blade\.host-page\.com https?:\/\/([^\/]*\.)?blade1\.host-page\.com https?:\/\/([^\/]*\.)?blade10\.host-page\.com https?:\/\/([^\/]*\.)?blade2\.host-page\.com https?:\/\/([^\/]*\.)?blade4\.host-page\.com https?:\/\/([^\/]*\.)?blade5\.host-page\.com https?:\/\/([^\/]*\.)?blade6\.host-page\.com https?:\/\/([^\/]*\.)?blade7\.host-page\.com https?:\/\/([^\/]*\.)?blade8\.host-page\.com https?:\/\/([^\/]*\.)?blade9\.host-page\.com https?:\/\/([^\/]*\.)?blagoslovenie\.rovno\.ua https?:\/\/([^\/]*\.)?blanca-tf50a\.blogspot\.com https?:\/\/([^\/]*\.)?blapt\.fr33webhost\.com https?:\/\/([^\/]*\.)?blathe\.com https?:\/\/([^\/]*\.)?blazer-wwn\.blogspot\.com https?:\/\/([^\/]*\.)?blbdg\.myfreewebhost\.org https?:\/\/([^\/]*\.)?blboys-com-wsq27\.blogspot\.com https?:\/\/([^\/]*\.)?blbthxw\.myfreewebhost\.org https?:\/\/([^\/]*\.)?blendermedia\.com https?:\/\/([^\/]*\.)?blevitra\.ovp\.pl https?:\/\/([^\/]*\.)?blmurphy\.dl\.pl https?:\/\/([^\/]*\.)?blog-broken-leg\.gameover\.in\.ua https?:\/\/([^\/]*\.)?blog\.chinaz\.com https?:\/\/([^\/]*\.)?blog\.donews\.com https?:\/\/([^\/]*\.)?blog\.welover\.org https?:\/\/([^\/]*\.)?blog\.yam\.com https?:\/\/([^\/]*\.)?blog67\.fc2\.com https?:\/\/([^\/]*\.)?blond\.12gbfree\.com https?:\/\/([^\/]*\.)?blonde-bald-pussy\.gameover\.in\.ua https?:\/\/([^\/]*\.)?blonde-blow-job-mpeg\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?blonde-blow-job-tgp\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?blonde-boob-xxx\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?blonde-color-hair-platinum\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?blonde-cunt-hair\.medved\.od\.ua https?:\/\/([^\/]*\.)?blonde-dumb-not\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?blonde-firework-joke\.medved\.od\.ua https?:\/\/([^\/]*\.)?blonde-lesbian-picture\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?blonde-long-mature\.medved\.od\.ua https?:\/\/([^\/]*\.)?blonde-model-twin\.gameover\.in\.ua https?:\/\/([^\/]*\.)?blonde-model-wallpaper\.protime\.in\.ua https?:\/\/([^\/]*\.)?blonde-teen-bitch\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?blonde-who-fuck\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?blonde-with-pink-dildo\.gameover\.in\.ua https?:\/\/([^\/]*\.)?blonde-xxx-trailer\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?blondie-g7hbdel\.blogspot\.com https?:\/\/([^\/]*\.)?blondy-zipper\.iespana\.es https?:\/\/([^\/]*\.)?blood-clots-cramp-leg\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?blotrer\.com https?:\/\/([^\/]*\.)?blow-deep-free-job-throat\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?blow-free-gallery-in-job-place-public\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?blow-gagging-job-pissing-sex\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?blow-job-movie-monster\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?blow-job-video-h-g-b\.blogspot\.com https?:\/\/([^\/]*\.)?blowy\.info https?:\/\/([^\/]*\.)?blskill\.dl\.pl https?:\/\/([^\/]*\.)?blue-phentermine\.coz\.in https?:\/\/([^\/]*\.)?bluebird-ki1h06\.blogspot\.com https?:\/\/([^\/]*\.)?bluethumbs-com-wn7zce4\.blogspot\.com https?:\/\/([^\/]*\.)?blurs\.info https?:\/\/([^\/]*\.)?blurzed\.com https?:\/\/([^\/]*\.)?bmoer\.szm\.sk https?:\/\/([^\/]*\.)?bmoon-tech\.com https?:\/\/([^\/]*\.)?bmzz6\.fr33webhost\.com https?:\/\/([^\/]*\.)?bnhaq\.fr33webhost\.com https?:\/\/([^\/]*\.)?bnme5\.szm\.sk https?:\/\/([^\/]*\.)?bnsal\.szm\.sk https?:\/\/([^\/]*\.)?bo-wheeling\.blogspot\.com https?:\/\/([^\/]*\.)?boatf\.hostpresso\.com https?:\/\/([^\/]*\.)?bob-mh5rq0\.blogspot\.com https?:\/\/([^\/]*\.)?bobcat-asfz\.blogspot\.com https?:\/\/([^\/]*\.)?bobcat-qete\.blogspot\.com https?:\/\/([^\/]*\.)?boboczel\.fr-bb\.com https?:\/\/([^\/]*\.)?boboer\.heavenforum\.com https?:\/\/([^\/]*\.)?bocac\.blogcu\.com https?:\/\/([^\/]*\.)?bocalolo\.bbgraf\.com https?:\/\/([^\/]*\.)?bocbasdom\.su\.pl https?:\/\/([^\/]*\.)?bocbasget\.bbfr\.net https?:\/\/([^\/]*\.)?bocchiolo\.zj\.pl https?:\/\/([^\/]*\.)?bocerleto\.winnerforum\.net https?:\/\/([^\/]*\.)?bocletoget\.cultureforum\.net https?:\/\/([^\/]*\.)?bocmonel\.lolforum\.net https?:\/\/([^\/]*\.)?boctrocleto\.xa\.pl https?:\/\/([^\/]*\.)?bodelel\.goodbb\.net https?:\/\/([^\/]*\.)?bodsforthemods-com-txb\.blogspot\.com https?:\/\/([^\/]*\.)?body-jewellery-piercing-4u\.com https?:\/\/([^\/]*\.)?bodybuilding\.ncedly\.be https?:\/\/([^\/]*\.)?bof-xxxvogue-net\.blogspot\.com https?:\/\/([^\/]*\.)?bofuno-free-amateur-video\.blogspot\.com https?:\/\/([^\/]*\.)?bogetric\.td\.pl https?:\/\/([^\/]*\.)?bolds\.info https?:\/\/([^\/]*\.)?bolgatalt\.naturalforum\.net https?:\/\/([^\/]*\.)?bolle-xeno\.keckins\.be https?:\/\/([^\/]*\.)?bologjack\.8tt\.org https?:\/\/([^\/]*\.)?bomb9\.szm\.sk https?:\/\/([^\/]*\.)?bon-rassi\.com https?:\/\/([^\/]*\.)?bondage\.coz\.in https?:\/\/([^\/]*\.)?bondagepaper-com-hzt1gq2iw\.blogspot\.com https?:\/\/([^\/]*\.)?bondich\.blogspot\.com https?:\/\/([^\/]*\.)?boneme-wn\.blogspot\.com https?:\/\/([^\/]*\.)?boneprone-com-g0h\.blogspot\.com https?:\/\/([^\/]*\.)?boner-dujo\.blogspot\.com https?:\/\/([^\/]*\.)?bong-cx0\.blogspot\.com https?:\/\/([^\/]*\.)?bong-tedo\.blogspot\.com https?:\/\/([^\/]*\.)?bonjour-toxi\.blogspot\.com https?:\/\/([^\/]*\.)?bonnie-pequ\.blogspot\.com https?:\/\/([^\/]*\.)?bonnie-t00pf3j6\.blogspot\.com https?:\/\/([^\/]*\.)?bonota\.blogcu\.com https?:\/\/([^\/]*\.)?bonozel\.dl\.pl https?:\/\/([^\/]*\.)?bontril\.1\.p2l\.info https?:\/\/([^\/]*\.)?bontril\.1k\.pl https?:\/\/([^\/]*\.)?boob-dome-com-movie\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?boob-free-large-natural-teen\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?boob-little-monster-vicki\.gameover\.in\.ua https?:\/\/([^\/]*\.)?boob-little-monster-vicki\.protime\.in\.ua https?:\/\/([^\/]*\.)?boob-movie-piqe\.blogspot\.com https?:\/\/([^\/]*\.)?boob-myspace-com-naked-site\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?boob-nude-pic-small\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?boob-video-bb-bb-h\.blogspot\.com https?:\/\/([^\/]*\.)?booble-com-orahxf\.blogspot\.com https?:\/\/([^\/]*\.)?booble-com-ouq\.blogspot\.com https?:\/\/([^\/]*\.)?booger-sure\.blogspot\.com https?:\/\/([^\/]*\.)?boogie-sexu\.blogspot\.com https?:\/\/([^\/]*\.)?boogie-wy64qty4x\.blogspot\.com https?:\/\/([^\/]*\.)?bookcq\.com https?:\/\/([^\/]*\.)?bookit-liwe\.blogspot\.com https?:\/\/([^\/]*\.)?boole\.cs\.iastate\.edu https?:\/\/([^\/]*\.)?boomer-hodo\.blogspot\.com https?:\/\/([^\/]*\.)?booster-leto\.blogspot\.com https?:\/\/([^\/]*\.)?boot-by-jessica-lyric-made-simpson-walking\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?boot-camp-fitness-georgia-summer\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?boot-camp-for-out-of-control-teen\.medved\.od\.ua https?:\/\/([^\/]*\.)?boot-cranston-shoes\.protime\.in\.ua https?:\/\/([^\/]*\.)?boot-davidson-harley-riding\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?boot-disk-file\.medved\.od\.ua https?:\/\/([^\/]*\.)?boot-dress-womens\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?boot-i-in-like-man-rubber\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?boot-in-lancashire-maker-shoes\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?boot-made-these-video-walkin-watch\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?boot-made-these-walking-who-wrote\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?boot-outlet-timberland\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?boot-riding-supplier\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?boot-these-walking\.medved\.od\.ua https?:\/\/([^\/]*\.)?bootsie-bihe\.blogspot\.com https?:\/\/([^\/]*\.)?bootsie-ku10yu\.blogspot\.com https?:\/\/([^\/]*\.)?booty-ebony-gallery\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?booty-ebony-info-remember-video\.medved\.od\.ua https?:\/\/([^\/]*\.)?bootycollection-com-cf36tiy45\.blogspot\.com https?:\/\/([^\/]*\.)?bootycollection-com-rekiz\.blogspot\.com https?:\/\/([^\/]*\.)?boracboc\.su\.pl https?:\/\/([^\/]*\.)?borelco\.dl\.pl https?:\/\/([^\/]*\.)?borgshare\.org https?:\/\/([^\/]*\.)?borjone\.com https?:\/\/([^\/]*\.)?borncompany\.com https?:\/\/([^\/]*\.)?boryc\.com https?:\/\/([^\/]*\.)?boss-bitch-2\.protime\.in\.ua https?:\/\/([^\/]*\.)?boss-coerced-fucking-into-wife\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?boss-suno\.blogspot\.com https?:\/\/([^\/]*\.)?boston-hardcore-site-myspace-com\.protime\.in\.ua https?:\/\/([^\/]*\.)?boston-heqe\.blogspot\.com https?:\/\/([^\/]*\.)?bostvndaoe\.blogspot\.com https?:\/\/([^\/]*\.)?botaer\.dl\.pl https?:\/\/([^\/]*\.)?botast\.com https?:\/\/([^\/]*\.)?botrdar\.goodforum\.net https?:\/\/([^\/]*\.)?botrdar\.grafbb\.com https?:\/\/([^\/]*\.)?boulder-facial-plastic-surgery\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?bov-smut-house-com\.blogspot\.com https?:\/\/([^\/]*\.)?bovaral\.naturalforum\.net https?:\/\/([^\/]*\.)?bowse\.info https?:\/\/([^\/]*\.)?bowtrol\.ventilacia\.yi\.org https?:\/\/([^\/]*\.)?bowtrolcoloncleanse\.vlocka\.yi\.org https?:\/\/([^\/]*\.)?boy-boy-gay-young\.medved\.od\.ua https?:\/\/([^\/]*\.)?boysfirsttime-com-ele2y\.blogspot\.com https?:\/\/([^\/]*\.)?bphentermine\.c24\.pl https?:\/\/([^\/]*\.)?bphentermine\.ovp\.pl https?:\/\/([^\/]*\.)?bqtcfu7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?braburka\.ifrance\.com https?:\/\/([^\/]*\.)?bradley-fitu\.blogspot\.com https?:\/\/([^\/]*\.)?brahma-steel-toe-boot\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?brandi-a5tds\.blogspot\.com https?:\/\/([^\/]*\.)?brandi-vuwi\.blogspot\.com https?:\/\/([^\/]*\.)?brandibelle-com-mzqj8l\.blogspot\.com https?:\/\/([^\/]*\.)?brandibelle-com-ti\.blogspot\.com https?:\/\/([^\/]*\.)?brandon-duso\.blogspot\.com https?:\/\/([^\/]*\.)?brandy-cnz56l\.blogspot\.com https?:\/\/([^\/]*\.)?brandy-dobu\.blogspot\.com https?:\/\/([^\/]*\.)?brasil-pire\.blogspot\.com https?:\/\/([^\/]*\.)?brat-nikodim\.blogspot\.com https?:\/\/([^\/]*\.)?braves-t7\.blogspot\.com https?:\/\/([^\/]*\.)?braves-tuku\.blogspot\.com https?:\/\/([^\/]*\.)?bravogirls-com-a7nbqd\.blogspot\.com https?:\/\/([^\/]*\.)?bravogirls-com-w12\.blogspot\.com https?:\/\/([^\/]*\.)?bravoteens-com-d0v\.blogspot\.com https?:\/\/([^\/]*\.)?bravovids-com-rouqs0py\.blogspot\.com https?:\/\/([^\/]*\.)?bravovids-r55rxyszt0\.blogspot\.com https?:\/\/([^\/]*\.)?brazil-butt-thong\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?brazil-gevo\.blogspot\.com https?:\/\/([^\/]*\.)?brazilian-butt-lift-plastic-surgery\.protime\.in\.ua https?:\/\/([^\/]*\.)?brb\.pl https?:\/\/([^\/]*\.)?breana-foki\.blogspot\.com https?:\/\/([^\/]*\.)?breana-wvqscvo5u\.blogspot\.com https?:\/\/([^\/]*\.)?breanna-kiwu\.blogspot\.com https?:\/\/([^\/]*\.)?breanne-leri\.blogspot\.com https?:\/\/([^\/]*\.)?breeanna-quhu\.blogspot\.com https?:\/\/([^\/]*\.)?breiana-quhe\.blogspot\.com https?:\/\/([^\/]*\.)?brenda-i5z8n4zkb7\.blogspot\.com https?:\/\/([^\/]*\.)?brenda-rezo\.blogspot\.com https?:\/\/([^\/]*\.)?brenna-xivo\.blogspot\.com https?:\/\/([^\/]*\.)?brewster-opqnec8v\.blogspot\.com https?:\/\/([^\/]*\.)?brfq6\.szm\.sk https?:\/\/([^\/]*\.)?brian-bchd\.blogspot\.com https?:\/\/([^\/]*\.)?brianna-dc04k04ivu\.blogspot\.com https?:\/\/([^\/]*\.)?brianne-ejv40\.blogspot\.com https?:\/\/([^\/]*\.)?brick55\.5gbfree\.com https?:\/\/([^\/]*\.)?brickes\.8888mb\.com https?:\/\/([^\/]*\.)?bricktilemachine\.com\.cn https?:\/\/([^\/]*\.)?bridgette-rjc3pbx6\.blogspot\.com https?:\/\/([^\/]*\.)?brightflashes\.blogspot\.com https?:\/\/([^\/]*\.)?brionna-hl530r3fe\.blogspot\.com https?:\/\/([^\/]*\.)?brisbeck\.com https?:\/\/([^\/]*\.)?britney-spear-sexy-ass\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?britney-spears-0\.blogspot\.com https?:\/\/([^\/]*\.)?britney-spears-sex-video-t-j-g\.blogspot\.com https?:\/\/([^\/]*\.)?brittany-i7ekj3hll\.blogspot\.com https?:\/\/([^\/]*\.)?broadcaster-crazy-popular\.freehostss\.info https?:\/\/([^\/]*\.)?broadway-ow\.blogspot\.com https?:\/\/([^\/]*\.)?brokenbond\.blogspot\.com https?:\/\/([^\/]*\.)?bronc\.info https?:\/\/([^\/]*\.)?brooke-bejuzava\.blogspot\.com https?:\/\/([^\/]*\.)?brooklynn-du\.blogspot\.com https?:\/\/([^\/]*\.)?brooks-rare\.lkerfocu\.be https?:\/\/([^\/]*\.)?brplank\.ifrance\.com https?:\/\/([^\/]*\.)?brrddd\.org https?:\/\/([^\/]*\.)?bruce-egqva1m\.blogspot\.com https?:\/\/([^\/]*\.)?brunettesexwrl\.blogspot\.com https?:\/\/([^\/]*\.)?brush\.hostaim\.com https?:\/\/([^\/]*\.)?brutlag\.stanford\.edu https?:\/\/([^\/]*\.)?bryan-rdu\.blogspot\.com https?:\/\/([^\/]*\.)?bs21sa\.com https?:\/\/([^\/]*\.)?bsd-hd\.blogspot\.com https?:\/\/([^\/]*\.)?bsoma\.c24\.pl https?:\/\/([^\/]*\.)?bsoma\.ovp\.pl https?:\/\/([^\/]*\.)?bsri3\.szm\.sk https?:\/\/([^\/]*\.)?btipu\.fr33webhost\.com https?:\/\/([^\/]*\.)?btix\.combasketball-tickets https?:\/\/([^\/]*\.)?btqvb\.fr33webhost\.com https?:\/\/([^\/]*\.)?btramadol\.c24\.pl https?:\/\/([^\/]*\.)?bubba1-i2pblfp2m\.blogspot\.com https?:\/\/([^\/]*\.)?bublifuk\.php5\.cz https?:\/\/([^\/]*\.)?bucina\.asp2\.cz https?:\/\/([^\/]*\.)?buck-o1i5bt\.blogspot\.com https?:\/\/([^\/]*\.)?buddy-bqam83yt\.blogspot\.com https?:\/\/([^\/]*\.)?budget7i\.info https?:\/\/([^\/]*\.)?buff-com-es-gay-porn-site-l-s-g\.blogspot\.com https?:\/\/([^\/]*\.)?bug\.phil\.cmu\.edu https?:\/\/([^\/]*\.)?buildercareer\.us https?:\/\/([^\/]*\.)?bukicon-free-bisexual-s-b\.blogspot\.com https?:\/\/([^\/]*\.)?bukkake-cum-facial-shot\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?bulldog-dc86aq4l\.blogspot\.com https?:\/\/([^\/]*\.)?bumast\.com https?:\/\/([^\/]*\.)?bumins\.com https?:\/\/([^\/]*\.)?bunnyteens-com-clpxyq6of\.blogspot\.com https?:\/\/([^\/]*\.)?bunnyteens-com-gz7\.blogspot\.com https?:\/\/([^\/]*\.)?bupropion-hcl\.1\.p2l\.info https?:\/\/([^\/]*\.)?buruan\.dl\.pl https?:\/\/([^\/]*\.)?business-brokers\.lkerfocu\.be https?:\/\/([^\/]*\.)?business-school\.hotmail\.ru https?:\/\/([^\/]*\.)?business-travel\.globaltr\.info https?:\/\/([^\/]*\.)?business1degree\.chat\.ru https?:\/\/([^\/]*\.)?business2school\.chat\.ru https?:\/\/([^\/]*\.)?businessitaly\.info https?:\/\/([^\/]*\.)?businesx\.atspace\.com https?:\/\/([^\/]*\.)?buspar\.1\.p2l\.info https?:\/\/([^\/]*\.)?buspirone\.1\.p2l\.info https?:\/\/([^\/]*\.)?busstopwhores-com-c0f\.blogspot\.com https?:\/\/([^\/]*\.)?busstopwhores-com-ki7\.blogspot\.com https?:\/\/([^\/]*\.)?busty-blonde-bomb-shell\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?busty-blonde-fuck\.medved\.od\.ua https?:\/\/([^\/]*\.)?busty-escort-porn\.medved\.od\.ua https?:\/\/([^\/]*\.)?busty-horny-milf\.protime\.in\.ua https?:\/\/([^\/]*\.)?busty-little-girl\.gameover\.in\.ua https?:\/\/([^\/]*\.)?busty-mature-red-head\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?busty-sex-star\.gameover\.in\.ua https?:\/\/([^\/]*\.)?busty-super-girl\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?busty-thick-ebony\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?bustyadventures-com-oh518h8l\.blogspot\.com https?:\/\/([^\/]*\.)?bustyisland-com-au\.blogspot\.com https?:\/\/([^\/]*\.)?bustyisland-mdjgr6khy\.blogspot\.com https?:\/\/([^\/]*\.)?bustypassion-com-bpe84\.blogspot\.com https?:\/\/([^\/]*\.)?butalbital-apap\.1\.p2l\.info https?:\/\/([^\/]*\.)?butalbital\.ru\.tf https?:\/\/([^\/]*\.)?butler-h3bpdq\.blogspot\.com https?:\/\/([^\/]*\.)?butseriouslyimprov\.com https?:\/\/([^\/]*\.)?butt-community-type-white\.medved\.od\.ua https?:\/\/([^\/]*\.)?butt-face-fat-her-kong-love-picture-queen-sit\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?butt-fucking-teen\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?butt-girl-rate\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?buttons-iveta\.blogspot\.com https?:\/\/([^\/]*\.)?buwelch\.dl\.pl https?:\/\/([^\/]*\.)?buwu-admin\.blogspot\.com https?:\/\/([^\/]*\.)?buy-ambien-online\.presteert\.nl https?:\/\/([^\/]*\.)?buy-ambien\.esguay\.com https?:\/\/([^\/]*\.)?buy-ativan\.fil\.ph https?:\/\/([^\/]*\.)?buy-bontril\.contact\.cc https?:\/\/([^\/]*\.)?buy-carisoprodol\.presteert\.nl https?:\/\/([^\/]*\.)?buy-celebrex\.bigsitecity\.com https?:\/\/([^\/]*\.)?buy-cialis-online\.bigsitecity\.com https?:\/\/([^\/]*\.)?buy-cialis\.1k\.pl https?:\/\/([^\/]*\.)?buy-cialis\.esguay\.com https?:\/\/([^\/]*\.)?buy-cialis\.presteert\.nl https?:\/\/([^\/]*\.)?buy-cialis20\.bravehost\.com https?:\/\/([^\/]*\.)?buy-cialishhb\.blogspot\.com https?:\/\/([^\/]*\.)?buy-cialisklx\.blogspot\.com https?:\/\/([^\/]*\.)?buy-hydrocodone-gs\.eu\.tc https?:\/\/([^\/]*\.)?buy-hydrocodone-gs\.net\.tc https?:\/\/([^\/]*\.)?buy-hydrocodone\.esguay\.com https?:\/\/([^\/]*\.)?buy-hydrocodone\.presteert\.nl https?:\/\/([^\/]*\.)?buy-levitra\.1k\.pl https?:\/\/([^\/]*\.)?buy-levitra\.bravehost\.com https?:\/\/([^\/]*\.)?buy-lipitor\.contact\.cc https?:\/\/([^\/]*\.)?buy-lortab-911\.jo\.pl https?:\/\/([^\/]*\.)?buy-online-tramadol\.1\.forogratis\.es https?:\/\/([^\/]*\.)?buy-pharmacy\.blogspot\.com https?:\/\/([^\/]*\.)?buy-phentermine-gs\.eu\.tc https?:\/\/([^\/]*\.)?buy-phentermine-gs\.net\.tc https?:\/\/([^\/]*\.)?buy-phentermine\.esguay\.com https?:\/\/([^\/]*\.)?buy-phentermine\.health-livening\.com https?:\/\/([^\/]*\.)?buy-phentermine\.hem\.nu https?:\/\/([^\/]*\.)?buy-phentermine\.presteert\.nl https?:\/\/([^\/]*\.)?buy-phentermine20\.bravehost\.com https?:\/\/([^\/]*\.)?buy-prozac-online\.com https?:\/\/([^\/]*\.)?buy-soma\.bravehost\.com https?:\/\/([^\/]*\.)?buy-tennis-shoes\.info https?:\/\/([^\/]*\.)?buy-tramadol-gs\.eu\.tc https?:\/\/([^\/]*\.)?buy-tramadol-gs\.net\.tc https?:\/\/([^\/]*\.)?buy-tramadol-online911\.jo\.pl https?:\/\/([^\/]*\.)?buy-tramadol\.1\.forogratis\.es https?:\/\/([^\/]*\.)?buy-tramadol\.esguay\.com https?:\/\/([^\/]*\.)?buy-tramadol\.presteert\.nl https?:\/\/([^\/]*\.)?buy-tramadol20\.bravehost\.com https?:\/\/([^\/]*\.)?buy-ultram\.bravehost\.com https?:\/\/([^\/]*\.)?buy-valium\.bravehost\.com https?:\/\/([^\/]*\.)?buy-viagra-online\.health-livening\.com https?:\/\/([^\/]*\.)?buy-viagra\.esguay\.com https?:\/\/([^\/]*\.)?buy-viagra\.health-livening\.com https?:\/\/([^\/]*\.)?buy-viagra\.presteert\.nl https?:\/\/([^\/]*\.)?buy-viagra20\.bravehost\.com https?:\/\/([^\/]*\.)?buy-xanax20\.bravehost\.com https?:\/\/([^\/]*\.)?buy4levitra\.blogspot\.com https?:\/\/([^\/]*\.)?buy4viagra\.blogspot\.com https?:\/\/([^\/]*\.)?buyambien\.blog\.hr https?:\/\/([^\/]*\.)?buyambien\.guu\.pl https?:\/\/([^\/]*\.)?buybuspar\.4\.pl https?:\/\/([^\/]*\.)?buycialisonline\.forumlivre\.com https?:\/\/([^\/]*\.)?buycialisonline\.sprayblog\.se https?:\/\/([^\/]*\.)?buycialisonline\.sulekha\.com https?:\/\/([^\/]*\.)?buycialispills00\.blogspot\.com https?:\/\/([^\/]*\.)?buycialiss\.blogsome\.com https?:\/\/([^\/]*\.)?buycialiss\.ovp\.pl https?:\/\/([^\/]*\.)?buycipro\.4\.pl https?:\/\/([^\/]*\.)?buyeffexor\.4\.pl https?:\/\/([^\/]*\.)?buyhydrocodone\.blog\.hr https?:\/\/([^\/]*\.)?buylevitra\.blog\.hr https?:\/\/([^\/]*\.)?buylevitra\.forospace\.com https?:\/\/([^\/]*\.)?buylevitraonlin\.forumlivre\.com https?:\/\/([^\/]*\.)?buylevitraonline\.sprayblog\.se https?:\/\/([^\/]*\.)?buymeridia\.blog\.hr https?:\/\/([^\/]*\.)?buyonlineorder\.com https?:\/\/([^\/]*\.)?buypaxil\.blog\.hr https?:\/\/([^\/]*\.)?buyphentermine2\.livelog\.com https?:\/\/([^\/]*\.)?buyphenterminee\.ovp\.pl https?:\/\/([^\/]*\.)?buyphenterminez\.blog\.hr https?:\/\/([^\/]*\.)?buypropecia\.blog\.hr https?:\/\/([^\/]*\.)?buyprozac\.blog\.hr https?:\/\/([^\/]*\.)?buyrosebowltickets\.com https?:\/\/([^\/]*\.)?buysoma\.1majorhost\.com https?:\/\/([^\/]*\.)?buysoma\.cay\.pl https?:\/\/([^\/]*\.)?buysomaaonline\.ovp\.pl https?:\/\/([^\/]*\.)?buysomaonline\.forospace\.com https?:\/\/([^\/]*\.)?buysomaonlinez\.blogsome\.com https?:\/\/([^\/]*\.)?buytramadolonli\.forumlivre\.com https?:\/\/([^\/]*\.)?buytramadolonline\.sprayblog\.se https?:\/\/([^\/]*\.)?buytramadolz\.jubiiblog\.de https?:\/\/([^\/]*\.)?buytrazodone\.eamped\.com https?:\/\/([^\/]*\.)?buyultram\.forospace\.com https?:\/\/([^\/]*\.)?buyultram\.ir\.pl https?:\/\/([^\/]*\.)?buyultramonline\.ir\.pl https?:\/\/([^\/]*\.)?buyultramxp\.cay\.pl https?:\/\/([^\/]*\.)?buyvalium\.one2you\.info https?:\/\/([^\/]*\.)?buyvaliumonline\.forumlivre\.com https?:\/\/([^\/]*\.)?buyvaliumonline\.jubiiblog\.de https?:\/\/([^\/]*\.)?buyvaliumonline\.sprayblog\.se https?:\/\/([^\/]*\.)?buyviagra\.seesaa\.net https?:\/\/([^\/]*\.)?buyviagraa\.ovp\.pl https?:\/\/([^\/]*\.)?buyviagraonline\.ovp\.pl https?:\/\/([^\/]*\.)?buyviagraonline\.sprayblog\.se https?:\/\/([^\/]*\.)?buyviagraxp\.cay\.pl https?:\/\/([^\/]*\.)?buyvicodinxp\.cay\.pl https?:\/\/([^\/]*\.)?buyvvalium\.ovp\.pl https?:\/\/([^\/]*\.)?buyxanax\.5u\.com https?:\/\/([^\/]*\.)?buyxanaxxonline\.ovp\.pl https?:\/\/([^\/]*\.)?buyxanaxxp\.cay\.pl https?:\/\/([^\/]*\.)?buyxenical\.blog\.hr https?:\/\/([^\/]*\.)?buyxenical\.ir\.pl https?:\/\/([^\/]*\.)?buyxenicalonline\.ir\.pl https?:\/\/([^\/]*\.)?buyxxenical\.ovp\.pl https?:\/\/([^\/]*\.)?buyxxenicalonline\.ovp\.pl https?:\/\/([^\/]*\.)?buyycelexa\.ovp\.pl https?:\/\/([^\/]*\.)?buyycialis\.ovp\.pl https?:\/\/([^\/]*\.)?buyymeridiaonline\.ovp\.pl https?:\/\/([^\/]*\.)?buyyphentermine\.ovp\.pl https?:\/\/([^\/]*\.)?buyysoma\.ovp\.pl https?:\/\/([^\/]*\.)?buyyviagra\.ovp\.pl https?:\/\/([^\/]*\.)?buyyzithromax\.ovp\.pl https?:\/\/([^\/]*\.)?buyzoloft\.blog\.hr https?:\/\/([^\/]*\.)?buyzyban\.coz\.in https?:\/\/([^\/]*\.)?buzerave\.com https?:\/\/([^\/]*\.)?bvalium\.c24\.pl https?:\/\/([^\/]*\.)?bvalium\.fuks\.pl https?:\/\/([^\/]*\.)?bvalium1\.forumup\.org https?:\/\/([^\/]*\.)?bviagra\.ovp\.pl https?:\/\/([^\/]*\.)?bviagra1\.forumup\.org https?:\/\/([^\/]*\.)?bvse1\.szm\.sk https?:\/\/([^\/]*\.)?bwmi0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?bwzf6\.szm\.sk https?:\/\/([^\/]*\.)?bx6\.blrf\.net https?:\/\/([^\/]*\.)?bxanax\.c24\.pl https?:\/\/([^\/]*\.)?bxanax\.gog\.pl https?:\/\/([^\/]*\.)?bxanax1\.forumup\.org https?:\/\/([^\/]*\.)?byhydrocodone\.blog\.espresso\.repubblica\.it https?:\/\/([^\/]*\.)?bzxs\.org\.ua https?:\/\/([^\/]*\.)?c-canada\.com https?:\/\/([^\/]*\.)?c4taldron\.uy\.pl https?:\/\/([^\/]*\.)?c4tcaget\.blogcu\.com https?:\/\/([^\/]*\.)?c4tcoli\.td\.pl https?:\/\/([^\/]*\.)?c4tdarrel\.dl\.pl https?:\/\/([^\/]*\.)?c4tdronrel\.goodforum\.net https?:\/\/([^\/]*\.)?c4tdronrel\.grafbb\.com https?:\/\/([^\/]*\.)?c4tvarcna\.dl\.pl https?:\/\/([^\/]*\.)?ca57sgr0h\.org https?:\/\/([^\/]*\.)?cable-connection\.keckins\.be https?:\/\/([^\/]*\.)?caboboc\.blogcu\.com https?:\/\/([^\/]*\.)?cacalife\.com https?:\/\/([^\/]*\.)?cacas\.info https?:\/\/([^\/]*\.)?caculall\.forumzen\.com https?:\/\/([^\/]*\.)?cadiucna\.forumzen\.com https?:\/\/([^\/]*\.)?caeserch\.com https?:\/\/([^\/]*\.)?cafasc\.com https?:\/\/([^\/]*\.)?caguyea\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cahn\.mnsu\.edu https?:\/\/([^\/]*\.)?caitlyn-d66tmgwi1\.blogspot\.com https?:\/\/([^\/]*\.)?caked\.info https?:\/\/([^\/]*\.)?calciatore-nudo\.hostzz\.info https?:\/\/([^\/]*\.)?calcio-arbitri\.com https?:\/\/([^\/]*\.)?calcio-watch\.com https?:\/\/([^\/]*\.)?calcolo-rata-finanziamento\.ll33\.info https?:\/\/([^\/]*\.)?calendario-vari\.freespase\.info https?:\/\/([^\/]*\.)?calgary-travel\.globaltr\.info https?:\/\/([^\/]*\.)?californiamortgage-x\.com https?:\/\/([^\/]*\.)?call-kelly-com-ky\.blogspot\.com https?:\/\/([^\/]*\.)?call-kelly-com-tnm5k7042\.blogspot\.com https?:\/\/([^\/]*\.)?callie-es\.blogspot\.com https?:\/\/([^\/]*\.)?callsecurity\.blogspot\.com https?:\/\/([^\/]*\.)?camaro-r21nu37q\.blogspot\.com https?:\/\/([^\/]*\.)?camcrush-com-eudifxp82\.blogspot\.com https?:\/\/([^\/]*\.)?camcrush-com-igzig\.blogspot\.com https?:\/\/([^\/]*\.)?camcrush-com-my1v8l4\.blogspot\.com https?:\/\/([^\/]*\.)?camel-cigarettes\.s5\.com https?:\/\/([^\/]*\.)?camelclips-com-budun\.blogspot\.com https?:\/\/([^\/]*\.)?camelclips-com-d3s6o2\.blogspot\.com https?:\/\/([^\/]*\.)?camelclips-com-h6a5l\.blogspot\.com https?:\/\/([^\/]*\.)?camelmenthe\.blogspot\.com https?:\/\/([^\/]*\.)?cameralover\.net https?:\/\/([^\/]*\.)?camerascams\.info https?:\/\/([^\/]*\.)?cameron-h184o7b\.blogspot\.com https?:\/\/([^\/]*\.)?camini\.freehostss\.info https?:\/\/([^\/]*\.)?canada-birthday\.acb\.pl https?:\/\/([^\/]*\.)?canadian-pharmacyfur\.blogspot\.com https?:\/\/([^\/]*\.)?canadian-pharmacyyof\.blogspot\.com https?:\/\/([^\/]*\.)?cancer-skin\.nm\.ru https?:\/\/([^\/]*\.)?cancer-skin\.pochta\.ru https?:\/\/([^\/]*\.)?cancer_skin\.chat\.ru https?:\/\/([^\/]*\.)?candi-door-hot-mom-next\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?candylist-com-dib\.blogspot\.com https?:\/\/([^\/]*\.)?candylist-com-ip72g5\.blogspot\.com https?:\/\/([^\/]*\.)?canjipiao\.com https?:\/\/([^\/]*\.)?cantante-arabe-sexy\.hostzz\.info https?:\/\/([^\/]*\.)?cantor-dz1h733\.blogspot\.com https?:\/\/([^\/]*\.)?caorzel\.discutforum\.com https?:\/\/([^\/]*\.)?capasdar\.td\.pl https?:\/\/([^\/]*\.)?car-free-insurance-quoteqch\.blogspot\.com https?:\/\/([^\/]*\.)?car-insurance-\.blogspot\.com https?:\/\/([^\/]*\.)?car-insurance-club\.com https?:\/\/([^\/]*\.)?car-insurance-p4zw\.blogspot\.com https?:\/\/([^\/]*\.)?car-insurance-ratsvex\.blogspot\.com https?:\/\/([^\/]*\.)?car-loan-newdma\.blogspot\.com https?:\/\/([^\/]*\.)?car-loan-neweei\.blogspot\.com https?:\/\/([^\/]*\.)?car1home\.info https?:\/\/([^\/]*\.)?carabidule\.net https?:\/\/([^\/]*\.)?carbest2006\.info https?:\/\/([^\/]*\.)?cardura-rapid-heartbeat\.tlg\.pl https?:\/\/([^\/]*\.)?care-skin\.pochta\.ru https?:\/\/([^\/]*\.)?career-business\.net https?:\/\/([^\/]*\.)?carepharmasite\.info https?:\/\/([^\/]*\.)?caribxpressparts\.com https?:\/\/([^\/]*\.)?caricc4t\.xa\.pl https?:\/\/([^\/]*\.)?carinsurance-x\.com https?:\/\/([^\/]*\.)?carinsuranceshh\.blogspot\.com https?:\/\/([^\/]*\.)?carisoprodol-online\.presteert\.nl https?:\/\/([^\/]*\.)?carisoprodol\.1\.p2l\.info https?:\/\/([^\/]*\.)?carisoprodol\.269g\.net https?:\/\/([^\/]*\.)?carisoprodol\.47\.pl https?:\/\/([^\/]*\.)?carisoprodol\.goodpharm\.info https?:\/\/([^\/]*\.)?carisoprodol\.hav\.pl https?:\/\/([^\/]*\.)?carisoprodol\.presteert\.nl https?:\/\/([^\/]*\.)?carisoprodol\.seesaa\.net https?:\/\/([^\/]*\.)?carisoprodol\.skocz\.net https?:\/\/([^\/]*\.)?carisoprodolrx\.weboficial\.com https?:\/\/([^\/]*\.)?carisoprodols\.blogspot\.com https?:\/\/([^\/]*\.)?carley-m3ia3\.blogspot\.com https?:\/\/([^\/]*\.)?carlie-a2s405\.blogspot\.com https?:\/\/([^\/]*\.)?carol-txxhdpnt\.blogspot\.com https?:\/\/([^\/]*\.)?carolina-w2aoe4xx\.blogspot\.com https?:\/\/([^\/]*\.)?carolyn-gp2s5\.blogspot\.com https?:\/\/([^\/]*\.)?carovi\.su\.pl https?:\/\/([^\/]*\.)?carson-ko8z7\.blogspot\.com https?:\/\/([^\/]*\.)?carspoker\.u288\.com https?:\/\/([^\/]*\.)?cartolina-pasqua\.host24h\.info https?:\/\/([^\/]*\.)?cartoon-free-gallery-gay\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cartoon-porn-clip-bloghvn\.blogspot\.com https?:\/\/([^\/]*\.)?carxm\.info https?:\/\/([^\/]*\.)?casaviva\.19mb\.info https?:\/\/([^\/]*\.)?cascq\.szm\.sk https?:\/\/([^\/]*\.)?casetvar\.forumzen\.com https?:\/\/([^\/]*\.)?cashadvance-x\.com https?:\/\/([^\/]*\.)?cashing-view\.com https?:\/\/([^\/]*\.)?casing\.dyndns\.dk https?:\/\/([^\/]*\.)?casino-555\.com https?:\/\/([^\/]*\.)?casino-attraction\.com https?:\/\/([^\/]*\.)?casino-games-wiki\.com https?:\/\/([^\/]*\.)?casino-magyck\.mutogen\.be https?:\/\/([^\/]*\.)?casino-ppp\.com https?:\/\/([^\/]*\.)?casino-startup\.com https?:\/\/([^\/]*\.)?casino-theory\.com https?:\/\/([^\/]*\.)?casino\.requirements\.be https?:\/\/([^\/]*\.)?casino1\.forumup\.org https?:\/\/([^\/]*\.)?casinos-new\.com https?:\/\/([^\/]*\.)?casinostates\.com https?:\/\/([^\/]*\.)?casper-a3r1z2a0\.blogspot\.com https?:\/\/([^\/]*\.)?cassay\.net https?:\/\/([^\/]*\.)?casual-boots\.massioni\.be https?:\/\/([^\/]*\.)?catch-c-teens\.blogspot\.com https?:\/\/([^\/]*\.)?catherine-tu75h6w\.blogspot\.com https?:\/\/([^\/]*\.)?catrelet\.forumzen\.com https?:\/\/([^\/]*\.)?cats-wjbreb7e\.blogspot\.com https?:\/\/([^\/]*\.)?cayuga-g2legvldk2\.blogspot\.com https?:\/\/([^\/]*\.)?cazelmon\.lolforum\.net https?:\/\/([^\/]*\.)?cazelolo\.dl\.pl https?:\/\/([^\/]*\.)?cbbi\.cn https?:\/\/([^\/]*\.)?cbhi8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cbkf0\.fr33webhost\.com https?:\/\/([^\/]*\.)?cbwgkm8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cc5f\.dnyp\.com https?:\/\/([^\/]*\.)?ccak1\.szm\.sk https?:\/\/([^\/]*\.)?ccal\.cultureforum\.net https?:\/\/([^\/]*\.)?ccclfak\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ccheapcelexa\.ovp\.pl https?:\/\/([^\/]*\.)?ccheapvaliumonline\.ovp\.pl https?:\/\/([^\/]*\.)?ccline\.info https?:\/\/([^\/]*\.)?ccnarac\.uy\.pl https?:\/\/([^\/]*\.)?ccobhv7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cdq\.dzsbcn\.com https?:\/\/([^\/]*\.)?cdsmart\.info https?:\/\/([^\/]*\.)?cdzhs\.szm\.sk https?:\/\/([^\/]*\.)?ceasius\.blogspot\.com https?:\/\/([^\/]*\.)?cecily-koj\.blogspot\.com https?:\/\/([^\/]*\.)?ceclor\.tlg\.pl https?:\/\/([^\/]*\.)?celeb-filipina-movie-site\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?celebrex-911\.coz\.in https?:\/\/([^\/]*\.)?celebrex-celecoxib-200mg\.tlg\.pl https?:\/\/([^\/]*\.)?celebrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?celebrity-sex-video-n-q-x\.blogspot\.com https?:\/\/([^\/]*\.)?celebrity-sex-video\.0800-porn\.com https?:\/\/([^\/]*\.)?celebrityprofiler\.com https?:\/\/([^\/]*\.)?celelt\.dl\.pl https?:\/\/([^\/]*\.)?celeste-mi8q701\.blogspot\.com https?:\/\/([^\/]*\.)?celexa\.1\.p2l\.info https?:\/\/([^\/]*\.)?celexa\.269g\.net https?:\/\/([^\/]*\.)?celexafcy\.blogspot\.com https?:\/\/([^\/]*\.)?celexaodt\.blogspot\.com https?:\/\/([^\/]*\.)?celexavby\.blogspot\.com https?:\/\/([^\/]*\.)?celexavcc\.blogspot\.com https?:\/\/([^\/]*\.)?celexazer\.blogspot\.com https?:\/\/([^\/]*\.)?celexxaonline\.ovp\.pl https?:\/\/([^\/]*\.)?celine-ajha0vxo6\.blogspot\.com https?:\/\/([^\/]*\.)?celtic-frost-ringtonedbg\.blogspot\.com https?:\/\/([^\/]*\.)?celtic-frost-ringtonepxe\.blogspot\.com https?:\/\/([^\/]*\.)?celtic-ring\.boom\.ru https?:\/\/([^\/]*\.)?celtic1ring\.chat\.ru https?:\/\/([^\/]*\.)?cemast\.com https?:\/\/([^\/]*\.)?center-csy73nq1\.blogspot\.com https?:\/\/([^\/]*\.)?century-21\.co\.jp https?:\/\/([^\/]*\.)?cephalexin\.dynalias\.net https?:\/\/([^\/]*\.)?cephalexin\.kicks-ass\.net https?:\/\/([^\/]*\.)?cephalexinvyp\.blogspot\.com https?:\/\/([^\/]*\.)?ceremi\.com https?:\/\/([^\/]*\.)?cerveza\.republika\.pl https?:\/\/([^\/]*\.)?cetki\.blogspot\.com https?:\/\/([^\/]*\.)?cetuna\.com https?:\/\/([^\/]*\.)?cfhc2\.szm\.sk https?:\/\/([^\/]*\.)?cfi-tp\.blogspot\.com https?:\/\/([^\/]*\.)?cgj-wmkd0p54ap\.blogspot\.com https?:\/\/([^\/]*\.)?chain\.webmelia\.com https?:\/\/([^\/]*\.)?champion-ghdm2p\.blogspot\.com https?:\/\/([^\/]*\.)?chancec-i0\.blogspot\.com https?:\/\/([^\/]*\.)?chandler-ozbi2l\.blogspot\.com https?:\/\/([^\/]*\.)?chanel-ag2w\.blogspot\.com https?:\/\/([^\/]*\.)?charity-eu\.blogspot\.com https?:\/\/([^\/]*\.)?charles-rp7s\.blogspot\.com https?:\/\/([^\/]*\.)?charlie-gl3ig\.blogspot\.com https?:\/\/([^\/]*\.)?charming-kbatna2k\.blogspot\.com https?:\/\/([^\/]*\.)?charvis-mj35\.blogspot\.com https?:\/\/([^\/]*\.)?chase-online-bankingdir\.blogspot\.com https?:\/\/([^\/]*\.)?chasehunt\.com https?:\/\/([^\/]*\.)?chasity-oy2mgww10\.blogspot\.com https?:\/\/([^\/]*\.)?chat-a7gdn35u\.blogspot\.com https?:\/\/([^\/]*\.)?chat-gay-ohio-room\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?chat\.infty\.net https?:\/\/([^\/]*\.)?chatelaine-free-lipstick\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?chatou\.dzsc\.com https?:\/\/([^\/]*\.)?chatsky\.cn https?:\/\/([^\/]*\.)?chaucer\.umuc\.edu https?:\/\/([^\/]*\.)?chayse-c0z2untnw\.blogspot\.com https?:\/\/([^\/]*\.)?chazuo\.dzsc\.com https?:\/\/([^\/]*\.)?chazz-d86hk\.blogspot\.com https?:\/\/([^\/]*\.)?cheap-cialis\.presteert\.nl https?:\/\/([^\/]*\.)?cheap-hydrocodone\.presteert\.nl https?:\/\/([^\/]*\.)?cheap-phentermine\.cheapills\.info https?:\/\/([^\/]*\.)?cheap-phentermine\.esguay\.com https?:\/\/([^\/]*\.)?cheap-phentermine\.health-livening\.com https?:\/\/([^\/]*\.)?cheap-phentermine\.presteert\.nl https?:\/\/([^\/]*\.)?cheap-rocky-boot\.medved\.od\.ua https?:\/\/([^\/]*\.)?cheap-soma-online\.blogspot\.com https?:\/\/([^\/]*\.)?cheap-tramadol-onlin\.zikforum\.com https?:\/\/([^\/]*\.)?cheap-tramadol\.1\.forogratis\.es https?:\/\/([^\/]*\.)?cheap-tramadol\.cheapills\.info https?:\/\/([^\/]*\.)?cheap-tramadol\.presteert\.nl https?:\/\/([^\/]*\.)?cheap-trashy-lingerie\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cheap-travel-deal\.globaltr\.info https?:\/\/([^\/]*\.)?cheap-valium\.cheapills\.info https?:\/\/([^\/]*\.)?cheap-viagra\.health-livening\.com https?:\/\/([^\/]*\.)?cheap-viagra\.presteert\.nl https?:\/\/([^\/]*\.)?cheap-xanax\.us\.tf https?:\/\/([^\/]*\.)?cheapcialiss\.ovp\.pl https?:\/\/([^\/]*\.)?cheapest-pills\.org https?:\/\/([^\/]*\.)?cheapest-viagra-source\.com https?:\/\/([^\/]*\.)?cheapestlakerstickets\.com https?:\/\/([^\/]*\.)?cheaplakertickets\.com https?:\/\/([^\/]*\.)?cheappcialis\.ovp\.pl https?:\/\/([^\/]*\.)?cheapphentermine\.livelog\.com https?:\/\/([^\/]*\.)?cheapphenterminee\.ovp\.pl https?:\/\/([^\/]*\.)?cheapphntermine\.ovp\.pl https?:\/\/([^\/]*\.)?cheappvalium\.ovp\.pl https?:\/\/([^\/]*\.)?cheappviagra\.ovp\.pl https?:\/\/([^\/]*\.)?cheapsuperbowltickets\.com https?:\/\/([^\/]*\.)?cheaptramadol\.forospace\.com https?:\/\/([^\/]*\.)?cheaptramadols\.ovp\.pl https?:\/\/([^\/]*\.)?cheaptramadolz\.ovp\.pl https?:\/\/([^\/]*\.)?cheapvaliumm\.ovp\.pl https?:\/\/([^\/]*\.)?cheapvvalium\.ovp\.pl https?:\/\/([^\/]*\.)?cheapxanaxx\.ovp\.pl https?:\/\/([^\/]*\.)?cheapxxanax\.ovp\.pl https?:\/\/([^\/]*\.)?cheater-t3si78zbf\.blogspot\.com https?:\/\/([^\/]*\.)?cheats-e2p3o7nhm\.blogspot\.com https?:\/\/([^\/]*\.)?cheaviagra\.blogsome\.com https?:\/\/([^\/]*\.)?checkers-wn88\.blogspot\.com https?:\/\/([^\/]*\.)?checkproxy\.com https?:\/\/([^\/]*\.)?cheerleader-child-photo\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cheerleader-dolphin\.gameover\.in\.ua https?:\/\/([^\/]*\.)?cheerleader-gallery-naughty\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?cheerleader-upskirt-picture\.protime\.in\.ua https?:\/\/([^\/]*\.)?cheese-ratzl\.blogspot\.com https?:\/\/([^\/]*\.)?chellam-g2w\.blogspot\.com https?:\/\/([^\/]*\.)?chelsey-kifs\.blogspot\.com https?:\/\/([^\/]*\.)?chem-iv1c82\.blogspot\.com https?:\/\/([^\/]*\.)?chemistry-mrrx5e\.blogspot\.com https?:\/\/([^\/]*\.)?chemistry\.org\.ua https?:\/\/([^\/]*\.)?cheng-o08if\.blogspot\.com https?:\/\/([^\/]*\.)?chenglong\.com\.cn https?:\/\/([^\/]*\.)?cher-aorxm1s3j7\.blogspot\.com https?:\/\/([^\/]*\.)?cheryl-b8\.blogspot\.com https?:\/\/([^\/]*\.)?chess-cy\.blogspot\.com https?:\/\/([^\/]*\.)?chester1-tfkfl51eb\.blogspot\.com https?:\/\/([^\/]*\.)?chevroletcam\.cn https?:\/\/([^\/]*\.)?chevy-ekv8ph\.blogspot\.com https?:\/\/([^\/]*\.)?chevy1-wwok0ww55\.blogspot\.com https?:\/\/([^\/]*\.)?cheyanne-rnriiwno6l\.blogspot\.com https?:\/\/([^\/]*\.)?cheyenne-g3l5fa87\.blogspot\.com https?:\/\/([^\/]*\.)?cheyne-hm7aik5u\.blogspot\.com https?:\/\/([^\/]*\.)?chfielde\.ifrance\.com https?:\/\/([^\/]*\.)?chic-ks\.blogspot\.com https?:\/\/([^\/]*\.)?chicago-kou3c7e58\.blogspot\.com https?:\/\/([^\/]*\.)?chick-gay-kissing\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?chicken-i66t8z76\.blogspot\.com https?:\/\/([^\/]*\.)?chico-myg8bv\.blogspot\.com https?:\/\/([^\/]*\.)?chidneuer\.frbb\.net https?:\/\/([^\/]*\.)?chidronrac\.ephpbb\.com https?:\/\/([^\/]*\.)?chidronrec\.dynamicforum\.net https?:\/\/([^\/]*\.)?chiefs-oob\.blogspot\.com https?:\/\/([^\/]*\.)?chilacna\.td\.pl https?:\/\/([^\/]*\.)?child-leg-pain\.medved\.od\.ua https?:\/\/([^\/]*\.)?chilton-b82sebrrue\.blogspot\.com https?:\/\/([^\/]*\.)?chimp-cu4gvwsceg\.blogspot\.com https?:\/\/([^\/]*\.)?china--magnet\.com https?:\/\/([^\/]*\.)?china-dwcuzqft6\.blogspot\.com https?:\/\/([^\/]*\.)?china-made-door\.com\.cn https?:\/\/([^\/]*\.)?china01\.52blog\.net https?:\/\/([^\/]*\.)?china02\.52blog\.net https?:\/\/([^\/]*\.)?china1\.52blog\.net https?:\/\/([^\/]*\.)?china1\.yculblog\.com https?:\/\/([^\/]*\.)?china2\.52blog\.net https?:\/\/([^\/]*\.)?china2\.yculblog\.com https?:\/\/([^\/]*\.)?china3\.yculblog\.com https?:\/\/([^\/]*\.)?chinacarcenter\.net https?:\/\/([^\/]*\.)?chinacid\.com https?:\/\/([^\/]*\.)?chinafoo\.com https?:\/\/([^\/]*\.)?chinafurnace\.net https?:\/\/([^\/]*\.)?chinakj\.net https?:\/\/([^\/]*\.)?chinalhcz\.com https?:\/\/([^\/]*\.)?chinaprojectors\.com https?:\/\/([^\/]*\.)?chinatranslation\.net https?:\/\/([^\/]*\.)?chinayoujiu\.com https?:\/\/([^\/]*\.)?chinese-google\.com https?:\/\/([^\/]*\.)?chineseaids\.com https?:\/\/([^\/]*\.)?chineseaids\.net https?:\/\/([^\/]*\.)?chinesezhouyi\.com https?:\/\/([^\/]*\.)?chip-thz\.blogspot\.com https?:\/\/([^\/]*\.)?chipper-eusa\.blogspot\.com https?:\/\/([^\/]*\.)?chippewa-work-boot\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?chiquita-wqok0t741\.blogspot\.com https?:\/\/([^\/]*\.)?chiricc4t\.zj\.pl https?:\/\/([^\/]*\.)?chiricdel\.fr-bb\.com https?:\/\/([^\/]*\.)?chitr\.discutforum\.com https?:\/\/([^\/]*\.)?chizelc\.goodforum\.net https?:\/\/([^\/]*\.)?chizelc\.grafbb\.com https?:\/\/([^\/]*\.)?chizelno\.cultureforum\.net https?:\/\/([^\/]*\.)?chkawai\.cn https?:\/\/([^\/]*\.)?chocolat-g4\.blogspot\.com https?:\/\/([^\/]*\.)?chocolate\.my10gb\.com https?:\/\/([^\/]*\.)?chongdianqi\.dzsc\.com https?:\/\/([^\/]*\.)?chops-hg47n04tvi\.blogspot\.com https?:\/\/([^\/]*\.)?choudoufu\.com https?:\/\/([^\/]*\.)?chris-ks6u6dj\.blogspot\.com https?:\/\/([^\/]*\.)?chrissy-oyo8z\.blogspot\.com https?:\/\/([^\/]*\.)?christ-acczbi1t\.blogspot\.com https?:\/\/([^\/]*\.)?christen-bttdc0kn\.blogspot\.com https?:\/\/([^\/]*\.)?christeta\.com https?:\/\/([^\/]*\.)?christia-ccf2e6\.blogspot\.com https?:\/\/([^\/]*\.)?christiaan-dvb\.blogspot\.com https?:\/\/([^\/]*\.)?christianj-t3e1j3\.blogspot\.com https?:\/\/([^\/]*\.)?christin-ee1qjx\.blogspot\.com https?:\/\/([^\/]*\.)?christina-aguilera-pic\.blogspot\.com https?:\/\/([^\/]*\.)?christina-wf\.blogspot\.com https?:\/\/([^\/]*\.)?christine-rgosvndiqw\.blogspot\.com https?:\/\/([^\/]*\.)?christoffe-g4e\.blogspot\.com https?:\/\/([^\/]*\.)?christop-hqhff\.blogspot\.com https?:\/\/([^\/]*\.)?christy-kflb274n\.blogspot\.com https?:\/\/([^\/]*\.)?chrome-it8j\.blogspot\.com https?:\/\/([^\/]*\.)?chrykne\.info https?:\/\/([^\/]*\.)?chrystian-mgxw3jyfb1\.blogspot\.com https?:\/\/([^\/]*\.)?chuanganqi\.dzsc\.com https?:\/\/([^\/]*\.)?chubby-bear-pic\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?chubby-chick\.gameover\.in\.ua https?:\/\/([^\/]*\.)?chubby-cum\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?chubby-teens-tus\.blogspot\.com https?:\/\/([^\/]*\.)?chuck-oh\.blogspot\.com https?:\/\/([^\/]*\.)?chucky-aklnscme\.blogspot\.com https?:\/\/([^\/]*\.)?chulyt\.com https?:\/\/([^\/]*\.)?church-b0w4\.blogspot\.com https?:\/\/([^\/]*\.)?chuvak-org\.blogspot\.com https?:\/\/([^\/]*\.)?chvpqa7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?chyna-c2\.blogspot\.com https?:\/\/([^\/]*\.)?ci-video-pornograficos-download\.blogspot\.com https?:\/\/([^\/]*\.)?cialis-for-sale\.com https?:\/\/([^\/]*\.)?cialis-ok-1\.blogspot\.com https?:\/\/([^\/]*\.)?cialis-online\.presteert\.nl https?:\/\/([^\/]*\.)?cialis-pharma\.tripod\.com https?:\/\/([^\/]*\.)?cialis-soft-tabs\.com https?:\/\/([^\/]*\.)?cialis\.1\.p2l\.info https?:\/\/([^\/]*\.)?cialis\.esguay\.com https?:\/\/([^\/]*\.)?cialis\.fws1\.com https?:\/\/([^\/]*\.)?cialis\.goodpharm\.info https?:\/\/([^\/]*\.)?cialis\.page\.tl https?:\/\/([^\/]*\.)?cialis\.presteert\.nl https?:\/\/([^\/]*\.)?cialis\.rx4\.org https?:\/\/([^\/]*\.)?cialis\.seesaa\.net https?:\/\/([^\/]*\.)?cialis\.skocz\.net https?:\/\/([^\/]*\.)?cialises\.us\.tf https?:\/\/([^\/]*\.)?cialisjiq\.blogspot\.com https?:\/\/([^\/]*\.)?cialispills\.blog\.hr https?:\/\/([^\/]*\.)?cialisrx\.weboficial\.com https?:\/\/([^\/]*\.)?cialisx\.host-page\.com https?:\/\/([^\/]*\.)?ciara-d0\.blogspot\.com https?:\/\/([^\/]*\.)?cierra-t1f0hy\.blogspot\.com https?:\/\/([^\/]*\.)?cigar-ekelo\.blogspot\.com https?:\/\/([^\/]*\.)?cigarettes-smoking-online\.com https?:\/\/([^\/]*\.)?cigarettes\.4\.pl https?:\/\/([^\/]*\.)?cilmer\.com https?:\/\/([^\/]*\.)?cinast\.com https?:\/\/([^\/]*\.)?cincydj\.ifrance\.com https?:\/\/([^\/]*\.)?cinder-w6\.blogspot\.com https?:\/\/([^\/]*\.)?cindi-ruo8\.blogspot\.com https?:\/\/([^\/]*\.)?cindy-gdhs2i21u6\.blogspot\.com https?:\/\/([^\/]*\.)?cinem4\.com https?:\/\/([^\/]*\.)?cingularringtones\.269g\.net https?:\/\/([^\/]*\.)?ciplactin\.tlg\.pl https?:\/\/([^\/]*\.)?ciprobuy\.hop\.to https?:\/\/([^\/]*\.)?ciprobuycheap\.firstpage\.de https?:\/\/([^\/]*\.)?ciprobuygeneric\.move\.to https?:\/\/([^\/]*\.)?ciprocheap\.dive\.to https?:\/\/([^\/]*\.)?ciprofloxacin\.xwiki\.com https?:\/\/([^\/]*\.)?ciprogeneric\.i\.am https?:\/\/([^\/]*\.)?citdokcna\.dynamicbb\.com https?:\/\/([^\/]*\.)?citeccit\.forumculture\.net https?:\/\/([^\/]*\.)?citpocit\.dynamicforum\.net https?:\/\/([^\/]*\.)?civisi\.com https?:\/\/([^\/]*\.)?cixingcailiao\.dzsc\.com https?:\/\/([^\/]*\.)?cjhx6\.szm\.sk https?:\/\/([^\/]*\.)?ckalv\.szm\.sk https?:\/\/([^\/]*\.)?ckfhhw4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ckqabl1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?claca\.blogcu\.com https?:\/\/([^\/]*\.)?claire-k6kkha\.blogspot\.com https?:\/\/([^\/]*\.)?clancy-i1ib\.blogspot\.com https?:\/\/([^\/]*\.)?clara-mj6ts\.blogspot\.com https?:\/\/([^\/]*\.)?clarissa-o14r\.blogspot\.com https?:\/\/([^\/]*\.)?clark-asa0i3mfvr\.blogspot\.com https?:\/\/([^\/]*\.)?classic-porn-clip-zoneykt\.blogspot\.com https?:\/\/([^\/]*\.)?claude-blw\.blogspot\.com https?:\/\/([^\/]*\.)?claudia-c7ut8jj4\.blogspot\.com https?:\/\/([^\/]*\.)?clay-e-facial-mask-vitamin\.gameover\.in\.ua https?:\/\/([^\/]*\.)?cleaner-ddiggwqy1t\.blogspot\.com https?:\/\/([^\/]*\.)?clearmp3\.net https?:\/\/([^\/]*\.)?clerk\.lir\.dk https?:\/\/([^\/]*\.)?cletoac\.lolbb\.com https?:\/\/([^\/]*\.)?cleveland-txjimr\.blogspot\.com https?:\/\/([^\/]*\.)?clickhere2\.net https?:\/\/([^\/]*\.)?clior\.graphforum\.com https?:\/\/([^\/]*\.)?clip-ebony-lesbian-porn\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?clip-ebony-porn\.medved\.od\.ua https?:\/\/([^\/]*\.)?clip-free-hand-job-movie-movie\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?clip-free-porn-psp-newsy66\.blogspot\.com https?:\/\/([^\/]*\.)?clip-hentai\.dreamsuit\.net https?:\/\/([^\/]*\.)?clip-hunter-porn-blogctv\.blogspot\.com https?:\/\/([^\/]*\.)?clip-hunter-porn-zone8y6\.blogspot\.com https?:\/\/([^\/]*\.)?clip-malay-porn-newsgrq\.blogspot\.com https?:\/\/([^\/]*\.)?clip-malay-porn-zone1w3\.blogspot\.com https?:\/\/([^\/]*\.)?clipgalaxy-com-i4z645\.blogspot\.com https?:\/\/([^\/]*\.)?clipgalaxy-com-io8ncz\.blogspot\.com https?:\/\/([^\/]*\.)?clipper-e2buyg\.blogspot\.com https?:\/\/([^\/]*\.)?clirol\.dl\.pl https?:\/\/([^\/]*\.)?clit-huge-real\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?cllivers\.dl\.pl https?:\/\/([^\/]*\.)?clobetasol-propionate\.tlg\.pl https?:\/\/([^\/]*\.)?cloclo-w046r\.blogspot\.com https?:\/\/([^\/]*\.)?clonazepam\.us\.tf https?:\/\/([^\/]*\.)?clonazepamscz\.blogspot\.com https?:\/\/([^\/]*\.)?clonazepamuej\.blogspot\.com https?:\/\/([^\/]*\.)?clonsex\.info https?:\/\/([^\/]*\.)?closeout-womens-rain-boot\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?clothes-newborns\.loretic\.be https?:\/\/([^\/]*\.)?cloudydayshadow\.blogspot\.com https?:\/\/([^\/]*\.)?clover-rs04\.blogspot\.com https?:\/\/([^\/]*\.)?clowns-gloi\.blogspot\.com https?:\/\/([^\/]*\.)?clu\.cn https?:\/\/([^\/]*\.)?clumsy-hl0fwl1k\.blogspot\.com https?:\/\/([^\/]*\.)?cluster-k4ovd06ibi\.blogspot\.com https?:\/\/([^\/]*\.)?clwilbur\.ifrance\.com https?:\/\/([^\/]*\.)?clyaod2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cmauq\.com https?:\/\/([^\/]*\.)?cmnanwe\.com https?:\/\/([^\/]*\.)?cmsrt\.szm\.sk https?:\/\/([^\/]*\.)?cmubroadway\.blogspot\.com https?:\/\/([^\/]*\.)?cnaalget\.graphforum\.com https?:\/\/([^\/]*\.)?cnaalget\.highforum\.net https?:\/\/([^\/]*\.)?cnac4t-or\.bbgraf\.com https?:\/\/([^\/]*\.)?cnadel6or6\.dl\.pl https?:\/\/([^\/]*\.)?cnaeltbo\.discutforum\.com https?:\/\/([^\/]*\.)?cnaeltdron\.bb-fr\.com https?:\/\/([^\/]*\.)?cnapasou\.graphforum\.com https?:\/\/([^\/]*\.)?cnatral\.xa\.pl https?:\/\/([^\/]*\.)?cnbess\.com https?:\/\/([^\/]*\.)?cnbf2\.szm\.sk https?:\/\/([^\/]*\.)?cncarcenter\.com https?:\/\/([^\/]*\.)?cnfibernet\.com\.cn https?:\/\/([^\/]*\.)?cnmarketingresearch\.com https?:\/\/([^\/]*\.)?cnplayhome\.cn https?:\/\/([^\/]*\.)?cnticket\.net https?:\/\/([^\/]*\.)?co-alf\.blogspot\.com https?:\/\/([^\/]*\.)?co-video-de-sexo-gratis-download\.blogspot\.com https?:\/\/([^\/]*\.)?co6or6bo\.dl\.pl https?:\/\/([^\/]*\.)?coacdar\.bbfr\.net https?:\/\/([^\/]*\.)?coachescorner\.com https?:\/\/([^\/]*\.)?cock-and-ball-punishment\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cock-deep-huge-throat\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cock-love-teen\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?cock-petite-sucker\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?cock-roaches-picture\.medved\.od\.ua https?:\/\/([^\/]*\.)?cock-sexy-sucker\.medved\.od\.ua https?:\/\/([^\/]*\.)?cock-story-sucker\.gameover\.in\.ua https?:\/\/([^\/]*\.)?cocnacna\.dl\.pl https?:\/\/([^\/]*\.)?cocoel\.lightbb\.com https?:\/\/([^\/]*\.)?coconel\.frbb\.net https?:\/\/([^\/]*\.)?codarget\.dl\.pl https?:\/\/([^\/]*\.)?codigodor\.blogspot\.com https?:\/\/([^\/]*\.)?coiqen\.com https?:\/\/([^\/]*\.)?cold-hard-bitch-lyric\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?college-fucking-video-free\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?college1-degree\.boom\.ru https?:\/\/([^\/]*\.)?college1degree\.chat\.ru https?:\/\/([^\/]*\.)?college1degree1p\.chat\.ru https?:\/\/([^\/]*\.)?colodom\.frbb\.net https?:\/\/([^\/]*\.)?colorado\.edu https?:\/\/([^\/]*\.)?coloradomortgage-x\.com https?:\/\/([^\/]*\.)?com-dick-fick-n-suck\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?comic-fetish-info-remember\.medved\.od\.ua https?:\/\/([^\/]*\.)?comic-hardcore-info-remember-sex\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?comicvmarriage\.spycams777\.com https?:\/\/([^\/]*\.)?commercialleaseonline\.info https?:\/\/([^\/]*\.)?communicationagency\.com https?:\/\/([^\/]*\.)?comontr\.bb-fr\.com https?:\/\/([^\/]*\.)?companyforyou\.com https?:\/\/([^\/]*\.)?competitio\.ifrance\.com https?:\/\/([^\/]*\.)?computer-desk\.fromru\.com https?:\/\/([^\/]*\.)?computer1degree\.chat\.ru https?:\/\/([^\/]*\.)?computerxchange\.com https?:\/\/([^\/]*\.)?comradealtmer\.blogspot\.com https?:\/\/([^\/]*\.)?condition-skin\.newmail\.ru https?:\/\/([^\/]*\.)?condition_skin\.chat\.ru https?:\/\/([^\/]*\.)?condom-delivered-free-free-uk\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?condom-picture-penis\.protime\.in\.ua https?:\/\/([^\/]*\.)?connecticutmortgage-x\.com https?:\/\/([^\/]*\.)?conor2k\.007webpro\.com https?:\/\/([^\/]*\.)?consistmay\.tripod\.com https?:\/\/([^\/]*\.)?consolidation-loan-studentqdl\.blogspot\.com https?:\/\/([^\/]*\.)?consultanthub\.com https?:\/\/([^\/]*\.)?cooking-crazy\.com https?:\/\/([^\/]*\.)?cool-mp3\.biz https?:\/\/([^\/]*\.)?coolhost\.biz https?:\/\/([^\/]*\.)?copasleto\.zj\.pl https?:\/\/([^\/]*\.)?copyok\.net https?:\/\/([^\/]*\.)?coricidin\.tlg\.pl https?:\/\/([^\/]*\.)?cornut\.ipupdater\.com https?:\/\/([^\/]*\.)?coro-aaliyah\.blogspot\.com https?:\/\/([^\/]*\.)?corporategifts-guide\.com https?:\/\/([^\/]*\.)?corsv\.fr33webhost\.com https?:\/\/([^\/]*\.)?cortech\.cn https?:\/\/([^\/]*\.)?cositbo\.bbgraf\.com https?:\/\/([^\/]*\.)?cosmiboe\.forumzen\.com https?:\/\/([^\/]*\.)?cosmicray\.umd\.edu https?:\/\/([^\/]*\.)?coswishe\.dl\.pl https?:\/\/([^\/]*\.)?cotton-gloves\.loretic\.be https?:\/\/([^\/]*\.)?counciloflight\.com https?:\/\/([^\/]*\.)?couple-fucking-photo\.medved\.od\.ua https?:\/\/([^\/]*\.)?couple-kissing-pic\.protime\.in\.ua https?:\/\/([^\/]*\.)?couponmountain\.com https?:\/\/([^\/]*\.)?courses\.csusm\.edu https?:\/\/([^\/]*\.)?courtinfroggie\.blogspot\.com https?:\/\/([^\/]*\.)?covarou\.su\.pl https?:\/\/([^\/]*\.)?cowei\.net https?:\/\/([^\/]*\.)?cowlist-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?cozaar\.4\.pl https?:\/\/([^\/]*\.)?cozaarbuy\.hello\.to https?:\/\/([^\/]*\.)?cozaarcheap\.mysite\.de https?:\/\/([^\/]*\.)?cozaarcheapgeneric\.warp9\.to https?:\/\/([^\/]*\.)?cozaargeneric\.everything\.at https?:\/\/([^\/]*\.)?cozaargenericcheap\.dive\.to https?:\/\/([^\/]*\.)?cpayscom\.xwiki\.com https?:\/\/([^\/]*\.)?cpkna\.szm\.sk https?:\/\/([^\/]*\.)?cpsyy\.fr33webhost\.com https?:\/\/([^\/]*\.)?cpyngke\.com https?:\/\/([^\/]*\.)?cqbhn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cqfmz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cqjbjx1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cr4ix7\.com https?:\/\/([^\/]*\.)?crabs\.isgre\.at https?:\/\/([^\/]*\.)?cramp-hand-leg\.gameover\.in\.ua https?:\/\/([^\/]*\.)?crashdome\.info https?:\/\/([^\/]*\.)?crazyvirgin\.info https?:\/\/([^\/]*\.)?crbackus\.dl\.pl https?:\/\/([^\/]*\.)?crcather\.dl\.pl https?:\/\/([^\/]*\.)?cream-facial-pie\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cream-hairy-mature-movie-pie-pussy\.medved\.od\.ua https?:\/\/([^\/]*\.)?creampie\.coz\.in https?:\/\/([^\/]*\.)?creating-a-boot-cd\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?credit-dreams\.com https?:\/\/([^\/]*\.)?creditcards-x\.com https?:\/\/([^\/]*\.)?credoninc\.com https?:\/\/([^\/]*\.)?crestor-rx\.one2you\.info https?:\/\/([^\/]*\.)?crestor\.dynalias\.net https?:\/\/([^\/]*\.)?criminal-j-degre\.boom\.ru https?:\/\/([^\/]*\.)?crimson-teens\.freeinsite\.net https?:\/\/([^\/]*\.)?cristal-fenix\.isuisse\.com https?:\/\/([^\/]*\.)?crookedscud\.myfreewebs\.net https?:\/\/([^\/]*\.)?crossed-leg-gallery\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?crossed-leg-short-skirt-stocking-top\.protime\.in\.ua https?:\/\/([^\/]*\.)?crrenee\.dl\.pl https?:\/\/([^\/]*\.)?crsundke\.dl\.pl https?:\/\/([^\/]*\.)?cruise-guide\.org https?:\/\/([^\/]*\.)?cruise-travel\.globaltr\.info https?:\/\/([^\/]*\.)?crzvh\.szm\.sk https?:\/\/([^\/]*\.)?cscla\.net https?:\/\/([^\/]*\.)?cscserver\.cc\.edu https?:\/\/([^\/]*\.)?csitdom\.bbgraf\.com https?:\/\/([^\/]*\.)?csmwui11\.com https?:\/\/([^\/]*\.)?csosandbox\.clemson\.edu https?:\/\/([^\/]*\.)?ctdq0\.fr33webhost\.com https?:\/\/([^\/]*\.)?ctl\.csudh\.edu https?:\/\/([^\/]*\.)?ctusxc4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?cubaka\.yi\.org https?:\/\/([^\/]*\.)?cufgq\.szm\.sk https?:\/\/([^\/]*\.)?cuicui\.monblog\.ch https?:\/\/([^\/]*\.)?cuiugcg\.myfreewebhost\.org https?:\/\/([^\/]*\.)?culinary-school\.newmail\.ru https?:\/\/([^\/]*\.)?culinary1school\.chat\.ru https?:\/\/([^\/]*\.)?cum-drenched-pantie\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cum-drink-video\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cum-dvd-face-private-private-rip-vcd\.protime\.in\.ua https?:\/\/([^\/]*\.)?cum-ebony-face\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?cum-face-asian\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?cum-face-pic\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cum-face-picture\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cum-facial-messy\.medved\.od\.ua https?:\/\/([^\/]*\.)?cum-facial-video-free-clip\.gameover\.in\.ua https?:\/\/([^\/]*\.)?cum-filled-pussy-picture\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cum-kiss-lick-shoes-suck-worship\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cum-mouth-ebony\.gameover\.in\.ua https?:\/\/([^\/]*\.)?cum-nurse-sex-shot\.protime\.in\.ua https?:\/\/([^\/]*\.)?cum-se-face-sex\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?cum-shot-movie\.dreamsuit\.net https?:\/\/([^\/]*\.)?cum-swallow-vids\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?cuola\.goodforum\.net https?:\/\/([^\/]*\.)?cut-xmeup-com\.blogspot\.com https?:\/\/([^\/]*\.)?cute-ebony-girl\.gameover\.in\.ua https?:\/\/([^\/]*\.)?cute-girldzy\.blogspot\.com https?:\/\/([^\/]*\.)?cutgetolo\.zikforum\.com https?:\/\/([^\/]*\.)?cutvili\.winnerforum\.net https?:\/\/([^\/]*\.)?cvep2\.szm\.sk https?:\/\/([^\/]*\.)?cvipm\.com https?:\/\/([^\/]*\.)?cxolt\.szm\.sk https?:\/\/([^\/]*\.)?cyberlinx\.us https?:\/\/([^\/]*\.)?cycleworldsuzuki\.info https?:\/\/([^\/]*\.)?cyclobenzaprine\.1\.p2l\.info https?:\/\/([^\/]*\.)?cysrf\.szm\.sk https?:\/\/([^\/]*\.)?cytonrok\.forumculture\.net https?:\/\/([^\/]*\.)?czelvar\.su\.pl https?:\/\/([^\/]*\.)?czis0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?d-z-free-lesbian-movie-h\.blogspot\.com https?:\/\/([^\/]*\.)?daddy-bear-gay\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?daddy-long-leg-venom\.gameover\.in\.ua https?:\/\/([^\/]*\.)?daily-porn-clip-news0we\.blogspot\.com https?:\/\/([^\/]*\.)?dailybasis-com-cky8ax\.blogspot\.com https?:\/\/([^\/]*\.)?dami3\.com https?:\/\/([^\/]*\.)?danazol\.4\.pl https?:\/\/([^\/]*\.)?dance-instruction\.lkerfocu\.be https?:\/\/([^\/]*\.)?danga4ka\.blogspot\.com https?:\/\/([^\/]*\.)?dansmovies-com-mu2ywho24d\.blogspot\.com https?:\/\/([^\/]*\.)?daractr\.goodbb\.net https?:\/\/([^\/]*\.)?darboboc\.dl\.pl https?:\/\/([^\/]*\.)?darboctroc\.dl\.pl https?:\/\/([^\/]*\.)?darcnaec\.dynamicbb\.com https?:\/\/([^\/]*\.)?darcoca\.dl\.pl https?:\/\/([^\/]*\.)?dardomcna\.blogcu\.com https?:\/\/([^\/]*\.)?dardomdom\.darkbb\.com https?:\/\/([^\/]*\.)?dardomzel\.blogcu\.com https?:\/\/([^\/]*\.)?dare-poker\.com https?:\/\/([^\/]*\.)?darelttr\.dl\.pl https?:\/\/([^\/]*\.)?dargetou\.darkbb\.com https?:\/\/([^\/]*\.)?darladom\.td\.pl https?:\/\/([^\/]*\.)?darlala\.winnerforum\.net https?:\/\/([^\/]*\.)?darlina-a1vds\.blogspot\.com https?:\/\/([^\/]*\.)?darlina-akp4\.blogspot\.com https?:\/\/([^\/]*\.)?darlina-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?darlina-tcifizmx\.blogspot\.com https?:\/\/([^\/]*\.)?darmonrol\.zj\.pl https?:\/\/([^\/]*\.)?darricer\.fr-bb\.com https?:\/\/([^\/]*\.)?darzeltroc\.dl\.pl https?:\/\/([^\/]*\.)?dasepluv\.dl\.pl https?:\/\/([^\/]*\.)?dashulya\.blogspot\.com https?:\/\/([^\/]*\.)?dastino\.republika\.pl https?:\/\/([^\/]*\.)?data-mining\.massioni\.be https?:\/\/([^\/]*\.)?datangid\.com https?:\/\/([^\/]*\.)?datasol\.org https?:\/\/([^\/]*\.)?dating-advice\.sexnation\.info https?:\/\/([^\/]*\.)?dating-direct\.sexnation\.info https?:\/\/([^\/]*\.)?dating\.sexnation\.info https?:\/\/([^\/]*\.)?dave-hollister-ringtoneezm\.blogspot\.com https?:\/\/([^\/]*\.)?dave-hollister-ringtonefoi\.blogspot\.com https?:\/\/([^\/]*\.)?dave-hollister-ringtonewqs\.blogspot\.com https?:\/\/([^\/]*\.)?davejackson\.com https?:\/\/([^\/]*\.)?davte\.info https?:\/\/([^\/]*\.)?dawsonanddadrealty\.com https?:\/\/([^\/]*\.)?dayzve4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dbxbqb7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dc-escort-gay\.medved\.od\.ua https?:\/\/([^\/]*\.)?dcuoo\.szm\.sk https?:\/\/([^\/]*\.)?dcx\.org\.ua https?:\/\/([^\/]*\.)?ddfz1\.szm\.sk https?:\/\/([^\/]*\.)?ddlive\.info https?:\/\/([^\/]*\.)?ddovj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ddpb6\.szm\.sk https?:\/\/([^\/]*\.)?de-foto-gay-gratis-negros\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?dead-sea-product\.com https?:\/\/([^\/]*\.)?deadsex\.info https?:\/\/([^\/]*\.)?deadums\.blogspot\.com https?:\/\/([^\/]*\.)?debk6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?debt-consolidation-care\.com https?:\/\/([^\/]*\.)?debt-consolidation\.dd\.vg https?:\/\/([^\/]*\.)?debtconsolidation-today\.com https?:\/\/([^\/]*\.)?deepthroat\.coz\.in https?:\/\/([^\/]*\.)?deerdeji\.forumzen\.com https?:\/\/([^\/]*\.)?defacialize-com-td32\.blogspot\.com https?:\/\/([^\/]*\.)?defi-adrian\.blogspot\.com https?:\/\/([^\/]*\.)?degree-program\.hotmail\.ru https?:\/\/([^\/]*\.)?degree2program\.chat\.ru https?:\/\/([^\/]*\.)?dejablu503\.50webs\.org https?:\/\/([^\/]*\.)?dela88\.com https?:\/\/([^\/]*\.)?delacmon\.discutforum\.com https?:\/\/([^\/]*\.)?delawaremortgage-x\.com https?:\/\/([^\/]*\.)?delbocer\.dl\.pl https?:\/\/([^\/]*\.)?delcnacna\.lolbb\.com https?:\/\/([^\/]*\.)?delletopas\.su\.pl https?:\/\/([^\/]*\.)?delliric\.dl\.pl https?:\/\/([^\/]*\.)?delordel\.blogcu\.com https?:\/\/([^\/]*\.)?delricchi\.goodforum\.net https?:\/\/([^\/]*\.)?delricchi\.grafbb\.com https?:\/\/([^\/]*\.)?delricou\.dl\.pl https?:\/\/([^\/]*\.)?delserch\.com https?:\/\/([^\/]*\.)?deltasone\.4\.pl https?:\/\/([^\/]*\.)?deltnecca\.goodbb\.net https?:\/\/([^\/]*\.)?delzelleto\.dl\.pl https?:\/\/([^\/]*\.)?demingpower\.com https?:\/\/([^\/]*\.)?denocel\.blogcu\.com https?:\/\/([^\/]*\.)?dental-guide\.org https?:\/\/([^\/]*\.)?dental\.gulfcoast\.edu https?:\/\/([^\/]*\.)?dentalplans-x\.com https?:\/\/([^\/]*\.)?deomnoou\.jconserv\.net https?:\/\/([^\/]*\.)?depamu\.com https?:\/\/([^\/]*\.)?depstore\.milan\.jp https?:\/\/([^\/]*\.)?derast\.com https?:\/\/([^\/]*\.)?derimc\.com https?:\/\/([^\/]*\.)?description\.hostonmars\.com https?:\/\/([^\/]*\.)?desent\.8tt\.org https?:\/\/([^\/]*\.)?design4italy\.org https?:\/\/([^\/]*\.)?designatchina\.com https?:\/\/([^\/]*\.)?designer-purses\.blogspot\.com https?:\/\/([^\/]*\.)?desk-teen-d\.blogspot\.com https?:\/\/([^\/]*\.)?desyrel\.4\.pl https?:\/\/([^\/]*\.)?detriot\.dtdns\.net https?:\/\/([^\/]*\.)?deutschland-heute\.de\.tl https?:\/\/([^\/]*\.)?devine-friend-hot-mom\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?dewall\.info https?:\/\/([^\/]*\.)?dg\.188info\.com https?:\/\/([^\/]*\.)?dgvy5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dial3\.szm\.sk https?:\/\/([^\/]*\.)?diamond73\.50webs\.com https?:\/\/([^\/]*\.)?dianchi\.dzsc\.com https?:\/\/([^\/]*\.)?diandongji\.dzsc\.com https?:\/\/([^\/]*\.)?dianganqi\.dzsc\.com https?:\/\/([^\/]*\.)?dianluban\.dzsc\.com https?:\/\/([^\/]*\.)?dianre\.dzsc\.com https?:\/\/([^\/]*\.)?dianrong\.dzsc\.com https?:\/\/([^\/]*\.)?dianweiqi\.dzsc\.com https?:\/\/([^\/]*\.)?dianyuan\.dzsc\.com https?:\/\/([^\/]*\.)?dianziguan\.dzsc\.com https?:\/\/([^\/]*\.)?dianzu\.dzsc\.com https?:\/\/([^\/]*\.)?diazepam\.47\.pl https?:\/\/([^\/]*\.)?diazepam\.skocz\.net https?:\/\/([^\/]*\.)?diazepam2\.forospace\.com https?:\/\/([^\/]*\.)?diazepams\.ru\.tf https?:\/\/([^\/]*\.)?dick-butkus-football-player\.protime\.in\.ua https?:\/\/([^\/]*\.)?dick-donkey-sucking-woman\.protime\.in\.ua https?:\/\/([^\/]*\.)?dick-fat-in-pussy\.medved\.od\.ua https?:\/\/([^\/]*\.)?dick-head-john-kerry\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?dick-hot-man-video\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?dicks-sporting-goods-web-site\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?didrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?didrex\.int\.tf https?:\/\/([^\/]*\.)?diebart\.asp2\.cz https?:\/\/([^\/]*\.)?diesite\.com https?:\/\/([^\/]*\.)?diet-pills-phentermine-pill-buy-cheap-online\.com https?:\/\/([^\/]*\.)?diet-pills911\.com https?:\/\/([^\/]*\.)?diffusersudan\.org https?:\/\/([^\/]*\.)?diflucanbuycheap\.top\.ms https?:\/\/([^\/]*\.)?diflucancheapbuy\.drop\.to https?:\/\/([^\/]*\.)?diflucancheapgeneric\.notrix\.net https?:\/\/([^\/]*\.)?diflucangeneric\.hey\.to https?:\/\/([^\/]*\.)?diflucangenericbuy\.hp\.ms https?:\/\/([^\/]*\.)?digilander\.libero\.it https?:\/\/([^\/]*\.)?digital-glamour\.com https?:\/\/([^\/]*\.)?digitalpoimt\.com https?:\/\/([^\/]*\.)?dildo-extreme-free-movie\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?dildo-in-guys-ass\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?dilhbi7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dionysios-r\.blogspot\.com https?:\/\/([^\/]*\.)?dir\.opank\.com https?:\/\/([^\/]*\.)?dirare\.com https?:\/\/([^\/]*\.)?directonlineguide\.com https?:\/\/([^\/]*\.)?dirty-blonde-teen\.gameover\.in\.ua https?:\/\/([^\/]*\.)?dirty-ru-lenta\.blogspot\.com https?:\/\/([^\/]*\.)?dirtyrhino-com-iy5ps48s\.blogspot\.com https?:\/\/([^\/]*\.)?dirtyrhino-com-rjrotse3\.blogspot\.com https?:\/\/([^\/]*\.)?discasegeta\.0moola\.com https?:\/\/([^\/]*\.)?discontinued-chanel-lipstick\.protime\.in\.ua https?:\/\/([^\/]*\.)?discount-femina-lingerie\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?discount-phentermine\.health-livening\.com https?:\/\/([^\/]*\.)?discount-phentermine\.presteert\.nl https?:\/\/([^\/]*\.)?discounted-medications\.com https?:\/\/([^\/]*\.)?discountphentermine\.livelog\.com https?:\/\/([^\/]*\.)?discussions\.csbsju\.edu https?:\/\/([^\/]*\.)?dissected-voice\.blogspot\.com https?:\/\/([^\/]*\.)?diuvw\.szm\.sk https?:\/\/([^\/]*\.)?diva-58\.site\.voila\.fr https?:\/\/([^\/]*\.)?divtab\.com https?:\/\/([^\/]*\.)?dixe-alayna\.blogspot\.com https?:\/\/([^\/]*\.)?dixiecuties-com-av\.blogspot\.com https?:\/\/([^\/]*\.)?dixiecuties-com-wpf1g2a\.blogspot\.com https?:\/\/([^\/]*\.)?dka2e\.nokedem\.com https?:\/\/([^\/]*\.)?dlaners\.blogspot\.com https?:\/\/([^\/]*\.)?dljs5\.szm\.sk https?:\/\/([^\/]*\.)?dltz4\.szm\.sk https?:\/\/([^\/]*\.)?dlwlh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dlzgn\.szm\.sk https?:\/\/([^\/]*\.)?dm-cqsf\.cn https?:\/\/([^\/]*\.)?dm-soft\.com https?:\/\/([^\/]*\.)?dmnft\.net https?:\/\/([^\/]*\.)?dnk-design\.com https?:\/\/([^\/]*\.)?do-ali\.blogspot\.com https?:\/\/([^\/]*\.)?do-hot-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?doctorpinkerton\.ifrance\.com https?:\/\/([^\/]*\.)?doenertreff\.de https?:\/\/([^\/]*\.)?dogdead\.50webs\.com https?:\/\/([^\/]*\.)?dogider-big-tit-round-a-p\.blogspot\.com https?:\/\/([^\/]*\.)?dogzilla30\.blogspot\.com https?:\/\/([^\/]*\.)?dohr\.joolo\.com https?:\/\/([^\/]*\.)?dokrichi\.forumculture\.net https?:\/\/([^\/]*\.)?dokuno-porn-clip\.blogspot\.com https?:\/\/([^\/]*\.)?dollmovies-com-e7lqyhq\.blogspot\.com https?:\/\/([^\/]*\.)?dom-or-dron\.jc\.pl https?:\/\/([^\/]*\.)?domdronno\.xa\.pl https?:\/\/([^\/]*\.)?dome-ebony-foot-herbies\.protime\.in\.ua https?:\/\/([^\/]*\.)?domelc4t\.dl\.pl https?:\/\/([^\/]*\.)?domest1co\.info https?:\/\/([^\/]*\.)?domestic0\.info https?:\/\/([^\/]*\.)?domnoor\.blogcu\.com https?:\/\/([^\/]*\.)?domorca\.darkbb\.com https?:\/\/([^\/]*\.)?dompasvi\.alkablog\.com https?:\/\/([^\/]*\.)?domrelou\.discutfree\.com https?:\/\/([^\/]*\.)?domtadom\.blogcu\.com https?:\/\/([^\/]*\.)?domtael\.dl\.pl https?:\/\/([^\/]*\.)?don-search\.com https?:\/\/([^\/]*\.)?dong-sheng\.com https?:\/\/([^\/]*\.)?dono-alaska\.blogspot\.com https?:\/\/([^\/]*\.)?doodlepets\.net https?:\/\/([^\/]*\.)?doormat\.ncedly\.be https?:\/\/([^\/]*\.)?dorank\.com https?:\/\/([^\/]*\.)?dorintop\.9999mb\.com https?:\/\/([^\/]*\.)?dotbusinessbroker\.info https?:\/\/([^\/]*\.)?dottorstranamore\.com https?:\/\/([^\/]*\.)?dotwirelessinternet\.info https?:\/\/([^\/]*\.)?double-anal-insertion\.gameover\.in\.ua https?:\/\/([^\/]*\.)?doubledrilled-com-ru\.blogspot\.com https?:\/\/([^\/]*\.)?douglasgenetic\.org https?:\/\/([^\/]*\.)?download-fisting-free-movie-pussy\.medved\.od\.ua https?:\/\/([^\/]*\.)?download-free-porn-clip-zone186\.blogspot\.com https?:\/\/([^\/]*\.)?download-free-porn-movie-bb-bb-h\.blogspot\.com https?:\/\/([^\/]*\.)?download-free-ringtonebso\.blogspot\.com https?:\/\/([^\/]*\.)?download-free-ringtonekdw\.blogspot\.com https?:\/\/([^\/]*\.)?download-free-ringtonekfb\.blogspot\.com https?:\/\/([^\/]*\.)?download-free-ringtoneoug\.blogspot\.com https?:\/\/([^\/]*\.)?download-free-ringtonesasd\.blogspot\.com https?:\/\/([^\/]*\.)?download-ringtonevnr\.blogspot\.com https?:\/\/([^\/]*\.)?downloadfreeringtonengp\.blogspot\.com https?:\/\/([^\/]*\.)?downsms\.blogbus\.com https?:\/\/([^\/]*\.)?dpfanatics-com-t7nqv\.blogspot\.com https?:\/\/([^\/]*\.)?dqezl\.szm\.sk https?:\/\/([^\/]*\.)?draghi\.ll11\.info https?:\/\/([^\/]*\.)?dragonballxxx-gratis\.19mb\.info https?:\/\/([^\/]*\.)?dragonmovies-dd2bm5sn\.blogspot\.com https?:\/\/([^\/]*\.)?dragonmovies-rwng8vm7j\.blogspot\.com https?:\/\/([^\/]*\.)?drbizzaro-com-r5\.blogspot\.com https?:\/\/([^\/]*\.)?drdos\.50webs\.org https?:\/\/([^\/]*\.)?dreamathk\.com https?:\/\/([^\/]*\.)?dreamatsh\.com https?:\/\/([^\/]*\.)?dreamhk\.org https?:\/\/([^\/]*\.)?dress-jacket\.haemati\.be https?:\/\/([^\/]*\.)?drithle\.com https?:\/\/([^\/]*\.)?driving-school\.hotmail\.ru https?:\/\/([^\/]*\.)?driving2school\.chat\.ru https?:\/\/([^\/]*\.)?dronaceldar\.darkbb\.com https?:\/\/([^\/]*\.)?dronc4tta\.blogcu\.com https?:\/\/([^\/]*\.)?droncaca\.blogcu\.com https?:\/\/([^\/]*\.)?dronchitr\.blogcu\.com https?:\/\/([^\/]*\.)?drondomrac\.bb-fr\.com https?:\/\/([^\/]*\.)?drondrontr\.zikforum\.com https?:\/\/([^\/]*\.)?dronladar\.discutfree\.com https?:\/\/([^\/]*\.)?dronladar\.dynamicforum\.net https?:\/\/([^\/]*\.)?dronrelco\.td\.pl https?:\/\/([^\/]*\.)?drownedmagenta\.50webs\.org https?:\/\/([^\/]*\.)?drug\.prtime\.ru https?:\/\/([^\/]*\.)?drunkgirls\.coz\.in https?:\/\/([^\/]*\.)?dry-skin\.boom\.ru https?:\/\/([^\/]*\.)?dry1skin\.chat\.ru https?:\/\/([^\/]*\.)?dscw0\.szm\.sk https?:\/\/([^\/]*\.)?dtmpdpxmsu-video\.blogspot\.com https?:\/\/([^\/]*\.)?du-alice\.blogspot\.com https?:\/\/([^\/]*\.)?duaroti\.50webs\.com https?:\/\/([^\/]*\.)?dub-dom-adu\.blogspot\.com https?:\/\/([^\/]*\.)?duckyporn-ifl4u28p\.blogspot\.com https?:\/\/([^\/]*\.)?ducpjo3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dudoctor\.com https?:\/\/([^\/]*\.)?dudubilz\.dl\.pl https?:\/\/([^\/]*\.)?dumtrric\.forumzen\.com https?:\/\/([^\/]*\.)?duncemoney\.com https?:\/\/([^\/]*\.)?dunham-hiking-boot\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?dup-xxxfolder-com\.blogspot\.com https?:\/\/([^\/]*\.)?dupiwu\.com https?:\/\/([^\/]*\.)?duptv\.szm\.sk https?:\/\/([^\/]*\.)?dushen\.net\.cn https?:\/\/([^\/]*\.)?dusts\.info https?:\/\/([^\/]*\.)?dutbm\.myfreewebhost\.org https?:\/\/([^\/]*\.)?duxbd\.myfreewebhost\.org https?:\/\/([^\/]*\.)?duxfhgz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dvd-vergini-economici-r\.host24h\.info https?:\/\/([^\/]*\.)?dvdunwritten\.toplog\.nl https?:\/\/([^\/]*\.)?dwaeaz-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?dwsyv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?dxjyb\.szm\.sk https?:\/\/([^\/]*\.)?dykzozqlpt-video\.blogspot\.com https?:\/\/([^\/]*\.)?dzb\.com\.cn https?:\/\/([^\/]*\.)?dzgzm\.cn https?:\/\/([^\/]*\.)?dzjp\.left-page\.com https?:\/\/([^\/]*\.)?dzjp\.zxvo\.com https?:\/\/([^\/]*\.)?dzsb\.com https?:\/\/([^\/]*\.)?dzsc\.com https?:\/\/([^\/]*\.)?e-dishnetworks\.com https?:\/\/([^\/]*\.)?e-fanyi\.org https?:\/\/([^\/]*\.)?e-holdem\.net https?:\/\/([^\/]*\.)?e\.kth\.se https?:\/\/([^\/]*\.)?e16\.info https?:\/\/([^\/]*\.)?e93\.iitalia\.com https?:\/\/([^\/]*\.)?eaby2\.szm\.sk https?:\/\/([^\/]*\.)?eacome\.com https?:\/\/([^\/]*\.)?eafg6\.szm\.sk https?:\/\/([^\/]*\.)?eaglechief\.com https?:\/\/([^\/]*\.)?eamon-fuck-it-video\.gameover\.in\.ua https?:\/\/([^\/]*\.)?eappf\.myfreewebhost\.org https?:\/\/([^\/]*\.)?earticlesonline\.com https?:\/\/([^\/]*\.)?easy-furniture\.org https?:\/\/([^\/]*\.)?easygals-com-h4\.blogspot\.com https?:\/\/([^\/]*\.)?easypic-com-if7pnmrbxd\.blogspot\.com https?:\/\/([^\/]*\.)?easypornstars-com-b8k4y\.blogspot\.com https?:\/\/([^\/]*\.)?easypornstars-com-subut\.blogspot\.com https?:\/\/([^\/]*\.)?easysail\.net\.cn https?:\/\/([^\/]*\.)?eating-free-lesbian-pussy\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?eating-lesbian-pussy\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?ebackground-checks\.com https?:\/\/([^\/]*\.)?ebdoc\.com https?:\/\/([^\/]*\.)?ebnjj\.info https?:\/\/([^\/]*\.)?ebony-free-woman\.medved\.od\.ua https?:\/\/([^\/]*\.)?ebony-fuck-tit\.medved\.od\.ua https?:\/\/([^\/]*\.)?ebony-horny-hot-woman\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?ebony-hot-outdoor\.protime\.in\.ua https?:\/\/([^\/]*\.)?ebony-info-photo-remember-sexy\.medved\.od\.ua https?:\/\/([^\/]*\.)?ebony-info-remember-tit\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?ebony-party-sex\.gameover\.in\.ua https?:\/\/([^\/]*\.)?ebony-porn-trailer\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?ebony-sex-com\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?ebony-teen-pic\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?ebony-teen-tgp\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?ebonyblack-net-gf\.blogspot\.com https?:\/\/([^\/]*\.)?ebonyblack-net-m3dy7kn\.blogspot\.com https?:\/\/([^\/]*\.)?ebonybooty\.wehostporno\.com https?:\/\/([^\/]*\.)?ebusiness-cards\.org https?:\/\/([^\/]*\.)?ecar-rentals\.com https?:\/\/([^\/]*\.)?eccellente\.info https?:\/\/([^\/]*\.)?ececu\.com https?:\/\/([^\/]*\.)?echayka\.com https?:\/\/([^\/]*\.)?eclexion\.net https?:\/\/([^\/]*\.)?eclissi-di-luna\.host24h\.info https?:\/\/([^\/]*\.)?ecomm1\.csug\.rochester\.edu https?:\/\/([^\/]*\.)?econtact-lens\.com https?:\/\/([^\/]*\.)?ed2k\.net\.ua https?:\/\/([^\/]*\.)?edasim\.com https?:\/\/([^\/]*\.)?eddiereva\.com https?:\/\/([^\/]*\.)?edetrali\.jconserv\.net https?:\/\/([^\/]*\.)?edomerna\.jconserv\.net https?:\/\/([^\/]*\.)?edonline\.ua\.edu https?:\/\/([^\/]*\.)?edqlzct\.myfreewebhost\.org https?:\/\/([^\/]*\.)?education\.beta\.edgewood\.edu https?:\/\/([^\/]*\.)?education\.uncc\.edu https?:\/\/([^\/]*\.)?education1degree\.chat\.ru https?:\/\/([^\/]*\.)?ee3\.be https?:\/\/([^\/]*\.)?eelive\.info https?:\/\/([^\/]*\.)?eenxn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ees\.ufl\.edu https?:\/\/([^\/]*\.)?eesg8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?eeshq\.com https?:\/\/([^\/]*\.)?eetop\.info https?:\/\/([^\/]*\.)?eevjgn7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?effexor-xr\.1\.p2l\.info https?:\/\/([^\/]*\.)?effexor\.b0ne\.com https?:\/\/([^\/]*\.)?egciz\.szm\.sk https?:\/\/([^\/]*\.)?egnadn-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?egnpgno\.myfreewebhost\.org https?:\/\/([^\/]*\.)?egoldhyip\.athost\.net https?:\/\/([^\/]*\.)?egoldhyip\.sitesfree\.com https?:\/\/([^\/]*\.)?egunteronline\.com https?:\/\/([^\/]*\.)?eightalya\.blogspot\.com https?:\/\/([^\/]*\.)?eighty-8088\.blogspot\.com https?:\/\/([^\/]*\.)?eijy7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ejeesf2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ejreoonster\.blogspot\.com https?:\/\/([^\/]*\.)?ejvyd\.fr33webhost\.com https?:\/\/([^\/]*\.)?ejyt9\.szm\.sk https?:\/\/([^\/]*\.)?ekajl\.fr33webhost\.com https?:\/\/([^\/]*\.)?ekjms\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ekttsaj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ekviceaia\.blogspot\.com https?:\/\/([^\/]*\.)?ekxkfyz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?el-ladies-com-m4ayb\.blogspot\.com https?:\/\/([^\/]*\.)?elacelal\.informe\.com https?:\/\/([^\/]*\.)?elbasbo\.dl\.pl https?:\/\/([^\/]*\.)?elbocboc\.bbgraf\.com https?:\/\/([^\/]*\.)?elbows-at\.blogspot\.com https?:\/\/([^\/]*\.)?elbtoy\.realpornstar\.net https?:\/\/([^\/]*\.)?elcnaac\.cultureforum\.net https?:\/\/([^\/]*\.)?electric-scooter\.hotmail\.ru https?:\/\/([^\/]*\.)?electric1scooter\.chat\.ru https?:\/\/([^\/]*\.)?electricscooterland\.com https?:\/\/([^\/]*\.)?elephantlist-com-hozhkwuac6\.blogspot\.com https?:\/\/([^\/]*\.)?elephantlist-com-kedi0pfbp\.blogspot\.com https?:\/\/([^\/]*\.)?elerc4t\.blogcu\.com https?:\/\/([^\/]*\.)?eleven-heaven0a\.blogspot\.com https?:\/\/([^\/]*\.)?elevtenl\.blogspot\.com https?:\/\/([^\/]*\.)?elishacuthbertfansite\.com https?:\/\/([^\/]*\.)?eliteclips-com-c0hwm3fji\.blogspot\.com https?:\/\/([^\/]*\.)?eliteclips-com-k5hkm6yi\.blogspot\.com https?:\/\/([^\/]*\.)?eliteclips-com-kzjz30a5k4\.blogspot\.com https?:\/\/([^\/]*\.)?elixirium\.ifrance\.com https?:\/\/([^\/]*\.)?eloloac\.bbgraf\.com https?:\/\/([^\/]*\.)?eloudar\.discutforum\.com https?:\/\/([^\/]*\.)?elovejob\.info https?:\/\/([^\/]*\.)?elpos\.szm\.sk https?:\/\/([^\/]*\.)?eltalchi\.bbfr\.net https?:\/\/([^\/]*\.)?eltalli\.zj\.pl https?:\/\/([^\/]*\.)?eltbuzel\.forumzen\.com https?:\/\/([^\/]*\.)?eltcer\.winnerforum\.net https?:\/\/([^\/]*\.)?eltgetric\.uy\.pl https?:\/\/([^\/]*\.)?eltrelboc\.bbfr\.net https?:\/\/([^\/]*\.)?eltrical\.uy\.pl https?:\/\/([^\/]*\.)?eltroboc\.lolforum\.net https?:\/\/([^\/]*\.)?eltrolpas\.winnerforum\.net https?:\/\/([^\/]*\.)?elttaacel\.heavenforum\.com https?:\/\/([^\/]*\.)?elttaacel\.highforum\.net https?:\/\/([^\/]*\.)?elttrocpas\.discutforum\.com https?:\/\/([^\/]*\.)?elwg0\.szm\.sk https?:\/\/([^\/]*\.)?elysium-ringtonebub\.blogspot\.com https?:\/\/([^\/]*\.)?elysium-ringtonemzb\.blogspot\.com https?:\/\/([^\/]*\.)?elzelchi\.cultureforum\.net https?:\/\/([^\/]*\.)?emails\.ncedly\.be https?:\/\/([^\/]*\.)?emea-consulting\.net https?:\/\/([^\/]*\.)?emily\.slyip\.com https?:\/\/([^\/]*\.)?eminem-suck-my-dick\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?eminem-veyb\.blogspot\.com https?:\/\/([^\/]*\.)?eminen-lyric-ass-like-that\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?empire-holdem\.com https?:\/\/([^\/]*\.)?empire-holdem\.net https?:\/\/([^\/]*\.)?empire-holdem\.us https?:\/\/([^\/]*\.)?empire-poker\.black-poker\.com https?:\/\/([^\/]*\.)?empirepoker\.u288\.com https?:\/\/([^\/]*\.)?emxk0\.szm\.sk https?:\/\/([^\/]*\.)?ena-free-show\.net https?:\/\/([^\/]*\.)?enchanted1312\.blogspot\.com https?:\/\/([^\/]*\.)?end14april\.ifrance\.com https?:\/\/([^\/]*\.)?enema-fetish-free-picture\.gameover\.in\.ua https?:\/\/([^\/]*\.)?energo\.us https?:\/\/([^\/]*\.)?enetdrugsonline\.org https?:\/\/([^\/]*\.)?enfoldrevel\.epinoy\.com https?:\/\/([^\/]*\.)?engineerin2degre\.chat\.ru https?:\/\/([^\/]*\.)?engs\.info https?:\/\/([^\/]*\.)?enpresse\.1\.p2l\.info https?:\/\/([^\/]*\.)?enteworld\.com https?:\/\/([^\/]*\.)?eoglu\.myfreewebhost\.org https?:\/\/([^\/]*\.)?eour8\.szm\.sk https?:\/\/([^\/]*\.)?ephedra\.269g\.net https?:\/\/([^\/]*\.)?ephedraproduct\.seesaa\.net https?:\/\/([^\/]*\.)?epiqq\.myfreewebhost\.org https?:\/\/([^\/]*\.)?epointer\.freewebpage\.org https?:\/\/([^\/]*\.)?eprom-dresses\.com https?:\/\/([^\/]*\.)?epxxw\.szm\.sk https?:\/\/([^\/]*\.)?erasser\.8tt\.org https?:\/\/([^\/]*\.)?erbocco\.discutforum\.com https?:\/\/([^\/]*\.)?erc4tget\.blogcu\.com https?:\/\/([^\/]*\.)?erdomrol\.heavenforum\.com https?:\/\/([^\/]*\.)?erdomrol\.highforum\.net https?:\/\/([^\/]*\.)?ereaa\.myfreewebhost\.org https?:\/\/([^\/]*\.)?erealtystore\.com https?:\/\/([^\/]*\.)?erelleta\.forumzen\.com https?:\/\/([^\/]*\.)?eremat\.com https?:\/\/([^\/]*\.)?erjiguan\.dzsc\.com https?:\/\/([^\/]*\.)?erlitroc\.xa\.pl https?:\/\/([^\/]*\.)?ernvmf7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?erotic-gay-male-sex-story\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?erotic-story-fem-dom\.gameover\.in\.ua https?:\/\/([^\/]*\.)?ertral\.alkablog\.com https?:\/\/([^\/]*\.)?erw1r\.info https?:\/\/([^\/]*\.)?escher\.isis\.vanderbilt\.edu https?:\/\/([^\/]*\.)?eseo\.cn https?:\/\/([^\/]*\.)?esgic\.1\.p2l\.info https?:\/\/([^\/]*\.)?eshilzet\.forumzen\.com https?:\/\/([^\/]*\.)?esino\.info https?:\/\/([^\/]*\.)?esiti-gara\.hostzz\.info https?:\/\/([^\/]*\.)?esjpd\.szm\.sk https?:\/\/([^\/]*\.)?esmpa\.com https?:\/\/([^\/]*\.)?esportswave\.com https?:\/\/([^\/]*\.)?esraj\.com https?:\/\/([^\/]*\.)?esseiwer\.dl\.pl https?:\/\/([^\/]*\.)?estarcollector\.blogspot\.com https?:\/\/([^\/]*\.)?etac4\.szm\.sk https?:\/\/([^\/]*\.)?etcoq\.szm\.sk https?:\/\/([^\/]*\.)?etgelcca\.forumzen\.com https?:\/\/([^\/]*\.)?ethnicpassion-com-db5\.blogspot\.com https?:\/\/([^\/]*\.)?ethnicpassion-com-ik80lyfnd\.blogspot\.com https?:\/\/([^\/]*\.)?ethnicpassion-com-iqa3gt\.blogspot\.com https?:\/\/([^\/]*\.)?ethnicpassion-com-itw\.blogspot\.com https?:\/\/([^\/]*\.)?etjhechi\.forumzen\.com https?:\/\/([^\/]*\.)?etjhetrd\.forumzen\.com https?:\/\/([^\/]*\.)?etkrudom\.forumzen\.com https?:\/\/([^\/]*\.)?etlitvir\.forumzen\.com https?:\/\/([^\/]*\.)?etlurlir\.forumzen\.com https?:\/\/([^\/]*\.)?etmuhlie\.forumzen\.com https?:\/\/([^\/]*\.)?etnuidet\.forumzen\.com https?:\/\/([^\/]*\.)?etofas\.com https?:\/\/([^\/]*\.)?etrart\.com https?:\/\/([^\/]*\.)?etrewlia\.forumzen\.com https?:\/\/([^\/]*\.)?etshalir\.forumzen\.com https?:\/\/([^\/]*\.)?ettamlet\.forumzen\.com https?:\/\/([^\/]*\.)?ettimera\.forumzen\.com https?:\/\/([^\/]*\.)?etwhiett\.forumzen\.com https?:\/\/([^\/]*\.)?etwhiolo\.forumzen\.com https?:\/\/([^\/]*\.)?etzvg\.myfreewebhost\.org https?:\/\/([^\/]*\.)?etzyrpk\.myfreewebhost\.org https?:\/\/([^\/]*\.)?eubaspro\.com https?:\/\/([^\/]*\.)?eudrayv\.blogspot\.com https?:\/\/([^\/]*\.)?eueyniqott-video\.blogspot\.com https?:\/\/([^\/]*\.)?euomtrna\.jconserv\.net https?:\/\/([^\/]*\.)?eurosexparties-com-jezun\.blogspot\.com https?:\/\/([^\/]*\.)?eurosexparties-com-mmnl2m\.blogspot\.com https?:\/\/([^\/]*\.)?eva-irina\.isuisse\.com https?:\/\/([^\/]*\.)?evamiee\.myfreewebhost\.org https?:\/\/([^\/]*\.)?eveqx\.myfreewebhost\.org https?:\/\/([^\/]*\.)?everywhere-com-tpovy8exl\.blogspot\.com https?:\/\/([^\/]*\.)?evfegl9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?evhp2\.szm\.sk https?:\/\/([^\/]*\.)?evil-gummiworm\.blogspot\.com https?:\/\/([^\/]*\.)?ewdnqb4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?exchange-lingerie-link-womens\.gameover\.in\.ua https?:\/\/([^\/]*\.)?exciting-casino\.com https?:\/\/([^\/]*\.)?exhuq\.myfreewebhost\.org https?:\/\/([^\/]*\.)?extrarx\.kvkb\.com https?:\/\/([^\/]*\.)?extremeapril-com-adsm\.blogspot\.com https?:\/\/([^\/]*\.)?extremeapril-com-woje\.blogspot\.com https?:\/\/([^\/]*\.)?extremeapril-dhx1z\.blogspot\.com https?:\/\/([^\/]*\.)?ez\.asn\.und\.edu https?:\/\/([^\/]*\.)?ezjor\.com https?:\/\/([^\/]*\.)?ezkes\.com https?:\/\/([^\/]*\.)?ezxwc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?f-download-free-sex-video\.blogspot\.com https?:\/\/([^\/]*\.)?f-z-a\.com https?:\/\/([^\/]*\.)?faadney\.dl\.pl https?:\/\/([^\/]*\.)?fabrizio-corona\.freehostss\.info https?:\/\/([^\/]*\.)?face-lick-lickable-licker-tongue\.gameover\.in\.ua https?:\/\/([^\/]*\.)?facial-abuse--com\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?facial-hair-remover\.gameover\.in\.ua https?:\/\/([^\/]*\.)?facial-paralysis-treatment\.gameover\.in\.ua https?:\/\/([^\/]*\.)?facial-plastic-surgery-manhattan\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?facial-whore\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?faculty\.etsu\.edu https?:\/\/([^\/]*\.)?faculty\.hope\.edu https?:\/\/([^\/]*\.)?faculty\.oxy\.edu https?:\/\/([^\/]*\.)?faculty\.ugf\.edu https?:\/\/([^\/]*\.)?faculty\.whatcom\.ctc\.edu https?:\/\/([^\/]*\.)?facweb\.cs\.depaul\.edu https?:\/\/([^\/]*\.)?fadianji\.dzsc\.com https?:\/\/([^\/]*\.)?fagin\.info https?:\/\/([^\/]*\.)?fairy\.8888mb\.com https?:\/\/([^\/]*\.)?faleake\.dl\.pl https?:\/\/([^\/]*\.)?falling-anvil\.blogspot\.com https?:\/\/([^\/]*\.)?family-viagra\.com https?:\/\/([^\/]*\.)?famouspornstars-com-o020ss18d8\.blogspot\.com https?:\/\/([^\/]*\.)?famvir\.1\.p2l\.info https?:\/\/([^\/]*\.)?fangdaqi\.dzsc\.com https?:\/\/([^\/]*\.)?fantasticnudes-com-bol80a\.blogspot\.com https?:\/\/([^\/]*\.)?fantasticnudes-com-by8gook\.blogspot\.com https?:\/\/([^\/]*\.)?fantasticnudes-com-qic\.blogspot\.com https?:\/\/([^\/]*\.)?fantasticnudes-com-r60\.blogspot\.com https?:\/\/([^\/]*\.)?fantasy-hand-job-teen\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?farmius\.org https?:\/\/([^\/]*\.)?fascination\.my10gb\.com https?:\/\/([^\/]*\.)?fasnty\.com https?:\/\/([^\/]*\.)?fasoft\.com\.cn https?:\/\/([^\/]*\.)?fast-loaneqh\.blogspot\.com https?:\/\/([^\/]*\.)?fastmovers\.org https?:\/\/([^\/]*\.)?fat-banging\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?fat-blonde-woman\.gameover\.in\.ua https?:\/\/([^\/]*\.)?fat-fuck-video\.protime\.in\.ua https?:\/\/([^\/]*\.)?fat-porn-clip-infoecm\.blogspot\.com https?:\/\/([^\/]*\.)?fat-porn-clip-infomyi\.blogspot\.com https?:\/\/([^\/]*\.)?fat-tgp-com-ee\.blogspot\.com https?:\/\/([^\/]*\.)?fat-tgp-com-g654ywug\.blogspot\.com https?:\/\/([^\/]*\.)?fatfucks-com-kdy41nn4fr\.blogspot\.com https?:\/\/([^\/]*\.)?fatfucks-com-t232q4\.blogspot\.com https?:\/\/([^\/]*\.)?fatfucks-com-tf0v115rm\.blogspot\.com https?:\/\/([^\/]*\.)?fatfucks-com-thr8\.blogspot\.com https?:\/\/([^\/]*\.)?fathut-com-db66nw2a\.blogspot\.com https?:\/\/([^\/]*\.)?fathut-com-hqloar2t8\.blogspot\.com https?:\/\/([^\/]*\.)?fattythumbs-com-el24t2\.blogspot\.com https?:\/\/([^\/]*\.)?fattythumbs-com-iq1\.blogspot\.com https?:\/\/([^\/]*\.)?fau75\.blogspot\.com https?:\/\/([^\/]*\.)?favorite-casino\.com https?:\/\/([^\/]*\.)?fawninglace\.freehostingz\.com https?:\/\/([^\/]*\.)?fbcjr\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fbugy\.szm\.sk https?:\/\/([^\/]*\.)?fcpx5\.szm\.sk https?:\/\/([^\/]*\.)?fcuml\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fcup3\.szm\.sk https?:\/\/([^\/]*\.)?fdjcz\.sunp\.com https?:\/\/([^\/]*\.)?fdxyp\.szm\.sk https?:\/\/([^\/]*\.)?fe-algebra\.blogspot\.com https?:\/\/([^\/]*\.)?fe-whateve\.blogspot\.com https?:\/\/([^\/]*\.)?fedems\.com https?:\/\/([^\/]*\.)?feeltime\.cn https?:\/\/([^\/]*\.)?feeltime\.com https?:\/\/([^\/]*\.)?fehpks4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?feidenfurniture\.com https?:\/\/([^\/]*\.)?fejwh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fem-dom-art-and-drawing\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?female-ass-worship\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?female-condom-sex\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?female-v\.1\.p2l\.info https?:\/\/([^\/]*\.)?femdog\.blogspot\.com https?:\/\/([^\/]*\.)?feq-tugjobs-com\.blogspot\.com https?:\/\/([^\/]*\.)?ferda111\.php5\.cz https?:\/\/([^\/]*\.)?ferer\.superprovider\.de https?:\/\/([^\/]*\.)?feretuc\.forumculture\.net https?:\/\/([^\/]*\.)?ferrarimaser\.info https?:\/\/([^\/]*\.)?fest-frat-fuck\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?fetish-club-in-ipswitch-uk\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?fetish-hardcore-lesbian-more\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?fetish-heel-high-in-nylon-pretty-toe\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?fetish-pantie-white\.protime\.in\.ua https?:\/\/([^\/]*\.)?fetus-free-sex-video-l\.blogspot\.com https?:\/\/([^\/]*\.)?ffhi7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fflive\.info https?:\/\/([^\/]*\.)?fge-teens-links-0\.blogspot\.com https?:\/\/([^\/]*\.)?fghrf\.8888mb\.com https?:\/\/([^\/]*\.)?fgvan\.info https?:\/\/([^\/]*\.)?fgvzq\.szm\.sk https?:\/\/([^\/]*\.)?fhbi5\.szm\.sk https?:\/\/([^\/]*\.)?fhmms\.szm\.sk https?:\/\/([^\/]*\.)?fhwl-com-dy1tbi5l\.blogspot\.com https?:\/\/([^\/]*\.)?fhwl-com-mn8ni\.blogspot\.com https?:\/\/([^\/]*\.)?fhwl-com-wc\.blogspot\.com https?:\/\/([^\/]*\.)?fhwl-com-wgrog\.blogspot\.com https?:\/\/([^\/]*\.)?fibiger\.org https?:\/\/([^\/]*\.)?fifa2007it\.org https?:\/\/([^\/]*\.)?fihqquj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?filipina-lesbian-teen\.gameover\.in\.ua https?:\/\/([^\/]*\.)?fillchill\.mybbland\.com https?:\/\/([^\/]*\.)?film-da-scaricare\.host24h\.info https?:\/\/([^\/]*\.)?finalteens-com-c6o0080y\.blogspot\.com https?:\/\/([^\/]*\.)?finalteens-com-kpngsoxf\.blogspot\.com https?:\/\/([^\/]*\.)?finanziamento-on-line\.19mb\.info https?:\/\/([^\/]*\.)?finanziamento-personale\.hostzz\.info https?:\/\/([^\/]*\.)?finanziamento-treviso\.host24h\.info https?:\/\/([^\/]*\.)?findbabychick\.info https?:\/\/([^\/]*\.)?findbabygirl\.info https?:\/\/([^\/]*\.)?findvic\.com https?:\/\/([^\/]*\.)?fine-lingerie-online-sexy\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?finger-fuck-clip\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?fioricet\.1\.p2l\.info https?:\/\/([^\/]*\.)?fioricet\.47\.pl https?:\/\/([^\/]*\.)?fioricet\.edu\.tf https?:\/\/([^\/]*\.)?fioricet\.hav\.pl https?:\/\/([^\/]*\.)?fioricet\.skocz\.net https?:\/\/([^\/]*\.)?fioricetrx\.weboficial\.com https?:\/\/([^\/]*\.)?fioricets\.blogspot\.com https?:\/\/([^\/]*\.)?firejedi\.blogspot\.com https?:\/\/([^\/]*\.)?first-free-fuck-time-video\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?first-lesbian-experience-story\.gameover\.in\.ua https?:\/\/([^\/]*\.)?first-lesbian-video-xxx\.protime\.in\.ua https?:\/\/([^\/]*\.)?first-porn\.futureblog\.org https?:\/\/([^\/]*\.)?firstchristianbank\.info https?:\/\/([^\/]*\.)?firstdrugstorezone\.info https?:\/\/([^\/]*\.)?firstfriends\.us https?:\/\/([^\/]*\.)?firsthorizonmtg\.com https?:\/\/([^\/]*\.)?firstnightcharleston\.com https?:\/\/([^\/]*\.)?firsttimeauditions-com-asq5m\.blogspot\.com https?:\/\/([^\/]*\.)?firsttimeauditions-com-gxs\.blogspot\.com https?:\/\/([^\/]*\.)?fishdor\.joolo\.com https?:\/\/([^\/]*\.)?fishing-rod\.247ihost\.com https?:\/\/([^\/]*\.)?fishing-rod\.hostpresso\.com https?:\/\/([^\/]*\.)?fishing-rod\.joolo\.com https?:\/\/([^\/]*\.)?fishins\.247ihost\.com https?:\/\/([^\/]*\.)?fishman\.freewebhosting360\.com https?:\/\/([^\/]*\.)?fishmpegs-com-oet5\.blogspot\.com https?:\/\/([^\/]*\.)?fishmpegs-com-r5\.blogspot\.com https?:\/\/([^\/]*\.)?fishmpegs-com-r87f7ui\.blogspot\.com https?:\/\/([^\/]*\.)?fisting-gay-movie\.gameover\.in\.ua https?:\/\/([^\/]*\.)?fisting-group-sex\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?fisting-lesbian-movie\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?fisting-lesson-maya\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?fistinglessons-com-dmskwfs\.blogspot\.com https?:\/\/([^\/]*\.)?fistinglessons-com-i03p\.blogspot\.com https?:\/\/([^\/]*\.)?fitofarm\.com https?:\/\/([^\/]*\.)?fitvzj-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?fjp\.left-page\.com https?:\/\/([^\/]*\.)?fjp\.zxvo\.com https?:\/\/([^\/]*\.)?fkcvlna\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fkvvp\.szm\.sk https?:\/\/([^\/]*\.)?flandra\.php5\.cz https?:\/\/([^\/]*\.)?flawformed\.hostonmars\.com https?:\/\/([^\/]*\.)?flexeril\.1\.p2l\.info https?:\/\/([^\/]*\.)?flextra\.1\.p2l\.info https?:\/\/([^\/]*\.)?flkkmex\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fllood\.blogspot\.com https?:\/\/([^\/]*\.)?fllwlv6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?flnet\.org https?:\/\/([^\/]*\.)?flonase\.1\.p2l\.info https?:\/\/([^\/]*\.)?flooring-guide\.org https?:\/\/([^\/]*\.)?floridamortgage-x\.com https?:\/\/([^\/]*\.)?floridian-love\.blogspot\.com https?:\/\/([^\/]*\.)?flower\.hostonmars\.com https?:\/\/([^\/]*\.)?flowerdive\.info https?:\/\/([^\/]*\.)?flqcjnw\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fluffy\.hostcroc\.com https?:\/\/([^\/]*\.)?fluoxetine\.1\.p2l\.info https?:\/\/([^\/]*\.)?fnhtgggv\.t35\.com https?:\/\/([^\/]*\.)?fnxsj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?foecedh3artbrat\.blogspot\.com https?:\/\/([^\/]*\.)?foedu-de-solnil\.blogspot\.com https?:\/\/([^\/]*\.)?folast\.com https?:\/\/([^\/]*\.)?folcan\.my10gb\.com https?:\/\/([^\/]*\.)?fondi-italiano\.hostzz\.info https?:\/\/([^\/]*\.)?for-whorevideos-com\.blogspot\.com https?:\/\/([^\/]*\.)?forbestcare\.info https?:\/\/([^\/]*\.)?forensic1nursing\.chat\.ru https?:\/\/([^\/]*\.)?forex\.fasthost\.pl https?:\/\/([^\/]*\.)?fork-hief\.ibelgique\.com https?:\/\/([^\/]*\.)?formulam\.net https?:\/\/([^\/]*\.)?fortune-slots\.com https?:\/\/([^\/]*\.)?forum\.kharkiv\.edu https?:\/\/([^\/]*\.)?fos-sologals-com\.blogspot\.com https?:\/\/([^\/]*\.)?foto-sabrina-ferilli\.host24h\.info https?:\/\/([^\/]*\.)?foxeykie\.iespana\.es https?:\/\/([^\/]*\.)?fozq6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fpa7kctb\.t35\.com https?:\/\/([^\/]*\.)?fqred\.com https?:\/\/([^\/]*\.)?fragolla\.blogspot\.com https?:\/\/([^\/]*\.)?frbarber\.dl\.pl https?:\/\/([^\/]*\.)?frbracco\.dl\.pl https?:\/\/([^\/]*\.)?freakthumbs-com-bp\.blogspot\.com https?:\/\/([^\/]*\.)?freakthumbs-com-hcmkk\.blogspot\.com https?:\/\/([^\/]*\.)?frebnet\.com https?:\/\/([^\/]*\.)?fredd0\.info https?:\/\/([^\/]*\.)?free-access\.freeinsite\.net https?:\/\/([^\/]*\.)?free-adult-porn-clip-info43c\.blogspot\.com https?:\/\/([^\/]*\.)?free-adult-porn-clip-infopqk\.blogspot\.com https?:\/\/([^\/]*\.)?free-amateur-hardcore-pic\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-amateur-submitted-photo\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-amateur-video-e2843\.blogspot\.com https?:\/\/([^\/]*\.)?free-anal-blonde-sex-pic\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-anal-porn-clip\.gameover\.in\.ua https?:\/\/([^\/]*\.)?free-anal-xxx-clip\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-anime-porn-clip-info6tn\.blogspot\.com https?:\/\/([^\/]*\.)?free-anime-porn-clips-newsyby\.blogspot\.com https?:\/\/([^\/]*\.)?free-asian-lesbian-sex-video\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-bbw-porn-clip-blog4wm\.blogspot\.com https?:\/\/([^\/]*\.)?free-big-ass-porn\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-big-boob-porn-movie\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-big-boob\.gameover\.in\.ua https?:\/\/([^\/]*\.)?free-bizarre-insertion-pic\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-bizarre-porn-pic\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-black-amateur\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-black-porn-clip-blogo7t\.blogspot\.com https?:\/\/([^\/]*\.)?free-black-porn-movie-kebi\.blogspot\.com https?:\/\/([^\/]*\.)?free-black-porn-video-clip-newsjqj\.blogspot\.com https?:\/\/([^\/]*\.)?free-busty-asian-movie\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-busty-blonde-pic\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-busty-porn-movie\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-busty-redhead-pic\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-butt-fucking-video\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-cartoon-porn-clip-zoneikt\.blogspot\.com https?:\/\/([^\/]*\.)?free-cartoon-porn-clip-zonewpm\.blogspot\.com https?:\/\/([^\/]*\.)?free-celebrity-porn-clip-infowuz\.blogspot\.com https?:\/\/([^\/]*\.)?free-celebrity-porn-video-bo\.blogspot\.com https?:\/\/([^\/]*\.)?free-chubby-girl-pic\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-cock-sucking-slut-video\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-college-fuck-fest-gallery\.gameover\.in\.ua https?:\/\/([^\/]*\.)?free-cum-blow-job-gallery\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-cum-in-mouth-video\.gameover\.in\.ua https?:\/\/([^\/]*\.)?free-cum-swap-video\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-ebony-porn-clip-zonek7c\.blogspot\.com https?:\/\/([^\/]*\.)?free-ebony-porn-clip-zonelcy\.blogspot\.com https?:\/\/([^\/]*\.)?free-ebony-pussy-pic\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-ebony-sex-video-di\.blogspot\.com https?:\/\/([^\/]*\.)?free-fat-porn-clip-infotno\.blogspot\.com https?:\/\/([^\/]*\.)?free-fem-dom-thumb\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-female-orgasm-video-bb-bb-h\.blogspot\.com https?:\/\/([^\/]*\.)?free-filipina-sex-movie\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-first-time-lesbian-sex-story\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-fisting-mpeg\.gameover\.in\.ua https?:\/\/([^\/]*\.)?free-fisting-sex-video\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-fucking-bitch\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-fucking-gallery-hardcore\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-fucking-sex-porn-site\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-full-length-porn-mov-bb-bb-w\.blogspot\.com https?:\/\/([^\/]*\.)?free-gang-bang-sample\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-gay-hunk-male-movie-muscled-stud-video\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-gay-muscle\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-gay-picture-sex\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-gay-porn-clips-info35a\.blogspot\.com https?:\/\/([^\/]*\.)?free-gay-porn-movie-clip-bloglor\.blogspot\.com https?:\/\/([^\/]*\.)?free-gay-porn-movie-p-d-h\.blogspot\.com https?:\/\/([^\/]*\.)?free-gay-porn-video-clip-newsa83\.blogspot\.com https?:\/\/([^\/]*\.)?free-gay-porn-video-p-v-p\.blogspot\.com https?:\/\/([^\/]*\.)?free-gay-porn-web-site\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-gay-sex-movie-bb-bb-s\.blogspot\.com https?:\/\/([^\/]*\.)?free-gay-sex-teen-trailer\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-gay-trailer\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-granny-lesbian\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-granny-movie-old\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-granny-pic-woman\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-group-lesbian-preview-sex-video\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-hand-job-movie-bb-bb-h\.blogspot\.com https?:\/\/([^\/]*\.)?free-hand-job-video-clip-bb-bb-c\.blogspot\.com https?:\/\/([^\/]*\.)?free-hardcore-movie-gallery-xxx\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-hardcore-porn-clip-blog07a\.blogspot\.com https?:\/\/([^\/]*\.)?free-hardcore-porn-clip-blogi4k\.blogspot\.com https?:\/\/([^\/]*\.)?free-hardcore-porn-star-picture\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-hardcore-sex-mpeg\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-heel-high-leg-pic-stilettos-stocking\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-homemade-porn-clip-news22n\.blogspot\.com https?:\/\/([^\/]*\.)?free-homemade-porn-clip-news7ro\.blogspot\.com https?:\/\/([^\/]*\.)?free-hot-blonde-nude-pic\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-hot-leg-nude-wallpaper-woman\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-hot-mom\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-hot-web-cam-video-h-s-f\.blogspot\.com https?:\/\/([^\/]*\.)?free-huge-black-gay-cock\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-in-lesbian-movie-nylons\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-indian-porn-clip-infok6x\.blogspot\.com https?:\/\/([^\/]*\.)?free-interracial-sex-video-ko\.blogspot\.com https?:\/\/([^\/]*\.)?free-latin-ass\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-lesbian-cam-chat\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-lesbian-clip-zuxi\.blogspot\.com https?:\/\/([^\/]*\.)?free-lesbian-hentai-movie\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-lesbian-licking-pic\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-lesbian-mature-sex-video-young\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-lesbian-movie-gjqvl\.blogspot\.com https?:\/\/([^\/]*\.)?free-lesbian-porn-clips-blogagm\.blogspot\.com https?:\/\/([^\/]*\.)?free-lesbian-porn-video-clip-newsidt\.blogspot\.com https?:\/\/([^\/]*\.)?free-lesbian-video-a7e8t\.blogspot\.com https?:\/\/([^\/]*\.)?free-lesbian-xxx-picture\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-long-porn-clip-info2fo\.blogspot\.com https?:\/\/([^\/]*\.)?free-long-porn-clip-info7pr\.blogspot\.com https?:\/\/([^\/]*\.)?free-long-porn-movie-clip-blogxn2\.blogspot\.com https?:\/\/([^\/]*\.)?free-long-porn-movie-clip-zoneq4f\.blogspot\.com https?:\/\/([^\/]*\.)?free-long-porn-video-wi\.blogspot\.com https?:\/\/([^\/]*\.)?free-male-bisexual-porn\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-mature-porn-clip-zone5bz\.blogspot\.com https?:\/\/([^\/]*\.)?free-mature-sex-clip\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-mature-sex-story\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-mature-thumbnail-post\.gameover\.in\.ua https?:\/\/([^\/]*\.)?free-milf-porn-clip-zonenqn\.blogspot\.com https?:\/\/([^\/]*\.)?free-milf-video-bb-bb-n\.blogspot\.com https?:\/\/([^\/]*\.)?free-mmf-bisex\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-naked-mature-lady\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?free-nude-bitch\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-nude-blonde-gallery\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-older-woman-fucking\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-online-poker-000\.biz https?:\/\/([^\/]*\.)?free-orgasm-clip-supi\.blogspot\.com https?:\/\/([^\/]*\.)?free-paris-hilton-porn-clip-infolah\.blogspot\.com https?:\/\/([^\/]*\.)?free-personal-gay-links-tommys-favorite\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-pic-of-big-dicks\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-pic-of-busty-babes\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-pic-of-woman-kissing\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-picture-hardcore-anal\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-picture-hardcore-anal\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-picture-huge-clit\.protime\.in\.ua https?:\/\/([^\/]*\.)?free-porn-chwd\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-clip-nep\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-clip-trailer-infog42\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-clip-zoneil5\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-clip-zonek61\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-clip-zoneu7t\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-clips-newsid3\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-movie-to0r5\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-movie-zet\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-psp-video-po\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-sample-clip-infodwd\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-sample-clip-newsb26\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-sex-clip-zoneavj\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-star-movie-bb-bb-h\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-star-video-clip-blog81e\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-video-clip-info7km\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-video-clip-infoixk\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-video-clip-sample-newsw3t\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-video-clips-infooem\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-video-porn-clip-blogiep\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-video-porn-clip-zonepqd\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn-video-puz\.blogspot\.com https?:\/\/([^\/]*\.)?free-porn\.xa\.pl https?:\/\/([^\/]*\.)?free-pussy-fucking-movie\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?free-ringtones\.269g\.net https?:\/\/([^\/]*\.)?free-ringtones\.aqhhhh\.info https?:\/\/([^\/]*\.)?free-ringtoneten\.blogspot\.com https?:\/\/([^\/]*\.)?free-sex-clip-ceb\.blogspot\.com https?:\/\/([^\/]*\.)?free-sex-movie-pow\.blogspot\.com https?:\/\/([^\/]*\.)?free-sex-video-clip-kog\.blogspot\.com https?:\/\/([^\/]*\.)?free-sex-video-hup\.blogspot\.com https?:\/\/([^\/]*\.)?free-sex-video\.hostithere\.org https?:\/\/([^\/]*\.)?free-sexy-leg-video\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-shemale-fucking-woman-movie\.medved\.od\.ua https?:\/\/([^\/]*\.)?free-shemale-movie-w-r-s\.blogspot\.com https?:\/\/([^\/]*\.)?free-skin\.newmail\.ru https?:\/\/([^\/]*\.)?free-skin\.pochta\.ru https?:\/\/([^\/]*\.)?free-spase\.info https?:\/\/([^\/]*\.)?free-sprint-ringtoneija\.blogspot\.com https?:\/\/([^\/]*\.)?free-sprint-ringtonesrha\.blogspot\.com https?:\/\/([^\/]*\.)?free-t-mobile-ringtonehvh\.blogspot\.com https?:\/\/([^\/]*\.)?free-teen-movie-cock-sucking\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?free-teen-porn-clip-blogpmw\.blogspot\.com https?:\/\/([^\/]*\.)?free-teen-porn-clip-infohxv\.blogspot\.com https?:\/\/([^\/]*\.)?free-teen-porn-video-clip-newsi5v\.blogspot\.com https?:\/\/([^\/]*\.)?free-teens-porn-com-wod\.blogspot\.com https?:\/\/([^\/]*\.)?free-video-sex-chat-ki\.blogspot\.com https?:\/\/([^\/]*\.)?free-xxx-amateur-web-cam\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free-xxx-porn-clip-infoibv\.blogspot\.com https?:\/\/([^\/]*\.)?free-xxx-porn-video-clip-infopij\.blogspot\.com https?:\/\/([^\/]*\.)?free-young-lesbian-movie\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?free2peek-com-c1iicr\.blogspot\.com https?:\/\/([^\/]*\.)?free2peek-com-co8g24x0ee\.blogspot\.com https?:\/\/([^\/]*\.)?free2peek-com-gi6v\.blogspot\.com https?:\/\/([^\/]*\.)?free_skin\.chat\.ru https?:\/\/([^\/]*\.)?freebigmovies-com-b25i040z\.blogspot\.com https?:\/\/([^\/]*\.)?freebigmovies-com-bxf440\.blogspot\.com https?:\/\/([^\/]*\.)?freebigmovies-com-rst\.blogspot\.com https?:\/\/([^\/]*\.)?freebloger\.com https?:\/\/([^\/]*\.)?freecooktop\.info https?:\/\/([^\/]*\.)?freedirectoryv\.com https?:\/\/([^\/]*\.)?freeforumbuilder\.com https?:\/\/([^\/]*\.)?freegonzo-com-du\.blogspot\.com https?:\/\/([^\/]*\.)?freegonzo-com-e8n\.blogspot\.com https?:\/\/([^\/]*\.)?freegonzo-com-og5mpk\.blogspot\.com https?:\/\/([^\/]*\.)?freegonzo-od5evmn\.blogspot\.com https?:\/\/([^\/]*\.)?freeheaven-com-ap22\.blogspot\.com https?:\/\/([^\/]*\.)?freeheaven-com-w1kx4ymi\.blogspot\.com https?:\/\/([^\/]*\.)?freehost\.ag https?:\/\/([^\/]*\.)?freehugemovies-com-dr\.blogspot\.com https?:\/\/([^\/]*\.)?freehugemovies-com-hi3\.blogspot\.com https?:\/\/([^\/]*\.)?freeinsite\.net https?:\/\/([^\/]*\.)?freeinternetplus\.info https?:\/\/([^\/]*\.)?freenextelringtonesupf\.blogspot\.com https?:\/\/([^\/]*\.)?freeones-com-amrmdwb\.blogspot\.com https?:\/\/([^\/]*\.)?freeones-com-m1fc\.blogspot\.com https?:\/\/([^\/]*\.)?freeones-com-mb70w6\.blogspot\.com https?:\/\/([^\/]*\.)?freeones-com-mqdm\.blogspot\.com https?:\/\/([^\/]*\.)?freeones-com-tfirm5smvh\.blogspot\.com https?:\/\/([^\/]*\.)?freepaintballgun\.com https?:\/\/([^\/]*\.)?freepicseries-com-kb1\.blogspot\.com https?:\/\/([^\/]*\.)?freepicseries-com-tfct6n\.blogspot\.com https?:\/\/([^\/]*\.)?freeportalnow\.com https?:\/\/([^\/]*\.)?freeringtonedgf\.blogspot\.com https?:\/\/([^\/]*\.)?freeringtones\.seesaa\.net https?:\/\/([^\/]*\.)?freeringtonesptl\.blogspot\.com https?:\/\/([^\/]*\.)?freeringtoness\.fr\.funpic\.de https?:\/\/([^\/]*\.)?frees--123clips-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--8teenfiles-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--africanvagina-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--ah-me-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--akissbetweenthelegs-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--allsitesaccess-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--amateurcurves-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--asssupply-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--atkmodels-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--auntmia-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--bigtitspalace-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--boneme-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--bootycollection-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--bustyadventures-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--camcrush-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--camelclips-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--caughtnude-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--celebrityscandal-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--cliphunter-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--cowlist-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--dirtydaughter-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--easygals-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--ebonyblack-net\.blogspot\.com https?:\/\/([^\/]*\.)?frees--el-ladies-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--eurosexparties-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--fuckingfreemovies-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--gallfree-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--girlfur-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--grannyplanet-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--greentits-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--hanksgalleries-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--hereistheporn-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--hornybanana-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--idealbabes-net\.blogspot\.com https?:\/\/([^\/]*\.)?frees--indianpassion-com\.blogspot\.com https?:\/\/([^\/]*\.)?frees--ispycameltoe-com\.blogspot\.com https?:\/\/([^\/]*\.)?freespaces\.com https?:\/\/([^\/]*\.)?freesprintringtoneenx\.blogspot\.com https?:\/\/([^\/]*\.)?freesprintringtoneswkd\.blogspot\.com https?:\/\/([^\/]*\.)?freestyman\.com https?:\/\/([^\/]*\.)?freetmobileringtonekaw\.blogspot\.com https?:\/\/([^\/]*\.)?freeverizonringtonevol\.blogspot\.com https?:\/\/([^\/]*\.)?freewebsitehosting\.net https?:\/\/([^\/]*\.)?freexmovies-com-i1xi8s\.blogspot\.com https?:\/\/([^\/]*\.)?freexmovies-com-ojxc1k\.blogspot\.com https?:\/\/([^\/]*\.)?freeyaho\.com https?:\/\/([^\/]*\.)?french-kissing-my-sister\.protime\.in\.ua https?:\/\/([^\/]*\.)?french-kissing\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?french-lick-child-family-entertainment\.gameover\.in\.ua https?:\/\/([^\/]*\.)?french-tickler-condom\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?french168\.com https?:\/\/([^\/]*\.)?frenchcum-btb\.blogspot\.com https?:\/\/([^\/]*\.)?frenchcum-com-mzqj8hpm\.blogspot\.com https?:\/\/([^\/]*\.)?frenchcum-com-w07ua1w7z\.blogspot\.com https?:\/\/([^\/]*\.)?fresh-sex\.futureblog\.org https?:\/\/([^\/]*\.)?friendsgrabber\.com https?:\/\/([^\/]*\.)?fripcn9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?frog-sexgtw\.blogspot\.com https?:\/\/([^\/]*\.)?frog-sexlfe\.blogspot\.com https?:\/\/([^\/]*\.)?frogm\.info https?:\/\/([^\/]*\.)?frogsex-com-ev4zmddt\.blogspot\.com https?:\/\/([^\/]*\.)?frogsex-com-ivtcaqfsx\.blogspot\.com https?:\/\/([^\/]*\.)?frogsex-gnle04e\.blogspot\.com https?:\/\/([^\/]*\.)?frt3\.org\.ua https?:\/\/([^\/]*\.)?fsxhl\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fsyflower\.com https?:\/\/([^\/]*\.)?ft568\.com https?:\/\/([^\/]*\.)?ftffo\.szm\.sk https?:\/\/([^\/]*\.)?fthaop1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ftntg\.szm\.sk https?:\/\/([^\/]*\.)?fu-alexus\.blogspot\.com https?:\/\/([^\/]*\.)?fuck-gallery-picture\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?fuck-her-in-mouth\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?fuck-lesbian-pussy\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?fuck-pussy-suck-swallow\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?fuck-sexy-slut\.medved\.od\.ua https?:\/\/([^\/]*\.)?fuck-the-maidens\.info https?:\/\/([^\/]*\.)?fuckfromass\.info https?:\/\/([^\/]*\.)?fucking-hardcore-japanese-slut\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?fucking-lesbian-licking-pussy\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?fucking-machine-thumbnail\.protime\.in\.ua https?:\/\/([^\/]*\.)?fucking-preity-sucking-zinta\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?fucking-teen-party\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?fuckingfreemovies-com-gvps\.blogspot\.com https?:\/\/([^\/]*\.)?fuckingfreemovies-com-gy2\.blogspot\.com https?:\/\/([^\/]*\.)?fuckingfreemovies-com-qogog\.blogspot\.com https?:\/\/([^\/]*\.)?fuckingmachines-com-b4glo\.blogspot\.com https?:\/\/([^\/]*\.)?fuckingmachines-com-h3\.blogspot\.com https?:\/\/([^\/]*\.)?fuckingmachines-com-hqrbqh4\.blogspot\.com https?:\/\/([^\/]*\.)?fuckk-com-ot8wc\.blogspot\.com https?:\/\/([^\/]*\.)?fuckk-com-r6\.blogspot\.com https?:\/\/([^\/]*\.)?fuckk-com-rw5485\.blogspot\.com https?:\/\/([^\/]*\.)?fucksakes-com-ks7uskz64\.blogspot\.com https?:\/\/([^\/]*\.)?fufpyl5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?funberry-com-meft\.blogspot\.com https?:\/\/([^\/]*\.)?funberry-com-mkjvxl\.blogspot\.com https?:\/\/([^\/]*\.)?funberry-com-tz8\.blogspot\.com https?:\/\/([^\/]*\.)?funkall\.us https?:\/\/([^\/]*\.)?funny-stuff\.3ae6ucb\.info https?:\/\/([^\/]*\.)?funpelv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fuohcbq\.myfreewebhost\.org https?:\/\/([^\/]*\.)?furama\.dtdns\.net https?:\/\/([^\/]*\.)?furrysoap\.ifrance\.com https?:\/\/([^\/]*\.)?fuvo-aimee\.blogspot\.com https?:\/\/([^\/]*\.)?fuyinj\.ebloggy\.com https?:\/\/([^\/]*\.)?fvinc\.4t\.com https?:\/\/([^\/]*\.)?fvjz5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fwbhexo\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fweroze\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fwvsp\.szm\.sk https?:\/\/([^\/]*\.)?fx120\.com https?:\/\/([^\/]*\.)?fx120\.net https?:\/\/([^\/]*\.)?fxxb5\.szm\.sk https?:\/\/([^\/]*\.)?fyisy\.szm\.sk https?:\/\/([^\/]*\.)?fylfw\.szm\.sk https?:\/\/([^\/]*\.)?fyyvb\.myfreewebhost\.org https?:\/\/([^\/]*\.)?fzdlcfzh-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?g-maste\.com https?:\/\/([^\/]*\.)?g2c2rtc\.info https?:\/\/([^\/]*\.)?g3eros\.info https?:\/\/([^\/]*\.)?g76\.be https?:\/\/([^\/]*\.)?gadkj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gaeq2\.szm\.sk https?:\/\/([^\/]*\.)?gafdyq9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gagase\.com https?:\/\/([^\/]*\.)?gailc\.fr33webhost\.com https?:\/\/([^\/]*\.)?galleries4free-com-e1ew\.blogspot\.com https?:\/\/([^\/]*\.)?galleries4free-com-o8\.blogspot\.com https?:\/\/([^\/]*\.)?gallery-jenna-jameson-blonde\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gallery-kissing-woman-woman\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gallery-lesson-milf\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?gallery-lingerie-see-teen-thru\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?gallery-mature-stocking\.protime\.in\.ua https?:\/\/([^\/]*\.)?gallfree-com-b0uf2q0\.blogspot\.com https?:\/\/([^\/]*\.)?gallfree-com-ra5f1d7\.blogspot\.com https?:\/\/([^\/]*\.)?gallfree-com-teruq\.blogspot\.com https?:\/\/([^\/]*\.)?gallview-com-a2wqsk\.blogspot\.com https?:\/\/([^\/]*\.)?gallview-com-ahasx\.blogspot\.com https?:\/\/([^\/]*\.)?gallview-com-wa6froqpl\.blogspot\.com https?:\/\/([^\/]*\.)?gambling-online-theory\.com https?:\/\/([^\/]*\.)?gamenase\.com https?:\/\/([^\/]*\.)?gamez4less\.com https?:\/\/([^\/]*\.)?gang-bang-free-pic-gallery\.medved\.od\.ua https?:\/\/([^\/]*\.)?gangsheng\.home4u\.china\.com https?:\/\/([^\/]*\.)?gaping-ass-sex\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gaqx6\.szm\.sk https?:\/\/([^\/]*\.)?garid\.biz https?:\/\/([^\/]*\.)?garlic\.hostonmars\.com https?:\/\/([^\/]*\.)?garter\.nocostwebhosting\.com https?:\/\/([^\/]*\.)?gastrointestinal\.1\.p2l\.info https?:\/\/([^\/]*\.)?gastrw\.com https?:\/\/([^\/]*\.)?gatalgat\.myrealboard\.com https?:\/\/([^\/]*\.)?gatloral\.myrealboard\.com https?:\/\/([^\/]*\.)?gatx10258\.blogspot\.com https?:\/\/([^\/]*\.)?gay-bareback-story\.gameover\.in\.ua https?:\/\/([^\/]*\.)?gay-big-cock-video-clip\.medved\.od\.ua https?:\/\/([^\/]*\.)?gay-black-blow-job\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-blonde-twinks\.medved\.od\.ua https?:\/\/([^\/]*\.)?gay-cum-eater\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-gang-bang-video\.gameover\.in\.ua https?:\/\/([^\/]*\.)?gay-girl-kissing\.gameover\.in\.ua https?:\/\/([^\/]*\.)?gay-girl-video\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-hispanic-man-naked\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-hot-latinos\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-huge-thick-cock\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-hunk-sex\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-man-hardcore\.medved\.od\.ua https?:\/\/([^\/]*\.)?gay-man-man-sex\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-man-mature-old-picture\.protime\.in\.ua https?:\/\/([^\/]*\.)?gay-man-naked-wrestling\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?gay-marriage-benefit\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-photo-personals\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?gay-porn-clip-zonehyx\.blogspot\.com https?:\/\/([^\/]*\.)?gay-porn-video-clip-news8dd\.blogspot\.com https?:\/\/([^\/]*\.)?gay-pride-week-in-florida\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-sex-video-on-demand\.gameover\.in\.ua https?:\/\/([^\/]*\.)?gay-teen-man\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-teen-sex-clip\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-themed-movie\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?gay-twinks-fucking\.medved\.od\.ua https?:\/\/([^\/]*\.)?gay-web-cam-site\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gay-woman-chat-rooms\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?gazwc\.szm\.sk https?:\/\/([^\/]*\.)?gbapc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gbd-amy\.hostithere\.org https?:\/\/([^\/]*\.)?gbtw1\.fr33webhost\.com https?:\/\/([^\/]*\.)?gbvgxus\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gceaq\.szm\.sk https?:\/\/([^\/]*\.)?gcqqkhx\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gd-r\.com https?:\/\/([^\/]*\.)?gdfea\.szm\.sk https?:\/\/([^\/]*\.)?geb0cs\.nokedem\.com https?:\/\/([^\/]*\.)?gebu-aeh\.blogspot\.com https?:\/\/([^\/]*\.)?geddesvicente\.info https?:\/\/([^\/]*\.)?geflamio\.dl\.pl https?:\/\/([^\/]*\.)?genaholincorporated\.com https?:\/\/([^\/]*\.)?generic-paxil\.contact\.cc https?:\/\/([^\/]*\.)?genericbuy\.o-f\.com https?:\/\/([^\/]*\.)?genoux\.dnsrd\.com https?:\/\/([^\/]*\.)?georgiamortgage-x\.com https?:\/\/([^\/]*\.)?germani4\.blogspot\.com https?:\/\/([^\/]*\.)?gesrju\.com https?:\/\/([^\/]*\.)?get6or6li\.dl\.pl https?:\/\/([^\/]*\.)?getaer\.forumculture\.net https?:\/\/([^\/]*\.)?getbankruptcylaw\.info https?:\/\/([^\/]*\.)?getdeerelt\.forumzen\.com https?:\/\/([^\/]*\.)?getdelsit\.zj\.pl https?:\/\/([^\/]*\.)?getdomsit\.blogcu\.com https?:\/\/([^\/]*\.)?getfemon\.dynamicforum\.net https?:\/\/([^\/]*\.)?getgetvi\.lolbb\.com https?:\/\/([^\/]*\.)?gethelp24x7\.net https?:\/\/([^\/]*\.)?getkuric\.blogcu\.com https?:\/\/([^\/]*\.)?getletovi\.winnerforum\.net https?:\/\/([^\/]*\.)?getlimon\.discutfree\.com https?:\/\/([^\/]*\.)?getowson\.dl\.pl https?:\/\/([^\/]*\.)?gettaer\.ephpbb\.com https?:\/\/([^\/]*\.)?getzelvi\.goodbb\.net https?:\/\/([^\/]*\.)?gezu-alaina\.blogspot\.com https?:\/\/([^\/]*\.)?gfd69\.tripod\.com https?:\/\/([^\/]*\.)?gg0\.be https?:\/\/([^\/]*\.)?ggfix\.com https?:\/\/([^\/]*\.)?gglive\.info https?:\/\/([^\/]*\.)?gguu\.com https?:\/\/([^\/]*\.)?ggww\.dtdns\.net https?:\/\/([^\/]*\.)?ggzhm\.fr33webhost\.com https?:\/\/([^\/]*\.)?ghhdh\.szm\.sk https?:\/\/([^\/]*\.)?ghiacci0\.info https?:\/\/([^\/]*\.)?ghnakjwcjp-video\.blogspot\.com https?:\/\/([^\/]*\.)?ghrvu\.szm\.sk https?:\/\/([^\/]*\.)?ghvd7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?giant-cock-shemale\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?giant-dick-sucking\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?giant-dildo-in-pussy\.medved\.od\.ua https?:\/\/([^\/]*\.)?gifo-administrator\.blogspot\.com https?:\/\/([^\/]*\.)?gigablast\.republika\.pl https?:\/\/([^\/]*\.)?gigagalleries-com-c1ylawg\.blogspot\.com https?:\/\/([^\/]*\.)?gigagalleries-com-cn4\.blogspot\.com https?:\/\/([^\/]*\.)?gigagalleries-com-gd0a\.blogspot\.com https?:\/\/([^\/]*\.)?gigavids-com-wcmck\.blogspot\.com https?:\/\/([^\/]*\.)?gimps\.info https?:\/\/([^\/]*\.)?giochi-java\.heroez\.info https?:\/\/([^\/]*\.)?gioco-avventura-vari\.bb22\.info https?:\/\/([^\/]*\.)?gioco-online-picchiaduro\.nnme\.info https?:\/\/([^\/]*\.)?gipolit\.asp2\.cz https?:\/\/([^\/]*\.)?girl-butt-in-tight-jeans\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?girl-guy-kissing\.medved\.od\.ua https?:\/\/([^\/]*\.)?girl-kissing-video-bb-bb-j\.blogspot\.com https?:\/\/([^\/]*\.)?girl-playing-with-dildo\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?girl-showing-there-boob\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?girl-with-big-dildo\.protime\.in\.ua https?:\/\/([^\/]*\.)?girlfur-com-ga\.blogspot\.com https?:\/\/([^\/]*\.)?girlfur-com-pisij\.blogspot\.com https?:\/\/([^\/]*\.)?gisogenu\.org https?:\/\/([^\/]*\.)?give-me-baby\.info https?:\/\/([^\/]*\.)?gjjf\.com https?:\/\/([^\/]*\.)?gjjp\.left-page\.com https?:\/\/([^\/]*\.)?gjjp\.zxvo\.com https?:\/\/([^\/]*\.)?gjqgec8\.info https?:\/\/([^\/]*\.)?gkjxcs1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gkwzrz8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?glamouronline\.info https?:\/\/([^\/]*\.)?glebo\.host-page\.com https?:\/\/([^\/]*\.)?glebo1\.host-page\.com https?:\/\/([^\/]*\.)?glebo2\.host-page\.com https?:\/\/([^\/]*\.)?glebo3\.host-page\.com https?:\/\/([^\/]*\.)?glebo4\.host-page\.com https?:\/\/([^\/]*\.)?glebo5\.host-page\.com https?:\/\/([^\/]*\.)?glebo6\.host-page\.com https?:\/\/([^\/]*\.)?glebo7\.host-page\.com https?:\/\/([^\/]*\.)?glebo8\.host-page\.com https?:\/\/([^\/]*\.)?glebo9\.host-page\.com https?:\/\/([^\/]*\.)?glmv6\.szm\.sk https?:\/\/([^\/]*\.)?globalbartertrade\.info https?:\/\/([^\/]*\.)?globalflights\.org https?:\/\/([^\/]*\.)?globalrecreationguide\.com https?:\/\/([^\/]*\.)?globegarment\.com\.cn https?:\/\/([^\/]*\.)?glodgreen\.info https?:\/\/([^\/]*\.)?gloryhole\.coz\.in https?:\/\/([^\/]*\.)?glovebox\.freewebpage\.org https?:\/\/([^\/]*\.)?gloveboxes\.cn https?:\/\/([^\/]*\.)?gloveboxes\.com\.cn https?:\/\/([^\/]*\.)?glover\.host-page\.com https?:\/\/([^\/]*\.)?glover1\.host-page\.com https?:\/\/([^\/]*\.)?glover2\.host-page\.com https?:\/\/([^\/]*\.)?glover3\.host-page\.com https?:\/\/([^\/]*\.)?glover4\.host-page\.com https?:\/\/([^\/]*\.)?glover5\.host-page\.com https?:\/\/([^\/]*\.)?glover6\.host-page\.com https?:\/\/([^\/]*\.)?glover7\.host-page\.com https?:\/\/([^\/]*\.)?glover8\.host-page\.com https?:\/\/([^\/]*\.)?glover9\.host-page\.com https?:\/\/([^\/]*\.)?gmldsb\.com https?:\/\/([^\/]*\.)?gnsgs\.myfreewebhost\.org https?:\/\/([^\/]*\.)?go-ansna\.ibelgique\.com https?:\/\/([^\/]*\.)?goaie\.myfreewebhost\.org https?:\/\/([^\/]*\.)?goatlist-com-dk15cne\.blogspot\.com https?:\/\/([^\/]*\.)?goatlist-com-hi\.blogspot\.com https?:\/\/([^\/]*\.)?goatlist-com-o5\.blogspot\.com https?:\/\/([^\/]*\.)?gobabo\.nocostwebhosting\.com https?:\/\/([^\/]*\.)?gobald\.dtdns\.net https?:\/\/([^\/]*\.)?gobu4\.szm\.sk https?:\/\/([^\/]*\.)?gogllefr\.125mb\.com https?:\/\/([^\/]*\.)?gokletvi\.dynamicbb\.com https?:\/\/([^\/]*\.)?goko-adeline\.blogspot\.com https?:\/\/([^\/]*\.)?gold-watch\.grimgoe\.be https?:\/\/([^\/]*\.)?gold\.fathippohosting\.com https?:\/\/([^\/]*\.)?goldsexcity\.info https?:\/\/([^\/]*\.)?goldshop\.freehostia\.com https?:\/\/([^\/]*\.)?golenord\.dl\.pl https?:\/\/([^\/]*\.)?goler-sor1z\.blogspot\.com https?:\/\/([^\/]*\.)?golfhq\.org https?:\/\/([^\/]*\.)?golfshoot\.com https?:\/\/([^\/]*\.)?gololed\.blogspot\.com https?:\/\/([^\/]*\.)?gomy0\.szm\.sk https?:\/\/([^\/]*\.)?gonzo-movies-com-ez\.blogspot\.com https?:\/\/([^\/]*\.)?gonzo-movies-rkk5jq\.blogspot\.com https?:\/\/([^\/]*\.)?good568\.com https?:\/\/([^\/]*\.)?goodhealthjobs\.info https?:\/\/([^\/]*\.)?goodticket\.org https?:\/\/([^\/]*\.)?google-pharmacy\.com https?:\/\/([^\/]*\.)?google110\.yculblog\.com https?:\/\/([^\/]*\.)?googlepaiming\.ebloggy\.com https?:\/\/([^\/]*\.)?googletosh\.org https?:\/\/([^\/]*\.)?goporn\.info https?:\/\/([^\/]*\.)?gopremen\.dl\.pl https?:\/\/([^\/]*\.)?gor-richards-realm-com\.blogspot\.com https?:\/\/([^\/]*\.)?gorillalinks-com-t77\.blogspot\.com https?:\/\/([^\/]*\.)?gorillashaman\.blogspot\.com https?:\/\/([^\/]*\.)?gorlum\.t35\.com https?:\/\/([^\/]*\.)?gorunger\.com https?:\/\/([^\/]*\.)?goxzk\.szm\.sk https?:\/\/([^\/]*\.)?gpdmr\.szm\.sk https?:\/\/([^\/]*\.)?gphv0\.szm\.sk https?:\/\/([^\/]*\.)?gplea\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gqnzzlu\.myfreewebhost\.org https?:\/\/([^\/]*\.)?graduate-schools\.hotmail\.ru https?:\/\/([^\/]*\.)?graduate1degree\.chat\.ru https?:\/\/([^\/]*\.)?graduate2schools\.chat\.ru https?:\/\/([^\/]*\.)?graf\.pp\.ru https?:\/\/([^\/]*\.)?grammatica-inglese\.bb11\.info https?:\/\/([^\/]*\.)?gran-roques\.forumhst\.info https?:\/\/([^\/]*\.)?granny-boy-free-pic\.gameover\.in\.ua https?:\/\/([^\/]*\.)?granny-movie-thumb\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?grannyorgies-com-o1w34\.blogspot\.com https?:\/\/([^\/]*\.)?grannyorgies-com-ormpubp\.blogspot\.com https?:\/\/([^\/]*\.)?grannyorgies-com-r2on\.blogspot\.com https?:\/\/([^\/]*\.)?grannypictures-com-a2w1\.blogspot\.com https?:\/\/([^\/]*\.)?grannypictures-com-ak6273j85t\.blogspot\.com https?:\/\/([^\/]*\.)?grannyplanet-com-k1bea\.blogspot\.com https?:\/\/([^\/]*\.)?great-ass-gallery\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?greataftorless\.com https?:\/\/([^\/]*\.)?greatbmwclub\.cn https?:\/\/([^\/]*\.)?greatbmwparts\.cn https?:\/\/([^\/]*\.)?greatbudgetinn\.info https?:\/\/([^\/]*\.)?greathal\.com https?:\/\/([^\/]*\.)?greatinsurancedirect\.info https?:\/\/([^\/]*\.)?greatmercedescar\.info https?:\/\/([^\/]*\.)?greatpsychology\.info https?:\/\/([^\/]*\.)?greatusainternet\.info https?:\/\/([^\/]*\.)?green-gradens\.org https?:\/\/([^\/]*\.)?green-tea-300\.co\.nr https?:\/\/([^\/]*\.)?green-tea\.co\.nr https?:\/\/([^\/]*\.)?greentits-com-kr3h3787pt\.blogspot\.com https?:\/\/([^\/]*\.)?greentits-com-t8xf3x5\.blogspot\.com https?:\/\/([^\/]*\.)?greentits-com-tr242sh16\.blogspot\.com https?:\/\/([^\/]*\.)?greet\.ipupdater\.net https?:\/\/([^\/]*\.)?grgul\.szm\.sk https?:\/\/([^\/]*\.)?griev\.ipupdater\.com https?:\/\/([^\/]*\.)?griffeylaw\.com https?:\/\/([^\/]*\.)?grimasa\.republika\.pl https?:\/\/([^\/]*\.)?groovybus-com-cv8ry83\.blogspot\.com https?:\/\/([^\/]*\.)?groovybus-com-gy1258kur3\.blogspot\.com https?:\/\/([^\/]*\.)?groupforums\.com https?:\/\/([^\/]*\.)?groups-msn-com-masturbating-site-woman\.gameover\.in\.ua https?:\/\/([^\/]*\.)?groups\.ku\.edu https?:\/\/([^\/]*\.)?grrualca\.jconserv\.net https?:\/\/([^\/]*\.)?gsaxz\.szm\.sk https?:\/\/([^\/]*\.)?gsebook\.org https?:\/\/([^\/]*\.)?gsloi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gsuyfy2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gsxez\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gu-amateur-sex-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?guangdianyuanjian\.dzsc\.com https?:\/\/([^\/]*\.)?gudtk\.fr33webhost\.com https?:\/\/([^\/]*\.)?guess76\.blogspot\.com https?:\/\/([^\/]*\.)?guilty-until-proven-innocent\.gameover\.in\.ua https?:\/\/([^\/]*\.)?gumaxxx-com-e3748i87g\.blogspot\.com https?:\/\/([^\/]*\.)?gumaxxx-com-ow774pk74m\.blogspot\.com https?:\/\/([^\/]*\.)?gumybear\.php5\.cz https?:\/\/([^\/]*\.)?gunterdirect\.com https?:\/\/([^\/]*\.)?gunterlawoffice\.com https?:\/\/([^\/]*\.)?guruful\.stabilt\.se https?:\/\/([^\/]*\.)?guys-butt-fucking\.medved\.od\.ua https?:\/\/([^\/]*\.)?gvfefn3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gwebsearch\.org https?:\/\/([^\/]*\.)?gwjsx\.szm\.sk https?:\/\/([^\/]*\.)?gxrd3\.szm\.sk https?:\/\/([^\/]*\.)?gyig3\.szm\.sk https?:\/\/([^\/]*\.)?gym-equipments\.org https?:\/\/([^\/]*\.)?gyzvpxl\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gzmayz6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?gzvwa\.szm\.sk https?:\/\/([^\/]*\.)?h0vutok\.nokedem\.com https?:\/\/([^\/]*\.)?h15\.ru https?:\/\/([^\/]*\.)?h3as88dw\.info https?:\/\/([^\/]*\.)?habromjw\.dl\.pl https?:\/\/([^\/]*\.)?haemcurio\.0moola\.com https?:\/\/([^\/]*\.)?hahas\.info https?:\/\/([^\/]*\.)?hairy-ass-hole\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?hairy-chubby-gallery\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?hairy-leg-pic-woman\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?hairy-milf-movie\.gameover\.in\.ua https?:\/\/([^\/]*\.)?hairydivas-com-hg2gvyc\.blogspot\.com https?:\/\/([^\/]*\.)?hairydivas-t150c5gmf8\.blogspot\.com https?:\/\/([^\/]*\.)?hairyerotica-com-i4fl2x\.blogspot\.com https?:\/\/([^\/]*\.)?hairypinktacos-com-djl\.blogspot\.com https?:\/\/([^\/]*\.)?hairypinktacos-com-hlnfq3rea2\.blogspot\.com https?:\/\/([^\/]*\.)?hairypussypost-com-mk0ymrj\.blogspot\.com https?:\/\/([^\/]*\.)?hairypussypost-com-w6\.blogspot\.com https?:\/\/([^\/]*\.)?hal\.engr\.smu\.edu https?:\/\/([^\/]*\.)?halloween2006\.info https?:\/\/([^\/]*\.)?halx8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hamalo\.com https?:\/\/([^\/]*\.)?hamas2007\.republika\.pl https?:\/\/([^\/]*\.)?hand-job-movie-x-x-d\.blogspot\.com https?:\/\/([^\/]*\.)?hand-stained-xx\.blogspot\.com https?:\/\/([^\/]*\.)?hangzhau\.cn https?:\/\/([^\/]*\.)?hanksgalleries-com-b73flku8\.blogspot\.com https?:\/\/([^\/]*\.)?hanksgalleries-com-rtuvbgdl\.blogspot\.com https?:\/\/([^\/]*\.)?hanry\.stabilt\.se https?:\/\/([^\/]*\.)?haole\.cn https?:\/\/([^\/]*\.)?happy-pharma\.com https?:\/\/([^\/]*\.)?hard-disk-esterno\.hostzz\.info https?:\/\/([^\/]*\.)?hard-disk-esterno\.ll11\.info https?:\/\/([^\/]*\.)?hardbabes-com-e061obbg\.blogspot\.com https?:\/\/([^\/]*\.)?hardbabes-com-e588iqk\.blogspot\.com https?:\/\/([^\/]*\.)?hardcore-amateur-thumbnail\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?hardcore-asian-anal\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?hardcore-dancing-site-myspace-com\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?hardcore-free-porn-xx\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?hardcore-lesbian-pussy-eating\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?hardcore-mature-sex-young\.gameover\.in\.ua https?:\/\/([^\/]*\.)?hardcore-porn-clip-info73q\.blogspot\.com https?:\/\/([^\/]*\.)?hardcore-sex-black-on-white\.protime\.in\.ua https?:\/\/([^\/]*\.)?hardcore-xxx-video\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?hardcoregangstas\.hrable\.dtdns\.net https?:\/\/([^\/]*\.)?hardhut-com-ao8renz\.blogspot\.com https?:\/\/([^\/]*\.)?hardhut-com-tgi\.blogspot\.com https?:\/\/([^\/]*\.)?hardhut-com-wb8m8\.blogspot\.com https?:\/\/([^\/]*\.)?hargd\.szm\.sk https?:\/\/([^\/]*\.)?harley-davidson-womens-boot\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?harted\.hostpresso\.com https?:\/\/([^\/]*\.)?haungsanok\.com https?:\/\/([^\/]*\.)?hawaiimortgage-x\.com https?:\/\/([^\/]*\.)?hawbij4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hawkesnest\.com https?:\/\/([^\/]*\.)?hazell-keeley-sex-video-bb-bb-f\.blogspot\.com https?:\/\/([^\/]*\.)?hbyfq\.fr33webhost\.com https?:\/\/([^\/]*\.)?hcgs\.unh\.edu https?:\/\/([^\/]*\.)?hclt-events\.blogspot\.com https?:\/\/([^\/]*\.)?hdbj\.com\.cn https?:\/\/([^\/]*\.)?hdchina\.com https?:\/\/([^\/]*\.)?hdlwc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hdndeuw\.myfreewebhost\.org https?:\/\/([^\/]*\.)?he-wells\.blogspot\.com https?:\/\/([^\/]*\.)?he-wendy\.blogspot\.com https?:\/\/([^\/]*\.)?head-masturbating-shower-woman\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?health-insurance-0\.blogspot\.com https?:\/\/([^\/]*\.)?health-insurance-save\.com https?:\/\/([^\/]*\.)?health-jack\.com https?:\/\/([^\/]*\.)?healthinsurance-x\.com https?:\/\/([^\/]*\.)?healthprocare\.info https?:\/\/([^\/]*\.)?hebei-railings\.cn https?:\/\/([^\/]*\.)?hecarabi\.info https?:\/\/([^\/]*\.)?hefo-adrianna\.blogspot\.com https?:\/\/([^\/]*\.)?hek-tshirthell-com\.blogspot\.com https?:\/\/([^\/]*\.)?hellim\.3x\.ro https?:\/\/([^\/]*\.)?heloween\.php5\.cz https?:\/\/([^\/]*\.)?hemilton\.stabilt\.se https?:\/\/([^\/]*\.)?hengxinbanjia\.com https?:\/\/([^\/]*\.)?her-first-anal-fucking\.protime\.in\.ua https?:\/\/([^\/]*\.)?her-first-cum\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?her-first-lesbian-sex-kylie\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?her-first-small-dick\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?her-sweet-ass\.protime\.in\.ua https?:\/\/([^\/]*\.)?here\.com\.cn https?:\/\/([^\/]*\.)?hereandnow0\.com https?:\/\/([^\/]*\.)?hereistheporn-com-abg\.blogspot\.com https?:\/\/([^\/]*\.)?hereistheporn-com-wxu4\.blogspot\.com https?:\/\/([^\/]*\.)?herpes\.1\.p2l\.info https?:\/\/([^\/]*\.)?herufip\.info https?:\/\/([^\/]*\.)?heschlos\.dl\.pl https?:\/\/([^\/]*\.)?hevo-alannah\.blogspot\.com https?:\/\/([^\/]*\.)?hexingqc\.com https?:\/\/([^\/]*\.)?hfpm\.com https?:\/\/([^\/]*\.)?hfsflm0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hfslink\.com https?:\/\/([^\/]*\.)?hgdpy\.szm\.sk https?:\/\/([^\/]*\.)?hgh\.rx4\.org https?:\/\/([^\/]*\.)?hgqz5\.szm\.sk https?:\/\/([^\/]*\.)?hguldxxe-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?hgyxs\.szm\.sk https?:\/\/([^\/]*\.)?hhcoh\.szm\.sk https?:\/\/([^\/]*\.)?hhlive\.info https?:\/\/([^\/]*\.)?hhpump\.com https?:\/\/([^\/]*\.)?hiadadar\.forumzen\.com https?:\/\/([^\/]*\.)?higarret\.forumzen\.com https?:\/\/([^\/]*\.)?high-heel-western-boot\.medved\.od\.ua https?:\/\/([^\/]*\.)?high-school-diploma\.hotmail\.ru https?:\/\/([^\/]*\.)?high1school4dipl\.chat\.ru https?:\/\/([^\/]*\.)?highclassblogs\.com https?:\/\/([^\/]*\.)?hilarykallin\.50webs\.org https?:\/\/([^\/]*\.)?hilipa\.com https?:\/\/([^\/]*\.)?hilipy\.com https?:\/\/([^\/]*\.)?hillery\.republika\.pl https?:\/\/([^\/]*\.)?himd4\.szm\.sk https?:\/\/([^\/]*\.)?himp3\.biz https?:\/\/([^\/]*\.)?hinn8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hioctane-com-dlmv6g7y\.blogspot\.com https?:\/\/([^\/]*\.)?hioctane-com-dq4opea\.blogspot\.com https?:\/\/([^\/]*\.)?hioctane-com-h0un\.blogspot\.com https?:\/\/([^\/]*\.)?hioctane-com-toxuz\.blogspot\.com https?:\/\/([^\/]*\.)?hipoldlady\.com https?:\/\/([^\/]*\.)?hirudaco\.forumzen\.com https?:\/\/([^\/]*\.)?his13lessings\.blogspot\.com https?:\/\/([^\/]*\.)?history-of-condom\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?hisyma\.dl\.pl https?:\/\/([^\/]*\.)?hitm4n\.blogspot\.com https?:\/\/([^\/]*\.)?hiv123\.com https?:\/\/([^\/]*\.)?hiv987\.zj\.com https?:\/\/([^\/]*\.)?hjia\.ebloggy\.com https?:\/\/([^\/]*\.)?hjolmed\.com https?:\/\/([^\/]*\.)?hkcompanyforyou\.cn https?:\/\/([^\/]*\.)?hkfeng\.com https?:\/\/([^\/]*\.)?hkwei\.com\.cn https?:\/\/([^\/]*\.)?hlemizd\.republika\.pl https?:\/\/([^\/]*\.)?hlusky\.republika\.pl https?:\/\/([^\/]*\.)?hlxn6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hmppbw-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?hnxsv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ho-big-clip-tit-video-hox\.blogspot\.com https?:\/\/([^\/]*\.)?hobaysin\.ifrance\.com https?:\/\/([^\/]*\.)?hocohn\.dl\.pl https?:\/\/([^\/]*\.)?hohoo\.cn https?:\/\/([^\/]*\.)?hold-em-play\.com https?:\/\/([^\/]*\.)?hold-em-play\.net https?:\/\/([^\/]*\.)?hold-em-winner\.us https?:\/\/([^\/]*\.)?home-made-porn-clip-blogt7y\.blogspot\.com https?:\/\/([^\/]*\.)?home-mortgages\.bigsitecity\.com https?:\/\/([^\/]*\.)?home-sauna\.boom\.ru https?:\/\/([^\/]*\.)?home-secure\.org https?:\/\/([^\/]*\.)?home-sex-video-t1ux7\.blogspot\.com https?:\/\/([^\/]*\.)?home-spire\.com https?:\/\/([^\/]*\.)?home\.graffiti\.net https?:\/\/([^\/]*\.)?home\.sailormoon\.com https?:\/\/([^\/]*\.)?home2-school\.boom\.ru https?:\/\/([^\/]*\.)?homeequitylineofcredit-x\.com https?:\/\/([^\/]*\.)?homeequitylineofcreditlenders\.com https?:\/\/([^\/]*\.)?homeequityloan-now\.com https?:\/\/([^\/]*\.)?homeequityloans-now\.com https?:\/\/([^\/]*\.)?homeequityloans-x\.com https?:\/\/([^\/]*\.)?homefinance-x\.com https?:\/\/([^\/]*\.)?homeloan-now\.com https?:\/\/([^\/]*\.)?homeloanlogic\.com https?:\/\/([^\/]*\.)?homeloans-now\.com https?:\/\/([^\/]*\.)?homemade-mature-video\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?homemade-porn-clip-infoywx\.blogspot\.com https?:\/\/([^\/]*\.)?homesafterbankruptcy\.info https?:\/\/([^\/]*\.)?homesbysellers\.com https?:\/\/([^\/]*\.)?homesbysellers\.net https?:\/\/([^\/]*\.)?homesexvideo\.org https?:\/\/([^\/]*\.)?hometowngirls\.be https?:\/\/([^\/]*\.)?hometwat-com-hrmml\.blogspot\.com https?:\/\/([^\/]*\.)?homos\.php5\.cz https?:\/\/([^\/]*\.)?homunkulus\.info https?:\/\/([^\/]*\.)?homunkulus\.republika\.pl https?:\/\/([^\/]*\.)?homy\.etowns\.net https?:\/\/([^\/]*\.)?honba\.republika\.pl https?:\/\/([^\/]*\.)?honey99\.cn https?:\/\/([^\/]*\.)?honey99\.com https?:\/\/([^\/]*\.)?hongjianlaw\.com https?:\/\/([^\/]*\.)?hongqi120\.com https?:\/\/([^\/]*\.)?hoodia\.269g\.net https?:\/\/([^\/]*\.)?hoodiadiet\.269g\.net https?:\/\/([^\/]*\.)?hopemarry\.com https?:\/\/([^\/]*\.)?horizondrugs\.zaclona\.yi\.org https?:\/\/([^\/]*\.)?hornina\.net https?:\/\/([^\/]*\.)?horny-butt-sex\.medved\.od\.ua https?:\/\/([^\/]*\.)?horny-grannysex-bipiw\.blogspot\.com https?:\/\/([^\/]*\.)?horny-hailey\.hostithere\.org https?:\/\/([^\/]*\.)?hornybanana-com-mg\.blogspot\.com https?:\/\/([^\/]*\.)?hornybanana-com-to0b\.blogspot\.com https?:\/\/([^\/]*\.)?hornycrocodile-com-c37c85\.blogspot\.com https?:\/\/([^\/]*\.)?hornycrocodile-com-gmb5ev\.blogspot\.com https?:\/\/([^\/]*\.)?hornycrocodile-com-gv3x3oxt\.blogspot\.com https?:\/\/([^\/]*\.)?hornyduck-com-esta\.blogspot\.com https?:\/\/([^\/]*\.)?hornyduck-com-oix7y2v\.blogspot\.com https?:\/\/([^\/]*\.)?hornykaren-com-b16sk5\.blogspot\.com https?:\/\/([^\/]*\.)?hornykaren-com-bl4rw4\.blogspot\.com https?:\/\/([^\/]*\.)?hornykaren-com-rg034\.blogspot\.com https?:\/\/([^\/]*\.)?hornyspanishflies-com-c0cx6a3bo\.blogspot\.com https?:\/\/([^\/]*\.)?hornyspanishflies-com-ks5856vf77\.blogspot\.com https?:\/\/([^\/]*\.)?hornytiger-com-d3\.blogspot\.com https?:\/\/([^\/]*\.)?hornytiger-com-il0x678fwr\.blogspot\.com https?:\/\/([^\/]*\.)?hornywolf-com-m27\.blogspot\.com https?:\/\/([^\/]*\.)?hornywolf-com-tqwaj\.blogspot\.com https?:\/\/([^\/]*\.)?hospitalonline\.cn https?:\/\/([^\/]*\.)?host-page\.com https?:\/\/([^\/]*\.)?hosting1999\.com https?:\/\/([^\/]*\.)?hosting41\.com https?:\/\/([^\/]*\.)?hot-anal-sex-com\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?hot-asian-cock\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?hot-ass-anal\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?hot-blonde-babe-gallery\.protime\.in\.ua https?:\/\/([^\/]*\.)?hot-brazilian-ass\.protime\.in\.ua https?:\/\/([^\/]*\.)?hot-bubble-butt-girl\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?hot-cheerleader-getting-fucked\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?hot-dating-chat\.ifastnet\.com https?:\/\/([^\/]*\.)?hot-latino-ass\.gameover\.in\.ua https?:\/\/([^\/]*\.)?hot-mature-sex-uk-woman\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?hot-mature-xxx\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?hot-mom-site-myspace-com\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?hot-nude-blonde-chick\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?hot-pussy-tit-ass\.gameover\.in\.ua https?:\/\/([^\/]*\.)?hot-sex-video-bb-bb-v\.blogspot\.com https?:\/\/([^\/]*\.)?hotbigmovies-com-cd\.blogspot\.com https?:\/\/([^\/]*\.)?hotbigmovies-com-k62que75im\.blogspot\.com https?:\/\/([^\/]*\.)?hotchina\.org https?:\/\/([^\/]*\.)?hotel-centro-benessere\.host24h\.info https?:\/\/([^\/]*\.)?hotel-offerta\.nnme\.info https?:\/\/([^\/]*\.)?hotel-shop\.info https?:\/\/([^\/]*\.)?hotelsaccommodations\.info https?:\/\/([^\/]*\.)?hotfunhouse-com-pevuv\.blogspot\.com https?:\/\/([^\/]*\.)?hotfunhouse-com-r5530\.blogspot\.com https?:\/\/([^\/]*\.)?hotgirlsplayroom-com-dl0q21\.blogspot\.com https?:\/\/([^\/]*\.)?hotgirlsplayroom-com-isnkeded\.blogspot\.com https?:\/\/([^\/]*\.)?hotmoko\.info https?:\/\/([^\/]*\.)?hotorange-net-ms\.blogspot\.com https?:\/\/([^\/]*\.)?hotpapai-com-hoc3g\.blogspot\.com https?:\/\/([^\/]*\.)?hotty-x\.com https?:\/\/([^\/]*\.)?hottystop-com-a252gugtk\.blogspot\.com https?:\/\/([^\/]*\.)?hottystop-com-grn\.blogspot\.com https?:\/\/([^\/]*\.)?house-15\.jeepsyc\.be https?:\/\/([^\/]*\.)?houses-bahamas\.ligamic\.be https?:\/\/([^\/]*\.)?housewifeaction-com-evv\.blogspot\.com https?:\/\/([^\/]*\.)?housewifeaction-com-o6z0yrnat\.blogspot\.com https?:\/\/([^\/]*\.)?housewifeaction-com-ob85\.blogspot\.com https?:\/\/([^\/]*\.)?hovadko\.isuisse\.com https?:\/\/([^\/]*\.)?hovass\.com https?:\/\/([^\/]*\.)?hovi-albatross\.blogspot\.com https?:\/\/([^\/]*\.)?how-to-catch-a-cheating-spouse\.com https?:\/\/([^\/]*\.)?how-to-make-a-boot-disk-on-win-xp\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?how-to-make-a-boot-disk\.medved\.od\.ua https?:\/\/([^\/]*\.)?how-to-make-a-cock-ring\.protime\.in\.ua https?:\/\/([^\/]*\.)?hppr7\.szm\.sk https?:\/\/([^\/]*\.)?hpua6\.szm\.sk https?:\/\/([^\/]*\.)?hpwe6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hq-casino\.org https?:\/\/([^\/]*\.)?hq-teens-com-aq\.blogspot\.com https?:\/\/([^\/]*\.)?hq-teens-com-w2opp2\.blogspot\.com https?:\/\/([^\/]*\.)?hq\.left-page\.com https?:\/\/([^\/]*\.)?hqgal-com-eu7gbk1o\.blogspot\.com https?:\/\/([^\/]*\.)?hqgal-com-ilxpxi0\.blogspot\.com https?:\/\/([^\/]*\.)?hqmovs-com-k31h4x37df\.blogspot\.com https?:\/\/([^\/]*\.)?hqmovs-com-tiou81\.blogspot\.com https?:\/\/([^\/]*\.)?hqmovs-com-ts5\.blogspot\.com https?:\/\/([^\/]*\.)?hrable\.ostabil\.nu https?:\/\/([^\/]*\.)?hrhbchj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hromotlk\.asp2\.cz https?:\/\/([^\/]*\.)?hrusky\.dtdns\.net https?:\/\/([^\/]*\.)?hscrza1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ht120\.com https?:\/\/([^\/]*\.)?htejj\.szm\.sk https?:\/\/([^\/]*\.)?huaeq\.fr33webhost\.com https?:\/\/([^\/]*\.)?huapatossu\.blogspot\.com https?:\/\/([^\/]*\.)?huataix\.net https?:\/\/([^\/]*\.)?hubo-aileen\.blogspot\.com https?:\/\/([^\/]*\.)?huem-polbu\.netfirms\.com https?:\/\/([^\/]*\.)?huge-cock-shemale\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?huge-dick-anal\.protime\.in\.ua https?:\/\/([^\/]*\.)?huge-dildo-fucking\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?huge-mexican-ass\.protime\.in\.ua https?:\/\/([^\/]*\.)?huge-sexy-boob\.gameover\.in\.ua https?:\/\/([^\/]*\.)?huge-white-dick\.gameover\.in\.ua https?:\/\/([^\/]*\.)?hulio\.asp2\.cz https?:\/\/([^\/]*\.)?hulks\.info https?:\/\/([^\/]*\.)?hummerworldusa\.info https?:\/\/([^\/]*\.)?hupa4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hurvinek\.isuisse\.com https?:\/\/([^\/]*\.)?huspinina\.com https?:\/\/([^\/]*\.)?hutwistina\.com https?:\/\/([^\/]*\.)?huynani\.mpage\.jp https?:\/\/([^\/]*\.)?hvebjr2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hver5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hvlnb\.fr33webhost\.com https?:\/\/([^\/]*\.)?hwantiig-yg\.blogspot\.com https?:\/\/([^\/]*\.)?hwcw4\.szm\.sk https?:\/\/([^\/]*\.)?hwhhw\.fr33webhost\.com https?:\/\/([^\/]*\.)?hwkxt\.szm\.sk https?:\/\/([^\/]*\.)?hxbqpz3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?hxlll\.net https?:\/\/([^\/]*\.)?hydrochloride-tramadol\.1\.forogratis\.es https?:\/\/([^\/]*\.)?hydrocodone-911\.coz\.in https?:\/\/([^\/]*\.)?hydrocodone-cc\.blogspot\.com https?:\/\/([^\/]*\.)?hydrocodone-gs\.eu\.tc https?:\/\/([^\/]*\.)?hydrocodone-gs\.net\.tc https?:\/\/([^\/]*\.)?hydrocodone-online\.presteert\.nl https?:\/\/([^\/]*\.)?hydrocodone\.cheapills\.info https?:\/\/([^\/]*\.)?hydrocodone\.conto\.pl https?:\/\/([^\/]*\.)?hydrocodone\.esguay\.com https?:\/\/([^\/]*\.)?hydrocodone\.fws1\.com https?:\/\/([^\/]*\.)?hydrocodone\.guu\.pl https?:\/\/([^\/]*\.)?hydrocodone\.presteert\.nl https?:\/\/([^\/]*\.)?hydrocodone\.slyip\.net https?:\/\/([^\/]*\.)?hydrocodonebxs\.blogspot\.com https?:\/\/([^\/]*\.)?hydrocodoneq\.phpbbx\.de https?:\/\/([^\/]*\.)?hydrocodonerx\.weboficial\.com https?:\/\/([^\/]*\.)?hyip\.fanforum\.cc https?:\/\/([^\/]*\.)?hz7\.org https?:\/\/([^\/]*\.)?hzkap\.szm\.sk https?:\/\/([^\/]*\.)?hzmeitai\.com https?:\/\/([^\/]*\.)?hzui8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?i-truepoker\.com https?:\/\/([^\/]*\.)?iactive\.com\.cn https?:\/\/([^\/]*\.)?iapon\.galeon\.com https?:\/\/([^\/]*\.)?ibizababes-com-tr\.blogspot\.com https?:\/\/([^\/]*\.)?ic37\.com https?:\/\/([^\/]*\.)?icdufetc\.forumzen\.com https?:\/\/([^\/]*\.)?ickaboo\.com https?:\/\/([^\/]*\.)?icnfr\.szm\.sk https?:\/\/([^\/]*\.)?ict\.188info\.com https?:\/\/([^\/]*\.)?idahomortgage-x\.com https?:\/\/([^\/]*\.)?idc2008\.cn https?:\/\/([^\/]*\.)?idealbabes-net-r5x1puaah0\.blogspot\.com https?:\/\/([^\/]*\.)?iditarodhumor\.info https?:\/\/([^\/]*\.)?iehf\.blogspot\.com https?:\/\/([^\/]*\.)?iehffy8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?iehzup8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ifdbx\.szm\.sk https?:\/\/([^\/]*\.)?ifmnqm6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ifyj2\.fr33webhost\.com https?:\/\/([^\/]*\.)?ihavenourl\.com https?:\/\/([^\/]*\.)?ihomebroker\.com https?:\/\/([^\/]*\.)?ihrd\.blogspot\.com https?:\/\/([^\/]*\.)?iiak2\.szm\.sk https?:\/\/([^\/]*\.)?iio91\.net https?:\/\/([^\/]*\.)?iisqvkk\.myfreewebhost\.org https?:\/\/([^\/]*\.)?iitop\.info https?:\/\/([^\/]*\.)?ikoxf\.myfreewebhost\.org https?:\/\/([^\/]*\.)?il4unu\.com https?:\/\/([^\/]*\.)?ilflz\.szm\.sk https?:\/\/([^\/]*\.)?ilfwvf2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?illcom\.com https?:\/\/([^\/]*\.)?illinoismortgage-x\.com https?:\/\/([^\/]*\.)?ilove-movies-com-w5nx\.blogspot\.com https?:\/\/([^\/]*\.)?ilove-movies-com-wrde\.blogspot\.com https?:\/\/([^\/]*\.)?iloveubaby\.info https?:\/\/([^\/]*\.)?iltbl\.fr33webhost\.com https?:\/\/([^\/]*\.)?im-really-cool\.blogspot\.com https?:\/\/([^\/]*\.)?imitrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?imitrexinjections\.sblog\.cz https?:\/\/([^\/]*\.)?immagine-sfondo-hello-kitty\.i111i\.info https?:\/\/([^\/]*\.)?imposingimo\.com https?:\/\/([^\/]*\.)?impossiblemale61\.blogspot\.com https?:\/\/([^\/]*\.)?imteen\.attacke\.ch https?:\/\/([^\/]*\.)?incontri-amore\.19mb\.info https?:\/\/([^\/]*\.)?incontri-amore\.you-bizz\.info https?:\/\/([^\/]*\.)?indian-porn-clip-zone5j4\.blogspot\.com https?:\/\/([^\/]*\.)?indian-porn-video-zo\.blogspot\.com https?:\/\/([^\/]*\.)?indian-sex-fuck\.gameover\.in\.ua https?:\/\/([^\/]*\.)?indianamortgage-x\.com https?:\/\/([^\/]*\.)?indienudes-com-h4owj60\.blogspot\.com https?:\/\/([^\/]*\.)?infinitemonies\.com https?:\/\/([^\/]*\.)?infinitieyewear\.info https?:\/\/([^\/]*\.)?infinitims\.info https?:\/\/([^\/]*\.)?infinitipianeta\.info https?:\/\/([^\/]*\.)?infoarena\.info https?:\/\/([^\/]*\.)?infospm\.21publish\.de https?:\/\/([^\/]*\.)?infty\.net https?:\/\/([^\/]*\.)?injecfu\.com https?:\/\/([^\/]*\.)?injxx\.szm\.sk https?:\/\/([^\/]*\.)?innocent-ass\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?innocent-busty-teen\.medved\.od\.ua https?:\/\/([^\/]*\.)?innocent-eve-pic\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?innocentdream-com-da\.blogspot\.com https?:\/\/([^\/]*\.)?inqygjz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?inrhqi3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?insidethecloset\.com https?:\/\/([^\/]*\.)?inspectorgalleries-com-k5\.blogspot\.com https?:\/\/([^\/]*\.)?insurance-leader\.com https?:\/\/([^\/]*\.)?insurance-top\.com https?:\/\/([^\/]*\.)?insurance\.topforyou\.net https?:\/\/([^\/]*\.)?internal-ass-cum-shot\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?international-dating\.sexnation\.info https?:\/\/([^\/]*\.)?interracial-gang-bang-crew\.medved\.od\.ua https?:\/\/([^\/]*\.)?interracial-gay-anal-sex\.medved\.od\.ua https?:\/\/([^\/]*\.)?interracial-lesbian-domination\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?interracial-teen-fucking\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?interracialpicsuux\.blogspot\.com https?:\/\/([^\/]*\.)?intersea-fdn\.com https?:\/\/([^\/]*\.)?inthevip-com-bc1b0kb0\.blogspot\.com https?:\/\/([^\/]*\.)?inthevip-com-bvw\.blogspot\.com https?:\/\/([^\/]*\.)?inthevip-com-rso\.blogspot\.com https?:\/\/([^\/]*\.)?intll\.com https?:\/\/([^\/]*\.)?intra\.som\.umass\.edu https?:\/\/([^\/]*\.)?intranet\.education\.umn\.edu https?:\/\/([^\/]*\.)?invest1\.org\.ua https?:\/\/([^\/]*\.)?ioauaq0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ionamin\.1\.p2l\.info https?:\/\/([^\/]*\.)?ionizatorit\.info https?:\/\/([^\/]*\.)?iowamortgage-x\.com https?:\/\/([^\/]*\.)?ipeddle\.com https?:\/\/([^\/]*\.)?ipha4\.szm\.sk https?:\/\/([^\/]*\.)?ipod-application\.info https?:\/\/([^\/]*\.)?ipokea\.com https?:\/\/([^\/]*\.)?iqzyk\.szm\.sk https?:\/\/([^\/]*\.)?iradorame\.site\.voila\.fr https?:\/\/([^\/]*\.)?ircv6\.szm\.sk https?:\/\/([^\/]*\.)?irenefah-gijul\.blogspot\.com https?:\/\/([^\/]*\.)?irishlover\.info https?:\/\/([^\/]*\.)?iron-island\.blogspot\.com https?:\/\/([^\/]*\.)?ironing-boards\.haemati\.be https?:\/\/([^\/]*\.)?irqs8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?isceby0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?islands-tour\.globaltr\.info https?:\/\/([^\/]*\.)?isoway-yoga\.com https?:\/\/([^\/]*\.)?ispycameltoe-com-cugh6n\.blogspot\.com https?:\/\/([^\/]*\.)?ispycameltoe-com-g4s2f7vevs\.blogspot\.com https?:\/\/([^\/]*\.)?italiagame\.org https?:\/\/([^\/]*\.)?italianosito\.info https?:\/\/([^\/]*\.)?italika\.info https?:\/\/([^\/]*\.)?italizzhot\.info https?:\/\/([^\/]*\.)?italoman\.info https?:\/\/([^\/]*\.)?italytraffic\.info https?:\/\/([^\/]*\.)?itchy-skin\.nm\.ru https?:\/\/([^\/]*\.)?itchy_skin\.chat\.ru https?:\/\/([^\/]*\.)?itcweb\.ecsu\.edu https?:\/\/([^\/]*\.)?itdk0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?item4u\.com https?:\/\/([^\/]*\.)?itgeecna\.forumzen\.com https?:\/\/([^\/]*\.)?itp\.nyu\.edu https?:\/\/([^\/]*\.)?itpvewa\.myfreewebhost\.org https?:\/\/([^\/]*\.)?itsum\.com\.cn https?:\/\/([^\/]*\.)?ityh1\.szm\.sk https?:\/\/([^\/]*\.)?iugfsvv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?iuzjbpu\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ivana-fuck-a-lot\.hoffer\.ipupdater\.com https?:\/\/([^\/]*\.)?ivoyt\.blogspot\.com https?:\/\/([^\/]*\.)?ivs\.com\.cn https?:\/\/([^\/]*\.)?iwahigux\.info https?:\/\/([^\/]*\.)?iwantmature-com-mme\.blogspot\.com https?:\/\/([^\/]*\.)?iwuy8\.szm\.sk https?:\/\/([^\/]*\.)?ixiixi-com-guy\.blogspot\.com https?:\/\/([^\/]*\.)?ixllvdi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ixnl4\.szm\.sk https?:\/\/([^\/]*\.)?ixth4\.szm\.sk https?:\/\/([^\/]*\.)?izizyu-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?izui7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ja-rule-ringtonezad\.blogspot\.com https?:\/\/([^\/]*\.)?jablicko\.yi\.org https?:\/\/([^\/]*\.)?jablonec\.republika\.pl https?:\/\/([^\/]*\.)?jadelrel\.goodbb\.net https?:\/\/([^\/]*\.)?jagast\.com https?:\/\/([^\/]*\.)?jahmpf3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jaja-jak-globusy\.com https?:\/\/([^\/]*\.)?jajpip5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jamies-galleries-com-dr7itf8c\.blogspot\.com https?:\/\/([^\/]*\.)?jamm\.host-page\.com https?:\/\/([^\/]*\.)?janelolo\.fr-bb\.com https?:\/\/([^\/]*\.)?janet-jackson-boob-picture\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?janisy\.republika\.pl https?:\/\/([^\/]*\.)?jantiq\.com https?:\/\/([^\/]*\.)?jaoqmw1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?japan-girl-sex\.com https?:\/\/([^\/]*\.)?japan-whores-com-e28dwa2vvb\.blogspot\.com https?:\/\/([^\/]*\.)?japan-whores-com-elay3rzsu\.blogspot\.com https?:\/\/([^\/]*\.)?japanese-geisha-girl\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?japanese-teacher-fuck\.gameover\.in\.ua https?:\/\/([^\/]*\.)?japanese158\.com https?:\/\/([^\/]*\.)?japanshanye\.com https?:\/\/([^\/]*\.)?jarella\.goodbb\.net https?:\/\/([^\/]*\.)?jasara-com-t6fn6k8\.blogspot\.com https?:\/\/([^\/]*\.)?jasara-com-two5\.blogspot\.com https?:\/\/([^\/]*\.)?jasara-com-wibeh\.blogspot\.com https?:\/\/([^\/]*\.)?jastim\.com https?:\/\/([^\/]*\.)?jbixc\.szm\.sk https?:\/\/([^\/]*\.)?jblt7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jcbbxb0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jdmz\.com\.cn https?:\/\/([^\/]*\.)?jeanniexong\.blogspot\.com https?:\/\/([^\/]*\.)?jebmd\.fr33webhost\.com https?:\/\/([^\/]*\.)?jed-two-lips-com\.blogspot\.com https?:\/\/([^\/]*\.)?jeffrorocks21\.blogspot\.com https?:\/\/([^\/]*\.)?jelatko\.republika\.pl https?:\/\/([^\/]*\.)?jelito\.stabilt\.se https?:\/\/([^\/]*\.)?jennifer-lopez-music-photo\.blogspot\.com https?:\/\/([^\/]*\.)?jennifer-lopez-ringtoneqnf\.blogspot\.com https?:\/\/([^\/]*\.)?jennysbookmarks-com-kcr\.blogspot\.com https?:\/\/([^\/]*\.)?jessica-alba-jly9\.blogspot\.com https?:\/\/([^\/]*\.)?jessiethebestie\.blogspot\.com https?:\/\/([^\/]*\.)?jesuisleflet\.blogspot\.com https?:\/\/([^\/]*\.)?jet-cold-hard-bitch-album-version-lyric\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?jetoo\.cn https?:\/\/([^\/]*\.)?jeun\.fr https?:\/\/([^\/]*\.)?jewels667\.blogspot\.com https?:\/\/([^\/]*\.)?jezgy\.szm\.sk https?:\/\/([^\/]*\.)?jfmr\.com https?:\/\/([^\/]*\.)?jgeqhqa\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jhrxa\.szm\.sk https?:\/\/([^\/]*\.)?jhsy0\.szm\.sk https?:\/\/([^\/]*\.)?jiahuajipiao\.com https?:\/\/([^\/]*\.)?jiaju88\.com https?:\/\/([^\/]*\.)?jianfei\.cc https?:\/\/([^\/]*\.)?jianzhi168\.com https?:\/\/([^\/]*\.)?jiaza\.szm\.sk https?:\/\/([^\/]*\.)?jiboki-free-lesbian-video\.blogspot\.com https?:\/\/([^\/]*\.)?jichengdianlu\.dzsc\.com https?:\/\/([^\/]*\.)?jidianqi\.dzsc\.com https?:\/\/([^\/]*\.)?jieyan\.com\.cn https?:\/\/([^\/]*\.)?jiguang\.org https?:\/\/([^\/]*\.)?jijijo\.com https?:\/\/([^\/]*\.)?jimbo\.php5\.cz https?:\/\/([^\/]*\.)?jimmccarthy\.org\.uk https?:\/\/([^\/]*\.)?jimmini\.blogspot\.com https?:\/\/([^\/]*\.)?jinchengjipiao\.com https?:\/\/([^\/]*\.)?jinghuigift\.com https?:\/\/([^\/]*\.)?jingzhi-life\.com https?:\/\/([^\/]*\.)?jipiao\.51mp4mp3\.com https?:\/\/([^\/]*\.)?jipiaoweb\.co https?:\/\/([^\/]*\.)?jipiaoweb\.com https?:\/\/([^\/]*\.)?jiuwu\.com https?:\/\/([^\/]*\.)?jizzhut-com-oq4zf\.blogspot\.com https?:\/\/([^\/]*\.)?jizzonline-com-a3h52c1\.blogspot\.com https?:\/\/([^\/]*\.)?jizzonline-cz0h5y1nm\.blogspot\.com https?:\/\/([^\/]*\.)?jjfchljumf-video\.blogspot\.com https?:\/\/([^\/]*\.)?jjuwt\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jkpotv-free-video\.blogspot\.com https?:\/\/([^\/]*\.)?jlhtj\.szm\.sk https?:\/\/([^\/]*\.)?jlibhe9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jmjx7\.szm\.sk https?:\/\/([^\/]*\.)?jnbxqy5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jnk713\.ifrance\.com https?:\/\/([^\/]*\.)?jnxx3\.szm\.sk https?:\/\/([^\/]*\.)?jobecraf\.dl\.pl https?:\/\/([^\/]*\.)?jobruler\.com https?:\/\/([^\/]*\.)?jocdy\.szm\.sk https?:\/\/([^\/]*\.)?jodofiv-free-fat-ass-mo-t\.blogspot\.com https?:\/\/([^\/]*\.)?johatch\.ifrance\.com https?:\/\/([^\/]*\.)?joia\.com https?:\/\/([^\/]*\.)?jointroompia\.com https?:\/\/([^\/]*\.)?jokerupot\.blogspot\.com https?:\/\/([^\/]*\.)?jon-a-ross\.blogspot\.com https?:\/\/([^\/]*\.)?jonn22\.com https?:\/\/([^\/]*\.)?jonsmovies-com-b23k3tx4h\.blogspot\.com https?:\/\/([^\/]*\.)?joperan\.org https?:\/\/([^\/]*\.)?journal\.eepis-its\.edu https?:\/\/([^\/]*\.)?joycclx\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jozin\.php5\.cz https?:\/\/([^\/]*\.)?jp\.zxvo\.com https?:\/\/([^\/]*\.)?jpeghunter-com-h6rb6\.blogspot\.com https?:\/\/([^\/]*\.)?jpeghunter-com-hsa0g47vew\.blogspot\.com https?:\/\/([^\/]*\.)?jpha9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jplm\.cn https?:\/\/([^\/]*\.)?jptrip\.org https?:\/\/([^\/]*\.)?jqri2\.fr33webhost\.com https?:\/\/([^\/]*\.)?jrcreations\.com https?:\/\/([^\/]*\.)?jrqzje5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jsjgdpg\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jsyuanyang\.com https?:\/\/([^\/]*\.)?jtdh\.fuwuqituoguan\.com https?:\/\/([^\/]*\.)?jtgq3\.szm\.sk https?:\/\/([^\/]*\.)?jtoph\.myfreewebhost\.org https?:\/\/([^\/]*\.)?jtut6\.szm\.sk https?:\/\/([^\/]*\.)?ju-alexis\.blogspot\.com https?:\/\/([^\/]*\.)?ju-free-porn-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?juanyuancailiao\.dzsc\.com https?:\/\/([^\/]*\.)?juggcrew-com-r4xwgs\.blogspot\.com https?:\/\/([^\/]*\.)?jugni\.50webs\.org https?:\/\/([^\/]*\.)?juicygals-com-c8o\.blogspot\.com https?:\/\/([^\/]*\.)?juliatalbot\.50webs\.org https?:\/\/([^\/]*\.)?julietsold\.info https?:\/\/([^\/]*\.)?jumasd\.com https?:\/\/([^\/]*\.)?jumtan\.com https?:\/\/([^\/]*\.)?junenanney\.site\.io https?:\/\/([^\/]*\.)?junky\.phpbb2\.us https?:\/\/([^\/]*\.)?junyuan\.com\.cn https?:\/\/([^\/]*\.)?jupka97\.blogspot\.com https?:\/\/([^\/]*\.)?juruortr\.jconserv\.net https?:\/\/([^\/]*\.)?juse-active\.blogspot\.com https?:\/\/([^\/]*\.)?justanotherebel\.blogspot\.com https?:\/\/([^\/]*\.)?justkor\.com https?:\/\/([^\/]*\.)?juyi6\.szm\.sk https?:\/\/([^\/]*\.)?jwfj8\.szm\.sk https?:\/\/([^\/]*\.)?jwk\.cn https?:\/\/([^\/]*\.)?jxxfl\.fr33webhost\.com https?:\/\/([^\/]*\.)?jytpn\.szm\.sk https?:\/\/([^\/]*\.)?jzllteva-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?jzoqn\.fr33webhost\.com https?:\/\/([^\/]*\.)?k-teens-more\.blogspot\.com https?:\/\/([^\/]*\.)?k98you\.info https?:\/\/([^\/]*\.)?kabierac\.blogspot\.com https?:\/\/([^\/]*\.)?kaejsi\.com https?:\/\/([^\/]*\.)?kaiguan\.dzsc\.com https?:\/\/([^\/]*\.)?kaimitech\.com https?:\/\/([^\/]*\.)?kaizokukitsune\.blogspot\.com https?:\/\/([^\/]*\.)?kakaloo\.dtdns\.net https?:\/\/([^\/]*\.)?kalbongzig64\.blogspot\.com https?:\/\/([^\/]*\.)?kamachair\.info https?:\/\/([^\/]*\.)?kansasmortgage-x\.com https?:\/\/([^\/]*\.)?kaopowh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kardashian\.6\.forumer\.com https?:\/\/([^\/]*\.)?karwee\.com\.tw https?:\/\/([^\/]*\.)?katal0g\.ru https?:\/\/([^\/]*\.)?kates-playground-cjs61770aq\.blogspot\.com https?:\/\/([^\/]*\.)?kates-playground-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?katie-fey-m8inou71nk\.blogspot\.com https?:\/\/([^\/]*\.)?katie-fey\.hostithere\.org https?:\/\/([^\/]*\.)?katsmovies-com-a4k0cr\.blogspot\.com https?:\/\/([^\/]*\.)?kc-generator\.com https?:\/\/([^\/]*\.)?kc\.vanderbilt\.edu https?:\/\/([^\/]*\.)?kchaiguang\.com https?:\/\/([^\/]*\.)?kdmj1\.fr33webhost\.com https?:\/\/([^\/]*\.)?kedew-free-porn-movie-c\.blogspot\.com https?:\/\/([^\/]*\.)?kedrp\.szm\.sk https?:\/\/([^\/]*\.)?keflexbuy\.easy\.to https?:\/\/([^\/]*\.)?keflexbuycheap\.everything\.at https?:\/\/([^\/]*\.)?keflexcheap\.notrix\.at https?:\/\/([^\/]*\.)?keflexcheapgeneric\.drop\.to https?:\/\/([^\/]*\.)?keflexgeneric\.firstpage\.de https?:\/\/([^\/]*\.)?kelley\.iu\.edu https?:\/\/([^\/]*\.)?kellyfind-com-i1\.blogspot\.com https?:\/\/([^\/]*\.)?kellyslovespells\.com https?:\/\/([^\/]*\.)?kelvinova\.com https?:\/\/([^\/]*\.)?kenji-no-sorata\.blogspot\.com https?:\/\/([^\/]*\.)?kentuckymortgage-x\.com https?:\/\/([^\/]*\.)?kenwoodexcelon\.com https?:\/\/([^\/]*\.)?keps\.info https?:\/\/([^\/]*\.)?kesdirect\.com https?:\/\/([^\/]*\.)?keshome\.com https?:\/\/([^\/]*\.)?kewl-links\.com https?:\/\/([^\/]*\.)?keysplus\.com https?:\/\/([^\/]*\.)?keyword\.net\.cn https?:\/\/([^\/]*\.)?kfwd7\.szm\.sk https?:\/\/([^\/]*\.)?kgbsearch\.org https?:\/\/([^\/]*\.)?khawkslaxfan51\.blogspot\.com https?:\/\/([^\/]*\.)?khlnbo3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ki-westly\.blogspot\.com https?:\/\/([^\/]*\.)?kiboric\.net https?:\/\/([^\/]*\.)?kicfmaudio\.com https?:\/\/([^\/]*\.)?kicklikegirls\.info https?:\/\/([^\/]*\.)?kijub-free-porn-video-v\.blogspot\.com https?:\/\/([^\/]*\.)?kingdom\.webmelia\.com https?:\/\/([^\/]*\.)?kingofpics-com-beib6jsm5d\.blogspot\.com https?:\/\/([^\/]*\.)?kingofpics-com-c8f1bag\.blogspot\.com https?:\/\/([^\/]*\.)?kipredinstitute\.org https?:\/\/([^\/]*\.)?kiqi-airplane\.blogspot\.com https?:\/\/([^\/]*\.)?kirsten-dunst-boob-slip\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?kiska2\.com https?:\/\/([^\/]*\.)?kissing-foot\.gameover\.in\.ua https?:\/\/([^\/]*\.)?kissing-her-ass\.medved\.od\.ua https?:\/\/([^\/]*\.)?kitchen-apron\.keckins\.be https?:\/\/([^\/]*\.)?kitchenrebuilding\.com https?:\/\/([^\/]*\.)?kiudcb0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kjbz0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kjor4\.szm\.sk https?:\/\/([^\/]*\.)?kkkpd\.szm\.sk https?:\/\/([^\/]*\.)?kkvalve\.com\.cn https?:\/\/([^\/]*\.)?klacim\.yi\.org https?:\/\/([^\/]*\.)?klasik111\.php5\.cz https?:\/\/([^\/]*\.)?kleinerachel\.blogspot\.com https?:\/\/([^\/]*\.)?klohy\.info https?:\/\/([^\/]*\.)?kmxab\.myfreewebhost\.org https?:\/\/([^\/]*\.)?knkbact\.myfreewebhost\.org https?:\/\/([^\/]*\.)?knzfpca\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ko-paris-hilton-sex-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?koberec\.com https?:\/\/([^\/]*\.)?koled-porn-video-z\.blogspot\.com https?:\/\/([^\/]*\.)?kom4um\.com https?:\/\/([^\/]*\.)?koncatina\.dtdns\.net https?:\/\/([^\/]*\.)?konstantine01\.blogspot\.com https?:\/\/([^\/]*\.)?kordirect\.com https?:\/\/([^\/]*\.)?kos123\.dtdns\.net https?:\/\/([^\/]*\.)?kostya\.cabspace\.com https?:\/\/([^\/]*\.)?kpdsvd9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kpqf2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kpzq6\.szm\.sk https?:\/\/([^\/]*\.)?krakatoa\.slyip\.com https?:\/\/([^\/]*\.)?krakon\.republika\.pl https?:\/\/([^\/]*\.)?krasnota\.flnet\.org https?:\/\/([^\/]*\.)?krbd2\.szm\.sk https?:\/\/([^\/]*\.)?kreco\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ksbj5\.szm\.sk https?:\/\/([^\/]*\.)?ksiegagosci\.info https?:\/\/([^\/]*\.)?ktbug1373\.blogspot\.com https?:\/\/([^\/]*\.)?ktrv2\.szm\.sk https?:\/\/([^\/]*\.)?ku-whatnot\.blogspot\.com https?:\/\/([^\/]*\.)?kucitok\.forumculture\.net https?:\/\/([^\/]*\.)?kulhain\.blogspot\.com https?:\/\/([^\/]*\.)?kunshalawyer\.com https?:\/\/([^\/]*\.)?kvehuj8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kvywc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kwscx\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kwvi\.com https?:\/\/([^\/]*\.)?kybel\.fetftp\.nu https?:\/\/([^\/]*\.)?kybele\.psych\.cornell\.edu https?:\/\/([^\/]*\.)?kyjcz\.sunp\.com https?:\/\/([^\/]*\.)?kymnruw\.myfreewebhost\.org https?:\/\/([^\/]*\.)?kymyn\.info https?:\/\/([^\/]*\.)?l-paris-hilton-sex-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?l\.0s48\.info https?:\/\/([^\/]*\.)?l1ttleblacky\.blogspot\.com https?:\/\/([^\/]*\.)?la-ringtones\.com https?:\/\/([^\/]*\.)?laaceler\.blogcu\.com https?:\/\/([^\/]*\.)?labelprinter\.printer\.net\.cn https?:\/\/([^\/]*\.)?labladar\.forumzen\.com https?:\/\/([^\/]*\.)?lacchi\.lolforum\.net https?:\/\/([^\/]*\.)?laconia4\.info https?:\/\/([^\/]*\.)?ladylike\.hostcroc\.com https?:\/\/([^\/]*\.)?lake-baikal\.info https?:\/\/([^\/]*\.)?laked\.info https?:\/\/([^\/]*\.)?lalisit\.heavenforum\.com https?:\/\/([^\/]*\.)?lalisit\.highforum\.net https?:\/\/([^\/]*\.)?lamalinks-com-ceefq\.blogspot\.com https?:\/\/([^\/]*\.)?lamisilbuy\.drive\.to https?:\/\/([^\/]*\.)?lamisilbuygeneric\.dive\.to https?:\/\/([^\/]*\.)?lamisilcheap\.drink\.to https?:\/\/([^\/]*\.)?lamisilgeneric\.drop\.to https?:\/\/([^\/]*\.)?lamisilgenericcheap\.dive\.to https?:\/\/([^\/]*\.)?lanasbigboobs-com-mxm7\.blogspot\.com https?:\/\/([^\/]*\.)?lanasbigboobs-com-repif\.blogspot\.com https?:\/\/([^\/]*\.)?laorer\.ephpbb\.com https?:\/\/([^\/]*\.)?lapelcna\.forumzen\.com https?:\/\/([^\/]*\.)?lapoer\.dynamicforum\.net https?:\/\/([^\/]*\.)?large-lingerie-naughty-woman\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?las-vegas-gay-night-club\.gameover\.in\.ua https?:\/\/([^\/]*\.)?las-vegas-house\.nm\.ru https?:\/\/([^\/]*\.)?laser-drilled-diamonds\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?laser-wave\.com https?:\/\/([^\/]*\.)?laskai\.com https?:\/\/([^\/]*\.)?lasmercedessite\.info https?:\/\/([^\/]*\.)?lassie\.webmelia\.com https?:\/\/([^\/]*\.)?last-minute-travel\.ebem\.info https?:\/\/([^\/]*\.)?latex-ass\.gameover\.in\.ua https?:\/\/([^\/]*\.)?latex-dress\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?latex-foam-mattress-toppers\.protime\.in\.ua https?:\/\/([^\/]*\.)?latex-mistress\.protime\.in\.ua https?:\/\/([^\/]*\.)?latex-sluts\.protime\.in\.ua https?:\/\/([^\/]*\.)?latex-swim-wear\.gameover\.in\.ua https?:\/\/([^\/]*\.)?latin\.hostaim\.com https?:\/\/([^\/]*\.)?latina-porn-clip-blog11q\.blogspot\.com https?:\/\/([^\/]*\.)?latina-porn-clip-blogden\.blogspot\.com https?:\/\/([^\/]*\.)?latinata\.galeon\.com https?:\/\/([^\/]*\.)?latoarril\.myrealboard\.com https?:\/\/([^\/]*\.)?laus-rmore\.blogspot\.com https?:\/\/([^\/]*\.)?lavemi\.com https?:\/\/([^\/]*\.)?lavender-dove\.blogspot\.com https?:\/\/([^\/]*\.)?lavor0\.info https?:\/\/([^\/]*\.)?law-school\.hotmail\.ru https?:\/\/([^\/]*\.)?law1degree\.chat\.ru https?:\/\/([^\/]*\.)?law2school\.chat\.ru https?:\/\/([^\/]*\.)?lawrencegillies\.blogspot\.com https?:\/\/([^\/]*\.)?lawyer\.ebloggy\.com https?:\/\/([^\/]*\.)?laynamarya\.blogspot\.com https?:\/\/([^\/]*\.)?laythekatcom\.pupava\.dtdns\.net https?:\/\/([^\/]*\.)?lbgetm9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lbrnrme\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lczjunf\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ldrdf\.myfreewebhost\.org https?:\/\/([^\/]*\.)?le-alma\.blogspot\.com https?:\/\/([^\/]*\.)?le-big-free-movie-porn-cek\.blogspot\.com https?:\/\/([^\/]*\.)?leadora\.blogspot\.com https?:\/\/([^\/]*\.)?leannrae85\.blogspot\.com https?:\/\/([^\/]*\.)?lebu-adidas\.blogspot\.com https?:\/\/([^\/]*\.)?ledego\.com https?:\/\/([^\/]*\.)?ledgiest\.xhostar\.com https?:\/\/([^\/]*\.)?ledkrx\.com https?:\/\/([^\/]*\.)?ledled\.nease\.net https?:\/\/([^\/]*\.)?leebuc\.forumzen\.com https?:\/\/([^\/]*\.)?leeticarus\.blogspot\.com https?:\/\/([^\/]*\.)?leetvilt\.jconserv\.net https?:\/\/([^\/]*\.)?left-leg-numbness\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?leg-exercise\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?leg-in-stocking\.gameover\.in\.ua https?:\/\/([^\/]*\.)?leg-in-tan-pantie-hose\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?leg-neurontin-restless-syndrome\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?leg-preteen-spread\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?leg-shaved-spread\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?leisure-suit-larry-magna-cum-laude-nudity-patch\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?leisure-suit-larry-magna-cum-laude-uncut-and-uncensored\.medved\.od\.ua https?:\/\/([^\/]*\.)?leo-the-bastet\.site\.voila\.fr https?:\/\/([^\/]*\.)?leopard-lady\.blogspot\.com https?:\/\/([^\/]*\.)?leroyhotel\.com https?:\/\/([^\/]*\.)?lesbian-anal-porn\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?lesbian-fisting-dvd\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?lesbian-fucking-eachother\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?lesbian-girl-scout\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?lesbian-group-masturbation\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?lesbian-oral-sex\.protime\.in\.ua https?:\/\/([^\/]*\.)?lesbian-personals-ads\.gameover\.in\.ua https?:\/\/([^\/]*\.)?lesbian-personals-yahoo\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?lesbian-porn-clip-blog6e5\.blogspot\.com https?:\/\/([^\/]*\.)?lesbian-sex-teen\.medved\.od\.ua https?:\/\/([^\/]*\.)?lesbian-sharing-dildo\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?lesbian-tit-bondage\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?lesbian-web-chat-and-cam\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?lesbians\.coz\.in https?:\/\/([^\/]*\.)?letoacel-or\.xa\.pl https?:\/\/([^\/]*\.)?letobocpas\.frbb\.net https?:\/\/([^\/]*\.)?letocvi\.goodbb\.net https?:\/\/([^\/]*\.)?letomon\.graphforum\.com https?:\/\/([^\/]*\.)?letorelpas\.xa\.pl https?:\/\/([^\/]*\.)?lettera-di-presentazione\.zoom4x\.info https?:\/\/([^\/]*\.)?lettersof-love\.blogspot\.com https?:\/\/([^\/]*\.)?levitra\.1\.p2l\.info https?:\/\/([^\/]*\.)?levitra\.rx4\.org https?:\/\/([^\/]*\.)?levitra\.seesaa\.net https?:\/\/([^\/]*\.)?levitra\.skocz\.net https?:\/\/([^\/]*\.)?levitraejv\.blogspot\.com https?:\/\/([^\/]*\.)?levitras\.eu\.tf https?:\/\/([^\/]*\.)?levitraxpb\.blogspot\.com https?:\/\/([^\/]*\.)?lex-interracial\.hoffer\.ipupdater\.com https?:\/\/([^\/]*\.)?lexapro\.1\.p2l\.info https?:\/\/([^\/]*\.)?lexaprobuyonline\.buzznet\.com https?:\/\/([^\/]*\.)?lexpov-com\.cornut\.ipupdater\.com https?:\/\/([^\/]*\.)?leyeager\.ifrance\.com https?:\/\/([^\/]*\.)?lezbomovies-com-dp3256w4cb\.blogspot\.com https?:\/\/([^\/]*\.)?lezbomovies-com-duvuv\.blogspot\.com https?:\/\/([^\/]*\.)?lezbomovies-com-dw7q2s6l\.blogspot\.com https?:\/\/([^\/]*\.)?lf-pm\.com https?:\/\/([^\/]*\.)?lfamas\.com https?:\/\/([^\/]*\.)?lhbtx\.szm\.sk https?:\/\/([^\/]*\.)?lhnzkp9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?li-adult-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?li6or6olo\.dl\.pl https?:\/\/([^\/]*\.)?lianjieqi\.dzsc\.com https?:\/\/([^\/]*\.)?liaozhi\.org https?:\/\/([^\/]*\.)?libasac\.ephpbb\.com https?:\/\/([^\/]*\.)?libertyliga\.com https?:\/\/([^\/]*\.)?library\.cshl\.edu https?:\/\/([^\/]*\.)?libraryofthumbs-com-oyz1qboq\.blogspot\.com https?:\/\/([^\/]*\.)?licecile\.dl\.pl https?:\/\/([^\/]*\.)?licnarol\.dl\.pl https?:\/\/([^\/]*\.)?lidaror\.blogcu\.com https?:\/\/([^\/]*\.)?lidiarac\.forumzen\.com https?:\/\/([^\/]*\.)?lidomca\.graphforum\.com https?:\/\/([^\/]*\.)?lidomca\.highforum\.net https?:\/\/([^\/]*\.)?lidompas\.td\.pl https?:\/\/([^\/]*\.)?lidomta\.frbb\.net https?:\/\/([^\/]*\.)?lidupett\.forumzen\.com https?:\/\/([^\/]*\.)?lifeinsurance-x\.com https?:\/\/([^\/]*\.)?lifewave\.com https?:\/\/([^\/]*\.)?ligettr\.dl\.pl https?:\/\/([^\/]*\.)?light365\.com https?:\/\/([^\/]*\.)?lightspeed-state\.hostithere\.org https?:\/\/([^\/]*\.)?lihach\.com https?:\/\/([^\/]*\.)?lijoho-video-porn-gratis\.blogspot\.com https?:\/\/([^\/]*\.)?likozrut\.stabilt\.se https?:\/\/([^\/]*\.)?lilaleemcrightrealty\.com https?:\/\/([^\/]*\.)?lilaliko\.dynamicbb\.com https?:\/\/([^\/]*\.)?lile\.asp2\.cz https?:\/\/([^\/]*\.)?lilett\.blogspot\.com https?:\/\/([^\/]*\.)?lilhaq\.blogspot\.com https?:\/\/([^\/]*\.)?lilo-n\.blogspot\.com https?:\/\/([^\/]*\.)?lilotu\.com https?:\/\/([^\/]*\.)?linarcbo\.forumzen\.com https?:\/\/([^\/]*\.)?lincweb\.cacs\.louisiana\.edu https?:\/\/([^\/]*\.)?lindsaylife\.com https?:\/\/([^\/]*\.)?lineance-facial-hair-removal-cream\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?linefreeinternet\.info https?:\/\/([^\/]*\.)?linemd\.com https?:\/\/([^\/]*\.)?lingerie-babes-video\.gameover\.in\.ua https?:\/\/([^\/]*\.)?lingerie-girl-pic\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?lingerie-guide\.org https?:\/\/([^\/]*\.)?lingerie-sex-photo\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?lingerie-videos-com-wcu8\.blogspot\.com https?:\/\/([^\/]*\.)?lingshengdown\.com https?:\/\/([^\/]*\.)?lingua-francese\.host24h\.info https?:\/\/([^\/]*\.)?link-o-rama-com-t5xhd\.blogspot\.com https?:\/\/([^\/]*\.)?link-o-rama-com-toz5x8i2ez\.blogspot\.com https?:\/\/([^\/]*\.)?linserch\.com https?:\/\/([^\/]*\.)?lioral\.dl\.pl https?:\/\/([^\/]*\.)?lioumon\.lolforum\.net https?:\/\/([^\/]*\.)?lipitor\.skocz\.net https?:\/\/([^\/]*\.)?lipstick-love\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?lipstick-mac\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?lipus\.org https?:\/\/([^\/]*\.)?lirolbo\.goodforum\.net https?:\/\/([^\/]*\.)?lirolbo\.grafbb\.com https?:\/\/([^\/]*\.)?lisinopril\.no-ip\.info https?:\/\/([^\/]*\.)?list\.eng\.utah\.edu https?:\/\/([^\/]*\.)?listinna772\.galeon\.com https?:\/\/([^\/]*\.)?listpharm\.com https?:\/\/([^\/]*\.)?lists\.gatech\.edu https?:\/\/([^\/]*\.)?litaacel\.lolforum\.net https?:\/\/([^\/]*\.)?litadal\.myrealboard\.com https?:\/\/([^\/]*\.)?litayj0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?literotica-com-t3yx\.blogspot\.com https?:\/\/([^\/]*\.)?literotica-com-tkncy\.blogspot\.com https?:\/\/([^\/]*\.)?litrget\.jc\.pl https?:\/\/([^\/]*\.)?little-april-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?little-april-masturbating-movie\.medved\.od\.ua https?:\/\/([^\/]*\.)?little-dicks-bay\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?little-teen-fuck\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?littledevildoubt\.com https?:\/\/([^\/]*\.)?littlesunshine\.50webs\.org https?:\/\/([^\/]*\.)?litumdet\.forumzen\.com https?:\/\/([^\/]*\.)?liupy\.110mb\.com https?:\/\/([^\/]*\.)?live-gay-video-chat\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?live-jasmine-cams\.com https?:\/\/([^\/]*\.)?livejasmin-com-abc\.blogspot\.com https?:\/\/([^\/]*\.)?livejasmin-com-abz\.blogspot\.com https?:\/\/([^\/]*\.)?livejasmin-com-aky\.blogspot\.com https?:\/\/([^\/]*\.)?livejasmin-com-qujef\.blogspot\.com https?:\/\/([^\/]*\.)?livescore\.esguay\.com https?:\/\/([^\/]*\.)?livescore\.ven\.bz https?:\/\/([^\/]*\.)?livesupportpal\.com https?:\/\/([^\/]*\.)?liviral\.myrealboard\.com https?:\/\/([^\/]*\.)?lixin642\.com https?:\/\/([^\/]*\.)?liymcc0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lizardofoz\.com https?:\/\/([^\/]*\.)?lizas\.asp2\.cz https?:\/\/([^\/]*\.)?lizscottrawson\.com https?:\/\/([^\/]*\.)?lkrzfkg\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ll-four-sterto\.blogspot\.com https?:\/\/([^\/]*\.)?llillith\.blogspot\.com https?:\/\/([^\/]*\.)?lll1l\.info https?:\/\/([^\/]*\.)?llline\.info https?:\/\/([^\/]*\.)?llpcoil\.myfreewebhost\.org https?:\/\/([^\/]*\.)?llsky\.net https?:\/\/([^\/]*\.)?lm4nmu\.com https?:\/\/([^\/]*\.)?lmyzm\.szm\.sk https?:\/\/([^\/]*\.)?lnalpas\.myrealboard\.com https?:\/\/([^\/]*\.)?lnki9\.szm\.sk https?:\/\/([^\/]*\.)?lnqfa\.fr33webhost\.com https?:\/\/([^\/]*\.)?lnqixlz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?loan-unsecuredcxp\.blogspot\.com https?:\/\/([^\/]*\.)?loans-insurance\.net https?:\/\/([^\/]*\.)?lodge\.webmelia\.com https?:\/\/([^\/]*\.)?lodita-com-dya6s22zu\.blogspot\.com https?:\/\/([^\/]*\.)?lodita-com-dz\.blogspot\.com https?:\/\/([^\/]*\.)?loestrin\.1\.p2l\.info https?:\/\/([^\/]*\.)?logast\.com https?:\/\/([^\/]*\.)?logowap\.com https?:\/\/([^\/]*\.)?lojlo\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lojunbas\.forumzen\.com https?:\/\/([^\/]*\.)?lola-providence\.blogspot\.com https?:\/\/([^\/]*\.)?lolabear1121\.blogspot\.com https?:\/\/([^\/]*\.)?lolaparris\.freetzi\.com https?:\/\/([^\/]*\.)?loliti-com-c5m8mt\.blogspot\.com https?:\/\/([^\/]*\.)?lolovi\.naturalforum\.net https?:\/\/([^\/]*\.)?lomsts\.com https?:\/\/([^\/]*\.)?londra-ristorante\.freehostss\.info https?:\/\/([^\/]*\.)?lonely-wolf-com-rjqlm1d6\.blogspot\.com https?:\/\/([^\/]*\.)?long-porn-clip-info67s\.blogspot\.com https?:\/\/([^\/]*\.)?long-porn-clip-infosm4\.blogspot\.com https?:\/\/([^\/]*\.)?longestlist-com-b6\.blogspot\.com https?:\/\/([^\/]*\.)?longestlist-com-b683g4ik\.blogspot\.com https?:\/\/([^\/]*\.)?longestlist-hb\.blogspot\.com https?:\/\/([^\/]*\.)?longestlist-hohen\.blogspot\.com https?:\/\/([^\/]*\.)?longonline\.net https?:\/\/([^\/]*\.)?longvideos-net-gq78qyba\.blogspot\.com https?:\/\/([^\/]*\.)?longxiong\.ebloggy\.com https?:\/\/([^\/]*\.)?lony\.info https?:\/\/([^\/]*\.)?look-at-his-dick\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?lookcity\.com https?:\/\/([^\/]*\.)?lopata\.snusk\.nu https?:\/\/([^\/]*\.)?lopressorhct\.sblog\.cz https?:\/\/([^\/]*\.)?lorazepams\.ru\.tf https?:\/\/([^\/]*\.)?lortab-911\.coz\.in https?:\/\/([^\/]*\.)?lortab\.xwiki\.com https?:\/\/([^\/]*\.)?losangelestickets\.org https?:\/\/([^\/]*\.)?lotausch\.ifrance\.com https?:\/\/([^\/]*\.)?loudmp3\.net https?:\/\/([^\/]*\.)?louisianamortgage-x\.com https?:\/\/([^\/]*\.)?lovefuckk-com-eg7gx\.blogspot\.com https?:\/\/([^\/]*\.)?lovefuckk-com-et2x2g1sk\.blogspot\.com https?:\/\/([^\/]*\.)?lovefuckk-com-setos\.blogspot\.com https?:\/\/([^\/]*\.)?lovegirlsonline\.info https?:\/\/([^\/]*\.)?lovejuliet3\.blogspot\.com https?:\/\/([^\/]*\.)?lovetgp-com-d74h1ed3o\.blogspot\.com https?:\/\/([^\/]*\.)?lowbudgetsuccess\.info https?:\/\/([^\/]*\.)?lqsbjau\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lrff5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lriwaq-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?lrlep\.szm\.sk https?:\/\/([^\/]*\.)?ltfl5\.szm\.sk https?:\/\/([^\/]*\.)?ltntp\.szm\.sk https?:\/\/([^\/]*\.)?lu-porn-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?lucking\.com\.cn https?:\/\/([^\/]*\.)?lucqt\.szm\.sk https?:\/\/([^\/]*\.)?luridess\.125mb\.com https?:\/\/([^\/]*\.)?lusi-ada\.blogspot\.com https?:\/\/([^\/]*\.)?lustjob\.info https?:\/\/([^\/]*\.)?lustwork\.info https?:\/\/([^\/]*\.)?lusvqm-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?lutaltli\.naturalforum\.net https?:\/\/([^\/]*\.)?lutrilar\.naturalforum\.net https?:\/\/([^\/]*\.)?lutzalvi\.naturalforum\.net https?:\/\/([^\/]*\.)?lvanrts\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lvsi\.ebloggy\.com https?:\/\/([^\/]*\.)?lwdf2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lwkmewp\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lycosss\.com https?:\/\/([^\/]*\.)?lyganbaili\.com https?:\/\/([^\/]*\.)?lyhbs\.myfreewebhost\.org https?:\/\/([^\/]*\.)?lying-facial-expression\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?lyndawyllie\.com https?:\/\/([^\/]*\.)?lzouv\.szm\.sk https?:\/\/([^\/]*\.)?m-i-a-s-m-a\.blogspot\.com https?:\/\/([^\/]*\.)?m-sr\.net https?:\/\/([^\/]*\.)?m-teens-000\.blogspot\.com https?:\/\/([^\/]*\.)?m\.domaindlx\.com https?:\/\/([^\/]*\.)?m2mvc\.com https?:\/\/([^\/]*\.)?machi-neko\.blogspot\.com https?:\/\/([^\/]*\.)?mackenzie-kayne\.hostingtree\.org https?:\/\/([^\/]*\.)?macromob\.com https?:\/\/([^\/]*\.)?madesukadana\.com https?:\/\/([^\/]*\.)?madthumbs-com-hcq1m1\.blogspot\.com https?:\/\/([^\/]*\.)?mafy69\.blogspot\.com https?:\/\/([^\/]*\.)?magical-casino\.com https?:\/\/([^\/]*\.)?magneticwoman88\.blogspot\.com https?:\/\/([^\/]*\.)?maidenpeace\.com https?:\/\/([^\/]*\.)?main\.g2\.bx\.psu\.edu https?:\/\/([^\/]*\.)?mainemortgage-x\.com https?:\/\/([^\/]*\.)?maitybaba\.blogspot\.com https?:\/\/([^\/]*\.)?makaky\.dtdns\.net https?:\/\/([^\/]*\.)?makblxn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?make-my-dick-hard\.protime\.in\.ua https?:\/\/([^\/]*\.)?makemoneyfast\.us https?:\/\/([^\/]*\.)?makeup\.ifreehosts\.net https?:\/\/([^\/]*\.)?male-hairy-leg\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?malinka\.b0b\.org https?:\/\/([^\/]*\.)?mama-rachelbeth\.blogspot\.com https?:\/\/([^\/]*\.)?mamaswarm\.sultryserver\.com https?:\/\/([^\/]*\.)?man-caught-wearing-womens-lingerie\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?man-ring\.boom\.ru https?:\/\/([^\/]*\.)?man-rings\.boom\.ru https?:\/\/([^\/]*\.)?man-skin\.nightmail\.ru https?:\/\/([^\/]*\.)?man-skin\.nm\.ru https?:\/\/([^\/]*\.)?man-woman-fucking-video-clip\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?man_skin\.chat\.ru https?:\/\/([^\/]*\.)?managementproperty\.us https?:\/\/([^\/]*\.)?manka-kapak\.blogspot\.com https?:\/\/([^\/]*\.)?manoke\.cn https?:\/\/([^\/]*\.)?map4um\.com https?:\/\/([^\/]*\.)?mapas6\.com https?:\/\/([^\/]*\.)?maradona\.stabilt\.se https?:\/\/([^\/]*\.)?marhula\.weedns\.com https?:\/\/([^\/]*\.)?marinol\.xwiki\.com https?:\/\/([^\/]*\.)?mario-lopez-gayfgg\.blogspot\.com https?:\/\/([^\/]*\.)?marketing1degree\.chat\.ru https?:\/\/([^\/]*\.)?marklar\.republika\.pl https?:\/\/([^\/]*\.)?marti-adp\.iespana\.es https?:\/\/([^\/]*\.)?marucollet\.jp https?:\/\/([^\/]*\.)?maryannec\.com https?:\/\/([^\/]*\.)?marylandmortgage-x\.com https?:\/\/([^\/]*\.)?masfac\.com https?:\/\/([^\/]*\.)?masiki\.110mb\.com https?:\/\/([^\/]*\.)?masiti\.com https?:\/\/([^\/]*\.)?massachusetts-hs\.newmail\.ru https?:\/\/([^\/]*\.)?massachusettsmortgage-x\.com https?:\/\/([^\/]*\.)?mast3t\.com https?:\/\/([^\/]*\.)?master-z-great\.blogspot\.com https?:\/\/([^\/]*\.)?master1degree\.chat\.ru https?:\/\/([^\/]*\.)?master2005degree\.chat\.ru https?:\/\/([^\/]*\.)?masterboat\.ru https?:\/\/([^\/]*\.)?mastun\.com https?:\/\/([^\/]*\.)?masturbating-shemale-video\.protime\.in\.ua https?:\/\/([^\/]*\.)?masturbation-techniques1\.notlong\.com https?:\/\/([^\/]*\.)?masvit\.com https?:\/\/([^\/]*\.)?matching-mom-and-baby-outfit\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?matrac\.loopback\.nu https?:\/\/([^\/]*\.)?mattsvids-com-aqjt\.blogspot\.com https?:\/\/([^\/]*\.)?mature-bitches-com-ccvi3l\.blogspot\.com https?:\/\/([^\/]*\.)?mature-black-female\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?mature-blonde-fuck\.protime\.in\.ua https?:\/\/([^\/]*\.)?mature-blonde-movie\.protime\.in\.ua https?:\/\/([^\/]*\.)?mature-blonde-toying\.gameover\.in\.ua https?:\/\/([^\/]*\.)?mature-british-granny\.gameover\.in\.ua https?:\/\/([^\/]*\.)?mature-clip\.babubi\.net https?:\/\/([^\/]*\.)?mature-for-you-com-mt66\.blogspot\.com https?:\/\/([^\/]*\.)?mature-gang-bang\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?mature-gay-black\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?mature-gay-man-gallery\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?mature-man-photo\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?mature-man-picture\.gameover\.in\.ua https?:\/\/([^\/]*\.)?mature-milf-milfmuffin-com\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?mature-nl-kss7\.blogspot\.com https?:\/\/([^\/]*\.)?mature-pantie-upskirt\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?mature-pic-post\.medved\.od\.ua https?:\/\/([^\/]*\.)?mature-porn-clip-newsj8c\.blogspot\.com https?:\/\/([^\/]*\.)?mature-porn-clip-zone5s0\.blogspot\.com https?:\/\/([^\/]*\.)?mature-porn-movie-sihu\.blogspot\.com https?:\/\/([^\/]*\.)?mature-porn-video-ku\.blogspot\.com https?:\/\/([^\/]*\.)?mature-post-com-iecsmld78\.blogspot\.com https?:\/\/([^\/]*\.)?mature-redhead\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?mature-secret-com-r6t85u5\.blogspot\.com https?:\/\/([^\/]*\.)?mature-sex-orgy\.medved\.od\.ua https?:\/\/([^\/]*\.)?mature-sex-thumb\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?mature-throat-fuck\.medved\.od\.ua https?:\/\/([^\/]*\.)?mature-wife-in-pantie-hose\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?mature-woman-vs-young\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?mature\.coz\.in https?:\/\/([^\/]*\.)?matureandyoung-com-bgf1\.blogspot\.com https?:\/\/([^\/]*\.)?maturedaily-net-oipq5\.blogspot\.com https?:\/\/([^\/]*\.)?maturedaily-net-oywdf7pj0\.blogspot\.com https?:\/\/([^\/]*\.)?maturehit-com-w8\.blogspot\.com https?:\/\/([^\/]*\.)?maturehit-com-zifid\.blogspot\.com https?:\/\/([^\/]*\.)?maximumsearch\.net https?:\/\/([^\/]*\.)?maybachexelero\.org https?:\/\/([^\/]*\.)?mayphyoe\.blogspot\.com https?:\/\/([^\/]*\.)?maypopmusic\.cn https?:\/\/([^\/]*\.)?mazda-6\.keckins\.be https?:\/\/([^\/]*\.)?mazdamaindealer\.cn https?:\/\/([^\/]*\.)?mazecreatorhosting\.net https?:\/\/([^\/]*\.)?mba1degree\.chat\.ru https?:\/\/([^\/]*\.)?mbiu1\.szm\.sk https?:\/\/([^\/]*\.)?mbkxs\.szm\.sk https?:\/\/([^\/]*\.)?mbsz0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mcfontai\.dl\.pl https?:\/\/([^\/]*\.)?mciicvn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mckeithl\.ifrance\.com https?:\/\/([^\/]*\.)?mcynwst\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mdfo2\.szm\.sk https?:\/\/([^\/]*\.)?mdna8\.szm\.sk https?:\/\/([^\/]*\.)?mdoq5\.szm\.sk https?:\/\/([^\/]*\.)?meadelante\.blogspot\.com https?:\/\/([^\/]*\.)?med-ph\.com https?:\/\/([^\/]*\.)?medbig\.com https?:\/\/([^\/]*\.)?medgarsting\.info https?:\/\/([^\/]*\.)?medhls\.com https?:\/\/([^\/]*\.)?medic\.kilu\.de https?:\/\/([^\/]*\.)?medication-cheap\.com https?:\/\/([^\/]*\.)?meds-today\.com https?:\/\/([^\/]*\.)?megadyneinc\.com https?:\/\/([^\/]*\.)?megan-qt-cjg\.blogspot\.com https?:\/\/([^\/]*\.)?megaupkoad\.com https?:\/\/([^\/]*\.)?meindies\.com https?:\/\/([^\/]*\.)?melatrol\.podstavec\.yi\.org https?:\/\/([^\/]*\.)?melissa-doll\.cornut\.ipupdater\.com https?:\/\/([^\/]*\.)?melsner\.blogspot\.com https?:\/\/([^\/]*\.)?mens\.1\.p2l\.info https?:\/\/([^\/]*\.)?menshealth\.110mb\.com https?:\/\/([^\/]*\.)?meoqwzr\.myfreewebhost\.org https?:\/\/([^\/]*\.)?meridasexo\.com https?:\/\/([^\/]*\.)?meridia\.1\.p2l\.info https?:\/\/([^\/]*\.)?meridia\.edu\.tf https?:\/\/([^\/]*\.)?meridia\.hav\.pl https?:\/\/([^\/]*\.)?meridia\.skocz\.net https?:\/\/([^\/]*\.)?meridiager\.queroumforum\.com https?:\/\/([^\/]*\.)?meryland\.dtdns\.net https?:\/\/([^\/]*\.)?mesothelioma-lawyer-help\.org https?:\/\/([^\/]*\.)?meweb\.ecn\.purdue\.edu https?:\/\/([^\/]*\.)?mewqsd\.org https?:\/\/([^\/]*\.)?mgnzupi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mi-kkiechang\.ifrance\.com https?:\/\/([^\/]*\.)?mia-movies-com-g2g1\.blogspot\.com https?:\/\/([^\/]*\.)?mia-movies-e86q7ic4y7\.blogspot\.com https?:\/\/([^\/]*\.)?miami-cose-fare\.hostzz\.info https?:\/\/([^\/]*\.)?michelepug\.org https?:\/\/([^\/]*\.)?michiganmortgage-x\.com https?:\/\/([^\/]*\.)?midaslubbock\.com https?:\/\/([^\/]*\.)?midnis\.com https?:\/\/([^\/]*\.)?migree\.com https?:\/\/([^\/]*\.)?mihaso\.com https?:\/\/([^\/]*\.)?mikeinbrazil-com-k1s8higm1o\.blogspot\.com https?:\/\/([^\/]*\.)?mikeinbrazil-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?mikesapartment-com-iwb02e1v\.blogspot\.com https?:\/\/([^\/]*\.)?mikesapartment-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?mikewsd\.org https?:\/\/([^\/]*\.)?miks1\.szm\.sk https?:\/\/([^\/]*\.)?miku-thu-vilu\.110mb\.com https?:\/\/([^\/]*\.)?mildew\.789mb\.com https?:\/\/([^\/]*\.)?milf-blow-job-gallery\.gameover\.in\.ua https?:\/\/([^\/]*\.)?milf-busty-fucking\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?milf-hunter-kate\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?milf-mature-big-tit\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?milf-tgp-wife\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?milfhunter-com-h2a7q51\.blogspot\.com https?:\/\/([^\/]*\.)?milflessons-com-bh6\.blogspot\.com https?:\/\/([^\/]*\.)?milfnextdoor-bk23v2p4\.blogspot\.com https?:\/\/([^\/]*\.)?milfnextdoor-w3ii\.blogspot\.com https?:\/\/([^\/]*\.)?milkmanbook-com-o7\.blogspot\.com https?:\/\/([^\/]*\.)?milkmanbook-com-rrup5f\.blogspot\.com https?:\/\/([^\/]*\.)?milkmanbook-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?milkmanbook-ods016\.blogspot\.com https?:\/\/([^\/]*\.)?milton-twins-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?mimija\.com https?:\/\/([^\/]*\.)?miniurl\.pl https?:\/\/([^\/]*\.)?minnesotamortgage-x\.com https?:\/\/([^\/]*\.)?minzec\.dynamicbb\.com https?:\/\/([^\/]*\.)?missensign\.blogspot\.com https?:\/\/([^\/]*\.)?mississippimortgage-x\.com https?:\/\/([^\/]*\.)?missourimortgage-x\.com https?:\/\/([^\/]*\.)?mitsubishicarhire\.cn https?:\/\/([^\/]*\.)?mj-net\.jp https?:\/\/([^\/]*\.)?mj\.left-page\.com https?:\/\/([^\/]*\.)?mjlvan4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mjqnxn1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mjspb\.szm\.sk https?:\/\/([^\/]*\.)?mkia3\.szm\.sk https?:\/\/([^\/]*\.)?mkiss47346\.blogspot\.com https?:\/\/([^\/]*\.)?mksahf-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?mkzvni8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mlgta\.szm\.sk https?:\/\/([^\/]*\.)?mlm-business-leader\.com https?:\/\/([^\/]*\.)?mlvej\.szm\.sk https?:\/\/([^\/]*\.)?mmm100-com-aj\.blogspot\.com https?:\/\/([^\/]*\.)?mmm100-com-cisec\.blogspot\.com https?:\/\/([^\/]*\.)?mmm100-com-tql1xojt\.blogspot\.com https?:\/\/([^\/]*\.)?mnsp\.cn https?:\/\/([^\/]*\.)?mobfiller\.com https?:\/\/([^\/]*\.)?mobic\.sytes\.net https?:\/\/([^\/]*\.)?mobile-phone-dealoft\.blogspot\.com https?:\/\/([^\/]*\.)?mobile-phone-shopmgl\.blogspot\.com https?:\/\/([^\/]*\.)?mobile-phonegsn\.blogspot\.com https?:\/\/([^\/]*\.)?mobilefamilydental\.com https?:\/\/([^\/]*\.)?mobilewallpaperkre\.blogspot\.com https?:\/\/([^\/]*\.)?mobility-scooter\.hotmail\.ru https?:\/\/([^\/]*\.)?mobility2scooter\.chat\.ru https?:\/\/([^\/]*\.)?mobprofile\.com https?:\/\/([^\/]*\.)?modelsgroup-com-wrx\.blogspot\.com https?:\/\/([^\/]*\.)?modelsgroup-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?modlang\.boisestate\.edu https?:\/\/([^\/]*\.)?moju\.net\.cn https?:\/\/([^\/]*\.)?mol-ch\.com https?:\/\/([^\/]*\.)?mom-and-son-song\.protime\.in\.ua https?:\/\/([^\/]*\.)?mom-music-video\.gameover\.in\.ua https?:\/\/([^\/]*\.)?mom-n-son\.medved\.od\.ua https?:\/\/([^\/]*\.)?mom-vs-young\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?mommia-com-h32\.blogspot\.com https?:\/\/([^\/]*\.)?mommia-com-hvr6wy\.blogspot\.com https?:\/\/([^\/]*\.)?mommia-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?moms-teaching-teens-ceb\.blogspot\.com https?:\/\/([^\/]*\.)?monbocchi\.zikforum\.com https?:\/\/([^\/]*\.)?moncnamon\.ephpbb\.com https?:\/\/([^\/]*\.)?moncnamon\.forumculture\.net https?:\/\/([^\/]*\.)?monctr\.cultureforum\.net https?:\/\/([^\/]*\.)?mondelacel\.dl\.pl https?:\/\/([^\/]*\.)?monelal\.discutfree\.com https?:\/\/([^\/]*\.)?moneta-algeria\.hostzz\.info https?:\/\/([^\/]*\.)?monjco\.blogcu\.com https?:\/\/([^\/]*\.)?monletochi\.bbgraf\.com https?:\/\/([^\/]*\.)?monokal\.dynamicforum\.net https?:\/\/([^\/]*\.)?monorget\.lolbb\.com https?:\/\/([^\/]*\.)?monpasrel\.dl\.pl https?:\/\/([^\/]*\.)?monster-cock-movie-big\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?monstersofcock-com-rvdurm2\.blogspot\.com https?:\/\/([^\/]*\.)?montana-flugsport\.com https?:\/\/([^\/]*\.)?montanamortgage-x\.com https?:\/\/([^\/]*\.)?montessori-spielzeug\.com https?:\/\/([^\/]*\.)?moody-immortal2\.blogspot\.com https?:\/\/([^\/]*\.)?morekes\.com https?:\/\/([^\/]*\.)?moremoms-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?moremoms-rj8f2r\.blogspot\.com https?:\/\/([^\/]*\.)?mortgage-911\.net https?:\/\/([^\/]*\.)?mortgagebrokers-x\.com https?:\/\/([^\/]*\.)?mortgagecompanies-x\.com https?:\/\/([^\/]*\.)?mortgagelenders-x\.com https?:\/\/([^\/]*\.)?mortgageloan-x\.com https?:\/\/([^\/]*\.)?mortgageloans-x\.com https?:\/\/([^\/]*\.)?mortgagerates-x\.com https?:\/\/([^\/]*\.)?mortgagerefinance-x\.com https?:\/\/([^\/]*\.)?mortgagerefinancing-x\.com https?:\/\/([^\/]*\.)?mortgages-411\.com https?:\/\/([^\/]*\.)?mortgagesnrefinance\.com https?:\/\/([^\/]*\.)?mosquito-ringtoneaee\.blogspot\.com https?:\/\/([^\/]*\.)?mosquitoringtonewmf\.blogspot\.com https?:\/\/([^\/]*\.)?mothershope\.com https?:\/\/([^\/]*\.)?mothrinventor\.blogspot\.com https?:\/\/([^\/]*\.)?motnolado\.org https?:\/\/([^\/]*\.)?motor-scooter\.hotmail\.ru https?:\/\/([^\/]*\.)?motorized-scooter\.hotmail\.ru https?:\/\/([^\/]*\.)?motorizedscooter\.chat\.ru https?:\/\/([^\/]*\.)?motorolaringtonesfreeucq\.blogspot\.com https?:\/\/([^\/]*\.)?motorolaringtoneskvp\.blogspot\.com https?:\/\/([^\/]*\.)?motorolaringtonesym\.blogspot\.com https?:\/\/([^\/]*\.)?moviegalleries-com-gl8\.blogspot\.com https?:\/\/([^\/]*\.)?moviepost-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?moviepost-h4s2iin\.blogspot\.com https?:\/\/([^\/]*\.)?moviesarena-com-r42rng0\.blogspot\.com https?:\/\/([^\/]*\.)?moviesarena-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?moviesgold-com-ig86ukjw\.blogspot\.com https?:\/\/([^\/]*\.)?moviesgold-com-k0\.blogspot\.com https?:\/\/([^\/]*\.)?movieshark-d0vdon27\.blogspot\.com https?:\/\/([^\/]*\.)?moviesparade-com-a3hxnn6\.blogspot\.com https?:\/\/([^\/]*\.)?movietitan-com-i6shde\.blogspot\.com https?:\/\/([^\/]*\.)?movietitan-o6i14o0\.blogspot\.com https?:\/\/([^\/]*\.)?mozzarell\.republika\.pl https?:\/\/([^\/]*\.)?mp3ringtonerxw\.blogspot\.com https?:\/\/([^\/]*\.)?mp3sunrise\.com https?:\/\/([^\/]*\.)?mpdtbq8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mpeghunter-com-cyc0bec7k\.blogspot\.com https?:\/\/([^\/]*\.)?mqirai4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mrako4\.com https?:\/\/([^\/]*\.)?mrchewsasianbeaver-bwhmc0sk\.blogspot\.com https?:\/\/([^\/]*\.)?mrchewsasianbeaver-com-omazvpr\.blogspot\.com https?:\/\/([^\/]*\.)?mrntf\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mrs-vette-hot-mom\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?mrwolfy49\.blogspot\.com https?:\/\/([^\/]*\.)?ms-dos-boot-disk\.gameover\.in\.ua https?:\/\/([^\/]*\.)?mster6\.com https?:\/\/([^\/]*\.)?mtaa5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mthelen\.250free\.com https?:\/\/([^\/]*\.)?muecst9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mughalbank\.com https?:\/\/([^\/]*\.)?mumms\.info https?:\/\/([^\/]*\.)?murdersoul\.blogspot\.com https?:\/\/([^\/]*\.)?murku-gunush\.110mb\.com https?:\/\/([^\/]*\.)?mus1ca\.info https?:\/\/([^\/]*\.)?muscle-pain-leg-cause\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?muscle-relaxers\.1\.p2l\.info https?:\/\/([^\/]*\.)?music\.spacepur\.de https?:\/\/([^\/]*\.)?musicguild\.bc\.edu https?:\/\/([^\/]*\.)?mutantalias\.blogspot\.com https?:\/\/([^\/]*\.)?muwn9\.szm\.sk https?:\/\/([^\/]*\.)?muzyr\.szm\.sk https?:\/\/([^\/]*\.)?mvoht\.szm\.sk https?:\/\/([^\/]*\.)?mvsyonh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mwqbg\.fr33webhost\.com https?:\/\/([^\/]*\.)?mwwkps6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mxmva\.szm\.sk https?:\/\/([^\/]*\.)?mxqwnn2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?my-cashadvance\.com https?:\/\/([^\/]*\.)?my-first-sex-teacherlbp\.blogspot\.com https?:\/\/([^\/]*\.)?my-friends-hot-mom-free-pic\.medved\.od\.ua https?:\/\/([^\/]*\.)?my-friends-hot-mom-lesbian\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?my-friends-hot-mom-mrs-lee\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?my-host-space\.com https?:\/\/([^\/]*\.)?my-land\.bravehost\.com https?:\/\/([^\/]*\.)?my-mortgagerates\.com https?:\/\/([^\/]*\.)?my-summit\.com https?:\/\/([^\/]*\.)?my-teensex-wikes\.blogspot\.com https?:\/\/([^\/]*\.)?myfgj\.info https?:\/\/([^\/]*\.)?myhost\.gb\.com https?:\/\/([^\/]*\.)?mymitsubishiparts\.cn https?:\/\/([^\/]*\.)?mymr\.net https?:\/\/([^\/]*\.)?mynet-poker\.com https?:\/\/([^\/]*\.)?myprintworks\.com https?:\/\/([^\/]*\.)?myrotunda\.com https?:\/\/([^\/]*\.)?mysecretmovies-com-tul73\.blogspot\.com https?:\/\/([^\/]*\.)?myseo\.com\.cn https?:\/\/([^\/]*\.)?myshcompany\.com https?:\/\/([^\/]*\.)?mysmetrix\.asp2\.cz https?:\/\/([^\/]*\.)?myspace-myspace-my\.blogspot\.com https?:\/\/([^\/]*\.)?myteepo-3\.blogspot\.com https?:\/\/([^\/]*\.)?myts\.vip\.sina\.com https?:\/\/([^\/]*\.)?mywaybackwhen\.blogspot\.com https?:\/\/([^\/]*\.)?mzaxl\.szm\.sk https?:\/\/([^\/]*\.)?mzayxt2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mzlurz8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?mzwbifn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?n-free-porn-video-sample\.blogspot\.com https?:\/\/([^\/]*\.)?n-free-video-porn\.blogspot\.com https?:\/\/([^\/]*\.)?na-hummer\.jot\.com https?:\/\/([^\/]*\.)?naacpncnetwork\.org https?:\/\/([^\/]*\.)?naarttrl\.forumzen\.com https?:\/\/([^\/]*\.)?naffpqh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?naomiserge\.info https?:\/\/([^\/]*\.)?napalerd\.forumzen\.com https?:\/\/([^\/]*\.)?napas5\.com https?:\/\/([^\/]*\.)?naprosyn500mg\.sblog\.cz https?:\/\/([^\/]*\.)?naproxen\.zapto\.org https?:\/\/([^\/]*\.)?naqowp1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nariclet\.forumzen\.com https?:\/\/([^\/]*\.)?nas7fk\.com https?:\/\/([^\/]*\.)?nasacort\.1\.p2l\.info https?:\/\/([^\/]*\.)?nasonex\.1\.p2l\.info https?:\/\/([^\/]*\.)?nastyalien-com-dk0wnd58i\.blogspot\.com https?:\/\/([^\/]*\.)?nastyalien-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?nastyrat-b7\.blogspot\.com https?:\/\/([^\/]*\.)?nastyrat-com-b8mu31h87m\.blogspot\.com https?:\/\/([^\/]*\.)?nastyrat-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?natskam\.myfreewebhost\.org https?:\/\/([^\/]*\.)?natural-skin\.nm\.ru https?:\/\/([^\/]*\.)?natural-tit-cum\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?natural_skin\.chat\.ru https?:\/\/([^\/]*\.)?naughty-com-wdk\.blogspot\.com https?:\/\/([^\/]*\.)?naughty-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?navse\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nbay2\.fr33webhost\.com https?:\/\/([^\/]*\.)?nbikkpb\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nbmhvbv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nbxc3\.szm\.sk https?:\/\/([^\/]*\.)?nchqqi4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ncpx5\.szm\.sk https?:\/\/([^\/]*\.)?ncwash\.com https?:\/\/([^\/]*\.)?nd-tli\.com https?:\/\/([^\/]*\.)?ndarj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ndnwrby\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nebraskamortgage-x\.com https?:\/\/([^\/]*\.)?nedneutr\.goodbb\.net https?:\/\/([^\/]*\.)?nedpbi3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?need-site\.com https?:\/\/([^\/]*\.)?nefariouswraith\.blogspot\.com https?:\/\/([^\/]*\.)?negozio-strumento-musicale\.19mb\.info https?:\/\/([^\/]*\.)?nejqssk\.myfreewebhost\.org https?:\/\/([^\/]*\.)?neko-adg\.blogspot\.com https?:\/\/([^\/]*\.)?nekoo\.cn https?:\/\/([^\/]*\.)?nekostar3\.blogspot\.com https?:\/\/([^\/]*\.)?nelaidla\.ifrance\.com https?:\/\/([^\/]*\.)?nelcala\.fr-bb\.com https?:\/\/([^\/]*\.)?nelior\.goodbb\.net https?:\/\/([^\/]*\.)?neri-albany\.blogspot\.com https?:\/\/([^\/]*\.)?neroj\.szm\.sk https?:\/\/([^\/]*\.)?nerve\.zyns\.com https?:\/\/([^\/]*\.)?net0551\.com https?:\/\/([^\/]*\.)?netbank\.cn https?:\/\/([^\/]*\.)?nethams\.pp\.ru https?:\/\/([^\/]*\.)?netinternetbanking\.info https?:\/\/([^\/]*\.)?netteak\.pp\.ru https?:\/\/([^\/]*\.)?nettyre\.pp\.ru https?:\/\/([^\/]*\.)?neux9\.szm\.sk https?:\/\/([^\/]*\.)?nevadamortgage-x\.com https?:\/\/([^\/]*\.)?nevados-hiking-boot\.gameover\.in\.ua https?:\/\/([^\/]*\.)?nevulo-teen-sex-video\.blogspot\.com https?:\/\/([^\/]*\.)?new-ringtonesou\.blogspot\.com https?:\/\/([^\/]*\.)?new-watches\.fasthost\.tv https?:\/\/([^\/]*\.)?newae\.info https?:\/\/([^\/]*\.)?newaf\.info https?:\/\/([^\/]*\.)?newah\.info https?:\/\/([^\/]*\.)?newai\.info https?:\/\/([^\/]*\.)?newaq\.info https?:\/\/([^\/]*\.)?newar\.info https?:\/\/([^\/]*\.)?newau\.info https?:\/\/([^\/]*\.)?newbabyface\.net https?:\/\/([^\/]*\.)?newboyu\.com https?:\/\/([^\/]*\.)?newdietpills\.bravehost\.com https?:\/\/([^\/]*\.)?newgals-com-ean\.blogspot\.com https?:\/\/([^\/]*\.)?newhampshiremortgage-x\.com https?:\/\/([^\/]*\.)?newjerseymortgage-x\.com https?:\/\/([^\/]*\.)?newmexicomortgage-x\.com https?:\/\/([^\/]*\.)?newnewsonline\.info https?:\/\/([^\/]*\.)?newob\.info https?:\/\/([^\/]*\.)?newoc\.info https?:\/\/([^\/]*\.)?newom\.info https?:\/\/([^\/]*\.)?newov\.info https?:\/\/([^\/]*\.)?newox\.info https?:\/\/([^\/]*\.)?newoz\.info https?:\/\/([^\/]*\.)?news\.101freehost\.com https?:\/\/([^\/]*\.)?news\.engin\.brown\.edu https?:\/\/([^\/]*\.)?newwesthonda\.info https?:\/\/([^\/]*\.)?newworldmen\.com https?:\/\/([^\/]*\.)?newyorkmortgage-x\.com https?:\/\/([^\/]*\.)?nexium\.1\.p2l\.info https?:\/\/([^\/]*\.)?nexiumbuy\.on\.to https?:\/\/([^\/]*\.)?nexiumbuygeneric\.snap\.to https?:\/\/([^\/]*\.)?nexiumcheap\.notrix\.ch https?:\/\/([^\/]*\.)?nexiumcheapbuy\.notrix\.de https?:\/\/([^\/]*\.)?nexiumgeneric\.dive\.to https?:\/\/([^\/]*\.)?nexxx-com-r138wgeob5\.blogspot\.com https?:\/\/([^\/]*\.)?nexxx-kc113s775\.blogspot\.com https?:\/\/([^\/]*\.)?nfbwx\.szm\.sk https?:\/\/([^\/]*\.)?nffnj\.fr33webhost\.com https?:\/\/([^\/]*\.)?nfl-cheerleader-outfit\.protime\.in\.ua https?:\/\/([^\/]*\.)?nfme8\.szm\.sk https?:\/\/([^\/]*\.)?nfpg4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nfyxtime\.com https?:\/\/([^\/]*\.)?nggleb0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nginju3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nhqkyun\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nibko\.info https?:\/\/([^\/]*\.)?nice-asian-ass-and-sex\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?nice-boob-picture\.protime\.in\.ua https?:\/\/([^\/]*\.)?niche-porn-sites\.org https?:\/\/([^\/]*\.)?nickdarula\.com https?:\/\/([^\/]*\.)?nicwan\.com https?:\/\/([^\/]*\.)?nidarim\.com https?:\/\/([^\/]*\.)?niebn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nifedipine-solubility\.tlg\.pl https?:\/\/([^\/]*\.)?nifjv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?niharpe\.dl\.pl https?:\/\/([^\/]*\.)?nihosi\.com https?:\/\/([^\/]*\.)?nika-ru\.blogspot\.com https?:\/\/([^\/]*\.)?nikkie-cole\.blogspot\.com https?:\/\/([^\/]*\.)?nimast\.com https?:\/\/([^\/]*\.)?nimit-zood\.ibelgique\.com https?:\/\/([^\/]*\.)?ninenailteen\.blogspot\.com https?:\/\/([^\/]*\.)?ninjasidestep\.com https?:\/\/([^\/]*\.)?ninostarto\.blogspot\.com https?:\/\/([^\/]*\.)?ninuni\.com https?:\/\/([^\/]*\.)?nipples-puffy-teenage\.gameover\.in\.ua https?:\/\/([^\/]*\.)?nipverify\.icspace\.net https?:\/\/([^\/]*\.)?nissan-240sx\.newmail\.ru https?:\/\/([^\/]*\.)?nissan-dealer\.newmail\.ru https?:\/\/([^\/]*\.)?nissan-frontier\.nm\.ru https?:\/\/([^\/]*\.)?nissan-motor\.nm\.ru https?:\/\/([^\/]*\.)?nissan-murano\.newmail\.ru https?:\/\/([^\/]*\.)?nissan-part\.nightmail\.ru https?:\/\/([^\/]*\.)?nissan-pathfinder\.hotmail\.ru https?:\/\/([^\/]*\.)?nissan-sentra\.hotmail\.ru https?:\/\/([^\/]*\.)?nissan-titan\.hotmail\.ru https?:\/\/([^\/]*\.)?nissan-truck\.hotmail\.ru https?:\/\/([^\/]*\.)?nissan-xterra\.hotmail\.ru https?:\/\/([^\/]*\.)?nissan_240sx\.chat\.ru https?:\/\/([^\/]*\.)?nissan_dealer\.chat\.ru https?:\/\/([^\/]*\.)?nissan_frontier\.chat\.ru https?:\/\/([^\/]*\.)?nissan_motor\.chat\.ru https?:\/\/([^\/]*\.)?nissan_murano1\.chat\.ru https?:\/\/([^\/]*\.)?nissan_part\.chat\.ru https?:\/\/([^\/]*\.)?nissan_pathfind\.chat\.ru https?:\/\/([^\/]*\.)?nissan_sentra\.chat\.ru https?:\/\/([^\/]*\.)?nissan_titan\.chat\.ru https?:\/\/([^\/]*\.)?nissan_truck\.chat\.ru https?:\/\/([^\/]*\.)?nissan_xterra\.chat\.ru https?:\/\/([^\/]*\.)?nixve\.blogspot\.com https?:\/\/([^\/]*\.)?njfc\.nease\.net https?:\/\/([^\/]*\.)?njhk\.jiuwu\.com https?:\/\/([^\/]*\.)?njhk\.yushantang\.com https?:\/\/([^\/]*\.)?njuta78\.125mb\.com https?:\/\/([^\/]*\.)?njzthvq\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nkkqq\.szm\.sk https?:\/\/([^\/]*\.)?nkxow\.szm\.sk https?:\/\/([^\/]*\.)?nkzzm\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nlexc\.fr33webhost\.com https?:\/\/([^\/]*\.)?nmagiietending\.blogspot\.com https?:\/\/([^\/]*\.)?nmwj5\.szm\.sk https?:\/\/([^\/]*\.)?nnline\.info https?:\/\/([^\/]*\.)?no-deposit-casino-bonus\.any\.pl https?:\/\/([^\/]*\.)?no-faxing-payday--loan\.blogspot\.com https?:\/\/([^\/]*\.)?no-free-sex-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?no1babes-com-juquj\.blogspot\.com https?:\/\/([^\/]*\.)?noalzel\.blogcu\.com https?:\/\/([^\/]*\.)?nobocli\.bbfr\.net https?:\/\/([^\/]*\.)?nobullhardcore-com-i7mpf5i83t\.blogspot\.com https?:\/\/([^\/]*\.)?nodb0\.szm\.sk https?:\/\/([^\/]*\.)?noelchi\.td\.pl https?:\/\/([^\/]*\.)?noeldar\.td\.pl https?:\/\/([^\/]*\.)?nofatonline\.com https?:\/\/([^\/]*\.)?nolamon\.naturalforum\.net https?:\/\/([^\/]*\.)?noletoolo\.dl\.pl https?:\/\/([^\/]*\.)?nomote4\.blogspot\.com https?:\/\/([^\/]*\.)?nopasrol\.myrealboard\.com https?:\/\/([^\/]*\.)?nord9maedchen73\.blogspot\.com https?:\/\/([^\/]*\.)?nordette\.1\.p2l\.info https?:\/\/([^\/]*\.)?norflex100mg\.sblog\.cz https?:\/\/([^\/]*\.)?normanburke\.blogspot\.com https?:\/\/([^\/]*\.)?noro-alanis\.blogspot\.com https?:\/\/([^\/]*\.)?northcarolinamortgage-x\.com https?:\/\/([^\/]*\.)?northdakotamortgage-x\.com https?:\/\/([^\/]*\.)?norvasc\.coz\.in https?:\/\/([^\/]*\.)?norwichwriters\.org https?:\/\/([^\/]*\.)?noscudom\.forumzen\.com https?:\/\/([^\/]*\.)?noseypets\.com https?:\/\/([^\/]*\.)?nostawnevets53\.blogspot\.com https?:\/\/([^\/]*\.)?not-another-teen-movie-ddw5x\.blogspot\.com https?:\/\/([^\/]*\.)?notelymphatic\.org https?:\/\/([^\/]*\.)?notereport\.info https?:\/\/([^\/]*\.)?notrocli\.zj\.pl https?:\/\/([^\/]*\.)?novanasa\.php5\.cz https?:\/\/([^\/]*\.)?novar\.darkbb\.com https?:\/\/([^\/]*\.)?noviac\.jc\.pl https?:\/\/([^\/]*\.)?nox-teeniefiles-com\.blogspot\.com https?:\/\/([^\/]*\.)?npchwp9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nqfahsc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nqkt4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nqllo\.fr33webhost\.com https?:\/\/([^\/]*\.)?nqlp7\.fr33webhost\.com https?:\/\/([^\/]*\.)?nqod6\.szm\.sk https?:\/\/([^\/]*\.)?nqquc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nqyz6\.fr33webhost\.com https?:\/\/([^\/]*\.)?nsstc\.uah\.edu https?:\/\/([^\/]*\.)?nsxslk5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nthfind\.com https?:\/\/([^\/]*\.)?nu-alicia\.blogspot\.com https?:\/\/([^\/]*\.)?nucs2\.szm\.sk https?:\/\/([^\/]*\.)?nuddxy-free-video\.blogspot\.com https?:\/\/([^\/]*\.)?nude-ass-video\.protime\.in\.ua https?:\/\/([^\/]*\.)?nude-lingerie-model-photo\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?nude-little-ass\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?nude-teacher\.com https?:\/\/([^\/]*\.)?nudecelebritypictures-c6ob080\.blogspot\.com https?:\/\/([^\/]*\.)?nudecelebritypictures-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?nudecelebritypictures-nu-hqb65kdn\.blogspot\.com https?:\/\/([^\/]*\.)?nudestarz-com-xurig\.blogspot\.com https?:\/\/([^\/]*\.)?nudistlog-com-oygsrji75\.blogspot\.com https?:\/\/([^\/]*\.)?nugo-aerobics\.blogspot\.com https?:\/\/([^\/]*\.)?nuje9\.szm\.sk https?:\/\/([^\/]*\.)?numbness-in-right-leg\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?numimb\.com https?:\/\/([^\/]*\.)?numr2\.szm\.sk https?:\/\/([^\/]*\.)?nunikal\.stabilt\.se https?:\/\/([^\/]*\.)?nuqfz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nurglesnymphs-com-nuxow\.blogspot\.com https?:\/\/([^\/]*\.)?nurs-employment\.boom\.ru https?:\/\/([^\/]*\.)?nurs2employment\.chat\.ru https?:\/\/([^\/]*\.)?nurse-fucking-video\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?nursi2-education\.boom\.ru https?:\/\/([^\/]*\.)?nursin-education\.boom\.ru https?:\/\/([^\/]*\.)?nursin2education\.chat\.ru https?:\/\/([^\/]*\.)?nursing-career\.boom\.ru https?:\/\/([^\/]*\.)?nursing-college\.boom\.ru https?:\/\/([^\/]*\.)?nursing-degree\.boom\.ru https?:\/\/([^\/]*\.)?nursing-degree\.fromru\.com https?:\/\/([^\/]*\.)?nursing-degree\.pochta\.ru https?:\/\/([^\/]*\.)?nursing-home\.boom\.ru https?:\/\/([^\/]*\.)?nursing-home\.land\.ru https?:\/\/([^\/]*\.)?nursing-home\.pochta\.ru https?:\/\/([^\/]*\.)?nursing-job\.boom\.ru https?:\/\/([^\/]*\.)?nursing-job\.land\.ru https?:\/\/([^\/]*\.)?nursing-job\.pochta\.ru https?:\/\/([^\/]*\.)?nursing-school\.fromru\.com https?:\/\/([^\/]*\.)?nursing-school\.pochta\.ru https?:\/\/([^\/]*\.)?nursing-scrubs\.boom\.ru https?:\/\/([^\/]*\.)?nursing-uniform\.boom\.ru https?:\/\/([^\/]*\.)?nursing1degree\.chat\.ru https?:\/\/([^\/]*\.)?nursing2-school\.boom\.ru https?:\/\/([^\/]*\.)?nursing2college\.chat\.ru https?:\/\/([^\/]*\.)?nursing2school\.chat\.ru https?:\/\/([^\/]*\.)?nursing2scrubs\.chat\.ru https?:\/\/([^\/]*\.)?nursing4career\.chat\.ru https?:\/\/([^\/]*\.)?nursing4degree\.chat\.ru https?:\/\/([^\/]*\.)?nursing4job\.chat\.ru https?:\/\/([^\/]*\.)?nursingeducation\.chat\.ru https?:\/\/([^\/]*\.)?nutramigen-lipil\.leg4is\.be https?:\/\/([^\/]*\.)?nvdwc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nwxnv\.szm\.sk https?:\/\/([^\/]*\.)?nxbbyhc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nxnmwlh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?nxsq0\.szm\.sk https?:\/\/([^\/]*\.)?o-medic\.tripod\.com https?:\/\/([^\/]*\.)?o8\.aus\.cc https?:\/\/([^\/]*\.)?oa18\.cc https?:\/\/([^\/]*\.)?oa2010\.com https?:\/\/([^\/]*\.)?oalink\.cn https?:\/\/([^\/]*\.)?obesity-check\.com https?:\/\/([^\/]*\.)?obosra\.com https?:\/\/([^\/]*\.)?obrazok\.dtdns\.net https?:\/\/([^\/]*\.)?obsque\.cn https?:\/\/([^\/]*\.)?ocapk\.szm\.sk https?:\/\/([^\/]*\.)?oceshdes\.forumzen\.com https?:\/\/([^\/]*\.)?ockulpas\.forumzen\.com https?:\/\/([^\/]*\.)?ocleelia\.forumzen\.com https?:\/\/([^\/]*\.)?ocscrtro\.forumzen\.com https?:\/\/([^\/]*\.)?oczt4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?odfxci8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?odmi1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?odqw4\.szm\.sk https?:\/\/([^\/]*\.)?oechnxln\.tripod\.com https?:\/\/([^\/]*\.)?oecx6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?oeqls\.szm\.sk https?:\/\/([^\/]*\.)?offerta-volo-madrid\.19mb\.info https?:\/\/([^\/]*\.)?officialkes\.com https?:\/\/([^\/]*\.)?ogooch\.ifrance\.com https?:\/\/([^\/]*\.)?ogzx4\.szm\.sk https?:\/\/([^\/]*\.)?ohgood-com-dv8l\.blogspot\.com https?:\/\/([^\/]*\.)?ohgood-com-isxvi72\.blogspot\.com https?:\/\/([^\/]*\.)?ohgood-com-rv0\.blogspot\.com https?:\/\/([^\/]*\.)?ohiomortgage-x\.com https?:\/\/([^\/]*\.)?ohmybaby\.net https?:\/\/([^\/]*\.)?oilpaintingkingdom\.com https?:\/\/([^\/]*\.)?oily-skin\.newmail\.ru https?:\/\/([^\/]*\.)?oily_skin\.chat\.ru https?:\/\/([^\/]*\.)?oip\.org\.ua https?:\/\/([^\/]*\.)?oirwt\.szm\.sk https?:\/\/([^\/]*\.)?ojdo0\.szm\.sk https?:\/\/([^\/]*\.)?ojdx7\.fr33webhost\.com https?:\/\/([^\/]*\.)?okayhotels\.com https?:\/\/([^\/]*\.)?okcompany\.org https?:\/\/([^\/]*\.)?oklahomamortgage-x\.com https?:\/\/([^\/]*\.)?okrentcar\.org https?:\/\/([^\/]*\.)?old-lady-fuck\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?old-lady-suck-dick\.medved\.od\.ua https?:\/\/([^\/]*\.)?old69-com-mdt71k\.blogspot\.com https?:\/\/([^\/]*\.)?old69-k40bqc\.blogspot\.com https?:\/\/([^\/]*\.)?older-mature-tgp\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?oldon\.info https?:\/\/([^\/]*\.)?oldp9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?oldreboc\.forumzen\.com https?:\/\/([^\/]*\.)?olijanko\.republika\.pl https?:\/\/([^\/]*\.)?olml2\.szm\.sk https?:\/\/([^\/]*\.)?olnnt\.szm\.sk https?:\/\/([^\/]*\.)?olocnamon\.cultureforum\.net https?:\/\/([^\/]*\.)?olocobo\.goodforum\.net https?:\/\/([^\/]*\.)?olocobo\.grafbb\.com https?:\/\/([^\/]*\.)?olodarelt\.heavenforum\.com https?:\/\/([^\/]*\.)?olodarelt\.highforum\.net https?:\/\/([^\/]*\.)?olodronric\.su\.pl https?:\/\/([^\/]*\.)?olodronro\.blogcu\.com https?:\/\/([^\/]*\.)?oloolovi\.ephpbb\.com https?:\/\/([^\/]*\.)?oloorrac\.blogcu\.com https?:\/\/([^\/]*\.)?olorelrel\.blogcu\.com https?:\/\/([^\/]*\.)?olorodom\.blogcu\.com https?:\/\/([^\/]*\.)?oltcha\.blogspot\.com https?:\/\/([^\/]*\.)?olyelzet\.forumzen\.com https?:\/\/([^\/]*\.)?omchades\.forumzen\.com https?:\/\/([^\/]*\.)?omega\.spb\.ru https?:\/\/([^\/]*\.)?omxmlvf\.myfreewebhost\.org https?:\/\/([^\/]*\.)?on-poteen-1-2\.blogspot\.com https?:\/\/([^\/]*\.)?onac2\.szm\.sk https?:\/\/([^\/]*\.)?one2you\.biz https?:\/\/([^\/]*\.)?one2you\.info https?:\/\/([^\/]*\.)?onfew\.szm\.sk https?:\/\/([^\/]*\.)?onlin-nurs-degre\.boom\.ru https?:\/\/([^\/]*\.)?online-blackjack-site\.com https?:\/\/([^\/]*\.)?online-casino-l\.blogspot\.com https?:\/\/([^\/]*\.)?online-casino-wiki\.com https?:\/\/([^\/]*\.)?online-casinos-city\.com https?:\/\/([^\/]*\.)?online-casinos-discovered\.com https?:\/\/([^\/]*\.)?online-degree-4you\.com https?:\/\/([^\/]*\.)?online-gambling-b\.blogspot\.com https?:\/\/([^\/]*\.)?online-games24x7\.com https?:\/\/([^\/]*\.)?online-medications24x7\.com https?:\/\/([^\/]*\.)?online-pharm\.zmail\.ru https?:\/\/([^\/]*\.)?online-pharmacy-24x7\.net https?:\/\/([^\/]*\.)?online-pharmacy-4u\.net https?:\/\/([^\/]*\.)?online-poker-game\.blogspot\.com https?:\/\/([^\/]*\.)?online-poker-online-poker\.net https?:\/\/([^\/]*\.)?online-poker\.black-poker\.com https?:\/\/([^\/]*\.)?online-poker\.dd\.vg https?:\/\/([^\/]*\.)?online-prozac\.boom\.ru https?:\/\/([^\/]*\.)?online-shop-24x7\.com https?:\/\/([^\/]*\.)?online-tramadol\.1\.forogratis\.es https?:\/\/([^\/]*\.)?online1-degree\.boom\.ru https?:\/\/([^\/]*\.)?online1course\.chat\.ru https?:\/\/([^\/]*\.)?online1degree\.chat\.ru https?:\/\/([^\/]*\.)?online3course\.chat\.ru https?:\/\/([^\/]*\.)?online4nursing\.chat\.ru https?:\/\/([^\/]*\.)?onlineglass\.siteburg\.com https?:\/\/([^\/]*\.)?onlinepharmacy-4u\.net https?:\/\/([^\/]*\.)?onlinepharmacy2004\.net https?:\/\/([^\/]*\.)?onlinesexcity\.info https?:\/\/([^\/]*\.)?only-ringtone\.com https?:\/\/([^\/]*\.)?only4game\.com https?:\/\/([^\/]*\.)?onlycuties-com\.jalovica\.dtdns\.net https?:\/\/([^\/]*\.)?onlymovies-com-e1tez\.blogspot\.com https?:\/\/([^\/]*\.)?onlymovies-com-eczm1w\.blogspot\.com https?:\/\/([^\/]*\.)?onlyteenstgp-com-rmn\.blogspot\.com https?:\/\/([^\/]*\.)?onlyteenstgp-com-rrcamwws3\.blogspot\.com https?:\/\/([^\/]*\.)?onlyteenstgp-we\.blogspot\.com https?:\/\/([^\/]*\.)?onmycrew\.blogspot\.com https?:\/\/([^\/]*\.)?onrueetd\.forumzen\.com https?:\/\/([^\/]*\.)?oogqj\.szm\.sk https?:\/\/([^\/]*\.)?oohsexy-com-hob8e5y8r\.blogspot\.com https?:\/\/([^\/]*\.)?oohsexy-com-hpemrnff\.blogspot\.com https?:\/\/([^\/]*\.)?oohsexy\.com https?:\/\/([^\/]*\.)?oohsexy000\.blogspot\.com https?:\/\/([^\/]*\.)?ooline\.info https?:\/\/([^\/]*\.)?oolive\.info https?:\/\/([^\/]*\.)?oonk1\.szm\.sk https?:\/\/([^\/]*\.)?ooooi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ootop\.info https?:\/\/([^\/]*\.)?ooyy2\.szm\.sk https?:\/\/([^\/]*\.)?opastr\.com https?:\/\/([^\/]*\.)?oping\.info https?:\/\/([^\/]*\.)?opiytr\.com https?:\/\/([^\/]*\.)?opkr1\.szm\.sk https?:\/\/([^\/]*\.)?optbblx\.myfreewebhost\.org https?:\/\/([^\/]*\.)?optfzj5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?opyfsen\.myfreewebhost\.org https?:\/\/([^\/]*\.)?oqaknky\.myfreewebhost\.org https?:\/\/([^\/]*\.)?oqfwt\.myfreewebhost\.org https?:\/\/([^\/]*\.)?or-drondron\.xa\.pl https?:\/\/([^\/]*\.)?orabc\.info https?:\/\/([^\/]*\.)?oracelta\.lolforum\.net https?:\/\/([^\/]*\.)?orasta\.com https?:\/\/([^\/]*\.)?orbasolo\.dl\.pl https?:\/\/([^\/]*\.)?orcnaac\.discutfree\.com https?:\/\/([^\/]*\.)?orcoc\.lolbb\.com https?:\/\/([^\/]*\.)?orcore\.graphforum\.com https?:\/\/([^\/]*\.)?orddercelexa\.ovp\.pl https?:\/\/([^\/]*\.)?orddercialisonline\.ovp\.pl https?:\/\/([^\/]*\.)?ordderlevitra\.ovp\.pl https?:\/\/([^\/]*\.)?orddertramadolonline\.ovp\.pl https?:\/\/([^\/]*\.)?orddervalium\.ovp\.pl https?:\/\/([^\/]*\.)?orddervaliumonline\.ovp\.pl https?:\/\/([^\/]*\.)?ordderviagra\.ovp\.pl https?:\/\/([^\/]*\.)?ordderviagraonline\.ovp\.pl https?:\/\/([^\/]*\.)?ordderzithromax\.ovp\.pl https?:\/\/([^\/]*\.)?ordeertramadol\.ovp\.pl https?:\/\/([^\/]*\.)?order-blue-phentermine\.coz\.in https?:\/\/([^\/]*\.)?order-ritalin-online\.contact\.cc https?:\/\/([^\/]*\.)?order-viagra\.health-livening\.com https?:\/\/([^\/]*\.)?orderacyclovirr\.ovp\.pl https?:\/\/([^\/]*\.)?orderadipexx\.ovp\.pl https?:\/\/([^\/]*\.)?orderalbenzaa\.ovp\.pl https?:\/\/([^\/]*\.)?orderalprazolamm\.ovp\.pl https?:\/\/([^\/]*\.)?orderambienn\.ovp\.pl https?:\/\/([^\/]*\.)?orderamoxicillinn\.ovp\.pl https?:\/\/([^\/]*\.)?orderativann\.ovp\.pl https?:\/\/([^\/]*\.)?orderccialiss\.ovp\.pl https?:\/\/([^\/]*\.)?ordercelexaa\.ovp\.pl https?:\/\/([^\/]*\.)?orderciaalisonline\.ovp\.pl https?:\/\/([^\/]*\.)?ordercialisonline\.jubiiblog\.de https?:\/\/([^\/]*\.)?ordercialiss\.ovp\.pl https?:\/\/([^\/]*\.)?ordercializ\.blogcu\.com https?:\/\/([^\/]*\.)?ordercializ\.spotbb\.com https?:\/\/([^\/]*\.)?ordercymbaltaa\.ovp\.pl https?:\/\/([^\/]*\.)?orderhydrocodonee\.ovp\.pl https?:\/\/([^\/]*\.)?orderlevitraa\.ovp\.pl https?:\/\/([^\/]*\.)?orderllevitra\.ovp\.pl https?:\/\/([^\/]*\.)?ordermeridiaa\.ovp\.pl https?:\/\/([^\/]*\.)?orderphentermin\.phpbbx\.de https?:\/\/([^\/]*\.)?orderphenterminee\.ovp\.pl https?:\/\/([^\/]*\.)?orderpropeciaa\.ovp\.pl https?:\/\/([^\/]*\.)?orderrcialisonline\.ovp\.pl https?:\/\/([^\/]*\.)?orderrlevitra\.ovp\.pl https?:\/\/([^\/]*\.)?orderrtramadoll\.ovp\.pl https?:\/\/([^\/]*\.)?orderrtramadolonline\.ovp\.pl https?:\/\/([^\/]*\.)?orderrvalium\.ovp\.pl https?:\/\/([^\/]*\.)?orderrviagraa\.ovp\.pl https?:\/\/([^\/]*\.)?orderrviagraonline\.ovp\.pl https?:\/\/([^\/]*\.)?ordersoma\.blogsome\.com https?:\/\/([^\/]*\.)?ordersomaa\.ovp\.pl https?:\/\/([^\/]*\.)?orderssoma\.ovp\.pl https?:\/\/([^\/]*\.)?ordertramadoll\.ovp\.pl https?:\/\/([^\/]*\.)?ordertramadollonline\.ovp\.pl https?:\/\/([^\/]*\.)?orderultramm\.ovp\.pl https?:\/\/([^\/]*\.)?ordervaliumm\.ovp\.pl https?:\/\/([^\/]*\.)?orderviagraa\.ovp\.pl https?:\/\/([^\/]*\.)?orderviagraaonline\.ovp\.pl https?:\/\/([^\/]*\.)?ordervvalium\.ovp\.pl https?:\/\/([^\/]*\.)?orderxanaxx\.ovp\.pl https?:\/\/([^\/]*\.)?orderxenicalonline\.ir\.pl https?:\/\/([^\/]*\.)?orecchino\.7god\.info https?:\/\/([^\/]*\.)?orecchino\.freespase\.info https?:\/\/([^\/]*\.)?oregonmortgage-x\.com https?:\/\/([^\/]*\.)?orgetacel\.discutforum\.com https?:\/\/([^\/]*\.)?orgeter\.cultureforum\.net https?:\/\/([^\/]*\.)?orgs\.indianatech\.edu https?:\/\/([^\/]*\.)?orletovar\.zikforum\.com https?:\/\/([^\/]*\.)?ormme\.com https?:\/\/([^\/]*\.)?ornildom\.forumzen\.com https?:\/\/([^\/]*\.)?orrdercialisonline\.ovp\.pl https?:\/\/([^\/]*\.)?orrdertramadolonline\.ovp\.pl https?:\/\/([^\/]*\.)?orsaverc\.forumzen\.com https?:\/\/([^\/]*\.)?ortar\.com https?:\/\/([^\/]*\.)?ortho-tri-cyclen\.1\.p2l\.info https?:\/\/([^\/]*\.)?ortrocrol\.heavenforum\.com https?:\/\/([^\/]*\.)?ortrocrol\.highforum\.net https?:\/\/([^\/]*\.)?orvict\.ephpbb\.com https?:\/\/([^\/]*\.)?oryc0\.szm\.sk https?:\/\/([^\/]*\.)?orzeldron\.lightbb\.com https?:\/\/([^\/]*\.)?osakabondage\.info https?:\/\/([^\/]*\.)?osfi5\.szm\.sk https?:\/\/([^\/]*\.)?osthtp1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?otqsc\.szm\.sk https?:\/\/([^\/]*\.)?oudomdar\.dl\.pl https?:\/\/([^\/]*\.)?oudomolo\.lolbb\.com https?:\/\/([^\/]*\.)?oudronc4t\.blogcu\.com https?:\/\/([^\/]*\.)?ouerco\.lightbb\.com https?:\/\/([^\/]*\.)?oufienoc\.forumzen\.com https?:\/\/([^\/]*\.)?ouglova\.blogspot\.com https?:\/\/([^\/]*\.)?ouhymtro\.forumzen\.com https?:\/\/([^\/]*\.)?ouor\.lightbb\.com https?:\/\/([^\/]*\.)?ouorrac\.bbfr\.net https?:\/\/([^\/]*\.)?ouracdron\.discutfree\.com https?:\/\/([^\/]*\.)?ourolal\.discutfree\.com https?:\/\/([^\/]*\.)?outrocvar\.zj\.pl https?:\/\/([^\/]*\.)?outward-dev\.com https?:\/\/([^\/]*\.)?ouvier\.zj\.pl https?:\/\/([^\/]*\.)?overseas-adventure-travel\.globaltr\.info https?:\/\/([^\/]*\.)?ovparnel\.dl\.pl https?:\/\/([^\/]*\.)?ovpn2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ovrie\.szm\.sk https?:\/\/([^\/]*\.)?ovu\.edu https?:\/\/([^\/]*\.)?owll1\.szm\.sk https?:\/\/([^\/]*\.)?oxpass-com-g5\.blogspot\.com https?:\/\/([^\/]*\.)?oxpass-com-gt71a0\.blogspot\.com https?:\/\/([^\/]*\.)?oxpass-com-hurol\.blogspot\.com https?:\/\/([^\/]*\.)?oyspa\.szm\.sk https?:\/\/([^\/]*\.)?oz6soqa\.nokedem\.com https?:\/\/([^\/]*\.)?ozbk9\.szm\.sk https?:\/\/([^\/]*\.)?ozgzm\.fr33webhost\.com https?:\/\/([^\/]*\.)?ozxz5\.fr33webhost\.com https?:\/\/([^\/]*\.)?ozyexk2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?p-free-sex-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?p-n-lesbian-sex-video-d\.blogspot\.com https?:\/\/([^\/]*\.)?p-teens-b00\.blogspot\.com https?:\/\/([^\/]*\.)?p-vi\.com https?:\/\/([^\/]*\.)?p1v\.org https?:\/\/([^\/]*\.)?p2l\.info https?:\/\/([^\/]*\.)?pa19\.com https?:\/\/([^\/]*\.)?pacfic-poker\.mutogen\.be https?:\/\/([^\/]*\.)?pacficpoker\.xwiki\.com https?:\/\/([^\/]*\.)?pacific-poker\.black-poker\.com https?:\/\/([^\/]*\.)?paddedapex\.org https?:\/\/([^\/]*\.)?paeecpx\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pafyawv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pain-medications\.us https?:\/\/([^\/]*\.)?pain-relief\.1\.p2l\.info https?:\/\/([^\/]*\.)?pain-relief\.2x4\.ru https?:\/\/([^\/]*\.)?pain-relief\.fromru\.com https?:\/\/([^\/]*\.)?pain-relief\.newmail\.ru https?:\/\/([^\/]*\.)?pain_relief\.chat\.ru https?:\/\/([^\/]*\.)?paisi\.com https?:\/\/([^\/]*\.)?paisidesign\.com https?:\/\/([^\/]*\.)?pam\.freehostia\.com https?:\/\/([^\/]*\.)?pamlicohouse\.com https?:\/\/([^\/]*\.)?panama2cruise\.boom\.ru https?:\/\/([^\/]*\.)?panama2cruise\.chat\.ru https?:\/\/([^\/]*\.)?panamacruise1\.boom\.ru https?:\/\/([^\/]*\.)?panamacruise1\.chat\.ru https?:\/\/([^\/]*\.)?pandamovies-com-g6lz762n76\.blogspot\.com https?:\/\/([^\/]*\.)?pandamovies-com-tq32\.blogspot\.com https?:\/\/([^\/]*\.)?pandamovies-o4me7xqq0f\.blogspot\.com https?:\/\/([^\/]*\.)?panshan888\.com https?:\/\/([^\/]*\.)?panss\.org https?:\/\/([^\/]*\.)?panthersjaguar\.info https?:\/\/([^\/]*\.)?panty-ass-com-w1\.blogspot\.com https?:\/\/([^\/]*\.)?panty-ass-com-w8\.blogspot\.com https?:\/\/([^\/]*\.)?pantybuns-com-a6ejgve\.blogspot\.com https?:\/\/([^\/]*\.)?pantybuns-com-axeoa77ze5\.blogspot\.com https?:\/\/([^\/]*\.)?pantybuns-com-tl0\.blogspot\.com https?:\/\/([^\/]*\.)?pantyhose-face\.pupava\.dtdns\.net https?:\/\/([^\/]*\.)?pantyhose-net\.com https?:\/\/([^\/]*\.)?paola-e-chiara\.host24h\.info https?:\/\/([^\/]*\.)?paper--shredder\.boom\.ru https?:\/\/([^\/]*\.)?paper-s\.boom\.ru https?:\/\/([^\/]*\.)?paper1-shredder\.boom\.ru https?:\/\/([^\/]*\.)?paper1shredder\.chat\.ru https?:\/\/([^\/]*\.)?paper5shredder\.chat\.ru https?:\/\/([^\/]*\.)?paperbox\.freephpwebhosting\.net https?:\/\/([^\/]*\.)?paperroom\.blogspot\.com https?:\/\/([^\/]*\.)?papr-shredder\.boom\.ru https?:\/\/([^\/]*\.)?paradisenudes-com-o71a\.blogspot\.com https?:\/\/([^\/]*\.)?paradisenudes-com-os\.blogspot\.com https?:\/\/([^\/]*\.)?paralegal1degree\.chat\.ru https?:\/\/([^\/]*\.)?parench\.ifrance\.com https?:\/\/([^\/]*\.)?parigi-appartamento-vacanza\.zoom10x\.info https?:\/\/([^\/]*\.)?paris-hilton-huxik\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-lukuv\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-nude-tape\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-pijid\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-pojic\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-porn\.0800-porn\.com https?:\/\/([^\/]*\.)?paris-hilton-sex-tape-xxx\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-sex-video-gf5m5\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-sex-video-sez\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-socog\.blogspot\.com https?:\/\/([^\/]*\.)?paris-hilton-xidig\.blogspot\.com https?:\/\/([^\/]*\.)?paris\.php5\.cz https?:\/\/([^\/]*\.)?parishilton-paris-hilton\.blogspot\.com https?:\/\/([^\/]*\.)?parishilton-paris\.blogspot\.com https?:\/\/([^\/]*\.)?parnvf8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?partei-deutsches-reich\.de https?:\/\/([^\/]*\.)?parties-supply\.jeepsyc\.be https?:\/\/([^\/]*\.)?party-poker\.black-poker\.com https?:\/\/([^\/]*\.)?pasacvi\.zikforum\.com https?:\/\/([^\/]*\.)?paschiel\.blogcu\.com https?:\/\/([^\/]*\.)?pasdronli\.winnerforum\.net https?:\/\/([^\/]*\.)?pashkak0marov\.blogspot\.com https?:\/\/([^\/]*\.)?paslibo\.myrealboard\.com https?:\/\/([^\/]*\.)?pasoloro\.graphforum\.com https?:\/\/([^\/]*\.)?pasoloro\.highforum\.net https?:\/\/([^\/]*\.)?pasracco\.blogcu\.com https?:\/\/([^\/]*\.)?pasrodron\.xa\.pl https?:\/\/([^\/]*\.)?passaf\.com https?:\/\/([^\/]*\.)?pastmagic\.blogspot\.com https?:\/\/([^\/]*\.)?pasviric\.td\.pl https?:\/\/([^\/]*\.)?patsytestis\.0moola\.com https?:\/\/([^\/]*\.)?pattywhack91\.ibelgique\.com https?:\/\/([^\/]*\.)?paulino\.greekboston\.com https?:\/\/([^\/]*\.)?paulino\.idilis\.ro https?:\/\/([^\/]*\.)?paxil-cr\.contact\.cc https?:\/\/([^\/]*\.)?paxil-without-prescription\.contact\.cc https?:\/\/([^\/]*\.)?paxil\.1\.p2l\.info https?:\/\/([^\/]*\.)?paxil\.forospace\.com https?:\/\/([^\/]*\.)?paxilonline\.zoomshare\.com https?:\/\/([^\/]*\.)?payday-loan\.de\.com https?:\/\/([^\/]*\.)?payday-loans-4us\.com https?:\/\/([^\/]*\.)?payday-loans-ooo\.blogspot\.com https?:\/\/([^\/]*\.)?paydayloans-guide\.com https?:\/\/([^\/]*\.)?paydayloans-x\.com https?:\/\/([^\/]*\.)?pcb2002\.home4u\.china\.com https?:\/\/([^\/]*\.)?pcgzt\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pdslnw6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?peace-weasel\.blogspot\.com https?:\/\/([^\/]*\.)?peacedoorball\.blogspot\.com https?:\/\/([^\/]*\.)?pearlibuttons\.blogspot\.com https?:\/\/([^\/]*\.)?pebwgu0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pecilu-free-sex-video-clip\.blogspot\.com https?:\/\/([^\/]*\.)?pee-4a\.com https?:\/\/([^\/]*\.)?peetliel\.jconserv\.net https?:\/\/([^\/]*\.)?pefi-albert\.blogspot\.com https?:\/\/([^\/]*\.)?pelnp\.szm\.sk https?:\/\/([^\/]*\.)?pendant\.hostcroc\.com https?:\/\/([^\/]*\.)?pennsylvaniamortgage-x\.com https?:\/\/([^\/]*\.)?people\.msoe\.edu https?:\/\/([^\/]*\.)?percocet-without-prescription\.contact\.cc https?:\/\/([^\/]*\.)?percocet\.xwiki\.com https?:\/\/([^\/]*\.)?perfect-boob\.medved\.od\.ua https?:\/\/([^\/]*\.)?permanentmagnet\.com https?:\/\/([^\/]*\.)?persiankitty-com-kcfsibt01d\.blogspot\.com https?:\/\/([^\/]*\.)?persiankitty-com-ksa6l1a\.blogspot\.com https?:\/\/([^\/]*\.)?personales\.ciudad\.com\.ar https?:\/\/([^\/]*\.)?personalserotic\.com https?:\/\/([^\/]*\.)?petite-mature-blonde\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?petite-teen-ass\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?petiteteenager-com-cm8ku8w\.blogspot\.com https?:\/\/([^\/]*\.)?petiteteenager-com-md6\.blogspot\.com https?:\/\/([^\/]*\.)?petiteteenager-com-mns4n5a4\.blogspot\.com https?:\/\/([^\/]*\.)?petiteteenager-g687rhasjq\.blogspot\.com https?:\/\/([^\/]*\.)?peuct\.szm\.sk https?:\/\/([^\/]*\.)?pfes7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pffl4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pgbnjja\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pharm1\.info https?:\/\/([^\/]*\.)?pharmacies\.in\.ua https?:\/\/([^\/]*\.)?pharmacy-experts\.org https?:\/\/([^\/]*\.)?pharmacy-x\.ru\.ru https?:\/\/([^\/]*\.)?pharmacy\.sovuennir\.be https?:\/\/([^\/]*\.)?pharmacy\.t28\.net https?:\/\/([^\/]*\.)?pharmacy05\.com https?:\/\/([^\/]*\.)?pharmacybuy1\.angelcities\.com https?:\/\/([^\/]*\.)?pharmaduk\.xshorturl\.com https?:\/\/([^\/]*\.)?phendimetrazine\.1\.p2l\.info https?:\/\/([^\/]*\.)?phendimetrazinenx\.u\.yuku\.com https?:\/\/([^\/]*\.)?phentermine--mine\.blogspot\.com https?:\/\/([^\/]*\.)?phentermine-911\.bee\.pl https?:\/\/([^\/]*\.)?phentermine-911\.coz\.in https?:\/\/([^\/]*\.)?phentermine-cc\.blogspot\.com https?:\/\/([^\/]*\.)?phentermine-choise\.ebloggy\.com https?:\/\/([^\/]*\.)?phentermine-forum\.tripod\.com https?:\/\/([^\/]*\.)?phentermine-gs\.eu\.tc https?:\/\/([^\/]*\.)?phentermine-gs\.net\.tc https?:\/\/([^\/]*\.)?phentermine-hcl\.org https?:\/\/([^\/]*\.)?phentermine-online\.cheapills\.info https?:\/\/([^\/]*\.)?phentermine-online\.presteert\.nl https?:\/\/([^\/]*\.)?phentermine-pharmacy\.fws1\.com https?:\/\/([^\/]*\.)?phentermine-support\.com https?:\/\/([^\/]*\.)?phentermine\.1\.p2l\.info https?:\/\/([^\/]*\.)?phentermine\.acbox\.com https?:\/\/([^\/]*\.)?phentermine\.acbox\.net https?:\/\/([^\/]*\.)?phentermine\.arkadasi\.com https?:\/\/([^\/]*\.)?phentermine\.asistani\.com https?:\/\/([^\/]*\.)?phentermine\.bz https?:\/\/([^\/]*\.)?phentermine\.clubpage\.net https?:\/\/([^\/]*\.)?phentermine\.esguay\.com https?:\/\/([^\/]*\.)?phentermine\.flygande-apor\.com https?:\/\/([^\/]*\.)?phentermine\.goodpharm\.info https?:\/\/([^\/]*\.)?phentermine\.gotgeeks\.com https?:\/\/([^\/]*\.)?phentermine\.hallonsaft\.info https?:\/\/([^\/]*\.)?phentermine\.health-livening\.com https?:\/\/([^\/]*\.)?phentermine\.on-4\.com https?:\/\/([^\/]*\.)?phentermine\.ontspant\.nl https?:\/\/([^\/]*\.)?phentermine\.presteert\.nl https?:\/\/([^\/]*\.)?phentermine\.skocz\.net https?:\/\/([^\/]*\.)?phentermine\.su\.pl https?:\/\/([^\/]*\.)?phentermine\.tv https?:\/\/([^\/]*\.)?phentermine\.websiam\.net https?:\/\/([^\/]*\.)?phentermine2\.freewebsites\.com https?:\/\/([^\/]*\.)?phentermine7x\.forumup\.org https?:\/\/([^\/]*\.)?phenterminec\.phpbbx\.de https?:\/\/([^\/]*\.)?phentermineonline\.ds4a\.com https?:\/\/([^\/]*\.)?phentermineonline\.livelog\.com https?:\/\/([^\/]*\.)?phentermineq\.host-page\.com https?:\/\/([^\/]*\.)?phentermines\.int\.tf https?:\/\/([^\/]*\.)?phoenixbrngbrt\.blogspot\.com https?:\/\/([^\/]*\.)?phol8\.szm\.sk https?:\/\/([^\/]*\.)?phone-service\.newmail\.ru https?:\/\/([^\/]*\.)?phones-gsm\.haemati\.be https?:\/\/([^\/]*\.)?photo-of-girl-boob\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?photospacefree\.com https?:\/\/([^\/]*\.)?phots\.info https?:\/\/([^\/]*\.)?phpbbx\.de https?:\/\/([^\/]*\.)?phun-org-i08kd\.blogspot\.com https?:\/\/([^\/]*\.)?phun-org-ingg0\.blogspot\.com https?:\/\/([^\/]*\.)?pi-allyson\.blogspot\.com https?:\/\/([^\/]*\.)?pichunter-com-bkfwk\.blogspot\.com https?:\/\/([^\/]*\.)?pichunter-com-bzf\.blogspot\.com https?:\/\/([^\/]*\.)?pichunter-com-hmmcyoud8\.blogspot\.com https?:\/\/([^\/]*\.)?pichunter-com-kesip\.blogspot\.com https?:\/\/([^\/]*\.)?picpost-com-e3xqsc6a\.blogspot\.com https?:\/\/([^\/]*\.)?picpost-com-eu7refa3s5\.blogspot\.com https?:\/\/([^\/]*\.)?picture-cast-on-broken-leg\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?picture-of-gay-guys-fucking\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?picture-of-used-condom\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?picture\.8tt\.org https?:\/\/([^\/]*\.)?pictureheaven-com-ri7hn\.blogspot\.com https?:\/\/([^\/]*\.)?pictureheaven-com-rw\.blogspot\.com https?:\/\/([^\/]*\.)?pictures-free-org-wl0nj\.blogspot\.com https?:\/\/([^\/]*\.)?pictures-free-org-wmmkv2w\.blogspot\.com https?:\/\/([^\/]*\.)?piggy-soldier\.blogspot\.com https?:\/\/([^\/]*\.)?pigtime\.net\.ru https?:\/\/([^\/]*\.)?pigxxx-com-ctjj1\.blogspot\.com https?:\/\/([^\/]*\.)?pigxxx-com-ge1omxgp20\.blogspot\.com https?:\/\/([^\/]*\.)?pigxxx-com-geo8asd1i\.blogspot\.com https?:\/\/([^\/]*\.)?pigxxx-com-nevew\.blogspot\.com https?:\/\/([^\/]*\.)?pijjyh-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?pillalli\.info https?:\/\/([^\/]*\.)?pillnext\.com https?:\/\/([^\/]*\.)?pillow\.2x4\.ru https?:\/\/([^\/]*\.)?pills-catalog\.com https?:\/\/([^\/]*\.)?pills-pharmacy\.us https?:\/\/([^\/]*\.)?pills\.007webpro\.com https?:\/\/([^\/]*\.)?pills\.siemprelisto\.net https?:\/\/([^\/]*\.)?pills1\.org https?:\/\/([^\/]*\.)?pillsz\.com https?:\/\/([^\/]*\.)?pimpmyblackteen-com-t6ijmwbu\.blogspot\.com https?:\/\/([^\/]*\.)?pimpmyblackteen-com-t7d432c\.blogspot\.com https?:\/\/([^\/]*\.)?pindosam\.com https?:\/\/([^\/]*\.)?pine\.hostonmars\.com https?:\/\/([^\/]*\.)?pinkpornstars-com-da3njbu\.blogspot\.com https?:\/\/([^\/]*\.)?pinkpornstars-com-dnjx\.blogspot\.com https?:\/\/([^\/]*\.)?pinkpornstars-com-drm\.blogspot\.com https?:\/\/([^\/]*\.)?pinkworld-com-c84agv\.blogspot\.com https?:\/\/([^\/]*\.)?pinkworld-com-ci8e6\.blogspot\.com https?:\/\/([^\/]*\.)?pinkworld-com-ge4k4kmsd\.blogspot\.com https?:\/\/([^\/]*\.)?pinkworld-com-kp7s8i5\.blogspot\.com https?:\/\/([^\/]*\.)?pino-daniele\.19mb\.info https?:\/\/([^\/]*\.)?pinoyteens\.net https?:\/\/([^\/]*\.)?piomchel\.jconserv\.net https?:\/\/([^\/]*\.)?pisces\.8tt\.org https?:\/\/([^\/]*\.)?pitch\.101freehost\.com https?:\/\/([^\/]*\.)?pizda4\.com https?:\/\/([^\/]*\.)?pizza-hut\.hotmail\.ru https?:\/\/([^\/]*\.)?pjim6\.szm\.sk https?:\/\/([^\/]*\.)?pjju3\.szm\.sk https?:\/\/([^\/]*\.)?pjmykz8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pjryskur-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?pjuibhe\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pkufl\.szm\.sk https?:\/\/([^\/]*\.)?place\.sex-jet\.net https?:\/\/([^\/]*\.)?planetaacura\.info https?:\/\/([^\/]*\.)?planetwatt\.republika\.pl https?:\/\/([^\/]*\.)?plastictec\.net https?:\/\/([^\/]*\.)?plavix\.coz\.in https?:\/\/([^\/]*\.)?plavixbuy\.gameday\.de https?:\/\/([^\/]*\.)?plavixbuycheap\.dive\.to https?:\/\/([^\/]*\.)?plavixcheap\.hey\.to https?:\/\/([^\/]*\.)?plavixcheapgeneric\.go\.to https?:\/\/([^\/]*\.)?plavixgeneric\.change\.to https?:\/\/([^\/]*\.)?play-777\.com https?:\/\/([^\/]*\.)?play-online-casino\.de\.com https?:\/\/([^\/]*\.)?play-online-poker\.newmail\.ru https?:\/\/([^\/]*\.)?play-station-2-boot-disk\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?playandwinit777\.net https?:\/\/([^\/]*\.)?pleasebangmywife-com-i8zdgo1\.blogspot\.com https?:\/\/([^\/]*\.)?pleasebangmywife-com-iq\.blogspot\.com https?:\/\/([^\/]*\.)?pleasebangmywife-com-koguq\.blogspot\.com https?:\/\/([^\/]*\.)?pleasure\.hostonmars\.com https?:\/\/([^\/]*\.)?ploob\.blox\.pl https?:\/\/([^\/]*\.)?plugkblow\.pornomagnat\.net https?:\/\/([^\/]*\.)?plumper69-com-on3664rg\.blogspot\.com https?:\/\/([^\/]*\.)?plumper69-com-os4\.blogspot\.com https?:\/\/([^\/]*\.)?plumper69-com-sokis\.blogspot\.com https?:\/\/([^\/]*\.)?plxn1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pmrd2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pmyk8\.fr33webhost\.com https?:\/\/([^\/]*\.)?po-alora\.blogspot\.com https?:\/\/([^\/]*\.)?pobpa\.fr33webhost\.com https?:\/\/([^\/]*\.)?pocmlaq\.myfreewebhost\.org https?:\/\/([^\/]*\.)?podnos\.stabilt\.se https?:\/\/([^\/]*\.)?poeller\.dl\.pl https?:\/\/([^\/]*\.)?pogeh\.szm\.sk https?:\/\/([^\/]*\.)?pohuym\.jo\.pl https?:\/\/([^\/]*\.)?pointyou\.info https?:\/\/([^\/]*\.)?poker-0\.com https?:\/\/([^\/]*\.)?poker-24x7\.com https?:\/\/([^\/]*\.)?poker-4all\.com https?:\/\/([^\/]*\.)?poker-7\.com https?:\/\/([^\/]*\.)?poker-boulevard\.com https?:\/\/([^\/]*\.)?poker-check\.com https?:\/\/([^\/]*\.)?poker-new\.com https?:\/\/([^\/]*\.)?poker-party-a\.com https?:\/\/([^\/]*\.)?poker-places-4u\.net https?:\/\/([^\/]*\.)?poker-places\.net https?:\/\/([^\/]*\.)?poker-pro\.us https?:\/\/([^\/]*\.)?poker-stadium\.com https?:\/\/([^\/]*\.)?poker-sys\.com https?:\/\/([^\/]*\.)?poker-unique\.com https?:\/\/([^\/]*\.)?poker-valley\.com https?:\/\/([^\/]*\.)?poker\.black-poker\.com https?:\/\/([^\/]*\.)?poker\.land\.ru https?:\/\/([^\/]*\.)?poker1table\.chat\.ru https?:\/\/([^\/]*\.)?pokera\.web\.com https?:\/\/([^\/]*\.)?pokermaniab\.atspace\.com https?:\/\/([^\/]*\.)?polex\.com\.cn https?:\/\/([^\/]*\.)?police-motorcycle-boot\.medved\.od\.ua https?:\/\/([^\/]*\.)?police\.site\.io https?:\/\/([^\/]*\.)?polonka\.php5\.cz https?:\/\/([^\/]*\.)?polott\.org https?:\/\/([^\/]*\.)?polyphonic-ringtoneslsh\.blogspot\.com https?:\/\/([^\/]*\.)?polysorb\.myoco\.be https?:\/\/([^\/]*\.)?polyurethane-condom\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?pool-table\.hotmail\.ru https?:\/\/([^\/]*\.)?poopoovi\.forumculture\.net https?:\/\/([^\/]*\.)?pop\.egi\.biz https?:\/\/([^\/]*\.)?porn-clip-blog5jc\.blogspot\.com https?:\/\/([^\/]*\.)?porn-clip-boj\.blogspot\.com https?:\/\/([^\/]*\.)?porn-clip-om16o\.blogspot\.com https?:\/\/([^\/]*\.)?porn-movie-clips-blogk8p\.blogspot\.com https?:\/\/([^\/]*\.)?porn-movie-rj8a7\.blogspot\.com https?:\/\/([^\/]*\.)?porn-movie-ted\.blogspot\.com https?:\/\/([^\/]*\.)?porn-movie\.hostingtree\.org https?:\/\/([^\/]*\.)?porn-samples\.com https?:\/\/([^\/]*\.)?porn-star-clip-info0n0\.blogspot\.com https?:\/\/([^\/]*\.)?porn-star-movie-clip-newsigj\.blogspot\.com https?:\/\/([^\/]*\.)?porn-star-video-clip-zone44f\.blogspot\.com https?:\/\/([^\/]*\.)?porn-teacher\.com https?:\/\/([^\/]*\.)?porn-teen-pic\.com https?:\/\/([^\/]*\.)?porn-video-clip-bb-bb-f\.blogspot\.com https?:\/\/([^\/]*\.)?porn-video-clip-gallery-zonehp1\.blogspot\.com https?:\/\/([^\/]*\.)?porn-video-clips-news5v2\.blogspot\.com https?:\/\/([^\/]*\.)?porn-video-jef\.blogspot\.com https?:\/\/([^\/]*\.)?porn1clip\.blogspot\.com https?:\/\/([^\/]*\.)?pornaccess-com-k58\.blogspot\.com https?:\/\/([^\/]*\.)?pornaccess-com-kkd1zvcobi\.blogspot\.com https?:\/\/([^\/]*\.)?porndirectory-com-m544ar5z47\.blogspot\.com https?:\/\/([^\/]*\.)?porndirectory-com-miyza\.blogspot\.com https?:\/\/([^\/]*\.)?porneskimo-com-hizrd2on\.blogspot\.com https?:\/\/([^\/]*\.)?porneskimo-com-hr1frq8hrr\.blogspot\.com https?:\/\/([^\/]*\.)?porneskimo-d4p5\.blogspot\.com https?:\/\/([^\/]*\.)?porneskimo-diheh\.blogspot\.com https?:\/\/([^\/]*\.)?pornfreeusa\.info https?:\/\/([^\/]*\.)?pornno-com-cdtkjmj\.blogspot\.com https?:\/\/([^\/]*\.)?pornno-com-cz5dknpwc\.blogspot\.com https?:\/\/([^\/]*\.)?pornogames4\.com https?:\/\/([^\/]*\.)?pornoho-com-d7f\.blogspot\.com https?:\/\/([^\/]*\.)?pornoho-com-db2ge0p\.blogspot\.com https?:\/\/([^\/]*\.)?pornstar-com-be1mbdy0l1\.blogspot\.com https?:\/\/([^\/]*\.)?pornstar-com-bsrzs22gn\.blogspot\.com https?:\/\/([^\/]*\.)?pornstar-com-nuvor\.blogspot\.com https?:\/\/([^\/]*\.)?pornstar-dz8j\.blogspot\.com https?:\/\/([^\/]*\.)?pornstarbook-com-ag3477t\.blogspot\.com https?:\/\/([^\/]*\.)?pornstarbook-com-agrpd\.blogspot\.com https?:\/\/([^\/]*\.)?pornstarfinder-net-wp2lsr0\.blogspot\.com https?:\/\/([^\/]*\.)?pornstarfinder-net-wuag8\.blogspot\.com https?:\/\/([^\/]*\.)?pornstargals-com-tj\.blogspot\.com https?:\/\/([^\/]*\.)?pornstargals-com-tk7hoxv36\.blogspot\.com https?:\/\/([^\/]*\.)?pornstars\.hostingtree\.org https?:\/\/([^\/]*\.)?pornstarvid-com-dinif\.blogspot\.com https?:\/\/([^\/]*\.)?pornstarvid-com-h5\.blogspot\.com https?:\/\/([^\/]*\.)?pornstarvid-com-h8xe\.blogspot\.com https?:\/\/([^\/]*\.)?pornweek-com\.isabel\.dtdns\.net https?:\/\/([^\/]*\.)?portal777\.com https?:\/\/([^\/]*\.)?portalrate\.info https?:\/\/([^\/]*\.)?portcityhonda\.info https?:\/\/([^\/]*\.)?portly\.byinter\.net https?:\/\/([^\/]*\.)?porzo-com-dsmefbsl\.blogspot\.com https?:\/\/([^\/]*\.)?porzo-com-gxo\.blogspot\.com https?:\/\/([^\/]*\.)?poshlo\.com https?:\/\/([^\/]*\.)?postdream\.org https?:\/\/([^\/]*\.)?potulnik\.php5\.cz https?:\/\/([^\/]*\.)?povicyt\.dynamicforum\.net https?:\/\/([^\/]*\.)?powerlevelingweb\.com https?:\/\/([^\/]*\.)?pozorvostoka\.250free\.com https?:\/\/([^\/]*\.)?pp-shredd\.boom\.ru https?:\/\/([^\/]*\.)?pppsp\.szm\.sk https?:\/\/([^\/]*\.)?ppuhldv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pqis2\.szm\.sk https?:\/\/([^\/]*\.)?prakashcommunication\.com https?:\/\/([^\/]*\.)?prama\.info https?:\/\/([^\/]*\.)?prasut\.com https?:\/\/([^\/]*\.)?prearnha\.dl\.pl https?:\/\/([^\/]*\.)?prednisone\.3d-game\.com https?:\/\/([^\/]*\.)?prenotazione-albergo-rimini\.host24h\.info https?:\/\/([^\/]*\.)?prestito-taranto\.robzz\.info https?:\/\/([^\/]*\.)?prettyhair24-7\.blogspot\.com https?:\/\/([^\/]*\.)?prettyhotbabes-com-r2lu08uojn\.blogspot\.com https?:\/\/([^\/]*\.)?prettyhotbabes-com-rkgrt\.blogspot\.com https?:\/\/([^\/]*\.)?prettymob\.com https?:\/\/([^\/]*\.)?prevacid\.1\.p2l\.info https?:\/\/([^\/]*\.)?price-top\.com https?:\/\/([^\/]*\.)?price100\.info https?:\/\/([^\/]*\.)?prilosec\.1\.p2l\.info https?:\/\/([^\/]*\.)?prilosecbuycheap\.turn\.to https?:\/\/([^\/]*\.)?prilosecbuygeneric\.redirect\.to https?:\/\/([^\/]*\.)?priloseccheap\.turn\.to https?:\/\/([^\/]*\.)?priloseccheapgeneric\.redirect\.to https?:\/\/([^\/]*\.)?prilosecgeneric\.come\.to https?:\/\/([^\/]*\.)?primer\.fidosoft\.de https?:\/\/([^\/]*\.)?primojerky\.cn https?:\/\/([^\/]*\.)?primonona\.info https?:\/\/([^\/]*\.)?princesscruises\.chat\.ru https?:\/\/([^\/]*\.)?princesskariboo\.blogspot\.com https?:\/\/([^\/]*\.)?printer\.net\.cn https?:\/\/([^\/]*\.)?printingok\.net https?:\/\/([^\/]*\.)?private-porn-clip-newsmzm\.blogspot\.com https?:\/\/([^\/]*\.)?proactive-facial-product\.gameover\.in\.ua https?:\/\/([^\/]*\.)?problem-skin\.nm\.ru https?:\/\/([^\/]*\.)?problem_skin\.chat\.ru https?:\/\/([^\/]*\.)?prodotti-cosmetico\.nnme\.info https?:\/\/([^\/]*\.)?projectvoyeur-com-ec15a\.blogspot\.com https?:\/\/([^\/]*\.)?projectvoyeur-com-eq2w\.blogspot\.com https?:\/\/([^\/]*\.)?projectvoyeur-com-eyyd4q\.blogspot\.com https?:\/\/([^\/]*\.)?projectvoyeur-t3j\.blogspot\.com https?:\/\/([^\/]*\.)?prom\.createforum\.us https?:\/\/([^\/]*\.)?propecia\.1\.p2l\.info https?:\/\/([^\/]*\.)?propecia\.esguay\.com https?:\/\/([^\/]*\.)?propecia\.skocz\.net https?:\/\/([^\/]*\.)?protonixbuy\.stick\.by https?:\/\/([^\/]*\.)?protonixbuycheap\.redirect\.to https?:\/\/([^\/]*\.)?protonixcheap\.connect\.to https?:\/\/([^\/]*\.)?protonixcheapgeneric\.soft-ware\.de https?:\/\/([^\/]*\.)?protonixgenericbuy\.cut\.by https?:\/\/([^\/]*\.)?provigilweight\.sblog\.cz https?:\/\/([^\/]*\.)?prozac\.rx4\.org https?:\/\/([^\/]*\.)?prsl4\.szm\.sk https?:\/\/([^\/]*\.)?prznic\.dtdns\.net https?:\/\/([^\/]*\.)?psfc\.mit\.edu https?:\/\/([^\/]*\.)?psmorrison\.blogspot\.com https?:\/\/([^\/]*\.)?psnuni\.com https?:\/\/([^\/]*\.)?psrq4\.szm\.sk https?:\/\/([^\/]*\.)?psychology-degre\.boom\.ru https?:\/\/([^\/]*\.)?psychology1degre\.chat\.ru https?:\/\/([^\/]*\.)?pszdc\.szm\.sk https?:\/\/([^\/]*\.)?ptpm9\.szm\.sk https?:\/\/([^\/]*\.)?ptrip\.net https?:\/\/([^\/]*\.)?pttqt\.szm\.sk https?:\/\/([^\/]*\.)?publicinvasion-com-bhtum2\.blogspot\.com https?:\/\/([^\/]*\.)?publicinvasion-com-bj\.blogspot\.com https?:\/\/([^\/]*\.)?publicinvasion-com-furok\.blogspot\.com https?:\/\/([^\/]*\.)?publicsaftor\.com https?:\/\/([^\/]*\.)?pued-com-maxu1g7\.blogspot\.com https?:\/\/([^\/]*\.)?pued-com-mf3\.blogspot\.com https?:\/\/([^\/]*\.)?pued-com-r0078gie\.blogspot\.com https?:\/\/([^\/]*\.)?pued-ox5y12mn7s\.blogspot\.com https?:\/\/([^\/]*\.)?puffybet\.sultryserver\.com https?:\/\/([^\/]*\.)?pulaskiterm\.info https?:\/\/([^\/]*\.)?pulse-squad\.com https?:\/\/([^\/]*\.)?pumpthatass-com-a78juz38f2\.blogspot\.com https?:\/\/([^\/]*\.)?pumpthatass-com-a7ouybe\.blogspot\.com https?:\/\/([^\/]*\.)?pumpthatass-com-xudeb\.blogspot\.com https?:\/\/([^\/]*\.)?punguinodoom\.110mb\.com https?:\/\/([^\/]*\.)?punjqm0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?punk-ass-bitch-wheatus\.gameover\.in\.ua https?:\/\/([^\/]*\.)?puppykibble-com-o7\.blogspot\.com https?:\/\/([^\/]*\.)?puppykibble-com-oh0w2te3k\.blogspot\.com https?:\/\/([^\/]*\.)?puppykibble-com-oqm7hu8d\.blogspot\.com https?:\/\/([^\/]*\.)?purextc-com-i8\.blogspot\.com https?:\/\/([^\/]*\.)?purextc-com-iy\.blogspot\.com https?:\/\/([^\/]*\.)?pussy-ass-bitch\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?pussy-org-kjsb51la\.blogspot\.com https?:\/\/([^\/]*\.)?pussy-org-km5\.blogspot\.com https?:\/\/([^\/]*\.)?putsta\.com https?:\/\/([^\/]*\.)?pvfws\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pvqoa\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pvsiwi7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pvudt\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pvzj1\.szm\.sk https?:\/\/([^\/]*\.)?pwqx0\.szm\.sk https?:\/\/([^\/]*\.)?pymiw\.szm\.sk https?:\/\/([^\/]*\.)?pyr0lys1s\.blogspot\.com https?:\/\/([^\/]*\.)?pyrebi\.blogspot\.com https?:\/\/([^\/]*\.)?pyujxu0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?pzch0\.szm\.sk https?:\/\/([^\/]*\.)?pzek6\.szm\.sk https?:\/\/([^\/]*\.)?pzif1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?q-n-homemade-sex-video-z\.blogspot\.com https?:\/\/([^\/]*\.)?qbzmbwz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qctbue2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qdhr9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qdojv\.fr33webhost\.com https?:\/\/([^\/]*\.)?qe-hentai-sex-video-sun\.blogspot\.com https?:\/\/([^\/]*\.)?qek-wetplace-com\.blogspot\.com https?:\/\/([^\/]*\.)?qfoo7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qgre5\.szm\.sk https?:\/\/([^\/]*\.)?qgtdivl\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qhiqu\.fr33webhost\.com https?:\/\/([^\/]*\.)?qhprfm6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qhyvt\.szm\.sk https?:\/\/([^\/]*\.)?qietingqi\.ebloggy\.com https?:\/\/([^\/]*\.)?qingpao\.com https?:\/\/([^\/]*\.)?qinjq\.szm\.sk https?:\/\/([^\/]*\.)?qiqiu\.org https?:\/\/([^\/]*\.)?qite-alanna\.blogspot\.com https?:\/\/([^\/]*\.)?qjok9\.szm\.sk https?:\/\/([^\/]*\.)?qjt230\.com https?:\/\/([^\/]*\.)?qjvkvcd\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qklb4\.szm\.sk https?:\/\/([^\/]*\.)?qklhtf0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qknfl\.szm\.sk https?:\/\/([^\/]*\.)?qknpl\.info https?:\/\/([^\/]*\.)?qkpple2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qlpkce6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qltx2\.szm\.sk https?:\/\/([^\/]*\.)?qmjrpuo\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qnax1\.szm\.sk https?:\/\/([^\/]*\.)?qo-video-porn-gratis-download\.blogspot\.com https?:\/\/([^\/]*\.)?qoclick\.com https?:\/\/([^\/]*\.)?qoeg6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qojodeh-bdsm-post-video-f\.blogspot\.com https?:\/\/([^\/]*\.)?qosmwx9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qpdoc\.com https?:\/\/([^\/]*\.)?qqdaj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qqer6\.szm\.sk https?:\/\/([^\/]*\.)?qqnbon4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qqwgp\.szm\.sk https?:\/\/([^\/]*\.)?qrvkof5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qsc7\.org\.ua https?:\/\/([^\/]*\.)?qsskk\.info https?:\/\/([^\/]*\.)?qtru3\.szm\.sk https?:\/\/([^\/]*\.)?qu-free-latina-sex-vide-wiv\.blogspot\.com https?:\/\/([^\/]*\.)?quails\.ipupdater\.us https?:\/\/([^\/]*\.)?quandugift\.com https?:\/\/([^\/]*\.)?queryguild\.com https?:\/\/([^\/]*\.)?quqob\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qutgmzbuje-video\.blogspot\.com https?:\/\/([^\/]*\.)?qvewr\.szm\.sk https?:\/\/([^\/]*\.)?qvrzi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qvulp\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qwhhmaj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qwrn6\.fr33webhost\.com https?:\/\/([^\/]*\.)?qxmk2\.fr33webhost\.com https?:\/\/([^\/]*\.)?qyda0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qyf99\.com https?:\/\/([^\/]*\.)?qypv5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qz\.informs\.com https?:\/\/([^\/]*\.)?qzjeqcv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?qzrhj\.fr33webhost\.com https?:\/\/([^\/]*\.)?r-t-free-porn-video-clip-c\.blogspot\.com https?:\/\/([^\/]*\.)?racelleto\.dl\.pl https?:\/\/([^\/]*\.)?racer\.graphforum\.com https?:\/\/([^\/]*\.)?racerboc\.ephpbb\.com https?:\/\/([^\/]*\.)?rachel-hunter-as-stacys-mom\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?racnelelt\.fr-bb\.com https?:\/\/([^\/]*\.)?racoloboc\.graphforum\.com https?:\/\/([^\/]*\.)?racoloboc\.highforum\.net https?:\/\/([^\/]*\.)?racoloor\.dl\.pl https?:\/\/([^\/]*\.)?racrella\.dl\.pl https?:\/\/([^\/]*\.)?racsitli\.dl\.pl https?:\/\/([^\/]*\.)?ractrcna\.bb-fr\.com https?:\/\/([^\/]*\.)?racviget\.blogcu\.com https?:\/\/([^\/]*\.)?raezey\.blogspot\.com https?:\/\/([^\/]*\.)?raged\.info https?:\/\/([^\/]*\.)?rajzhze\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ramandrom\.com https?:\/\/([^\/]*\.)?randomlogik\.blogspot\.com https?:\/\/([^\/]*\.)?rappture\.blogspot\.com https?:\/\/([^\/]*\.)?raruzeol\.jconserv\.net https?:\/\/([^\/]*\.)?rate-boob-pic\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?ratonhteroad\.blogspot\.com https?:\/\/([^\/]*\.)?rawpussy-b0q\.blogspot\.com https?:\/\/([^\/]*\.)?rawpussy-com-t3l\.blogspot\.com https?:\/\/([^\/]*\.)?rawpussy-com-tawon6x\.blogspot\.com https?:\/\/([^\/]*\.)?raxm2\.fr33webhost\.com https?:\/\/([^\/]*\.)?razor-scooter\.hotmail\.ru https?:\/\/([^\/]*\.)?razor2scooter\.chat\.ru https?:\/\/([^\/]*\.)?rboub\.szm\.sk https?:\/\/([^\/]*\.)?rdavisinc\.com https?:\/\/([^\/]*\.)?re-advertising\.boom\.ru https?:\/\/([^\/]*\.)?re\.rutan\.org https?:\/\/([^\/]*\.)?readworld\.com https?:\/\/([^\/]*\.)?real-gay-sex-story\.medved\.od\.ua https?:\/\/([^\/]*\.)?real-ringtoneserd\.blogspot\.com https?:\/\/([^\/]*\.)?realitsen\.info https?:\/\/([^\/]*\.)?realitypassplus-com-e34pddwt1\.blogspot\.com https?:\/\/([^\/]*\.)?realitypassplus-com-e7y\.blogspot\.com https?:\/\/([^\/]*\.)?realityporn\.coz\.in https?:\/\/([^\/]*\.)?realtimewatches\.info https?:\/\/([^\/]*\.)?realtors-x\.com https?:\/\/([^\/]*\.)?reboteen5\.blogspot\.com https?:\/\/([^\/]*\.)?rebuildsanmateohighschool\.org https?:\/\/([^\/]*\.)?recipe4you\.info https?:\/\/([^\/]*\.)?recupero-dati-hard-disk\.ll11\.info https?:\/\/([^\/]*\.)?redder\.my-wifi\.info https?:\/\/([^\/]*\.)?redfxo\.blogspot\.com https?:\/\/([^\/]*\.)?redsex4\.info https?:\/\/([^\/]*\.)?redtcyw\.myfreewebhost\.org https?:\/\/([^\/]*\.)?reductildrug\.coz\.in https?:\/\/([^\/]*\.)?redway-org-d8u\.blogspot\.com https?:\/\/([^\/]*\.)?redway-org-dtxz0863\.blogspot\.com https?:\/\/([^\/]*\.)?redway-rla\.blogspot\.com https?:\/\/([^\/]*\.)?reeringtonesptl\.blogspot\.com https?:\/\/([^\/]*\.)?refinance-x\.com https?:\/\/([^\/]*\.)?reggdr\.org https?:\/\/([^\/]*\.)?regsh\.com https?:\/\/([^\/]*\.)?reiw9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rejoicing\.gigsweb\.com https?:\/\/([^\/]*\.)?rekara\.com https?:\/\/([^\/]*\.)?relagen\.orkan\.yi\.org https?:\/\/([^\/]*\.)?relalract\.lolforum\.net https?:\/\/([^\/]*\.)?relcadron\.bbgraf\.com https?:\/\/([^\/]*\.)?relcoli\.lightbb\.com https?:\/\/([^\/]*\.)?relics\.hackers-unite\.info https?:\/\/([^\/]*\.)?relmonric\.lolforum\.net https?:\/\/([^\/]*\.)?reloading-software\.lycan\.be https?:\/\/([^\/]*\.)?relsitelt\.darkbb\.com https?:\/\/([^\/]*\.)?relsitrel\.xa\.pl https?:\/\/([^\/]*\.)?reltaro\.lolbb\.com https?:\/\/([^\/]*\.)?remiza\.dtdns\.net https?:\/\/([^\/]*\.)?renova\.1\.p2l\.info https?:\/\/([^\/]*\.)?rentbuscompany\.net https?:\/\/([^\/]*\.)?rentcarcenter\.com https?:\/\/([^\/]*\.)?rentcarok\.org https?:\/\/([^\/]*\.)?replacement-batteries\.loretic\.be https?:\/\/([^\/]*\.)?repq7\.szm\.sk https?:\/\/([^\/]*\.)?rerdiq4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?reshall\.iweb\.bsu\.edu https?:\/\/([^\/]*\.)?responderpal\.com https?:\/\/([^\/]*\.)?restless-leg--com\.gameover\.in\.ua https?:\/\/([^\/]*\.)?restless-leg-syndrome-com\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?retin-a\.1\.p2l\.info https?:\/\/([^\/]*\.)?retirement1comm\.chat\.ru https?:\/\/([^\/]*\.)?returboc\.forumculture\.net https?:\/\/([^\/]*\.)?revitolantiaging\.com https?:\/\/([^\/]*\.)?rfjn0\.szm\.sk https?:\/\/([^\/]*\.)?rgvlg\.szm\.sk https?:\/\/([^\/]*\.)?rhdhh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rhinotickets\.com https?:\/\/([^\/]*\.)?rhn45\.nokedem\.com https?:\/\/([^\/]*\.)?rhodeislandmortgage-x\.com https?:\/\/([^\/]*\.)?rhooh\.flnet\.org https?:\/\/([^\/]*\.)?ri-hardcore-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?ricacelco\.dl\.pl https?:\/\/([^\/]*\.)?ricaldneu\.fr-bb\.com https?:\/\/([^\/]*\.)?riceltleto\.dl\.pl https?:\/\/([^\/]*\.)?ricetta-cucina\.host24h\.info https?:\/\/([^\/]*\.)?rich-r\.blogspot\.com https?:\/\/([^\/]*\.)?richards-realm-com-c4h\.blogspot\.com https?:\/\/([^\/]*\.)?richards-realm-com-cs\.blogspot\.com https?:\/\/([^\/]*\.)?riclarol\.dl\.pl https?:\/\/([^\/]*\.)?ricostruzione-unghia\.hostzz\.info https?:\/\/([^\/]*\.)?ricrelnel\.frbb\.net https?:\/\/([^\/]*\.)?rictaget\.uy\.pl https?:\/\/([^\/]*\.)?rictrocvar\.zikforum\.com https?:\/\/([^\/]*\.)?riczelur\.forumzen\.com https?:\/\/([^\/]*\.)?ridiaulctions\.blogspot\.com https?:\/\/([^\/]*\.)?right-leg-swelling\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?rigour\.info https?:\/\/([^\/]*\.)?rijulina\.dl\.pl https?:\/\/([^\/]*\.)?ring-tonecti\.blogspot\.com https?:\/\/([^\/]*\.)?ring2man\.chat\.ru https?:\/\/([^\/]*\.)?ring4man\.chat\.ru https?:\/\/([^\/]*\.)?ring4tel\.com https?:\/\/([^\/]*\.)?ringg\.info https?:\/\/([^\/]*\.)?ringtones-4phone\.com https?:\/\/([^\/]*\.)?ringtones-dir\.com https?:\/\/([^\/]*\.)?ringtones-dir\.net https?:\/\/([^\/]*\.)?ringtones-for-a-samsungtwt\.blogspot\.com https?:\/\/([^\/]*\.)?ringtones-rate\.com https?:\/\/([^\/]*\.)?ringtones\.blogharbor\.com https?:\/\/([^\/]*\.)?ringts\.269g\.net https?:\/\/([^\/]*\.)?risajno\.myfreewebhost\.org https?:\/\/([^\/]*\.)?risque-sexy-plus-size-lingerie\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?rit\.edu https?:\/\/([^\/]*\.)?ritalin-without-prescription\.contact\.cc https?:\/\/([^\/]*\.)?ritalin\.myvnc\.com https?:\/\/([^\/]*\.)?river-road-motorcycle-boot\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?river\.greatfreehosting\.com https?:\/\/([^\/]*\.)?rivotril\.int\.tf https?:\/\/([^\/]*\.)?rm-ast-pants\.blogspot\.com https?:\/\/([^\/]*\.)?rmsq9\.szm\.sk https?:\/\/([^\/]*\.)?rmuuur3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rndk1\.szm\.sk https?:\/\/([^\/]*\.)?rnmg6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ro-westin\.blogspot\.com https?:\/\/([^\/]*\.)?robotqueen\.250free\.com https?:\/\/([^\/]*\.)?rochili\.alkablog\.com https?:\/\/([^\/]*\.)?rodar6or6\.dl\.pl https?:\/\/([^\/]*\.)?rodvww7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rogetou\.dl\.pl https?:\/\/([^\/]*\.)?rojeracr\.forumzen\.com https?:\/\/([^\/]*\.)?roketplanet\.weedns\.com https?:\/\/([^\/]*\.)?rokminric\.dynamicbb\.com https?:\/\/([^\/]*\.)?rokzecdok\.dynamicbb\.com https?:\/\/([^\/]*\.)?rolccna\.dl\.pl https?:\/\/([^\/]*\.)?rolcnac\.td\.pl https?:\/\/([^\/]*\.)?rolex\.heberg-forum\.net https?:\/\/([^\/]*\.)?rolexreplica\.269g\.net https?:\/\/([^\/]*\.)?rolica\.blogcu\.com https?:\/\/([^\/]*\.)?rollaolo\.blogcu\.com https?:\/\/([^\/]*\.)?rollatobas\.naturalforum\.net https?:\/\/([^\/]*\.)?rolracboc\.bb-fr\.com https?:\/\/([^\/]*\.)?roltrsit\.bbfr\.net https?:\/\/([^\/]*\.)?rom\.dl\.pl https?:\/\/([^\/]*\.)?romahotel\.org https?:\/\/([^\/]*\.)?romandie\.com https?:\/\/([^\/]*\.)?romanticmaui\.net https?:\/\/([^\/]*\.)?room-house\.jeepsyc\.be https?:\/\/([^\/]*\.)?root\.dns\.bz https?:\/\/([^\/]*\.)?roouvar\.dl\.pl https?:\/\/([^\/]*\.)?roricdom\.lightbb\.com https?:\/\/([^\/]*\.)?roseofgold52\.50webs\.com https?:\/\/([^\/]*\.)?rotl\.info https?:\/\/([^\/]*\.)?rotrocrol\.darkbb\.com https?:\/\/([^\/]*\.)?roundandbrown-com-bkb03g0hi\.blogspot\.com https?:\/\/([^\/]*\.)?roundandbrown-com-kp04\.blogspot\.com https?:\/\/([^\/]*\.)?roundandbrown-com-wqzj337l\.blogspot\.com https?:\/\/([^\/]*\.)?roundandbrown-com-wus56c\.blogspot\.com https?:\/\/([^\/]*\.)?routan\.org https?:\/\/([^\/]*\.)?roxyobsessed7\.blogspot\.com https?:\/\/([^\/]*\.)?rphqj\.szm\.sk https?:\/\/([^\/]*\.)?rqhdnj4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rqpwn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rrefr\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rrgr4\.fr33webhost\.com https?:\/\/([^\/]*\.)?rrlive\.info https?:\/\/([^\/]*\.)?rrsfmw7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rseo7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?rshu2\.szm\.sk https?:\/\/([^\/]*\.)?rsmy8\.szm\.sk https?:\/\/([^\/]*\.)?rthl0\.fr33webhost\.com https?:\/\/([^\/]*\.)?rtugwoy\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ruanjian\.cwrjcn\.com https?:\/\/([^\/]*\.)?rucowdena\.ifrance\.com https?:\/\/([^\/]*\.)?rudecomputing\.com https?:\/\/([^\/]*\.)?rudu-adam\.blogspot\.com https?:\/\/([^\/]*\.)?ruimingwei\.com\.cn https?:\/\/([^\/]*\.)?rulurbuc\.forumzen\.com https?:\/\/([^\/]*\.)?runutr\.forumzen\.com https?:\/\/([^\/]*\.)?russiannudesgirlszxa\.blogspot\.com https?:\/\/([^\/]*\.)?russiapreteen\.com https?:\/\/([^\/]*\.)?russiavista\.sitiasp\.it https?:\/\/([^\/]*\.)?rwfe5\.szm\.sk https?:\/\/([^\/]*\.)?rxdate\.net https?:\/\/([^\/]*\.)?rxdfh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ryehfpz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ryhgsb\.com https?:\/\/([^\/]*\.)?ryryj\.szm\.sk https?:\/\/([^\/]*\.)?ryu-jounetsu\.blogspot\.com https?:\/\/([^\/]*\.)?rzwj8\.szm\.sk https?:\/\/([^\/]*\.)?s-r-free-porn-movie-clip-x\.blogspot\.com https?:\/\/([^\/]*\.)?s1xbucksamonkey\.blogspot\.com https?:\/\/([^\/]*\.)?s32\.bilsay\.com https?:\/\/([^\/]*\.)?saaaaa\.52blog\.net https?:\/\/([^\/]*\.)?safety-product\.hotmail\.ru https?:\/\/([^\/]*\.)?safety-product\.pochta\.ru https?:\/\/([^\/]*\.)?safety_product\.chat\.ru https?:\/\/([^\/]*\.)?sahezzz\.blogspot\.com https?:\/\/([^\/]*\.)?saibon\.com\.cn https?:\/\/([^\/]*\.)?sakura-watanuki\.blogspot\.com https?:\/\/([^\/]*\.)?salewroughtiron\.cn https?:\/\/([^\/]*\.)?sample-porn-clip-newst1x\.blogspot\.com https?:\/\/([^\/]*\.)?sample-porn-clip-zoneapa\.blogspot\.com https?:\/\/([^\/]*\.)?samsung-ringtonedta\.blogspot\.com https?:\/\/([^\/]*\.)?sand-stars\.blogspot\.com https?:\/\/([^\/]*\.)?sandra-teen-model-qux\.blogspot\.com https?:\/\/([^\/]*\.)?sangrandy\.com https?:\/\/([^\/]*\.)?sanhy\.com https?:\/\/([^\/]*\.)?sanpaulo\.flnet\.org https?:\/\/([^\/]*\.)?santjhon\.php5\.cz https?:\/\/([^\/]*\.)?sapphiceroticacom\.klose\.ipupdater\.com https?:\/\/([^\/]*\.)?sapphicparadise-com-r00asy\.blogspot\.com https?:\/\/([^\/]*\.)?sarobo\.com https?:\/\/([^\/]*\.)?satellite-tv\.hotmail\.ru https?:\/\/([^\/]*\.)?sauna-eq\.boom\.ru https?:\/\/([^\/]*\.)?sauna-heater\.boom\.ru https?:\/\/([^\/]*\.)?sauna-kit\.boom\.ru https?:\/\/([^\/]*\.)?sauna-room\.boom\.ru https?:\/\/([^\/]*\.)?saunaguide\.org https?:\/\/([^\/]*\.)?save-on-auto-insurance\.info https?:\/\/([^\/]*\.)?saved\.ddns\.info https?:\/\/([^\/]*\.)?sbarzn3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?scanthenet\.com https?:\/\/([^\/]*\.)?scat-fetish-story\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?school-driving\.info https?:\/\/([^\/]*\.)?school-girl-butt\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?school2home\.chat\.ru https?:\/\/([^\/]*\.)?sciensezero\.republika\.pl https?:\/\/([^\/]*\.)?scnh6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?scooter11\.chat\.ru https?:\/\/([^\/]*\.)?scooter2\.hotmail\.ru https?:\/\/([^\/]*\.)?screwedupmovies-com-a5wj\.blogspot\.com https?:\/\/([^\/]*\.)?screwedupmovies-com-ax\.blogspot\.com https?:\/\/([^\/]*\.)?scripts-cert\.mit\.edu https?:\/\/([^\/]*\.)?scscj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?sdao7\.szm\.sk https?:\/\/([^\/]*\.)?sdfr0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?sdfsfssss\.com https?:\/\/([^\/]*\.)?se4u\.net https?:\/\/([^\/]*\.)?seafordmed\.info https?:\/\/([^\/]*\.)?seainsurancegroup\.info https?:\/\/([^\/]*\.)?search4sex\.us https?:\/\/([^\/]*\.)?searchbigtits-com-apxd1hwatd\.blogspot\.com https?:\/\/([^\/]*\.)?searchbigtits-com-obraj\.blogspot\.com https?:\/\/([^\/]*\.)?searcheng\.com https?:\/\/([^\/]*\.)?searcheon\.com https?:\/\/([^\/]*\.)?searchgalleries-com-i7\.blogspot\.com https?:\/\/([^\/]*\.)?searchgalleries-com-ib2bi6on5\.blogspot\.com https?:\/\/([^\/]*\.)?searchgals-com-gu1810j\.blogspot\.com https?:\/\/([^\/]*\.)?searcholdies-com-msa\.blogspot\.com https?:\/\/([^\/]*\.)?searchsuperhit\.com https?:\/\/([^\/]*\.)?searchvids-com-h47g8mf\.blogspot\.com https?:\/\/([^\/]*\.)?seasonale\.1\.p2l\.info https?:\/\/([^\/]*\.)?secure-network\.info https?:\/\/([^\/]*\.)?seeallhomes\.com https?:\/\/([^\/]*\.)?seeallnatural\.com https?:\/\/([^\/]*\.)?seeallsite\.com https?:\/\/([^\/]*\.)?seecomplete\.com https?:\/\/([^\/]*\.)?seehersquirt-com-k0\.blogspot\.com https?:\/\/([^\/]*\.)?seehersquirt-com-k3\.blogspot\.com https?:\/\/([^\/]*\.)?seekcounty\.com https?:\/\/([^\/]*\.)?seeyo\.info https?:\/\/([^\/]*\.)?segbqj1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?sege-addison\.blogspot\.com https?:\/\/([^\/]*\.)?seho-aiyana\.blogspot\.com https?:\/\/([^\/]*\.)?sekapad\.info https?:\/\/([^\/]*\.)?sekbad\.info https?:\/\/([^\/]*\.)?selfbuying\.com https?:\/\/([^\/]*\.)?semarqua\.dl\.pl https?:\/\/([^\/]*\.)?senapier\.dl\.pl https?:\/\/([^\/]*\.)?send-flowers\.acb\.pl https?:\/\/([^\/]*\.)?sendon\.net\.cn https?:\/\/([^\/]*\.)?senlu\.com https?:\/\/([^\/]*\.)?sensorscity\.marshall\.edu https?:\/\/([^\/]*\.)?seo\.ohsu\.edu https?:\/\/([^\/]*\.)?seo88\.com https?:\/\/([^\/]*\.)?seomdahi\.jconserv\.net https?:\/\/([^\/]*\.)?seozone\.net https?:\/\/([^\/]*\.)?seranton\.blogspot\.com https?:\/\/([^\/]*\.)?sercheng\.com https?:\/\/([^\/]*\.)?serchlid\.com https?:\/\/([^\/]*\.)?serious-skin\.boom\.ru https?:\/\/([^\/]*\.)?serts\.blogshot\.nl https?:\/\/([^\/]*\.)?servemp3\.com https?:\/\/([^\/]*\.)?serversolutions\.us https?:\/\/([^\/]*\.)?servitch\.com https?:\/\/([^\/]*\.)?ses1\.info https?:\/\/([^\/]*\.)?sestrenish\.biografi\.org https?:\/\/([^\/]*\.)?setara\.dl\.pl https?:\/\/([^\/]*\.)?seventeenlive-com-bado3i\.blogspot\.com https?:\/\/([^\/]*\.)?seventeenlive-com-bmg\.blogspot\.com https?:\/\/([^\/]*\.)?seventeenlive-com-h4dw652dzl\.blogspot\.com https?:\/\/([^\/]*\.)?severnfollow\.info https?:\/\/([^\/]*\.)?sevtentoe\.blogspot\.com https?:\/\/([^\/]*\.)?sewingmachinesusa\.com https?:\/\/([^\/]*\.)?sex--x\.com https?:\/\/([^\/]*\.)?sex-clip-ce872\.blogspot\.com https?:\/\/([^\/]*\.)?sex-dating\.sexnation\.info https?:\/\/([^\/]*\.)?sex-movie-e8qbm\.blogspot\.com https?:\/\/([^\/]*\.)?sex-movie-qig\.blogspot\.com https?:\/\/([^\/]*\.)?sex-video-clip-haq3r\.blogspot\.com https?:\/\/([^\/]*\.)?sex-video-juz\.blogspot\.com https?:\/\/([^\/]*\.)?sex-without-condom\.gameover\.in\.ua https?:\/\/([^\/]*\.)?sex-woman-only-fuck\.protime\.in\.ua https?:\/\/([^\/]*\.)?sex-xxx-free\.100freemb\.com https?:\/\/([^\/]*\.)?sex\.yeahost\.com https?:\/\/([^\/]*\.)?sex1movie\.blogspot\.com https?:\/\/([^\/]*\.)?sexadultdating\.com https?:\/\/([^\/]*\.)?sexape-bpb0\.blogspot\.com https?:\/\/([^\/]*\.)?sexape-com-chdaj7\.blogspot\.com https?:\/\/([^\/]*\.)?sexape-com-cz4z44iud3\.blogspot\.com https?:\/\/([^\/]*\.)?sexape-com-kw7623jxvd\.blogspot\.com https?:\/\/([^\/]*\.)?sexape-com-qipil\.blogspot\.com https?:\/\/([^\/]*\.)?sexape-mte7jm\.blogspot\.com https?:\/\/([^\/]*\.)?sexdirectory-com-tbt0\.blogspot\.com https?:\/\/([^\/]*\.)?sexegirls\.net https?:\/\/([^\/]*\.)?sexgrannies-com-d17v0sa\.blogspot\.com https?:\/\/([^\/]*\.)?sexgrannies-com-dvg3lh0\.blogspot\.com https?:\/\/([^\/]*\.)?sexmaxx-com-w2aoe7q\.blogspot\.com https?:\/\/([^\/]*\.)?sexmaxx-com-w7\.blogspot\.com https?:\/\/([^\/]*\.)?sexmaxx-com-wy23e2588\.blogspot\.com https?:\/\/([^\/]*\.)?sexmaxx-kvhilzx76\.blogspot\.com https?:\/\/([^\/]*\.)?sexnemo-com-joxud\.blogspot\.com https?:\/\/([^\/]*\.)?sexnemo-com-r7iv5\.blogspot\.com https?:\/\/([^\/]*\.)?sexnemo-com-rpj18ot\.blogspot\.com https?:\/\/([^\/]*\.)?sexo-anal-teen\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?sexoasis-a00r68ac\.blogspot\.com https?:\/\/([^\/]*\.)?sexoasis-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?sexoasis-hkz6z4fmr6\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean-b00\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean-com-e2zci5\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean-com-ew426c7qej\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean-com-itvux\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean-com-r6fjn1dz\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean-ibf53b\.blogspot\.com https?:\/\/([^\/]*\.)?sexocean000\.blogspot\.com https?:\/\/([^\/]*\.)?sexy-ass-and-leg\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?sexy-blonde-big-tit\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?sexy-busty-hot\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?sexy-knee-high-boot\.protime\.in\.ua https?:\/\/([^\/]*\.)?sexy-leg-xxx\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?sexy-lesbian-having-sex\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?sexy-models-net-g13hqljr0\.blogspot\.com https?:\/\/([^\/]*\.)?sexy-teacher\.net https?:\/\/([^\/]*\.)?sexy\.dastish\.org https?:\/\/([^\/]*\.)?sexyst\.info https?:\/\/([^\/]*\.)?sfjo7\.szm\.sk https?:\/\/([^\/]*\.)?sftic\.szm\.sk https?:\/\/([^\/]*\.)?sfzone\.cn https?:\/\/([^\/]*\.)?sgkr3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?shaffelrecords\.com https?:\/\/([^\/]*\.)?shahang\.net https?:\/\/([^\/]*\.)?shakira-pa3t\.blogspot\.com https?:\/\/([^\/]*\.)?shakirafortner\.hostingweb\.us https?:\/\/([^\/]*\.)?shampoo\.moistri\.be https?:\/\/([^\/]*\.)?shavedgoat-com-hlfai1dvfb\.blogspot\.com https?:\/\/([^\/]*\.)?shbuscenter\.com https?:\/\/([^\/]*\.)?shcarcenter\.com https?:\/\/([^\/]*\.)?shdianjiang\.cn https?:\/\/([^\/]*\.)?sheji\.paim123\.com https?:\/\/([^\/]*\.)?shemale-action\.net https?:\/\/([^\/]*\.)?shemale-ebony-fuck\.protime\.in\.ua https?:\/\/([^\/]*\.)?shemale-fuck-guys-com\.gameover\.in\.ua https?:\/\/([^\/]*\.)?shemale-no-cock\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?shemalefuckguy\.isabel\.dtdns\.net https?:\/\/([^\/]*\.)?shemales\.coz\.in https?:\/\/([^\/]*\.)?shemp-com-k1yng8\.blogspot\.com https?:\/\/([^\/]*\.)?shemp-com-kcutd\.blogspot\.com https?:\/\/([^\/]*\.)?shemp-com-zuhig\.blogspot\.com https?:\/\/([^\/]*\.)?shenzhenjp\.com https?:\/\/([^\/]*\.)?shesexy-b00\.blogspot\.com https?:\/\/([^\/]*\.)?shesexy-com-i1xf\.blogspot\.com https?:\/\/([^\/]*\.)?shesexy-com-rugok\.blogspot\.com https?:\/\/([^\/]*\.)?shesexy-com-w0dffbvzz\.blogspot\.com https?:\/\/([^\/]*\.)?shesexy-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?shesexy-gogub\.blogspot\.com https?:\/\/([^\/]*\.)?shesexy000\.blogspot\.com https?:\/\/([^\/]*\.)?shetelel\.jconserv\.net https?:\/\/([^\/]*\.)?shexpo2010\.com https?:\/\/([^\/]*\.)?shijiren\.com https?:\/\/([^\/]*\.)?shinylights\.org https?:\/\/([^\/]*\.)?shipeng\.net https?:\/\/([^\/]*\.)?shmoorge\.tripod\.com https?:\/\/([^\/]*\.)?shoesnike\.cn https?:\/\/([^\/]*\.)?shoesorder\.biz https?:\/\/([^\/]*\.)?shoesshop\.biz https?:\/\/([^\/]*\.)?shop24x7\.net https?:\/\/([^\/]*\.)?short-porn-clip-news8rj\.blogspot\.com https?:\/\/([^\/]*\.)?shoujicaixin\.com https?:\/\/([^\/]*\.)?shplaycenter\.cn https?:\/\/([^\/]*\.)?shredder-4paper\.boom\.ru https?:\/\/([^\/]*\.)?shredder-paper\.boom\.ru https?:\/\/([^\/]*\.)?shredder\.boom\.ru https?:\/\/([^\/]*\.)?shredder4paper\.chat\.ru https?:\/\/([^\/]*\.)?shrentcar\.com https?:\/\/([^\/]*\.)?shrudant\.jconserv\.net https?:\/\/([^\/]*\.)?shticketcenter\.com https?:\/\/([^\/]*\.)?shtiklmiaou\.fizwig\.com https?:\/\/([^\/]*\.)?shtranslate\.com https?:\/\/([^\/]*\.)?shufflequince\.org https?:\/\/([^\/]*\.)?siamforum\.com https?:\/\/([^\/]*\.)?siek2\.szm\.sk https?:\/\/([^\/]*\.)?sifa600\.com https?:\/\/([^\/]*\.)?sigla-cartoni-animati\.19mb\.info https?:\/\/([^\/]*\.)?sijalik\.blogspot\.com https?:\/\/([^\/]*\.)?sik-sapphicparadise-com\.blogspot\.com https?:\/\/([^\/]*\.)?sildenafil-citrate\.perso\.tc https?:\/\/([^\/]*\.)?siliconpulse\.info https?:\/\/([^\/]*\.)?silly-n\.blogspot\.com https?:\/\/([^\/]*\.)?simply-gamine\.hostingweb\.us https?:\/\/([^\/]*\.)?simtershrapnel\.blogspot\.com https?:\/\/([^\/]*\.)?sinbiom\.blogspot\.com https?:\/\/([^\/]*\.)?sindyhalliday\.com https?:\/\/([^\/]*\.)?sinequanwithdrawal\.sblog\.cz https?:\/\/([^\/]*\.)?sineto\.net https?:\/\/([^\/]*\.)?sinfulcurves-com-obh\.blogspot\.com https?:\/\/([^\/]*\.)?singova\.org https?:\/\/([^\/]*\.)?siq-xxlmovies-com\.blogspot\.com https?:\/\/([^\/]*\.)?sirloincentury\.org https?:\/\/([^\/]*\.)?sisus\.org https?:\/\/([^\/]*\.)?sitacsit\.goodforum\.net https?:\/\/([^\/]*\.)?sitacsit\.grafbb\.com https?:\/\/([^\/]*\.)?sitchi-or\.xa\.pl https?:\/\/([^\/]*\.)?sitdelcna\.lightbb\.com https?:\/\/([^\/]*\.)?sitdelta\.jc\.pl https?:\/\/([^\/]*\.)?sitdeltroc\.bbfr\.net https?:\/\/([^\/]*\.)?site\.voila\.fr https?:\/\/([^\/]*\.)?siteapts\.info https?:\/\/([^\/]*\.)?sitedating\.org https?:\/\/([^\/]*\.)?sitel\.goodforum\.net https?:\/\/([^\/]*\.)?sitel\.grafbb\.com https?:\/\/([^\/]*\.)?sitladar\.dl\.pl https?:\/\/([^\/]*\.)?sitorsit\.discutfree\.com https?:\/\/([^\/]*\.)?sittazel\.bb-fr\.com https?:\/\/([^\/]*\.)?sj-qh\.com https?:\/\/([^\/]*\.)?sjzwz\.com https?:\/\/([^\/]*\.)?skbrql5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?skelaxin\.1\.p2l\.info https?:\/\/([^\/]*\.)?skelaxin800mg\.sblog\.cz https?:\/\/([^\/]*\.)?skin-care-tip\.boom\.ru https?:\/\/([^\/]*\.)?skin-care\.1\.p2l\.info https?:\/\/([^\/]*\.)?skin-diseas\.boom\.ru https?:\/\/([^\/]*\.)?skin-disease\.boom\.ru https?:\/\/([^\/]*\.)?skin-disease\.fromru\.com https?:\/\/([^\/]*\.)?skin-disease\.newmail\.ru https?:\/\/([^\/]*\.)?skin-product\.hotmail\.ru https?:\/\/([^\/]*\.)?skin-treat\.boom\.ru https?:\/\/([^\/]*\.)?skin-treatm\.boom\.ru https?:\/\/([^\/]*\.)?skin-treatment\.boom\.ru https?:\/\/([^\/]*\.)?skin-trt\.boom\.ru https?:\/\/([^\/]*\.)?skin1-disease\.boom\.ru https?:\/\/([^\/]*\.)?skin1disease\.chat\.ru https?:\/\/([^\/]*\.)?skin1tip4care\.chat\.ru https?:\/\/([^\/]*\.)?skin1treatment\.chat\.ru https?:\/\/([^\/]*\.)?skin_product\.chat\.ru https?:\/\/([^\/]*\.)?skincare\.ixdm\.info https?:\/\/([^\/]*\.)?skodasite\.info https?:\/\/([^\/]*\.)?skvonk\.blogspot\.com https?:\/\/([^\/]*\.)?skvvdm2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?sleep-aids\.1\.p2l\.info https?:\/\/([^\/]*\.)?sleepingsex\.coz\.in https?:\/\/([^\/]*\.)?slickgalleries-b00\.blogspot\.com https?:\/\/([^\/]*\.)?slickgalleries-com-acf4a01s86\.blogspot\.com https?:\/\/([^\/]*\.)?slots-wiki\.com https?:\/\/([^\/]*\.)?slutsvideos-com-mwnyvb2\.blogspot\.com https?:\/\/([^\/]*\.)?smack-dvd\.mutogen\.be https?:\/\/([^\/]*\.)?smackinghotlips\.blogspot\.com https?:\/\/([^\/]*\.)?smal\.php5\.cz https?:\/\/([^\/]*\.)?small-bubble-butt\.protime\.in\.ua https?:\/\/([^\/]*\.)?smart\.45\.kg https?:\/\/([^\/]*\.)?smbay\.cn https?:\/\/([^\/]*\.)?smithtownelementarypta\.org https?:\/\/([^\/]*\.)?smkpe\.myfreewebhost\.org https?:\/\/([^\/]*\.)?smlwqj2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?smnvapnd-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?smolyak\.isuisse\.com https?:\/\/([^\/]*\.)?sms\.bjicp\.net https?:\/\/([^\/]*\.)?smsdown\.blogbus\.com https?:\/\/([^\/]*\.)?smut-house-com-c6t8hcv1be\.blogspot\.com https?:\/\/([^\/]*\.)?smutgremlins-com-a46sull\.blogspot\.com https?:\/\/([^\/]*\.)?smutgremlins-com-w6d7m6ji\.blogspot\.com https?:\/\/([^\/]*\.)?smutmaestro\.net https?:\/\/([^\/]*\.)?snafusurfer\.net https?:\/\/([^\/]*\.)?snakesworld-com-bye\.blogspot\.com https?:\/\/([^\/]*\.)?sneakercool\.com https?:\/\/([^\/]*\.)?sneakernice\.com https?:\/\/([^\/]*\.)?sneck\.info https?:\/\/([^\/]*\.)?snkfbl1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?snmcq\.szm\.sk https?:\/\/([^\/]*\.)?snorting-ritalin\.contact\.cc https?:\/\/([^\/]*\.)?snymk\.szm\.sk https?:\/\/([^\/]*\.)?so-big-tit-video-clip-kos\.blogspot\.com https?:\/\/([^\/]*\.)?so-home-sex-clip-god\.blogspot\.com https?:\/\/([^\/]*\.)?so-so-young-com-kk727o82n\.blogspot\.com https?:\/\/([^\/]*\.)?so1di\.info https?:\/\/([^\/]*\.)?soafacil\.com https?:\/\/([^\/]*\.)?socalmovies-com-enr61t\.blogspot\.com https?:\/\/([^\/]*\.)?socalmovies-com-oy08pp72i\.blogspot\.com https?:\/\/([^\/]*\.)?soccer-mom-sticker\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?socialsciencedeg\.chat\.ru https?:\/\/([^\/]*\.)?socsci\.mccneb\.edu https?:\/\/([^\/]*\.)?sodo0\.szm\.sk https?:\/\/([^\/]*\.)?sofiefie\.blogspot\.com https?:\/\/([^\/]*\.)?soft17-com-d1577f\.blogspot\.com https?:\/\/([^\/]*\.)?softcore-erotica\.net https?:\/\/([^\/]*\.)?software-engine\.org https?:\/\/([^\/]*\.)?softwarematrix\.org https?:\/\/([^\/]*\.)?sohardcore-com-r56bt\.blogspot\.com https?:\/\/([^\/]*\.)?soho0\.szm\.sk https?:\/\/([^\/]*\.)?solacemysoul\.blogspot\.com https?:\/\/([^\/]*\.)?solder\.lowestprices\.at https?:\/\/([^\/]*\.)?soler\.net\.cn https?:\/\/([^\/]*\.)?sologals-com-hs2xad\.blogspot\.com https?:\/\/([^\/]*\.)?sologals-grr5g3\.blogspot\.com https?:\/\/([^\/]*\.)?soma\.1\.p2l\.info https?:\/\/([^\/]*\.)?soma\.homelinux\.com https?:\/\/([^\/]*\.)?soma\.int\.tf https?:\/\/([^\/]*\.)?soma\.php5\.cz https?:\/\/([^\/]*\.)?soma1\.skocz\.net https?:\/\/([^\/]*\.)?someshit\.ru https?:\/\/([^\/]*\.)?somqyxli-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?sonata\.1\.p2l\.info https?:\/\/([^\/]*\.)?sonr4\.fr33webhost\.com https?:\/\/([^\/]*\.)?sotremont\.ru https?:\/\/([^\/]*\.)?soulswallo\.blogspot\.com https?:\/\/([^\/]*\.)?soundandmossl\.com https?:\/\/([^\/]*\.)?southcarolinamortgage-x\.com https?:\/\/([^\/]*\.)?southdakotamortgage-x\.com https?:\/\/([^\/]*\.)?southtecrepair\.com https?:\/\/([^\/]*\.)?spacedim68\.blogspot\.com https?:\/\/([^\/]*\.)?spamim\.net https?:\/\/([^\/]*\.)?spawww\.info https?:\/\/([^\/]*\.)?spcw3\.szm\.sk https?:\/\/([^\/]*\.)?special-ringtones\.net https?:\/\/([^\/]*\.)?specific911\.biz https?:\/\/([^\/]*\.)?specific911\.org https?:\/\/([^\/]*\.)?speed-casino\.com https?:\/\/([^\/]*\.)?speens\.pass\.as https?:\/\/([^\/]*\.)?spermicide-trojan-condom\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?spermshack-al\.blogspot\.com https?:\/\/([^\/]*\.)?spermshack-com-bef\.blogspot\.com https?:\/\/([^\/]*\.)?spermshack-com-gee1\.blogspot\.com https?:\/\/([^\/]*\.)?spermshack-com-gtafrogps\.blogspot\.com https?:\/\/([^\/]*\.)?spermshack-g01u1\.blogspot\.com https?:\/\/([^\/]*\.)?spewie-com-mbntjlrkk\.blogspot\.com https?:\/\/([^\/]*\.)?spfwq\.zhengstar\.com https?:\/\/([^\/]*\.)?spice-girlpkg\.blogspot\.com https?:\/\/([^\/]*\.)?spirit-of-llama\.blogspot\.com https?:\/\/([^\/]*\.)?spirit-psyki\.ifrance\.com https?:\/\/([^\/]*\.)?spiserch\.com https?:\/\/([^\/]*\.)?splashka\.xhostar\.com https?:\/\/([^\/]*\.)?splendid-casino\.com https?:\/\/([^\/]*\.)?spoilzone\.epinoy\.com https?:\/\/([^\/]*\.)?spqi6\.fr33webhost\.com https?:\/\/([^\/]*\.)?sprint-ringtonenot\.blogspot\.com https?:\/\/([^\/]*\.)?sprintringtonesxvt\.blogspot\.com https?:\/\/([^\/]*\.)?sprintringtoneuad\.blogspot\.com https?:\/\/([^\/]*\.)?spstestfree\.com\.com https?:\/\/([^\/]*\.)?spunkmonster\.net https?:\/\/([^\/]*\.)?spwnk\.szm\.sk https?:\/\/([^\/]*\.)?spxqly9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?spyware-adware-killer\.com https?:\/\/([^\/]*\.)?sqoi8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?squall\.my10gb\.com https?:\/\/([^\/]*\.)?sqvde\.myfreewebhost\.org https?:\/\/([^\/]*\.)?sralua\.com https?:\/\/([^\/]*\.)?srarware\.com https?:\/\/([^\/]*\.)?srkyyca\.myfreewebhost\.org https?:\/\/([^\/]*\.)?srtongje\.republika\.pl https?:\/\/([^\/]*\.)?sruqsz3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ssdcard\.info https?:\/\/([^\/]*\.)?sslive\.info https?:\/\/([^\/]*\.)?sspwye7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?sswingersss-777\.tripod\.com https?:\/\/([^\/]*\.)?st-pharmacy\.com https?:\/\/([^\/]*\.)?staa8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?staff\.jccc\.edu https?:\/\/([^\/]*\.)?stainlesssteelpipe\.net https?:\/\/([^\/]*\.)?stampa-foto-digitale\.ll11\.info https?:\/\/([^\/]*\.)?starcelebs-com-ewe5\.blogspot\.com https?:\/\/([^\/]*\.)?starcelebs-com-i3a2mxf\.blogspot\.com https?:\/\/([^\/]*\.)?starcelebs-wihuk\.blogspot\.com https?:\/\/([^\/]*\.)?starryland\.com\.cn https?:\/\/([^\/]*\.)?startchicks\.info https?:\/\/([^\/]*\.)?state-gay-marriage-legal\.gameover\.in\.ua https?:\/\/([^\/]*\.)?state-of-germany\.com https?:\/\/([^\/]*\.)?statisticpal\.com https?:\/\/([^\/]*\.)?stcc9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?steeen-s-bl\.blogspot\.com https?:\/\/([^\/]*\.)?steel-table-leg\.medved\.od\.ua https?:\/\/([^\/]*\.)?stocking-fetish-video\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?stocking-movies-com-du1\.blogspot\.com https?:\/\/([^\/]*\.)?stocking-tease-b7gl\.blogspot\.com https?:\/\/([^\/]*\.)?stocking-tease-com-bm6h145g\.blogspot\.com https?:\/\/([^\/]*\.)?stockings\.coz\.in https?:\/\/([^\/]*\.)?stop-smoking\.1\.p2l\.info https?:\/\/([^\/]*\.)?stpetersburg\.it https?:\/\/([^\/]*\.)?stphipps\.dl\.pl https?:\/\/([^\/]*\.)?strakac\.dtdns\.net https?:\/\/([^\/]*\.)?strange-bizarre-things\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?stranieriinitalia\.org https?:\/\/([^\/]*\.)?straponpost\.net https?:\/\/([^\/]*\.)?street-poker\.com https?:\/\/([^\/]*\.)?streetmp3\.com https?:\/\/([^\/]*\.)?strega\.us https?:\/\/([^\/]*\.)?strip-tease-video-bb-bb-z\.blogspot\.com https?:\/\/([^\/]*\.)?strongsong\.republika\.pl https?:\/\/([^\/]*\.)?structure-settlement\.hotmail\.ru https?:\/\/([^\/]*\.)?sts\.ucsd\.edu https?:\/\/([^\/]*\.)?students\.hsc\.unt\.edu https?:\/\/([^\/]*\.)?study-us\.cn https?:\/\/([^\/]*\.)?stvincent\.uzhgorod\.ua https?:\/\/([^\/]*\.)?stydx\.szm\.sk https?:\/\/([^\/]*\.)?sublimedirectory-com-otb\.blogspot\.com https?:\/\/([^\/]*\.)?sublimemovies-com-wdvh2wmm3\.blogspot\.com https?:\/\/([^\/]*\.)?sublimepie-com-e8g3dw2\.blogspot\.com https?:\/\/([^\/]*\.)?sudanportal\.mrcc\.aast\.edu https?:\/\/([^\/]*\.)?suede-cowboy-boot\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?suicidexlove\.blogspot\.com https?:\/\/([^\/]*\.)?sumeshi0206\.dyndns\.org https?:\/\/([^\/]*\.)?sunaseth\.blogspot\.com https?:\/\/([^\/]*\.)?sunp\.com https?:\/\/([^\/]*\.)?sunporno-com-avbxn\.blogspot\.com https?:\/\/([^\/]*\.)?sunporno-com-go5\.blogspot\.com https?:\/\/([^\/]*\.)?sunsetdreamscondo\.com https?:\/\/([^\/]*\.)?sunsky365\.net https?:\/\/([^\/]*\.)?superadultdirect\.info https?:\/\/([^\/]*\.)?supercalcinhas-com-rij\.blogspot\.com https?:\/\/([^\/]*\.)?superdiosas-com-tm5k7f1v3\.blogspot\.com https?:\/\/([^\/]*\.)?superfinancesolutions\.com https?:\/\/([^\/]*\.)?supergirls\.pochta\.ru https?:\/\/([^\/]*\.)?superha\.angelcities\.com https?:\/\/([^\/]*\.)?superinsuranceworld\.info https?:\/\/([^\/]*\.)?superinternetexplorer\.info https?:\/\/([^\/]*\.)?supershare\.cn https?:\/\/([^\/]*\.)?suphost\.info https?:\/\/([^\/]*\.)?supplements\.1\.p2l\.info https?:\/\/([^\/]*\.)?supplements\.mylonso\.be https?:\/\/([^\/]*\.)?supplierlist\.com https?:\/\/([^\/]*\.)?surfacing\.101freehost\.com https?:\/\/([^\/]*\.)?surmontil\.sblog\.cz https?:\/\/([^\/]*\.)?suxwyj-free-porn\.blogspot\.com https?:\/\/([^\/]*\.)?suzoro-amateur-sex-video\.blogspot\.com https?:\/\/([^\/]*\.)?suzulan\.blogspot\.com https?:\/\/([^\/]*\.)?svetys9i\.125mb\.com https?:\/\/([^\/]*\.)?svike\.info https?:\/\/([^\/]*\.)?swdella\.ifrance\.com https?:\/\/([^\/]*\.)?swechat\.republika\.pl https?:\/\/([^\/]*\.)?sweet-krissy\.babubi\.net https?:\/\/([^\/]*\.)?sweetpniangel87\.blogspot\.com https?:\/\/([^\/]*\.)?swingersadult\.net https?:\/\/([^\/]*\.)?sx\.nazari\.org https?:\/\/([^\/]*\.)?sx\.z0rz\.com https?:\/\/([^\/]*\.)?sxwliwe\.myfreewebhost\.org https?:\/\/([^\/]*\.)?sy-casino\.com https?:\/\/([^\/]*\.)?sygz\.51mp4mp3\.com https?:\/\/([^\/]*\.)?sylvan-queen\.iespana\.es https?:\/\/([^\/]*\.)?symphony\.8tt\.org https?:\/\/([^\/]*\.)?symptom-of-allergic-reaction-to-latex-condom\.protime\.in\.ua https?:\/\/([^\/]*\.)?symy\.jp https?:\/\/([^\/]*\.)?synnin-viemaa\.blogspot\.com https?:\/\/([^\/]*\.)?sz-cj\.com https?:\/\/([^\/]*\.)?sz-dongtai\.com https?:\/\/([^\/]*\.)?sz-tianyicn\.com https?:\/\/([^\/]*\.)?sz4a\.cn https?:\/\/([^\/]*\.)?szarts\.com https?:\/\/([^\/]*\.)?szbeiyang\.net https?:\/\/([^\/]*\.)?szhangkong\.com https?:\/\/([^\/]*\.)?szhjc\.net https?:\/\/([^\/]*\.)?szhowfine\.com https?:\/\/([^\/]*\.)?szhx\.ebloggy\.com https?:\/\/([^\/]*\.)?szhxseo\.com https?:\/\/([^\/]*\.)?szjiuli\.com https?:\/\/([^\/]*\.)?szjiuli\.ebloggy\.com https?:\/\/([^\/]*\.)?szjpnet\.ebloggy\.com https?:\/\/([^\/]*\.)?szjyhk\.com https?:\/\/([^\/]*\.)?szlawyer\.home4u\.china\.com https?:\/\/([^\/]*\.)?szlichuang\.cn https?:\/\/([^\/]*\.)?szlszx\.com https?:\/\/([^\/]*\.)?sznuts\.cn https?:\/\/([^\/]*\.)?szpptc\.com https?:\/\/([^\/]*\.)?szsc-car\.com https?:\/\/([^\/]*\.)?szsfbq\.com https?:\/\/([^\/]*\.)?szyongjin\.ebloggy\.com https?:\/\/([^\/]*\.)?szzhuce\.home4u\.china\.com https?:\/\/([^\/]*\.)?t-sonnaya\.blogspot\.com https?:\/\/([^\/]*\.)?t-teens-for\.blogspot\.com https?:\/\/([^\/]*\.)?t\.tl https?:\/\/([^\/]*\.)?tabarlie\.forumzen\.com https?:\/\/([^\/]*\.)?tabgand\.info https?:\/\/([^\/]*\.)?tablitki\.xwiki\.com https?:\/\/([^\/]*\.)?taboo-porn-clip-blogeq2\.blogspot\.com https?:\/\/([^\/]*\.)?tackle\.247ihost\.com https?:\/\/([^\/]*\.)?tacomanissansubaru\.info https?:\/\/([^\/]*\.)?tactroc\.dl\.pl https?:\/\/([^\/]*\.)?tadalafil-\.ql\.st https?:\/\/([^\/]*\.)?tadalafil\.scanthenet\.com https?:\/\/([^\/]*\.)?tadalafil\.skocz\.net https?:\/\/([^\/]*\.)?tadalafil35\.lookscool\.com https?:\/\/([^\/]*\.)?taefis\.com https?:\/\/([^\/]*\.)?tagetboc\.darkbb\.com https?:\/\/([^\/]*\.)?talj5\.szm\.sk https?:\/\/([^\/]*\.)?tanoli\.su\.pl https?:\/\/([^\/]*\.)?tanorol\.dl\.pl https?:\/\/([^\/]*\.)?taouolo\.dl\.pl https?:\/\/([^\/]*\.)?tapz3\.szm\.sk https?:\/\/([^\/]*\.)?taracdom\.heavenforum\.com https?:\/\/([^\/]*\.)?tarfol\.com https?:\/\/([^\/]*\.)?target-oo6qbtx\.blogspot\.com https?:\/\/([^\/]*\.)?taria-m4j\.blogspot\.com https?:\/\/([^\/]*\.)?taricdam\.dynamicbb\.com https?:\/\/([^\/]*\.)?tarkupu\.myfreewebhost\.org https?:\/\/([^\/]*\.)?taroelt\.bb-fr\.com https?:\/\/([^\/]*\.)?tarra-i6vqa54v\.blogspot\.com https?:\/\/([^\/]*\.)?tart0938\.blogspot\.com https?:\/\/([^\/]*\.)?taryn-hgxikm27y\.blogspot\.com https?:\/\/([^\/]*\.)?tarzuf\.com https?:\/\/([^\/]*\.)?tasculio\.forumzen\.com https?:\/\/([^\/]*\.)?tasha-rup0n3a\.blogspot\.com https?:\/\/([^\/]*\.)?tashia-w1evjakk7\.blogspot\.com https?:\/\/([^\/]*\.)?tasia-emtoy\.blogspot\.com https?:\/\/([^\/]*\.)?tasimd\.com https?:\/\/([^\/]*\.)?tasizuwann-tm7y\.blogspot\.com https?:\/\/([^\/]*\.)?tasnin\.com https?:\/\/([^\/]*\.)?tate-dt\.blogspot\.com https?:\/\/([^\/]*\.)?tateyana-c8s1ms4ai\.blogspot\.com https?:\/\/([^\/]*\.)?tateyona-br48\.blogspot\.com https?:\/\/([^\/]*\.)?tatrocbas\.dl\.pl https?:\/\/([^\/]*\.)?tatrocmon\.dl\.pl https?:\/\/([^\/]*\.)?tattoo-ojqmc35d\.blogspot\.com https?:\/\/([^\/]*\.)?tatum-mlzsfqw\.blogspot\.com https?:\/\/([^\/]*\.)?tatumn-i4anj15\.blogspot\.com https?:\/\/([^\/]*\.)?tatyiana-kwg0ud8fqf\.blogspot\.com https?:\/\/([^\/]*\.)?tauntianna-h6\.blogspot\.com https?:\/\/([^\/]*\.)?taurus-gx\.blogspot\.com https?:\/\/([^\/]*\.)?tayamarn\.blogspot\.com https?:\/\/([^\/]*\.)?taydem-wdm6rxd328\.blogspot\.com https?:\/\/([^\/]*\.)?taydra-ejk45\.blogspot\.com https?:\/\/([^\/]*\.)?tayla-t7b\.blogspot\.com https?:\/\/([^\/]*\.)?tayler-cfez\.blogspot\.com https?:\/\/([^\/]*\.)?taylor-bof5\.blogspot\.com https?:\/\/([^\/]*\.)?taylorbow-com-il3f4ae\.blogspot\.com https?:\/\/([^\/]*\.)?taylorbow-com-inbg2nw\.blogspot\.com https?:\/\/([^\/]*\.)?taynafrates\.freetzi\.com https?:\/\/([^\/]*\.)?taysha-avsm8\.blogspot\.com https?:\/\/([^\/]*\.)?tazman-m6\.blogspot\.com https?:\/\/([^\/]*\.)?tbgbnt5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tbns\.net https?:\/\/([^\/]*\.)?tbrgxjv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tcsgn\.szm\.sk https?:\/\/([^\/]*\.)?tczxwwz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tczxxm6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tdzkzkt\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tdzl\.sunp\.com https?:\/\/([^\/]*\.)?tea-imk7ry1\.blogspot\.com https?:\/\/([^\/]*\.)?tea-pot\.keckins\.be https?:\/\/([^\/]*\.)?teacher-fucking-free\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?teacher-km\.blogspot\.com https?:\/\/([^\/]*\.)?teaching1degree\.chat\.ru https?:\/\/([^\/]*\.)?teainfo\.org https?:\/\/([^\/]*\.)?teamsquirt-com-kjcj3u3i\.blogspot\.com https?:\/\/([^\/]*\.)?tear\.hostcroc\.com https?:\/\/([^\/]*\.)?tech-txyvo8\.blogspot\.com https?:\/\/([^\/]*\.)?tech\.china\.com https?:\/\/([^\/]*\.)?techinpet\.blogspot\.com https?:\/\/([^\/]*\.)?technical-school\.fromru\.com https?:\/\/([^\/]*\.)?technical-school\.hotmail\.ru https?:\/\/([^\/]*\.)?technical-school\.newmail\.ru https?:\/\/([^\/]*\.)?technical1school\.chat\.ru https?:\/\/([^\/]*\.)?teen-anal-cum-shot\.protime\.in\.ua https?:\/\/([^\/]*\.)?teen-blonde-beauty\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?teen-blow-job-movie\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?teen-boob-fuck\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?teen-boob-porn\.medved\.od\.ua https?:\/\/([^\/]*\.)?teen-buff\.net https?:\/\/([^\/]*\.)?teen-chick-masturbating\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?teen-facial-fuck\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?teen-feet-bew\.blogspot\.com https?:\/\/([^\/]*\.)?teen-internal-cum-shot\.gameover\.in\.ua https?:\/\/([^\/]*\.)?teen-kelly-lesbian\.medved\.od\.ua https?:\/\/([^\/]*\.)?teen-movie\.freeinsite\.net https?:\/\/([^\/]*\.)?teen-porn-clip-newsyk6\.blogspot\.com https?:\/\/([^\/]*\.)?teen-sex-movie-f-d-t\.blogspot\.com https?:\/\/([^\/]*\.)?teen-sex-video-w8jpk\.blogspot\.com https?:\/\/([^\/]*\.)?teen-zips\.babubi\.net https?:\/\/([^\/]*\.)?teen6\.vdforum\.ru https?:\/\/([^\/]*\.)?teenax-b00\.blogspot\.com https?:\/\/([^\/]*\.)?teenax-com-pidoq\.blogspot\.com https?:\/\/([^\/]*\.)?teenax-com-rh0ssu62yh\.blogspot\.com https?:\/\/([^\/]*\.)?teenax-com-rke6\.blogspot\.com https?:\/\/([^\/]*\.)?teenbe-com-bdp\.blogspot\.com https?:\/\/([^\/]*\.)?teenbe-com-mb6x\.blogspot\.com https?:\/\/([^\/]*\.)?teenbe-com-mh03o\.blogspot\.com https?:\/\/([^\/]*\.)?teenblowjobs\.vdforum\.ru https?:\/\/([^\/]*\.)?teenboat-com-g6\.blogspot\.com https?:\/\/([^\/]*\.)?teenboat-com-g6f103r\.blogspot\.com https?:\/\/([^\/]*\.)?teenboat-com-mu1s7p\.blogspot\.com https?:\/\/([^\/]*\.)?teenboat-e76l\.blogspot\.com https?:\/\/([^\/]*\.)?teenboys-wel\.blogspot\.com https?:\/\/([^\/]*\.)?teenel-com-hhd\.blogspot\.com https?:\/\/([^\/]*\.)?teenel-com-hq0sgbm\.blogspot\.com https?:\/\/([^\/]*\.)?teeniefiles-com-g84lu\.blogspot\.com https?:\/\/([^\/]*\.)?teeniefiles-com-o43\.blogspot\.com https?:\/\/([^\/]*\.)?teeniefiles-com-ob782u\.blogspot\.com https?:\/\/([^\/]*\.)?teeniemovies-com-aptqg\.blogspot\.com https?:\/\/([^\/]*\.)?teeniemovies-com-as\.blogspot\.com https?:\/\/([^\/]*\.)?teeniemovies-com-hinof\.blogspot\.com https?:\/\/([^\/]*\.)?teeniesxxx-b00\.blogspot\.com https?:\/\/([^\/]*\.)?teenmodels\.hostingtree\.org https?:\/\/([^\/]*\.)?teenporn\.vdforum\.ru https?:\/\/([^\/]*\.)?teenpornrur\.blogspot\.com https?:\/\/([^\/]*\.)?teenpussyfhv\.blogspot\.com https?:\/\/([^\/]*\.)?teens-chat\.info https?:\/\/([^\/]*\.)?teens-list-b-all\.blogspot\.com https?:\/\/([^\/]*\.)?teenseven-com-c0jvb2z\.blogspot\.com https?:\/\/([^\/]*\.)?teensex-com-c4w3g\.blogspot\.com https?:\/\/([^\/]*\.)?teensex-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?teensex\.adultserv\.info https?:\/\/([^\/]*\.)?teensss-com-b8s44\.blogspot\.com https?:\/\/([^\/]*\.)?teensss-com-tds\.blogspot\.com https?:\/\/([^\/]*\.)?teensss-com-thrd\.blogspot\.com https?:\/\/([^\/]*\.)?teentera-com-d5j3qqs\.blogspot\.com https?:\/\/([^\/]*\.)?teentera-com-dyty5cv\.blogspot\.com https?:\/\/([^\/]*\.)?teentera-com-w65\.blogspot\.com https?:\/\/([^\/]*\.)?teentiger-com-e4e6i2f\.blogspot\.com https?:\/\/([^\/]*\.)?teentiger-com-eo602\.blogspot\.com https?:\/\/([^\/]*\.)?teentiger-com-fozol\.blogspot\.com https?:\/\/([^\/]*\.)?teeny-boppers-club-beg\.blogspot\.com https?:\/\/([^\/]*\.)?teenybopperclub-com-bgqk6ejjv\.blogspot\.com https?:\/\/([^\/]*\.)?teenybopperclub-com-bukb\.blogspot\.com https?:\/\/([^\/]*\.)?teenybopperclub-segod\.blogspot\.com https?:\/\/([^\/]*\.)?tegan-d1yagb\.blogspot\.com https?:\/\/([^\/]*\.)?tehxm\.szm\.sk https?:\/\/([^\/]*\.)?tehya-csxo8\.blogspot\.com https?:\/\/([^\/]*\.)?tehyana-bg3\.blogspot\.com https?:\/\/([^\/]*\.)?tekd8\.szm\.sk https?:\/\/([^\/]*\.)?tekiartur\.xhostar\.com https?:\/\/([^\/]*\.)?tekila-a5x7\.blogspot\.com https?:\/\/([^\/]*\.)?tela-ou3khz\.blogspot\.com https?:\/\/([^\/]*\.)?telenglish\.com\.cn https?:\/\/([^\/]*\.)?telephone-ip\.blogspot\.com https?:\/\/([^\/]*\.)?telnushka\.blogspot\.com https?:\/\/([^\/]*\.)?temazepam\.xwiki\.com https?:\/\/([^\/]*\.)?temma-k1n03ege\.blogspot\.com https?:\/\/([^\/]*\.)?temp-h33\.blogspot\.com https?:\/\/([^\/]*\.)?temptation-gujlu2\.blogspot\.com https?:\/\/([^\/]*\.)?ten-ra66722hs5\.blogspot\.com https?:\/\/([^\/]*\.)?tenea-w1\.blogspot\.com https?:\/\/([^\/]*\.)?tenisha-e6f\.blogspot\.com https?:\/\/([^\/]*\.)?tennasa-ttk2oqe4m\.blogspot\.com https?:\/\/([^\/]*\.)?tennesseemortgage-x\.com https?:\/\/([^\/]*\.)?tennille-dm\.blogspot\.com https?:\/\/([^\/]*\.)?tennis-ca8swtk\.blogspot\.com https?:\/\/([^\/]*\.)?tenor-saxophone-fingering\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?tenuate\.1\.p2l\.info https?:\/\/([^\/]*\.)?teopoo\.dynamicforum\.net https?:\/\/([^\/]*\.)?teplomer\.dtdns\.net https?:\/\/([^\/]*\.)?tequila-be5\.blogspot\.com https?:\/\/([^\/]*\.)?teresanict-oorzzsxmjd\.blogspot\.com https?:\/\/([^\/]*\.)?teri-m84ywv38\.blogspot\.com https?:\/\/([^\/]*\.)?terika-i10\.blogspot\.com https?:\/\/([^\/]*\.)?term-paper\.fromru\.com https?:\/\/([^\/]*\.)?term-paper\.nm\.ru https?:\/\/([^\/]*\.)?term_paper\.chat\.ru https?:\/\/([^\/]*\.)?terminal-h0o2cfsibt\.blogspot\.com https?:\/\/([^\/]*\.)?terri-gqdjfrm33d\.blogspot\.com https?:\/\/([^\/]*\.)?terrianna-ru\.blogspot\.com https?:\/\/([^\/]*\.)?terrin-wmwxu3v\.blogspot\.com https?:\/\/([^\/]*\.)?terriona-erbvdaj\.blogspot\.com https?:\/\/([^\/]*\.)?terry-tqzto0ek\.blogspot\.com https?:\/\/([^\/]*\.)?terryikah-dhw46164c2\.blogspot\.com https?:\/\/([^\/]*\.)?terryiona-czcng\.blogspot\.com https?:\/\/([^\/]*\.)?terryn-b8p04mxhn2\.blogspot\.com https?:\/\/([^\/]*\.)?tess-oybaa0ng\.blogspot\.com https?:\/\/([^\/]*\.)?tessa-mugg\.blogspot\.com https?:\/\/([^\/]*\.)?test1\.com https?:\/\/([^\/]*\.)?test123-kpgwe3vie4\.blogspot\.com https?:\/\/([^\/]*\.)?test2-h6qofysx\.blogspot\.com https?:\/\/([^\/]*\.)?test2\.com https?:\/\/([^\/]*\.)?test3\.com https?:\/\/([^\/]*\.)?testmutherfucker\.com https?:\/\/([^\/]*\.)?testtest-g14\.blogspot\.com https?:\/\/([^\/]*\.)?tetteteent\.blogspot\.com https?:\/\/([^\/]*\.)?tettgwk\.myfreewebhost\.org https?:\/\/([^\/]*\.)?texas-hold-em-winner\.net https?:\/\/([^\/]*\.)?texas-hold-em\.black-poker\.com https?:\/\/([^\/]*\.)?texas-holdem-poker\.us\.com https?:\/\/([^\/]*\.)?texas-holdem-winner\.com https?:\/\/([^\/]*\.)?texas-holdem\.black-poker\.com https?:\/\/([^\/]*\.)?texas-rvmu1a0\.blogspot\.com https?:\/\/([^\/]*\.)?texas-va-loan\.com https?:\/\/([^\/]*\.)?texasdad\.com https?:\/\/([^\/]*\.)?texasholdem2\.com https?:\/\/([^\/]*\.)?texasholdemcenteral\.com https?:\/\/([^\/]*\.)?texasholdemsite\.net https?:\/\/([^\/]*\.)?texasmortgage-x\.com https?:\/\/([^\/]*\.)?teyana-wtpu\.blogspot\.com https?:\/\/([^\/]*\.)?teylore-ew24\.blogspot\.com https?:\/\/([^\/]*\.)?tez-teenybopperclub-com\.blogspot\.com https?:\/\/([^\/]*\.)?tgao2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tgksg\.szm\.sk https?:\/\/([^\/]*\.)?tgp-movie-facial\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?tgpprincess\.net https?:\/\/([^\/]*\.)?tgpseeker\.net https?:\/\/([^\/]*\.)?thailand-t865\.blogspot\.com https?:\/\/([^\/]*\.)?thalia-d125yh\.blogspot\.com https?:\/\/([^\/]*\.)?thalya-cgjm\.blogspot\.com https?:\/\/([^\/]*\.)?thbxg\.szm\.sk https?:\/\/([^\/]*\.)?the-amberlady\.blogspot\.com https?:\/\/([^\/]*\.)?the-craftman\.blogspot\.com https?:\/\/([^\/]*\.)?the-female-orgasm-com-h1sx\.blogspot\.com https?:\/\/([^\/]*\.)?the-female-orgasm-com-h8qf5l27j\.blogspot\.com https?:\/\/([^\/]*\.)?the-most-biggest-boob-in-the-world\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?the-murderer\.blogspot\.com https?:\/\/([^\/]*\.)?the-roulette\.net https?:\/\/([^\/]*\.)?theaddedtouch\.net https?:\/\/([^\/]*\.)?theaf\.info https?:\/\/([^\/]*\.)?theaftor\.com https?:\/\/([^\/]*\.)?theag\.info https?:\/\/([^\/]*\.)?theap\.info https?:\/\/([^\/]*\.)?theas\.info https?:\/\/([^\/]*\.)?theat\.info https?:\/\/([^\/]*\.)?theaw\.info https?:\/\/([^\/]*\.)?thebestjaguar\.info https?:\/\/([^\/]*\.)?thebigswallow-com-khcs\.blogspot\.com https?:\/\/([^\/]*\.)?thebigswallow-com-kp3hmbl2e\.blogspot\.com https?:\/\/([^\/]*\.)?thebondbroker\.info https?:\/\/([^\/]*\.)?thecardinaleempire\.com https?:\/\/([^\/]*\.)?thechryslerjeep\.info https?:\/\/([^\/]*\.)?thedailywash\.blogspot\.com https?:\/\/([^\/]*\.)?thedrivingsite\.info https?:\/\/([^\/]*\.)?theente\.com https?:\/\/([^\/]*\.)?thefiatspider\.info https?:\/\/([^\/]*\.)?thehomeworkco\.com https?:\/\/([^\/]*\.)?theiconclub\.info https?:\/\/([^\/]*\.)?theillegalcause\.blogspot\.com https?:\/\/([^\/]*\.)?thejaguarracing\.cn https?:\/\/([^\/]*\.)?thejaguarracing\.info https?:\/\/([^\/]*\.)?theking-ox0p87\.blogspot\.com https?:\/\/([^\/]*\.)?theluckyman\.magnesia\.dtdns\.net https?:\/\/([^\/]*\.)?theman-mbvc\.blogspot\.com https?:\/\/([^\/]*\.)?themazdaspeed\.info https?:\/\/([^\/]*\.)?themoblogs\.com https?:\/\/([^\/]*\.)?theofe\.com https?:\/\/([^\/]*\.)?theorless\.com https?:\/\/([^\/]*\.)?theorrent\.com https?:\/\/([^\/]*\.)?thepartyplaza\.info https?:\/\/([^\/]*\.)?theresa-ipvfeka0y\.blogspot\.com https?:\/\/([^\/]*\.)?thesam118\.blogspot\.com https?:\/\/([^\/]*\.)?theseeall\.com https?:\/\/([^\/]*\.)?theslots\.biz https?:\/\/([^\/]*\.)?thesmart-casino\.com https?:\/\/([^\/]*\.)?thesportspark\.net https?:\/\/([^\/]*\.)?thessaloni-ka8qpmq7\.blogspot\.com https?:\/\/([^\/]*\.)?thestartrekuniverse\.net https?:\/\/([^\/]*\.)?thetexasholdpoker\.com https?:\/\/([^\/]*\.)?thetrafficproject\.com https?:\/\/([^\/]*\.)?thetruevoyeur-com-gkjz2m\.blogspot\.com https?:\/\/([^\/]*\.)?thetruevoyeur-com-gy0\.blogspot\.com https?:\/\/([^\/]*\.)?thetruevoyeur-com-iuswifnlo\.blogspot\.com https?:\/\/([^\/]*\.)?thewarhal\.com https?:\/\/([^\/]*\.)?thexe\.info https?:\/\/([^\/]*\.)?thexo\.info https?:\/\/([^\/]*\.)?thg\.org\.ua https?:\/\/([^\/]*\.)?thick-ass-movie\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?thick-ass-stripper\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?thick-black-ass-pic\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?thigh-boot-movie\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?thiyanna-hl74o5m\.blogspot\.com https?:\/\/([^\/]*\.)?thomarina-gt\.blogspot\.com https?:\/\/([^\/]*\.)?thomas-r6ik\.blogspot\.com https?:\/\/([^\/]*\.)?thomasina-wpcw\.blogspot\.com https?:\/\/([^\/]*\.)?thongbattle-com-rtrllksm\.blogspot\.com https?:\/\/([^\/]*\.)?thongbattle-com-rx2f2tcqrm\.blogspot\.com https?:\/\/([^\/]*\.)?thongdreams-com-w0r16sf\.blogspot\.com https?:\/\/([^\/]*\.)?thongdreams-com-wq50\.blogspot\.com https?:\/\/([^\/]*\.)?thongdreams-com-wx67\.blogspot\.com https?:\/\/([^\/]*\.)?thongdreams-com-xehiw\.blogspot\.com https?:\/\/([^\/]*\.)?thornblack-eq3a55o4\.blogspot\.com https?:\/\/([^\/]*\.)?three-to8p73\.blogspot\.com https?:\/\/([^\/]*\.)?threesforest\.blogspot\.com https?:\/\/([^\/]*\.)?thugs-djaox\.blogspot\.com https?:\/\/([^\/]*\.)?thugz-cqi0x7wkb6\.blogspot\.com https?:\/\/([^\/]*\.)?thumbzilla-com-mq\.blogspot\.com https?:\/\/([^\/]*\.)?thumbzilla-com-mqtw65e\.blogspot\.com https?:\/\/([^\/]*\.)?thumper-bs3t1\.blogspot\.com https?:\/\/([^\/]*\.)?thunder-aq\.blogspot\.com https?:\/\/([^\/]*\.)?thunder\.hostonmars\.com https?:\/\/([^\/]*\.)?thursday-om2jka\.blogspot\.com https?:\/\/([^\/]*\.)?thusqus\.myfreewebhost\.org https?:\/\/([^\/]*\.)?thx1138-mh86v55t2\.blogspot\.com https?:\/\/([^\/]*\.)?tia-icc0gbqhya\.blogspot\.com https?:\/\/([^\/]*\.)?tiahaat\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tiahnna-kf24x7i4n\.blogspot\.com https?:\/\/([^\/]*\.)?tiaja-hr4ci\.blogspot\.com https?:\/\/([^\/]*\.)?tiana-g12f0\.blogspot\.com https?:\/\/([^\/]*\.)?tianna-r4s2r44e50\.blogspot\.com https?:\/\/([^\/]*\.)?tianti\.com\.cn https?:\/\/([^\/]*\.)?tiava-com-i60\.blogspot\.com https?:\/\/([^\/]*\.)?tiava-com-i73ph\.blogspot\.com https?:\/\/([^\/]*\.)?tiava-fiduh\.blogspot\.com https?:\/\/([^\/]*\.)?tiava-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?tiava-tqfgkv74\.blogspot\.com https?:\/\/([^\/]*\.)?tibisa-e5d1w5g\.blogspot\.com https?:\/\/([^\/]*\.)?ticket\.hostaim\.com https?:\/\/([^\/]*\.)?ticketcenter\.cn https?:\/\/([^\/]*\.)?tied-gay-bondage\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?tiepin\.my10gb\.com https?:\/\/([^\/]*\.)?tieteler\.jconserv\.net https?:\/\/([^\/]*\.)?tiffani-dvy3\.blogspot\.com https?:\/\/([^\/]*\.)?tiffany-b5arc\.blogspot\.com https?:\/\/([^\/]*\.)?tiffany-teen-video-ces\.blogspot\.com https?:\/\/([^\/]*\.)?tiffanyteen-a75atrdr\.blogspot\.com https?:\/\/([^\/]*\.)?tigers-ows\.blogspot\.com https?:\/\/([^\/]*\.)?tigger-muhul2h8\.blogspot\.com https?:\/\/([^\/]*\.)?tight-ik340a6f\.blogspot\.com https?:\/\/([^\/]*\.)?tight-tranny-ass\.medved\.od\.ua https?:\/\/([^\/]*\.)?tightdelights-com-bayzdrm4r\.blogspot\.com https?:\/\/([^\/]*\.)?tightdelights-com-bproar5r\.blogspot\.com https?:\/\/([^\/]*\.)?tigre-k0qdp\.blogspot\.com https?:\/\/([^\/]*\.)?tijldebie\.net https?:\/\/([^\/]*\.)?tilneshia-r1\.blogspot\.com https?:\/\/([^\/]*\.)?timank\.com https?:\/\/([^\/]*\.)?timelee\.pp\.ru https?:\/\/([^\/]*\.)?timetopaynow\.com https?:\/\/([^\/]*\.)?timewill\.pp\.ru https?:\/\/([^\/]*\.)?timex-ironman\.leg4is\.be https?:\/\/([^\/]*\.)?timothy-tkd\.blogspot\.com https?:\/\/([^\/]*\.)?timsmovies-com-ck0iq6v\.blogspot\.com https?:\/\/([^\/]*\.)?timsmovies-com-cui64k6qv\.blogspot\.com https?:\/\/([^\/]*\.)?timyra-dy\.blogspot\.com https?:\/\/([^\/]*\.)?tina-ce\.blogspot\.com https?:\/\/([^\/]*\.)?tinman-bb4k610\.blogspot\.com https?:\/\/([^\/]*\.)?tintin-abz\.blogspot\.com https?:\/\/([^\/]*\.)?tiny-cock-blow-job\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?tiny18-net-e5zw0x8\.blogspot\.com https?:\/\/([^\/]*\.)?tiny18-net-thb44\.blogspot\.com https?:\/\/([^\/]*\.)?tiny18-net-tq5qwp\.blogspot\.com https?:\/\/([^\/]*\.)?tinyeve-net-d8ejy5\.blogspot\.com https?:\/\/([^\/]*\.)?tinyeve-net-dzjflb1\.blogspot\.com https?:\/\/([^\/]*\.)?tinysblackadventures-com-a61px\.blogspot\.com https?:\/\/([^\/]*\.)?tinysblackadventures-com-a638lqrud\.blogspot\.com https?:\/\/([^\/]*\.)?tipw\.org\.ua https?:\/\/([^\/]*\.)?tise2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?titanium-ring\.boom\.ru https?:\/\/([^\/]*\.)?titanium-rings\.boom\.ru https?:\/\/([^\/]*\.)?titanium1ring\.chat\.ru https?:\/\/([^\/]*\.)?titanium4ring\.chat\.ru https?:\/\/([^\/]*\.)?titkis\.com https?:\/\/([^\/]*\.)?tittypalace-com-o352hny\.blogspot\.com https?:\/\/([^\/]*\.)?tiye-e5rhl\.blogspot\.com https?:\/\/([^\/]*\.)?tiyona-t4m7cq\.blogspot\.com https?:\/\/([^\/]*\.)?tizanidine\.1\.p2l\.info https?:\/\/([^\/]*\.)?tj-d04qczfk\.blogspot\.com https?:\/\/([^\/]*\.)?tjbb1\.szm\.sk https?:\/\/([^\/]*\.)?tjjp\.left-page\.com https?:\/\/([^\/]*\.)?tjjp\.zxvo\.com https?:\/\/([^\/]*\.)?tjzhh\.com\.cn https?:\/\/([^\/]*\.)?tjzrr\.com https?:\/\/([^\/]*\.)?tkml\.tblog\.com https?:\/\/([^\/]*\.)?tknani\.50webs\.com https?:\/\/([^\/]*\.)?tkzrb\.szm\.sk https?:\/\/([^\/]*\.)?tladies\.net https?:\/\/([^\/]*\.)?tlchjhs\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tldley4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tlhd3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tljsrq\.com https?:\/\/([^\/]*\.)?tlkdb\.szm\.sk https?:\/\/([^\/]*\.)?tmhbj\.com https?:\/\/([^\/]*\.)?tmobilenfn\.blogspot\.com https?:\/\/([^\/]*\.)?tmooeen-six\.blogspot\.com https?:\/\/([^\/]*\.)?tneccotnec\.fr-bb\.com https?:\/\/([^\/]*\.)?tnt163\.com https?:\/\/([^\/]*\.)?toggle-c0t3\.blogspot\.com https?:\/\/([^\/]*\.)?tohj3\.szm\.sk https?:\/\/([^\/]*\.)?tohqy\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tokuctro\.forumzen\.com https?:\/\/([^\/]*\.)?tom-b56vx6b48\.blogspot\.com https?:\/\/([^\/]*\.)?tomato-a7e\.blogspot\.com https?:\/\/([^\/]*\.)?tomems\.125mb\.com https?:\/\/([^\/]*\.)?tommys-bookmarks-com-eeb0\.blogspot\.com https?:\/\/([^\/]*\.)?tommys-bookmarks-com-ev\.blogspot\.com https?:\/\/([^\/]*\.)?tomng\.info https?:\/\/([^\/]*\.)?tomsthumbs-com-ihj\.blogspot\.com https?:\/\/([^\/]*\.)?tomsthumbs-com-iqkobr\.blogspot\.com https?:\/\/([^\/]*\.)?ton4all\.com https?:\/\/([^\/]*\.)?tonea-m3t\.blogspot\.com https?:\/\/([^\/]*\.)?tonegativeone\.blogspot\.com https?:\/\/([^\/]*\.)?toniann-kr3\.blogspot\.com https?:\/\/([^\/]*\.)?tony-h3xs1\.blogspot\.com https?:\/\/([^\/]*\.)?tonya-g0x1\.blogspot\.com https?:\/\/([^\/]*\.)?toons-fuck-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?toor3\.szm\.sk https?:\/\/([^\/]*\.)?tootsie-rjg323oj2\.blogspot\.com https?:\/\/([^\/]*\.)?top-hold-em\.us https?:\/\/([^\/]*\.)?top-holdem\.com https?:\/\/([^\/]*\.)?top-holdem\.us https?:\/\/([^\/]*\.)?top-mp3\.biz https?:\/\/([^\/]*\.)?top\.pcanywhere\.net https?:\/\/([^\/]*\.)?topacio-w3fpzg\.blogspot\.com https?:\/\/([^\/]*\.)?topairlines\.ifrance\.com https?:\/\/([^\/]*\.)?topcelebs-com-hf34tmj\.blogspot\.com https?:\/\/([^\/]*\.)?topdasar\.com https?:\/\/([^\/]*\.)?topee\.info https?:\/\/([^\/]*\.)?topege\.com https?:\/\/([^\/]*\.)?topfarmasearch\.info https?:\/\/([^\/]*\.)?topgun-ef7gc204\.blogspot\.com https?:\/\/([^\/]*\.)?topless-babes-com-mq6hbe5uvq\.blogspot\.com https?:\/\/([^\/]*\.)?topo20\.org https?:\/\/([^\/]*\.)?topography-tuowheetle\.blogspot\.com https?:\/\/([^\/]*\.)?topozo\.org https?:\/\/([^\/]*\.)?topworldauto\.info https?:\/\/([^\/]*\.)?torey-dr343r\.blogspot\.com https?:\/\/([^\/]*\.)?tori-cmg8\.blogspot\.com https?:\/\/([^\/]*\.)?toriana-baui\.blogspot\.com https?:\/\/([^\/]*\.)?tornado-axe8uch1ar\.blogspot\.com https?:\/\/([^\/]*\.)?toronto-ox7aprp\.blogspot\.com https?:\/\/([^\/]*\.)?toropiz\.125mb\.com https?:\/\/([^\/]*\.)?torri-mrmj\.blogspot\.com https?:\/\/([^\/]*\.)?tortoise-iz\.blogspot\.com https?:\/\/([^\/]*\.)?torucnro\.jconserv\.net https?:\/\/([^\/]*\.)?tosuralz\.forumzen\.com https?:\/\/([^\/]*\.)?tottiona-k1zx8juj\.blogspot\.com https?:\/\/([^\/]*\.)?touya012\.blogspot\.com https?:\/\/([^\/]*\.)?town-china\.cn https?:\/\/([^\/]*\.)?toxic-h8jasyqt1\.blogspot\.com https?:\/\/([^\/]*\.)?toyota-g8\.blogspot\.com https?:\/\/([^\/]*\.)?tpwyc\.szm\.sk https?:\/\/([^\/]*\.)?tqdd7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tqnkaoi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tqrkf\.szm\.sk https?:\/\/([^\/]*\.)?traci-r30narn\.blogspot\.com https?:\/\/([^\/]*\.)?tracie-wskg17md\.blogspot\.com https?:\/\/([^\/]*\.)?trackting\.com https?:\/\/([^\/]*\.)?tractor-etae7hau1y\.blogspot\.com https?:\/\/([^\/]*\.)?tracy-kae\.babubi\.net https?:\/\/([^\/]*\.)?tracy-toe7\.blogspot\.com https?:\/\/([^\/]*\.)?traesha-d8u3731bb6\.blogspot\.com https?:\/\/([^\/]*\.)?traffit\.info https?:\/\/([^\/]*\.)?tralina-bvqz366sv\.blogspot\.com https?:\/\/([^\/]*\.)?tramadol-4u\.net https?:\/\/([^\/]*\.)?tramadol-911\.coz\.in https?:\/\/([^\/]*\.)?tramadol-bznz\.blogspot\.com https?:\/\/([^\/]*\.)?tramadol-cc\.blogspot\.com https?:\/\/([^\/]*\.)?tramadol-gs\.eu\.tc https?:\/\/([^\/]*\.)?tramadol-gs\.net\.tc https?:\/\/([^\/]*\.)?tramadol-online\.presteert\.nl https?:\/\/([^\/]*\.)?tramadol-wiki\.com https?:\/\/([^\/]*\.)?tramadol\.1\.forogratis\.es https?:\/\/([^\/]*\.)?tramadol\.1\.p2l\.info https?:\/\/([^\/]*\.)?tramadol\.esguay\.com https?:\/\/([^\/]*\.)?tramadol\.fws1\.com https?:\/\/([^\/]*\.)?tramadol\.goodpharm\.info https?:\/\/([^\/]*\.)?tramadol\.knopkabablo\.info https?:\/\/([^\/]*\.)?tramadol\.presteert\.nl https?:\/\/([^\/]*\.)?tramadol\.skocz\.net https?:\/\/([^\/]*\.)?tramadol\.su\.pl https?:\/\/([^\/]*\.)?tramadol\.weboficial\.com https?:\/\/([^\/]*\.)?tramadol7\.php5\.cz https?:\/\/([^\/]*\.)?tramadolnx\.u\.yuku\.com https?:\/\/([^\/]*\.)?tramadolonline\.ovp\.pl https?:\/\/([^\/]*\.)?tramadolonlinez\.blogsome\.com https?:\/\/([^\/]*\.)?tramadolq\.bloggingmylife\.com https?:\/\/([^\/]*\.)?tramadols\.us\.tf https?:\/\/([^\/]*\.)?trami-a7oq4k1\.blogspot\.com https?:\/\/([^\/]*\.)?tramika-o4no\.blogspot\.com https?:\/\/([^\/]*\.)?tran-ma86bq3\.blogspot\.com https?:\/\/([^\/]*\.)?tranici\.info https?:\/\/([^\/]*\.)?tranlaura-ktn\.blogspot\.com https?:\/\/([^\/]*\.)?trannysurprise-com-ghn6k4r88\.blogspot\.com https?:\/\/([^\/]*\.)?trannysurprise-com-gq\.blogspot\.com https?:\/\/([^\/]*\.)?trannysurprise-com-i05csl\.blogspot\.com https?:\/\/([^\/]*\.)?transbiding\.com https?:\/\/([^\/]*\.)?transchinese\.com https?:\/\/([^\/]*\.)?transfer-h56d4zxl4\.blogspot\.com https?:\/\/([^\/]*\.)?translateatsh\.cn https?:\/\/([^\/]*\.)?translatebbs\.com https?:\/\/([^\/]*\.)?translateforcompany\.cn https?:\/\/([^\/]*\.)?traore-guh68nn\.blogspot\.com https?:\/\/([^\/]*\.)?trashnx\.datadiri\.cc https?:\/\/([^\/]*\.)?trastian-r1\.blogspot\.com https?:\/\/([^\/]*\.)?travel-blast\.com https?:\/\/([^\/]*\.)?travel-wa4g2\.blogspot\.com https?:\/\/([^\/]*\.)?travel\.globaltr\.info https?:\/\/([^\/]*\.)?travel2nursing\.chat\.ru https?:\/\/([^\/]*\.)?travelmarket\.mytravelsearch\.info https?:\/\/([^\/]*\.)?travis-ez8v\.blogspot\.com https?:\/\/([^\/]*\.)?tray-t5\.blogspot\.com https?:\/\/([^\/]*\.)?trbodel\.frbb\.net https?:\/\/([^\/]*\.)?trbusget\.forumzen\.com https?:\/\/([^\/]*\.)?trcchi\.td\.pl https?:\/\/([^\/]*\.)?trcota\.bb-fr\.com https?:\/\/([^\/]*\.)?trdombas\.blogcu\.com https?:\/\/([^\/]*\.)?trerdron\.discutfree\.com https?:\/\/([^\/]*\.)?trerdron\.dynamicforum\.net https?:\/\/([^\/]*\.)?tressa-a7w83sb\.blogspot\.com https?:\/\/([^\/]*\.)?tretinoingelbuy\.move\.to https?:\/\/([^\/]*\.)?tretinoingelbuycheap\.move\.to https?:\/\/([^\/]*\.)?tretinoingelbuygeneric\.drive\.to https?:\/\/([^\/]*\.)?tretinoingelcheap\.rulestheweb\.com https?:\/\/([^\/]*\.)?tretinoingelgeneric\.germany\.ms https?:\/\/([^\/]*\.)?trevisos\.org https?:\/\/([^\/]*\.)?trevor-obp5qlgdb\.blogspot\.com https?:\/\/([^\/]*\.)?trhlina\.republika\.pl https?:\/\/([^\/]*\.)?tribuna\.asp2\.cz https?:\/\/([^\/]*\.)?trident-m6wm\.blogspot\.com https?:\/\/([^\/]*\.)?trinbagoauto\.com https?:\/\/([^\/]*\.)?trinity-ikvstb\.blogspot\.com https?:\/\/([^\/]*\.)?triobuy\.vtost\.com https?:\/\/([^\/]*\.)?triphasil\.1\.p2l\.info https?:\/\/([^\/]*\.)?tripto\.com https?:\/\/([^\/]*\.)?trisha-ksmv\.blogspot\.com https?:\/\/([^\/]*\.)?tristen-h2b1b1\.blogspot\.com https?:\/\/([^\/]*\.)?trivial-gk13on\.blogspot\.com https?:\/\/([^\/]*\.)?trixie-rkn\.blogspot\.com https?:\/\/([^\/]*\.)?trkucorc\.forumzen\.com https?:\/\/([^\/]*\.)?trlicut\.winnerforum\.net https?:\/\/([^\/]*\.)?trocacsit\.dl\.pl https?:\/\/([^\/]*\.)?troccvi\.darkbb\.com https?:\/\/([^\/]*\.)?trocdarc\.bb-fr\.com https?:\/\/([^\/]*\.)?troceltolo\.dl\.pl https?:\/\/([^\/]*\.)?trocoches\.info https?:\/\/([^\/]*\.)?trocrolac\.dl\.pl https?:\/\/([^\/]*\.)?troctrocro\.zj\.pl https?:\/\/([^\/]*\.)?trombone-wafnt\.blogspot\.com https?:\/\/([^\/]*\.)?trorolo\.ephpbb\.com https?:\/\/([^\/]*\.)?trorta\.blogcu\.com https?:\/\/([^\/]*\.)?trte2\.szm\.sk https?:\/\/([^\/]*\.)?trtrocli\.uy\.pl https?:\/\/([^\/]*\.)?trucks-t5rikxk1yk\.blogspot\.com https?:\/\/([^\/]*\.)?trumpet-d5846b6u\.blogspot\.com https?:\/\/([^\/]*\.)?trumst\.com https?:\/\/([^\/]*\.)?trzelor\.bbfr\.net https?:\/\/([^\/]*\.)?ts998\.com https?:\/\/([^\/]*\.)?tsc-clara\.hostingtree\.org https?:\/\/([^\/]*\.)?tsfzia5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tshirthell-com-h4dd14cx0g\.blogspot\.com https?:\/\/([^\/]*\.)?tshirthell-com-wbc\.blogspot\.com https?:\/\/([^\/]*\.)?tshirthell-com-wvayrpu2\.blogspot\.com https?:\/\/([^\/]*\.)?tslist-com-rwwi8zl\.blogspot\.com https?:\/\/([^\/]*\.)?tslist-com-ry\.blogspot\.com https?:\/\/([^\/]*\.)?tsoy7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tss-car\.com https?:\/\/([^\/]*\.)?tssuih5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tsvibak\.blogspot\.com https?:\/\/([^\/]*\.)?tt001\.com https?:\/\/([^\/]*\.)?tt002\.com https?:\/\/([^\/]*\.)?tt003\.com https?:\/\/([^\/]*\.)?tt004\.com https?:\/\/([^\/]*\.)?tt005\.com https?:\/\/([^\/]*\.)?tthumvir\.forumzen\.com https?:\/\/([^\/]*\.)?ttjpm\.szm\.sk https?:\/\/([^\/]*\.)?ttlive\.info https?:\/\/([^\/]*\.)?ttrgb\.szm\.sk https?:\/\/([^\/]*\.)?ttvpkp0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tu-wendi\.blogspot\.com https?:\/\/([^\/]*\.)?tubas-bc45h\.blogspot\.com https?:\/\/([^\/]*\.)?tuesday-anx780we1\.blogspot\.com https?:\/\/([^\/]*\.)?tufa\.info https?:\/\/([^\/]*\.)?tugjobs-com-kmr4pm\.blogspot\.com https?:\/\/([^\/]*\.)?tuhe-advil\.blogspot\.com https?:\/\/([^\/]*\.)?tulip123456\.ifrance\.com https?:\/\/([^\/]*\.)?turbo-o3f520u0jd\.blogspot\.com https?:\/\/([^\/]*\.)?turl\.jp https?:\/\/([^\/]*\.)?turtle-m6pr6y\.blogspot\.com https?:\/\/([^\/]*\.)?tuttle-i5\.blogspot\.com https?:\/\/([^\/]*\.)?tuttosport\.freespase\.info https?:\/\/([^\/]*\.)?tuubu\.szm\.sk https?:\/\/([^\/]*\.)?tv-bazzar\.com https?:\/\/([^\/]*\.)?twam0\.fr33webhost\.com https?:\/\/([^\/]*\.)?tweety-k8z4spyz\.blogspot\.com https?:\/\/([^\/]*\.)?twelvalve\.blogspot\.com https?:\/\/([^\/]*\.)?twilightsex-cixeh\.blogspot\.com https?:\/\/([^\/]*\.)?twilightsex-com-o31qd\.blogspot\.com https?:\/\/([^\/]*\.)?twilightsex-com-op\.blogspot\.com https?:\/\/([^\/]*\.)?twins-hzhz\.blogspot\.com https?:\/\/([^\/]*\.)?twist-ga\.blogspot\.com https?:\/\/([^\/]*\.)?twister-r4\.blogspot\.com https?:\/\/([^\/]*\.)?two-lips-com-cfvn7fu3\.blogspot\.com https?:\/\/([^\/]*\.)?two-lips-com-cwk\.blogspot\.com https?:\/\/([^\/]*\.)?two-teen-kissing\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?two-wgn3t3\.blogspot\.com https?:\/\/([^\/]*\.)?twoq5\.szm\.sk https?:\/\/([^\/]*\.)?twxtbqn\.myfreewebhost\.org https?:\/\/([^\/]*\.)?txnpgc2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?txvfpo7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tyepobv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?tyj\.cwrjcn\.com https?:\/\/([^\/]*\.)?tyra-dna0lnjav\.blogspot\.com https?:\/\/([^\/]*\.)?tytiana-bjag\.blogspot\.com https?:\/\/([^\/]*\.)?tyvj5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uaobs\.szm\.sk https?:\/\/([^\/]*\.)?ub-mongolia\.mn https?:\/\/([^\/]*\.)?ubasak\.stabilt\.se https?:\/\/([^\/]*\.)?ubpmr\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ucdrun\.forumzen\.com https?:\/\/([^\/]*\.)?ucol2\.szm\.sk https?:\/\/([^\/]*\.)?udqhh\.szm\.sk https?:\/\/([^\/]*\.)?udtm7\.szm\.sk https?:\/\/([^\/]*\.)?uemhpgv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uglyjezz\.asp2\.cz https?:\/\/([^\/]*\.)?ugmhq\.szm\.sk https?:\/\/([^\/]*\.)?ukbettingweb\.com https?:\/\/([^\/]*\.)?ukek-hin\.isuisse\.com https?:\/\/([^\/]*\.)?ukrosi\.com https?:\/\/([^\/]*\.)?uksr9\.fr33webhost\.com https?:\/\/([^\/]*\.)?ulqj9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ultimateairpurifier\.com https?:\/\/([^\/]*\.)?ultimatesurrender-com-bkio\.blogspot\.com https?:\/\/([^\/]*\.)?ultimatesurrender-com-bm8z1b\.blogspot\.com https?:\/\/([^\/]*\.)?ultimatesurrender-com-c75r71j2e\.blogspot\.com https?:\/\/([^\/]*\.)?ultracet\.1\.p2l\.info https?:\/\/([^\/]*\.)?ultradonkey-com-acp\.blogspot\.com https?:\/\/([^\/]*\.)?ultradonkey-com-ag0\.blogspot\.com https?:\/\/([^\/]*\.)?ultram-cc\.blogspot\.com https?:\/\/([^\/]*\.)?ultram\.1\.p2l\.info https?:\/\/([^\/]*\.)?ultram\.47\.pl https?:\/\/([^\/]*\.)?ultram\.goodpharm\.info https?:\/\/([^\/]*\.)?ultram\.hav\.pl https?:\/\/([^\/]*\.)?ultram\.is-a-geek\.com https?:\/\/([^\/]*\.)?ultram\.serveftp\.com https?:\/\/([^\/]*\.)?ultram\.skocz\.net https?:\/\/([^\/]*\.)?ultrameds\.dtdns\.net https?:\/\/([^\/]*\.)?ultrams\.eu\.tf https?:\/\/([^\/]*\.)?ultrasexmovies-com-dm2dmh\.blogspot\.com https?:\/\/([^\/]*\.)?ultrasexmovies-com-dz02q7\.blogspot\.com https?:\/\/([^\/]*\.)?ultrasexmovies-com-zujuz\.blogspot\.com https?:\/\/([^\/]*\.)?umax-forum\.com https?:\/\/([^\/]*\.)?umax-ppc\.com https?:\/\/([^\/]*\.)?umax-se\.com https?:\/\/([^\/]*\.)?umax-se\.info https?:\/\/([^\/]*\.)?umax-search-ppc-se-board\.com https?:\/\/([^\/]*\.)?umax-search-se\.com https?:\/\/([^\/]*\.)?umax-search\.net https?:\/\/([^\/]*\.)?umaxppc\.com https?:\/\/([^\/]*\.)?umaxse\.net https?:\/\/([^\/]*\.)?umaxse\.org https?:\/\/([^\/]*\.)?umaxsearch-search-engine\.com https?:\/\/([^\/]*\.)?umojucd\.myfreewebhost\.org https?:\/\/([^\/]*\.)?umsbm\.myfreewebhost\.org https?:\/\/([^\/]*\.)?un-fois\.blogspot\.com https?:\/\/([^\/]*\.)?un-nachrichten\.de https?:\/\/([^\/]*\.)?unbelievable-poker\.com https?:\/\/([^\/]*\.)?uncledeadly83\.blogspot\.com https?:\/\/([^\/]*\.)?understandish\.50webs\.org https?:\/\/([^\/]*\.)?unglaublichkeiten\.com https?:\/\/([^\/]*\.)?unicom\.027168\.com https?:\/\/([^\/]*\.)?uniform2nursing\.chat\.ru https?:\/\/([^\/]*\.)?unit01\.com https?:\/\/([^\/]*\.)?united-airline\.boom\.ru https?:\/\/([^\/]*\.)?united24\.com https?:\/\/([^\/]*\.)?unitedinchristchurch\.org https?:\/\/([^\/]*\.)?universal-hosting\.net https?:\/\/([^\/]*\.)?university-degre\.boom\.ru https?:\/\/([^\/]*\.)?university1degre\.chat\.ru https?:\/\/([^\/]*\.)?unixbrewers\.org https?:\/\/([^\/]*\.)?unka\.su\.pl https?:\/\/([^\/]*\.)?unseenoyster\.blogspot\.com https?:\/\/([^\/]*\.)?unwqs\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uobasdel\.fr-bb\.com https?:\/\/([^\/]*\.)?uokx8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uous6\.fr33webhost\.com https?:\/\/([^\/]*\.)?up-skirt-butt\.medved\.odessa\.ua https?:\/\/([^\/]*\.)?updatenames\.dtdns\.net https?:\/\/([^\/]*\.)?upskirt-ebony-teen\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?upskirt-gallery-leg\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?upskirtsexxfh\.blogspot\.com https?:\/\/([^\/]*\.)?upwaldru\.ifrance\.com https?:\/\/([^\/]*\.)?uraharaben1hime\.blogspot\.com https?:\/\/([^\/]*\.)?urkrdh5\.myfreewebhost\.org https?:\/\/([^\/]*\.)?urky5\.szm\.sk https?:\/\/([^\/]*\.)?us-senator-dick-durbin\.protime\.in\.ua https?:\/\/([^\/]*\.)?us-viagra\.us https?:\/\/([^\/]*\.)?us\.kopuz\.com https?:\/\/([^\/]*\.)?usa-online-pharmacy\.net https?:\/\/([^\/]*\.)?usa568\.com https?:\/\/([^\/]*\.)?usaah\.com https?:\/\/([^\/]*\.)?usbestlawyer\.org https?:\/\/([^\/]*\.)?usbuorl\.myfreewebhost\.org https?:\/\/([^\/]*\.)?usednotebooks\.ru https?:\/\/([^\/]*\.)?ushoh\.szm\.sk https?:\/\/([^\/]*\.)?uskbbb9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?usuc\.us https?:\/\/([^\/]*\.)?uszfp\.szm\.sk https?:\/\/([^\/]*\.)?utahmortgage-x\.com https?:\/\/([^\/]*\.)?utranslate\.org https?:\/\/([^\/]*\.)?utranslation\.net https?:\/\/([^\/]*\.)?uucwsw7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uulitr\.forumzen\.com https?:\/\/([^\/]*\.)?uulive\.info https?:\/\/([^\/]*\.)?uvfotuc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uvgpy\.szm\.sk https?:\/\/([^\/]*\.)?uvndhxh\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uwacadweb\.uwyo\.edu https?:\/\/([^\/]*\.)?uwek\.info https?:\/\/([^\/]*\.)?uxyei\.szm\.sk https?:\/\/([^\/]*\.)?uyjdrg3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?uzfde\.fr33webhost\.com https?:\/\/([^\/]*\.)?uzzclm9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?v-f-sex-video-clip-g\.blogspot\.com https?:\/\/([^\/]*\.)?v-j-big-movie-tit-v\.blogspot\.com https?:\/\/([^\/]*\.)?v1h\.com https?:\/\/([^\/]*\.)?v5wednesday\.info https?:\/\/([^\/]*\.)?v7njlwgd\.nokedem\.com https?:\/\/([^\/]*\.)?vacanza-barcellona\.zoom10x\.info https?:\/\/([^\/]*\.)?vacanza-montagna\.freespase\.info https?:\/\/([^\/]*\.)?vacanza-neve\.zoom4x\.info https?:\/\/([^\/]*\.)?vacanza-toscana\.host24h\.info https?:\/\/([^\/]*\.)?vacuums\.be https?:\/\/([^\/]*\.)?vahitchc\.dl\.pl https?:\/\/([^\/]*\.)?valiubusines\.blogcu\.com https?:\/\/([^\/]*\.)?valium-911\.coz\.in https?:\/\/([^\/]*\.)?valium-cc\.blogspot\.com https?:\/\/([^\/]*\.)?valium-cheap\.18\.to https?:\/\/([^\/]*\.)?valium-online\.cheapills\.info https?:\/\/([^\/]*\.)?valium-qrxo\.blogspot\.com https?:\/\/([^\/]*\.)?valium\.269g\.net https?:\/\/([^\/]*\.)?valium\.47\.pl https?:\/\/([^\/]*\.)?valium\.goodpharm\.info https?:\/\/([^\/]*\.)?valium\.skocz\.net https?:\/\/([^\/]*\.)?valium\.su\.pl https?:\/\/([^\/]*\.)?valiumnx\.u\.yuku\.com https?:\/\/([^\/]*\.)?valiums\.eu\.tf https?:\/\/([^\/]*\.)?valleyswap\.info https?:\/\/([^\/]*\.)?valtrex\.1\.p2l\.info https?:\/\/([^\/]*\.)?vametase\.com https?:\/\/([^\/]*\.)?vands88\.blogspot\.com https?:\/\/([^\/]*\.)?vanhelsingsgirl\.datadiri\.cc https?:\/\/([^\/]*\.)?vaniqa\.1\.p2l\.info https?:\/\/([^\/]*\.)?varac\.heavenforum\.com https?:\/\/([^\/]*\.)?varac\.highforum\.net https?:\/\/([^\/]*\.)?varelvi\.discutfree\.com https?:\/\/([^\/]*\.)?varnish\.8888mb\.com https?:\/\/([^\/]*\.)?varnotr\.naturalforum\.net https?:\/\/([^\/]*\.)?varoracel\.bbfr\.net https?:\/\/([^\/]*\.)?varracleto\.dl\.pl https?:\/\/([^\/]*\.)?vazicoj\.info https?:\/\/([^\/]*\.)?vboya\.9999mb\.com https?:\/\/([^\/]*\.)?vcjwc\.fr33webhost\.com https?:\/\/([^\/]*\.)?vcpk9\.szm\.sk https?:\/\/([^\/]*\.)?vcsps\.com https?:\/\/([^\/]*\.)?vdpf4\.szm\.sk https?:\/\/([^\/]*\.)?ve-alisa\.blogspot\.com https?:\/\/([^\/]*\.)?vegetnuks\.blogspot\.com https?:\/\/([^\/]*\.)?veggis\.org\.cn https?:\/\/([^\/]*\.)?vehal\.com https?:\/\/([^\/]*\.)?vek-xxxpower-net\.blogspot\.com https?:\/\/([^\/]*\.)?velvetimalice\.ibelgique\.com https?:\/\/([^\/]*\.)?vemiles\.ifrance\.com https?:\/\/([^\/]*\.)?verba\.dyndns\.dk https?:\/\/([^\/]*\.)?verfolva\.blogspot\.com https?:\/\/([^\/]*\.)?veriel\.dl\.pl https?:\/\/([^\/]*\.)?verizonringtonersy\.blogspot\.com https?:\/\/([^\/]*\.)?verizonringtonesdvf\.blogspot\.com https?:\/\/([^\/]*\.)?vermontmortgage-x\.com https?:\/\/([^\/]*\.)?vertyg\.org https?:\/\/([^\/]*\.)?veryge\.com https?:\/\/([^\/]*\.)?veryprivatebanking\.info https?:\/\/([^\/]*\.)?vestuk\.com https?:\/\/([^\/]*\.)?veterinar\.spb\.ru https?:\/\/([^\/]*\.)?vets\.appliedphysics\.swri\.edu https?:\/\/([^\/]*\.)?vfrkiv6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vfrrto\.org https?:\/\/([^\/]*\.)?vhuekxi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vi-allo\.blogspot\.com https?:\/\/([^\/]*\.)?viadele\.dl\.pl https?:\/\/([^\/]*\.)?viagaravaegra\.com https?:\/\/([^\/]*\.)?viaggi-del-ventaglio\.forumhst\.info https?:\/\/([^\/]*\.)?viagra-4u\.us https?:\/\/([^\/]*\.)?viagra-online\.presteert\.nl https?:\/\/([^\/]*\.)?viagra-soft-tabs\.1\.p2l\.info https?:\/\/([^\/]*\.)?viagra\.1\.p2l\.info https?:\/\/([^\/]*\.)?viagra\.cheapills\.info https?:\/\/([^\/]*\.)?viagra\.edu\.tf https?:\/\/([^\/]*\.)?viagra\.esguay\.com https?:\/\/([^\/]*\.)?viagra\.inc5\.com https?:\/\/([^\/]*\.)?viagra\.rx4\.org https?:\/\/([^\/]*\.)?viagra\.skocz\.net https?:\/\/([^\/]*\.)?viagrai\.blogspot\.com https?:\/\/([^\/]*\.)?viagraorder\.mail15\.com https?:\/\/([^\/]*\.)?viagraq\.bloggingmylife\.com https?:\/\/([^\/]*\.)?viagrarx\.weboficial\.com https?:\/\/([^\/]*\.)?vicodin-pharm\.fws1\.com https?:\/\/([^\/]*\.)?vicodin\.269g\.net https?:\/\/([^\/]*\.)?vicodin\.conto\.pl https?:\/\/([^\/]*\.)?vicodin\.esguay\.com https?:\/\/([^\/]*\.)?vicodin\.guu\.pl https?:\/\/([^\/]*\.)?vicodin88\.tblog\.com https?:\/\/([^\/]*\.)?victoria-silvstedt\.freehostss\.info https?:\/\/([^\/]*\.)?videlric\.dl\.pl https?:\/\/([^\/]*\.)?video-comico\.host24h\.info https?:\/\/([^\/]*\.)?video-porn-caseros-ju\.blogspot\.com https?:\/\/([^\/]*\.)?video-porn-gratis-sod\.blogspot\.com https?:\/\/([^\/]*\.)?video-post-com-bejiq\.blogspot\.com https?:\/\/([^\/]*\.)?video-post-com-bfoybt\.blogspot\.com https?:\/\/([^\/]*\.)?video-post-com-my\.blogspot\.com https?:\/\/([^\/]*\.)?video-post-com-thumbview-rehif\.blogspot\.com https?:\/\/([^\/]*\.)?video-spot-sexy\.19mb\.info https?:\/\/([^\/]*\.)?video-spot-sexy\.you-bizz\.info https?:\/\/([^\/]*\.)?video-whore-bb-bb-b\.blogspot\.com https?:\/\/([^\/]*\.)?videosection-com-h0xon\.blogspot\.com https?:\/\/([^\/]*\.)?videosection-com-w1w\.blogspot\.com https?:\/\/([^\/]*\.)?videosection-com-w62l\.blogspot\.com https?:\/\/([^\/]*\.)?videosharez\.com https?:\/\/([^\/]*\.)?vidgals-com-e13sc4yv0\.blogspot\.com https?:\/\/([^\/]*\.)?vidgals-com-e6ig7a\.blogspot\.com https?:\/\/([^\/]*\.)?vidgals-com-edvo\.blogspot\.com https?:\/\/([^\/]*\.)?vidronla\.blogcu\.com https?:\/\/([^\/]*\.)?vielsit\.su\.pl https?:\/\/([^\/]*\.)?vietnamparadisetravel\.com https?:\/\/([^\/]*\.)?viewerswives-net-c4\.blogspot\.com https?:\/\/([^\/]*\.)?viewerswives-net-oc\.blogspot\.com https?:\/\/([^\/]*\.)?viewgals-com-ah\.blogspot\.com https?:\/\/([^\/]*\.)?viewgals-com-il253r\.blogspot\.com https?:\/\/([^\/]*\.)?vigduk30\.xshorturl\.com https?:\/\/([^\/]*\.)?vigetleto\.heavenforum\.com https?:\/\/([^\/]*\.)?vihl6\.szm\.sk https?:\/\/([^\/]*\.)?viliolo\.winnerforum\.net https?:\/\/([^\/]*\.)?village\.asp2\.cz https?:\/\/([^\/]*\.)?villaggio-ischia\.ll11\.info https?:\/\/([^\/]*\.)?vinnie-1-hit\.blogspot\.com https?:\/\/([^\/]*\.)?vintage\.sexcluborgy\.net https?:\/\/([^\/]*\.)?vioxx\.1\.p2l\.info https?:\/\/([^\/]*\.)?vioxx\.3d-game\.com https?:\/\/([^\/]*\.)?vipasrel\.cultureforum\.net https?:\/\/([^\/]*\.)?vipcrew-com-bj\.blogspot\.com https?:\/\/([^\/]*\.)?vipcrew-com-r0w\.blogspot\.com https?:\/\/([^\/]*\.)?vipcrew-com-rs74r7iy5\.blogspot\.com https?:\/\/([^\/]*\.)?viphls\.com https?:\/\/([^\/]*\.)?vipliz\.com https?:\/\/([^\/]*\.)?vipmsite\.com https?:\/\/([^\/]*\.)?virgin-porn\.futureblog\.org https?:\/\/([^\/]*\.)?virgin-sexy\.com https?:\/\/([^\/]*\.)?virginfucked-com-h200n1lxcg\.blogspot\.com https?:\/\/([^\/]*\.)?virginiamortgage-x\.com https?:\/\/([^\/]*\.)?viricrel\.lolbb\.com https?:\/\/([^\/]*\.)?virinok\.dynamicforum\.net https?:\/\/([^\/]*\.)?virtualeinfiniti\.cn https?:\/\/([^\/]*\.)?vitalitymax\.1\.p2l\.info https?:\/\/([^\/]*\.)?vivino\.ephpbb\.com https?:\/\/([^\/]*\.)?vizelvar\.frbb\.net https?:\/\/([^\/]*\.)?vjkavu6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vjsgby0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vjuk7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vjwm2\.fr33webhost\.com https?:\/\/([^\/]*\.)?vkblq\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vksfucm\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vmdes\.com https?:\/\/([^\/]*\.)?vmpi4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vmvip\.com https?:\/\/([^\/]*\.)?vmvip\.net https?:\/\/([^\/]*\.)?vmvip\.org https?:\/\/([^\/]*\.)?vo-free-oral-movie-clip-toc\.blogspot\.com https?:\/\/([^\/]*\.)?voip-guide\.org https?:\/\/([^\/]*\.)?vol-soft17-com\.blogspot\.com https?:\/\/([^\/]*\.)?voli-amsterdam\.freespase\.info https?:\/\/([^\/]*\.)?voli-argentina\.zoom10x\.info https?:\/\/([^\/]*\.)?voli-londra\.freespase\.info https?:\/\/([^\/]*\.)?voli-spagna\.freespase\.info https?:\/\/([^\/]*\.)?volume5\.8888mb\.com https?:\/\/([^\/]*\.)?voxn2\.szm\.sk https?:\/\/([^\/]*\.)?voyeur-video-amateur-free\.protime\.in\.ua https?:\/\/([^\/]*\.)?voyeurzine-com-af2\.blogspot\.com https?:\/\/([^\/]*\.)?voyeurzine-com-dbhx1q\.blogspot\.com https?:\/\/([^\/]*\.)?voyiu\.szm\.sk https?:\/\/([^\/]*\.)?vpbu1\.szm\.sk https?:\/\/([^\/]*\.)?vrlw9\.szm\.sk https?:\/\/([^\/]*\.)?vrnjgk1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vstqfs3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vtop\.fateback\.com https?:\/\/([^\/]*\.)?vtop\.kilu\.de https?:\/\/([^\/]*\.)?vtop\.topcities\.com https?:\/\/([^\/]*\.)?vtrxzzwj-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?vttolldd\.org https?:\/\/([^\/]*\.)?vttthtgg\.org https?:\/\/([^\/]*\.)?vtwm7\.szm\.sk https?:\/\/([^\/]*\.)?vu-alias\.blogspot\.com https?:\/\/([^\/]*\.)?vu-aliases\.blogspot\.com https?:\/\/([^\/]*\.)?vu-free-big-sex-movie-fen\.blogspot\.com https?:\/\/([^\/]*\.)?vud-vipcrew-com\.blogspot\.com https?:\/\/([^\/]*\.)?vue\.uit\.tufts\.edu https?:\/\/([^\/]*\.)?vulgarisprime\.50webs\.org https?:\/\/([^\/]*\.)?vuqi-alana\.blogspot\.com https?:\/\/([^\/]*\.)?vutwwd6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vuzeq-sex-video-d\.blogspot\.com https?:\/\/([^\/]*\.)?vvaliumonline\.ovp\.pl https?:\/\/([^\/]*\.)?vvline\.info https?:\/\/([^\/]*\.)?vwjr2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vwzm6\.szm\.sk https?:\/\/([^\/]*\.)?vyqdvf1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?vyuf9\.szm\.sk https?:\/\/([^\/]*\.)?vzevz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?w-q-elmo-extreme-video-n\.blogspot\.com https?:\/\/([^\/]*\.)?w-s-free-gay-sex-video-l\.blogspot\.com https?:\/\/([^\/]*\.)?w2\.ftpcn\.cn https?:\/\/([^\/]*\.)?w528\.com https?:\/\/([^\/]*\.)?wacks\.info https?:\/\/([^\/]*\.)?wak1ngmel0dies\.blogspot\.com https?:\/\/([^\/]*\.)?walker-ross\.com https?:\/\/([^\/]*\.)?walkerproconsulting\.com https?:\/\/([^\/]*\.)?walt-disney-world-travel\.globaltr\.info https?:\/\/([^\/]*\.)?wanadoo-fr-eyn6u1yt0\.blogspot\.com https?:\/\/([^\/]*\.)?wanadoo-fr-gsz\.blogspot\.com https?:\/\/([^\/]*\.)?wanadoo-fr-i0iq\.blogspot\.com https?:\/\/([^\/]*\.)?wannawatch-com-k1rckf8\.blogspot\.com https?:\/\/([^\/]*\.)?wannawatch-com-krz7dxd5a\.blogspot\.com https?:\/\/([^\/]*\.)?wannawatch-com-oaeedr\.blogspot\.com https?:\/\/([^\/]*\.)?wapzhijia\.com https?:\/\/([^\/]*\.)?waserk\.com https?:\/\/([^\/]*\.)?washingtonmortgage-x\.com https?:\/\/([^\/]*\.)?watch-free-porn-clip-zone43l\.blogspot\.com https?:\/\/([^\/]*\.)?watch-free-porn-clip-zonekjl\.blogspot\.com https?:\/\/([^\/]*\.)?watch-free-porn-video-bu\.blogspot\.com https?:\/\/([^\/]*\.)?watchersweb-com-t61o4wrr4h\.blogspot\.com https?:\/\/([^\/]*\.)?watchersweb-com-tnwrlyoqk\.blogspot\.com https?:\/\/([^\/]*\.)?watchingthetube\.com https?:\/\/([^\/]*\.)?water\.toxhost\.com https?:\/\/([^\/]*\.)?waxen\.kwik\.to https?:\/\/([^\/]*\.)?wbun7\.szm\.sk https?:\/\/([^\/]*\.)?wc1\.worldcrossing\.com https?:\/\/([^\/]*\.)?we-alfred\.blogspot\.com https?:\/\/([^\/]*\.)?we-alondra\.blogspot\.com https?:\/\/([^\/]*\.)?we-lesbian-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?web\.missouri\.edu https?:\/\/([^\/]*\.)?web\.scc\.losrios\.edu https?:\/\/([^\/]*\.)?web\.skku\.edu https?:\/\/([^\/]*\.)?web55\.info https?:\/\/([^\/]*\.)?webhost11\.com https?:\/\/([^\/]*\.)?webhosting-x\.com https?:\/\/([^\/]*\.)?weblog\.xanga\.com https?:\/\/([^\/]*\.)?webmd-drugs\.com https?:\/\/([^\/]*\.)?websz\.com https?:\/\/([^\/]*\.)?wedding-knot\.com https?:\/\/([^\/]*\.)?weddingactions\.com https?:\/\/([^\/]*\.)?wedner\.info https?:\/\/([^\/]*\.)?weekly-pay\.com https?:\/\/([^\/]*\.)?weersa\.com https?:\/\/([^\/]*\.)?weight-loss\.1\.p2l\.info https?:\/\/([^\/]*\.)?weixing\.hk\.cn https?:\/\/([^\/]*\.)?welisi\.hk https?:\/\/([^\/]*\.)?welivetogether-com-ek6boac\.blogspot\.com https?:\/\/([^\/]*\.)?welivetogether-com-oc7yzd4ev\.blogspot\.com https?:\/\/([^\/]*\.)?welivetogether-com-wcu8\.blogspot\.com https?:\/\/([^\/]*\.)?wellbutrin\.1\.p2l\.info https?:\/\/([^\/]*\.)?wellbutrin\.php5\.cz https?:\/\/([^\/]*\.)?wenmasterworld\.com https?:\/\/([^\/]*\.)?werdq\.com https?:\/\/([^\/]*\.)?wess\.250free\.com https?:\/\/([^\/]*\.)?westvirginiamortgage-x\.com https?:\/\/([^\/]*\.)?wet-mature-slut\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?wet-pussy-cum-shot\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?wet-teen-panties-wen\.blogspot\.com https?:\/\/([^\/]*\.)?wetplace-com-g16jfp6\.blogspot\.com https?:\/\/([^\/]*\.)?wfkd3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wgxq2\.szm\.sk https?:\/\/([^\/]*\.)?whipped-ass-slut\.gameover\.in\.ua https?:\/\/([^\/]*\.)?whipsnorkel\.275mb\.com https?:\/\/([^\/]*\.)?white-guys-fucking-black-teen\.medved\.od\.ua https?:\/\/([^\/]*\.)?whitehole\.republika\.pl https?:\/\/([^\/]*\.)?wholesale-scooter\.hotmail\.ru https?:\/\/([^\/]*\.)?whorevideos-com-hj8shgp\.blogspot\.com https?:\/\/([^\/]*\.)?whorevideos-com-wddx\.blogspot\.com https?:\/\/([^\/]*\.)?whorevideos-txe5g0x\.blogspot\.com https?:\/\/([^\/]*\.)?whpsjw1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?whss0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wierdporno-com-kur70yvrl0\.blogspot\.com https?:\/\/([^\/]*\.)?wifi-planet\.org https?:\/\/([^\/]*\.)?wiku-aikman\.blogspot\.com https?:\/\/([^\/]*\.)?wild-party-fuck\.gameover\.in\.ua https?:\/\/([^\/]*\.)?wild-poker\.com https?:\/\/([^\/]*\.)?willeyfordmazda\.info https?:\/\/([^\/]*\.)?win-for-italy\.info https?:\/\/([^\/]*\.)?wind\.8888mb\.com https?:\/\/([^\/]*\.)?winter-gossamer\.blogspot\.com https?:\/\/([^\/]*\.)?winter\.12gbfree\.com https?:\/\/([^\/]*\.)?wired-shemales\.lampa\.ipupdater\.com https?:\/\/([^\/]*\.)?wiremesh-guanda\.com https?:\/\/([^\/]*\.)?wisconsinmortgage-x\.com https?:\/\/([^\/]*\.)?wisdom123\.com https?:\/\/([^\/]*\.)?wisewomanguide\.com https?:\/\/([^\/]*\.)?wisnp\.szm\.sk https?:\/\/([^\/]*\.)?wix-timsmovies-com\.blogspot\.com https?:\/\/([^\/]*\.)?wizingsh\.dl\.pl https?:\/\/([^\/]*\.)?wjch5\.szm\.sk https?:\/\/([^\/]*\.)?wjhh9\.szm\.sk https?:\/\/([^\/]*\.)?wjjk0\.szm\.sk https?:\/\/([^\/]*\.)?wjsueg-free-video\.blogspot\.com https?:\/\/([^\/]*\.)?wkelleylucas\.com https?:\/\/([^\/]*\.)?wkfsi774k\.org https?:\/\/([^\/]*\.)?wljp9\.szm\.sk https?:\/\/([^\/]*\.)?wm-u\.com https?:\/\/([^\/]*\.)?wmis\.com\.cn https?:\/\/([^\/]*\.)?wmlpv\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wmtnd\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wnwr5\.szm\.sk https?:\/\/([^\/]*\.)?woilco6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wolflist-com-rkj7d3\.blogspot\.com https?:\/\/([^\/]*\.)?wolverine-steel-toe-work-boot\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?woman-masturbating-man\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?woman-who-can-lick-their-own-pussy\.gameover\.in\.ua https?:\/\/([^\/]*\.)?woman-who-fuck-donkey\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?woman-with-prosthetic-leg\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?womansmith\.com https?:\/\/([^\/]*\.)?women-fitness\.org https?:\/\/([^\/]*\.)?womens-hard-nipples\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?womens-snake-boot\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?woolygrrl\.blogspot\.com https?:\/\/([^\/]*\.)?worldsex-com-byzv1xjl\.blogspot\.com https?:\/\/([^\/]*\.)?worldsex-com-eqn4b\.blogspot\.com https?:\/\/([^\/]*\.)?worldtalktv\.net\.ru https?:\/\/([^\/]*\.)?worldufo\.net\.ru https?:\/\/([^\/]*\.)?worldwide-games\.net https?:\/\/([^\/]*\.)?worldwide-online-pharmacy\.net https?:\/\/([^\/]*\.)?worldwide-tramadol\.net https?:\/\/([^\/]*\.)?woro-adriana\.blogspot\.com https?:\/\/([^\/]*\.)?wot-smutgremlins-com\.blogspot\.com https?:\/\/([^\/]*\.)?wow-gold\.dinmo\.cn https?:\/\/([^\/]*\.)?wow-powerleveling-wow\.com https?:\/\/([^\/]*\.)?wowgold\.org\.cn https?:\/\/([^\/]*\.)?wowtgp-com-ap4y\.blogspot\.com https?:\/\/([^\/]*\.)?wowvids-com-ooiofshz5\.blogspot\.com https?:\/\/([^\/]*\.)?woww0\.szm\.sk https?:\/\/([^\/]*\.)?wpgt1\.szm\.sk https?:\/\/([^\/]*\.)?wpnvjk9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wqhnog2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wqr\.cn https?:\/\/([^\/]*\.)?wrnf9\.szm\.sk https?:\/\/([^\/]*\.)?wshcroq\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wsuonline\.weber\.edu https?:\/\/([^\/]*\.)?wszqc\.szm\.sk https?:\/\/([^\/]*\.)?wtrpfpa\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wuconweb\.wustl\.edu https?:\/\/([^\/]*\.)?wujin\.dzsc\.com https?:\/\/([^\/]*\.)?wulzi\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wvuf0\.szm\.sk https?:\/\/([^\/]*\.)?wvwd6\.szm\.sk https?:\/\/([^\/]*\.)?wwfedgechristian\.com https?:\/\/([^\/]*\.)?wwlive\.info https?:\/\/([^\/]*\.)?wwtop\.info https?:\/\/([^\/]*\.)?www-girlygangbang-com\.magnesia\.dtdns\.net https?:\/\/([^\/]*\.)?www-loadmymouth-com\.klose\.ipupdater\.com https?:\/\/([^\/]*\.)?www-shemales-from-hell-com\.magnesia\.dtdns\.net https?:\/\/([^\/]*\.)?www\.aet\.cup\.edu https?:\/\/([^\/]*\.)?www\.ags\.uci\.edu https?:\/\/([^\/]*\.)?www\.chaco\.gov\.ar https?:\/\/([^\/]*\.)?www\.coe\.ohio-state\.edu https?:\/\/([^\/]*\.)?www\.csulb\.edu https?:\/\/([^\/]*\.)?www\.cucsur\.udg\.mx https?:\/\/([^\/]*\.)?www\.depts\.ttu\.edu https?:\/\/([^\/]*\.)?www\.elie\.com\.cn https?:\/\/([^\/]*\.)?www\.forourbano\.gov\.ar https?:\/\/([^\/]*\.)?www\.grad\.english\.ttu\.edu https?:\/\/([^\/]*\.)?www\.hcs\.harvard\.edu https?:\/\/([^\/]*\.)?www\.health-livening\.com https?:\/\/([^\/]*\.)?www\.imperial\.edu https?:\/\/([^\/]*\.)?www\.isis\.vanderbilt\.edu https?:\/\/([^\/]*\.)?www\.leal-alfa\.upc\.edu https?:\/\/([^\/]*\.)?www\.ns\.ui\.edu https?:\/\/([^\/]*\.)?www\.oswego\.edu https?:\/\/([^\/]*\.)?www\.oznet\.ksu\.edu https?:\/\/([^\/]*\.)?www\.polisci\.berkeley\.edu https?:\/\/([^\/]*\.)?www\.redwingnet\.com https?:\/\/([^\/]*\.)?www\.rit\.edu https?:\/\/([^\/]*\.)?www\.rso\.cmich\.edu https?:\/\/([^\/]*\.)?www\.sccs\.swarthmore\.edu https?:\/\/([^\/]*\.)?www\.sportsbackers\.org https?:\/\/([^\/]*\.)?www\.tamug\.edu https?:\/\/([^\/]*\.)?www\.ug\.it\.usyd\.edu\.au https?:\/\/([^\/]*\.)?www\.uky\.edu https?:\/\/([^\/]*\.)?www\.wvup\.edu https?:\/\/([^\/]*\.)?www1\.freehostingguru\.com https?:\/\/([^\/]*\.)?www2\.cs\.washington\.edu https?:\/\/([^\/]*\.)?www3\.ddns\.ms https?:\/\/([^\/]*\.)?www4\.epac\.to https?:\/\/([^\/]*\.)?www4\.nau\.edu https?:\/\/([^\/]*\.)?www4\.vjc\.edu https?:\/\/([^\/]*\.)?www6\.ezua\.com https?:\/\/([^\/]*\.)?www6\.ns1\.name https?:\/\/([^\/]*\.)?www69\.bestdeals\.at https?:\/\/([^\/]*\.)?www69\.byinter\.net https?:\/\/([^\/]*\.)?www69\.dynu\.com https?:\/\/([^\/]*\.)?www69\.findhere\.org https?:\/\/([^\/]*\.)?www69\.fw\.nu https?:\/\/([^\/]*\.)?www69\.ugly\.as https?:\/\/([^\/]*\.)?www7\.25u\.com https?:\/\/([^\/]*\.)?www7\.ygto\.com https?:\/\/([^\/]*\.)?www8\.ns01\.us https?:\/\/([^\/]*\.)?www9\.servequake\.com https?:\/\/([^\/]*\.)?www9\.trickip\.org https?:\/\/([^\/]*\.)?www99\.bounceme\.net https?:\/\/([^\/]*\.)?www99\.zapto\.org https?:\/\/([^\/]*\.)?wwweazol\.znamka\.yi\.org https?:\/\/([^\/]*\.)?wwwmenozac\.gumaky\.yi\.org https?:\/\/([^\/]*\.)?wwwpeterscumshotscom\.jalovica\.dtdns\.net https?:\/\/([^\/]*\.)?wwwpornweekcom\.lampa\.ipupdater\.com https?:\/\/([^\/]*\.)?wwwtheluckymancom\.hrable\.dtdns\.net https?:\/\/([^\/]*\.)?wxcl6\.szm\.sk https?:\/\/([^\/]*\.)?wxmbv\.fr33webhost\.com https?:\/\/([^\/]*\.)?wxsbjx\.com https?:\/\/([^\/]*\.)?wxzgyb\.com https?:\/\/([^\/]*\.)?wy-ls\.com https?:\/\/([^\/]*\.)?wyeax\.szm\.sk https?:\/\/([^\/]*\.)?wyloguj\.php5\.cz https?:\/\/([^\/]*\.)?wyomingmortgage-x\.com https?:\/\/([^\/]*\.)?wywurxj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wzcub\.szm\.sk https?:\/\/([^\/]*\.)?wzhj\.com\.cn https?:\/\/([^\/]*\.)?wzhjom6\.myfreewebhost\.org https?:\/\/([^\/]*\.)?wzlsx\.com https?:\/\/([^\/]*\.)?x-cialis\.be https?:\/\/([^\/]*\.)?x-ho-com-m23lsy\.blogspot\.com https?:\/\/([^\/]*\.)?x-ho-com-mlk2tai422\.blogspot\.com https?:\/\/([^\/]*\.)?x-orgy-com-in7nn0o1\.blogspot\.com https?:\/\/([^\/]*\.)?x24\.xxuz\.com https?:\/\/([^\/]*\.)?x25\.2mydns\.com https?:\/\/([^\/]*\.)?x25\.plorp\.com https?:\/\/([^\/]*\.)?x4\.lov3\.net https?:\/\/([^\/]*\.)?x6x\.a\.la https?:\/\/([^\/]*\.)?x888x\.myserver\.org https?:\/\/([^\/]*\.)?x8x\.trickip\.net https?:\/\/([^\/]*\.)?xadultpersonals\.com https?:\/\/([^\/]*\.)?xafengyuan\.com https?:\/\/([^\/]*\.)?xaltc\.szm\.sk https?:\/\/([^\/]*\.)?xanax-911\.coz\.in https?:\/\/([^\/]*\.)?xanax-acpq\.blogspot\.com https?:\/\/([^\/]*\.)?xanax-ccc\.blogspot\.com https?:\/\/([^\/]*\.)?xanax-lyiy\.blogspot\.com https?:\/\/([^\/]*\.)?xanax-online\.cheapills\.info https?:\/\/([^\/]*\.)?xanax\.esguay\.com https?:\/\/([^\/]*\.)?xanax\.goodpharm\.info https?:\/\/([^\/]*\.)?xanax\.skocz\.net https?:\/\/([^\/]*\.)?xanax\.su\.pl https?:\/\/([^\/]*\.)?xanaxnx\.u\.yuku\.com https?:\/\/([^\/]*\.)?xawcj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?xboct13\.blogspot\.com https?:\/\/([^\/]*\.)?xbyzkngo-teensite\.blogspot\.com https?:\/\/([^\/]*\.)?xcp\.51mp4mp3\.com https?:\/\/([^\/]*\.)?xd-fw\.com https?:\/\/([^\/]*\.)?xdwxs\.myfreewebhost\.org https?:\/\/([^\/]*\.)?xdzs\.com\.cn https?:\/\/([^\/]*\.)?xef-publicinvasion-com\.blogspot\.com https?:\/\/([^\/]*\.)?xejedot-sophie-marceau-c\.blogspot\.com https?:\/\/([^\/]*\.)?xelby0\.blogspot\.com https?:\/\/([^\/]*\.)?xenical\.1\.p2l\.info https?:\/\/([^\/]*\.)?xenical\.1k\.pl https?:\/\/([^\/]*\.)?xenicallem\.queroumforum\.com https?:\/\/([^\/]*\.)?xfdr7\.szm\.sk https?:\/\/([^\/]*\.)?xfokcw0\.myfreewebhost\.org https?:\/\/([^\/]*\.)?xgdlfj\.com https?:\/\/([^\/]*\.)?xhttp\.net https?:\/\/([^\/]*\.)?xian-hua\.nease\.net https?:\/\/([^\/]*\.)?xiangyujipiao\.com https?:\/\/([^\/]*\.)?xibch\.myfreewebhost\.org https?:\/\/([^\/]*\.)?xih-snakesworld-com\.blogspot\.com https?:\/\/([^\/]*\.)?xih-topless-babes-com\.blogspot\.com https?:\/\/([^\/]*\.)?xihdl\.myfreewebhost\.org https?:\/\/([^\/]*\.)?xionny\.cn https?:\/\/([^\/]*\.)?xitokiry\.blogspot\.com https?:\/\/([^\/]*\.)?xiwhr\.szm\.sk https?:\/\/([^\/]*\.)?xjenhx\.blogspot\.com https?:\/\/([^\/]*\.)?xlala\.com https?:\/\/([^\/]*\.)?xlale\.com https?:\/\/([^\/]*\.)?xlalu\.com https?:\/\/([^\/]*\.)?xlvc3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?xlxx-com-i0xeru\.blogspot\.com https?:\/\/([^\/]*\.)?xlxx-fokiq\.blogspot\.com https?:\/\/([^\/]*\.)?xlxx-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?xmail\.net https?:\/\/([^\/]*\.)?xmodem-mal\.blogspot\.com https?:\/\/([^\/]*\.)?xnbs1\.szm\.sk https?:\/\/([^\/]*\.)?xnews\.soad\.umich\.edu https?:\/\/([^\/]*\.)?xnxx-com-e06t\.blogspot\.com https?:\/\/([^\/]*\.)?xnxx-crcdfs0jy6\.blogspot\.com https?:\/\/([^\/]*\.)?xnxxmovies-com-bv10g2\.blogspot\.com https?:\/\/([^\/]*\.)?xnxxmovies-com-wv\.blogspot\.com https?:\/\/([^\/]*\.)?xo-whatever\.blogspot\.com https?:\/\/([^\/]*\.)?xolz4\.szm\.sk https?:\/\/([^\/]*\.)?xometi\.com https?:\/\/([^\/]*\.)?xonlinedating\.com https?:\/\/([^\/]*\.)?xoomer\.alice\.it https?:\/\/([^\/]*\.)?xparamacy\.org https?:\/\/([^\/]*\.)?xpharmacy\.org https?:\/\/([^\/]*\.)?xqnqh\.szm\.sk https?:\/\/([^\/]*\.)?xr\.bz https?:\/\/([^\/]*\.)?xsecrets-com-kyms\.blogspot\.com https?:\/\/([^\/]*\.)?xsgr7\.szm\.sk https?:\/\/([^\/]*\.)?xshorturl\.info https?:\/\/([^\/]*\.)?xsyvh\.szm\.sk https?:\/\/([^\/]*\.)?xt168\.com https?:\/\/([^\/]*\.)?xudo-akira\.blogspot\.com https?:\/\/([^\/]*\.)?xujwy\.szm\.sk https?:\/\/([^\/]*\.)?xun-screwedupmovies-com\.blogspot\.com https?:\/\/([^\/]*\.)?xvbbols\.myfreewebhost\.org https?:\/\/([^\/]*\.)?xvec\.com https?:\/\/([^\/]*\.)?xvnj5\.szm\.sk https?:\/\/([^\/]*\.)?xwsdr\.szm\.sk https?:\/\/([^\/]*\.)?xxellaxx\.250free\.com https?:\/\/([^\/]*\.)?xxhk2\.szm\.sk https?:\/\/([^\/]*\.)?xxlmovies-com-gswie\.blogspot\.com https?:\/\/([^\/]*\.)?xxlmovies-com-m7rg0g8viu\.blogspot\.com https?:\/\/([^\/]*\.)?xxlmovies-mcorb4\.blogspot\.com https?:\/\/([^\/]*\.)?xxufdm-free-video\.blogspot\.com https?:\/\/([^\/]*\.)?xxx-mature-movie-gallery\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?xxx-pic-blonde\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?xxx-porn-clip-blogn0y\.blogspot\.com https?:\/\/([^\/]*\.)?xxx0movie\.info https?:\/\/([^\/]*\.)?xxx1adult1video\.blogspot\.com https?:\/\/([^\/]*\.)?xxx1clip\.blogspot\.com https?:\/\/([^\/]*\.)?xxx1movie\.blogspot\.com https?:\/\/([^\/]*\.)?xxx1video\.blogspot\.com https?:\/\/([^\/]*\.)?xxxdessert-com-rl7e3\.blogspot\.com https?:\/\/([^\/]*\.)?xxxfolder-com-h3126\.blogspot\.com https?:\/\/([^\/]*\.)?xxxkey-com-ma\.blogspot\.com https?:\/\/([^\/]*\.)?xxxlost\.info https?:\/\/([^\/]*\.)?xxxphenterm1nen0w\.tripod\.com https?:\/\/([^\/]*\.)?xxxpornstarclassics-com-cezx51lw8\.blogspot\.com https?:\/\/([^\/]*\.)?xxxpornstarclassics-com-d2ttwy\.blogspot\.com https?:\/\/([^\/]*\.)?xxxpower-net-aped3c1xa\.blogspot\.com https?:\/\/([^\/]*\.)?xxxproposal-com-b06etpw\.blogspot\.com https?:\/\/([^\/]*\.)?xxxvogue-hux\.blogspot\.com https?:\/\/([^\/]*\.)?xxxvogue-net-oe2t1p081c\.blogspot\.com https?:\/\/([^\/]*\.)?xxxvogue-net-qerij\.blogspot\.com https?:\/\/([^\/]*\.)?xyz-i2\.blogspot\.com https?:\/\/([^\/]*\.)?xyzzy-k7c37b5tuw\.blogspot\.com https?:\/\/([^\/]*\.)?xzc\.org\.ua https?:\/\/([^\/]*\.)?xzgang-bangorgy\.hav\.pl https?:\/\/([^\/]*\.)?xznylonlycra\.hav\.pl https?:\/\/([^\/]*\.)?xzrapeextreme\.hav\.pl https?:\/\/([^\/]*\.)?xzzoodogsex\.hav\.pl https?:\/\/([^\/]*\.)?y--e--s\.com https?:\/\/([^\/]*\.)?ya\.ru https?:\/\/([^\/]*\.)?yaahoeu\.com https?:\/\/([^\/]*\.)?yaco-hbkklx6ltp\.blogspot\.com https?:\/\/([^\/]*\.)?yahia-g3x\.blogspot\.com https?:\/\/([^\/]*\.)?yaho-rei6\.blogspot\.com https?:\/\/([^\/]*\.)?yahoochat-w11g7\.blogspot\.com https?:\/\/([^\/]*\.)?yale-eui5rgcu\.blogspot\.com https?:\/\/([^\/]*\.)?yamaha-scooter\.hotmail\.ru https?:\/\/([^\/]*\.)?yamaha-t46nzou\.blogspot\.com https?:\/\/([^\/]*\.)?yamaha2scooter\.chat\.ru https?:\/\/([^\/]*\.)?yamel-da\.blogspot\.com https?:\/\/([^\/]*\.)?yamil-c1n2ob52\.blogspot\.com https?:\/\/([^\/]*\.)?yamonee-bqcyojq\.blogspot\.com https?:\/\/([^\/]*\.)?yang-as\.blogspot\.com https?:\/\/([^\/]*\.)?yankees-o3\.blogspot\.com https?:\/\/([^\/]*\.)?yasashisa\.blogspot\.com https?:\/\/([^\/]*\.)?yashun-i63\.blogspot\.com https?:\/\/([^\/]*\.)?yasin-kfn0g\.blogspot\.com https?:\/\/([^\/]*\.)?yaskap\.com https?:\/\/([^\/]*\.)?yasmin-hovn5q\.blogspot\.com https?:\/\/([^\/]*\.)?yasmin\.1\.p2l\.info https?:\/\/([^\/]*\.)?yazar-rnzt\.blogspot\.com https?:\/\/([^\/]*\.)?yblwoh-free-video\.blogspot\.com https?:\/\/([^\/]*\.)?ycft3\.szm\.sk https?:\/\/([^\/]*\.)?ycixxgt\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ycsv1\.szm\.sk https?:\/\/([^\/]*\.)?ydyofrj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ydyp\.left-web\.com https?:\/\/([^\/]*\.)?ydyp\.zxvo\.com https?:\/\/([^\/]*\.)?yehuo\.cn https?:\/\/([^\/]*\.)?yell0w-n1njaman\.blogspot\.com https?:\/\/([^\/]*\.)?yellow-wc4pxnc\.blogspot\.com https?:\/\/([^\/]*\.)?yellowstone-e4b\.blogspot\.com https?:\/\/([^\/]*\.)?yes-t2cfk28\.blogspot\.com https?:\/\/([^\/]*\.)?yesenia-dip5700iq\.blogspot\.com https?:\/\/([^\/]*\.)?yessenia-c0ue443\.blogspot\.com https?:\/\/([^\/]*\.)?yetbarek-b31fe\.blogspot\.com https?:\/\/([^\/]*\.)?yfojo\.szm\.sk https?:\/\/([^\/]*\.)?yfxy2\.szm\.sk https?:\/\/([^\/]*\.)?yhmh\.vip\.myrice\.com https?:\/\/([^\/]*\.)?yi-gan\.com https?:\/\/([^\/]*\.)?yicloqd\.myfreewebhost\.org https?:\/\/([^\/]*\.)?yiqiyibiao\.dzsc\.com https?:\/\/([^\/]*\.)?yisroel-a5dk2rzyvx\.blogspot\.com https?:\/\/([^\/]*\.)?yjyvm\.szm\.sk https?:\/\/([^\/]*\.)?ymaby\.info https?:\/\/([^\/]*\.)?yncharm\.com https?:\/\/([^\/]*\.)?ynij1\.szm\.sk https?:\/\/([^\/]*\.)?ynkbb\.szm\.sk https?:\/\/([^\/]*\.)?ynndy\.szm\.sk https?:\/\/([^\/]*\.)?ynztp\.myfreewebhost\.org https?:\/\/([^\/]*\.)?yoda-oz08ueg\.blogspot\.com https?:\/\/([^\/]*\.)?yoel-mu5ej\.blogspot\.com https?:\/\/([^\/]*\.)?yogee\.info https?:\/\/([^\/]*\.)?yojany-iu3bpg2\.blogspot\.com https?:\/\/([^\/]*\.)?yolanda-k1\.blogspot\.com https?:\/\/([^\/]*\.)?yomama-hmsa\.blogspot\.com https?:\/\/([^\/]*\.)?yongxun\.net https?:\/\/([^\/]*\.)?yosemite-gf77c0ggp\.blogspot\.com https?:\/\/([^\/]*\.)?yoshi-in-black\.blogspot\.com https?:\/\/([^\/]*\.)?yosuke-r8aua1\.blogspot\.com https?:\/\/([^\/]*\.)?young-anal-fuck\.travel-ag\.od\.ua https?:\/\/([^\/]*\.)?young-anal-sex\.travel-ag\.uzhgorod\.ua https?:\/\/([^\/]*\.)?young-blonde-slut\.medved\.uzhgorod\.ua https?:\/\/([^\/]*\.)?young-britney\.babubi\.net https?:\/\/([^\/]*\.)?young-cheerleader-pic\.medved\.od\.ua https?:\/\/([^\/]*\.)?young-chubby-pussy\.protime\.in\.ua https?:\/\/([^\/]*\.)?young-ffm\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?young-lesbian-having-sex\.protime\.in\.ua https?:\/\/([^\/]*\.)?young-sex\.futureblog\.org https?:\/\/([^\/]*\.)?young-teen-girl-anal\.aroundworld\.in\.ua https?:\/\/([^\/]*\.)?young-tender\.info https?:\/\/([^\/]*\.)?young-wqn\.blogspot\.com https?:\/\/([^\/]*\.)?youngerbabes-com-d1fem\.blogspot\.com https?:\/\/([^\/]*\.)?youngerbabes-com-dpdc\.blogspot\.com https?:\/\/([^\/]*\.)?youngerbabes-freesite\.blogspot\.com https?:\/\/([^\/]*\.)?youngleafs-eh2a6kcze\.blogspot\.com https?:\/\/([^\/]*\.)?youngpervs-com-wdh\.blogspot\.com https?:\/\/([^\/]*\.)?youngshemalesex\.com https?:\/\/([^\/]*\.)?your-online-health\.com https?:\/\/([^\/]*\.)?your-starry-sky\.blogspot\.com https?:\/\/([^\/]*\.)?yourbudgetcar\.info https?:\/\/([^\/]*\.)?yourbusinesshouston\.info https?:\/\/([^\/]*\.)?yourchryslersebring\.info https?:\/\/([^\/]*\.)?yourgunter\.com https?:\/\/([^\/]*\.)?yourhealthypharmacy\.com https?:\/\/([^\/]*\.)?yourlust-com-rttu8a0a\.blogspot\.com https?:\/\/([^\/]*\.)?yourmazdacar\.info https?:\/\/([^\/]*\.)?yourmerchandise\.org https?:\/\/([^\/]*\.)?yourofe\.com https?:\/\/([^\/]*\.)?yrada\.flnet\.org https?:\/\/([^\/]*\.)?yrecnfz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?yrgs2\.szm\.sk https?:\/\/([^\/]*\.)?yronc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ysvc0\.szm\.sk https?:\/\/([^\/]*\.)?ytdebao\.com https?:\/\/([^\/]*\.)?ytgf84j\.nokedem\.com https?:\/\/([^\/]*\.)?ythsq\.com https?:\/\/([^\/]*\.)?ytifexil\.org https?:\/\/([^\/]*\.)?ytlmc\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ytwoqlj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?yucaibooks\.com https?:\/\/([^\/]*\.)?yuebing\.com https?:\/\/([^\/]*\.)?yume-taira\.blogspot\.com https?:\/\/([^\/]*\.)?yuniel-ebyd5\.blogspot\.com https?:\/\/([^\/]*\.)?yunmak\.com https?:\/\/([^\/]*\.)?yushantang\.com https?:\/\/([^\/]*\.)?yvette-tshq577\.blogspot\.com https?:\/\/([^\/]*\.)?yvonte-dyv02l\.blogspot\.com https?:\/\/([^\/]*\.)?yvpwh\.szm\.sk https?:\/\/([^\/]*\.)?ywnid\.szm\.sk https?:\/\/([^\/]*\.)?ywuyuan\.com https?:\/\/([^\/]*\.)?ywxjm\.com https?:\/\/([^\/]*\.)?yycp\.com https?:\/\/([^\/]*\.)?yylive\.info https?:\/\/([^\/]*\.)?yyys\.com\.cn https?:\/\/([^\/]*\.)?z411\.net https?:\/\/([^\/]*\.)?za\.spamim\.net https?:\/\/([^\/]*\.)?zabavna9sy4ka\.biografi\.org https?:\/\/([^\/]*\.)?zaccary-ciworog\.blogspot\.com https?:\/\/([^\/]*\.)?zachariah-bebg88d2x\.blogspot\.com https?:\/\/([^\/]*\.)?zacharias-a0kmh1em7\.blogspot\.com https?:\/\/([^\/]*\.)?zacharygen-okno4540\.blogspot\.com https?:\/\/([^\/]*\.)?zacherie-m82qs0617\.blogspot\.com https?:\/\/([^\/]*\.)?zack-ir368\.blogspot\.com https?:\/\/([^\/]*\.)?zackari-kkcdz8\.blogspot\.com https?:\/\/([^\/]*\.)?zackarylee-h4qu\.blogspot\.com https?:\/\/([^\/]*\.)?zackerize-ge\.blogspot\.com https?:\/\/([^\/]*\.)?zahtavia-riy3\.blogspot\.com https?:\/\/([^\/]*\.)?zaid-wi0g\.blogspot\.com https?:\/\/([^\/]*\.)?zaidimar-ej\.blogspot\.com https?:\/\/([^\/]*\.)?zainab-t46we0w3y\.blogspot\.com https?:\/\/([^\/]*\.)?zakaria-c5j57crpj7\.blogspot\.com https?:\/\/([^\/]*\.)?zanaflex\.1\.p2l\.info https?:\/\/([^\/]*\.)?zanuda-juja\.blogspot\.com https?:\/\/([^\/]*\.)?zap-ar2fzu\.blogspot\.com https?:\/\/([^\/]*\.)?zara-oze5dt\.blogspot\.com https?:\/\/([^\/]*\.)?zarat\.php5\.cz https?:\/\/([^\/]*\.)?zatowana-m5hsah3h\.blogspot\.com https?:\/\/([^\/]*\.)?zaxswq\.com https?:\/\/([^\/]*\.)?zayfa\.com https?:\/\/([^\/]*\.)?zazu-ikzc0402\.blogspot\.com https?:\/\/([^\/]*\.)?zbbi8\.fr33webhost\.com https?:\/\/([^\/]*\.)?zbifhoep\.t35\.com https?:\/\/([^\/]*\.)?zbjyzm1\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zbrown\.org https?:\/\/([^\/]*\.)?zbwk\.com https?:\/\/([^\/]*\.)?zcld\.net https?:\/\/([^\/]*\.)?zdei\.nokedem\.com https?:\/\/([^\/]*\.)?zdpid\.fr33webhost\.com https?:\/\/([^\/]*\.)?ze-sex-video-download\.blogspot\.com https?:\/\/([^\/]*\.)?zebbiejohnson\.blogspot\.com https?:\/\/([^\/]*\.)?zebra-ka8g\.blogspot\.com https?:\/\/([^\/]*\.)?zebutal\.1\.p2l\.info https?:\/\/([^\/]*\.)?zeds\.info https?:\/\/([^\/]*\.)?zeku-airhead\.blogspot\.com https?:\/\/([^\/]*\.)?zelalal\.darkbb\.com https?:\/\/([^\/]*\.)?zelalli\.blogcu\.com https?:\/\/([^\/]*\.)?zelbasleto\.heavenforum\.com https?:\/\/([^\/]*\.)?zeldomric\.dl\.pl https?:\/\/([^\/]*\.)?zelekah-h5u4yo\.blogspot\.com https?:\/\/([^\/]*\.)?zella\.grafbb\.com https?:\/\/([^\/]*\.)?zelladar\.bb-fr\.com https?:\/\/([^\/]*\.)?zellapask\.lolbb\.com https?:\/\/([^\/]*\.)?zelpasacel\.dl\.pl https?:\/\/([^\/]*\.)?zelrelacel\.su\.pl https?:\/\/([^\/]*\.)?zelrelli\.zj\.pl https?:\/\/([^\/]*\.)?zelrelzel\.blogcu\.com https?:\/\/([^\/]*\.)?zelrictr\.lolforum\.net https?:\/\/([^\/]*\.)?zelvaracel\.zikforum\.com https?:\/\/([^\/]*\.)?zelviacel\.frbb\.net https?:\/\/([^\/]*\.)?zelvicat\.fr-bb\.com https?:\/\/([^\/]*\.)?zemiacik\.yi\.org https?:\/\/([^\/]*\.)?zena-grmhf3shi\.blogspot\.com https?:\/\/([^\/]*\.)?zenaidalee-rm0p6t8md\.blogspot\.com https?:\/\/([^\/]*\.)?zenda-wszf1\.blogspot\.com https?:\/\/([^\/]*\.)?zennie-ey5i633f\.blogspot\.com https?:\/\/([^\/]*\.)?zenw7\.szm\.sk https?:\/\/([^\/]*\.)?zephyr-tk1\.blogspot\.com https?:\/\/([^\/]*\.)?zepporah-dypvn5g3\.blogspot\.com https?:\/\/([^\/]*\.)?zerks\.info https?:\/\/([^\/]*\.)?zfbfbs9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zfkmaei\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zghy2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zgzr\.com https?:\/\/([^\/]*\.)?zhenrong\.com\.cn https?:\/\/([^\/]*\.)?zhihehotel\.com https?:\/\/([^\/]*\.)?zhiju\.home4u\.china\.com https?:\/\/([^\/]*\.)?zhkaw\.com https?:\/\/([^\/]*\.)?zhkuj\.fr33webhost\.com https?:\/\/([^\/]*\.)?zhopaitalii\.info https?:\/\/([^\/]*\.)?zhuxg\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zhw35iida\.org https?:\/\/([^\/]*\.)?ziahya-cbqb\.blogspot\.com https?:\/\/([^\/]*\.)?zimg4\.szm\.sk https?:\/\/([^\/]*\.)?zimmerman-a4shi\.blogspot\.com https?:\/\/([^\/]*\.)?zippedurl\.com https?:\/\/([^\/]*\.)?zisai\.com\.cn https?:\/\/([^\/]*\.)?ziseq-sex-movie-x\.blogspot\.com https?:\/\/([^\/]*\.)?zithromaxbuycheap\.drive\.to https?:\/\/([^\/]*\.)?zithromaxbuygeneric\.cut\.by https?:\/\/([^\/]*\.)?zithromaxcheap\.drive\.to https?:\/\/([^\/]*\.)?zithromaxgenericbuy\.drive\.to https?:\/\/([^\/]*\.)?zithromaxgenericcheap\.dive\.to https?:\/\/([^\/]*\.)?zithromaxxonline\.ovp\.pl https?:\/\/([^\/]*\.)?zivuc-free-sex-movie-l\.blogspot\.com https?:\/\/([^\/]*\.)?zjeyu\.com https?:\/\/([^\/]*\.)?zjpgxo4\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zjudeyah-m2r38d\.blogspot\.com https?:\/\/([^\/]*\.)?zjww\.com https?:\/\/([^\/]*\.)?zlid3\.szm\.sk https?:\/\/([^\/]*\.)?zljekr8\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zlocztw\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zmga3\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zmodem-isjrjd\.blogspot\.com https?:\/\/([^\/]*\.)?zocor\.bad-food\.net https?:\/\/([^\/]*\.)?zocor\.barnkalas\.net https?:\/\/([^\/]*\.)?zocor\.blomberg\.nu https?:\/\/([^\/]*\.)?zocor\.bokmarke\.nu https?:\/\/([^\/]*\.)?zocor\.bredbandsfabriken\.nu https?:\/\/([^\/]*\.)?zocor\.center\.nu https?:\/\/([^\/]*\.)?zocor\.hellstrom\.nu https?:\/\/([^\/]*\.)?zocor\.hem\.nu https?:\/\/([^\/]*\.)?zocor\.infosajt\.net https?:\/\/([^\/]*\.)?zocor\.internetreklam\.nu https?:\/\/([^\/]*\.)?zocor\.jacobson\.nu https?:\/\/([^\/]*\.)?zoe-ktd\.blogspot\.com https?:\/\/([^\/]*\.)?zofarl\.com https?:\/\/([^\/]*\.)?zofia-hkn\.blogspot\.com https?:\/\/([^\/]*\.)?zoie-g2h02z5mta\.blogspot\.com https?:\/\/([^\/]*\.)?zoklaku\.forumculture\.net https?:\/\/([^\/]*\.)?zoklapec\.dynamicbb\.com https?:\/\/([^\/]*\.)?zoloft\.1\.p2l\.info https?:\/\/([^\/]*\.)?zoloft\.1k\.pl https?:\/\/([^\/]*\.)?zoloft\.skocz\.net https?:\/\/([^\/]*\.)?zombie-r7ye\.blogspot\.com https?:\/\/([^\/]*\.)?zovirax\.esdemasiado\.com https?:\/\/([^\/]*\.)?zovirax\.inicioya\.com https?:\/\/([^\/]*\.)?zovirax\.ole\.to https?:\/\/([^\/]*\.)?zovirax\.redireccion\.com https?:\/\/([^\/]*\.)?zoya-w1tebgqbtr\.blogspot\.com https?:\/\/([^\/]*\.)?zpbvsng\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zpco4\.szm\.sk https?:\/\/([^\/]*\.)?zpykbi9\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zqit6\.szm\.sk https?:\/\/([^\/]*\.)?zqxss\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zsbupdo\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zswok\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zsxqgv2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ztauk\.szm\.sk https?:\/\/([^\/]*\.)?ztkvz\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ztlztpj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?ztnqok7\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zuleima-epbxv\.blogspot\.com https?:\/\/([^\/]*\.)?zulema-tsaieb\.blogspot\.com https?:\/\/([^\/]*\.)?zulmarie-dk8\.blogspot\.com https?:\/\/([^\/]*\.)?zuri-ch0\.blogspot\.com https?:\/\/([^\/]*\.)?zurysarai-bykp\.blogspot\.com https?:\/\/([^\/]*\.)?zusette-ai2\.blogspot\.com https?:\/\/([^\/]*\.)?zvcqr\.szm\.sk https?:\/\/([^\/]*\.)?zvnaw\.szm\.sk https?:\/\/([^\/]*\.)?zvoh2\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zvzsxqw\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zxtpets\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zya9\.info https?:\/\/([^\/]*\.)?zyban\.1\.p2l\.info https?:\/\/([^\/]*\.)?zyban\.controlando\.com https?:\/\/([^\/]*\.)?zybans\.blogspot\.com https?:\/\/([^\/]*\.)?zyrtec\.1\.p2l\.info https?:\/\/([^\/]*\.)?zyrtec\.1k\.pl https?:\/\/([^\/]*\.)?zyrtec\.coz\.in https?:\/\/([^\/]*\.)?zywyn\.info https?:\/\/([^\/]*\.)?zzcwj\.myfreewebhost\.org https?:\/\/([^\/]*\.)?zzdx\.com splitbrain-dokuwiki-d6c824b/conf/words.aspell.dist000066400000000000000000000000671134327003500223530ustar00rootroot00000000000000personal_ws-1.1 en 4 utf-8 DokuWiki Wiki WikiWiki Gohr splitbrain-dokuwiki-d6c824b/data/000077500000000000000000000000001134327003500170325ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/.htaccess000066400000000000000000000000371134327003500206300ustar00rootroot00000000000000order allow,deny deny from all splitbrain-dokuwiki-d6c824b/data/_dummy000066400000000000000000000000171134327003500202450ustar00rootroot00000000000000data directory splitbrain-dokuwiki-d6c824b/data/attic/000077500000000000000000000000001134327003500201365ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/attic/_dummy000066400000000000000000000000001134327003500213410ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/cache/000077500000000000000000000000001134327003500200755ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/cache/_dummy000066400000000000000000000000001134327003500213000ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/index/000077500000000000000000000000001134327003500201415ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/index/_dummy000066400000000000000000000000001134327003500213440ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/locks/000077500000000000000000000000001134327003500201455ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/locks/_dummy000066400000000000000000000000001134327003500213500ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/media/000077500000000000000000000000001134327003500201115ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/media/wiki/000077500000000000000000000000001134327003500210545ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/media/wiki/dokuwiki-128.png000066400000000000000000001015171134327003500237250ustar00rootroot00000000000000‰PNG  IHDR€€Ã>aËgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<‚áIDATxÚb”Óg@ÿÿ31pr~`ààxf²(ð8˜ëÿÿÿ@Ì¥yÿèÿùAüÿþK±>»;;ó, XfœüGÊb»_¿ÿ]`d`xÄÄÌø„‰‘ñ ##ÃK øGb@,£qD2`ƒF(02@ÊÅ`ö?p¤þF°,/÷ïß?9&&FAvvVVv6v666V.NvN æfàæâfàååbàçça8áÃí»¥XYXðE>ó?†ÆßÿÿWs231h« ÿñ‡áÍ» Ÿ¿ýúþãç¿OÌLŒ§€vžeceº ¤WõüÁå€M ŒH¹™ ššK9ö(r%‘«“òåØXYX‘ÊÂÁÁ¤Ù™xx8€‘ÉÉÀÍ ŠT.^›‹ Èàedb1`„ó1#†ÑÌÌ,@𙋇¡¥¥Ÿáò•;¼¬¼,¸"Ÿç7ÃDnF†$c ž[ÌŒ •™Æ Rb< ¯Þ~c¸~ççÝGŸ8ß~øá L¾×î¼cøñó¯933c>.Ïà®\n†a0ì$ꃒ´-ÍXˆM{pçR1gf`„* ¿]ĉ bE>ä!þ’m€„¡¢vŽ¢ŒòüNvÂR†,`ãFL…¥x:[šÁÐ4K¬rs†8£ -‚Mec­-¨[Öä}°5MKI˜Ú¨ €k0+¥)„Qb"~àN— œC뺪9]àÛ妌2èÛþéì4íöeNÖܱ_år‚é´ò–¶ëg)† óåú¤c;(møN¿ õ@C) åRxÑË‹¡ ¾-ŒPyPNeaaââ`g½l,ììlÌ\\ÐH„äTnh.ådàçƒäR11!p.åçãF&8Ba¹œcY | }ÀˆƒF*ÿ‡Å(#ıþüâ_ ÿ`+p`LF¸Ø  ÷ÍVúó‡ (ö•™ù'L‰êÿ ‹Ä™-²‘oÎÆÌ°ÿÛo°@‚Ðß¿ÿ~í„Ë,aþ3ø»*1<}ù…aÁÚÝ\œ¬·Â;Ñ]@™˜A ÄÜІ4w‹ßÿ`9TË@êÒÿ² ŒÿÅñ ŠLp]Ê Ì¥ÜàHä» \·‚ÙÜÀœÉË )! Ì­Â â¢b ¬l¬\ ŽXH¤2ƒs*0—21#˜¨¹”^ÿú ¬JøÿÿŸ¨ ãó-#fDã‰xFXƨMt“Äß¿,ÖÀÜÅÈø$i ŒüÕŠ¬LŠÙ¼ì Ê@÷~ºå?ÖÊ h¤Ñþh&(¦Fè0<}ñ…cϱ§ó¹8YÜ€RWµµR ¹qć”SEÜP5ä™™˜x88€ $P¤²²±ps³ƒ‹Xä\ ŠT.NN`îåfƒ½¢¢" ‚üüH¹”‘KÁ‘ËÎÿþ…½ÿ¡%*,ŽþÅAøÇÿ_à\ƒYŒÐ’˜™FLF”%>âÑIPNæææùéçOO&¦?»€Ñìôó?ã*=6fá,>6a`Íð˜R8€æüLj{F†À¢ÿûÁ _c`Q``×càà`(M3bxóþ‡äÅï–rr0ƒÁK˜>€Â™ Ý?t£#`.qøõ뤅ԧ@’ /(§[½ìlL¢–œKAÅ-¨ÁªS9‘*n "U„ALD¬† © \É ŒDP³@"˜ XÇþƒÖ¥á¹ô?<—‚Üùû÷? þÍ¥h‹€ÿ¨‡ùŒH^fD')âÿ£E>fÄØÀrœðA ˜óµ™~†#;3w0ò¹€ú@U8°2€‰ j ßÛï>¯» LÙÀâäà#6ua†ÿÚ B  UY& ¥Gõž¼ø:Xuüi ì%É?†Ÿ?y¡ão±&`à»ñòr¶kkh3€r-¸5”€žE¨¨(°Õ Ê¥ÀT¨KÁ9©,àH7‚þþ‡æÒðV/Œüó„õÝÿߨ›ðH‹¥¯Œñ˜%&Ž\¡Ø"þ?¹žkq©œ˜A%¨cdþiô±«' C<¸®ü‰h^€mþóû70­ƒ<°ÛÇðâF`X3… {Ý|Ëðaöy†ÿi† ÊÊB éÆ ÝÇ=ÝÆ‰À8É™@xª€ÿÀDÀÎ]œœï)íRN5rþ¼µ„;›³ÁE5("@Žgb†æRXéß?”/€+¿A $HË 4¨9K.ÂñŒø{xX"wq;âQêy,%1õ2ÌÝt†ÁPC”A˜eù~ß~ÏðïÝ`"º† âN i†ÿ@wr²33‚ {=e ’º Æáïß\ÀËl¼~üó×ß/_½eÖÕaFnÆ–ãÑL$D<ázžO#‘Ìz!ÆŽhD)òû°½ÌF Æéw`Lý6Â~+é¯?þ1ðq11È «L`d¾þ‰áõ§? ¿ýax÷ù8dxˆ3p±1‚ ;;;Ãׯߪ›û¶mØÎìÞÚp±0|ÿ÷Q™0²9$Dd¼Ý¸¤¤þ~ÿu¸‹ËÄÀÊPâËðøõ{†Ú‰Ç¦Ö;2ÈË 00¦{7~]ÃðïË/f1.H‰m}ùúèŽïˆ”À ¬Ï¥þýû#ûû7“Üüºœ\Ÿ™_¾únÙãÊŒX»V #•^œâÂg ª‘‹¼ÿhQ #¸+³é0‚ÿþG˜óØü~ Œ@pD#\AŒA”•áôݯ ÷¿ß öýç?-^†DpÝ}àê'†Ów¾1ðq£ðÀˆÿøõ/¨d`gøøáCQmÃÑÝòÄŒ¹òÛ_h¬C[ôÿm)>`—ñte`áåeøóý´$*:»½ÿ~Ífch‰ bHŸ¼¡~Ò † Õv ¼’< L©† ¿o¼aøuç»–0#ÐŽÿQ†¡ÿ ŽáaQÐ hô X´ñ_= mÍÂÊ*ÅÏÇÅ)*,È(.ÆÇpýö†×o>"µâÑ#žŒˆgÀSÏCs"¼5ØŽš£G<¨hfFðo §A (f&Ôåê“ o>þaøù”›ÿ3˜©q3ˆñ±€‹m6&†ƒÀˆ\}ì¸`v¯Ê%Àö°‹xÙl@‰Oßÿs5(€ºà å¬ÇÏ -ËÍðþ놓·>ƒGúÞùà"'ÀðìÉK†üÊV†KGO1I2hÍú†œ2Áuö_!] ipÝÿïçHã›ñ Ì¿?rR| ñÀD0e1CÇÌ3 -…–ÀŽP¶;°ø˜€ÿÿþ‹žŠl`jS¶Ü們¬ôçï?{ ±êÀ>)—ˆ0/³„˜ƒ¤h|\€AYQ†ÁÈ@•AZRÜ8ŒÏ¼ÍðñÓ'pQÅñ¸#Ÿ‰:~ÍÉ Ïý†¦T 3#4â€9ô/82ÁC¶@%¬@9VXD3€‹fHä31¼æÜC׿2¼ÿü—á°8–acˆ²„'´ŸÀ[qøÃó÷¿À.ûLÌ@óüM€Åû?pªúø Ô»ù.)ø˜ø¸Y~íWç`h“»câ–— ^ÿ›÷÷?¤[k®ÊËÀÁÉÌpæægpøjÿgexþì9CVi3Ãí“g Ä…Ô‘"„À”r›¸•ƒ˜… $qÿú m@3ÆFx"€”À’êû9i†æX†ÂÙ+fH\fÈ7&ì¿ Aþ½; €-«çi†‚ËQèÇ@ÔJT•©•@ª˜:¢.H¬üÄŸ@Ýø ì¬ì°uF°¡T ¦jÚî=·ˆ9ƒm=ûÎ÷î9–àOj{Á•€ë~Y†èup>ì£Òa®òi|mEê î¾pEH2­KˆVÿ‚¯&Éx;ÿ%Ÿ¢€%#ÁX»œšsã¥o¯mÕ4¥y…Ù ßY‰/ž´ÁLÒÙòWÇ‹ÄvBK@ âqèë\[ûð<³o¥ÑÉ /ø¾D멬çË%ÚWñ¼'+MBD™'!q¬«¨6­[7SZQ‘êý&¥õ“ëà©þ‰÷{ô¬”tý• ðʺ}òp·—)nŽZ8&Ùæ’B6„,9Þ°$Œ/FhOI†rs¹å\”'2⧯[ƒº#óz¾Àøl€ÛëKÜ=>!jÕ1uѨY4ê¾^À aÅ Ñåù€,«WiŒ¢§ØÄ&­´¶«RQ¡ÔMA‡ê"n.:ûn} é / >€‹ƒS'qé ‚Tt±¤±Ò˜æGSï½¶tKÂÍGøÎùιç&éûáýúju÷ôè:eO•ÀV‰•OšÂßù9¿ôéú± Š~ºü 5ßÚ2ÉKŒF:垥ÓêG0ì/7Ýñ†X™WP™Dç#ÂÉõ»4Qìì¹ õý<ÒäY·Ï.š}ˆe9žæ ›ˆÑî„h>z({Sج¦¥‹.elÑõMË!RûdX[Ò„ÄL¢h^ø±ÒÝ€¾!¯öˆŒf/”ç hNŸÉ—÷%Iëæ‰<že`Œ0êö¹F#ïWS)¸æ WgÈZ¯¨“‚©ÆÊoÚ5££¼SC®²L÷Á¿Fx8ö»ðq20Yž‡ƒí ËÆñù—˜›Ñ%"–K§5,RÐí díø°‚]‚(XÓ3cw5fÌ"AdC"qpq ‘¸¹ò޾ɸúgN.‘،DÈn²d³³dÚë~£$Nô¥_êU׫zï‹»ÞË+ÂÐgÖS,QJÿo¶ÌÖ‰Œ_’$h§×(IÞý"]ê?Ro¤óêáGg¹Ò€š‘ÚÛŠ°ºÐ ;m7—5‹Óô’À-?Bcø©Ôd¼n¢Œgçv6`sfÞ1r}x’¡Ow»ëœ•ù:Norž•D¾Û'…µ¥†%O¡4“Êc…25†¯ÝùÀƲD¿Þ‡¥3±ôxO£‡K®×Œ †àW ãh ÅóÎ0—÷°?¡)xµëšOfo´£µ½ 9;C’­æZx.Bÿ˜íð•2Td0@òN;*GkRâžjí>¦o¸$v©^MÊõÅ1¶ö-[f³Ò0EᓤNkZEZ+Š º+Ý‹.|ÁçñA\¸×î ºÔ…BUTÄŠi%4tꑃÕEe¬è»ˆѪyØÛš5x#ÅÏÓÄUŽÝ«;ÝÛU8y«Ïöp|>ÄÅÝgž,4ì(þ@{ÁÅú’ÏV¢x¿cµ)ÞóÀ~/‰ãsÀKH1íðèfMáö)¥=—L’^'`@3SåºP J¼I©Ä>ϵQ±,“`ÒÆ(åY œMHÉëø §‡ûhŽØ‹J"N~~5±6æ±¼Ùƒ ?ý]ù:ßo˜-ü·(-Ú xfK\ÝàžÊ"Kt|…5‰•¬“‹AYž>¦8á\@Ä_ÿL>Cÿì…;À⟅@ä# æC‚—‡—á'ÐÁ@C”ŒØûë°bTº€Š[ 5†8{>m9v`ƒî?¸*BA ª"@í Ø 8pÙ Õxá/¤nÏ œŠp5`Ïôb°Òà÷ÑAjA¼ÿÊ0_”Ÿ…Á@‰ "´ë9°*úôí¸‘jo€r=¨TQ•äçnP:~öîØ®o?þÈ\ÀêH^ŒÚÈDõ°ô™²ãý—ß`6hbìÈñ3 ¹%u ÀÈOäaàªþk'=÷ÔÒW•cPr³f`ãVKÀÒ\‡€‡ÏÿAð?P‹„Á-\Ð,¸¤ 1€‡†ÿBÇÀþ3¼>sáÁ¦ ¿¾‹.`Ï”Ð@ÓÇßæª|ÞóóÃ`ÕÌTs® PÐ>ùõû׫;÷£ö×±ä!•@ðð‹·ï¿þüþ‡§{ÇL \ jÁÿcx lÀW Àb„¶â¸˜Àu0¨þ÷Rƒš`èà~ùHWë85CªPïÁÓ˜ÓÁ=`ÂxlÌ}úþœ˜@Õ¸tÂÀjâò£ïàÜ*þBGè4¤9!c@³ž¿ÿ ŒÈ¿àDðZíòën`ÂCG'RVÐl'8A¿&.6>`»cÿ†äœJ‰OÁ‘Ï ý™I¯O×SaP°3Oÿýý:Öÿ©ú$ÂÁ ć&„°„ðœaþKá'ûŽ2<9pÜŽ9¶˜ \é@·Íþü“aÍ×_ßA_Œ­ ð€%€oÀÜpøÅË÷ ?~þ†æ>ÂC¸ÀÚ\€&Þxníbß‚¬¯Y™ Ý;Ȉ´<ËIy™Áf‚ª„Hƒ0 e`½ÐÄ©ùû59‚êˆsº¶x¦”Ò?#Ô{Ù)¬@ø™€Æ_À¢úí§?`{A½9vINpâÕû—~²ÿC"ë?¸žgaBV†Õ ñ&pØøËʰ׆œÒF5`÷-Q€‡T}ÁŠ`Ðò1`PI›j3ÈšêBrûŸßàE8¨ÉÝÿà¥,1@J…¿àÞ(0=úó݆ûÛö3¼:ñ ÔüŸ1Ì? w1> ùÇ~þ}䇭@c™™ùü‹—Ø?‹°÷ë!K˜@ÓÀ 1€/_2 ŽÛ#†ÙÙ mFhW Öðb€6®ÀˆT‡"ª`= ,=˜µ8‘üCË7! ìÂÉ ®ÜëªI˜X (rs4(A-{PÃóý7Èø(gƒÚšÀR€ š«Ÿ¼û ,!þ‚#”@=°)qF´*Ü-äàdØ´yCNq#ƒ&0GÇ pƒW§þ†F¬›§`©Ç ©«äÿV‘ýï?"׃0¨Íí •e`Æùôð ÃíM{>ÞÂÀÄÆn«Àf\™Ák¹?ýdxøçßNFW »7#gT€lš½ Â0…¯bŠED'qëìà8ø>˜îNNnâÞWpÝÄÁLZ¬ˆýóž$·õ¯K‡¤„æÞœóÝ$.êdzF$ådÀFí÷† JŽ6¶'yÉà[lÿ;­C?ßA ÚQógo¬h%Ôz/’¡ֆ4“ ,ªˆ<ÿSô…‡ <…¡ Ô-Gé(¡³À%ÎLÀÁxú]Ï+¯¯‰Q‘|Ôú2É©*½`qMEÊk’Þ…´^ÎhÈ›v|cq©\ààà«–OÁxD½`@)û½H¾•øÌ¼Il w«_,Àõ‘¡õvG‡MHèÆÁW•ä“݇ÀÒêþ¤EÌÐKÅœstÂMûoƒ~ &è²¢Goß}þwçÞ ðZ:ÔéZì#y Ê*€ àÙ‹àÅ–Xÿ!]AP.‡óÿP—I䘡- .Ǫ̀îu¿þý‡Dæwðpëøl3@“`9”xXà3qòÀ"žÑ ÆÝÙ»_Áö ÔvI!V>HCT=€J ˜ûA=€ÿˆ H½c`7—›áÙÕ} WöÍg°†t /dáté(çóñ2¨90H 3üù‰|Xq/ò¡‰à?4Ò!mÿ ÐbÜVÍ >>vŽáÁ¡3à°g-ÀA‚cm &ü9_~1ìüñçÐgY [†ðmí8At–  Š…¥6Ö p9 `‡g ·Ä_bŒ6&F ‰;³ J¢–vCæóæÍ¼]Ê& Ï·ÉtÍ3@Í |~éà˜Ùº¦eY…ÉÁì«V.ê<:ƒ LlIY42}î0¬@‡(Éæõ¢Ïf¿h¤¸>IòƒŸ#\lïŸ'ÂzG²v\Û¨x7`Ð3føjw#I·-413K*ØmƒZ¿Ó5†ùæBÈD@Sv6¡#nj†ž?GWÁ54òY,ƒ?æ¥ÚªC×±¡\3)óSç…Ó»ÎÁ!ÊÕûckû`Iœ‹)oÈgò2ĘG{/ºÃìñœê \þ¾ÿO{y @¨ùë Eaü”ú7Ù«Äh .桽PÛ€á?dxøü½ï Ë¿ƒ›ƒÌ±Òàn‚Ô32@æÀÕ0!~¶3˜¡ãç êGZ˜ ²¹h–´;8Çû U|\,бs/=R÷„™ Óg.bðäæ`päbcøÛË®¢þ3H©Ë2Èé)A—lÿÆbPT­1"´Bgú m˜¿à^ÈÄ×î1<:s wï|‚ Ô“pÒãäz°j Tú€ªP¿ûÂG Û!‰‡ X:‰ÅÿBÙ"@¶’ñŸÀmPnå6ò€u¨ÍÀ ^Âõ¡½wÃÜyK|y¸l€@x7金‘×Q`R•×óÿ -XÈ-td‰6ï]¶õŸ ZðB<ÏL¼ ±'n3¼¼ñ¶ úVj‚Ò#¨±wèßuß3¼úûÿ01…v’²È €À“—¯ß1|þòƒAT„}‰#–… †/7/ß?À­\6`— y¤Y¸¡Gf„ßþ1ðƒÇÏ! Tä‚0´‘‡^ǃtò QŒ +¿'Ï?![¢@æ‚Ø\@u^Æ ~f‚y‰ÿ¨UÈPMY.`ä~W- ;%-Äd ÈÍ@\ˆò±K.q6°ù *éš;&1,[º†ÁŸ‡ÁXïÿ‚Gþ?`o€…AY_A\^ ÜøCÎÝÿ‘zT°ñ{p‚ûö/xøܶFþ_œ¹ÉðáÉk`—Úã@l|U&û€E>¨ØÚ²X߃z¯HÝÉ@ðlT<þøñËŸËW²x¸#1ì£ 5Ðv&ÐÒ çÙàKœ±–1A&R@Ý/%qPBúÕ a]A`#ñŇ?àáYP`af„wk@‘õÚ6ä?¤•Æ ª@ˆ—™Aa6Z| ZÀîxÄô?æòkP‰ò-’çnøz>&FøLæ/ FU)N-9npbûÿ²7X*þøñ‹¡ª±‹aÓº- ¡| FÀÈþ ÍР9;ƒš‘"ƒ ¸ °¥]‚\Ô3þGLßÂúµŒˆqðš`äxöšáÞéÀ.°ÊÊ ë`‚켺që·? —~“^䣀bAÊ­¿|ùöéêµ»B>¦8s=JÄBç¾;÷°F ¶]6 Àçb&H$€ûßHêX`3jÿB‡v!]/ÐÐ*(â…€rêÀ(Ð@ ”8¸€% °Z× HMƒÌ„uí0wöÀº¤Làþ>|Je©0~ÿe€.H$4Ц?1”Õµ3ìß¾—!JA”K¡¥h6”W›AÝ@‘GØÓ¶£àöÿQo€×M@‹hñÿ:°Ïn;xÇÌïÈf@mÜ¡.öW ­o€ñðê†wžƒ»|ŒÐ!]pßÚ‰ßõí'ÃaPÉȸ–ƒáÖ”"Ÿ‘¬@È à°»qì(S0(€1×ú#¦$amð`Ðß? ¯^¿b–’„Th«oÁ»‹Ø E.¨_ÿàÕ/†]g?{FÊ\à"˜‡“¬´n®Ó+ðœA„­ ƒ—?¸][n_ƒCÂFúqî¶ùÿ}_TŽ y„çN$Pä?~òŒ¡ ¼‰áÚ‰3 ñ Š@÷‡ôóÀ >IaUmð¾Å?¿ÿ@i@×íÁ| W2ýGZLjè)1K´¯Ÿ¾0Ü»pŸáýKØ[hßþ?¤•ÿÈYìþ=fç&tÖÿŒÿ™þaüý º{ÜPe·%þ1š eé÷@“B@›°­çcdÂÒàׯ^½F Öiáÿ!£}¡Kž/ÜÿÆ0mçk†õ§>€s:H=7°Šà6Æø€ A˜—Øc÷°aßP ïm†ÃŒ|FŒ Áx;†ßÖ.Ô‰ÐtîÍÛwRr*îœ<Ë l2A6hþýi¨Ê+Š1¨iIƒWèÂÇôÿý…îA†w!ã÷±ýàU¹àuÿ S×ïž½e¸|øÃ;Pä³0C'Ú ®µ‹ÏÆò_½g`R×d˜>qƒš²ã=ÿþ¶uþpñïßÜà;ÿrÀÞÀƒê?äbT@(«‚ Á§¯ß¼ÿÿêÍ'FE91èfì{ì!Ûƒø€ ´t Ô…dõÍ`î¢ù^ØÁÈ .ÅY_ÎÆ^‡'ÄÇ™Öûú \Àzžœ@]Bfè/hxsg-êx®%ãLŒ xŽK@»@¥Ú™srKê~?~Â,öAc ˆõ:”UĤ儡Ӵ (u:rcÔʇ¯X†Šƒ†tA‰âñ­ ®?›ÁÂ…ù ÕÿÛ¿‹|`Ã38$Œ¡¦¼œAHJŽáôék gÎ^Ògï:AÙ~ ÞÆ‡á 0ü Þ× )%þBK xÖd ôðèãǯ¿Ï]¸Í¦®"Íðë÷_œëî¡%'7;;Û·qn­4i®"àÈe‚îªüü†¥<LàŸ ˆî<·30blÑbddÀ2ZɈ¶z ×6o,[ºþCFÝ@ç7ÛHŸûø6Muq!!n¤n#ÜÏÿ™àþîÂW²@ü*â¿~üÊpûÚS†o>C¶ÇÃì‡uØþÚlì±»™*â á!¡àÈÿ l\‚Â_EUÔ66ºý€%Ñ âšzÿq4†9}ëÍWæc/퀟ðÅ!¨¹ž)€Áƒ8lì ’b Ÿ@ûþüEÌ#bÙM‹Ø!̈X؈¾›©¨Æ<’K†iƒ/®z×þ@ظ>3xŸÞ‚E« ÊÔ~ÿbäáw½~C—¢ p2hK1ñs‚#ÿ?òJH 7þÁVñü‡Nä@ä@Y¯Ÿ¿g¸pêÃû7_Àƒ;ÿ¡]@Ðàî7 ^ûé+Ã&`‘Ÿ–ÄP[VÞsñõÛ7Hcœ‘<%//௯¬óÙ0P þ3ÆÞ+`CðÜ `ƒîç¯ßHEö-^ âš˜$%>S6d8˜‘ÀnZ¬»iQÙdɈÜë`Ä“ë1¬0â‰xDŽ…‰€F÷@3k¦Ìehjëg0Zç ZÕ ^HùœóÅE¹ 4Å8ØA-}è(Óè¬Ïÿÿ(>Ä\>d!#d*÷þ½W W.ÐŽ™o>2<aèéhf¨¬®dv­¿3Ögøj+PUÉÉËËàà`:!E”®(M„%0?5è~üüés£5¸ÎY~*Ö€´ ׯßÀE###¢9÷1bæu¸2&Œ^z=¼0{äcF<2Mfº­Íí&LšÉ`ìª:K‚¿Ð%\ n®¼/ƒ®ŠØË Eœÿá­üÿˆ„[nû91@rý/`Izãú3†»·^BtC§«™¡%3¨‘7÷ý'5+† g| ÿ~~¶­8ÀáùüÅsði*HÇ1¨©(ª5`)£Ai Œ½ÀbÿñÛwÿÝ»ÿ’ÉÌH¼N¾¼t÷Ã7`áÿ¿ÿ`ø+%ÍÀÇ ê†üQ,¬¬¸wß’xj®ˆ'·žG–î½ÿ‘¡¦¹›aû¦í ^|< º H7”øÕd]?I>è|=¬çƒh̓Æ#`û¸˸!u>¨§ðéów†›·^1|øð¼}VƒZù &óv`‘—…•!;'ƒ!ˆYYÙ¾}ù ,•ØxÁÝë? ÏŸƒ†XÀÍP .ºŠŠ"ƒ?/û»w™˜X®R’ˆå42˜‡‡\¸t‹ËÚR›áxÃ0X>~aöþ?ÉÀðþhÃ`îÿ+ÿ–AôýgÖ/? !ŒXU’DTÄÿG2—`{ăx ƒª>|ÌPRÝÊpþèI†A>U`7öþýkÉ 0H s«5؆íÿÐ.#Ì1LŒp7ý‡–B ÕL ¶ÓË—ŸnÞy lKýæ`&x®Õ÷·fnøð™A@QaJE1ƒ‡‡xy=°mO‚FXùÁ'®€Ö[‚“°6¨Ä’”–d°²4eX»n« e½‹Ðÿ?À>'Ã;&èLó‹_ÿÿß~øø¥>8B_#ýÁ#†ÿýU`ŽVöÀNê†ÿ   ÖéÓç ¢Ÿß3ðúÉðç;PŒcÈg®g$4j…–ë±ìÀHtăûØll —.]cÈ+­cx{÷>C„?ƒô®¿àî( ƒ®?ƒÒÁ‹ (¦ýÇ(€ ý{pwîÃÝ'î?zYœÉ é €"ÿ/#¤È?ô탋‡+CSM%ƒ´¬ Ãw`Cï?ÒÚp÷š t,'ûwo‘jëÿ`9V`»ËÒÒ„aý†íº@>;PßOr@±l{s“á)3+Ã!†û,ìÀFÉÿßW<òBÿÇ©s ÿoÜaø÷èˆïß‘,þ?/L`Ö•Œü ŒÀ ‹¨Ã‹“^+ l¼ü%:â©QÜc+i0yAéÆÎœ¿”áÍÍÛ á‚ | È‡îóæaeЗågàagnÁ{;à*²ÈÞÏÿÏïÛƒ(#þvÕn=úÀðìåð‚P”„@MÊ÷ÀˆùO98JJ ÒSÀÃÇß¾~…6OP×Z€ײr’Ààþ 9º ,̘*ªJ œ\œòÿþþµêÝGn n`kU hÞ—§À®°æa˜Á&|ë0€~9ÉÀ jÐ|ý:R2X"!ÆÀ,'ÃÀÂR Ì"" ¬î3¼Z1—áåÛ· :àáà?˜KÊ)®ç ßâ‰x¤ÃÛ·ïNž½Ì Äà ަõë?d…’´;ƒ°ÁRó>Έ¨{@SÃLˆº>Š|`‘ÿéË/†«Þ3|øô\ßÿ‡v±@37æm¶æÅTUfU—38890ü¶ðAç¢LºÁ&¨  T I`ûá#¸-¬/ß%eq1æ'OžùK²@±€r+ÿ„2ÀÞ¿€Ñßï_ß½Oó‚÷Ù‚6+Š 30k¨20ª«‚°™ n¥ÿ&}^a!†¿ÀóâÅ[ðÚ7†ŸŒÖóØô[Ïãîv‚êË{÷Ÿëç7 ÒÌà%\ ª$ÄÉ .Î ™«ûónÊÆËÿ¨ƒ:ÿ¡ðú·ß®s>h5 ´‹ÑeƒÃÀêò8°!íãçËP[UìÞI0|æzŒ}”Œ¨ë'˜Ù¸¤$eÕÕuÈö{&D×<)*ÂàähÃ0{Î=VpÛ<@È- ×UŽ6üÿOàןÿ^>~Ť*#Äð_M…Ù˜Q^T‰"u}þ‚Gð@'hƒ’Ï«× kû¨RÏ3]Ï㲃P·ï>bø ,Ñ~sð€#P[„‹A˜ûE)Ø/Œ°©[&ØèÞ( ä‚´?!ó .ÿ]`cï΋/àn´‹jå¿òw~þÊð Øš¯,ÌgHNŒçöïß¾bvO±–hLÀîµÃ`IJ¬LÌ(CߌÀ’ÖÈP´Ôšýœ@°:‰Ûˆ ÀÉóÿï'®ïß~½õ–ƒÙÆÁÜXˆ0@ @u0ôÀ#1ðaŸÀ£VŒ°£L žgÀ— €zõÚ†OŸ~3pJ23ˆq1ˆó°‚{þÃ×À#2Âw/Á½ ]ÍËÄü¼°åÆó/ OÞ}‡L\AÏEÓ yÛ€E¾”†Ãl`‘oko ,ò¿#­•ÀñpËþƒ»‚ˆåv¨½¨ÿÀêCUMÔûýû·Э+ÈIÄM6PÌZ½Åûÿ+çß?¯oñ 10ØZ20‚"¶j}¦4­¯>}ú©¯˜ð ß2?|Ëm]VpÂÆÍч¤ñ‡:ÀÅðéý'†í»‚s·7+ƒ '+¸¥Øi‹4¬û6} ›Ê… ô€¦h¿|ÿÍpöÁ†‡ÀÈì@Úˆàà9 l(¯æ|G_o†‹æ#ß\äÃ×V0âj× . TÏÇÇ^hó÷ï_Œ¤JŠŠr ÊÀ¶0¸[(ªd€XŸQÃqr1ü»ñ…‘ùà&N†ß¼¼ ŒÿpÖ¿ ϳC÷|¦ú?Ð3nðNÚ0àš¦EŠ8P÷æÃßÓWþ]¿ì…ü„ô~Æpóæ=%†¿þ1|ÖÙŒÐx‡n7FÛ–Åàùû Ì@±0œ|ð‘á °ÑÛç~âÀˆ?,ªËÊŠ&õu1ÛFß¿~Ç:†+â‘Ï"æåå6¿~ñÄð84€Žâå`pssΪCî’ €å~ihj³ðñc`ÐoøÂÊöïÖË1 Í ¬lX‡ÀçzØ€ Ú!ôàñMp}Å®¯þ‘_܃ê_`À"þ0Çþ»ýIM‘ÅÆÙ@ƒQ\ ´¾_wÄ#×ÿ, ·€æ03ýað4—`Ø}ö=Ã`$š«ð†eØÄt &|Ý⼂{o0Ü|ó03A–žßx÷ƒáÁÇ_àͤLH«ÊÎÿúÃp˜XíZkdä~‹üÿÿ‰¨çQj>TµÓÃyÁ àÅ‹ ŒÆÌ©I¤ð­BRUUÍ ð~ûö-î“HMÄm´‚oÂâo@üT|gb}üé×ßgÏ߆nAD>z ûº<T\ƪIªç±ÕûÀÅ$ÈÏÀâfÍÀ$!‡–_0ü9p’áç´e ?k'0üš¸ˆáïÑóàÒ‚X=€Ú ࢭ¨•H¿€jöõJJp1ððr0XjK,`L®xût¶ß_¤mÙТŸºOáì‹o wßÿ„ú1ƒOú``ØóíÃa`"#+aöôI ÒRR ß¿À"Ÿp=ψ1I…zô=èr)Px¾|ùÒB 9Y9i}Ð\Œ9U@±€w$@0¨*øòŸñ+° À õÿ÷ÓG¿þ½ºyû¾ ü´c¤ã‰P:Эâßõôß?ÿ°Ÿ+@âð-h*UI†5ÔØxÏð÷òmо1†ÿ …¯Þ1üýô•á/°HgÜ*ÔX<ìX¬]U!~È Uh¾ÿɳ— ‡žav‘``çá`cafð´”dX³ïƒ°ðæeeøª[ÁcüÿÁ+Žß|ÿËp˜ó?ýú >_`@éw }x_¾0ü6Ž»*JBB~ýø K]£¸Ç{Ùl8˜<0õêõk¬áÊxܼ ¶¶V »vuY€‰ÿ) €@ àtÅ(†U€AgÍ÷ÿï³ì//?^c=ôôå»(Ð'¬ß‹}à²8´<ü °ŸË/À‡tˆQëð°vë@;yE˜Mu€U0g¾z Qûzа}òïÙk†ÿÏß0ü9zŽÅX›5ȘŒ€noCåd`î¹yçë¯ Z?ýÐ0-°]ccì¹|ûÍ0õÄs†w8‚A7s€ÎàFðC ø¥?Ák`+’Au˜0w{ªúz -õ zF ?À¹þ?qOp(é|$v))1ðšèT;ê^ vÀouuP5À© tƒPÍ9R@ütˆAG†+Aێߘ¤ƒ~¾_yñ/ÓÍï?0ü†;3 0`þ0`Û5 ©x=)`qõꃼ¬ t³(©Ó´Xr¨ÛL\ÌZÊ ÿ@õ=( øxþøY—j,>yÁðØû³ïßs×X-XÃ}˜õ4À]HPïáö½Gszî¼gxqø ƒ´‡2Ãß¿\•€¥;Ú#O.=ÿÍ)Äî²=úúœ#À“Ûÿ!ãg ê°šóñ÷ehn¨fµò¿|aÀ}ô<)¹õ`.ðp0°wZlóéãGH©†nŒ°v€ƒ  ë›7oý™˜˜HJÄš^*þØêg `·ÀîßwÑWwn1ü¼v“ X×0pr€¶ú"ÖºA×xY&Pðå Ð^6pî¤høVBíåXfC-†ÿo?€«F^ð&EiðÏŸcçþÝy^«ð{ó>†¿×î0°ú93°z;2üWUd8}þ?ø|ý—Çž0ðÊð1HšË€ÍñRc0ÑgØŸ L ß>ÿfª…v‹@k™/«·;Àª$??›!7'\É}­‹ 8â±a€¹`ãd”’axòø¸ßÏÞYüÅHPFvÁAÕÀŠkŒH ˜jP嵕r„H kƒæ”þÿ¶{þ€áóô… \zj ÿÄD]0 vùyyþƒ^@üt™"xíÀã—ï˜ØÙASc H+|Cߌ“®‰ÅE<°mÊÉÎðÿçF`g•ÅT—áÿ» .\/Nù ÌñLZ* ¬n føsòëo`iðóûð2¬k>1Üfƒ:Ø4Ù# ìzv×U2Cêû?ÿ íÀUÏãö+#´·òi^urÔ½g¸qý¸7^òï?J÷”L¬l & «V­µ¸€f|#6`ì V‚èÛ„5šŠV(J¯B©žé¡¿Ðoô'ú^TB‹ ¦ö´6˜èöÍD µRzÈ-„ìÌÛ7of–ÙS¸D(&HõøÝ>ÍÞõ³Ìn¦‘±9S<þ€ › >~ä~äaßýô¾^Èg Mãp,Ü*ƒCµ^êž½Áë—¡ä}ÍpBõ*“5œÛkjƒSà ½Ugf "5<Ȉ[ŒŠŽ1Š—ˆçoh– â÷¬Œ‹$Ùc7xTtÐ…œ*•븼ºÁS»JF ¸Ìµ0@«¢Û¹ã.{@*mqkñçmbg‹>§éY 2ŠnÇðêkÅþ¸¢®0NHÛ¦égQv½ïC×α%­Z)Ó0@ “Ý €çÿàKa+/@ý1 sN²þÿ¯¶“•Çü'¿ˆª²¬4Ãß節‘ðØèz9Š‹ X¿²UÌà-Íþ¿™N_eø¶t3Ã_Ð hÆXt3K:Pqª€ ÊÙŒÀ€g‰C·?ëðÁ>ÀÝ?Pï0òþ«–ÿ Æ° øl 2#T%ýüÙ /ß@¦«Af³³A‚’r¶èì¯Üon- i`ÏBSQŠAAF|Á$ìø½ƒÌ̈kê@9Ž2 ó´ÿz„+##eõ< 0ì¾ýûÍpã㆟Àœ­È+ÎÀÏÆ žðAâævþü.q8@ë þ22¼úùáûŸ_ 2\"@=,à‰,Ð21)) ¦û÷y±±1ˆûà°[4ö2 ×õm¬¼»~K*¨§Ä1°¾zÍðïùK`d»÷ÀÖÃ'`ãëxm #è¨W`ËŸéÉk†ßÇ.€§‰A‘@fÈáà¾:0a€o®-u T¿3À¦4ÿCî·ùªB@­}`= Ž|`Ÿûß‡Ï Œ « }‹ Æ!P/h„ð0a2¼ÿ]f t?70Êu€]C=uFIQ%!†ty%†?ÀR¤Ú¶`fc:rÚdË9ƒæÛƒ×ýÿ€ogDé£#ïY æAD‘ʹÿ|g8þú&ÃõO‘(ÌðíïOnVNn1qN~èµ3u×¼<| ߀a¾˜p>õ>ùú†áÑ—× ¯|dçea`àepqq`˜2e¶èÀob@a$ ¥Àèd˜Ë)ÊÐÇ#Z}íÙ«÷ ¿€}^viIF½¿àÞP„éóv`n}²h!ë»7tÌõ¹õ 0ƒŽþ„äæ_@$öûdävjè†OЖ‹ÁUd;/(Kp1,þÁm9°¦·R ÿ>»‰QH€YQ†ÅÒ˜ÙÁœ¾¿ýÊðáË/¦Ÿ¿`£×Àå'Ãë߸ÙYx9x8YE,3êÞØrx¤ÑA”Ìÿ‘¶|ÈõŒÐ"þ0òN¼¹Åpïó p„Þøôìu~iynQè%zˆC”x€%hSȇ„ 4iýhÆÏÏî}yÎ óE”ÁTXAƒ[€ÁÀ@41§ LÄÂ@ûÞ“0r-+ Qôd41õC U* *±.]¹ôô?Ë¿R\ºìª.•X° 섌çNbiÕ…&É=÷̹wîùìÐM°Xôƒ×Db%BKL”}“^ßó ÂNüíÜTSyÏ~J¸¶Ž—á·z„«Ë ø2iìµb3/T.Ùì9…ø´ÕÌñF@H Ý€df¤ [k`Ç¢7ìj4F%tÏò¯"°–¸7Š‘òOµøg§ðº[£†·³ o¯ Ëà[™ôUjA¢Í›šN).?Œv~BÑj€VÀ¥—›€Í^6­]ûCîÙ?®°üESõ­§AþÈÌ"7÷Œ¦®š–ŸØg¢$è„1Úˆœ(ËY–á0íaÓ§&¡V¹{½gy^P?xÐÏHË]¥¢ÚƘs¾ÿÍð%cWÓB@Eï B˜Y)””¬LVн_ëLYY( ë)e’Œóœû™4Êjvóê½sï9÷öî;ñ4VÙè ²ðãQ2GÃTž< 3¨ºSÄôånôí…”;HGºÿ Ÿ[¨T'pS€ÓÁ¯r öÖæ½âx æoej²`Œ) €*4€ÁŸÎIXc¤û”‚o%¯¡x‚§k"âMXŸïÏáDQ¡$^·g„tüд(/¡O”óXÛÕÀõ?, '.Ã/•è"jù‡eìûózòÎÞ;d¹3ºÊ€óx¿H:hêÔ+µýÅ/M¬IÅoªìº+¹'LW%g”á=nRC0ˆÎ× Ukj64™Lû¶à)€X¶± 2tòJ2<¦¤ß %Óÿÿ2ð ùf˜¾~ûúéòåB¾^@ŸXû÷ Áð„è´ßа ^ÀŠvHçD(Bí A¯¼O½10ÉH00ƒr5°eÿ´Š™ùyÀ9ŸÔ5ää‚”. 9 «–@&€–yƒ§¨±9_ï?xOìÚ¹_€ÝÁoÀe&^`ÕÀ ,`ç20bÞ¨Œ2ˆ¼Œ|B73óïïÀ9ÿ°áÇl´}úù…•‹ÁRLƒÁTD…A€rN Šÿ!“l<Ü|àx>Üw`W êƒ‡…œ À˜øùÅÀí€cÇNéÛ׸¯]EÄRÂ/ ^ Å´Œ»š·LLŒž>ã99„ éŽ^Ô•¬¼Àâú°?ýØOæååAUó1ïÿÿÇ€¹áR‚ÆäÿýUA¬àa`&Y)Æ7Fy† ³qE˜”€XŽá?°ùiäñÿD6ýÞÔñ%âPã‰~ù¤´‚vUAg »“ï~Cî åç–ÿƒïê´ 7Ê"ö9"z  h½ÿù0ÇÏ$~æ|>6.gI}ae`€<·º‚‘°@ç1‹ýú´jÞS`tD? ;ü̈µ444@³ƒ Únx@(ÓhÏø°e>öâÅðv1Œ»ü` (ÿÿƒŒ‹«W¯^@‹À±8û1ÒÍ@57>=g8üê°¾üö,¨Á(,ÀÀjmÌÀæïÂÀêlÍÀ¤©c€-µbÄœu_ë=ªŽ‘^ ïaütð4ü@hFÈ `?€ ÿ+hC(4aýý¸ô?<þ‘¶»1"n78ÿ@.}ÕÙ ¬Á'Ã`¬óÁ‘ÍÈ+)Á‡E11ƒs9èjÐŒßÛïÞ}{ÃpôÕ5†sïî€#Ÿ…²žÈf–àày5ePæã&üPbª€ba"fΘ™ùþóoÁÝ#äÅ!Hi0¢ŒhÃm~‹j!v`·yÿÿÃLðmðŒ`ÿ&šïÀý CVq†+_^2l|x”áÉç×à1vfV†ÏÀ°‘v#Õ€ Šƒ‰sþ&›ºº,xÏúà'hhy8¨èzýú=t?ŽU½Ø†F™À›2O¾¹Ëpýó3pÑöØ=û¬äÀ#^¬!–µÿÑ+!_sÿvê$ô¤NøªF,ƒ¹°™8FF&F¤)  ê2‚ºˆl¬ˆ3xÕÂîôƒU3 qVÐiâlÜàÆ (â@ýxPDøùèß¿à¶Á«ÞüüöëG°Ÿ¿‚{ ?‰Ø cxÇþ‹á;û_†ÀÆ#/°ý Î-È Â#Å #¨È  Ìý Ñ@Äô |zX ˜ î8…/nˆ¨4äÉÏŸ¿^Þ¼yO–ûÎ^Øê`qq †ÏŸ?A篑#w_™Úª½öé Ãa`ÿö%0@@Å%(Çð³ñ‚G»D9x¡‡‡0aŸXaD¬RF.~ÁG·2"‚„ŸÚ/#БBnŠA{® ?€ÌUß~üœ):îºúˆ Z’@r3d ÙŸÿÀ–ùÿ?àDûXªFð@½÷ÀHá Q9„ Ò²F[ÁJ’àÓÃ?g¯×§áè+ë&†7¿¿0~}“áÑ··  *@XÿƒªN,‘Žcغ 6­€|‰ìTŒÿèç1¢ßÅ;rL-#tôèhÌâûVð%ÐÿÀŠè_@üóÏopD‚r5(’üûÎÅ ~ÿóK†çßÞÅ‚Â﯀]An`Ãðƒï1æd.VE^  ¿…E¼0ÂeN?á`˜}ýƒ‡¤ƒ°€äœÈ6v”KÈ¢ v ,6`eåÁ±»‚ :†F’byɺvêø-ý ÐGô:wˆIFRZ»YóV©•Š: ¬°ˆøØ·3³;óþ>V¿ÊéËdA‹ÝŠ–é†WF¦âZ0‚Çt7všxÍ•÷à¯-¡j0eÔ!`ë¹Eºc¦1^o€ß GL2E e‚r¶ó-§SY8H²Ðì §yü­HÈì+ƒ}©Ÿ‘ ‘<Æ;pÌ ƒÞ`ŽRöp°Â¶. ì¾ÊðlŸ÷˜ùàé·m—RMò˜“,D}QªY`ÒóRº …ᔢhY`—qȾáú@D'ÐÉ!Ï߀çÍÙùX =/ÔqÐùù"¢b wï_o°dFÛ΄²L´V© Q¬íÏ.1ìâ÷Àâð×?È¢R^]9;q `KWqð#î%eèiº¤ZT3ÀWêþ‡3@`àâXüþ6°@‘÷õï†/ÀÈþþïxðæÇ?`‹ñßì_`þo`r]¨‰"ú?l¨<áÄ NÜ R ¹ À†Úc`74޲_†[„ÁJT‹ÁF\˜Ðy¸˜9€¹Ÿ&ðJ2×ËÀÍà ž |ú샸” tÂ3ò‘š sÉ»åŽÀ°Þ„+^ˆè:LúíÛÿîÜ}ÆdfªtÐo, !Ó— íL î æ52Ö2(wƒŠý·??3l~zžaËÓ àR! ¢“:² .: Z@´©´®d&ä(VäÄÇãáýsÆÿàÑ1Ð!Ö å:Ь(gþ¨hE4ƒä@¹áàHªE2HÝ_hÃí'8’!Õ ¤ÍÂLð\,làF¨ŠâaãöV¸ø@l`¯$Êá¼@Tš½¶î·<>Ípýãc°zðÍk@õÒ\¢à„ë) Dè?Èê`Èòðç!rœ‘mÕ*«(2ÈÊÊ0ܾ}Ç g 㣟?ÿ8wá:—µ.äè”FâäPÐNÐáìl¨¹”’A9໇ €}ý3ïîCÆÇ”øØ¹œ¥t‚Í4„ä~~ùìV¾dxðàƒ¤¤4ƒŠª87€Ž¤ù÷2ZºýÖ€ú-†þŒ‘?û laûŒØŸÀŒà¿?áE6DÏoxëäPDƒz ŒŒF+0's0±1ˆ± @#”6»Bì ¥`h‹;!U¨¾W/ž1¨¨¨‚ç²A94ž¾ûÎy†iG¶0<¹ÿŒáËý÷ o/>eøñúèrGn~Af}YV†ÏŸ€Å·Ão 6†§&Ü _eÙ!w¤hr30Y 0|¹ú•áÃùK ¼=¸¤Å¸ì4Dt}_I)Q`^dÿ¬›A9ŒÙÁEøÿ_Ì ÜŒÐHF8 hŽ\€Šy&&”&#üÄÓÿ*á?$ÂOû: zp4è`ð2è&p¦gB¬!@Ùò:zÙ ¹€—ß?€ÇΫA`ä»J‡xÿ"ÍÆ‚Û¬ Ã8Õß§ ×Ç¢ô¤0žÀÚ²òr ºº: G³ãääÄšˆ´ÀÄôôå«7 Ÿ¿|cà¶lÿ¡]Ë Ÿ,þ_¼xl%CníâæábX¼`5CV~5ÃÎÿMh ;ÔØB¤ÜD %^&ð!Šû½a8*ÏÁp?Z’á7'PÍ`[ãëoðùð …¬L oLxÞò0ð=øÉ |ú#Ïš ·^f÷qe°qtf0Ô1dàÖÏ¿@ë þüOºüüùáÓ·_àô´½ic1Âþ#/_†Ó£ eÃÎ`„.Õñ œý hh®à?l<º—r~#ü”z]lŒÀnšˆ:°ðžáØ«kàîáîççÀÝ>`ÃTòüEº@™‘™›AJJžáþý‡õ°ñ‘›žgcçcpusf8tè°.TÆùÿDb ÀôøÝ»O._¾Ïâé!½VÕR>ð¦¿À.Ëx‹t8²‚²2§ ×X`ŽSæcøÅüAƒƒ! Xç2|ùÉðõëO†{Þ1üö—áaº Ã_^ȱZ@𛔀]PP„‚ÅFRæcö7¿ áÓÍ+¯ÜÀààèÊàîÀ oh ,^UËÄlüÝõûbÑ×èŒãl»P·´1¢cûm”X˜ÿC#’Ș óh·*ƒ/¶`ãcð’1ùž{{Ü&Øðø¸ ±Ó—PˆQM`÷ZDŒáÒ¥Ëà°­ý‡É112C5¶m[ÿÔÁ»‡¹4€q£4ûzœ) ²8äÛ§K—o ž^‰4 Z^-$(ÄðñãGð¤ øÈ÷_À­÷ŒÈd†ÿÛß1ü6J™þ02øüãd`ÿÅ^¨yñúg†“¾1¼Œcø º½ó×?ÄIœ Ë¨„8ØÄ€!>ð% `9šßÀ"X˜•á™—0Ã=`¹éÆÉ°øÊf†ìüD†´è†¥óg2<¸—‹››ADH¼ô rë#ü8FFÄFVä5°ÀdB.Fàÿÿ‘ºÿA¥À_¸“±- E^b꞊s 3D(:0è«ðZŸ_6>:ÎpâÍup„"_«ÃËÇÞ³¹Ë1€õîç'`÷ò-|>…eŠ4,¬ ZUÄt_6W3/·)iàûïßÜ”d]],î€wÁuáž}» …ÁÅÙ¼Ø4ªöúý7i9Y†#kŽ2¼e}Ë «&ÄÍ.îÿ¾{ÿ“aæ§ OM¹Þ9 [VÿQF ‘J .v`Šf‡ÆºÙvr hÖ˜0¾Û Ÿ ù¾)q2¼|óŠáèŽ û×mdxþø1øds>A`•Ä®ÇÁ³sH+x`g#r=øfF¤­Á-}Dk~"<Œ_DÅŒTb@ÕÁG‘VÅ|À6‰¯$ÃËÀö°Wêº>úú ÜV‘á¶h€Õ#°]p÷ö5†cG3DFÆýÁ.µ@]ÞÓoo2~yœý8ÁÝP6èÙ 8ÜÀ.䥋ÝÁkŸ=‰•è @¤&н÷ª""‚v>^vðžrîaöý?ÂðåÛGO/È*oÐy“¾2ð ð3ðqð2왵ÁÇJœÁZˆ˜‰ÿ1\»öáØýÏ Ï¢€¹Ÿ ²û±¬ QÃnĵº99Ø€í NH½ ]ö…¸¶X0²2|Ñâeø¬ÏÇð…í7Ãå³§®ÞÀpáÈ`îûÍÀì­«Ðñ¬ÿáÙšÛ‘s=ò´3,Ò·Ÿ31 E.ôlcPÏ2uÀïÚÁ¡ é…M\ƒ¯8ÃóooÁƒc ±‚ÛŸž1ð€0²OŸ<`عsCTt<0pƒ]øôû†íON1\~wáÆÇ‡ Ï¿¿›%Î!¿“‘Ø»ùøá=Ãî]»YXYYf20 œ2Á@$Ÿ3ÊÄÄ|ÖàädCYl > 4#(ÉpñòcpTGýûYMóãû{í¥ú §&Ýbˆëseø,ÃÆðSz›#ÖõI9~èÝàÖ4(7‚NÑàæ¯EüðõÃ׿À%À“õ =ƒ<, oì­Þ?øÁðæÌ†‹3ëÄÿ Œ^ fvÎ *ZÀ.«0x˨+É€±Óz6 Ú} ÈÅ-<  ‰‘ X‡3!¯?@¼\Â7AÿeâaˆTrbXrw/ÃÁkßÙ+ðR´aÿ¯_¿f¶@ýZÐ("Ȉ‡_^€W?úú7t˜›K ™Àa/°`—ȹ4 #ìmðspÂÏÖWÿmß_ÀöYR*|– 7.e8±y3ÃÅ#ÁËj¿ˆˆƒ‹XðEÎHÓ¬àþ=òÒ-Ø1úLŒ¨·˜Ãª FÈp1#ÊMãŒðˆgD¯€XØjWw A3‡ îç•÷÷>þýÂÀý‹‘açú ÖÖöÀµ&Ð}¿Áó o€jo}~¬BÞƒÚ¸€9^Ž[ؾVÉ YW¸~ýF&`»ì=°ŠÞ…™Dr:œ ØbO3Ð×d60Pƒî A,©×o\c8ñChp°J`/¤uÁÀ‡#FN^–áöí‡ {öœcp°c8râ5ÃsS.†ï h µ5ž…VÌH 9&¤ äWô°¸(Ï€JXBÕÀöÉ7e.††ü _•8Þ¼{Épöà†›61<}p¼ ™X"€JFèù¿(yz‡x»#ü>hR„ÝÀm/0! Ì_LŒÈ R˜×ð1€ç „•ÁÃÓ÷¿<'¢ûŸŸ3ÜùüŒáÊ©s æš& ºzfÀ~þ/p[ãýï/ €%Àk`4s šX’&Ð^ðdÐí\ü ïßg8uò°À¶9>ˆœðýÛ·oI*ʲ|NŽæà€¼œ™˜ïñ0W……†‚ϼýúý7Ãçï¿  3 6ËÈJ3,˜¿™?Á—F=1âdø)Î9«yi5R1 / 9Œ™±–Ž™Q"€xlÀ^Š0'7ƒxFÔM!ŽÛ„˜ù ؃ø¬ËËðÑ€Ÿá÷_†Û×/1œÚº™áì¾=àCY€%š0°Tààà†ÜþÅð> ¾ïÙÈ M!‰Ú%D.9 %#Ò$Fø…ŒÐ¾ÿà¹`Ï@”ƒ<_š¯øòÿ'ùW7$Õ«£ x¥¨ôùñç8<6ACÜ R4ç Å-ÂÀÏÎi£Íû lìØ±‹ X̺á,ƈœ*à7°n·—“Òöp³†ŽwC×à¶ReOž=eصkCPxnàÓ7`?tSt¨m #+>¯Ýú“ BÀŒÿ Øõû¬À‰@f&ԭ׌Èëè {û`U¬`†ö¿aþŒà!h!v.)`ËŸT´ƒº2 W¾Àv߀Wþ°11|Säö ¾¨r1¼ÿò–áÜ‘ý '6nd¸ý xv‘‡_€AHX <Ë ¯ —C¢'X·r|<JzFœc„¾Jš¾# ävy>i=ApñþúÛ{†§/3¼çøÃ ,& î!pÛ ÒéÑ——àý‚?Á\ …§¼@ÌÏ Ç# `üН]³ŽXŸÚq f@‘“@õ¾??¯K€¿¸köi,Ô |ýæ5ÃÖ­œm$$e>|ùÁðý×?x­ [!¯(˰iã¦?ߘ¥Ø>I°20~‡Éú´^™™ ¥€Ü¥ÍýPÓ˜ãóˆ6|™,xAê€íYn~ N°~‚¦—‘7¯@ï0ü-ìAhó€Ãw!F†û÷®1œÜ¾áÔŽm ŸÞ¿c`–` RhÖèôv¬4`„UЪùixâA¿3 ÒÀDË^ø š¥<~ýxäò;°è6AŨq‚s$8üø©·Y˜ ¹¨‡· ÷ 2C¯¶•Lh¥|õ.„æee6”䏸Àã ¿ ‹AàË}ÿ2 +p0|2`ø J¿?1\tü¹$@ªЇ}™Ñz š|‘æäcÐàaÝÏ ZœZ3ðï/¢-òZE?%Ù>Ÿ@ƒLŒß®ž?ÁpdÝ:†‹GƒWJqž¢¢Àî$'tMâ”*éÂjF$1äÃ!@mÐúÁ§ßÞ€ûølÀÄzíÒi†——ï2%2Üÿö¼Lü+0‚¯½ŽlNÐH hä4õÍ ¬Ä8„¥(!‚¦¬W®\Åþû×ï»Àé4È6€"+€¢äçÏŸ!**òâ.NH‡C"8vìܬ'ùìììÞú†´›¥ZÅ*%#Çpÿîu†n2°¿ýÁð˜ã €Î `DÜÐJÀ†äßo¿!G¿«‡À,è 4°Ö9ò#¢ÇÀˆÜ{`@4a×à‚[ÐÀ–³&0!(q €­ü ŒÐß¡öL Í†œÌ _5€Uƒ© ÃWyv†/1œØµáðÚµ ÏŸÐÍ{ NN®à^r¹‡<.îö°³1Y82ˆ‰K1ü»õ†áßÁû ̯¿ƒÂoÐl 3RBY,q~~û>ÁÔmÔ@T亟­=À í`¨cDlò`á`ÐäbðêŸïÐ5…°bîÞ/q6†ÏúÀRÁˆŸá+Ç/†«gO2\³šáì}Àô|ˆ–˜˜¸› W@ÛHÊO¤êÿƒÀÝ/Ïn|ÌpíÃ#`ÎÎð_”|L xp è®7@6¨;øë/dOÁ§?_À+’A{*@;ªd€½кÐjaаðžÝ» `ÐÞÿDnóŠÜÜ\^!ÁnàÜø¶kXÜqpp1œ6ÆØÁ ›[²Øä?ò!¢ ÀÊÌ ^&Z¹Z/Z‘üùë'†‡O2ˆHK‚—Ã"Á E¥¢‚à"4øZpÊ ÔJ° ýJ|RÀ®¶8Ü@cáúmÐÞWDöcÀHüüùkðâÐöåðSM@w䂎7e¸yóø|}Ðþú_@ZÆ @bBJ°¦#h æÇpbrpd°tð`8~`ÃÞM«n,ºÈðFØM4†¬iùýžx>þl“|gàábìÅÎïnþÇèÁàêÙ@1#êFP} ò¨`) Ï`Æ/ËpçÛ[†3ÀÜy÷û{`$ü‚¬{`Dj'ü…,ù¢Á Ƭïÿ0|<õáÞáÙ «×Îe0Ð4eŠNb0µt&v%pêùóû'b- #d\¡†" êr ïÿ~c8öï0ùۙJASK¼ðÔÀã¯Wäd-mW‚'–@nRº´Ì zƒšº:¿?û»·ï‚í€ËDv ŒLîïß&[Z3©iÈwÊwP1wéÒE†+WÏ1ƒïåýþóü8UFä+iu"ìÜaP›”’U5tlA%‚”<ÃËOþî»ËÀòØFà‡V Lж4ç€6­|ø 9P‰\"°‚K”ºË J aÅ1#ÒÙ¼ qI`ÛO’Aƒ[¼–á x¡é/Ô Š Œˆ¡g`© ÆÍðÙBá;°­ðäñ=†ƒÖ3\·–áÓÇ÷ \ÀF£„” 0q€{ ˆ+ä ³… ­ß|lü <ÀD¿zú†PÇ Wc7% 9 –võ„AGÜ{Êür æbš *|2 Ê|Ò –â: ‚@÷ .n†ëW¯»”>±±±­ JÀ`O ]]MÃÖÞ\àuü·oÝb8ì3‡„„«NðP,hÕ ¤€4ÜPzH]&èÖkÐZxÐx¶Š†ƒ 0!ˆ‰J1ü¹òœá÷þ; ,Ÿ~3üdgøÃÏÝ‚üoÀ„ðöëW`½ø|ð°Î›¤Á¨{ ˆêÖp„U)Œ°•=Lð{„ýl}^InIp;á+xSÉwØÙ0¨g_@Û ?%€=`;4!õñ÷'†Sv3ìYºŒáε+ lœàêƒ~!¼3 êNÿþÍ0{Öd]=##KÈ-'Œÿ‘öDþ‡Ÿ³šX’V] ÙAäÑF@GÏîÚ±‹ ؘ@d'P†æzwEwW+Ä} Fà£GöíßÍ^%^ôr;ÒSä!òÊ[F¤F"(!°s–®10!x3ð 3üºø„áÏþ{ ÌÀ’å0!€WÁC‹ºïÃkPBhn€›… :A€Z ÀnÐK”™=FøÜ?##Ê7°¥Å-Î`Ê'Ë ¬“A›JÞÿù¹@m¨vºÄ_`‚ÍLšK`7þúÅs {—­`8µw°ÀÌ ("ÂÀË+ ¾ 4’Û|ºdÑLE%U;`ØüA[ˆ¶ûŠý|wˆ?A%ìúuëøí¸ƒDIøì ¨‹ŠÚúú:BV¡@Sh¹ØË—϶mßÈàééìJ@‡KA=¹ˆÆ ##ür&D»y trÚõ±Y€¹YÏÈ‚ÁÆÉ›˜S~žzÀðûðfÐæa6`Ïq«4P¾þv“¾Bvå‚J^p‰Y¯J†®hB©–Œ¡Ì:‹LðªT=€vóªqŠ1˜ñÉ3ȳó3ü­vúºþý7|†i”rÙ4°aû]˜¾©s1¼xöa?°Áx`ÍZ {¿1ð 2 ‰‚íí¡Ø¾u¿(ƒ‹«7Øl‡_10â>¤4?³iã&Æwoß¾ J(wʳ±²ûGFx»bÌÐAÈ|è\» V3ØØZ0()©, þÌ0uŒè-`Fø1°qqø`*t™¸D¦`POÃÈÌ–ÁÊуó?+ÃÃwþžx¶ã·;¸5Ž8bÆg`BxúØWþý |ú90!°BFýmÍ Ò¸ÒÔ.2 "™Ëq 3Xð)0hr‰;Ãÿ>€¶ÿýzA#Rõüaeøl ìJÇŸÎ.߯°aÅBð|Ц–!8“<¸¼?ÓÇ7i Îeâˆ*›žP@³± ]FGù@%Ðâß Å!n BB|ÐÍqïoß¾1,_¾ÁÀPˆMÀK´a“3à¶"Pàûë‘‚^H0Á#Ÿyihž˜@§h™Û83X8»£_1|?p›áÿùg Œœ, ¿€%Âv&Äbh¨¡Ÿ~}¶–?2|&`iÅÇÊ?‡¹e#Z#©.ed@MLH·•À¬6Þ@ ÁˆWØ`Ö¿ M§ I!·˜ ó@¯UÞ£ß üÿ2üþùƒØ6p÷ûÿü¹3 Ož¸ˆ1|•ã€uîQÂÏïî~ûÈ Ê#È Í'Æ ÃÉ Þ+Ë]ÿ±Œ! o&ùÏ€ïœPˆ1¿A½tÐ~`Ï!ZÌœÁ_XŸáÀ§Û GÞßfxuú1ßž÷ â/þ2è© 08g*3ØYJ»l ÇϽ`X²ñÃÍ—ôôÍÄÄDÁû@ÝnføÁ :Túîí» 7nÜ`8þ<Ãî»@kÿKã;À8¹ÌÁÁqgxxyî‚GR€î Ê.ŸÂÌtìù‹7¡¿ü‚D2tÕ ¨ë'--Ëðùä¶ ØaJ Èfca÷@ǺÃ6¹üÿ‡4£‡¾Q~¢'Ò ¤šÿ¡;|@éç'è,`«_ÇÀ‚¡o†у;ÍžÄpfö1†·ú\ ŸlE¾K±ClàEØŒ[Ÿß2ÜþúžAƒGˆAØÇæ€$„¿ÐΈ¼<´'€ ý~$ìƒNÈ4hïßwÐi*Ll ¡2V ò76-:Ã`i Æà›(Ç` - žìúùë/ׯäexø¹ÿ3Lè«g02¶e8~ì°zýÊÀÁÉ 6ñþý{ ·oÞf¸rå î;îݹÇðíû·gÀ*÷'Çe`{l3°ŠøïØÜ@”&Pƒïìóg¯BëxÐ]~ÿ ^e&II)†_‚'|àçòAS8ÙXÀU|‹âô®Œ(SGÐA,äÈG¿9u·¨- †¿¬, öÀÞ‚¥ ÃÖËV.œÅpiÚe†6ü M~‰²AªØ0&4!\ÿô†áÆ—w Ú¼"  „ÀÉÞGø¾ØšÇQW ¥Â¬åd ô°ä9²ê ƒ¡®CC¥ä,ÁŸÿ@K®à MD€ƒÁÁRŠaåÖà _¾üï¼æáa˜:i2°X?ÊpîÜ _¿øþýûu`ãî"°o¿Hïï_ˆ‰?€¢FxüìÙ+Èé lÜð©SЪÐu²ŸÜ¶~ÿ¡4¦@]BVð$3xl²×r"xÊ—õ@?F&,÷Â7i 6kb¬]–<_QÐdQhd2ƒ«g ÊÅ36®\Äpóä†OÎ"ീx™!{PK„+Ÿ^3\ýò–A˜ ù¥8àçûa®:`@JyÈ|?tti‰X Þ8~™áõÝ' ÅU&Èÿñ¼QÔhûþzt,¯®ÌÏ "üˆN;ÁðåÛ·Ÿ­n0s ^bþõû$°ÜÝìÚ=g@”iD€¢´rÿÏŸ¿\]íeeÅ€õ0¤!šô¸táÃõë—€-ÖP`: †´ÙDýv`-U”¾2|`¹ç„4€‹¼¬ º4;Ƚt­:C¶xsr 2˜˜;ŠQ œÿ˜¾î¹ÎÀ|é5Ã?`Oá§0°Jâ`F½ºüå/ —¾¼føðû7°¯/ÄÊ^k©-ä.$|= êxäæq&ðy‡[§mfçûǦÞô Jü‡€vÜøó“Až™ ÞÌùió®[ ç¯<¼òOHg*›‚E‰€OŠåvqõÓÿ¾¾ùô÷ó«ÿ°QVR@Q\€ÎüôéóÏÓ§/sšYé20þüÏ Ë@ PãŒØÕb„ÁŽ fÏé3€÷ÔA¯ëïç``@ìˆXHéÎ0Cï`‚Ž7€ÙL£UA* :¡ä÷/`—ØÂÿúí Ãw`)ðõËW vý€b?‚Ž~öH„%~ž~ |û+Ã{`Cñ³*ôU¤Tì Ÿ^0\üòŠÁWœÁT@ŽA‘Cœþa›qbd@)¥XØY^¸Íð膄|}N` |øþ›¡hö¢ŸÀ¥hG§ °ËøŸARŒ“AAšá+‡äYN£à&°{þü›Æ" ÍÀcÍðóái†_/0üù𔑅q” @'P÷òß¿¿w>|¬Ë? Òåã]$õýdƒ(â`EÐ~6H7°d`ÝñÛh [F >ØáÃ/`÷t ¨ôý("?#ñË û3þú™á ˆþü…áÕË' ¯_=cxþâ9ÃÛ×ïÀ9 ´“–˜kY€%°? ºˆØ>]s'+£Æ ¯o lms1ܽ~‘áÈ¢= ¯U™>:‰cö¹OÏ.€‚ƒ90!(q ƒ’ø=ñû?Ê9 Hç C Pî?µíƒºƒ™°¯ÿ—¡õ놅ß?Àsð±ßß’8€U+#ó—?^¾úL8œOÁµÏŸŸð"þÿýÍÀÈÌöŸKÝ…M\“áçã³ ¿_ÜdøL¬à„Àˆÿ–2€¢Fø̉Gž?­ûëÇ/ÄÞuÈXè,!ÐAK,ì@ϰƒ.rF&°Tø첫2ð¡’oß¿6?Ù_>s)$B¿Å>0¼zñ˜áã§÷@ú5ëWoÀ »ã‡ØÎàäà÷8@´QDTŽAYE‡Ÿ_AL\œARB |v¡¨˜°kÊ^¶:è„A»–˜™AWÓ³2üýõaÏîM ‹gMb87ãÃ;c†ÀÃIvH"ø‹tJ)(×Yg?=c8÷僷ƒ "ƒ §°uÏŒ¸´¶¬í?âþPîzó!ÃõCWJR´ü­Ÿ>1Ìúþ¥ø†E ¨ÇtøÔs†WYžqÚôƒÕüû¶-û0X¿20‡\º¾ d ¾_ßÍðûÍ=hÁ}… @Q#€"ã¨!šdç`… õ‚.”æåæÞ Îfcxóæ0%?cxöì ÃÓ'O^¼x Yë:y“ rIhü”CAÛ³@W§ 1<}|¨Ž!)5‡A©"¢âà&(ÂAz@‰‚ šÓlVV iXþƒ`È’/f&Fxo´4DýŸá;x­¡»w0ƒ½½Ãúµ‹V-šÅpeòu†¶‚ ŸÌÁHÀkþc–‰àÒ·W Üâ v‚Ê j\bàãÞþüC„TÑÿÎï:Ç (ÁÁàj+ÍðXÍå|´Kd€~á6’¾þưiÇQ½µŒÂzoþþÄ™¥AkÿA—o0óŠ1ðšÇ2ü~u‹áëå- Àö°4àÀZµdqÈ×oÀ†–øLЬ???xî† Û¸¹yÀ¹”˜däuÀò°È‘dO$R,8—˜_@€aêÄI [¶l`HJÉ7ˆ@CÀ eåð#j!½tPëT]€"–z83ôÌbp•Ãô|Ò,¨j`‚6ò`#‹ ÛM~Û  ÄŸÃàî ì1LcذjÃí÷>¹ˆ€—‡ÿác†œKð³pþ3°jøúX"ˆ3Ø‚&—$xqæŸÿåâ Òçå= šç2"”¸ØNù°˜{‘s?;Ð}Þl ëòŽŸ}Éðô Ó;NCû‰°%+Ö¶€§‰A[ÏY%4x¹„¾ßÜÃðëÅ ¬¥@Q)0=~ÿþßK—î°¸{Z#Toÿf•U`X·f¸ñò<¸ø×É,[Ä@÷Òïí6þöãüö.0 LD?üdP×Ð`˜3ûÃå‹—´õ´Áó (·“#ïßË mÄÿG*ŠÿƒW÷0ÁW3b»-&ùûý 8áe51øÇ2,ž3‰a϶µ ON?bxç$Êð^““ábh½D&„‹ß^0è{X΂jÀ„ >Š Xœ_ÞwA‚Ÿ™ÁÓQŽá°ëyç°Bn(ÝhŒ|cvN†çï¿3lØ~‡YH} £°î]`9ç–Mô K~ÿ``æbà16Ÿ0|»º\-0‚–‰CK€¢¸ˆ¼8DC]‰ÃÚÎ XŸBö €Š\ЈhÑ'(â™ ·d‚ºŠ 1üßÀˆE&(€–`ƒgú@4´1Åméóòr3¬Z±¼³ØÚÖØÂÿr5=#Ú. poiµb??#b b^¾> u72h­½$ƒ­“7ƒž±ÃÃçþî»Ã ðØËàbfø%ÌMlŒh'ï0Âç>^ýüÄpâó#†;ß_3ð‚¶¥½üư{ÊvG)k`ã X¥œ6övýü ¿e”›‘™¡ØPçædجû7î|üMÉ+‘Wáÿ?L$GxˆXýKf6)`†ûÉð؈"Ú2@T)€à-Ðý?~î: 2Øó¼rv·Àÿÿ(© Œ°){&È.ÐDøü݈©ßÏ_¾3¼{ûžáåË RÒr 7¯ß—àíhÿ‘ÎE¿–%þ3Á‡ÿÿGS÷ÿ?ê xÝ<°-¾s™á'°¸uïÃí›·®\¾ÌpàÀ!†‡>0üe‘{Èóøû+•O?ªs1½rfø¤À iµýB+•™ “37€íƒ/2HžøÉìñ3ø»ËƒÏ*Y-;Nt:8Ð <¢ 6ìÜ /¿ü`ظã.°+%¿›IÜô<žÜOÜ^.ÐF ]Üú ¬ÂŠ ß®í`øûõ@Q+üæÔãÏ_¼røõý'¸AõÛÁà]EÌàË$À+sÀ[¾ gü½ÿ‰t-Í“§/€ Ä Ož}myúñK^Qˆ ´ªtvîß¿ÿЮG]f’ÜPæ— ‰‡ Ü`6™€Ý¥ÀâòÉÓ§ ·oÝa¸uãþ½û.]¸ÚÓøö73×u!éËœŠ6»xdíÿ/» <>UÂ7ã¡Ý}>†—vBÀ®#ôÖ¥ßX0a¿çûËð Ø›xõú;ƒ¨0Ã`j·dåbHö÷Ÿ#(‚ƒÁˆÿK•‹Þ1\¾ñá»vð$й ß™ˆ¸ŠPiªؤu˜ù¥¾^XË@ÔJ ¢úÎÓ§Àž°ÆÉʾ¢Ò²g†Þ ˜øöñ ÃÛ—o@jŸ={ÁðìéK†«Wï0œ=s‰áų§ÀãÏ_ÿ™^þefyÊÎ+ðŒƒOê·¬ÞiF†ŸÌÏnïséÂEf'G†ïß¿£T|ˆ"Ëýà•J®#¨·:³$öêå+†û÷0ܹ} ´8‚áèá# ®éÿYo° É\â”·:. ª´‰MXá0•üadaå$&ð!£ò>›ÿKÙï`x²7Jèæ©,þËÌÞZ2¼1ãgø&ÃŽ6†Àáú#ÍÁð†é/ÃÑ“¯ôµE~‚Îõº¹Øj)Õ& »JA`¶ì¹Ïð[ᓘÉ>,-b;c/ þüb`æcàTµg *&¦Ç/_¾føôå°Ë÷÷0¢ß~æê×Àˆ~ ÄoîÝ{Èpêä%ðõÏŸ?ÿþad{÷ó÷߇¬üBOÙ¹¹³«_çæ9É!)ÿؽûËÈÌò XOýüÿ¿Ÿßˆ¿½¸õùñc'eÁìð‹&‘7W"êbffÈ@¸ LŒß¿g¸yã!ý;w.œ;ϰoÏ^ ßýÿñŸí6¯è.aíóÜšJ„ÄTï0²rüw@ÇÛüû*7X€¹‡ik ;3Ç?F¥ …ÿ%¬Ö0=Þ•(vòtŠðéúo,„Þ˜ó1|—bƒ mB—Šƒz_u¹‰îÃ÷Ó¾À=—ÿê´iŸ—‡áäù— 'ϾúË¡>tÞÿŸoL Tÿ}g`Qf ª%ÐâïßüµŒ]MqîçÏ_ìÀ¿ÏÂÂø„í!0bÏ›`G™Ù9>Yxý`W€¬UFÔ?Ðx68ÿC6êüÿÏ m|3A»¨¬Ð`æÈ/Ÿo‰âxzdæŠ5+„D„À{ûY A ½ ÞÁs`µr÷î=†;·n19tˆáÊÅ‹ ßÿûø›™û§ äUQŲú{˜Ù8?»CŸÝ&`‘È[RÙÿ°t·±ð¡)t³õŸÿ_Ÿ3>Þ›ÃøìT̶¯*o¬@%?Ã`ÕÀöô'ƒJ׆ŠM?wðEO?€¥ÁÕ[ïv|İïÈS†_Ì‚×ØÜêd\׉ëz²ŠL@,TLOÀ¾ ƒ ëWvv¶oÈûÿû› »„"¸ûLyŒ`óÎ6äÞÿ Ó›Ì`ö¿¿¬lüb7^\x÷çĉ,± ± _¾|exýê5°H½ÏpégNž/}úüõÇ/ ·Ù$®sʘ”ÒÜÆ&(óXV'9œÜ ú÷—ÀÐíÈÇI¡´`±6öRáßoЙڌ\’4âÿÉ8Î`~²/SâÀéh‘ãoÁ á­1Ã'I†k×?28Ùüb8yá5Ãö½Né_,"G9¤\—°+ø,b`åþô33µ#5KÜË#@ÛÀ­|8¤•A €G®bB¢‘KH©¬"€E2ÛÓí½Û]ì-ôüƒΜ:Ͱo÷np"øùXÚp ^ç•»Ì.¦¼]Tù&#+û7`.¶µþ±ÿ‡õ¡¹ü?ZÄ##…ฮwiki:dokuwiki|{{wiki:dokuwiki-128.png }}]] DokuWiki is a standards compliant, simple to use [[wp>Wiki]], mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful [[wiki:syntax]] which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files -- no database is required. Read the [[doku>manual|DokuWiki Manual]] to unleash the full power of DokuWiki. ===== Download ===== DokuWiki is available at http://www.splitbrain.org/go/dokuwiki ===== Read More ===== All documentation and additional information besides the [[syntax|syntax description]] is maintained in the DokuWiki at [[doku>|www.dokuwiki.org]]. **About DokuWiki** * [[doku>features|A feature list]] :!: * [[doku>users|Happy Users]] * [[doku>press|Who wrote about it]] * [[doku>blogroll|What Bloggers think]] * [[http://www.wikimatrix.org/show/DokuWiki|Compare it with other wiki software]] **Installing DokuWiki** * [[doku>requirements|System Requirements]] * [[http://www.splitbrain.org/go/dokuwiki|Download DokuWiki]] :!: * [[doku>changes|Change Log]] * [[doku>Install|How to install or upgrade]] :!: * [[doku>config|Configuration]] **Using DokuWiki** * [[doku>syntax|Wiki Syntax]] * [[doku>manual|The manual]] :!: * [[doku>FAQ|Frequently Asked Questions (FAQ)]] * [[doku>glossary|Glossary]] * [[http://search.dokuwiki.org|Search for DokuWiki help and documentation]] **Customizing DokuWiki** * [[doku>tips|Tips and Tricks]] * [[doku>Template|How to create and use templates]] * [[doku>plugins|Installing plugins]] * [[doku>development|Development Resources]] **DokuWiki Feedback and Community** * [[doku>newsletter|Subscribe to the newsletter]] :!: * [[doku>mailinglist|Join the mailing list]] * [[http://forum.dokuwiki.org|Check out the user forum]] * [[doku>irc|Talk to other users in the IRC channel]] * [[http://bugs.splitbrain.org/index.php?project=1|Submit bugs and feature wishes]] * [[http://www.wikimatrix.org/forum/viewforum.php?id=10|Share your experiences in the WikiMatrix forum]] * [[doku>thanks|Some humble thanks]] ===== Copyright ===== 2004-2010 (c) Andreas Gohr ((Please do not contact me for help and support -- use the [[doku>mailinglist]] or [[http://forum.dokuwiki.org|forum]] instead)) The DokuWiki engine is licensed under [[http://www.gnu.org/licenses/gpl.html|GNU General Public License]] Version 2. If you use DokuWiki in your company, consider [[doku>donate|donating]] a few bucks ;-). Not sure what this means? See the [[doku>faq:license|FAQ on the Licenses]]. splitbrain-dokuwiki-d6c824b/data/pages/wiki/syntax.txt000066400000000000000000000476341134327003500232010ustar00rootroot00000000000000====== Formatting Syntax ====== [[doku>DokuWiki]] supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing the //Edit this page// button at the top or bottom of the page. If you want to try something, just use the [[playground:playground|playground]] page. The simpler markup is easily accessible via [[doku>toolbar|quickbuttons]], too. ===== Basic Text Formatting ===== DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. Of course you can **__//''combine''//__** all these. DokuWiki supports **bold**, //italic//, __underlined__ and ''monospaced'' texts. Of course you can **__//''combine''//__** all these. You can use subscript and superscript, too. You can use subscript and superscript, too. You can mark something as deleted as well. You can mark something as deleted as well. **Paragraphs** are created from blank lines. If you want to **force a newline** without a paragraph, you can use two backslashes followed by a whitespace or the end of line. This is some text with some linebreaks\\ Note that the two backslashes are only recognized at the end of a line\\ or followed by\\ a whitespace \\this happens without it. This is some text with some linebreaks\\ Note that the two backslashes are only recognized at the end of a line\\ or followed by\\ a whitespace \\this happens without it. You should use forced newlines only if really needed. ===== Links ===== DokuWiki supports multiple ways of creating links. ==== External ==== External links are recognized automagically: http://www.google.com or simply www.google.com - You can set the link text as well: [[http://www.google.com|This Link points to google]]. Email addresses like this one: are recognized, too. DokuWiki supports multiple ways of creating links. External links are recognized automagically: http://www.google.com or simply www.google.com - You can set link text as well: [[http://www.google.com|This Link points to google]]. Email addresses like this one: are recognized, too. ==== Internal ==== Internal links are created by using square brackets. You can either just give a [[pagename]] or use an additional [[pagename|link text]]. Internal links are created by using square brackets. You can either just give a [[pagename]] or use an additional [[pagename|link text]]. [[doku>pagename|Wiki pagenames]] are converted to lowercase automatically, special characters are not allowed. You can use [[some:namespaces]] by using a colon in the pagename. You can use [[some:namespaces]] by using a colon in the pagename. For details about namespaces see [[doku>namespaces]]. Linking to a specific section is possible, too. Just add the section name behind a hash character as known from HTML. This links to [[syntax#internal|this Section]]. This links to [[syntax#internal|this Section]]. Notes: * Links to [[syntax|existing pages]] are shown in a different style from [[nonexisting]] ones. * DokuWiki does not use [[wp>CamelCase]] to automatically create links by default, but this behavior can be enabled in the [[doku>config]] file. Hint: If DokuWiki is a link, then it's enabled. * When a section's heading is changed, its bookmark changes, too. So don't rely on section linking too much. ==== Interwiki ==== DokuWiki supports [[doku>Interwiki]] links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]]. DokuWiki supports [[doku>Interwiki]] links. These are quick links to other Wikis. For example this is a link to Wikipedia's page about Wikis: [[wp>Wiki]]. ==== Windows Shares ==== Windows shares like [[\\server\share|this]] are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate [[wp>Intranet]]. Windows Shares like [[\\server\share|this]] are recognized, too. Notes: * For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the "local zone"). * For Mozilla and Firefox it can be enabled through different workaround mentioned in the [[http://kb.mozillazine.org/Links_to_local_pages_don't_work|Mozilla Knowledge Base]]. ==== Image Links ==== You can also use an image to link to another internal or external page by combining the syntax for links and [[#images_and_other_files|images]] (see below) like this: [[http://www.php.net|{{wiki:dokuwiki-128.png}}]] [[http://www.php.net|{{wiki:dokuwiki-128.png}}]] Please note: The image formatting is the only formatting syntax accepted in link names. The whole [[#images_and_other_files|image]] and [[#links|link]] syntax is supported (including image resizing, internal and external images and URLs and interwiki links). ===== Footnotes ===== You can add footnotes ((This is a footnote)) by using double parentheses. You can add footnotes ((This is a footnote)) by using double parentheses. ===== Sectioning ===== You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically -- this can be disabled by including the string ''~~NOTOC~~'' in the document. ==== Headline Level 3 ==== === Headline Level 4 === == Headline Level 5 == ==== Headline Level 3 ==== === Headline Level 4 === == Headline Level 5 == By using four or more dashes, you can make a horizontal line: ---- ===== Images and Other Files ===== You can include external and internal [[doku>images]] with curly brackets. Optionally you can specify the size of them. Real size: {{wiki:dokuwiki-128.png}} Resize to given width: {{wiki:dokuwiki-128.png?50}} Resize to given width and height((when the aspect ratio of the given width and height doesn't match that of the image, it will be cropped to the new ratio before resizing)): {{wiki:dokuwiki-128.png?200x50}} Resized external image: {{http://de3.php.net/images/php.gif?200x50}} Real size: {{wiki:dokuwiki-128.png}} Resize to given width: {{wiki:dokuwiki-128.png?50}} Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}} Resized external image: {{http://de3.php.net/images/php.gif?200x50}} By using left or right whitespaces you can choose the alignment. {{ wiki:dokuwiki-128.png}} {{wiki:dokuwiki-128.png }} {{ wiki:dokuwiki-128.png }} {{ wiki:dokuwiki-128.png}} {{wiki:dokuwiki-128.png }} {{ wiki:dokuwiki-128.png }} Of course, you can add a title (displayed as a tooltip by most browsers), too. {{ wiki:dokuwiki-128.png |This is the caption}} {{ wiki:dokuwiki-128.png |This is the caption}} If you specify a filename (external or internal) that is not an image (''gif, jpeg, png''), then it will be displayed as a link instead. For linking an image to another page see [[#Image Links]] above. ===== Lists ===== Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a ''*'' for unordered lists or a ''-'' for ordered ones. * This is a list * The second item * You may have different levels * Another item - The same list but ordered - Another item - Just use indention for deeper levels - That's it * This is a list * The second item * You may have different levels * Another item - The same list but ordered - Another item - Just use indention for deeper levels - That's it Also take a look at the [[doku>faq:lists|FAQ on list items]]. ===== Text Conversions ===== DokuWiki can convert certain pre-defined characters or strings into images or other text or HTML. The text to image conversion is mainly done for smileys. And the text to HTML conversion is used for typography replacements, but can be configured to use other HTML as well. ==== Text to Image Conversions ==== DokuWiki converts commonly used [[wp>emoticon]]s to their graphical equivalents. Those [[doku>Smileys]] and other images can be configured and extended. Here is an overview of Smileys included in DokuWiki: * 8-) %% 8-) %% * 8-O %% 8-O %% * :-( %% :-( %% * :-) %% :-) %% * =) %% =) %% * :-/ %% :-/ %% * :-\ %% :-\ %% * :-? %% :-? %% * :-D %% :-D %% * :-P %% :-P %% * :-O %% :-O %% * :-X %% :-X %% * :-| %% :-| %% * ;-) %% ;-) %% * ^_^ %% ^_^ %% * :?: %% :?: %% * :!: %% :!: %% * LOL %% LOL %% * FIXME %% FIXME %% * DELETEME %% DELETEME %% ==== Text to HTML Conversions ==== Typography: [[DokuWiki]] can convert simple text characters to their typographically correct entities. Here is an example of recognized characters. -> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r) "He thought 'It's a man's world'..." -> <- <-> => <= <=> >> << -- --- 640x480 (c) (tm) (r) "He thought 'It's a man's world'..." The same can be done to produce any kind of HTML, it just needs to be added to the [[doku>entities|pattern file]]. There are three exceptions which do not come from that pattern file: multiplication entity (640x480), 'single' and "double quotes". They can be turned off through a [[doku>config:typography|config option]]. ===== Quoting ===== Some times you want to mark some text to show it's a reply or comment. You can use the following syntax: I think we should do it > No we shouldn't >> Well, I say we should > Really? >> Yes! >>> Then lets do it! I think we should do it > No we shouldn't >> Well, I say we should > Really? >> Yes! >>> Then lets do it! ===== Tables ===== DokuWiki supports a simple syntax to create tables. ^ Heading 1 ^ Heading 2 ^ Heading 3 ^ | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | | Row 2 Col 1 | some colspan (note the double pipe) || | Row 3 Col 1 | Row 3 Col 2 | Row 3 Col 3 | Table rows have to start and end with a ''|'' for normal rows or a ''^'' for headers. ^ Heading 1 ^ Heading 2 ^ Heading 3 ^ | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | | Row 2 Col 1 | some colspan (note the double pipe) || | Row 3 Col 1 | Row 3 Col 2 | Row 3 Col 3 | To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators! Vertical tableheaders are possible, too. | ^ Heading 1 ^ Heading 2 ^ ^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 | ^ Heading 4 | no colspan this time | | ^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 | As you can see, it's the cell separator before a cell which decides about the formatting: | ^ Heading 1 ^ Heading 2 ^ ^ Heading 3 | Row 1 Col 2 | Row 1 Col 3 | ^ Heading 4 | no colspan this time | | ^ Heading 5 | Row 2 Col 2 | Row 2 Col 3 | You can have rowspans (vertically connected cells) by adding '':::'' into the cells below the one to which they should connect. ^ Heading 1 ^ Heading 2 ^ Heading 3 ^ | Row 1 Col 1 | this cell spans vertically | Row 1 Col 3 | | Row 2 Col 1 | ::: | Row 2 Col 3 | | Row 3 Col 1 | ::: | Row 2 Col 3 | Apart from the rowspan syntax those cells should not contain anything else. ^ Heading 1 ^ Heading 2 ^ Heading 3 ^ | Row 1 Col 1 | this cell spans vertically | Row 1 Col 3 | | Row 2 Col 1 | ::: | Row 2 Col 3 | | Row 3 Col 1 | ::: | Row 2 Col 3 | You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text. ^ Table with alignment ^^^ | right| center |left | |left | right| center | | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx | This is how it looks in the source: ^ Table with alignment ^^^ | right| center |left | |left | right| center | | xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx | Note: Vertical alignment is not supported. ===== No Formatting ===== If you need to display text exactly like it is typed (without any formatting), enclose the area either with ''%%%%'' tags or even simpler, with double percent signs ''%%''. This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it. The same is true for %%//__this__ text// with a smiley ;-)%%. This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it. The same is true for %%//__this__ text// with a smiley ;-)%%. ===== Code Blocks ===== You can include code blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags ''%%%%'' or ''%%%%''. This is text is indented by two spaces. This is preformatted code all spaces are preserved: like <-this This is pretty much the same, but you could use it to show that you quoted a file. Those blocks were created by this source: This is text is indented by two spaces. This is preformatted code all spaces are preserved: like <-this This is pretty much the same, but you could use it to show that you quoted a file. ==== Syntax Highlighting ==== [[wiki:DokuWiki]] can highlight sourcecode, which makes it easier to read. It uses the [[http://qbnz.com/highlighter/|GeSHi]] Generic Syntax Highlighter -- so any language supported by GeSHi is supported. The syntax is the same like in the code and file blocks in the previous section, but this time the name of the used language is inserted inside the tag. Eg. '''' or ''''. /** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); //Display the string. } } The following language strings are currently recognized: //4cs, abap, actionscript-french, actionscript, actionscript3, ada, apache, applescript, asm, asp, autohotkey, autoit, avisynth, awk, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, cil, clojure, cmake, cobol, cpp, cpp-qt, csharp, css, cuesheet, d, dcs, delphi, diff, div, dos, dot, eiffel, email, erlang, fo, fortran, freebasic, fsharp, gambas, genero, gdb, glsl, gml, gnuplot, groovy, gettext, haskell, hq9plus, html, idl, ini, inno, intercal, io, java5, java, javascript, jquery, kixtart, klonec, klonecpp, latex, lisp, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, make, mapbasic, matlab, mirc, modula3, mmix, mpasm, mxml, mysql, newlisp, nsis, oberon2, objc, ocaml-brief, ocaml, oobas, oracle8, oracle11, pascal, perl, perl6, per, php-brief, php, pike, pic16, pixelbender, plsql, povray, powerbuilder, powershell, progress, prolog, properties, providex, purebasic, python, qbasic, rails, rebol, reg, robots, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, vbnet, vb, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, winbatch, whois, xml, xorg_conf, xpp, z80// ==== Downloadable Code Blocks ==== When you use the ''%%%%'' or ''%%%%'' syntax as above, you might want to make the shown code available for download as well. You can to this by specifying a file name after language code like this: If you don't want any highlighting but want a downloadable file, specify a dash (''-'') as the language code: ''%%%%''. ===== Embedding HTML and PHP ===== You can embed raw HTML or PHP code into your documents by using the ''%%%%'' or ''%%%%'' tags. (Use uppercase tags if you need to enclose block level elements.) HTML example: This is some inline HTML

And this is some block HTML

This is some inline HTML

And this is some block HTML

PHP example: echo 'A logo generated by PHP:'; echo 'PHP Logo !'; echo '(generated inline HTML)'; echo ''; echo ''; echo '
The same, but inside a block level element:PHP Logo !
';
echo 'A logo generated by PHP:'; echo 'PHP Logo !'; echo '(inline HTML)'; echo ''; echo ''; echo '
The same, but inside a block level element:PHP Logo !
';
**Please Note**: HTML and PHP embedding is disabled by default in the configuration. If disabled, the code is displayed instead of executed. ===== RSS/ATOM Feed Aggregation ===== [[DokuWiki]] can integrate data from external XML feeds. For parsing the XML feeds, [[http://simplepie.org/|SimplePie]] is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters: ^ Parameter ^ Description ^ | any number | will be used as maximum number items to show, defaults to 8 | | reverse | display the last items in the feed first | | author | show item authors names | | date | show item dates | | description| show the item description. If [[doku>config:htmlok|HTML]] is disabled all tags will be stripped | | //n//[dhm] | refresh period, where d=days, h=hours, m=minutes. (e.g. 12h = 12 hours). | The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. [[wiki:DokuWiki]] will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells [[wiki:DokuWiki]] to re-render the page if it is more than //refresh period// since the page was last rendered. **Example:** {{rss>http://slashdot.org/index.rss 5 author date 1h }} {{rss>http://slashdot.org/index.rss 5 author date 1h }} ===== Control Macros ===== Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble: ^ Macro ^ Description | | %%~~NOTOC~~%% | If this macro is found on the page, no table of contents will be created | | %%~~NOCACHE~~%% | DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the %%%% syntax above is used), adding this macro will force DokuWiki to rerender a page on every call | ===== Syntax Plugins ===== DokuWiki's syntax can be extended by [[doku>plugins|Plugins]]. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation: ~~INFO:syntaxplugins~~ splitbrain-dokuwiki-d6c824b/data/tmp/000077500000000000000000000000001134327003500176325ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/data/tmp/_dummy000066400000000000000000000000001134327003500210350ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/doku.php000066400000000000000000000043211134327003500175740ustar00rootroot00000000000000 */ // xdebug_start_profiling(); if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/'); if (isset($_SERVER['HTTP_X_DOKUWIKI_DO'])){ $ACT = trim(strtolower($_SERVER['HTTP_X_DOKUWIKI_DO'])); } elseif (!empty($IDX)) { $ACT = 'index'; } elseif (isset($_REQUEST['do'])) { $ACT = $_REQUEST['do']; } else { $ACT = 'show'; } require_once(DOKU_INC.'inc/init.php'); require_once(DOKU_INC.'inc/common.php'); require_once(DOKU_INC.'inc/events.php'); require_once(DOKU_INC.'inc/pageutils.php'); require_once(DOKU_INC.'inc/html.php'); require_once(DOKU_INC.'inc/auth.php'); require_once(DOKU_INC.'inc/actions.php'); //import variables $QUERY = trim($_REQUEST['id']); $ID = getID(); $NS = getNS($ID); $REV = $_REQUEST['rev']; $IDX = $_REQUEST['idx']; $DATE = $_REQUEST['date']; $RANGE = $_REQUEST['range']; $HIGH = $_REQUEST['s']; if(empty($HIGH)) $HIGH = getGoogleQuery(); $TEXT = cleanText($_POST['wikitext']); $PRE = cleanText($_POST['prefix']); $SUF = cleanText($_POST['suffix']); $SUM = $_REQUEST['summary']; //sanitize revision $REV = preg_replace('/[^0-9]/','',$REV); //make infos about the selected page available $INFO = pageinfo(); //export minimal infos to JS, plugins can add more $JSINFO['id'] = $ID; $JSINFO['namespace'] = (string) $INFO['namespace']; // handle debugging if($conf['allowdebug'] && $ACT == 'debug'){ html_debug(); exit; } //send 404 for missing pages if configured or ID has special meaning to bots if(!$INFO['exists'] && ($conf['send404'] || preg_match('/^(robots\.txt|sitemap\.xml(\.gz)?|favicon\.ico|crossdomain\.xml)$/',$ID)) && ($ACT == 'show' || substr($ACT,0,7) == 'export_') ){ header('HTTP/1.0 404 Not Found'); } //prepare breadcrumbs (initialize a static var) if ($conf['breadcrumbs']) breadcrumbs(); // check upstream checkUpdateMessages(); $tmp = array(); // No event data trigger_event('DOKUWIKI_STARTED',$tmp); //close session session_write_close(); //do the work act_dispatch($ACT); $tmp = array(); // No event data trigger_event('DOKUWIKI_DONE', $tmp); // xdebug_dump_function_profile(1); splitbrain-dokuwiki-d6c824b/feed.php000066400000000000000000000267141134327003500175470ustar00rootroot00000000000000 */ if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/'); require_once(DOKU_INC.'inc/init.php'); require_once(DOKU_INC.'inc/common.php'); require_once(DOKU_INC.'inc/events.php'); require_once(DOKU_INC.'inc/parserutils.php'); require_once(DOKU_INC.'inc/feedcreator.class.php'); require_once(DOKU_INC.'inc/auth.php'); require_once(DOKU_INC.'inc/pageutils.php'); require_once(DOKU_INC.'inc/httputils.php'); //close session session_write_close(); // get params $opt = rss_parseOptions(); // the feed is dynamic - we need a cache for each combo // (but most people just use the default feed so it's still effective) $cache = getCacheName(join('',array_values($opt)).$_SERVER['REMOTE_USER'],'.feed'); $key = join('', array_values($opt)) . $_SERVER['REMOTE_USER']; $cache = new cache($key, '.feed'); // prepare cache depends $depends['files'] = getConfigFiles('main'); $depends['age'] = $conf['rss_update']; $depends['purge'] = ($_REQUEST['purge']) ? true : false; // check cacheage and deliver if nothing has changed since last // time or the update interval has not passed, also handles conditional requests header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Type: application/xml; charset=utf-8'); header('X-Robots-Tag: noindex'); if($cache->useCache($depends)) { http_conditionalRequest($cache->_time); if($conf['allowdebug']) header("X-CacheUsed: $cache->cache"); print $cache->retrieveCache(); exit; } else { http_conditionalRequest(time()); } // create new feed $rss = new DokuWikiFeedCreator(); $rss->title = $conf['title'].(($opt['namespace']) ? ' '.$opt['namespace'] : ''); $rss->link = DOKU_URL; $rss->syndicationURL = DOKU_URL.'feed.php'; $rss->cssStyleSheet = DOKU_URL.'lib/exe/css.php?s=feed'; $image = new FeedImage(); $image->title = $conf['title']; $image->url = DOKU_URL."lib/images/favicon.ico"; $image->link = DOKU_URL; $rss->image = $image; $data = null; if($opt['feed_mode'] == 'list'){ $data = rssListNamespace($opt); }elseif($opt['feed_mode'] == 'search'){ $data = rssSearch($opt); }else{ $eventData = array( 'opt' => &$opt, 'data' => &$data, ); $event = new Doku_Event('FEED_MODE_UNKNOWN', $eventData); if ($event->advise_before(true)) { $data = rssRecentChanges($opt); } $event->advise_after(); } rss_buildItems($rss, $data, $opt); $feed = $rss->createFeed($opt['feed_type'],'utf-8'); // save cachefile $cache->storeCache($feed); // finally deliver print $feed; // ---------------------------------------------------------------- // /** * Get URL parameters and config options and return a initialized option array * * @author Andreas Gohr */ function rss_parseOptions(){ global $conf; $opt['items'] = (int) $_REQUEST['num']; $opt['feed_type'] = $_REQUEST['type']; $opt['feed_mode'] = $_REQUEST['mode']; $opt['show_minor'] = $_REQUEST['minor']; $opt['namespace'] = $_REQUEST['ns']; $opt['link_to'] = $_REQUEST['linkto']; $opt['item_content'] = $_REQUEST['content']; $opt['search_query'] = $_REQUEST['q']; if(!$opt['feed_type']) $opt['feed_type'] = $conf['rss_type']; if(!$opt['item_content']) $opt['item_content'] = $conf['rss_content']; if(!$opt['link_to']) $opt['link_to'] = $conf['rss_linkto']; if(!$opt['items']) $opt['items'] = $conf['recent']; $opt['guardmail'] = ($conf['mailguard'] != '' && $conf['mailguard'] != 'none'); switch ($opt['feed_type']){ case 'rss': $opt['feed_type'] = 'RSS0.91'; $opt['mime_type'] = 'text/xml'; break; case 'rss2': $opt['feed_type'] = 'RSS2.0'; $opt['mime_type'] = 'text/xml'; break; case 'atom': $opt['feed_type'] = 'ATOM0.3'; $opt['mime_type'] = 'application/xml'; break; case 'atom1': $opt['feed_type'] = 'ATOM1.0'; $opt['mime_type'] = 'application/atom+xml'; break; default: $opt['feed_type'] = 'RSS1.0'; $opt['mime_type'] = 'application/xml'; } $eventData = array( 'opt' => &$opt, ); trigger_event('FEED_OPTS_POSTPROCESS', $eventData); return $opt; } /** * Add recent changed pages to a feed object * * @author Andreas Gohr * @param object $rss - the FeedCreator Object * @param array $data - the items to add * @param array $opt - the feed options */ function rss_buildItems(&$rss,&$data,$opt){ global $conf; global $lang; global $auth; $eventData = array( 'rss' => &$rss, 'data' => &$data, 'opt' => &$opt, ); $event = new Doku_Event('FEED_DATA_PROCESS', $eventData); if ($event->advise_before(false)){ foreach($data as $ditem){ if(!is_array($ditem)){ // not an array? then only a list of IDs was given $ditem = array( 'id' => $ditem ); } $item = new FeedItem(); $id = $ditem['id']; $meta = p_get_metadata($id); // add date if($ditem['date']){ $date = $ditem['date']; }elseif($meta['date']['modified']){ $date = $meta['date']['modified']; }else{ $date = @filemtime(wikiFN($id)); } if($date) $item->date = date('r',$date); // add title if($conf['useheading'] && $meta['title']){ $item->title = $meta['title']; }else{ $item->title = $ditem['id']; } if($conf['rss_show_summary'] && !empty($ditem['sum'])){ $item->title .= ' - '.strip_tags($ditem['sum']); } // add item link switch ($opt['link_to']){ case 'page': $item->link = wl($id,'rev='.$date,true,'&'); break; case 'rev': $item->link = wl($id,'do=revisions&rev='.$date,true,'&'); break; case 'current': $item->link = wl($id, '', true,'&'); break; case 'diff': default: $item->link = wl($id,'rev='.$date.'&do=diff',true,'&'); } // add item content switch ($opt['item_content']){ case 'diff': case 'htmldiff': require_once(DOKU_INC.'inc/DifferenceEngine.php'); $revs = getRevisions($id, 0, 1); $rev = $revs[0]; if($rev){ $df = new Diff(explode("\n",htmlspecialchars(rawWiki($id,$rev))), explode("\n",htmlspecialchars(rawWiki($id,'')))); }else{ $df = new Diff(array(''), explode("\n",htmlspecialchars(rawWiki($id,'')))); } if($opt['item_content'] == 'htmldiff'){ $tdf = new TableDiffFormatter(); $content = ''; $content .= ''; $content .= ''; $content .= $tdf->format($df); $content .= '
'.$rev.''.$lang['current'].'
'; }else{ $udf = new UnifiedDiffFormatter(); $content = "
\n".$udf->format($df)."\n
"; } break; case 'html': $content = p_wiki_xhtml($id,$date,false); // no TOC in feeds $content = preg_replace('/().*()/s','',$content); // make URLs work when canonical is not set, regexp instead of rerendering! if(!$conf['canonical']){ $base = preg_quote(DOKU_REL,'/'); $content = preg_replace('/(description = $content; //FIXME a plugin hook here could be senseful // add user # FIXME should the user be pulled from metadata as well? $user = null; $user = @$ditem['user']; // the @ spares time repeating lookup $item->author = ''; if($user && $conf['useacl'] && $auth){ $userInfo = $auth->getUserData($user); $item->author = $userInfo['name']; if($userInfo && !$opt['guardmail']){ $item->authorEmail = $userInfo['mail']; }else{ //cannot obfuscate because some RSS readers may check validity $item->authorEmail = $user.'@'.$ditem['ip']; } }elseif($user){ // this happens when no ACL but some Apache auth is used $item->author = $user; $item->authorEmail = $user.'@'.$ditem['ip']; }else{ $item->authorEmail = 'anonymous@'.$ditem['ip']; } // add category if($meta['subject']){ $item->category = $meta['subject']; }else{ $cat = getNS($id); if($cat) $item->category = $cat; } // finally add the item to the feed object, after handing it to registered plugins $evdata = array('item' => &$item, 'opt' => &$opt, 'ditem' => &$ditem, 'rss' => &$rss); $evt = new Doku_Event('FEED_ITEM_ADD', $evdata); if ($evt->advise_before()){ $rss->addItem($item); } $evt->advise_after(); // for completeness } } $event->advise_after(); } /** * Add recent changed pages to the feed object * * @author Andreas Gohr */ function rssRecentChanges($opt){ global $conf; global $auth; $flags = RECENTS_SKIP_DELETED; if(!$opt['show_minor']) $flags += RECENTS_SKIP_MINORS; $recents = getRecents(0,$opt['items'],$opt['namespace'],$flags); return $recents; } /** * Add all pages of a namespace to the feed object * * @author Andreas Gohr */ function rssListNamespace($opt){ require_once(DOKU_INC.'inc/search.php'); global $conf; $ns=':'.cleanID($opt['namespace']); $ns=str_replace(':','/',$ns); $data = array(); sort($data); search($data,$conf['datadir'],'search_list','',$ns); return $data; } /** * Add the result of a full text search to the feed object * * @author Andreas Gohr */ function rssSearch($opt){ if(!$opt['search_query']) return; require_once(DOKU_INC.'inc/fulltext.php'); $data = array(); $data = ft_pageSearch($opt['search_query'],$poswords); $data = array_keys($data); return $data; } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/inc/000077500000000000000000000000001134327003500166725ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/inc/.htaccess000066400000000000000000000001041134327003500204630ustar00rootroot00000000000000## no access to the inc directory order allow,deny deny from all splitbrain-dokuwiki-d6c824b/inc/DifferenceEngine.php000066400000000000000000001003051134327003500225620ustar00rootroot00000000000000 * @license You may copy this code freely under the conditions of the GPL. */ define('USE_ASSERTS', function_exists('assert')); class _DiffOp { var $type; var $orig; var $closing; function reverse() { trigger_error("pure virtual", E_USER_ERROR); } function norig() { return $this->orig ? count($this->orig) : 0; } function nclosing() { return $this->closing ? count($this->closing) : 0; } } class _DiffOp_Copy extends _DiffOp { var $type = 'copy'; function _DiffOp_Copy ($orig, $closing = false) { if (!is_array($closing)) $closing = $orig; $this->orig = $orig; $this->closing = $closing; } function reverse() { return new _DiffOp_Copy($this->closing, $this->orig); } } class _DiffOp_Delete extends _DiffOp { var $type = 'delete'; function _DiffOp_Delete ($lines) { $this->orig = $lines; $this->closing = false; } function reverse() { return new _DiffOp_Add($this->orig); } } class _DiffOp_Add extends _DiffOp { var $type = 'add'; function _DiffOp_Add ($lines) { $this->closing = $lines; $this->orig = false; } function reverse() { return new _DiffOp_Delete($this->closing); } } class _DiffOp_Change extends _DiffOp { var $type = 'change'; function _DiffOp_Change ($orig, $closing) { $this->orig = $orig; $this->closing = $closing; } function reverse() { return new _DiffOp_Change($this->closing, $this->orig); } } /** * Class used internally by Diff to actually compute the diffs. * * The algorithm used here is mostly lifted from the perl module * Algorithm::Diff (version 1.06) by Ned Konz, which is available at: * http://www.perl.com/CPAN/authors/id/N/NE/NEDKONZ/Algorithm-Diff-1.06.zip * * More ideas are taken from: * http://www.ics.uci.edu/~eppstein/161/960229.html * * Some ideas are (and a bit of code) are from from analyze.c, from GNU * diffutils-2.7, which can be found at: * ftp://gnudist.gnu.org/pub/gnu/diffutils/diffutils-2.7.tar.gz * * closingly, some ideas (subdivision by NCHUNKS > 2, and some optimizations) * are my own. * * @author Geoffrey T. Dairiki * @access private */ class _DiffEngine { function diff ($from_lines, $to_lines) { $n_from = count($from_lines); $n_to = count($to_lines); $this->xchanged = $this->ychanged = array(); $this->xv = $this->yv = array(); $this->xind = $this->yind = array(); unset($this->seq); unset($this->in_seq); unset($this->lcs); // Skip leading common lines. for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) { if ($from_lines[$skip] != $to_lines[$skip]) break; $this->xchanged[$skip] = $this->ychanged[$skip] = false; } // Skip trailing common lines. $xi = $n_from; $yi = $n_to; for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) { if ($from_lines[$xi] != $to_lines[$yi]) break; $this->xchanged[$xi] = $this->ychanged[$yi] = false; } // Ignore lines which do not exist in both files. for ($xi = $skip; $xi < $n_from - $endskip; $xi++) $xhash[$from_lines[$xi]] = 1; for ($yi = $skip; $yi < $n_to - $endskip; $yi++) { $line = $to_lines[$yi]; if ( ($this->ychanged[$yi] = empty($xhash[$line])) ) continue; $yhash[$line] = 1; $this->yv[] = $line; $this->yind[] = $yi; } for ($xi = $skip; $xi < $n_from - $endskip; $xi++) { $line = $from_lines[$xi]; if ( ($this->xchanged[$xi] = empty($yhash[$line])) ) continue; $this->xv[] = $line; $this->xind[] = $xi; } // Find the LCS. $this->_compareseq(0, count($this->xv), 0, count($this->yv)); // Merge edits when possible $this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged); $this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged); // Compute the edit operations. $edits = array(); $xi = $yi = 0; while ($xi < $n_from || $yi < $n_to) { USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]); USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]); // Skip matching "snake". $copy = array(); while ( $xi < $n_from && $yi < $n_to && !$this->xchanged[$xi] && !$this->ychanged[$yi]) { $copy[] = $from_lines[$xi++]; ++$yi; } if ($copy) $edits[] = new _DiffOp_Copy($copy); // Find deletes & adds. $delete = array(); while ($xi < $n_from && $this->xchanged[$xi]) $delete[] = $from_lines[$xi++]; $add = array(); while ($yi < $n_to && $this->ychanged[$yi]) $add[] = $to_lines[$yi++]; if ($delete && $add) $edits[] = new _DiffOp_Change($delete, $add); elseif ($delete) $edits[] = new _DiffOp_Delete($delete); elseif ($add) $edits[] = new _DiffOp_Add($add); } return $edits; } /** * Divide the Largest Common Subsequence (LCS) of the sequences * [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally * sized segments. * * Returns (LCS, PTS). LCS is the length of the LCS. PTS is an * array of NCHUNKS+1 (X, Y) indexes giving the diving points between * sub sequences. The first sub-sequence is contained in [X0, X1), * [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note * that (X0, Y0) == (XOFF, YOFF) and * (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM). * * This function assumes that the first lines of the specified portions * of the two files do not match, and likewise that the last lines do not * match. The caller must trim matching lines from the beginning and end * of the portions it is going to specify. */ function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) { $flip = false; if ($xlim - $xoff > $ylim - $yoff) { // Things seems faster (I'm not sure I understand why) // when the shortest sequence in X. $flip = true; list ($xoff, $xlim, $yoff, $ylim) = array( $yoff, $ylim, $xoff, $xlim); } if ($flip) for ($i = $ylim - 1; $i >= $yoff; $i--) $ymatches[$this->xv[$i]][] = $i; else for ($i = $ylim - 1; $i >= $yoff; $i--) $ymatches[$this->yv[$i]][] = $i; $this->lcs = 0; $this->seq[0]= $yoff - 1; $this->in_seq = array(); $ymids[0] = array(); $numer = $xlim - $xoff + $nchunks - 1; $x = $xoff; for ($chunk = 0; $chunk < $nchunks; $chunk++) { if ($chunk > 0) for ($i = 0; $i <= $this->lcs; $i++) $ymids[$i][$chunk-1] = $this->seq[$i]; $x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks); for ( ; $x < $x1; $x++) { $line = $flip ? $this->yv[$x] : $this->xv[$x]; if (empty($ymatches[$line])) continue; $matches = $ymatches[$line]; reset($matches); while (list ($junk, $y) = each($matches)) if (empty($this->in_seq[$y])) { $k = $this->_lcs_pos($y); USE_ASSERTS && assert($k > 0); $ymids[$k] = $ymids[$k-1]; break; } while (list ($junk, $y) = each($matches)) { if ($y > $this->seq[$k-1]) { USE_ASSERTS && assert($y < $this->seq[$k]); // Optimization: this is a common case: // next match is just replacing previous match. $this->in_seq[$this->seq[$k]] = false; $this->seq[$k] = $y; $this->in_seq[$y] = 1; } else if (empty($this->in_seq[$y])) { $k = $this->_lcs_pos($y); USE_ASSERTS && assert($k > 0); $ymids[$k] = $ymids[$k-1]; } } } } $seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff); $ymid = $ymids[$this->lcs]; for ($n = 0; $n < $nchunks - 1; $n++) { $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks); $y1 = $ymid[$n] + 1; $seps[] = $flip ? array($y1, $x1) : array($x1, $y1); } $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim); return array($this->lcs, $seps); } function _lcs_pos ($ypos) { $end = $this->lcs; if ($end == 0 || $ypos > $this->seq[$end]) { $this->seq[++$this->lcs] = $ypos; $this->in_seq[$ypos] = 1; return $this->lcs; } $beg = 1; while ($beg < $end) { $mid = (int)(($beg + $end) / 2); if ( $ypos > $this->seq[$mid] ) $beg = $mid + 1; else $end = $mid; } USE_ASSERTS && assert($ypos != $this->seq[$end]); $this->in_seq[$this->seq[$end]] = false; $this->seq[$end] = $ypos; $this->in_seq[$ypos] = 1; return $end; } /** * Find LCS of two sequences. * * The results are recorded in the vectors $this->{x,y}changed[], by * storing a 1 in the element for each line that is an insertion * or deletion (ie. is not in the LCS). * * The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1. * * Note that XLIM, YLIM are exclusive bounds. * All line numbers are origin-0 and discarded lines are not counted. */ function _compareseq ($xoff, $xlim, $yoff, $ylim) { // Slide down the bottom initial diagonal. while ($xoff < $xlim && $yoff < $ylim && $this->xv[$xoff] == $this->yv[$yoff]) { ++$xoff; ++$yoff; } // Slide up the top initial diagonal. while ($xlim > $xoff && $ylim > $yoff && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) { --$xlim; --$ylim; } if ($xoff == $xlim || $yoff == $ylim) $lcs = 0; else { // This is ad hoc but seems to work well. //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5); //$nchunks = max(2,min(8,(int)$nchunks)); $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1; list ($lcs, $seps) = $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks); } if ($lcs == 0) { // X and Y sequences have no common subsequence: // mark all changed. while ($yoff < $ylim) $this->ychanged[$this->yind[$yoff++]] = 1; while ($xoff < $xlim) $this->xchanged[$this->xind[$xoff++]] = 1; } else { // Use the partitions to split this problem into subproblems. reset($seps); $pt1 = $seps[0]; while ($pt2 = next($seps)) { $this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]); $pt1 = $pt2; } } } /** * Adjust inserts/deletes of identical lines to join changes * as much as possible. * * We do something when a run of changed lines include a * line at one end and has an excluded, identical line at the other. * We are free to choose which identical line is included. * `compareseq' usually chooses the one at the beginning, * but usually it is cleaner to consider the following identical line * to be the "change". * * This is extracted verbatim from analyze.c (GNU diffutils-2.7). */ function _shift_boundaries ($lines, &$changed, $other_changed) { $i = 0; $j = 0; USE_ASSERTS && assert('count($lines) == count($changed)'); $len = count($lines); $other_len = count($other_changed); while (1) { /* * Scan forwards to find beginning of another run of changes. * Also keep track of the corresponding point in the other file. * * Throughout this code, $i and $j are adjusted together so that * the first $i elements of $changed and the first $j elements * of $other_changed both contain the same number of zeros * (unchanged lines). * Furthermore, $j is always kept so that $j == $other_len or * $other_changed[$j] == false. */ while ($j < $other_len && $other_changed[$j]) $j++; while ($i < $len && ! $changed[$i]) { USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); $i++; $j++; while ($j < $other_len && $other_changed[$j]) $j++; } if ($i == $len) break; $start = $i; // Find the end of this run of changes. while (++$i < $len && $changed[$i]) continue; do { /* * Record the length of this run of changes, so that * we can later determine whether the run has grown. */ $runlength = $i - $start; /* * Move the changed region back, so long as the * previous unchanged line matches the last changed one. * This merges with previous changed regions. */ while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) { $changed[--$start] = 1; $changed[--$i] = false; while ($start > 0 && $changed[$start - 1]) $start--; USE_ASSERTS && assert('$j > 0'); while ($other_changed[--$j]) continue; USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); } /* * Set CORRESPONDING to the end of the changed run, at the last * point where it corresponds to a changed run in the other file. * CORRESPONDING == LEN means no such point has been found. */ $corresponding = $j < $other_len ? $i : $len; /* * Move the changed region forward, so long as the * first changed line matches the following unchanged one. * This merges with following changed regions. * Do this second, so that if there are no merges, * the changed region is moved forward as far as possible. */ while ($i < $len && $lines[$start] == $lines[$i]) { $changed[$start++] = false; $changed[$i++] = 1; while ($i < $len && $changed[$i]) $i++; USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); $j++; if ($j < $other_len && $other_changed[$j]) { $corresponding = $i; while ($j < $other_len && $other_changed[$j]) $j++; } } } while ($runlength != $i - $start); /* * If possible, move the fully-merged run of changes * back to a corresponding run in the other file. */ while ($corresponding < $i) { $changed[--$start] = 1; $changed[--$i] = 0; USE_ASSERTS && assert('$j > 0'); while ($other_changed[--$j]) continue; USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); } } } } /** * Class representing a 'diff' between two sequences of strings. */ class Diff { var $edits; /** * Constructor. * Computes diff between sequences of strings. * * @param $from_lines array An array of strings. * (Typically these are lines from a file.) * @param $to_lines array An array of strings. */ function Diff($from_lines, $to_lines) { $eng = new _DiffEngine; $this->edits = $eng->diff($from_lines, $to_lines); //$this->_check($from_lines, $to_lines); } /** * Compute reversed Diff. * * SYNOPSIS: * * $diff = new Diff($lines1, $lines2); * $rev = $diff->reverse(); * @return object A Diff object representing the inverse of the * original diff. */ function reverse () { $rev = $this; $rev->edits = array(); foreach ($this->edits as $edit) { $rev->edits[] = $edit->reverse(); } return $rev; } /** * Check for empty diff. * * @return bool True iff two sequences were identical. */ function isEmpty () { foreach ($this->edits as $edit) { if ($edit->type != 'copy') return false; } return true; } /** * Compute the length of the Longest Common Subsequence (LCS). * * This is mostly for diagnostic purposed. * * @return int The length of the LCS. */ function lcs () { $lcs = 0; foreach ($this->edits as $edit) { if ($edit->type == 'copy') $lcs += count($edit->orig); } return $lcs; } /** * Get the original set of lines. * * This reconstructs the $from_lines parameter passed to the * constructor. * * @return array The original sequence of strings. */ function orig() { $lines = array(); foreach ($this->edits as $edit) { if ($edit->orig) array_splice($lines, count($lines), 0, $edit->orig); } return $lines; } /** * Get the closing set of lines. * * This reconstructs the $to_lines parameter passed to the * constructor. * * @return array The sequence of strings. */ function closing() { $lines = array(); foreach ($this->edits as $edit) { if ($edit->closing) array_splice($lines, count($lines), 0, $edit->closing); } return $lines; } /** * Check a Diff for validity. * * This is here only for debugging purposes. */ function _check ($from_lines, $to_lines) { if (serialize($from_lines) != serialize($this->orig())) trigger_error("Reconstructed original doesn't match", E_USER_ERROR); if (serialize($to_lines) != serialize($this->closing())) trigger_error("Reconstructed closing doesn't match", E_USER_ERROR); $rev = $this->reverse(); if (serialize($to_lines) != serialize($rev->orig())) trigger_error("Reversed original doesn't match", E_USER_ERROR); if (serialize($from_lines) != serialize($rev->closing())) trigger_error("Reversed closing doesn't match", E_USER_ERROR); $prevtype = 'none'; foreach ($this->edits as $edit) { if ( $prevtype == $edit->type ) trigger_error("Edit sequence is non-optimal", E_USER_ERROR); $prevtype = $edit->type; } $lcs = $this->lcs(); trigger_error("Diff okay: LCS = $lcs", E_USER_NOTICE); } } /** * FIXME: bad name. */ class MappedDiff extends Diff { /** * Constructor. * * Computes diff between sequences of strings. * * This can be used to compute things like * case-insensitve diffs, or diffs which ignore * changes in white-space. * * @param $from_lines array An array of strings. * (Typically these are lines from a file.) * * @param $to_lines array An array of strings. * * @param $mapped_from_lines array This array should * have the same size number of elements as $from_lines. * The elements in $mapped_from_lines and * $mapped_to_lines are what is actually compared * when computing the diff. * * @param $mapped_to_lines array This array should * have the same number of elements as $to_lines. */ function MappedDiff($from_lines, $to_lines, $mapped_from_lines, $mapped_to_lines) { assert(count($from_lines) == count($mapped_from_lines)); assert(count($to_lines) == count($mapped_to_lines)); $this->Diff($mapped_from_lines, $mapped_to_lines); $xi = $yi = 0; $ecnt = count($this->edits); for ($i = 0; $i < $ecnt; $i++) { $orig = &$this->edits[$i]->orig; if (is_array($orig)) { $orig = array_slice($from_lines, $xi, count($orig)); $xi += count($orig); } $closing = &$this->edits[$i]->closing; if (is_array($closing)) { $closing = array_slice($to_lines, $yi, count($closing)); $yi += count($closing); } } } } /** * A class to format Diffs * * This class formats the diff in classic diff format. * It is intended that this class be customized via inheritance, * to obtain fancier outputs. */ class DiffFormatter { /** * Number of leading context "lines" to preserve. * * This should be left at zero for this class, but subclasses * may want to set this to other values. */ var $leading_context_lines = 0; /** * Number of trailing context "lines" to preserve. * * This should be left at zero for this class, but subclasses * may want to set this to other values. */ var $trailing_context_lines = 0; /** * Format a diff. * * @param $diff object A Diff object. * @return string The formatted output. */ function format($diff) { $xi = $yi = 1; $block = false; $context = array(); $nlead = $this->leading_context_lines; $ntrail = $this->trailing_context_lines; $this->_start_diff(); foreach ($diff->edits as $edit) { if ($edit->type == 'copy') { if (is_array($block)) { if (count($edit->orig) <= $nlead + $ntrail) { $block[] = $edit; } else{ if ($ntrail) { $context = array_slice($edit->orig, 0, $ntrail); $block[] = new _DiffOp_Copy($context); } $this->_block($x0, $ntrail + $xi - $x0, $y0, $ntrail + $yi - $y0, $block); $block = false; } } $context = $edit->orig; } else { if (! is_array($block)) { $context = array_slice($context, count($context) - $nlead); $x0 = $xi - count($context); $y0 = $yi - count($context); $block = array(); if ($context) $block[] = new _DiffOp_Copy($context); } $block[] = $edit; } if ($edit->orig) $xi += count($edit->orig); if ($edit->closing) $yi += count($edit->closing); } if (is_array($block)) $this->_block($x0, $xi - $x0, $y0, $yi - $y0, $block); return $this->_end_diff(); } function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) { $this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen)); foreach ($edits as $edit) { if ($edit->type == 'copy') $this->_context($edit->orig); elseif ($edit->type == 'add') $this->_added($edit->closing); elseif ($edit->type == 'delete') $this->_deleted($edit->orig); elseif ($edit->type == 'change') $this->_changed($edit->orig, $edit->closing); else trigger_error("Unknown edit type", E_USER_ERROR); } $this->_end_block(); } function _start_diff() { ob_start(); } function _end_diff() { $val = ob_get_contents(); ob_end_clean(); return $val; } function _block_header($xbeg, $xlen, $ybeg, $ylen) { if ($xlen > 1) $xbeg .= "," . ($xbeg + $xlen - 1); if ($ylen > 1) $ybeg .= "," . ($ybeg + $ylen - 1); return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg; } function _start_block($header) { echo $header; } function _end_block() { } function _lines($lines, $prefix = ' ') { foreach ($lines as $line) echo "$prefix $line\n"; } function _context($lines) { $this->_lines($lines); } function _added($lines) { $this->_lines($lines, ">"); } function _deleted($lines) { $this->_lines($lines, "<"); } function _changed($orig, $closing) { $this->_deleted($orig); echo "---\n"; $this->_added($closing); } } /** * Additions by Axel Boldt follow, partly taken from diff.php, phpwiki-1.3.3 * */ define('NBSP', "\xC2\xA0"); // utf-8 non-breaking space. class _HWLDF_WordAccumulator { function _HWLDF_WordAccumulator () { $this->_lines = array(); $this->_line = ''; $this->_group = ''; $this->_tag = ''; } function _flushGroup ($new_tag) { if ($this->_group !== '') { if ($this->_tag == 'mark') $this->_line .= ''.$this->_group.''; else $this->_line .= $this->_group; } $this->_group = ''; $this->_tag = $new_tag; } function _flushLine ($new_tag) { $this->_flushGroup($new_tag); if ($this->_line != '') $this->_lines[] = $this->_line; $this->_line = ''; } function addWords ($words, $tag = '') { if ($tag != $this->_tag) $this->_flushGroup($tag); foreach ($words as $word) { // new-line should only come as first char of word. if ($word == '') continue; if ($word[0] == "\n") { $this->_group .= NBSP; $this->_flushLine($tag); $word = substr($word, 1); } assert(!strstr($word, "\n")); $this->_group .= $word; } } function getLines() { $this->_flushLine('~done'); return $this->_lines; } } class WordLevelDiff extends MappedDiff { function WordLevelDiff ($orig_lines, $closing_lines) { list ($orig_words, $orig_stripped) = $this->_split($orig_lines); list ($closing_words, $closing_stripped) = $this->_split($closing_lines); $this->MappedDiff($orig_words, $closing_words, $orig_stripped, $closing_stripped); } function _split($lines) { if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs', implode("\n", $lines), $m)) { return array(array(''), array('')); } return array($m[0], $m[1]); } function orig () { $orig = new _HWLDF_WordAccumulator; foreach ($this->edits as $edit) { if ($edit->type == 'copy') $orig->addWords($edit->orig); elseif ($edit->orig) $orig->addWords($edit->orig, 'mark'); } return $orig->getLines(); } function closing () { $closing = new _HWLDF_WordAccumulator; foreach ($this->edits as $edit) { if ($edit->type == 'copy') $closing->addWords($edit->closing); elseif ($edit->closing) $closing->addWords($edit->closing, 'mark'); } return $closing->getLines(); } } /** * "Unified" diff formatter. * * This class formats the diff in classic "unified diff" format. */ class UnifiedDiffFormatter extends DiffFormatter { function UnifiedDiffFormatter($context_lines = 4) { $this->leading_context_lines = $context_lines; $this->trailing_context_lines = $context_lines; } function _block_header($xbeg, $xlen, $ybeg, $ylen) { if ($xlen != 1) $xbeg .= "," . $xlen; if ($ylen != 1) $ybeg .= "," . $ylen; return "@@ -$xbeg +$ybeg @@\n"; } function _added($lines) { $this->_lines($lines, "+"); } function _deleted($lines) { $this->_lines($lines, "-"); } function _changed($orig, $final) { $this->_deleted($orig); $this->_added($final); } } /** * Wikipedia Table style diff formatter. * */ class TableDiffFormatter extends DiffFormatter { function TableDiffFormatter() { $this->leading_context_lines = 2; $this->trailing_context_lines = 2; } function format($diff) { // Preserve whitespaces by converting some to non-breaking spaces. // Do not convert all of them to allow word-wrap. $val = parent::format($diff); $val = str_replace(' ','  ', $val); $val = preg_replace('/ (?=<)|(?<=[ >]) /', ' ', $val); return $val; } function _pre($text){ $text = htmlspecialchars($text); return $text; } function _block_header( $xbeg, $xlen, $ybeg, $ylen ) { global $lang; $l1 = $lang['line'].' '.$xbeg; $l2 = $lang['line'].' '.$ybeg; $r = ''.$l1.":\n" . ''.$l2.":\n"; return $r; } function _start_block( $header ) { print( $header ); } function _end_block() { } function _lines( $lines, $prefix=' ', $color="white" ) { } function addedLine( $line ) { return '+' . $line.''; } function deletedLine( $line ) { return '-' . $line.''; } function emptyLine() { return ' '; } function contextLine( $line ) { return ' '.$line.''; } function _added($lines) { foreach ($lines as $line) { print( '' . $this->emptyLine() . $this->addedLine( $line ) . "\n" ); } } function _deleted($lines) { foreach ($lines as $line) { print( '' . $this->deletedLine( $line ) . $this->emptyLine() . "\n" ); } } function _context( $lines ) { foreach ($lines as $line) { print( '' . $this->contextLine( $line ) . $this->contextLine( $line ) . "\n" ); } } function _changed( $orig, $closing ) { $diff = new WordLevelDiff( $orig, $closing ); $del = $diff->orig(); $add = $diff->closing(); while ( $line = array_shift( $del ) ) { $aline = array_shift( $add ); print( '' . $this->deletedLine( $line ) . $this->addedLine( $aline ) . "\n" ); } $this->_added( $add ); # If any leftovers } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/inc/EmailAddressValidator.php000066400000000000000000000126661134327003500236210ustar00rootroot00000000000000 * @link http://code.google.com/p/php-email-address-validation/ * @license http://www.opensource.org/licenses/bsd-license.php */ class EmailAddressValidator { /** * Check email address validity * @param strEmailAddress Email address to be checked * @return True if email is valid, false if not */ function check_email_address($strEmailAddress) { // Control characters are not allowed if (preg_match('/[\x00-\x1F\x7F-\xFF]/', $strEmailAddress)) { return false; } // Split it into sections using last instance of "@" $intAtSymbol = strrpos($strEmailAddress, '@'); if ($intAtSymbol === false) { // No "@" symbol in email. return false; } $arrEmailAddress[0] = substr($strEmailAddress, 0, $intAtSymbol); $arrEmailAddress[1] = substr($strEmailAddress, $intAtSymbol + 1); // Count the "@" symbols. Only one is allowed, except where // contained in quote marks in the local part. Quickest way to // check this is to remove anything in quotes. $arrTempAddress[0] = preg_replace('/"[^"]+"/' ,'' ,$arrEmailAddress[0]); $arrTempAddress[1] = $arrEmailAddress[1]; $strTempAddress = $arrTempAddress[0] . $arrTempAddress[1]; // Then check - should be no "@" symbols. if (strrpos($strTempAddress, '@') !== false) { // "@" symbol found return false; } // Check local portion if (!$this->check_local_portion($arrEmailAddress[0])) { return false; } // Check domain portion if (!$this->check_domain_portion($arrEmailAddress[1])) { return false; } // If we're still here, all checks above passed. Email is valid. return true; } /** * Checks email section before "@" symbol for validity * @param strLocalPortion Text to be checked * @return True if local portion is valid, false if not */ function check_local_portion($strLocalPortion) { // Local portion can only be from 1 to 64 characters, inclusive. // Please note that servers are encouraged to accept longer local // parts than 64 characters. if (!$this->check_text_length($strLocalPortion, 1, 64)) { return false; } // Local portion must be: // 1) a dot-atom (strings separated by periods) // 2) a quoted string // 3) an obsolete format string (combination of the above) $arrLocalPortion = explode('.', $strLocalPortion); for ($i = 0, $max = sizeof($arrLocalPortion); $i < $max; $i++) { if (!preg_match('.^(' . '([A-Za-z0-9!#$%&\'*+/=?^_`{|}~-]' . '[A-Za-z0-9!#$%&\'*+/=?^_`{|}~-]{0,63})' .'|' . '("[^\\\"]{0,62}")' .')$.' ,$arrLocalPortion[$i])) { return false; } } return true; } /** * Checks email section after "@" symbol for validity * @param strDomainPortion Text to be checked * @return True if domain portion is valid, false if not */ function check_domain_portion($strDomainPortion) { // Total domain can only be from 1 to 255 characters, inclusive if (!$this->check_text_length($strDomainPortion, 1, 255)) { return false; } // Check if domain is IP, possibly enclosed in square brackets. if (preg_match('/^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])' .'(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}$/' ,$strDomainPortion) || preg_match('/^\[(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])' .'(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}\]$/' ,$strDomainPortion)) { return true; } else { $arrDomainPortion = explode('.', $strDomainPortion); if (sizeof($arrDomainPortion) < 2) { return false; // Not enough parts to domain } for ($i = 0, $max = sizeof($arrDomainPortion); $i < $max; $i++) { // Each portion must be between 1 and 63 characters, inclusive if (!$this->check_text_length($arrDomainPortion[$i], 1, 63)) { return false; } if (!preg_match('/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|' .'([A-Za-z0-9]+))$/', $arrDomainPortion[$i])) { return false; } } } return true; } /** * Check given text length is between defined bounds * @param strText Text to be checked * @param intMinimum Minimum acceptable length * @param intMaximum Maximum acceptable length * @return True if string is within bounds (inclusive), false if not */ function check_text_length($strText, $intMinimum, $intMaximum) { // Minimum and maximum are both inclusive $intTextLength = strlen($strText); if (($intTextLength < $intMinimum) || ($intTextLength > $intMaximum)) { return false; } else { return true; } } } splitbrain-dokuwiki-d6c824b/inc/FeedParser.php000066400000000000000000000032141134327003500214230ustar00rootroot00000000000000 */ if(!defined('DOKU_INC')) die('meh.'); require_once(DOKU_INC.'inc/HTTPClient.php'); require_once(DOKU_INC.'inc/SimplePie.php'); /** * We override some methods of the original SimplePie class here */ class FeedParser extends SimplePie { /** * Constructor. Set some defaults */ function FeedParser(){ $this->SimplePie(); $this->enable_cache(false); $this->set_file_class('FeedParser_File'); } /** * Backward compatibility for older plugins */ function feed_url($url){ $this->set_feed_url($url); } } /** * Fetch an URL using our own HTTPClient * * Replaces SimplePie's own class */ class FeedParser_File extends SimplePie_File { var $http; var $useragent; var $success = true; var $headers = array(); var $body; var $error; /** * Inititializes the HTTPClient * * We ignore all given parameters - they are set in DokuHTTPClient */ function FeedParser_File($url, $timeout=10, $redirects=5, $headers=null, $useragent=null, $force_fsockopen=false) { $this->http = new DokuHTTPClient(); $this->success = $this->http->sendRequest($url); $this->headers = $this->http->resp_headers; $this->body = $this->http->resp_body; $this->error = $this->http->error; return $this->success; } function headers(){ return $this->headers; } function body(){ return $this->body; } function close(){ return true; } } splitbrain-dokuwiki-d6c824b/inc/HTTPClient.php000066400000000000000000000466621134327003500213370ustar00rootroot00000000000000 */ define('HTTP_NL',"\r\n"); /** * Adds DokuWiki specific configs to the HTTP client * * @author Andreas Goetz */ class DokuHTTPClient extends HTTPClient { /** * Constructor. * * @author Andreas Gohr */ function DokuHTTPClient(){ global $conf; // call parent constructor $this->HTTPClient(); // set some values from the config $this->proxy_host = $conf['proxy']['host']; $this->proxy_port = $conf['proxy']['port']; $this->proxy_user = $conf['proxy']['user']; $this->proxy_pass = conf_decodeString($conf['proxy']['pass']); $this->proxy_ssl = $conf['proxy']['ssl']; } /** * Wraps an event around the parent function * * @triggers HTTPCLIENT_REQUEST_SEND * @author Andreas Gohr */ function sendRequest($url,$data='',$method='GET'){ $httpdata = array('url' => $url, 'data' => $data, 'method' => $method); $evt = new Doku_Event('HTTPCLIENT_REQUEST_SEND',$httpdata); if($evt->advise_before()){ $url = $httpdata['url']; $data = $httpdata['data']; $method = $httpdata['method']; } $evt->advise_after(); unset($evt); return parent::sendRequest($url,$data,$method); } } /** * This class implements a basic HTTP client * * It supports POST and GET, Proxy usage, basic authentication, * handles cookies and referers. It is based upon the httpclient * function from the VideoDB project. * * @link http://www.splitbrain.org/go/videodb * @author Andreas Goetz * @author Andreas Gohr */ class HTTPClient { //set these if you like var $agent; // User agent var $http; // HTTP version defaults to 1.0 var $timeout; // read timeout (seconds) var $cookies; var $referer; var $max_redirect; var $max_bodysize; var $max_bodysize_abort = true; // if set, abort if the response body is bigger than max_bodysize var $header_regexp; // if set this RE must match against the headers, else abort var $headers; var $debug; var $start = 0; // for timings // don't set these, read on error var $error; var $redirect_count; // read these after a successful request var $resp_status; var $resp_body; var $resp_headers; // set these to do basic authentication var $user; var $pass; // set these if you need to use a proxy var $proxy_host; var $proxy_port; var $proxy_user; var $proxy_pass; var $proxy_ssl; //boolean set to true if your proxy needs SSL // what we use as boundary on multipart/form-data posts var $boundary = '---DokuWikiHTTPClient--4523452351'; /** * Constructor. * * @author Andreas Gohr */ function HTTPClient(){ $this->agent = 'Mozilla/4.0 (compatible; DokuWiki HTTP Client; '.PHP_OS.')'; $this->timeout = 15; $this->cookies = array(); $this->referer = ''; $this->max_redirect = 3; $this->redirect_count = 0; $this->status = 0; $this->headers = array(); $this->http = '1.0'; $this->debug = false; $this->max_bodysize = 0; $this->header_regexp= ''; if(extension_loaded('zlib')) $this->headers['Accept-encoding'] = 'gzip'; $this->headers['Accept'] = 'text/xml,application/xml,application/xhtml+xml,'. 'text/html,text/plain,image/png,image/jpeg,image/gif,*/*'; $this->headers['Accept-Language'] = 'en-us'; } /** * Simple function to do a GET request * * Returns the wanted page or false on an error; * * @param string $url The URL to fetch * @param bool $sloppy304 Return body on 304 not modified * @author Andreas Gohr */ function get($url,$sloppy304=false){ if(!$this->sendRequest($url)) return false; if($this->status == 304 && $sloppy304) return $this->resp_body; if($this->status < 200 || $this->status > 206) return false; return $this->resp_body; } /** * Simple function to do a POST request * * Returns the resulting page or false on an error; * * @author Andreas Gohr */ function post($url,$data){ if(!$this->sendRequest($url,$data,'POST')) return false; if($this->status < 200 || $this->status > 206) return false; return $this->resp_body; } /** * Send an HTTP request * * This method handles the whole HTTP communication. It respects set proxy settings, * builds the request headers, follows redirects and parses the response. * * Post data should be passed as associative array. When passed as string it will be * sent as is. You will need to setup your own Content-Type header then. * * @param string $url - the complete URL * @param mixed $data - the post data either as array or raw data * @param string $method - HTTP Method usually GET or POST. * @return bool - true on success * @author Andreas Goetz * @author Andreas Gohr */ function sendRequest($url,$data='',$method='GET'){ $this->start = $this->_time(); $this->error = ''; $this->status = 0; // don't accept gzip if truncated bodies might occur if($this->max_bodysize && !$this->max_bodysize_abort && $this->headers['Accept-encoding'] == 'gzip'){ unset($this->headers['Accept-encoding']); } // parse URL into bits $uri = parse_url($url); $server = $uri['host']; $path = $uri['path']; if(empty($path)) $path = '/'; if(!empty($uri['query'])) $path .= '?'.$uri['query']; $port = $uri['port']; if(isset($uri['user'])) $this->user = $uri['user']; if(isset($uri['pass'])) $this->pass = $uri['pass']; // proxy setup if($this->proxy_host){ $request_url = $url; $server = $this->proxy_host; $port = $this->proxy_port; if (empty($port)) $port = 8080; }else{ $request_url = $path; $server = $server; if (empty($port)) $port = ($uri['scheme'] == 'https') ? 443 : 80; } // add SSL stream prefix if needed - needs SSL support in PHP if($port == 443 || $this->proxy_ssl) $server = 'ssl://'.$server; // prepare headers $headers = $this->headers; $headers['Host'] = $uri['host']; $headers['User-Agent'] = $this->agent; $headers['Referer'] = $this->referer; $headers['Connection'] = 'Close'; if($method == 'POST'){ if(is_array($data)){ if($headers['Content-Type'] == 'multipart/form-data'){ $headers['Content-Type'] = 'multipart/form-data; boundary='.$this->boundary; $data = $this->_postMultipartEncode($data); }else{ $headers['Content-Type'] = 'application/x-www-form-urlencoded'; $data = $this->_postEncode($data); } } $headers['Content-Length'] = strlen($data); $rmethod = 'POST'; }elseif($method == 'GET'){ $data = ''; //no data allowed on GET requests } if($this->user) { $headers['Authorization'] = 'Basic '.base64_encode($this->user.':'.$this->pass); } if($this->proxy_user) { $headers['Proxy-Authorization'] = 'Basic '.base64_encode($this->proxy_user.':'.$this->proxy_pass); } // stop time $start = time(); // open socket $socket = @fsockopen($server,$port,$errno, $errstr, $this->timeout); if (!$socket){ $resp->status = '-100'; $this->error = "Could not connect to $server:$port\n$errstr ($errno)"; return false; } //set non blocking stream_set_blocking($socket,0); // build request $request = "$method $request_url HTTP/".$this->http.HTTP_NL; $request .= $this->_buildHeaders($headers); $request .= $this->_getCookies(); $request .= HTTP_NL; $request .= $data; $this->_debug('request',$request); // send request $towrite = strlen($request); $written = 0; while($written < $towrite){ $ret = fwrite($socket, substr($request,$written)); if($ret === false){ $this->status = -100; $this->error = 'Failed writing to socket'; return false; } $written += $ret; } // read headers from socket $r_headers = ''; do{ if(time()-$start > $this->timeout){ $this->status = -100; $this->error = sprintf('Timeout while reading headers (%.3fs)',$this->_time() - $this->start); return false; } if(feof($socket)){ $this->error = 'Premature End of File (socket)'; return false; } $r_headers .= fgets($socket,1024); }while(!preg_match('/\r?\n\r?\n$/',$r_headers)); $this->_debug('response headers',$r_headers); // check if expected body size exceeds allowance if($this->max_bodysize && preg_match('/\r?\nContent-Length:\s*(\d+)\r?\n/i',$r_headers,$match)){ if($match[1] > $this->max_bodysize){ $this->error = 'Reported content length exceeds allowed response size'; if ($this->max_bodysize_abort) return false; } } // get Status if (!preg_match('/^HTTP\/(\d\.\d)\s*(\d+).*?\n/', $r_headers, $m)) { $this->error = 'Server returned bad answer'; return false; } $this->status = $m[2]; // handle headers and cookies $this->resp_headers = $this->_parseHeaders($r_headers); if(isset($this->resp_headers['set-cookie'])){ foreach ((array) $this->resp_headers['set-cookie'] as $cookie){ list($cookie) = explode(';',$cookie,2); list($key,$val) = explode('=',$cookie,2); $key = trim($key); if($val == 'deleted'){ if(isset($this->cookies[$key])){ unset($this->cookies[$key]); } }elseif($key){ $this->cookies[$key] = $val; } } } $this->_debug('Object headers',$this->resp_headers); // check server status code to follow redirect if($this->status == 301 || $this->status == 302 ){ if (empty($this->resp_headers['location'])){ $this->error = 'Redirect but no Location Header found'; return false; }elseif($this->redirect_count == $this->max_redirect){ $this->error = 'Maximum number of redirects exceeded'; return false; }else{ $this->redirect_count++; $this->referer = $url; // handle non-RFC-compliant relative redirects if (!preg_match('/^http/i', $this->resp_headers['location'])){ if($this->resp_headers['location'][0] != '/'){ $this->resp_headers['location'] = $uri['scheme'].'://'.$uri['host'].':'.$uri['port']. dirname($uri['path']).'/'.$this->resp_headers['location']; }else{ $this->resp_headers['location'] = $uri['scheme'].'://'.$uri['host'].':'.$uri['port']. $this->resp_headers['location']; } } // perform redirected request, always via GET (required by RFC) return $this->sendRequest($this->resp_headers['location'],array(),'GET'); } } // check if headers are as expected if($this->header_regexp && !preg_match($this->header_regexp,$r_headers)){ $this->error = 'The received headers did not match the given regexp'; return false; } //read body (with chunked encoding if needed) $r_body = ''; if(preg_match('/transfer\-(en)?coding:\s*chunked\r\n/i',$r_headers)){ do { unset($chunk_size); do { if(feof($socket)){ $this->error = 'Premature End of File (socket)'; return false; } if(time()-$start > $this->timeout){ $this->status = -100; $this->error = sprintf('Timeout while reading chunk (%.3fs)',$this->_time() - $this->start); return false; } $byte = fread($socket,1); $chunk_size .= $byte; } while (preg_match('/[a-zA-Z0-9]/',$byte)); // read chunksize including \r $byte = fread($socket,1); // readtrailing \n $chunk_size = hexdec($chunk_size); if ($chunk_size) { $this_chunk = fread($socket,$chunk_size); $r_body .= $this_chunk; $byte = fread($socket,2); // read trailing \r\n } if($this->max_bodysize && strlen($r_body) > $this->max_bodysize){ $this->error = 'Allowed response size exceeded'; if ($this->max_bodysize_abort) return false; else break; } } while ($chunk_size); }else{ // read entire socket while (!feof($socket)) { if(time()-$start > $this->timeout){ $this->status = -100; $this->error = sprintf('Timeout while reading response (%.3fs)',$this->_time() - $this->start); return false; } $r_body .= fread($socket,4096); $r_size = strlen($r_body); if($this->max_bodysize && $r_size > $this->max_bodysize){ $this->error = 'Allowed response size exceeded'; if ($this->max_bodysize_abort) return false; else break; } if(isset($this->resp_headers['content-length']) && !isset($this->resp_headers['transfer-encoding']) && $this->resp_headers['content-length'] == $r_size){ // we read the content-length, finish here break; } } } // close socket $status = socket_get_status($socket); fclose($socket); // decode gzip if needed if(isset($this->resp_headers['content-encoding']) && $this->resp_headers['content-encoding'] == 'gzip' && strlen($r_body) > 10 && substr($r_body,0,3)=="\x1f\x8b\x08"){ $this->resp_body = @gzinflate(substr($r_body, 10)); }else{ $this->resp_body = $r_body; } $this->_debug('response body',$this->resp_body); $this->redirect_count = 0; return true; } /** * print debug info * * @author Andreas Gohr */ function _debug($info,$var=null){ if(!$this->debug) return; print ''.$info.' '.($this->_time() - $this->start).'s
'; if(!is_null($var)){ ob_start(); print_r($var); $content = htmlspecialchars(ob_get_contents()); ob_end_clean(); print '
'.$content.'
'; } } /** * Return current timestamp in microsecond resolution */ function _time(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } /** * convert given header string to Header array * * All Keys are lowercased. * * @author Andreas Gohr */ function _parseHeaders($string){ $headers = array(); $lines = explode("\n",$string); foreach($lines as $line){ list($key,$val) = explode(':',$line,2); $key = strtolower(trim($key)); $val = trim($val); if(empty($val)) continue; if(isset($headers[$key])){ if(is_array($headers[$key])){ $headers[$key][] = $val; }else{ $headers[$key] = array($headers[$key],$val); } }else{ $headers[$key] = $val; } } return $headers; } /** * convert given header array to header string * * @author Andreas Gohr */ function _buildHeaders($headers){ $string = ''; foreach($headers as $key => $value){ if(empty($value)) continue; $string .= $key.': '.$value.HTTP_NL; } return $string; } /** * get cookies as http header string * * @author Andreas Goetz */ function _getCookies(){ $headers = ''; foreach ($this->cookies as $key => $val){ $headers .= "$key=$val; "; } $headers = substr($headers, 0, -2); if ($headers !== '') $headers = "Cookie: $headers".HTTP_NL; return $headers; } /** * Encode data for posting * * @author Andreas Gohr */ function _postEncode($data){ foreach($data as $key => $val){ if($url) $url .= '&'; $url .= urlencode($key).'='.urlencode($val); } return $url; } /** * Encode data for posting using multipart encoding * * @fixme use of urlencode might be wrong here * @author Andreas Gohr */ function _postMultipartEncode($data){ $boundary = '--'.$this->boundary; $out = ''; foreach($data as $key => $val){ $out .= $boundary.HTTP_NL; if(!is_array($val)){ $out .= 'Content-Disposition: form-data; name="'.urlencode($key).'"'.HTTP_NL; $out .= HTTP_NL; // end of headers $out .= $val; $out .= HTTP_NL; }else{ $out .= 'Content-Disposition: form-data; name="'.urlencode($key).'"'; if($val['filename']) $out .= '; filename="'.urlencode($val['filename']).'"'; $out .= HTTP_NL; if($val['mimetype']) $out .= 'Content-Type: '.$val['mimetype'].HTTP_NL; $out .= HTTP_NL; // end of headers $out .= $val['body']; $out .= HTTP_NL; } } $out .= "$boundary--".HTTP_NL; return $out; } } //Setup VIM: ex: et ts=4 enc=utf-8 : splitbrain-dokuwiki-d6c824b/inc/IXR_Library.php000066400000000000000000000663551134327003500215500ustar00rootroot00000000000000 */ class IXR_Value { var $data; var $type; function IXR_Value ($data, $type = false) { $this->data = $data; if (!$type) { $type = $this->calculateType(); } $this->type = $type; if ($type == 'struct') { /* Turn all the values in the array in to new IXR_Value objects */ foreach ($this->data as $key => $value) { $this->data[$key] = new IXR_Value($value); } } if ($type == 'array') { for ($i = 0, $j = count($this->data); $i < $j; $i++) { $this->data[$i] = new IXR_Value($this->data[$i]); } } } function calculateType() { if ($this->data === true || $this->data === false) { return 'boolean'; } if (is_integer($this->data)) { return 'int'; } if (is_double($this->data)) { return 'double'; } // Deal with IXR object types base64 and date if (is_object($this->data) && is_a($this->data, 'IXR_Date')) { return 'date'; } if (is_object($this->data) && is_a($this->data, 'IXR_Base64')) { return 'base64'; } // If it is a normal PHP object convert it in to a struct if (is_object($this->data)) { $this->data = get_object_vars($this->data); return 'struct'; } if (!is_array($this->data)) { return 'string'; } /* We have an array - is it an array or a struct ? */ if ($this->isStruct($this->data)) { return 'struct'; } else { return 'array'; } } function getXml() { /* Return XML for this value */ switch ($this->type) { case 'boolean': return ''.(($this->data) ? '1' : '0').''; break; case 'int': return ''.$this->data.''; break; case 'double': return ''.$this->data.''; break; case 'string': return ''.htmlspecialchars($this->data).''; break; case 'array': $return = ''."\n"; foreach ($this->data as $item) { $return .= ' '.$item->getXml()."\n"; } $return .= ''; return $return; break; case 'struct': $return = ''."\n"; foreach ($this->data as $name => $value) { $return .= " $name"; $return .= $value->getXml()."\n"; } $return .= ''; return $return; break; case 'date': case 'base64': return $this->data->getXml(); break; } return false; } function isStruct($array) { /* Nasty function to check if an array is a struct or not */ $expected = 0; foreach ($array as $key => $value) { if ((string)$key != (string)$expected) { return true; } $expected++; } return false; } } class IXR_Message { var $message; var $messageType; // methodCall / methodResponse / fault var $faultCode; var $faultString; var $methodName; var $params; // Current variable stacks var $_arraystructs = array(); // The stack used to keep track of the current array/struct var $_arraystructstypes = array(); // Stack keeping track of if things are structs or array var $_currentStructName = array(); // A stack as well var $_param; var $_value; var $_currentTag; var $_currentTagContents; // The XML parser var $_parser; function IXR_Message ($message) { $this->message = $message; } function parse() { // first remove the XML declaration $this->message = preg_replace('/<\?xml(.*)?\?'.'>/', '', $this->message); // workaround for a bug in PHP/libxml2, see http://bugs.php.net/bug.php?id=45996 $this->message = str_replace('<', '<', $this->message); $this->message = str_replace('>', '>', $this->message); $this->message = str_replace('&', '&', $this->message); $this->message = str_replace(''', ''', $this->message); $this->message = str_replace('"', '"', $this->message); if (trim($this->message) == '') { return false; } $this->_parser = xml_parser_create(); // Set XML parser to take the case of tags in to account xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false); // Set XML parser callback functions xml_set_object($this->_parser, $this); xml_set_element_handler($this->_parser, 'tag_open', 'tag_close'); xml_set_character_data_handler($this->_parser, 'cdata'); if (!xml_parse($this->_parser, $this->message)) { /* die(sprintf('XML error: %s at line %d', xml_error_string(xml_get_error_code($this->_parser)), xml_get_current_line_number($this->_parser))); */ return false; } xml_parser_free($this->_parser); // Grab the error messages, if any if ($this->messageType == 'fault') { $this->faultCode = $this->params[0]['faultCode']; $this->faultString = $this->params[0]['faultString']; } return true; } function tag_open($parser, $tag, $attr) { $this->currentTag = $tag; $this->_currentTagContents = ''; switch($tag) { case 'methodCall': case 'methodResponse': case 'fault': $this->messageType = $tag; break; /* Deal with stacks of arrays and structs */ case 'data': // data is to all intents and puposes more interesting than array $this->_arraystructstypes[] = 'array'; $this->_arraystructs[] = array(); break; case 'struct': $this->_arraystructstypes[] = 'struct'; $this->_arraystructs[] = array(); break; } } function cdata($parser, $cdata) { $this->_currentTagContents .= $cdata; } function tag_close($parser, $tag) { $valueFlag = false; switch($tag) { case 'int': case 'i4': $value = (int)trim($this->_currentTagContents); $this->_currentTagContents = ''; $valueFlag = true; break; case 'double': $value = (double)trim($this->_currentTagContents); $this->_currentTagContents = ''; $valueFlag = true; break; case 'string': $value = (string)$this->_currentTagContents; $this->_currentTagContents = ''; $valueFlag = true; break; case 'dateTime.iso8601': $value = new IXR_Date(trim($this->_currentTagContents)); // $value = $iso->getTimestamp(); $this->_currentTagContents = ''; $valueFlag = true; break; case 'value': // "If no type is indicated, the type is string." if (trim($this->_currentTagContents) != '') { $value = (string)$this->_currentTagContents; $this->_currentTagContents = ''; $valueFlag = true; } break; case 'boolean': $value = (boolean)trim($this->_currentTagContents); $this->_currentTagContents = ''; $valueFlag = true; break; case 'base64': $value = base64_decode($this->_currentTagContents); $this->_currentTagContents = ''; $valueFlag = true; break; /* Deal with stacks of arrays and structs */ case 'data': case 'struct': $value = array_pop($this->_arraystructs); array_pop($this->_arraystructstypes); $valueFlag = true; break; case 'member': array_pop($this->_currentStructName); break; case 'name': $this->_currentStructName[] = trim($this->_currentTagContents); $this->_currentTagContents = ''; break; case 'methodName': $this->methodName = trim($this->_currentTagContents); $this->_currentTagContents = ''; break; } if ($valueFlag) { /* if (!is_array($value) && !is_object($value)) { $value = trim($value); } */ if (count($this->_arraystructs) > 0) { // Add value to struct or array if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') { // Add to struct $this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = $value; } else { // Add to array $this->_arraystructs[count($this->_arraystructs)-1][] = $value; } } else { // Just add as a paramater $this->params[] = $value; } } } } class IXR_Server { var $data; var $callbacks = array(); var $message; var $capabilities; function IXR_Server($callbacks = false, $data = false) { $this->setCapabilities(); if ($callbacks) { $this->callbacks = $callbacks; } $this->setCallbacks(); $this->serve($data); } function serve($data = false) { if (!$data) { global $HTTP_RAW_POST_DATA; if (!$HTTP_RAW_POST_DATA) { die('XML-RPC server accepts POST requests only.'); } $data = $HTTP_RAW_POST_DATA; } $this->message = new IXR_Message($data); if (!$this->message->parse()) { $this->error(-32700, 'parse error. not well formed'); } if ($this->message->messageType != 'methodCall') { $this->error(-32600, 'server error. invalid xml-rpc. not conforming to spec. Request must be a methodCall'); } $result = $this->call($this->message->methodName, $this->message->params); // Is the result an error? if (is_a($result, 'IXR_Error')) { $this->error($result); } // Encode the result $r = new IXR_Value($result); $resultxml = $r->getXml(); // Create the XML $xml = << $resultxml EOD; // Send it $this->output($xml); } function call($methodname, $args) { if (!$this->hasMethod($methodname)) { return new IXR_Error(-32601, 'server error. requested method '.$methodname.' does not exist.'); } $method = $this->callbacks[$methodname]; // Perform the callback and send the response # Removed for DokuWiki to have a more consistent interface # if (count($args) == 1) { # // If only one paramater just send that instead of the whole array # $args = $args[0]; # } # Adjusted for DokuWiki to use call_user_func_array // args need to be an array $args = (array) $args; // Are we dealing with a function or a method? if (substr($method, 0, 5) == 'this:') { // It's a class method - check it exists $method = substr($method, 5); if (!method_exists($this, $method)) { return new IXR_Error(-32601, 'server error. requested class method "'.$method.'" does not exist.'); } // Call the method #$result = $this->$method($args); $result = call_user_func_array(array(&$this,$method),$args); } elseif (substr($method, 0, 7) == 'plugin:') { require_once(DOKU_INC.'inc/pluginutils.php'); list($pluginname, $callback) = explode(':', substr($method, 7), 2); if(!plugin_isdisabled($pluginname)) { $plugin = plugin_load('action', $pluginname); return call_user_func_array(array($plugin, $callback), $args); } else { return new IXR_Error(-99999, 'server error'); } } else { // It's a function - does it exist? if (!function_exists($method)) { return new IXR_Error(-32601, 'server error. requested function "'.$method.'" does not exist.'); } // Call the function #$result = $method($args); $result = call_user_func_array($method,$args); } return $result; } function error($error, $message = false) { // Accepts either an error object or an error code and message if ($message && !is_object($error)) { $error = new IXR_Error($error, $message); } $this->output($error->getXml()); } function output($xml) { $xml = ''."\n".$xml; $length = strlen($xml); header('Connection: close'); header('Content-Length: '.$length); header('Content-Type: text/xml'); header('Date: '.date('r')); echo $xml; exit; } function hasMethod($method) { return in_array($method, array_keys($this->callbacks)); } function setCapabilities() { // Initialises capabilities array $this->capabilities = array( 'xmlrpc' => array( 'specUrl' => 'http://www.xmlrpc.com/spec', 'specVersion' => 1 ), 'faults_interop' => array( 'specUrl' => 'http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php', 'specVersion' => 20010516 ), 'system.multicall' => array( 'specUrl' => 'http://www.xmlrpc.com/discuss/msgReader$1208', 'specVersion' => 1 ), ); } function getCapabilities() { return $this->capabilities; } function setCallbacks() { $this->callbacks['system.getCapabilities'] = 'this:getCapabilities'; $this->callbacks['system.listMethods'] = 'this:listMethods'; $this->callbacks['system.multicall'] = 'this:multiCall'; } function listMethods() { // Returns a list of methods - uses array_reverse to ensure user defined // methods are listed before server defined methods return array_reverse(array_keys($this->callbacks)); } function multiCall($methodcalls) { // See http://www.xmlrpc.com/discuss/msgReader$1208 $return = array(); foreach ($methodcalls as $call) { $method = $call['methodName']; $params = $call['params']; if ($method == 'system.multicall') { $result = new IXR_Error(-32600, 'Recursive calls to system.multicall are forbidden'); } else { $result = $this->call($method, $params); } if (is_a($result, 'IXR_Error')) { $return[] = array( 'faultCode' => $result->code, 'faultString' => $result->message ); } else { $return[] = array($result); } } return $return; } } class IXR_Request { var $method; var $args; var $xml; function IXR_Request($method, $args) { $this->method = $method; $this->args = $args; $this->xml = << {$this->method} EOD; foreach ($this->args as $arg) { $this->xml .= ''; $v = new IXR_Value($arg); $this->xml .= $v->getXml(); $this->xml .= "\n"; } $this->xml .= ''; } function getLength() { return strlen($this->xml); } function getXml() { return $this->xml; } } /** * Changed for DokuWiki to use DokuHTTPClient * * This should be compatible to the original class, but uses DokuWiki's * HTTP client library which will respect proxy settings * * Because the XMLRPC client is not used in DokuWiki currently this is completely * untested */ class IXR_Client extends DokuHTTPClient { var $posturl = ''; var $message = false; var $xmlerror = false; function IXR_Client($server, $path = false, $port = 80) { $this->DokuHTTPClient(); if (!$path) { // Assume we have been given a URL instead $this->posturl = $server; }else{ $this->posturl = 'http://'.$server.':'.$port.$path; } } function query() { $args = func_get_args(); $method = array_shift($args); $request = new IXR_Request($method, $args); $xml = $request->getXml(); $this->headers['Content-Type'] = 'text/xml'; if(!$this->sendRequest($this->posturl,$xml,'POST')){ $this->xmlerror = new IXR_Error(-32300, 'transport error - '.$this->error); return false; } // Check HTTP Response code if($this->status < 200 || $this->status > 206){ $this->xmlerror = new IXR_Error(-32300, 'transport error - HTTP status '.$this->status); return false; } // Now parse what we've got back $this->message = new IXR_Message($this->resp_body); if (!$this->message->parse()) { // XML error $this->xmlerror = new IXR_Error(-32700, 'parse error. not well formed'); return false; } // Is the message a fault? if ($this->message->messageType == 'fault') { $this->xmlerror = new IXR_Error($this->message->faultCode, $this->message->faultString); return false; } // Message must be OK return true; } function getResponse() { // methodResponses can only have one param - return that return $this->message->params[0]; } function isError() { return (is_object($this->xmlerror)); } function getErrorCode() { return $this->xmlerror->code; } function getErrorMessage() { return $this->xmlerror->message; } } class IXR_Error { var $code; var $message; function IXR_Error($code, $message) { $this->code = $code; $this->message = $message; } function getXml() { $xml = << faultCode {$this->code} faultString {$this->message} EOD; return $xml; } } class IXR_Date { var $year; var $month; var $day; var $hour; var $minute; var $second; function IXR_Date($time) { // $time can be a PHP timestamp or an ISO one if (is_numeric($time)) { $this->parseTimestamp($time); } else { $this->parseIso($time); } } function parseTimestamp($timestamp) { $this->year = gmdate('Y', $timestamp); $this->month = gmdate('m', $timestamp); $this->day = gmdate('d', $timestamp); $this->hour = gmdate('H', $timestamp); $this->minute = gmdate('i', $timestamp); $this->second = gmdate('s', $timestamp); } function parseIso($iso) { $this->year = substr($iso, 0, 4); $this->month = substr($iso, 5, 2); $this->day = substr($iso, 8, 2); $this->hour = substr($iso, 11, 2); $this->minute = substr($iso, 14, 2); $this->second = substr($iso, 17, 2); } function getIso() { return $this->year.'-'.$this->month.'-'.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second; } function getXml() { return ''.$this->getIso().''; } function getTimestamp() { return gmmktime($this->hour, $this->minute, $this->second, $this->month, $this->day, $this->year); } } class IXR_Base64 { var $data; function IXR_Base64($data) { $this->data = $data; } function getXml() { return ''.base64_encode($this->data).''; } } class IXR_IntrospectionServer extends IXR_Server { var $signatures; var $help; function IXR_IntrospectionServer() { $this->setCallbacks(); $this->setCapabilities(); $this->capabilities['introspection'] = array( 'specUrl' => 'http://xmlrpc.usefulinc.com/doc/reserved.html', 'specVersion' => 1 ); $this->addCallback( 'system.methodSignature', 'this:methodSignature', array('array', 'string'), 'Returns an array describing the return type and required parameters of a method' ); $this->addCallback( 'system.getCapabilities', 'this:getCapabilities', array('struct'), 'Returns a struct describing the XML-RPC specifications supported by this server' ); $this->addCallback( 'system.listMethods', 'this:listMethods', array('array'), 'Returns an array of available methods on this server' ); $this->addCallback( 'system.methodHelp', 'this:methodHelp', array('string', 'string'), 'Returns a documentation string for the specified method' ); } function addCallback($method, $callback, $args, $help) { $this->callbacks[$method] = $callback; $this->signatures[$method] = $args; $this->help[$method] = $help; } function call($methodname, $args) { // Make sure it's in an array if ($args && !is_array($args)) { $args = array($args); } // Over-rides default call method, adds signature check if (!$this->hasMethod($methodname)) { return new IXR_Error(-32601, 'server error. requested method "'.$this->message->methodName.'" not specified.'); } $method = $this->callbacks[$methodname]; $signature = $this->signatures[$methodname]; $returnType = array_shift($signature); // Check the number of arguments. Check only, if the minimum count of parameters is specified. More parameters are possible. // This is a hack to allow optional parameters... if (count($args) < count($signature)) { // print 'Num of args: '.count($args).' Num in signature: '.count($signature); return new IXR_Error(-32602, 'server error. wrong number of method parameters'); } // Check the argument types $ok = true; $argsbackup = $args; for ($i = 0, $j = count($args); $i < $j; $i++) { $arg = array_shift($args); $type = array_shift($signature); switch ($type) { case 'int': case 'i4': if (is_array($arg) || !is_int($arg)) { $ok = false; } break; case 'base64': case 'string': if (!is_string($arg)) { $ok = false; } break; case 'boolean': if ($arg !== false && $arg !== true) { $ok = false; } break; case 'float': case 'double': if (!is_float($arg)) { $ok = false; } break; case 'date': case 'dateTime.iso8601': if (!is_a($arg, 'IXR_Date')) { $ok = false; } break; } if (!$ok) { return new IXR_Error(-32602, 'server error. invalid method parameters'); } } // It passed the test - run the "real" method call return parent::call($methodname, $argsbackup); } function methodSignature($method) { if (!$this->hasMethod($method)) { return new IXR_Error(-32601, 'server error. requested method "'.$method.'" not specified.'); } // We should be returning an array of types $types = $this->signatures[$method]; $return = array(); foreach ($types as $type) { switch ($type) { case 'string': $return[] = 'string'; break; case 'int': case 'i4': $return[] = 42; break; case 'double': $return[] = 3.1415; break; case 'dateTime.iso8601': $return[] = new IXR_Date(time()); break; case 'boolean': $return[] = true; break; case 'base64': $return[] = new IXR_Base64('base64'); break; case 'array': $return[] = array('array'); break; case 'struct': $return[] = array('struct' => 'struct'); break; } } return $return; } function methodHelp($method) { return $this->help[$method]; } } class IXR_ClientMulticall extends IXR_Client { var $calls = array(); function IXR_ClientMulticall($server, $path = false, $port = 80) { parent::IXR_Client($server, $path, $port); //$this->useragent = 'The Incutio XML-RPC PHP Library (multicall client)'; } function addCall() { $args = func_get_args(); $methodName = array_shift($args); $struct = array( 'methodName' => $methodName, 'params' => $args ); $this->calls[] = $struct; } function query() { // Prepare multicall, then call the parent::query() method return parent::query('system.multicall', $this->calls); } } splitbrain-dokuwiki-d6c824b/inc/JSON.php000066400000000000000000000667741134327003500202000ustar00rootroot00000000000000 * @author Matt Knapp * @author Brett Stimmerman * @copyright 2005 Michal Migurski * @license http://www.freebsd.org/copyright/freebsd-license.html * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 */ // for DokuWiki if(!defined('DOKU_INC')) die('meh.'); require_once(DOKU_INC.'inc/utf8.php'); /** * Marker constant for JSON::decode(), used to flag stack state */ define('JSON_SLICE', 1); /** * Marker constant for JSON::decode(), used to flag stack state */ define('JSON_IN_STR', 2); /** * Marker constant for JSON::decode(), used to flag stack state */ define('JSON_IN_ARR', 4); /** * Marker constant for JSON::decode(), used to flag stack state */ define('JSON_IN_OBJ', 8); /** * Marker constant for JSON::decode(), used to flag stack state */ define('JSON_IN_CMT', 16); /** * Behavior switch for JSON::decode() */ define('JSON_LOOSE_TYPE', 10); /** * Behavior switch for JSON::decode() */ define('JSON_STRICT_TYPE', 11); /** * Converts to and from JSON format. * * @category * @package * @author Michal Migurski * @author Matt Knapp * @author Brett Stimmerman * @copyright 2005 Michal Migurski * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version * @link * @see * @since * @deprecated */ class JSON { /** * constructs a new JSON instance * * @param int $use object behavior: when encoding or decoding, * be loose or strict about object/array usage * * possible values: * JSON_STRICT_TYPE - strict typing, default * "{...}" syntax creates objects in decode. * JSON_LOOSE_TYPE - loose typing * "{...}" syntax creates associative arrays in decode. */ function JSON($use=JSON_STRICT_TYPE) { $this->use = $use; } /** * encodes an arbitrary variable into JSON format * * @param mixed $var any number, boolean, string, array, or object to be encoded. * see argument 1 to JSON() above for array-parsing behavior. * if var is a strng, note that encode() always expects it * to be in ASCII or UTF-8 format! * * @return string JSON string representation of input var * @access public */ function encode($var) { switch (gettype($var)) { case 'boolean': return $var ? 'true' : 'false'; case 'NULL': return 'null'; case 'integer': return sprintf('%d', $var); case 'double': case 'float': return sprintf('%f', $var); case 'string': // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT $ascii = ''; $strlen_var = strlen($var); /* * Iterate over every character in the string, * escaping with a slash or encoding to UTF-8 where necessary */ for ($c = 0; $c < $strlen_var; ++$c) { $ord_var_c = ord($var{$c}); switch ($ord_var_c) { case 0x08: $ascii .= '\b'; break; case 0x09: $ascii .= '\t'; break; case 0x0A: $ascii .= '\n'; break; case 0x0C: $ascii .= '\f'; break; case 0x0D: $ascii .= '\r'; break; case 0x22: case 0x2F: case 0x5C: // double quote, slash, slosh $ascii .= '\\'.$var{$c}; break; case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): // characters U-00000000 - U-0000007F (same as ASCII) $ascii .= $var{$c}; break; case (($ord_var_c & 0xE0) == 0xC0): // characters U-00000080 - U-000007FF, mask 110XXXXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c+1})); $c+=1; //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8'); $utf16 = utf8_to_utf16be($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xF0) == 0xE0): // characters U-00000800 - U-0000FFFF, mask 1110XXXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2})); $c+=2; //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8'); $utf16 = utf8_to_utf16be($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xF8) == 0xF0): // characters U-00010000 - U-001FFFFF, mask 11110XXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2}), ord($var{$c+3})); $c+=3; //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8'); $utf16 = utf8_to_utf16be($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xFC) == 0xF8): // characters U-00200000 - U-03FFFFFF, mask 111110XX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2}), ord($var{$c+3}), ord($var{$c+4})); $c+=4; //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8'); $utf16 = utf8_to_utf16be($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xFE) == 0xFC): // characters U-04000000 - U-7FFFFFFF, mask 1111110X // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $char = pack('C*', $ord_var_c, ord($var{$c+1}), ord($var{$c+2}), ord($var{$c+3}), ord($var{$c+4}), ord($var{$c+5})); $c+=5; //$utf16 = mb_convert_encoding($char, 'UTF-16', 'UTF-8'); $utf16 = utf8_to_utf16be($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; } } return '"'.$ascii.'"'; case 'array': /* * As per JSON spec if any array key is not an integer * we must treat the the whole array as an object. We * also try to catch a sparsely populated associative * array with numeric keys here because some JS engines * will create an array with empty indexes up to * max_index which can cause memory issues and because * the keys, which may be relevant, will be remapped * otherwise. * * As per the ECMA and JSON specification an object may * have any string as a property. Unfortunately due to * a hole in the ECMA specification if the key is a * ECMA reserved word or starts with a digit the * parameter is only accessible using ECMAScript's * bracket notation. */ // treat as a JSON object if (is_array($var) && count($var) && (array_keys($var) !== range(0, count($var) - 1))) { return sprintf('{%s}', join(',', array_map(array($this, 'name_value'), array_keys($var), array_values($var)))); } // treat it like a regular array return sprintf('[%s]', join(',', array_map(array($this, 'encode'), $var))); case 'object': $vars = get_object_vars($var); return sprintf('{%s}', join(',', array_map(array($this, 'name_value'), array_keys($vars), array_values($vars)))); default: return ''; } } /** * encodes an arbitrary variable into JSON format, alias for encode() */ function enc($var) { return $this->encode($var); } /** function name_value * array-walking function for use in generating JSON-formatted name-value pairs * * @param string $name name of key to use * @param mixed $value reference to an array element to be encoded * * @return string JSON-formatted name-value pair, like '"name":value' * @access private */ function name_value($name, $value) { return (sprintf("%s:%s", $this->encode(strval($name)), $this->encode($value))); } /** * reduce a string by removing leading and trailing comments and whitespace * * @param $str string string value to strip of comments and whitespace * * @return string string value stripped of comments and whitespace * @access private */ function reduce_string($str) { $str = preg_replace(array( // eliminate single line comments in '// ...' form '#^\s*//(.+)$#m', // eliminate multi-line comments in '/* ... */' form, at start of string '#^\s*/\*(.+)\*/#Us', // eliminate multi-line comments in '/* ... */' form, at end of string '#/\*(.+)\*/\s*$#Us' ), '', $str); // eliminate extraneous space return trim($str); } /** * decodes a JSON string into appropriate variable * * @param string $str JSON-formatted string * * @return mixed number, boolean, string, array, or object * corresponding to given JSON input string. * See argument 1 to JSON() above for object-output behavior. * Note that decode() always returns strings * in ASCII or UTF-8 format! * @access public */ function decode($str) { $str = $this->reduce_string($str); switch (strtolower($str)) { case 'true': return true; case 'false': return false; case 'null': return null; default: if (is_numeric($str)) { // Lookie-loo, it's a number // This would work on its own, but I'm trying to be // good about returning integers where appropriate: // return (float)$str; // Return float or int, as appropriate return ((float)$str == (integer)$str) ? (integer)$str : (float)$str; } elseif (preg_match('/^("|\').+("|\')$/s', $str, $m) && $m[1] == $m[2]) { // STRINGS RETURNED IN UTF-8 FORMAT $delim = substr($str, 0, 1); $chrs = substr($str, 1, -1); $utf8 = ''; $strlen_chrs = strlen($chrs); for ($c = 0; $c < $strlen_chrs; ++$c) { $substr_chrs_c_2 = substr($chrs, $c, 2); $ord_chrs_c = ord($chrs{$c}); switch ($substr_chrs_c_2) { case '\b': $utf8 .= chr(0x08); $c+=1; break; case '\t': $utf8 .= chr(0x09); $c+=1; break; case '\n': $utf8 .= chr(0x0A); $c+=1; break; case '\f': $utf8 .= chr(0x0C); $c+=1; break; case '\r': $utf8 .= chr(0x0D); $c+=1; break; case '\\"': case '\\\'': case '\\\\': case '\\/': if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || ($delim == "'" && $substr_chrs_c_2 != '\\"')) { $utf8 .= $chrs{++$c}; } break; default: if (preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6))) { // single, escaped unicode character $utf16 = chr(hexdec(substr($chrs, ($c+2), 2))) . chr(hexdec(substr($chrs, ($c+4), 2))); //$utf8 .= mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); $utf8 .= utf16be_to_utf8($utf16); $c+=5; } elseif(($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F)) { $utf8 .= $chrs{$c}; } elseif(($ord_chrs_c & 0xE0) == 0xC0) { // characters U-00000080 - U-000007FF, mask 110XXXXX //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 2); $c += 1; } elseif(($ord_chrs_c & 0xF0) == 0xE0) { // characters U-00000800 - U-0000FFFF, mask 1110XXXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 3); $c += 2; } elseif(($ord_chrs_c & 0xF8) == 0xF0) { // characters U-00010000 - U-001FFFFF, mask 11110XXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 4); $c += 3; } elseif(($ord_chrs_c & 0xFC) == 0xF8) { // characters U-00200000 - U-03FFFFFF, mask 111110XX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 5); $c += 4; } elseif(($ord_chrs_c & 0xFE) == 0xFC) { // characters U-04000000 - U-7FFFFFFF, mask 1111110X // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 $utf8 .= substr($chrs, $c, 6); $c += 5; } break; } } return $utf8; } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { // array, or object notation if ($str{0} == '[') { $stk = array(JSON_IN_ARR); $arr = array(); } else { if ($this->use == JSON_LOOSE_TYPE) { $stk = array(JSON_IN_OBJ); $obj = array(); } else { $stk = array(JSON_IN_OBJ); $obj = new stdClass(); } } array_push($stk, array('what' => JSON_SLICE, 'where' => 0, 'delim' => false)); $chrs = substr($str, 1, -1); $chrs = $this->reduce_string($chrs); if ($chrs == '') { if (reset($stk) == JSON_IN_ARR) { return $arr; } else { return $obj; } } //print("\nparsing {$chrs}\n"); $strlen_chrs = strlen($chrs); for ($c = 0; $c <= $strlen_chrs; ++$c) { $top = end($stk); $substr_chrs_c_2 = substr($chrs, $c, 2); if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == JSON_SLICE))) { // found a comma that is not inside a string, array, etc., // OR we've reached the end of the character list $slice = substr($chrs, $top['where'], ($c - $top['where'])); array_push($stk, array('what' => JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); if (reset($stk) == JSON_IN_ARR) { // we are in an array, so just push an element onto the stack array_push($arr, $this->decode($slice)); } elseif (reset($stk) == JSON_IN_OBJ) { // we are in an object, so figure // out the property name and set an // element in an associative array, // for now if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { // "name":value pair $key = $this->decode($parts[1]); $val = $this->decode($parts[2]); if ($this->use == JSON_LOOSE_TYPE) { $obj[$key] = $val; } else { $obj->$key = $val; } } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { // name:value pair, where name is unquoted $key = $parts[1]; $val = $this->decode($parts[2]); if ($this->use == JSON_LOOSE_TYPE) { $obj[$key] = $val; } else { $obj->$key = $val; } } } } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) { // found a quote, and we are not inside a string array_push($stk, array('what' => JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); //print("Found start of string at {$c}\n"); } elseif (($chrs{$c} == $top['delim']) && ($top['what'] == JSON_IN_STR) && (($chrs{$c - 1} != "\\") || ($chrs{$c - 1} == "\\" && $chrs{$c - 2} == "\\"))) { // found a quote, we're in a string, and it's not escaped array_pop($stk); //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); } elseif (($chrs{$c} == '[') && in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) { // found a left-bracket, and we are in an array, object, or slice array_push($stk, array('what' => JSON_IN_ARR, 'where' => $c, 'delim' => false)); //print("Found start of array at {$c}\n"); } elseif (($chrs{$c} == ']') && ($top['what'] == JSON_IN_ARR)) { // found a right-bracket, and we're in an array array_pop($stk); //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); } elseif (($chrs{$c} == '{') && in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) { // found a left-brace, and we are in an array, object, or slice array_push($stk, array('what' => JSON_IN_OBJ, 'where' => $c, 'delim' => false)); //print("Found start of object at {$c}\n"); } elseif (($chrs{$c} == '}') && ($top['what'] == JSON_IN_OBJ)) { // found a right-brace, and we're in an object array_pop($stk); //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); } elseif (($substr_chrs_c_2 == '/*') && in_array($top['what'], array(JSON_SLICE, JSON_IN_ARR, JSON_IN_OBJ))) { // found a comment start, and we are in an array, object, or slice array_push($stk, array('what' => JSON_IN_CMT, 'where' => $c, 'delim' => false)); $c++; //print("Found start of comment at {$c}\n"); } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == JSON_IN_CMT)) { // found a comment end, and we're in one now array_pop($stk); $c++; for ($i = $top['where']; $i <= $c; ++$i) $chrs = substr_replace($chrs, ' ', $i, 1); //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); } } if (reset($stk) == JSON_IN_ARR) { return $arr; } elseif (reset($stk) == JSON_IN_OBJ) { return $obj; } } } } /** * decodes a JSON string into appropriate variable; alias for decode() */ function dec($var) { return $this->decode($var); } } splitbrain-dokuwiki-d6c824b/inc/JpegMeta.php000066400000000000000000003233321134327003500211050ustar00rootroot00000000000000 * @author Andreas Gohr * @author Hakan Sandell * @todo Add support for Maker Notes, Extend for GIF and PNG metadata */ // This class is a modified and enhanced version of the JPEG class by // Sebastian Delmont. Original Copyright notice follows: // // +----------------------------------------------------------------------+ // | PHP version 4.0 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Sebastian Delmont | // +----------------------------------------------------------------------+ class JpegMeta { var $_fileName; var $_fp = null; var $_type = 'unknown'; var $_markers; var $_info; /** * Constructor * * @author Sebastian Delmont */ function JpegMeta($fileName) { $this->_fileName = $fileName; $this->_fp = null; $this->_type = 'unknown'; unset($this->_info); unset($this->_markers); } /** * Returns all gathered info as multidim array * * @author Sebastian Delmont */ function & getRawInfo() { $this->_parseAll(); if ($this->_markers == null) { return false; } return $this->_info; } /** * Returns basic image info * * @author Sebastian Delmont */ function & getBasicInfo() { $this->_parseAll(); $info = array(); if ($this->_markers == null) { return false; } $info['Name'] = $this->_info['file']['Name']; if (isset($this->_info['file']['Url'])) { $info['Url'] = $this->_info['file']['Url']; $info['NiceSize'] = "???KB"; } else { $info['Size'] = $this->_info['file']['Size']; $info['NiceSize'] = $this->_info['file']['NiceSize']; } if (@isset($this->_info['sof']['Format'])) { $info['Format'] = $this->_info['sof']['Format'] . " JPEG"; } else { $info['Format'] = $this->_info['sof']['Format'] . " JPEG"; } if (@isset($this->_info['sof']['ColorChannels'])) { $info['ColorMode'] = ($this->_info['sof']['ColorChannels'] > 1) ? "Color" : "B&W"; } $info['Width'] = $this->getWidth(); $info['Height'] = $this->getHeight(); $info['DimStr'] = $this->getDimStr(); $dates = $this->getDates(); $info['DateTime'] = $dates['EarliestTime']; $info['DateTimeStr'] = $dates['EarliestTimeStr']; $info['HasThumbnail'] = $this->hasThumbnail(); return $info; } /** * Convinience function to access nearly all available Data * through one function * * @author Andreas Gohr */ function getField($fields) { if(!is_array($fields)) $fields = array($fields); $info = false; foreach($fields as $field){ if(strtolower(substr($field,0,5)) == 'iptc.'){ $info = $this->getIPTCField(substr($field,5)); }elseif(strtolower(substr($field,0,5)) == 'exif.'){ $info = $this->getExifField(substr($field,5)); }elseif(strtolower(substr($field,0,4)) == 'xmp.'){ $info = $this->getXmpField(substr($field,4)); }elseif(strtolower(substr($field,0,5)) == 'file.'){ $info = $this->getFileField(substr($field,5)); }elseif(strtolower(substr($field,0,5)) == 'date.'){ $info = $this->getDateField(substr($field,5)); }elseif(strtolower($field) == 'simple.camera'){ $info = $this->getCamera(); }elseif(strtolower($field) == 'simple.raw'){ return $this->getRawInfo(); }elseif(strtolower($field) == 'simple.title'){ $info = $this->getTitle(); }elseif(strtolower($field) == 'simple.shutterspeed'){ $info = $this->getShutterSpeed(); }else{ $info = $this->getExifField($field); } if($info != false) break; } if($info === false) $info = $alt; if(is_array($info)){ if(isset($info['val'])){ $info = $info['val']; }else{ $info = join(', ',$info); } } return trim($info); } /** * Convinience function to set nearly all available Data * through one function * * @author Andreas Gohr */ function setField($field, $value) { if(strtolower(substr($field,0,5)) == 'iptc.'){ return $this->setIPTCField(substr($field,5),$value); }elseif(strtolower(substr($field,0,5)) == 'exif.'){ return $this->setExifField(substr($field,5),$value); }else{ return $this->setExifField($field,$value); } } /** * Convinience function to delete nearly all available Data * through one function * * @author Andreas Gohr */ function deleteField($field) { if(strtolower(substr($field,0,5)) == 'iptc.'){ return $this->deleteIPTCField(substr($field,5)); }elseif(strtolower(substr($field,0,5)) == 'exif.'){ return $this->deleteExifField(substr($field,5)); }else{ return $this->deleteExifField($field); } } /** * Return a date field * * @author Andreas Gohr */ function getDateField($field) { if (!isset($this->_info['dates'])) { $this->_info['dates'] = $this->getDates(); } if (isset($this->_info['dates'][$field])) { return $this->_info['dates'][$field]; } return false; } /** * Return a file info field * * @author Andreas Gohr */ function getFileField($field) { if (!isset($this->_info['file'])) { $this->_parseFileInfo(); } if (isset($this->_info['file'][$field])) { return $this->_info['file'][$field]; } return false; } /** * Return the camera info (Maker and Model) * * @author Andreas Gohr * @todo handle makernotes */ function getCamera(){ $make = $this->getField(array('Exif.Make','Exif.TIFFMake')); $model = $this->getField(array('Exif.Model','Exif.TIFFModel')); $cam = trim("$make $model"); if(empty($cam)) return false; return $cam; } /** * Return shutter speed as a ratio * * @author Joe Lapp */ function getShutterSpeed() { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if(!isset($this->_info['exif']['ExposureTime'])){ return ''; } $field = $this->_info['exif']['ExposureTime']; if($field['den'] == 1) return $field['num']; return $field['num'].'/'.$field['den']; } /** * Return an EXIF field * * @author Sebastian Delmont */ function getExifField($field) { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if ($this->_markers == null) { return false; } if (isset($this->_info['exif'][$field])) { return $this->_info['exif'][$field]; } return false; } /** * Return an XMP field * * @author Hakan Sandell */ function getXmpField($field) { if (!isset($this->_info['xmp'])) { $this->_parseMarkerXmp(); } if ($this->_markers == null) { return false; } if (isset($this->_info['xmp'][$field])) { return $this->_info['xmp'][$field]; } return false; } /** * Return an Adobe Field * * @author Sebastian Delmont */ function getAdobeField($field) { if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if (isset($this->_info['adobe'][$field])) { return $this->_info['adobe'][$field]; } return false; } /** * Return an IPTC field * * @author Sebastian Delmont */ function getIPTCField($field) { if (!isset($this->_info['iptc'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if (isset($this->_info['iptc'][$field])) { return $this->_info['iptc'][$field]; } return false; } /** * Set an EXIF field * * @author Sebastian Delmont * @author Joe Lapp */ function setExifField($field, $value) { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if ($this->_markers == null) { return false; } if ($this->_info['exif'] == false) { $this->_info['exif'] = array(); } // make sure datetimes are in correct format if(strlen($field) >= 8 && strtolower(substr($field, 0, 8)) == 'datetime') { if(strlen($value) < 8 || $value{4} != ':' || $value{7} != ':') { $value = date('Y:m:d H:i:s', strtotime($value)); } } $this->_info['exif'][$field] = $value; return true; } /** * Set an Adobe Field * * @author Sebastian Delmont */ function setAdobeField($field, $value) { if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if ($this->_info['adobe'] == false) { $this->_info['adobe'] = array(); } $this->_info['adobe'][$field] = $value; return true; } /** * Calculates the multiplier needed to resize the image to the given * dimensions * * @author Andreas Gohr */ function getResizeRatio($maxwidth,$maxheight=0){ if(!$maxheight) $maxheight = $maxwidth; $w = $this->getField('File.Width'); $h = $this->getField('File.Height'); $ratio = 1; if($w >= $h){ if($w >= $maxwidth){ $ratio = $maxwidth/$w; }elseif($h > $maxheight){ $ratio = $maxheight/$h; } }else{ if($h >= $maxheight){ $ratio = $maxheight/$h; }elseif($w > $maxwidth){ $ratio = $maxwidth/$w; } } return $ratio; } /** * Set an IPTC field * * @author Sebastian Delmont */ function setIPTCField($field, $value) { if (!isset($this->_info['iptc'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if ($this->_info['iptc'] == false) { $this->_info['iptc'] = array(); } $this->_info['iptc'][$field] = $value; return true; } /** * Delete an EXIF field * * @author Sebastian Delmont */ function deleteExifField($field) { if (!isset($this->_info['exif'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if ($this->_info['exif'] != false) { unset($this->_info['exif'][$field]); } return true; } /** * Delete an Adobe field * * @author Sebastian Delmont */ function deleteAdobeField($field) { if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if ($this->_info['adobe'] != false) { unset($this->_info['adobe'][$field]); } return true; } /** * Delete an IPTC field * * @author Sebastian Delmont */ function deleteIPTCField($field) { if (!isset($this->_info['iptc'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if ($this->_info['iptc'] != false) { unset($this->_info['iptc'][$field]); } return true; } /** * Get the image's title, tries various fields * * @param int $max maximum number chars (keeps words) * @author Andreas Gohr */ function getTitle($max=80){ $cap = ''; // try various fields $cap = $this->getField(array('Iptc.Headline', 'Iptc.Caption', 'Xmp.dc:title', 'Exif.UserComment', 'Exif.TIFFUserComment', 'Exif.TIFFImageDescription', 'File.Name')); if (empty($cap)) return false; if(!$max) return $cap; // Shorten to 80 chars (keeping words) $new = preg_replace('/\n.+$/','',wordwrap($cap, $max)); if($new != $cap) $new .= '...'; return $new; } /** * Gather various date fields * * @author Sebastian Delmont */ function getDates() { $this->_parseAll(); if ($this->_markers == null) { if (@isset($this->_info['file']['UnixTime'])) { $dates['FileModified'] = $this->_info['file']['UnixTime']; $dates['Time'] = $this->_info['file']['UnixTime']; $dates['TimeSource'] = 'FileModified'; $dates['TimeStr'] = date("Y-m-d H:i:s", $this->_info['file']['UnixTime']); $dates['EarliestTime'] = $this->_info['file']['UnixTime']; $dates['EarliestTimeSource'] = 'FileModified'; $dates['EarliestTimeStr'] = date("Y-m-d H:i:s", $this->_info['file']['UnixTime']); $dates['LatestTime'] = $this->_info['file']['UnixTime']; $dates['LatestTimeSource'] = 'FileModified'; $dates['LatestTimeStr'] = date("Y-m-d H:i:s", $this->_info['file']['UnixTime']); return $dates; } return false; } $dates = array(); $latestTime = 0; $latestTimeSource = ""; $earliestTime = time(); $earliestTimeSource = ""; if (@isset($this->_info['exif']['DateTime'])) { $dates['ExifDateTime'] = $this->_info['exif']['DateTime']; $aux = $this->_info['exif']['DateTime']; $aux{4} = "-"; $aux{7} = "-"; $t = strtotime($aux); if ($t && $t > $latestTime) { $latestTime = $t; $latestTimeSource = "ExifDateTime"; } if ($t && $t < $earliestTime) { $earliestTime = $t; $earliestTimeSource = "ExifDateTime"; } } if (@isset($this->_info['exif']['DateTimeOriginal'])) { $dates['ExifDateTimeOriginal'] = $this->_info['exif']['DateTime']; $aux = $this->_info['exif']['DateTimeOriginal']; $aux{4} = "-"; $aux{7} = "-"; $t = strtotime($aux); if ($t && $t > $latestTime) { $latestTime = $t; $latestTimeSource = "ExifDateTimeOriginal"; } if ($t && $t < $earliestTime) { $earliestTime = $t; $earliestTimeSource = "ExifDateTimeOriginal"; } } if (@isset($this->_info['exif']['DateTimeDigitized'])) { $dates['ExifDateTimeDigitized'] = $this->_info['exif']['DateTime']; $aux = $this->_info['exif']['DateTimeDigitized']; $aux{4} = "-"; $aux{7} = "-"; $t = strtotime($aux); if ($t && $t > $latestTime) { $latestTime = $t; $latestTimeSource = "ExifDateTimeDigitized"; } if ($t && $t < $earliestTime) { $earliestTime = $t; $earliestTimeSource = "ExifDateTimeDigitized"; } } if (@isset($this->_info['iptc']['DateCreated'])) { $dates['IPTCDateCreated'] = $this->_info['iptc']['DateCreated']; $aux = $this->_info['iptc']['DateCreated']; $aux = substr($aux, 0, 4) . "-" . substr($aux, 4, 2) . "-" . substr($aux, 6, 2); $t = strtotime($aux); if ($t && $t > $latestTime) { $latestTime = $t; $latestTimeSource = "IPTCDateCreated"; } if ($t && $t < $earliestTime) { $earliestTime = $t; $earliestTimeSource = "IPTCDateCreated"; } } if (@isset($this->_info['file']['UnixTime'])) { $dates['FileModified'] = $this->_info['file']['UnixTime']; $t = $this->_info['file']['UnixTime']; if ($t && $t > $latestTime) { $latestTime = $t; $latestTimeSource = "FileModified"; } if ($t && $t < $earliestTime) { $earliestTime = $t; $earliestTimeSource = "FileModified"; } } $dates['Time'] = $earliestTime; $dates['TimeSource'] = $earliestTimeSource; $dates['TimeStr'] = date("Y-m-d H:i:s", $earliestTime); $dates['EarliestTime'] = $earliestTime; $dates['EarliestTimeSource'] = $earliestTimeSource; $dates['EarliestTimeStr'] = date("Y-m-d H:i:s", $earliestTime); $dates['LatestTime'] = $latestTime; $dates['LatestTimeSource'] = $latestTimeSource; $dates['LatestTimeStr'] = date("Y-m-d H:i:s", $latestTime); return $dates; } /** * Get the image width, tries various fields * * @author Sebastian Delmont */ function getWidth() { if (!isset($this->_info['sof'])) { $this->_parseMarkerSOF(); } if ($this->_markers == null) { return false; } if (isset($this->_info['sof']['ImageWidth'])) { return $this->_info['sof']['ImageWidth']; } if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if (isset($this->_info['exif']['PixelXDimension'])) { return $this->_info['exif']['PixelXDimension']; } return false; } /** * Get the image height, tries various fields * * @author Sebastian Delmont */ function getHeight() { if (!isset($this->_info['sof'])) { $this->_parseMarkerSOF(); } if ($this->_markers == null) { return false; } if (isset($this->_info['sof']['ImageHeight'])) { return $this->_info['sof']['ImageHeight']; } if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if (isset($this->_info['exif']['PixelYDimension'])) { return $this->_info['exif']['PixelYDimension']; } return false; } /** * Get an dimension string for use in img tag * * @author Sebastian Delmont */ function getDimStr() { if ($this->_markers == null) { return false; } $w = $this->getWidth(); $h = $this->getHeight(); return "width='" . $w . "' height='" . $h . "'"; } /** * Checks for an embedded thumbnail * * @author Sebastian Delmont */ function hasThumbnail($which = 'any') { if (($which == 'any') || ($which == 'exif')) { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if ($this->_markers == null) { return false; } if (isset($this->_info['exif']) && is_array($this->_info['exif'])) { if (isset($this->_info['exif']['JFIFThumbnail'])) { return 'exif'; } } } if ($which == 'adobe') { if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if (isset($this->_info['adobe']) && is_array($this->_info['adobe'])) { if (isset($this->_info['adobe']['ThumbnailData'])) { return 'exif'; } } } return false; } /** * Send embedded thumbnail to browser * * @author Sebastian Delmont */ function sendThumbnail($which = 'any') { $data = null; if (($which == 'any') || ($which == 'exif')) { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if ($this->_markers == null) { return false; } if (isset($this->_info['exif']) && is_array($this->_info['exif'])) { if (isset($this->_info['exif']['JFIFThumbnail'])) { $data =& $this->_info['exif']['JFIFThumbnail']; } } } if (($which == 'adobe') || ($data == null)){ if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } if ($this->_markers == null) { return false; } if (isset($this->_info['adobe']) && is_array($this->_info['adobe'])) { if (isset($this->_info['adobe']['ThumbnailData'])) { $data =& $this->_info['adobe']['ThumbnailData']; } } } if ($data != null) { header("Content-type: image/jpeg"); echo $data; return true; } return false; } /** * Save changed Metadata * * @author Sebastian Delmont * @author Andreas Gohr */ function save($fileName = "") { if ($fileName == "") { $tmpName = tempnam(dirname($this->_fileName),'_metatemp_'); $this->_writeJPEG($tmpName); if (@file_exists($tmpName)) { return io_rename($tmpName, $this->_fileName); } } else { return $this->_writeJPEG($fileName); } return false; } /*************************************************************/ /* PRIVATE FUNCTIONS (Internal Use Only!) */ /*************************************************************/ /*************************************************************/ function _dispose() { $this->_fileName = $fileName; $this->_fp = null; $this->_type = 'unknown'; unset($this->_markers); unset($this->_info); } /*************************************************************/ function _readJPEG() { unset($this->_markers); //unset($this->_info); $this->_markers = array(); //$this->_info = array(); $this->_fp = @fopen($this->_fileName, 'rb'); if ($this->_fp) { if (file_exists($this->_fileName)) { $this->_type = 'file'; } else { $this->_type = 'url'; } } else { $this->_fp = null; return false; // ERROR: Can't open file } // Check for the JPEG signature $c1 = ord(fgetc($this->_fp)); $c2 = ord(fgetc($this->_fp)); if ($c1 != 0xFF || $c2 != 0xD8) { // (0xFF + SOI) $this->_markers = null; return false; // ERROR: File is not a JPEG } $count = 0; $done = false; $ok = true; while (!$done) { $capture = false; // First, skip any non 0xFF bytes $discarded = 0; $c = ord(fgetc($this->_fp)); while (!feof($this->_fp) && ($c != 0xFF)) { $discarded++; $c = ord(fgetc($this->_fp)); } // Then skip all 0xFF until the marker byte do { $marker = ord(fgetc($this->_fp)); } while (!feof($this->_fp) && ($marker == 0xFF)); if (feof($this->_fp)) { return false; // ERROR: Unexpected EOF } if ($discarded != 0) { return false; // ERROR: Extraneous data } $length = ord(fgetc($this->_fp)) * 256 + ord(fgetc($this->_fp)); if (feof($this->_fp)) { return false; // ERROR: Unexpected EOF } if ($length < 2) { return false; // ERROR: Extraneous data } $length = $length - 2; // The length we got counts itself switch ($marker) { case 0xC0: // SOF0 case 0xC1: // SOF1 case 0xC2: // SOF2 case 0xC9: // SOF9 case 0xE0: // APP0: JFIF data case 0xE1: // APP1: EXIF or XMP data case 0xED: // APP13: IPTC / Photoshop data $capture = true; break; case 0xDA: // SOS: Start of scan... the image itself and the last block on the file $capture = false; $length = -1; // This field has no length... it includes all data until EOF $done = true; break; default: $capture = true;//false; break; } $this->_markers[$count] = array(); $this->_markers[$count]['marker'] = $marker; $this->_markers[$count]['length'] = $length; if ($capture) { if ($length) $this->_markers[$count]['data'] =& fread($this->_fp, $length); else $this->_markers[$count]['data'] = ""; } elseif (!$done) { $result = @fseek($this->_fp, $length, SEEK_CUR); // fseek doesn't seem to like HTTP 'files', but fgetc has no problem if (!($result === 0)) { for ($i = 0; $i < $length; $i++) { fgetc($this->_fp); } } } $count++; } if ($this->_fp) { fclose($this->_fp); $this->_fp = null; } return $ok; } /*************************************************************/ function _parseAll() { if (!isset($this->_info['file'])) { $this->_parseFileInfo(); } if (!isset($this->_markers)) { $this->_readJPEG(); } if ($this->_markers == null) { return false; } if (!isset($this->_info['jfif'])) { $this->_parseMarkerJFIF(); } if (!isset($this->_info['jpeg'])) { $this->_parseMarkerSOF(); } if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } if (!isset($this->_info['xmp'])) { $this->_parseMarkerXmp(); } if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } } /*************************************************************/ function _writeJPEG($outputName) { $this->_parseAll(); $wroteEXIF = false; $wroteAdobe = false; $this->_fp = @fopen($this->_fileName, 'r'); if ($this->_fp) { if (file_exists($this->_fileName)) { $this->_type = 'file'; } else { $this->_type = 'url'; } } else { $this->_fp = null; return false; // ERROR: Can't open file } $this->_fpout = fopen($outputName, 'wb'); if (!$this->_fpout) { $this->_fpout = null; fclose($this->_fp); $this->_fp = null; return false; // ERROR: Can't open output file } // Check for the JPEG signature $c1 = ord(fgetc($this->_fp)); $c2 = ord(fgetc($this->_fp)); if ($c1 != 0xFF || $c2 != 0xD8) { // (0xFF + SOI) return false; // ERROR: File is not a JPEG } fputs($this->_fpout, chr(0xFF), 1); fputs($this->_fpout, chr(0xD8), 1); // (0xFF + SOI) $count = 0; $done = false; $ok = true; while (!$done) { // First, skip any non 0xFF bytes $discarded = 0; $c = ord(fgetc($this->_fp)); while (!feof($this->_fp) && ($c != 0xFF)) { $discarded++; $c = ord(fgetc($this->_fp)); } // Then skip all 0xFF until the marker byte do { $marker = ord(fgetc($this->_fp)); } while (!feof($this->_fp) && ($marker == 0xFF)); if (feof($this->_fp)) { $ok = false; break; // ERROR: Unexpected EOF } if ($discarded != 0) { $ok = false; break; // ERROR: Extraneous data } $length = ord(fgetc($this->_fp)) * 256 + ord(fgetc($this->_fp)); if (feof($this->_fp)) { $ok = false; break; // ERROR: Unexpected EOF } if ($length < 2) { $ok = false; break; // ERROR: Extraneous data } $length = $length - 2; // The length we got counts itself unset($data); if ($marker == 0xE1) { // APP1: EXIF data $data =& $this->_createMarkerEXIF(); $wroteEXIF = true; } elseif ($marker == 0xED) { // APP13: IPTC / Photoshop data $data =& $this->_createMarkerAdobe(); $wroteAdobe = true; } elseif ($marker == 0xDA) { // SOS: Start of scan... the image itself and the last block on the file $done = true; } if (!$wroteEXIF && (($marker < 0xE0) || ($marker > 0xEF))) { if (isset($this->_info['exif']) && is_array($this->_info['exif'])) { $exif =& $this->_createMarkerEXIF(); $this->_writeJPEGMarker(0xE1, strlen($exif), $exif, 0); unset($exif); } $wroteEXIF = true; } if (!$wroteAdobe && (($marker < 0xE0) || ($marker > 0xEF))) { if ((isset($this->_info['adobe']) && is_array($this->_info['adobe'])) || (isset($this->_info['iptc']) && is_array($this->_info['iptc']))) { $adobe =& $this->_createMarkerAdobe(); $this->_writeJPEGMarker(0xED, strlen($adobe), $adobe, 0); unset($adobe); } $wroteAdobe = true; } $origLength = $length; if (isset($data)) { $length = strlen($data); } if ($marker != -1) { $this->_writeJPEGMarker($marker, $length, $data, $origLength); } } if ($this->_fp) { fclose($this->_fp); $this->_fp = null; } if ($this->_fpout) { fclose($this->_fpout); $this->_fpout = null; } return $ok; } /*************************************************************/ function _writeJPEGMarker($marker, $length, &$data, $origLength) { if ($length <= 0) { return false; } fputs($this->_fpout, chr(0xFF), 1); fputs($this->_fpout, chr($marker), 1); fputs($this->_fpout, chr((($length + 2) & 0x0000FF00) >> 8), 1); fputs($this->_fpout, chr((($length + 2) & 0x000000FF) >> 0), 1); if (isset($data)) { // Copy the generated data fputs($this->_fpout, $data, $length); if ($origLength > 0) { // Skip the original data $result = @fseek($this->_fp, $origLength, SEEK_CUR); // fseek doesn't seem to like HTTP 'files', but fgetc has no problem if ($result != 0) { for ($i = 0; $i < $origLength; $i++) { fgetc($this->_fp); } } } } else { if ($marker == 0xDA) { // Copy until EOF while (!feof($this->_fp)) { $data = fread($this->_fp, 1024 * 16); fputs($this->_fpout, $data, strlen($data)); } } else { // Copy only $length bytes $data = @fread($this->_fp, $length); fputs($this->_fpout, $data, $length); } } return true; } /** * Gets basic info from the file - should work with non-JPEGs * * @author Sebastian Delmont * @author Andreas Gohr */ function _parseFileInfo() { if (file_exists($this->_fileName)) { $this->_info['file'] = array(); $this->_info['file']['Name'] = basename($this->_fileName); $this->_info['file']['Path'] = fullpath($this->_fileName); $this->_info['file']['Size'] = filesize($this->_fileName); if ($this->_info['file']['Size'] < 1024) { $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B'; } elseif ($this->_info['file']['Size'] < (1024 * 1024)) { $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / 1024) . 'KB'; } elseif ($this->_info['file']['Size'] < (1024 * 1024 * 1024)) { $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / (1024*1024)) . 'MB'; } else { $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B'; } $this->_info['file']['UnixTime'] = filemtime($this->_fileName); // get image size directly from file $size = getimagesize($this->_fileName); $this->_info['file']['Width'] = $size[0]; $this->_info['file']['Height'] = $size[1]; // set mime types and formats // http://www.php.net/manual/en/function.getimagesize.php // http://www.php.net/manual/en/function.image-type-to-mime-type.php switch ($size[2]){ case 1: $this->_info['file']['Mime'] = 'image/gif'; $this->_info['file']['Format'] = 'GIF'; break; case 2: $this->_info['file']['Mime'] = 'image/jpeg'; $this->_info['file']['Format'] = 'JPEG'; break; case 3: $this->_info['file']['Mime'] = 'image/png'; $this->_info['file']['Format'] = 'PNG'; break; case 4: $this->_info['file']['Mime'] = 'application/x-shockwave-flash'; $this->_info['file']['Format'] = 'SWF'; break; case 5: $this->_info['file']['Mime'] = 'image/psd'; $this->_info['file']['Format'] = 'PSD'; break; case 6: $this->_info['file']['Mime'] = 'image/bmp'; $this->_info['file']['Format'] = 'BMP'; break; case 7: $this->_info['file']['Mime'] = 'image/tiff'; $this->_info['file']['Format'] = 'TIFF (Intel)'; break; case 8: $this->_info['file']['Mime'] = 'image/tiff'; $this->_info['file']['Format'] = 'TIFF (Motorola)'; break; case 9: $this->_info['file']['Mime'] = 'application/octet-stream'; $this->_info['file']['Format'] = 'JPC'; break; case 10: $this->_info['file']['Mime'] = 'image/jp2'; $this->_info['file']['Format'] = 'JP2'; break; case 11: $this->_info['file']['Mime'] = 'application/octet-stream'; $this->_info['file']['Format'] = 'JPX'; break; case 12: $this->_info['file']['Mime'] = 'application/octet-stream'; $this->_info['file']['Format'] = 'JB2'; break; case 13: $this->_info['file']['Mime'] = 'application/x-shockwave-flash'; $this->_info['file']['Format'] = 'SWC'; break; case 14: $this->_info['file']['Mime'] = 'image/iff'; $this->_info['file']['Format'] = 'IFF'; break; case 15: $this->_info['file']['Mime'] = 'image/vnd.wap.wbmp'; $this->_info['file']['Format'] = 'WBMP'; break; case 16: $this->_info['file']['Mime'] = 'image/xbm'; $this->_info['file']['Format'] = 'XBM'; break; default: $this->_info['file']['Mime'] = 'image/unknown'; } } else { $this->_info['file'] = array(); $this->_info['file']['Name'] = basename($this->_fileName); $this->_info['file']['Url'] = $this->_fileName; } return true; } /*************************************************************/ function _parseMarkerJFIF() { if (!isset($this->_markers)) { $this->_readJPEG(); } if ($this->_markers == null) { return false; } $data = null; $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { if ($this->_markers[$i]['marker'] == 0xE0) { $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 4); if ($signature == 'JFIF') { $data =& $this->_markers[$i]['data']; break; } } } if ($data == null) { $this->_info['jfif'] = false; return false; } $pos = 0; $this->_info['jfif'] = array(); $vmaj = $this->_getByte($data, 5); $vmin = $this->_getByte($data, 6); $this->_info['jfif']['Version'] = sprintf('%d.%02d', $vmaj, $vmin); $units = $this->_getByte($data, 7); switch ($units) { case 0: $this->_info['jfif']['Units'] = 'pixels'; break; case 1: $this->_info['jfif']['Units'] = 'dpi'; break; case 2: $this->_info['jfif']['Units'] = 'dpcm'; break; default: $this->_info['jfif']['Units'] = 'unknown'; break; } $xdens = $this->_getShort($data, 8); $ydens = $this->_getShort($data, 10); $this->_info['jfif']['XDensity'] = $xdens; $this->_info['jfif']['YDensity'] = $ydens; $thumbx = $this->_getByte($data, 12); $thumby = $this->_getByte($data, 13); $this->_info['jfif']['ThumbnailWidth'] = $thumbx; $this->_info['jfif']['ThumbnailHeight'] = $thumby; return true; } /*************************************************************/ function _parseMarkerSOF() { if (!isset($this->_markers)) { $this->_readJPEG(); } if ($this->_markers == null) { return false; } $data = null; $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { switch ($this->_markers[$i]['marker']) { case 0xC0: // SOF0 case 0xC1: // SOF1 case 0xC2: // SOF2 case 0xC9: // SOF9 $data =& $this->_markers[$i]['data']; $marker = $this->_markers[$i]['marker']; break; } } if ($data == null) { $this->_info['sof'] = false; return false; } $pos = 0; $this->_info['sof'] = array(); switch ($marker) { case 0xC0: // SOF0 $format = 'Baseline'; break; case 0xC1: // SOF1 $format = 'Progessive'; break; case 0xC2: // SOF2 $format = 'Non-baseline'; break; case 0xC9: // SOF9 $format = 'Arithmetic'; break; default: return false; break; } $this->_info['sof']['Format'] = $format; $this->_info['sof']['SamplePrecision'] = $this->_getByte($data, $pos + 0); $this->_info['sof']['ImageHeight'] = $this->_getShort($data, $pos + 1); $this->_info['sof']['ImageWidth'] = $this->_getShort($data, $pos + 3); $this->_info['sof']['ColorChannels'] = $this->_getByte($data, $pos + 5); return true; } /** * Parses the XMP data * * @author Hakan Sandell */ function _parseMarkerXmp() { if (!isset($this->_markers)) { $this->_readJPEG(); } if ($this->_markers == null) { return false; } $data = null; $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { if ($this->_markers[$i]['marker'] == 0xE1) { $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 29); if ($signature == "http://ns.adobe.com/xap/1.0/\0") { $data =& substr($this->_markers[$i]['data'], 29); break; } } } if ($data == null) { $this->_info['xmp'] = false; return false; } $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $data, $values, $tags); xml_parser_free($parser); $this->_info['xmp'] = array(); $count = count($values); for ($i = 0; $i < $count; $i++) { if ($values[$i]['tag'] == 'rdf:Description' && $values[$i]['type'] == 'open') { while ($values[++$i]['tag'] != 'rdf:Description') { $this->_parseXmpNode($values, $i, $this->_info['xmp'][$values[$i]['tag']]); } } } return true; } /** * Parses XMP nodes by recursion * * @author Hakan Sandell */ function _parseXmpNode($values, &$i, &$meta) { if ($values[$i]['type'] == 'complete') { // Simple Type property $meta = $values[$i]['value']; return; } $i++; if ($values[$i]['tag'] == 'rdf:Bag' || $values[$i]['tag'] == 'rdf:Seq') { // Array property $meta = array(); while ($values[++$i]['tag'] == 'rdf:li') { $this->_parseXmpNode($values, $i, $meta[]); } $i++; // skip closing tag } elseif ($values[$i]['tag'] == 'rdf:Alt') { // Language Alternative property, only the first (default) value is used $i++; $this->_parseXmpNode($values, $i, $meta); while ($values[++$i]['tag'] != 'rdf:Alt'); $i++; // skip closing tag } else { // Structure property $meta = array(); $startTag = $values[$i-1]['tag']; do { $this->_parseXmpNode($values, $i, $meta[$values[$i]['tag']]); } while ($values[++$i]['tag'] != $startTag); } } /*************************************************************/ function _parseMarkerExif() { if (!isset($this->_markers)) { $this->_readJPEG(); } if ($this->_markers == null) { return false; } $data = null; $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { if ($this->_markers[$i]['marker'] == 0xE1) { $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 6); if ($signature == "Exif\0\0") { $data =& $this->_markers[$i]['data']; break; } } } if ($data == null) { $this->_info['exif'] = false; return false; } $pos = 6; $this->_info['exif'] = array(); // We don't increment $pos after this because Exif uses offsets relative to this point $byteAlign = $this->_getShort($data, $pos + 0); if ($byteAlign == 0x4949) { // "II" $isBigEndian = false; } elseif ($byteAlign == 0x4D4D) { // "MM" $isBigEndian = true; } else { return false; // Unexpected data } $alignCheck = $this->_getShort($data, $pos + 2, $isBigEndian); if ($alignCheck != 0x002A) // That's the expected value return false; // Unexpected data if ($isBigEndian) { $this->_info['exif']['ByteAlign'] = "Big Endian"; } else { $this->_info['exif']['ByteAlign'] = "Little Endian"; } $offsetIFD0 = $this->_getLong($data, $pos + 4, $isBigEndian); if ($offsetIFD0 < 8) return false; // Unexpected data $offsetIFD1 = $this->_readIFD($data, $pos, $offsetIFD0, $isBigEndian, 'ifd0'); if ($offsetIFD1 != 0) $this->_readIFD($data, $pos, $offsetIFD1, $isBigEndian, 'ifd1'); return true; } /*************************************************************/ function _readIFD($data, $base, $offset, $isBigEndian, $mode) { $EXIFTags = $this->_exifTagNames($mode); $numEntries = $this->_getShort($data, $base + $offset, $isBigEndian); $offset += 2; $exifTIFFOffset = 0; $exifTIFFLength = 0; $exifThumbnailOffset = 0; $exifThumbnailLength = 0; for ($i = 0; $i < $numEntries; $i++) { $tag = $this->_getShort($data, $base + $offset, $isBigEndian); $offset += 2; $type = $this->_getShort($data, $base + $offset, $isBigEndian); $offset += 2; $count = $this->_getLong($data, $base + $offset, $isBigEndian); $offset += 4; if (($type < 1) || ($type > 12)) return false; // Unexpected Type $typeLengths = array( -1, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8 ); $dataLength = $typeLengths[$type] * $count; if ($dataLength > 4) { $dataOffset = $this->_getLong($data, $base + $offset, $isBigEndian); $rawValue = $this->_getFixedString($data, $base + $dataOffset, $dataLength); } else { $rawValue = $this->_getFixedString($data, $base + $offset, $dataLength); } $offset += 4; switch ($type) { case 1: // UBYTE if ($count == 1) { $value = $this->_getByte($rawValue, 0); } else { $value = array(); for ($j = 0; $j < $count; $j++) $value[$j] = $this->_getByte($rawValue, $j); } break; case 2: // ASCII $value = $rawValue; break; case 3: // USHORT if ($count == 1) { $value = $this->_getShort($rawValue, 0, $isBigEndian); } else { $value = array(); for ($j = 0; $j < $count; $j++) $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian); } break; case 4: // ULONG if ($count == 1) { $value = $this->_getLong($rawValue, 0, $isBigEndian); } else { $value = array(); for ($j = 0; $j < $count; $j++) $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian); } break; case 5: // URATIONAL if ($count == 1) { $a = $this->_getLong($rawValue, 0, $isBigEndian); $b = $this->_getLong($rawValue, 4, $isBigEndian); $value = array(); $value['val'] = 0; $value['num'] = $a; $value['den'] = $b; if (($a != 0) && ($b != 0)) { $value['val'] = $a / $b; } } else { $value = array(); for ($j = 0; $j < $count; $j++) { $a = $this->_getLong($rawValue, $j * 8, $isBigEndian); $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian); $value = array(); $value[$j]['val'] = 0; $value[$j]['num'] = $a; $value[$j]['den'] = $b; if (($a != 0) && ($b != 0)) $value[$j]['val'] = $a / $b; } } break; case 6: // SBYTE if ($count == 1) { $value = $this->_getByte($rawValue, 0); } else { $value = array(); for ($j = 0; $j < $count; $j++) $value[$j] = $this->_getByte($rawValue, $j); } break; case 7: // UNDEFINED $value = $rawValue; break; case 8: // SSHORT if ($count == 1) { $value = $this->_getShort($rawValue, 0, $isBigEndian); } else { $value = array(); for ($j = 0; $j < $count; $j++) $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian); } break; case 9: // SLONG if ($count == 1) { $value = $this->_getLong($rawValue, 0, $isBigEndian); } else { $value = array(); for ($j = 0; $j < $count; $j++) $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian); } break; case 10: // SRATIONAL if ($count == 1) { $a = $this->_getLong($rawValue, 0, $isBigEndian); $b = $this->_getLong($rawValue, 4, $isBigEndian); $value = array(); $value['val'] = 0; $value['num'] = $a; $value['den'] = $b; if (($a != 0) && ($b != 0)) $value['val'] = $a / $b; } else { $value = array(); for ($j = 0; $j < $count; $j++) { $a = $this->_getLong($rawValue, $j * 8, $isBigEndian); $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian); $value = array(); $value[$j]['val'] = 0; $value[$j]['num'] = $a; $value[$j]['den'] = $b; if (($a != 0) && ($b != 0)) $value[$j]['val'] = $a / $b; } } break; case 11: // FLOAT $value = $rawValue; break; case 12: // DFLOAT $value = $rawValue; break; default: return false; // Unexpected Type } $tagName = ''; if (($mode == 'ifd0') && ($tag == 0x8769)) { // ExifIFDOffset $this->_readIFD($data, $base, $value, $isBigEndian, 'exif'); } elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset $this->_readIFD($data, $base, $value, $isBigEndian, 'gps'); } elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets $exifTIFFOffset = $value; } elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts $exifTIFFLength = $value; } elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset $exifThumbnailOffset = $value; } elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength $exifThumbnailLength = $value; } elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset $this->_readIFD($data, $base, $value, $isBigEndian, 'interop'); } // elseif (($mode == 'exif') && ($tag == 0x927C)) { // MakerNote // } else { if (isset($EXIFTags[$tag])) { $tagName = $EXIFTags[$tag]; if (isset($this->_info['exif'][$tagName])) { if (!is_array($this->_info['exif'][$tagName])) { $aux = array(); $aux[0] = $this->_info['exif'][$tagName]; $this->_info['exif'][$tagName] = $aux; } $this->_info['exif'][$tagName][count($this->_info['exif'][$tagName])] = $value; } else { $this->_info['exif'][$tagName] = $value; } } /* else { echo sprintf("

Unknown tag %02x (t: %d l: %d) %s in %s

", $tag, $type, $count, $mode, $this->_fileName); // Unknown Tags will be ignored!!! // That's because the tag might be a pointer (like the Exif tag) // and saving it without saving the data it points to might // create an invalid file. } */ } } if (($exifThumbnailOffset > 0) && ($exifThumbnailLength > 0)) { $this->_info['exif']['JFIFThumbnail'] = $this->_getFixedString($data, $base + $exifThumbnailOffset, $exifThumbnailLength); } if (($exifTIFFOffset > 0) && ($exifTIFFLength > 0)) { $this->_info['exif']['TIFFStrips'] = $this->_getFixedString($data, $base + $exifTIFFOffset, $exifTIFFLength); } $nextOffset = $this->_getLong($data, $base + $offset, $isBigEndian); return $nextOffset; } /*************************************************************/ function & _createMarkerExif() { $data = null; $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { if ($this->_markers[$i]['marker'] == 0xE1) { $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 6); if ($signature == "Exif\0\0") { $data =& $this->_markers[$i]['data']; break; } } } if (!isset($this->_info['exif'])) { return false; } $data = "Exif\0\0"; $pos = 6; $offsetBase = 6; if (isset($this->_info['exif']['ByteAlign']) && ($this->_info['exif']['ByteAlign'] == "Big Endian")) { $isBigEndian = true; $aux = "MM"; $pos = $this->_putString($data, $pos, $aux); } else { $isBigEndian = false; $aux = "II"; $pos = $this->_putString($data, $pos, $aux); } $pos = $this->_putShort($data, $pos, 0x002A, $isBigEndian); $pos = $this->_putLong($data, $pos, 0x00000008, $isBigEndian); // IFD0 Offset is always 8 $ifd0 =& $this->_getIFDEntries($isBigEndian, 'ifd0'); $ifd1 =& $this->_getIFDEntries($isBigEndian, 'ifd1'); $pos = $this->_writeIFD($data, $pos, $offsetBase, $ifd0, $isBigEndian, true); $pos = $this->_writeIFD($data, $pos, $offsetBase, $ifd1, $isBigEndian, false); return $data; } /*************************************************************/ function _writeIFD(&$data, $pos, $offsetBase, &$entries, $isBigEndian, $hasNext) { $tiffData = null; $tiffDataOffsetPos = -1; $entryCount = count($entries); $dataPos = $pos + 2 + ($entryCount * 12) + 4; $pos = $this->_putShort($data, $pos, $entryCount, $isBigEndian); for ($i = 0; $i < $entryCount; $i++) { $tag = $entries[$i]['tag']; $type = $entries[$i]['type']; if ($type == -99) { // SubIFD $pos = $this->_putShort($data, $pos, $tag, $isBigEndian); $pos = $this->_putShort($data, $pos, 0x04, $isBigEndian); // LONG $pos = $this->_putLong($data, $pos, 0x01, $isBigEndian); // Count = 1 $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian); $dataPos = $this->_writeIFD($data, $dataPos, $offsetBase, $entries[$i]['value'], $isBigEndian, false); } elseif ($type == -98) { // TIFF Data $pos = $this->_putShort($data, $pos, $tag, $isBigEndian); $pos = $this->_putShort($data, $pos, 0x04, $isBigEndian); // LONG $pos = $this->_putLong($data, $pos, 0x01, $isBigEndian); // Count = 1 $tiffDataOffsetPos = $pos; $pos = $this->_putLong($data, $pos, 0x00, $isBigEndian); // For Now $tiffData =& $entries[$i]['value'] ; } else { // Regular Entry $pos = $this->_putShort($data, $pos, $tag, $isBigEndian); $pos = $this->_putShort($data, $pos, $type, $isBigEndian); $pos = $this->_putLong($data, $pos, $entries[$i]['count'], $isBigEndian); if (strlen($entries[$i]['value']) > 4) { $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian); $dataPos = $this->_putString($data, $dataPos, $entries[$i]['value']); } else { $val = str_pad($entries[$i]['value'], 4, "\0"); $pos = $this->_putString($data, $pos, $val); } } } if ($tiffData != null) { $this->_putLong($data, $tiffDataOffsetPos, $dataPos - $offsetBase, $isBigEndian); $dataPos = $this->_putString($data, $dataPos, $tiffData); } if ($hasNext) { $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian); } else { $pos = $this->_putLong($data, $pos, 0, $isBigEndian); } return $dataPos; } /*************************************************************/ function & _getIFDEntries($isBigEndian, $mode) { $EXIFNames = $this->_exifTagNames($mode); $EXIFTags = $this->_exifNameTags($mode); $EXIFTypeInfo = $this->_exifTagTypes($mode); $ifdEntries = array(); $entryCount = 0; reset($EXIFNames); while (list($tag, $name) = each($EXIFNames)) { $type = $EXIFTypeInfo[$tag][0]; $count = $EXIFTypeInfo[$tag][1]; $value = null; if (($mode == 'ifd0') && ($tag == 0x8769)) { // ExifIFDOffset if (isset($this->_info['exif']['EXIFVersion'])) { $value =& $this->_getIFDEntries($isBigEndian, "exif"); $type = -99; } else { $value = null; } } elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset if (isset($this->_info['exif']['GPSVersionID'])) { $value =& $this->_getIFDEntries($isBigEndian, "gps"); $type = -99; } else { $value = null; } } elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets if (isset($this->_info['exif']['TIFFStrips'])) { $value =& $this->_info['exif']['TIFFStrips']; $type = -98; } else { $value = null; } } elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts if (isset($this->_info['exif']['TIFFStrips'])) { $value = strlen($this->_info['exif']['TIFFStrips']); } else { $value = null; } } elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset if (isset($this->_info['exif']['JFIFThumbnail'])) { $value =& $this->_info['exif']['JFIFThumbnail']; $type = -98; } else { $value = null; } } elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength if (isset($this->_info['exif']['JFIFThumbnail'])) { $value = strlen($this->_info['exif']['JFIFThumbnail']); } else { $value = null; } } elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset if (isset($this->_info['exif']['InteroperabilityIndex'])) { $value =& $this->_getIFDEntries($isBigEndian, "interop"); $type = -99; } else { $value = null; } } elseif (isset($this->_info['exif'][$name])) { $origValue =& $this->_info['exif'][$name]; // This makes it easier to process variable size elements if (!is_array($origValue) || isset($origValue['val'])) { unset($origValue); // Break the reference $origValue = array($this->_info['exif'][$name]); } $origCount = count($origValue); if ($origCount == 0 ) { $type = -1; // To ignore this field } $value = " "; switch ($type) { case 1: // UBYTE if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $this->_putByte($value, $j, $origValue[$j]); $j++; } while ($j < $count) { $this->_putByte($value, $j, 0); $j++; } break; case 2: // ASCII $v = strval($origValue[0]); if (($count != 0) && (strlen($v) > $count)) { $v = substr($v, 0, $count); } elseif (($count > 0) && (strlen($v) < $count)) { $v = str_pad($v, $count, "\0"); } $count = strlen($v); $this->_putString($value, 0, $v); break; case 3: // USHORT if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian); $j++; } while ($j < $count) { $this->_putShort($value, $j * 2, 0, $isBigEndian); $j++; } break; case 4: // ULONG if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian); $j++; } while ($j < $count) { $this->_putLong($value, $j * 4, 0, $isBigEndian); $j++; } break; case 5: // URATIONAL if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $v = $origValue[$j]; if (is_array($v)) { $a = $v['num']; $b = $v['den']; } else { $a = 0; $b = 0; // TODO: Allow other types and convert them } $this->_putLong($value, $j * 8, $a, $isBigEndian); $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian); $j++; } while ($j < $count) { $this->_putLong($value, $j * 8, 0, $isBigEndian); $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian); $j++; } break; case 6: // SBYTE if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $this->_putByte($value, $j, $origValue[$j]); $j++; } while ($j < $count) { $this->_putByte($value, $j, 0); $j++; } break; case 7: // UNDEFINED $v = strval($origValue[0]); if (($count != 0) && (strlen($v) > $count)) { $v = substr($v, 0, $count); } elseif (($count > 0) && (strlen($v) < $count)) { $v = str_pad($v, $count, "\0"); } $count = strlen($v); $this->_putString($value, 0, $v); break; case 8: // SSHORT if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian); $j++; } while ($j < $count) { $this->_putShort($value, $j * 2, 0, $isBigEndian); $j++; } break; case 9: // SLONG if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian); $j++; } while ($j < $count) { $this->_putLong($value, $j * 4, 0, $isBigEndian); $j++; } break; case 10: // SRATIONAL if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $v = $origValue[$j]; if (is_array($v)) { $a = $v['num']; $b = $v['den']; } else { $a = 0; $b = 0; // TODO: Allow other types and convert them } $this->_putLong($value, $j * 8, $a, $isBigEndian); $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian); $j++; } while ($j < $count) { $this->_putLong($value, $j * 8, 0, $isBigEndian); $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian); $j++; } break; case 11: // FLOAT if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $v = strval($origValue[$j]); if (strlen($v) > 4) { $v = substr($v, 0, 4); } elseif (strlen($v) < 4) { $v = str_pad($v, 4, "\0"); } $this->_putString($value, $j * 4, $v); $j++; } while ($j < $count) { $this->_putString($value, $j * 4, "\0\0\0\0"); $j++; } break; case 12: // DFLOAT if ($count == 0) { $count = $origCount; } $j = 0; while (($j < $count) && ($j < $origCount)) { $v = strval($origValue[$j]); if (strlen($v) > 8) { $v = substr($v, 0, 8); } elseif (strlen($v) < 8) { $v = str_pad($v, 8, "\0"); } $this->_putString($value, $j * 8, $v); $j++; } while ($j < $count) { $this->_putString($value, $j * 8, "\0\0\0\0\0\0\0\0"); $j++; } break; default: $value = null; break; } } if ($value != null) { $ifdEntries[$entryCount] = array(); $ifdEntries[$entryCount]['tag'] = $tag; $ifdEntries[$entryCount]['type'] = $type; $ifdEntries[$entryCount]['count'] = $count; $ifdEntries[$entryCount]['value'] = $value; $entryCount++; } } return $ifdEntries; } /*************************************************************/ function _parseMarkerAdobe() { if (!isset($this->_markers)) { $this->_readJPEG(); } if ($this->_markers == null) { return false; } $data = null; $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { if ($this->_markers[$i]['marker'] == 0xED) { $signature = $this->_getFixedString($this->_markers[$i]['data'], 0, 14); if ($signature == "Photoshop 3.0\0") { $data =& $this->_markers[$i]['data']; break; } } } if ($data == null) { $this->_info['adobe'] = false; $this->_info['iptc'] = false; return false; } $pos = 14; $this->_info['adobe'] = array(); $this->_info['adobe']['raw'] = array(); $this->_info['iptc'] = array(); $datasize = strlen($data); while ($pos < $datasize) { $signature = $this->_getFixedString($data, $pos, 4); if ($signature != '8BIM') return false; $pos += 4; $type = $this->_getShort($data, $pos); $pos += 2; $strlen = $this->_getByte($data, $pos); $pos += 1; $header = ''; for ($i = 0; $i < $strlen; $i++) { $header .= $data{$pos + $i}; } $pos += $strlen + 1 - ($strlen % 2); // The string is padded to even length, counting the length byte itself $length = $this->_getLong($data, $pos); $pos += 4; $basePos = $pos; switch ($type) { case 0x0404: // Caption (IPTC Data) $pos = $this->_readIPTC($data, $pos); if ($pos == false) return false; break; case 0x040A: // CopyrightFlag $this->_info['adobe']['CopyrightFlag'] = $this->_getByte($data, $pos); $pos += $length; break; case 0x040B: // ImageURL $this->_info['adobe']['ImageURL'] = $this->_getFixedString($data, $pos, $length); $pos += $length; break; case 0x040C: // Thumbnail $aux = $this->_getLong($data, $pos); $pos += 4; if ($aux == 1) { $this->_info['adobe']['ThumbnailWidth'] = $this->_getLong($data, $pos); $pos += 4; $this->_info['adobe']['ThumbnailHeight'] = $this->_getLong($data, $pos); $pos += 4; $pos += 16; // Skip some data $this->_info['adobe']['ThumbnailData'] = $this->_getFixedString($data, $pos, $length - 28); $pos += $length - 28; } break; default: break; } // We save all blocks, even those we recognized $label = sprintf('8BIM_0x%04x', $type); $this->_info['adobe']['raw'][$label] = array(); $this->_info['adobe']['raw'][$label]['type'] = $type; $this->_info['adobe']['raw'][$label]['header'] = $header; $this->_info['adobe']['raw'][$label]['data'] =& $this->_getFixedString($data, $basePos, $length); $pos = $basePos + $length + ($length % 2); // Even padding } } /*************************************************************/ function _readIPTC(&$data, $pos = 0) { $totalLength = strlen($data); $IPTCTags =& $this->_iptcTagNames(); while ($pos < ($totalLength - 5)) { $signature = $this->_getShort($data, $pos); if ($signature != 0x1C02) return $pos; $pos += 2; $type = $this->_getByte($data, $pos); $pos += 1; $length = $this->_getShort($data, $pos); $pos += 2; $basePos = $pos; $label = ''; if (isset($IPTCTags[$type])) { $label = $IPTCTags[$type]; } else { $label = sprintf('IPTC_0x%02x', $type); } if ($label != '') { if (isset($this->_info['iptc'][$label])) { if (!is_array($this->_info['iptc'][$label])) { $aux = array(); $aux[0] = $this->_info['iptc'][$label]; $this->_info['iptc'][$label] = $aux; } $this->_info['iptc'][$label][ count($this->_info['iptc'][$label]) ] = $this->_getFixedString($data, $pos, $length); } else { $this->_info['iptc'][$label] = $this->_getFixedString($data, $pos, $length); } } $pos = $basePos + $length; // No padding } return $pos; } /*************************************************************/ function & _createMarkerAdobe() { if (isset($this->_info['iptc'])) { if (!isset($this->_info['adobe'])) { $this->_info['adobe'] = array(); } if (!isset($this->_info['adobe']['raw'])) { $this->_info['adobe']['raw'] = array(); } if (!isset($this->_info['adobe']['raw']['8BIM_0x0404'])) { $this->_info['adobe']['raw']['8BIM_0x0404'] = array(); } $this->_info['adobe']['raw']['8BIM_0x0404']['type'] = 0x0404; $this->_info['adobe']['raw']['8BIM_0x0404']['header'] = "Caption"; $this->_info['adobe']['raw']['8BIM_0x0404']['data'] =& $this->_writeIPTC(); } if (isset($this->_info['adobe']['raw']) && (count($this->_info['adobe']['raw']) > 0)) { $data = "Photoshop 3.0\0"; $pos = 14; reset($this->_info['adobe']['raw']); while (list($key) = each($this->_info['adobe']['raw'])) { $pos = $this->_write8BIM( $data, $pos, $this->_info['adobe']['raw'][$key]['type'], $this->_info['adobe']['raw'][$key]['header'], $this->_info['adobe']['raw'][$key]['data'] ); } } return $data; } /*************************************************************/ function _write8BIM(&$data, $pos, $type, $header, &$value) { $signature = "8BIM"; $pos = $this->_putString($data, $pos, $signature); $pos = $this->_putShort($data, $pos, $type); $len = strlen($header); $pos = $this->_putByte($data, $pos, $len); $pos = $this->_putString($data, $pos, $header); if (($len % 2) == 0) { // Even padding, including the length byte $pos = $this->_putByte($data, $pos, 0); } $len = strlen($value); $pos = $this->_putLong($data, $pos, $len); $pos = $this->_putString($data, $pos, $value); if (($len % 2) != 0) { // Even padding $pos = $this->_putByte($data, $pos, 0); } return $pos; } /*************************************************************/ function & _writeIPTC() { $data = " "; $pos = 0; $IPTCNames =& $this->_iptcNameTags(); reset($this->_info['iptc']); while (list($label) = each($this->_info['iptc'])) { $value =& $this->_info['iptc'][$label]; $type = -1; if (isset($IPTCNames[$label])) { $type = $IPTCNames[$label]; } elseif (substr($label, 0, 7) == "IPTC_0x") { $type = hexdec(substr($label, 7, 2)); } if ($type != -1) { if (is_array($value)) { $vcnt = count($value); for ($i = 0; $i < $vcnt; $i++) { $pos = $this->_writeIPTCEntry($data, $pos, $type, $value[$i]); } } else { $pos = $this->_writeIPTCEntry($data, $pos, $type, $value); } } } return $data; } /*************************************************************/ function _writeIPTCEntry(&$data, $pos, $type, &$value) { $pos = $this->_putShort($data, $pos, 0x1C02); $pos = $this->_putByte($data, $pos, $type); $pos = $this->_putShort($data, $pos, strlen($value)); $pos = $this->_putString($data, $pos, $value); return $pos; } /*************************************************************/ function _exifTagNames($mode) { $tags = array(); if ($mode == 'ifd0') { $tags[0x010E] = 'ImageDescription'; $tags[0x010F] = 'Make'; $tags[0x0110] = 'Model'; $tags[0x0112] = 'Orientation'; $tags[0x011A] = 'XResolution'; $tags[0x011B] = 'YResolution'; $tags[0x0128] = 'ResolutionUnit'; $tags[0x0131] = 'Software'; $tags[0x0132] = 'DateTime'; $tags[0x013B] = 'Artist'; $tags[0x013E] = 'WhitePoint'; $tags[0x013F] = 'PrimaryChromaticities'; $tags[0x0211] = 'YCbCrCoefficients'; $tags[0x0212] = 'YCbCrSubSampling'; $tags[0x0213] = 'YCbCrPositioning'; $tags[0x0214] = 'ReferenceBlackWhite'; $tags[0x8298] = 'Copyright'; $tags[0x8769] = 'ExifIFDOffset'; $tags[0x8825] = 'GPSIFDOffset'; } if ($mode == 'ifd1') { $tags[0x00FE] = 'TIFFNewSubfileType'; $tags[0x00FF] = 'TIFFSubfileType'; $tags[0x0100] = 'TIFFImageWidth'; $tags[0x0101] = 'TIFFImageHeight'; $tags[0x0102] = 'TIFFBitsPerSample'; $tags[0x0103] = 'TIFFCompression'; $tags[0x0106] = 'TIFFPhotometricInterpretation'; $tags[0x0107] = 'TIFFThreshholding'; $tags[0x0108] = 'TIFFCellWidth'; $tags[0x0109] = 'TIFFCellLength'; $tags[0x010A] = 'TIFFFillOrder'; $tags[0x010E] = 'TIFFImageDescription'; $tags[0x010F] = 'TIFFMake'; $tags[0x0110] = 'TIFFModel'; $tags[0x0111] = 'TIFFStripOffsets'; $tags[0x0112] = 'TIFFOrientation'; $tags[0x0115] = 'TIFFSamplesPerPixel'; $tags[0x0116] = 'TIFFRowsPerStrip'; $tags[0x0117] = 'TIFFStripByteCounts'; $tags[0x0118] = 'TIFFMinSampleValue'; $tags[0x0119] = 'TIFFMaxSampleValue'; $tags[0x011A] = 'TIFFXResolution'; $tags[0x011B] = 'TIFFYResolution'; $tags[0x011C] = 'TIFFPlanarConfiguration'; $tags[0x0122] = 'TIFFGrayResponseUnit'; $tags[0x0123] = 'TIFFGrayResponseCurve'; $tags[0x0128] = 'TIFFResolutionUnit'; $tags[0x0131] = 'TIFFSoftware'; $tags[0x0132] = 'TIFFDateTime'; $tags[0x013B] = 'TIFFArtist'; $tags[0x013C] = 'TIFFHostComputer'; $tags[0x0140] = 'TIFFColorMap'; $tags[0x0152] = 'TIFFExtraSamples'; $tags[0x0201] = 'TIFFJFIFOffset'; $tags[0x0202] = 'TIFFJFIFLength'; $tags[0x0211] = 'TIFFYCbCrCoefficients'; $tags[0x0212] = 'TIFFYCbCrSubSampling'; $tags[0x0213] = 'TIFFYCbCrPositioning'; $tags[0x0214] = 'TIFFReferenceBlackWhite'; $tags[0x8298] = 'TIFFCopyright'; $tags[0x9286] = 'TIFFUserComment'; } elseif ($mode == 'exif') { $tags[0x829A] = 'ExposureTime'; $tags[0x829D] = 'FNumber'; $tags[0x8822] = 'ExposureProgram'; $tags[0x8824] = 'SpectralSensitivity'; $tags[0x8827] = 'ISOSpeedRatings'; $tags[0x8828] = 'OECF'; $tags[0x9000] = 'EXIFVersion'; $tags[0x9003] = 'DatetimeOriginal'; $tags[0x9004] = 'DatetimeDigitized'; $tags[0x9101] = 'ComponentsConfiguration'; $tags[0x9102] = 'CompressedBitsPerPixel'; $tags[0x9201] = 'ShutterSpeedValue'; $tags[0x9202] = 'ApertureValue'; $tags[0x9203] = 'BrightnessValue'; $tags[0x9204] = 'ExposureBiasValue'; $tags[0x9205] = 'MaxApertureValue'; $tags[0x9206] = 'SubjectDistance'; $tags[0x9207] = 'MeteringMode'; $tags[0x9208] = 'LightSource'; $tags[0x9209] = 'Flash'; $tags[0x920A] = 'FocalLength'; $tags[0x927C] = 'MakerNote'; $tags[0x9286] = 'UserComment'; $tags[0x9290] = 'SubSecTime'; $tags[0x9291] = 'SubSecTimeOriginal'; $tags[0x9292] = 'SubSecTimeDigitized'; $tags[0xA000] = 'FlashPixVersion'; $tags[0xA001] = 'ColorSpace'; $tags[0xA002] = 'PixelXDimension'; $tags[0xA003] = 'PixelYDimension'; $tags[0xA004] = 'RelatedSoundFile'; $tags[0xA005] = 'InteropIFDOffset'; $tags[0xA20B] = 'FlashEnergy'; $tags[0xA20C] = 'SpatialFrequencyResponse'; $tags[0xA20E] = 'FocalPlaneXResolution'; $tags[0xA20F] = 'FocalPlaneYResolution'; $tags[0xA210] = 'FocalPlaneResolutionUnit'; $tags[0xA214] = 'SubjectLocation'; $tags[0xA215] = 'ExposureIndex'; $tags[0xA217] = 'SensingMethod'; $tags[0xA300] = 'FileSource'; $tags[0xA301] = 'SceneType'; $tags[0xA302] = 'CFAPattern'; } elseif ($mode == 'interop') { $tags[0x0001] = 'InteroperabilityIndex'; $tags[0x0002] = 'InteroperabilityVersion'; $tags[0x1000] = 'RelatedImageFileFormat'; $tags[0x1001] = 'RelatedImageWidth'; $tags[0x1002] = 'RelatedImageLength'; } elseif ($mode == 'gps') { $tags[0x0000] = 'GPSVersionID'; $tags[0x0001] = 'GPSLatitudeRef'; $tags[0x0002] = 'GPSLatitude'; $tags[0x0003] = 'GPSLongitudeRef'; $tags[0x0004] = 'GPSLongitude'; $tags[0x0005] = 'GPSAltitudeRef'; $tags[0x0006] = 'GPSAltitude'; $tags[0x0007] = 'GPSTimeStamp'; $tags[0x0008] = 'GPSSatellites'; $tags[0x0009] = 'GPSStatus'; $tags[0x000A] = 'GPSMeasureMode'; $tags[0x000B] = 'GPSDOP'; $tags[0x000C] = 'GPSSpeedRef'; $tags[0x000D] = 'GPSSpeed'; $tags[0x000E] = 'GPSTrackRef'; $tags[0x000F] = 'GPSTrack'; $tags[0x0010] = 'GPSImgDirectionRef'; $tags[0x0011] = 'GPSImgDirection'; $tags[0x0012] = 'GPSMapDatum'; $tags[0x0013] = 'GPSDestLatitudeRef'; $tags[0x0014] = 'GPSDestLatitude'; $tags[0x0015] = 'GPSDestLongitudeRef'; $tags[0x0016] = 'GPSDestLongitude'; $tags[0x0017] = 'GPSDestBearingRef'; $tags[0x0018] = 'GPSDestBearing'; $tags[0x0019] = 'GPSDestDistanceRef'; $tags[0x001A] = 'GPSDestDistance'; } return $tags; } /*************************************************************/ function _exifTagTypes($mode) { $tags = array(); if ($mode == 'ifd0') { $tags[0x010E] = array(2, 0); // ImageDescription -> ASCII, Any $tags[0x010F] = array(2, 0); // Make -> ASCII, Any $tags[0x0110] = array(2, 0); // Model -> ASCII, Any $tags[0x0112] = array(3, 1); // Orientation -> SHORT, 1 $tags[0x011A] = array(5, 1); // XResolution -> RATIONAL, 1 $tags[0x011B] = array(5, 1); // YResolution -> RATIONAL, 1 $tags[0x0128] = array(3, 1); // ResolutionUnit -> SHORT $tags[0x0131] = array(2, 0); // Software -> ASCII, Any $tags[0x0132] = array(2, 20); // DateTime -> ASCII, 20 $tags[0x013B] = array(2, 0); // Artist -> ASCII, Any $tags[0x013E] = array(5, 2); // WhitePoint -> RATIONAL, 2 $tags[0x013F] = array(5, 6); // PrimaryChromaticities -> RATIONAL, 6 $tags[0x0211] = array(5, 3); // YCbCrCoefficients -> RATIONAL, 3 $tags[0x0212] = array(3, 2); // YCbCrSubSampling -> SHORT, 2 $tags[0x0213] = array(3, 1); // YCbCrPositioning -> SHORT, 1 $tags[0x0214] = array(5, 6); // ReferenceBlackWhite -> RATIONAL, 6 $tags[0x8298] = array(2, 0); // Copyright -> ASCII, Any $tags[0x8769] = array(4, 1); // ExifIFDOffset -> LONG, 1 $tags[0x8825] = array(4, 1); // GPSIFDOffset -> LONG, 1 } if ($mode == 'ifd1') { $tags[0x00FE] = array(4, 1); // TIFFNewSubfileType -> LONG, 1 $tags[0x00FF] = array(3, 1); // TIFFSubfileType -> SHORT, 1 $tags[0x0100] = array(4, 1); // TIFFImageWidth -> LONG (or SHORT), 1 $tags[0x0101] = array(4, 1); // TIFFImageHeight -> LONG (or SHORT), 1 $tags[0x0102] = array(3, 3); // TIFFBitsPerSample -> SHORT, 3 $tags[0x0103] = array(3, 1); // TIFFCompression -> SHORT, 1 $tags[0x0106] = array(3, 1); // TIFFPhotometricInterpretation -> SHORT, 1 $tags[0x0107] = array(3, 1); // TIFFThreshholding -> SHORT, 1 $tags[0x0108] = array(3, 1); // TIFFCellWidth -> SHORT, 1 $tags[0x0109] = array(3, 1); // TIFFCellLength -> SHORT, 1 $tags[0x010A] = array(3, 1); // TIFFFillOrder -> SHORT, 1 $tags[0x010E] = array(2, 0); // TIFFImageDescription -> ASCII, Any $tags[0x010F] = array(2, 0); // TIFFMake -> ASCII, Any $tags[0x0110] = array(2, 0); // TIFFModel -> ASCII, Any $tags[0x0111] = array(4, 0); // TIFFStripOffsets -> LONG (or SHORT), Any (one per strip) $tags[0x0112] = array(3, 1); // TIFFOrientation -> SHORT, 1 $tags[0x0115] = array(3, 1); // TIFFSamplesPerPixel -> SHORT, 1 $tags[0x0116] = array(4, 1); // TIFFRowsPerStrip -> LONG (or SHORT), 1 $tags[0x0117] = array(4, 0); // TIFFStripByteCounts -> LONG (or SHORT), Any (one per strip) $tags[0x0118] = array(3, 0); // TIFFMinSampleValue -> SHORT, Any (SamplesPerPixel) $tags[0x0119] = array(3, 0); // TIFFMaxSampleValue -> SHORT, Any (SamplesPerPixel) $tags[0x011A] = array(5, 1); // TIFFXResolution -> RATIONAL, 1 $tags[0x011B] = array(5, 1); // TIFFYResolution -> RATIONAL, 1 $tags[0x011C] = array(3, 1); // TIFFPlanarConfiguration -> SHORT, 1 $tags[0x0122] = array(3, 1); // TIFFGrayResponseUnit -> SHORT, 1 $tags[0x0123] = array(3, 0); // TIFFGrayResponseCurve -> SHORT, Any (2^BitsPerSample) $tags[0x0128] = array(3, 1); // TIFFResolutionUnit -> SHORT, 1 $tags[0x0131] = array(2, 0); // TIFFSoftware -> ASCII, Any $tags[0x0132] = array(2, 20); // TIFFDateTime -> ASCII, 20 $tags[0x013B] = array(2, 0); // TIFFArtist -> ASCII, Any $tags[0x013C] = array(2, 0); // TIFFHostComputer -> ASCII, Any $tags[0x0140] = array(3, 0); // TIFFColorMap -> SHORT, Any (3 * 2^BitsPerSample) $tags[0x0152] = array(3, 0); // TIFFExtraSamples -> SHORT, Any (SamplesPerPixel - 3) $tags[0x0201] = array(4, 1); // TIFFJFIFOffset -> LONG, 1 $tags[0x0202] = array(4, 1); // TIFFJFIFLength -> LONG, 1 $tags[0x0211] = array(5, 3); // TIFFYCbCrCoefficients -> RATIONAL, 3 $tags[0x0212] = array(3, 2); // TIFFYCbCrSubSampling -> SHORT, 2 $tags[0x0213] = array(3, 1); // TIFFYCbCrPositioning -> SHORT, 1 $tags[0x0214] = array(5, 6); // TIFFReferenceBlackWhite -> RATIONAL, 6 $tags[0x8298] = array(2, 0); // TIFFCopyright -> ASCII, Any $tags[0x9286] = array(2, 0); // TIFFUserComment -> ASCII, Any } elseif ($mode == 'exif') { $tags[0x829A] = array(5, 1); // ExposureTime -> RATIONAL, 1 $tags[0x829D] = array(5, 1); // FNumber -> RATIONAL, 1 $tags[0x8822] = array(3, 1); // ExposureProgram -> SHORT, 1 $tags[0x8824] = array(2, 0); // SpectralSensitivity -> ASCII, Any $tags[0x8827] = array(3, 0); // ISOSpeedRatings -> SHORT, Any $tags[0x8828] = array(7, 0); // OECF -> UNDEFINED, Any $tags[0x9000] = array(7, 4); // EXIFVersion -> UNDEFINED, 4 $tags[0x9003] = array(2, 20); // DatetimeOriginal -> ASCII, 20 $tags[0x9004] = array(2, 20); // DatetimeDigitized -> ASCII, 20 $tags[0x9101] = array(7, 4); // ComponentsConfiguration -> UNDEFINED, 4 $tags[0x9102] = array(5, 1); // CompressedBitsPerPixel -> RATIONAL, 1 $tags[0x9201] = array(10, 1); // ShutterSpeedValue -> SRATIONAL, 1 $tags[0x9202] = array(5, 1); // ApertureValue -> RATIONAL, 1 $tags[0x9203] = array(10, 1); // BrightnessValue -> SRATIONAL, 1 $tags[0x9204] = array(10, 1); // ExposureBiasValue -> SRATIONAL, 1 $tags[0x9205] = array(5, 1); // MaxApertureValue -> RATIONAL, 1 $tags[0x9206] = array(5, 1); // SubjectDistance -> RATIONAL, 1 $tags[0x9207] = array(3, 1); // MeteringMode -> SHORT, 1 $tags[0x9208] = array(3, 1); // LightSource -> SHORT, 1 $tags[0x9209] = array(3, 1); // Flash -> SHORT, 1 $tags[0x920A] = array(5, 1); // FocalLength -> RATIONAL, 1 $tags[0x927C] = array(7, 0); // MakerNote -> UNDEFINED, Any $tags[0x9286] = array(7, 0); // UserComment -> UNDEFINED, Any $tags[0x9290] = array(2, 0); // SubSecTime -> ASCII, Any $tags[0x9291] = array(2, 0); // SubSecTimeOriginal -> ASCII, Any $tags[0x9292] = array(2, 0); // SubSecTimeDigitized -> ASCII, Any $tags[0xA000] = array(7, 4); // FlashPixVersion -> UNDEFINED, 4 $tags[0xA001] = array(3, 1); // ColorSpace -> SHORT, 1 $tags[0xA002] = array(4, 1); // PixelXDimension -> LONG (or SHORT), 1 $tags[0xA003] = array(4, 1); // PixelYDimension -> LONG (or SHORT), 1 $tags[0xA004] = array(2, 13); // RelatedSoundFile -> ASCII, 13 $tags[0xA005] = array(4, 1); // InteropIFDOffset -> LONG, 1 $tags[0xA20B] = array(5, 1); // FlashEnergy -> RATIONAL, 1 $tags[0xA20C] = array(7, 0); // SpatialFrequencyResponse -> UNDEFINED, Any $tags[0xA20E] = array(5, 1); // FocalPlaneXResolution -> RATIONAL, 1 $tags[0xA20F] = array(5, 1); // FocalPlaneYResolution -> RATIONAL, 1 $tags[0xA210] = array(3, 1); // FocalPlaneResolutionUnit -> SHORT, 1 $tags[0xA214] = array(3, 2); // SubjectLocation -> SHORT, 2 $tags[0xA215] = array(5, 1); // ExposureIndex -> RATIONAL, 1 $tags[0xA217] = array(3, 1); // SensingMethod -> SHORT, 1 $tags[0xA300] = array(7, 1); // FileSource -> UNDEFINED, 1 $tags[0xA301] = array(7, 1); // SceneType -> UNDEFINED, 1 $tags[0xA302] = array(7, 0); // CFAPattern -> UNDEFINED, Any } elseif ($mode == 'interop') { $tags[0x0001] = array(2, 0); // InteroperabilityIndex -> ASCII, Any $tags[0x0002] = array(7, 4); // InteroperabilityVersion -> UNKNOWN, 4 $tags[0x1000] = array(2, 0); // RelatedImageFileFormat -> ASCII, Any $tags[0x1001] = array(4, 1); // RelatedImageWidth -> LONG (or SHORT), 1 $tags[0x1002] = array(4, 1); // RelatedImageLength -> LONG (or SHORT), 1 } elseif ($mode == 'gps') { $tags[0x0000] = array(1, 4); // GPSVersionID -> BYTE, 4 $tags[0x0001] = array(2, 2); // GPSLatitudeRef -> ASCII, 2 $tags[0x0002] = array(5, 3); // GPSLatitude -> RATIONAL, 3 $tags[0x0003] = array(2, 2); // GPSLongitudeRef -> ASCII, 2 $tags[0x0004] = array(5, 3); // GPSLongitude -> RATIONAL, 3 $tags[0x0005] = array(2, 2); // GPSAltitudeRef -> ASCII, 2 $tags[0x0006] = array(5, 1); // GPSAltitude -> RATIONAL, 1 $tags[0x0007] = array(5, 3); // GPSTimeStamp -> RATIONAL, 3 $tags[0x0008] = array(2, 0); // GPSSatellites -> ASCII, Any $tags[0x0009] = array(2, 2); // GPSStatus -> ASCII, 2 $tags[0x000A] = array(2, 2); // GPSMeasureMode -> ASCII, 2 $tags[0x000B] = array(5, 1); // GPSDOP -> RATIONAL, 1 $tags[0x000C] = array(2, 2); // GPSSpeedRef -> ASCII, 2 $tags[0x000D] = array(5, 1); // GPSSpeed -> RATIONAL, 1 $tags[0x000E] = array(2, 2); // GPSTrackRef -> ASCII, 2 $tags[0x000F] = array(5, 1); // GPSTrack -> RATIONAL, 1 $tags[0x0010] = array(2, 2); // GPSImgDirectionRef -> ASCII, 2 $tags[0x0011] = array(5, 1); // GPSImgDirection -> RATIONAL, 1 $tags[0x0012] = array(2, 0); // GPSMapDatum -> ASCII, Any $tags[0x0013] = array(2, 2); // GPSDestLatitudeRef -> ASCII, 2 $tags[0x0014] = array(5, 3); // GPSDestLatitude -> RATIONAL, 3 $tags[0x0015] = array(2, 2); // GPSDestLongitudeRef -> ASCII, 2 $tags[0x0016] = array(5, 3); // GPSDestLongitude -> RATIONAL, 3 $tags[0x0017] = array(2, 2); // GPSDestBearingRef -> ASCII, 2 $tags[0x0018] = array(5, 1); // GPSDestBearing -> RATIONAL, 1 $tags[0x0019] = array(2, 2); // GPSDestDistanceRef -> ASCII, 2 $tags[0x001A] = array(5, 1); // GPSDestDistance -> RATIONAL, 1 } return $tags; } /*************************************************************/ function _exifNameTags($mode) { $tags = $this->_exifTagNames($mode); return $this->_names2Tags($tags); } /*************************************************************/ function _iptcTagNames() { $tags = array(); $tags[0x14] = 'SuplementalCategories'; $tags[0x19] = 'Keywords'; $tags[0x78] = 'Caption'; $tags[0x7A] = 'CaptionWriter'; $tags[0x69] = 'Headline'; $tags[0x28] = 'SpecialInstructions'; $tags[0x0F] = 'Category'; $tags[0x50] = 'Byline'; $tags[0x55] = 'BylineTitle'; $tags[0x6E] = 'Credit'; $tags[0x73] = 'Source'; $tags[0x74] = 'CopyrightNotice'; $tags[0x05] = 'ObjectName'; $tags[0x5A] = 'City'; $tags[0x5C] = 'Sublocation'; $tags[0x5F] = 'ProvinceState'; $tags[0x65] = 'CountryName'; $tags[0x67] = 'OriginalTransmissionReference'; $tags[0x37] = 'DateCreated'; $tags[0x0A] = 'CopyrightFlag'; return $tags; } /*************************************************************/ function & _iptcNameTags() { $tags = $this->_iptcTagNames(); return $this->_names2Tags($tags); } /*************************************************************/ function _names2Tags($tags2Names) { $names2Tags = array(); reset($tags2Names); while (list($tag, $name) = each($tags2Names)) { $names2Tags[$name] = $tag; } return $names2Tags; } /*************************************************************/ function _getByte(&$data, $pos) { return ord($data{$pos}); } /*************************************************************/ function _putByte(&$data, $pos, $val) { $val = intval($val); $data{$pos} = chr($val); return $pos + 1; } /*************************************************************/ function _getShort(&$data, $pos, $bigEndian = true) { if ($bigEndian) { return (ord($data{$pos}) << 8) + ord($data{$pos + 1}); } else { return ord($data{$pos}) + (ord($data{$pos + 1}) << 8); } } /*************************************************************/ function _putShort(&$data, $pos = 0, $val = 0, $bigEndian = true) { $val = intval($val); if ($bigEndian) { $data{$pos + 0} = chr(($val & 0x0000FF00) >> 8); $data{$pos + 1} = chr(($val & 0x000000FF) >> 0); } else { $data{$pos + 0} = chr(($val & 0x00FF) >> 0); $data{$pos + 1} = chr(($val & 0xFF00) >> 8); } return $pos + 2; } /*************************************************************/ function _getLong(&$data, $pos, $bigEndian = true) { if ($bigEndian) { return (ord($data{$pos}) << 24) + (ord($data{$pos + 1}) << 16) + (ord($data{$pos + 2}) << 8) + ord($data{$pos + 3}); } else { return ord($data{$pos}) + (ord($data{$pos + 1}) << 8) + (ord($data{$pos + 2}) << 16) + (ord($data{$pos + 3}) << 24); } } /*************************************************************/ function _putLong(&$data, $pos, $val, $bigEndian = true) { $val = intval($val); if ($bigEndian) { $data{$pos + 0} = chr(($val & 0xFF000000) >> 24); $data{$pos + 1} = chr(($val & 0x00FF0000) >> 16); $data{$pos + 2} = chr(($val & 0x0000FF00) >> 8); $data{$pos + 3} = chr(($val & 0x000000FF) >> 0); } else { $data{$pos + 0} = chr(($val & 0x000000FF) >> 0); $data{$pos + 1} = chr(($val & 0x0000FF00) >> 8); $data{$pos + 2} = chr(($val & 0x00FF0000) >> 16); $data{$pos + 3} = chr(($val & 0xFF000000) >> 24); } return $pos + 4; } /*************************************************************/ function & _getNullString(&$data, $pos) { $str = ''; $max = strlen($data); while ($pos < $max) { if (ord($data{$pos}) == 0) { return $str; } else { $str .= $data{$pos}; } $pos++; } return $str; } /*************************************************************/ function & _getFixedString(&$data, $pos, $length = -1) { if ($length == -1) { $length = strlen($data) - $pos; } return substr($data, $pos, $length); } /*************************************************************/ function _putString(&$data, $pos, &$str) { $len = strlen($str); for ($i = 0; $i < $len; $i++) { $data{$pos + $i} = $str{$i}; } return $pos + $len; } /*************************************************************/ function _hexDump(&$data, $start = 0, $length = -1) { if (($length == -1) || (($length + $start) > strlen($data))) { $end = strlen($data); } else { $end = $start + $length; } $ascii = ''; $count = 0; echo "\n"; while ($start < $end) { if (($count % 16) == 0) { echo sprintf('%04d', $count) . ': '; } $c = ord($data{$start}); $count++; $start++; $aux = dechex($c); if (strlen($aux) == 1) echo '0'; echo $aux . ' '; if ($c == 60) $ascii .= '<'; elseif ($c == 62) $ascii .= '>'; elseif ($c == 32) $ascii .= ' '; elseif ($c > 32) $ascii .= chr($c); else $ascii .= '.'; if (($count % 4) == 0) { echo ' - '; } if (($count % 16) == 0) { echo ': ' . $ascii . "
\n"; $ascii = ''; } } if ($ascii != '') { while (($count % 16) != 0) { echo '-- '; $count++; if (($count % 4) == 0) { echo ' - '; } } echo ': ' . $ascii . "
\n"; } echo "
\n"; } /*****************************************************************/ } /* vim: set expandtab tabstop=4 shiftwidth=4: */ splitbrain-dokuwiki-d6c824b/inc/SimplePie.php000066400000000000000000010572771134327003500213150ustar00rootroot00000000000000' . SIMPLEPIE_NAME . '
'); /** * No Autodiscovery * @see SimplePie::set_autodiscovery_level() */ define('SIMPLEPIE_LOCATOR_NONE', 0); /** * Feed Link Element Autodiscovery * @see SimplePie::set_autodiscovery_level() */ define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1); /** * Local Feed Extension Autodiscovery * @see SimplePie::set_autodiscovery_level() */ define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2); /** * Local Feed Body Autodiscovery * @see SimplePie::set_autodiscovery_level() */ define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4); /** * Remote Feed Extension Autodiscovery * @see SimplePie::set_autodiscovery_level() */ define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8); /** * Remote Feed Body Autodiscovery * @see SimplePie::set_autodiscovery_level() */ define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16); /** * All Feed Autodiscovery * @see SimplePie::set_autodiscovery_level() */ define('SIMPLEPIE_LOCATOR_ALL', 31); /** * No known feed type */ define('SIMPLEPIE_TYPE_NONE', 0); /** * RSS 0.90 */ define('SIMPLEPIE_TYPE_RSS_090', 1); /** * RSS 0.91 (Netscape) */ define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2); /** * RSS 0.91 (Userland) */ define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4); /** * RSS 0.91 (both Netscape and Userland) */ define('SIMPLEPIE_TYPE_RSS_091', 6); /** * RSS 0.92 */ define('SIMPLEPIE_TYPE_RSS_092', 8); /** * RSS 0.93 */ define('SIMPLEPIE_TYPE_RSS_093', 16); /** * RSS 0.94 */ define('SIMPLEPIE_TYPE_RSS_094', 32); /** * RSS 1.0 */ define('SIMPLEPIE_TYPE_RSS_10', 64); /** * RSS 2.0 */ define('SIMPLEPIE_TYPE_RSS_20', 128); /** * RDF-based RSS */ define('SIMPLEPIE_TYPE_RSS_RDF', 65); /** * Non-RDF-based RSS (truly intended as syndication format) */ define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190); /** * All RSS */ define('SIMPLEPIE_TYPE_RSS_ALL', 255); /** * Atom 0.3 */ define('SIMPLEPIE_TYPE_ATOM_03', 256); /** * Atom 1.0 */ define('SIMPLEPIE_TYPE_ATOM_10', 512); /** * All Atom */ define('SIMPLEPIE_TYPE_ATOM_ALL', 768); /** * All feed types */ define('SIMPLEPIE_TYPE_ALL', 1023); /** * No construct */ define('SIMPLEPIE_CONSTRUCT_NONE', 0); /** * Text construct */ define('SIMPLEPIE_CONSTRUCT_TEXT', 1); /** * HTML construct */ define('SIMPLEPIE_CONSTRUCT_HTML', 2); /** * XHTML construct */ define('SIMPLEPIE_CONSTRUCT_XHTML', 4); /** * base64-encoded construct */ define('SIMPLEPIE_CONSTRUCT_BASE64', 8); /** * IRI construct */ define('SIMPLEPIE_CONSTRUCT_IRI', 16); /** * A construct that might be HTML */ define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32); /** * All constructs */ define('SIMPLEPIE_CONSTRUCT_ALL', 63); /** * PCRE for HTML attributes */ define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[a-z0-9\-._:]*)))?)*)\s*'); /** * PCRE for XML attributes */ define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*'); /** * XML Namespace */ define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace'); /** * Atom 1.0 Namespace */ define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom'); /** * Atom 0.3 Namespace */ define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#'); /** * RDF Namespace */ define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'); /** * RSS 0.90 Namespace */ define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/'); /** * RSS 1.0 Namespace */ define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/'); /** * RSS 1.0 Content Module Namespace */ define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/'); /** * DC 1.0 Namespace */ define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/'); /** * DC 1.1 Namespace */ define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/'); /** * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace */ define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#'); /** * GeoRSS Namespace */ define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss'); /** * Media RSS Namespace */ define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/'); /** * iTunes RSS Namespace */ define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd'); /** * XHTML Namespace */ define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml'); /** * IANA Link Relations Registry */ define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/'); /** * Whether we're running on PHP5 */ define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>=')); /** * SimplePie * * @package SimplePie * @version "Razzleberry" * @copyright 2004-2007 Ryan Parman, Geoffrey Sneddon * @author Ryan Parman * @author Geoffrey Sneddon * @todo Option for type of fetching (cache, not modified header, fetch, etc.) */ class SimplePie { /** * @var array Raw data * @access private */ var $data = array(); /** * @var mixed Error string * @access private */ var $error; /** * @var object Instance of SimplePie_Sanitize (or other class) * @see SimplePie::set_sanitize_class() * @access private */ var $sanitize; /** * @var string SimplePie Useragent * @see SimplePie::set_useragent() * @access private */ var $useragent = SIMPLEPIE_USERAGENT; /** * @var string Feed URL * @see SimplePie::set_feed_url() * @access private */ var $feed_url; /** * @var object Instance of SimplePie_File to use as a feed * @see SimplePie::set_file() * @access private */ var $file; /** * @var string Raw feed data * @see SimplePie::set_raw_data() * @access private */ var $raw_data; /** * @var int Timeout for fetching remote files * @see SimplePie::set_timeout() * @access private */ var $timeout = 10; /** * @var bool Forces fsockopen() to be used for remote files instead * of cURL, even if a new enough version is installed * @see SimplePie::force_fsockopen() * @access private */ var $force_fsockopen = false; /** * @var bool Enable/Disable XML dump * @see SimplePie::enable_xml_dump() * @access private */ var $xml_dump = false; /** * @var bool Enable/Disable Caching * @see SimplePie::enable_cache() * @access private */ var $cache = true; /** * @var int Cache duration (in seconds) * @see SimplePie::set_cache_duration() * @access private */ var $cache_duration = 3600; /** * @var int Auto-discovery cache duration (in seconds) * @see SimplePie::set_autodiscovery_cache_duration() * @access private */ var $autodiscovery_cache_duration = 604800; // 7 Days. /** * @var string Cache location (relative to executing script) * @see SimplePie::set_cache_location() * @access private */ var $cache_location = './cache'; /** * @var string Function that creates the cache filename * @see SimplePie::set_cache_name_function() * @access private */ var $cache_name_function = 'md5'; /** * @var bool Reorder feed by date descending * @see SimplePie::enable_order_by_date() * @access private */ var $order_by_date = true; /** * @var mixed Force input encoding to be set to the follow value * (false, or anything type-cast to false, disables this feature) * @see SimplePie::set_input_encoding() * @access private */ var $input_encoding = false; /** * @var int Feed Autodiscovery Level * @see SimplePie::set_autodiscovery_level() * @access private */ var $autodiscovery = SIMPLEPIE_LOCATOR_ALL; /** * @var string Class used for caching feeds * @see SimplePie::set_cache_class() * @access private */ var $cache_class = 'SimplePie_Cache'; /** * @var string Class used for locating feeds * @see SimplePie::set_locator_class() * @access private */ var $locator_class = 'SimplePie_Locator'; /** * @var string Class used for parsing feeds * @see SimplePie::set_parser_class() * @access private */ var $parser_class = 'SimplePie_Parser'; /** * @var string Class used for fetching feeds * @see SimplePie::set_file_class() * @access private */ var $file_class = 'SimplePie_File'; /** * @var string Class used for items * @see SimplePie::set_item_class() * @access private */ var $item_class = 'SimplePie_Item'; /** * @var string Class used for authors * @see SimplePie::set_author_class() * @access private */ var $author_class = 'SimplePie_Author'; /** * @var string Class used for categories * @see SimplePie::set_category_class() * @access private */ var $category_class = 'SimplePie_Category'; /** * @var string Class used for enclosures * @see SimplePie::set_enclosures_class() * @access private */ var $enclosure_class = 'SimplePie_Enclosure'; /** * @var string Class used for Media RSS captions * @see SimplePie::set_caption_class() * @access private */ var $caption_class = 'SimplePie_Caption'; /** * @var string Class used for Media RSS * @see SimplePie::set_copyright_class() * @access private */ var $copyright_class = 'SimplePie_Copyright'; /** * @var string Class used for Media RSS * @see SimplePie::set_credit_class() * @access private */ var $credit_class = 'SimplePie_Credit'; /** * @var string Class used for Media RSS * @see SimplePie::set_rating_class() * @access private */ var $rating_class = 'SimplePie_Rating'; /** * @var string Class used for Media RSS * @see SimplePie::set_restriction_class() * @access private */ var $restriction_class = 'SimplePie_Restriction'; /** * @var mixed Set javascript query string parameter (false, or * anything type-cast to false, disables this feature) * @see SimplePie::set_javascript() * @access private */ var $javascript = 'js'; /** * @var int Maximum number of feeds to check with autodiscovery * @see SimplePie::set_max_checked_feeds() * @access private */ var $max_checked_feeds = 10; /** * @var string Web-accessible path to the handler_favicon.php file. * @see SimplePie::set_favicon_handler() * @access private */ var $favicon_handler = ''; /** * @var string Web-accessible path to the handler_image.php file. * @see SimplePie::set_image_handler() * @access private */ var $image_handler = ''; /** * @var array Stores the URLs when multiple feeds are being initialized. * @see SimplePie::set_feed_url() * @access private */ var $multifeed_url = array(); /** * @var array Stores SimplePie objects when multiple feeds initialized. * @access private */ var $multifeed_objects = array(); /** * @var array Stores the get_object_vars() array for use with multifeeds. * @see SimplePie::set_feed_url() * @access private */ var $config_settings = null; /** * @var array Stores the default attributes to be stripped by strip_attributes(). * @see SimplePie::strip_attributes() * @access private */ var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); /** * @var array Stores the default tags to be stripped by strip_htmltags(). * @see SimplePie::strip_htmltags() * @access private */ var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); /** * The SimplePie class contains feed level data and options * * There are two ways that you can create a new SimplePie object. The first * is by passing a feed URL as a parameter to the SimplePie constructor * (as well as optionally setting the cache location and cache expiry). This * will initialise the whole feed with all of the default settings, and you * can begin accessing methods and properties immediately. * * The second way is to create the SimplePie object with no parameters * at all. This will enable you to set configuration options. After setting * them, you must initialise the feed using $feed->init(). At that point the * object's methods and properties will be available to you. This format is * what is used throughout this documentation. * * @access public * @since 1.0 Preview Release * @param string $feed_url This is the URL you want to parse. * @param string $cache_location This is where you want the cache to be stored. * @param int $cache_duration This is the number of seconds that you want to store the cache file for. */ function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null) { // Other objects, instances created here so we can set options on them $this->sanitize = new SimplePie_Sanitize; // Set options if they're passed to the constructor if ($cache_location !== null) { $this->set_cache_location($cache_location); } if ($cache_duration !== null) { $this->set_cache_duration($cache_duration); } // Only init the script if we're passed a feed URL if ($feed_url !== null) { $this->set_feed_url($feed_url); $this->init(); } } /** * Used for converting object to a string */ function __toString() { return md5(serialize($this->data)); } /** * This is the URL of the feed you want to parse. * * This allows you to enter the URL of the feed you want to parse, or the * website you want to try to use auto-discovery on. This takes priority * over any set raw data. * * You can set multiple feeds to mash together by passing an array instead * of a string for the $url. Remember that with each additional feed comes * additional processing and resources. * * @access public * @since 1.0 Preview Release * @param mixed $url This is the URL (or array of URLs) that you want to parse. * @see SimplePie::set_raw_data() */ function set_feed_url($url) { if (is_array($url)) { $this->multifeed_url = array(); foreach ($url as $value) { $this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1); } } else { $this->feed_url = SimplePie_Misc::fix_protocol($url, 1); } } /** * Provides an instance of SimplePie_File to use as a feed * * @access public * @param object &$file Instance of SimplePie_File (or subclass) * @return bool True on success, false on failure */ function set_file(&$file) { if (SimplePie_Misc::is_a($file, 'SimplePie_File')) { $this->feed_url = $file->url; $this->file =& $file; return true; } return false; } /** * Allows you to use a string of RSS/Atom data instead of a remote feed. * * If you have a feed available as a string in PHP, you can tell SimplePie * to parse that data string instead of a remote feed. Any set feed URL * takes precedence. * * @access public * @since 1.0 Beta 3 * @param string $data RSS or Atom data as a string. * @see SimplePie::set_feed_url() */ function set_raw_data($data) { $this->raw_data = trim($data); } /** * Allows you to override the default timeout for fetching remote feeds. * * This allows you to change the maximum time the feed's server to respond * and send the feed back. * * @access public * @since 1.0 Beta 3 * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed. */ function set_timeout($timeout = 10) { $this->timeout = (int) $timeout; } /** * Forces SimplePie to use fsockopen() instead of the preferred cURL * functions. * * @access public * @since 1.0 Beta 3 * @param bool $enable Force fsockopen() to be used */ function force_fsockopen($enable = false) { $this->force_fsockopen = (bool) $enable; } /** * Outputs the raw XML content of the feed, after it has gone through * SimplePie's filters. * * Used only for debugging, this function will output the XML content as * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up * before trying to parse it. Many parts of the feed are re-written in * memory, and in the end, you have a parsable feed. XML dump shows you the * actual XML that SimplePie tries to parse, which may or may not be very * different from the original feed. * * @access public * @since 1.0 Preview Release * @param bool $enable Enable XML dump */ function enable_xml_dump($enable = false) { $this->xml_dump = (bool) $enable; } /** * Enables/disables caching in SimplePie. * * This option allows you to disable caching all-together in SimplePie. * However, disabling the cache can lead to longer load times. * * @access public * @since 1.0 Preview Release * @param bool $enable Enable caching */ function enable_cache($enable = true) { $this->cache = (bool) $enable; } /** * Set the length of time (in seconds) that the contents of a feed * will be cached. * * @access public * @param int $seconds The feed content cache duration. */ function set_cache_duration($seconds = 3600) { $this->cache_duration = (int) $seconds; } /** * Set the length of time (in seconds) that the autodiscovered feed * URL will be cached. * * @access public * @param int $seconds The autodiscovered feed URL cache duration. */ function set_autodiscovery_cache_duration($seconds = 604800) { $this->autodiscovery_cache_duration = (int) $seconds; } /** * Set the file system location where the cached files should be stored. * * @access public * @param string $location The file system location. */ function set_cache_location($location = './cache') { $this->cache_location = (string) $location; } /** * Determines whether feed items should be sorted into reverse chronological order. * * @access public * @param bool $enable Sort as reverse chronological order. */ function enable_order_by_date($enable = true) { $this->order_by_date = (bool) $enable; } /** * Allows you to override the character encoding reported by the feed. * * @access public * @param string $encoding Character encoding. */ function set_input_encoding($encoding = false) { if ($encoding) { $this->input_encoding = (string) $encoding; } else { $this->input_encoding = false; } } /** * Set how much feed autodiscovery to do * * @access public * @see SIMPLEPIE_LOCATOR_NONE * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION * @see SIMPLEPIE_LOCATOR_LOCAL_BODY * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION * @see SIMPLEPIE_LOCATOR_REMOTE_BODY * @see SIMPLEPIE_LOCATOR_ALL * @param int $level Feed Autodiscovery Level (level can be a * combination of the above constants, see bitwise OR operator) */ function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL) { $this->autodiscovery = (int) $level; } /** * Allows you to change which class SimplePie uses for caching. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_cache_class($class = 'SimplePie_Cache') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache')) { $this->cache_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for auto-discovery. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_locator_class($class = 'SimplePie_Locator') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator')) { $this->locator_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for XML parsing. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_parser_class($class = 'SimplePie_Parser') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser')) { $this->parser_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for remote file fetching. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_file_class($class = 'SimplePie_File') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File')) { $this->file_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for data sanitization. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_sanitize_class($class = 'SimplePie_Sanitize') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize')) { $this->sanitize = new $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for handling feed items. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_item_class($class = 'SimplePie_Item') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item')) { $this->item_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for handling author data. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_author_class($class = 'SimplePie_Author') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author')) { $this->author_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for handling category data. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_category_class($class = 'SimplePie_Category') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category')) { $this->category_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for feed enclosures. * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_enclosure_class($class = 'SimplePie_Enclosure') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure')) { $this->enclosure_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for captions * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_caption_class($class = 'SimplePie_Caption') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption')) { $this->caption_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_copyright_class($class = 'SimplePie_Copyright') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright')) { $this->copyright_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_credit_class($class = 'SimplePie_Credit') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit')) { $this->credit_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_rating_class($class = 'SimplePie_Rating') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating')) { $this->rating_class = $class; return true; } return false; } /** * Allows you to change which class SimplePie uses for * Useful when you are overloading or extending SimplePie's default classes. * * @access public * @param string $class Name of custom class. * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation */ function set_restriction_class($class = 'SimplePie_Restriction') { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction')) { $this->restriction_class = $class; return true; } return false; } /** * Allows you to override the default user agent string. * * @access public * @param string $ua New user agent string. */ function set_useragent($ua = SIMPLEPIE_USERAGENT) { $this->useragent = (string) $ua; } /** * Set callback function to create cache filename with * * @access public * @param mixed $function Callback function */ function set_cache_name_function($function = 'md5') { if (is_callable($function)) { $this->cache_name_function = $function; } } /** * Set javascript query string parameter * * @access public * @param mixed $get Javascript query string parameter */ function set_javascript($get = 'js') { if ($get) { $this->javascript = (string) $get; } else { $this->javascript = false; } } /** * Set options to make SP as fast as possible. Forgoes a * substantial amount of data sanitization in favor of speed. * * @access public * @param bool $set Whether to set them or not */ function set_stupidly_fast($set = false) { if ($set) { $this->enable_order_by_date(false); $this->remove_div(false); $this->strip_comments(false); $this->strip_htmltags(false); $this->strip_attributes(false); $this->set_image_handler(false); } } /** * Set maximum number of feeds to check with autodiscovery * * @access public * @param int $max Maximum number of feeds to check */ function set_max_checked_feeds($max = 10) { $this->max_checked_feeds = (int) $max; } function remove_div($enable = true) { $this->sanitize->remove_div($enable); } function strip_htmltags($tags = '', $encode = null) { if ($tags === '') { $tags = $this->strip_htmltags; } $this->sanitize->strip_htmltags($tags); if ($encode !== null) { $this->sanitize->encode_instead_of_strip($tags); } } function encode_instead_of_strip($enable = true) { $this->sanitize->encode_instead_of_strip($enable); } function strip_attributes($attribs = '') { if ($attribs === '') { $attribs = $this->strip_attributes; } $this->sanitize->strip_attributes($attribs); } function set_output_encoding($encoding = 'UTF-8') { $this->sanitize->set_output_encoding($encoding); } function strip_comments($strip = false) { $this->sanitize->strip_comments($strip); } /** * Set element/attribute key/value pairs of HTML attributes * containing URLs that need to be resolved relative to the feed * * @access public * @since 1.0 * @param array $element_attribute Element/attribute key/value pairs */ function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite')) { $this->sanitize->set_url_replacements($element_attribute); } /** * Set the handler to enable the display of cached favicons. * * @access public * @param str $page Web-accessible path to the handler_favicon.php file. * @param str $qs The query string that the value should be passed to. */ function set_favicon_handler($page = false, $qs = 'i') { if ($page != false) { $this->favicon_handler = $page . '?' . $qs . '='; } else { $this->favicon_handler = ''; } } /** * Set the handler to enable the display of cached images. * * @access public * @param str $page Web-accessible path to the handler_image.php file. * @param str $qs The query string that the value should be passed to. */ function set_image_handler($page = false, $qs = 'i') { if ($page != false) { $this->sanitize->set_image_handler($page . '?' . $qs . '='); } else { $this->image_handler = ''; } } function init() { if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.1.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre')) { return false; } if (isset($_GET[$this->javascript])) { if (function_exists('ob_gzhandler')) { ob_start('ob_gzhandler'); } header('Content-type: text/javascript; charset: UTF-8'); header('Cache-Control: must-revalidate'); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days ?> function embed_odeo(link) { document.writeln(''); } function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) { if (placeholder != '') { document.writeln(''); } else { document.writeln(''); } } function embed_flash(bgcolor, width, height, link, loop, type) { document.writeln(''); } function embed_flv(width, height, link, placeholder, loop, player) { document.writeln(''); } function embed_wmedia(width, height, link) { document.writeln(''); } sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class); $this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen); if ($this->feed_url !== null || $this->raw_data !== null) { $this->data = array(); $this->multifeed_objects = array(); $cache = false; if ($this->feed_url !== null) { $parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url); // Decide whether to enable caching if ($this->cache && $parsed_feed_url['scheme'] !== '') { $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc'); } // If it's enabled and we don't want an XML dump, use the cache if ($cache && !$this->xml_dump) { // Load the Cache $this->data = $cache->load(); if (!empty($this->data)) { // If the cache is for an outdated build of SimplePie if (!isset($this->data['build']) || $this->data['build'] != SIMPLEPIE_BUILD) { $cache->unlink(); $this->data = array(); } // If we've hit a collision just rerun it with caching disabled elseif (isset($this->data['url']) && $this->data['url'] != $this->feed_url) { $cache = false; $this->data = array(); } // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL. elseif (isset($this->data['feed_url'])) { // If the autodiscovery cache is still valid use it. if ($cache->mtime() + $this->autodiscovery_cache_duration > time()) { // Do not need to do feed autodiscovery yet. if ($this->data['feed_url'] == $this->data['url']) { $cache->unlink(); $this->data = array(); } else { $this->set_feed_url($this->data['feed_url']); return $this->init(); } } } // Check if the cache has been updated elseif ($cache->mtime() + $this->cache_duration < time()) { // If we have last-modified and/or etag set if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag'])) { $headers = array(); if (isset($this->data['headers']['last-modified'])) { $headers['if-modified-since'] = $this->data['headers']['last-modified']; } if (isset($this->data['headers']['etag'])) { $headers['if-none-match'] = $this->data['headers']['etag']; } $file = new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen); if ($file->success) { if ($file->status_code == 304) { $cache->touch(); return true; } else { $headers = $file->headers; } } else { unset($file); } } } // If the cache is still valid, just return true else { return true; } } // If the cache is empty, delete it else { $cache->unlink(); $this->data = array(); } } // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it. if (!isset($file)) { if (SimplePie_Misc::is_a($this->file, 'SimplePie_File') && $this->file->url == $this->feed_url) { $file =& $this->file; } else { $file = new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen); } } // If the file connection has an error, set SimplePie::error to that and quit if (!$file->success) { $this->error = $file->error; if (!empty($this->data)) { return true; } else { return false; } } // Check if the supplied URL is a feed, if it isn't, look for it. $locate = new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds); if (!$locate->is_feed($file)) { // We need to unset this so that if SimplePie::set_file() has been called that object is untouched unset($file); if ($file = $locate->find($this->autodiscovery)) { if ($cache) { if (!$cache->save(array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD))) { trigger_error("$cache->name is not writeable", E_USER_WARNING); } $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc'); } $this->feed_url = $file->url; } else { $this->error = "A feed could not be found at $this->feed_url"; SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__); return false; } } $locate = null; $headers = $file->headers; $data = trim($file->body); unset($file); } else { $data = $this->raw_data; } // First check to see if input has been overridden. if ($this->input_encoding !== false) { $encoding = $this->input_encoding; } // Second try HTTP headers elseif (isset($headers['content-type']) && preg_match('/;[\x09\x20]*charset=([^;]*)/i', $headers['content-type'], $charset)) { $encoding = $charset[1]; } // Then prolog, if at the very start of the document elseif (preg_match("/^<\?xml[\x20\x9\xD\xA]+version([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"1.0\"|'1.0'|\"1.1\"|'1.1')[\x20\x9\xD\xA]+encoding([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"[A-Za-z][A-Za-z0-9._\-]*\"|'[A-Za-z][A-Za-z0-9._\-]*')([\x20\x9\xD\xA]+standalone([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"(yes|no)\"|'(yes|no)'))?([\x20\x9\xD\xA]+)?\?>/", $data, $prolog)) { $encoding = substr($prolog[6], 1, -1); } // UTF-32 Big Endian BOM elseif (strpos($data, "\x0\x0\xFE\xFF") === 0) { $encoding = 'UTF-32be'; } // UTF-32 Little Endian BOM elseif (strpos($data, "\xFF\xFE\x0\x0") === 0) { $encoding = 'UTF-32'; } // UTF-16 Big Endian BOM elseif (strpos($data, "\xFE\xFF") === 0) { $encoding = 'UTF-16be'; } // UTF-16 Little Endian BOM elseif (strpos($data, "\xFF\xFE") === 0) { $encoding = 'UTF-16le'; } // UTF-8 BOM elseif (strpos($data, "\xEF\xBB\xBF") === 0) { $encoding = 'UTF-8'; } // Fallback to the default (US-ASCII for text/xml, ISO-8859-1 for text/* MIME types, UTF-8 otherwise) elseif (isset($headers['content-type']) && strtolower(SimplePie_Misc::parse_mime($headers['content-type'])) == 'text/xml') { $encoding = 'US-ASCII'; } elseif (isset($headers['content-type']) && SimplePie_Misc::stripos(SimplePie_Misc::parse_mime($headers['content-type']), 'text/') === 0) { $encoding = 'ISO-8859-1'; } else { $encoding = 'UTF-8'; } // Change the encoding to UTF-8 (as we always use UTF-8 internally) if ($encoding != 'UTF-8') { $data = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8'); } // Strip illegal characters $data = SimplePie_Misc::utf8_bad_replace($data); $parser = new $this->parser_class(); $parser->pre_process($data, 'UTF-8'); // If we want the XML, just output that and quit if ($this->xml_dump) { header('Content-type: text/xml; charset=UTF-8'); echo $data; exit; } // If it's parsed fine elseif ($parser->parse($data)) { unset($data); $this->data = $parser->get_data(); if (isset($this->data['child'])) { if (isset($headers)) { $this->data['headers'] = $headers; } $this->data['build'] = SIMPLEPIE_BUILD; // Cache the file if caching is enabled if ($cache && !$cache->save($this->data)) { trigger_error("$cache->name is not writeable", E_USER_WARNING); } return true; } else { $this->error = "A feed could not be found at $this->feed_url"; SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__); return false; } } // If we have an error, just set SimplePie::error to it and quit else { $this->error = sprintf('XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column()); SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__); return false; } } elseif (!empty($this->multifeed_url)) { $i = 0; $success = 0; $this->multifeed_objects = array(); foreach ($this->multifeed_url as $url) { if (SIMPLEPIE_PHP5) { // This keyword needs to defy coding standards for PHP4 compatibility $this->multifeed_objects[$i] = clone($this); } else { $this->multifeed_objects[$i] = $this; } $this->multifeed_objects[$i]->set_feed_url($url); $success |= $this->multifeed_objects[$i]->init(); $i++; } return (bool) $success; } else { return false; } } /** * Return the error message for the occured error * * @access public * @return string Error message */ function error() { return $this->error; } function get_encoding() { return $this->sanitize->output_encoding; } function handle_content_type($mime = 'text/html') { if (!headers_sent()) { $header = "Content-type: $mime;"; if ($this->get_encoding()) { $header .= ' charset=' . $this->get_encoding(); } else { $header .= ' charset=UTF-8'; } header($header); } } function get_type() { if (!isset($this->data['type'])) { $this->data['type'] = SIMPLEPIE_TYPE_ALL; if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'])) { $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10; } elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'])) { $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03; } elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'])) { if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel']) || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image']) || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']) || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput'])) { $this->data['type'] &= SIMPLEPIE_TYPE_RSS_10; } if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel']) || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image']) || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']) || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput'])) { $this->data['type'] &= SIMPLEPIE_TYPE_RSS_090; } } elseif (isset($this->data['child']['']['rss'])) { $this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL; if (isset($this->data['child']['']['rss'][0]['attribs']['']['version'])) { switch (trim($this->data['child']['']['rss'][0]['attribs']['']['version'])) { case '0.91': $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091; if (isset($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data'])) { switch (trim($this->data['child']['']['rss'][0]['child']['']['skiphours']['hour'][0]['data'])) { case '0': $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE; break; case '24': $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND; break; } } break; case '0.92': $this->data['type'] &= SIMPLEPIE_TYPE_RSS_092; break; case '0.93': $this->data['type'] &= SIMPLEPIE_TYPE_RSS_093; break; case '0.94': $this->data['type'] &= SIMPLEPIE_TYPE_RSS_094; break; case '2.0': $this->data['type'] &= SIMPLEPIE_TYPE_RSS_20; break; } } } else { $this->data['type'] = SIMPLEPIE_TYPE_NONE; } } return $this->data['type']; } /** * Returns the URL for the favicon of the feed's website. * * @access public * @since 1.0 */ function get_favicon() { if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } elseif (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url)) { $favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url); if ($this->cache && $this->favicon_handler) { $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $favicon), 'spi'); if ($cache->load()) { return $this->sanitize($this->favicon_handler . rawurlencode($favicon), SIMPLEPIE_CONSTRUCT_IRI); } else { $file = new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0) { if ($cache->save(array('headers' => $file->headers, 'body' => $file->body))) { return $this->sanitize($this->favicon_handler . rawurlencode($favicon), SIMPLEPIE_CONSTRUCT_IRI); } else { trigger_error("$cache->name is not writeable", E_USER_WARNING); return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI); } } } } else { return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI); } } return false; } /** * @todo If we have a perm redirect we should return the new URL * @todo When we make the above change, let's support as well * @todo Also, |atom:link|@rel=self */ function subscribe_url() { if ($this->feed_url !== null) { return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI); } else { return null; } } function subscribe_feed() { if ($this->feed_url !== null) { return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI); } else { return null; } } function subscribe_outlook() { if ($this->feed_url !== null) { return 'outlook' . $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI); } else { return null; } } function subscribe_podcast() { if ($this->feed_url !== null) { return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI); } else { return null; } } function subscribe_itunes() { if ($this->feed_url !== null) { return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI); } else { return null; } } /** * Creates the subscribe_* methods' return data * * @access private * @param string $feed_url String to prefix to the feed URL * @param string $site_url String to prefix to the site URL (and * suffix to the feed URL) * @return mixed URL if feed exists, false otherwise */ function subscribe_service($feed_url, $site_url = null) { if ($this->subscribe_url()) { $return = $this->sanitize($feed_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->subscribe_url()); if ($site_url !== null && $this->get_link() !== null) { $return .= $this->sanitize($site_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_link()); } return $return; } else { return null; } } function subscribe_aol() { return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url='); } function subscribe_bloglines() { return urldecode($this->subscribe_service('http://www.bloglines.com/sub/')); } function subscribe_eskobo() { return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage='); } function subscribe_feedfeeds() { return $this->subscribe_service('http://www.feedfeeds.com/add?feed='); } function subscribe_feedster() { return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl='); } function subscribe_google() { return $this->subscribe_service('http://fusion.google.com/add?feedurl='); } function subscribe_gritwire() { return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl='); } function subscribe_msn() { return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru='); } function subscribe_netvibes() { return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url='); } function subscribe_newsburst() { return $this->subscribe_service('http://www.newsburst.com/Source/?add='); } function subscribe_newsgator() { return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url='); } function subscribe_odeo() { return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed='); } function subscribe_podnova() { return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url='); } function subscribe_rojo() { return $this->subscribe_service('http://www.rojo.com/add-subscription?resource='); } function subscribe_yahoo() { return $this->subscribe_service('http://add.my.yahoo.com/rss?url='); } function get_feed_tags($namespace, $tag) { $type = $this->get_type(); if ($type & SIMPLEPIE_TYPE_ATOM_10) { if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag])) { return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]; } } if ($type & SIMPLEPIE_TYPE_ATOM_03) { if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag])) { return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]; } } if ($type & SIMPLEPIE_TYPE_RSS_RDF) { if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag])) { return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]; } } if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) { if (isset($this->data['child']['']['rss'][0]['child'][$namespace][$tag])) { return $this->data['child']['']['rss'][0]['child'][$namespace][$tag]; } } return null; } function get_channel_tags($namespace, $tag) { $type = $this->get_type(); if ($type & SIMPLEPIE_TYPE_ATOM_ALL) { if ($return = $this->get_feed_tags($namespace, $tag)) { return $return; } } if ($type & SIMPLEPIE_TYPE_RSS_10) { if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel')) { if (isset($channel[0]['child'][$namespace][$tag])) { return $channel[0]['child'][$namespace][$tag]; } } } if ($type & SIMPLEPIE_TYPE_RSS_090) { if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel')) { if (isset($channel[0]['child'][$namespace][$tag])) { return $channel[0]['child'][$namespace][$tag]; } } } if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) { if ($channel = $this->get_feed_tags('', 'channel')) { if (isset($channel[0]['child'][$namespace][$tag])) { return $channel[0]['child'][$namespace][$tag]; } } } return null; } function get_image_tags($namespace, $tag) { $type = $this->get_type(); if ($type & SIMPLEPIE_TYPE_RSS_10) { if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image')) { if (isset($image[0]['child'][$namespace][$tag])) { return $image[0]['child'][$namespace][$tag]; } } } if ($type & SIMPLEPIE_TYPE_RSS_090) { if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image')) { if (isset($image[0]['child'][$namespace][$tag])) { return $image[0]['child'][$namespace][$tag]; } } } if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) { if ($image = $this->get_channel_tags('', 'image')) { if (isset($image[0]['child'][$namespace][$tag])) { return $image[0]['child'][$namespace][$tag]; } } } return null; } function get_base($element = array()) { if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base'])) { return $element['xml_base']; } elseif ($this->get_link() !== null) { return $this->get_link(); } elseif (isset($this->data['headers']['content-location'])) { return SimplePie_Misc::absolutize_url($this->data['headers']['content-location'], $this->subscribe_url()); } else { return $this->subscribe_url(); } } function sanitize($data, $type, $base = '') { return $this->sanitize->sanitize($data, $type, $base); } function get_title() { if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags('', 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { return null; } } function get_link($key = 0, $rel = 'alternate') { $links = $this->get_links($rel); if (isset($links[$key])) { return $links[$key]; } else { return null; } } /** * Added for parity between the parent-level and the item/entry-level. */ function get_permalink() { return $this->get_link(0); } function get_links($rel = 'alternate') { if (!isset($this->data['links'])) { $this->data['links'] = array(); if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link')) { foreach ($links as $link) { if (isset($link['attribs']['']['href'])) { $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); } } } if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link')) { foreach ($links as $link) { if (isset($link['attribs']['']['href'])) { $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); } } } if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) { $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); } if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) { $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); } if ($links = $this->get_channel_tags('', 'link')) { $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); } $keys = array_keys($this->data['links']); foreach ($keys as $key) { if (SimplePie_Misc::is_isegment_nz_nc($key)) { if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) { $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; } else { $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; } } elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) { $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; } $this->data['links'][$key] = array_unique($this->data['links'][$key]); } } if (isset($this->data['links'][$rel])) { return $this->data['links'][$rel]; } else { return null; } } function get_description() { if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags('', 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); } else { return null; } } function get_copyright() { if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags('', 'copyright')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { return null; } } function get_language() { if ($return = $this->get_channel_tags('', 'language')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'])) { return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'])) { return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'])) { return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (isset($this->data['headers']['content-language'])) { return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT); } else { return null; } } function get_latitude() { if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) { return (float) $return[0]['data']; } elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match)) { return (float) $match[1]; } else { return null; } } function get_longitude() { if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) { return (float) $return[0]['data']; } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) { return (float) $return[0]['data']; } elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match)) { return (float) $match[2]; } else { return null; } } function get_image_title() { if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_image_tags('', 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { return null; } } function get_image_url() { if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image')) { return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } elseif ($return = $this->get_image_tags('', 'url')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } else { return null; } } function get_image_link() { if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } elseif ($return = $this->get_image_tags('', 'link')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); } else { return null; } } function get_image_width() { if ($return = $this->get_image_tags('', 'width')) { return round($return[0]['data']); } elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url')) { return 88.0; } else { return null; } } function get_image_height() { if ($return = $this->get_image_tags('', 'height')) { return round($return[0]['data']); } elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags('', 'url')) { return 31.0; } else { return null; } } function get_item_quantity($max = 0) { $qty = count($this->get_items()); if ($max == 0) { return $qty; } else { return ($qty > $max) ? $max : $qty; } } function get_item($key = 0) { $items = $this->get_items(); if (isset($items[$key])) { return $items[$key]; } else { return null; } } function get_items($start = 0, $end = 0) { if (!empty($this->multifeed_objects)) { return SimplePie::merge_items($this->multifeed_objects, $start, $end); } elseif (!isset($this->data['items'])) { if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry')) { $keys = array_keys($items); foreach ($keys as $key) { $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry')) { $keys = array_keys($items); foreach ($keys as $key) { $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item')) { $keys = array_keys($items); foreach ($keys as $key) { $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item')) { $keys = array_keys($items); foreach ($keys as $key) { $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_channel_tags('', 'item')) { $keys = array_keys($items); foreach ($keys as $key) { $this->data['items'][] = new $this->item_class($this, $items[$key]); } } } if (!empty($this->data['items'])) { // If we want to order it by date, check if all items have a date, and then sort it if ($this->order_by_date) { if (!isset($this->data['ordered_items'])) { $do_sort = true; foreach ($this->data['items'] as $item) { if (!$item->get_date('U')) { $do_sort = false; break; } } $item = null; $this->data['ordered_items'] = $this->data['items']; if ($do_sort) { usort($this->data['ordered_items'], array(&$this, 'sort_items')); } } $items = $this->data['ordered_items']; } else { $items = $this->data['items']; } // Slice the data as desired if ($end == 0) { return array_slice($items, $start); } else { return array_slice($items, $start, $end); } } else { return array(); } } function sort_items($a, $b) { return $a->get_date('U') <= $b->get_date('U'); } function merge_items($urls, $start = 0, $end = 0) { if (is_array($urls) && sizeof($urls) > 0) { $items = array(); foreach ($urls as $arg) { if (SimplePie_Misc::is_a($arg, 'SimplePie')) { $items = array_merge($items, $arg->get_items()); } else { trigger_error('Arguments must be SimplePie objects', E_USER_WARNING); } } $do_sort = true; foreach ($items as $item) { if (!$item->get_date('U')) { $do_sort = false; break; } } $item = null; if ($do_sort) { usort($items, array('SimplePie', 'sort_items')); } if ($end == 0) { return array_slice($items, $start); } else { return array_slice($items, $start, $end); } } else { trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING); return array(); } } } class SimplePie_Item { var $feed; var $data = array(); function SimplePie_Item($feed, $data) { $this->feed = $feed; $this->data = $data; } function __toString() { return md5(serialize($this->data)); } function get_item_tags($namespace, $tag) { if (isset($this->data['child'][$namespace][$tag])) { return $this->data['child'][$namespace][$tag]; } else { return null; } } function get_base($element = array()) { return $this->feed->get_base($element); } function sanitize($data, $type, $base = '') { return $this->feed->sanitize($data, $type, $base); } function get_feed() { return $this->feed; } function get_id($hash = false) { if ($hash) { return $this->__toString(); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_item_tags('', 'guid')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (($return = $this->get_permalink()) !== null) { return $return; } elseif (($return = $this->get_title()) !== null) { return $return; } else { return $this->__toString(); } } function get_title() { if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_item_tags('', 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { return null; } } function get_description($description_only = false) { if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_item_tags('', 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (!$description_only) { return $this->get_content(true); } else { return null; } } function get_content($content_only = false) { if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content')) { return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded')) { return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); } elseif (!$content_only) { return $this->get_description(true); } else { return null; } } function get_category($key = 0) { $categories = $this->get_categories(); if (isset($categories[$key])) { return $categories[$key]; } else { return null; } } function get_categories() { $categories = array(); foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) { $term = null; $scheme = null; $label = null; if (isset($category['attribs']['']['term'])) { $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($category['attribs']['']['scheme'])) { $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($category['attribs']['']['label'])) { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories[] = new $this->feed->category_class($term, $scheme, $label); } foreach ((array) $this->get_item_tags('', 'category') as $category) { $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) { $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) { $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } if (!empty($categories)) { return SimplePie_Misc::array_unique($categories); } else { return null; } } function get_author($key = 0) { $authors = $this->get_authors(); if (isset($authors[$key])) { return $authors[$key]; } else { return null; } } /** * @todo Atom inheritance (item author, source author, feed author) */ function get_authors() { $authors = array(); foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author) { $name = null; $uri = null; $email = null; if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) { $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) { $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); } if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) { $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if ($name !== null || $email !== null || $uri !== null) { $authors[] = new $this->feed->author_class($name, $uri, $email); } } if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) { $name = null; $url = null; $email = null; if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) { $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) { $uri = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); } if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) { $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if ($name !== null || $email !== null || $uri !== null) { $authors[] = new $this->feed->author_class($name, $url, $email); } } if ($author = $this->get_item_tags('', 'author')) { $authors[] = new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) { $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) { $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) { $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } if (!empty($authors)) { return SimplePie_Misc::array_unique($authors); } else { return null; } } function get_date($date_format = 'j F Y, g:i a') { if (!isset($this->data['date'])) { if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published')) { $this->data['date']['raw'] = $return[0]['data']; } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated')) { $this->data['date']['raw'] = $return[0]['data']; } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued')) { $this->data['date']['raw'] = $return[0]['data']; } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created')) { $this->data['date']['raw'] = $return[0]['data']; } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified')) { $this->data['date']['raw'] = $return[0]['data']; } elseif ($return = $this->get_item_tags('', 'pubDate')) { $this->data['date']['raw'] = $return[0]['data']; } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date')) { $this->data['date']['raw'] = $return[0]['data']; } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date')) { $this->data['date']['raw'] = $return[0]['data']; } if (!empty($this->data['date']['raw'])) { $this->data['date']['parsed'] = SimplePie_Misc::parse_date($this->data['date']['raw']); } else { $this->data['date'] = null; } } if ($this->data['date']) { $date_format = (string) $date_format; switch ($date_format) { case '': return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT); case 'U': return $this->data['date']['parsed']; default: return date($date_format, $this->data['date']['parsed']); } } else { return null; } } function get_local_date($date_format = '%c') { if (!$date_format) { return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT); } elseif (($date = $this->get_date('U')) !== null) { return strftime($date_format, $date); } else { return null; } } function get_permalink() { $link = $this->get_link(); $enclosure = $this->get_enclosure(0); if ($link !== null) { return $link; } elseif ($enclosure !== null) { return $enclosure->get_link(); } else { return null; } } function get_link($key = 0, $rel = 'alternate') { $links = $this->get_links($rel); if ($links[$key] !== null) { return $links[$key]; } else { return null; } } function get_links($rel = 'alternate') { if (!isset($this->data['links'])) { $this->data['links'] = array(); foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link) { if (isset($link['attribs']['']['href'])) { $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); } } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link) { if (isset($link['attribs']['']['href'])) { $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); } } if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) { $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); } if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) { $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); } if ($links = $this->get_item_tags('', 'link')) { $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); } if ($links = $this->get_item_tags('', 'guid')) { if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) == 'true') { $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); } } $keys = array_keys($this->data['links']); foreach ($keys as $key) { if (SimplePie_Misc::is_isegment_nz_nc($key)) { if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) { $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; } else { $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; } } elseif (substr($key, 0, 41) == SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) { $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; } $this->data['links'][$key] = array_unique($this->data['links'][$key]); } } if (isset($this->data['links'][$rel])) { return $this->data['links'][$rel]; } else { return null; } } /** * @todo Add ability to prefer one type of content over another (in a media group). */ function get_enclosure($key = 0, $prefer = null) { $enclosures = $this->get_enclosures(); if (isset($enclosures[$key])) { return $enclosures[$key]; } else { return null; } } /** * Grabs all available enclosures (podcasts, etc.) * * Supports the RSS tag, as well as Media RSS and iTunes RSS. * * At this point, we're pretty much assuming that all enclosures for an item are the same content. Anything else is too complicated to properly support. * * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4). * @todo Add support for itunes: tags. These should be relatively simple compared to media:. * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists). */ function get_enclosures() { if (!isset($this->data['enclosures'])) { $this->data['enclosures'] = array(); // Elements $captions_parent = null; $categories_parent = null; $copyrights_parent = null; $credits_parent = null; $description_parent = null; $duration_parent = null; $hashes_parent = null; $keywords_parent = null; $player_parent = null; $ratings_parent = null; $restrictions_parent = null; $thumbnails_parent = null; $title_parent = null; // Let's do the channel and item-level ones first, and just re-use them if we need to. $parent = $this->get_feed(); // CAPTIONS if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text')) { foreach ($captions as $caption) { $caption_type = null; $caption_lang = null; $caption_startTime = null; $caption_endTime = null; $caption_text = null; if (isset($caption['attribs']['']['type'])) { $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['lang'])) { $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['start'])) { $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['end'])) { $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['data'])) { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $captions_parent[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } } elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text')) { foreach ($captions as $caption) { $caption_type = null; $caption_lang = null; $caption_startTime = null; $caption_endTime = null; $caption_text = null; if (isset($caption['attribs']['']['type'])) { $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['lang'])) { $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['start'])) { $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['end'])) { $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['data'])) { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $captions_parent[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } } if (is_array($captions_parent)) { $captions_parent = array_values(SimplePie_Misc::array_unique($captions_parent)); } // CATEGORIES foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category) { $term = null; $scheme = null; $label = null; if (isset($category['data'])) { $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($category['attribs']['']['scheme'])) { $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $scheme = 'http://search.yahoo.com/mrss/category_schema'; } if (isset($category['attribs']['']['label'])) { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); } foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category) { $term = null; $scheme = null; $label = null; if (isset($category['data'])) { $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($category['attribs']['']['scheme'])) { $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $scheme = 'http://search.yahoo.com/mrss/category_schema'; } if (isset($category['attribs']['']['label'])) { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); } foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category) { $term = null; $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd'; $label = null; if (isset($category['attribs']['']['text'])) { $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'])) { foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory) { if (isset($subcategory['attribs']['']['text'])) { $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); } } } if (is_array($categories_parent)) { $categories_parent = array_values(SimplePie_Misc::array_unique($categories_parent)); } // COPYRIGHT if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright')) { $copyright_url = null; $copyright_label = null; if (isset($copyright[0]['attribs']['']['url'])) { $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($copyright[0]['data'])) { $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $copyrights_parent = new $this->feed->copyright_class($copyright_url, $copyright_label); } elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright')) { $copyright_url = null; $copyright_label = null; if (isset($copyright[0]['attribs']['']['url'])) { $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($copyright[0]['data'])) { $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $copyrights_parent = new $this->feed->copyright_class($copyright_url, $copyright_label); } // CREDITS if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit')) { foreach ($credits as $credit) { $credit_role = null; $credit_scheme = null; $credit_name = null; if (isset($credit['attribs']['']['role'])) { $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($credit['attribs']['']['scheme'])) { $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $credit_scheme = 'urn:ebu'; } if (isset($credit['data'])) { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $credits_parent[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } } elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit')) { foreach ($credits as $credit) { $credit_role = null; $credit_scheme = null; $credit_name = null; if (isset($credit['attribs']['']['role'])) { $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($credit['attribs']['']['scheme'])) { $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $credit_scheme = 'urn:ebu'; } if (isset($credit['data'])) { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $credits_parent[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } } if (is_array($credits_parent)) { $credits_parent = array_values(SimplePie_Misc::array_unique($credits_parent)); } // DESCRIPTION if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description')) { if (isset($description_parent[0]['data'])) { $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } } elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description')) { if (isset($description_parent[0]['data'])) { $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } } // DURATION if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration')) { $seconds = null; $minutes = null; $hours = null; if (isset($duration_parent[0]['data'])) { $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); if (sizeof($temp) > 0) { (int) $seconds = array_pop($temp); } if (sizeof($temp) > 0) { (int) $minutes = array_pop($temp); $seconds += $minutes * 60; } if (sizeof($temp) > 0) { (int) $hours = array_pop($temp); $seconds += $hours * 3600; } unset($temp); $duration_parent = $seconds; } } // HASHES if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash')) { foreach ($hashes_iterator as $hash) { $value = null; $algo = null; if (isset($hash['data'])) { $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($hash['attribs']['']['algo'])) { $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $algo = 'md5'; } $hashes_parent[] = $algo.':'.$value; } } elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash')) { foreach ($hashes_iterator as $hash) { $value = null; $algo = null; if (isset($hash['data'])) { $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($hash['attribs']['']['algo'])) { $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $algo = 'md5'; } $hashes_parent[] = $algo.':'.$value; } } if (is_array($hashes_parent)) { $hashes_parent = array_values(SimplePie_Misc::array_unique($hashes_parent)); } // KEYWORDS if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords')) { if (isset($keywords[0]['data'])) { $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); foreach ($temp as $word) { $keywords_parent[] = trim($word); } } unset($temp); } elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords')) { if (isset($keywords[0]['data'])) { $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); foreach ($temp as $word) { $keywords_parent[] = trim($word); } } unset($temp); } elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords')) { if (isset($keywords[0]['data'])) { $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); foreach ($temp as $word) { $keywords_parent[] = trim($word); } } unset($temp); } elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords')) { if (isset($keywords[0]['data'])) { $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); foreach ($temp as $word) { $keywords_parent[] = trim($word); } } unset($temp); } if (is_array($keywords_parent)) { $keywords_parent = array_values(SimplePie_Misc::array_unique($keywords_parent)); } // PLAYER if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player')) { if (isset($player_parent[0]['attribs']['']['url'])) { $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } } elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player')) { if (isset($player_parent[0]['attribs']['']['url'])) { $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } } // RATINGS if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating')) { foreach ($ratings as $rating) { $rating_scheme = null; $rating_value = null; if (isset($rating['attribs']['']['scheme'])) { $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $rating_scheme = 'urn:simple'; } if (isset($rating['data'])) { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) { foreach ($ratings as $rating) { $rating_scheme = 'urn:itunes'; $rating_value = null; if (isset($rating['data'])) { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating')) { foreach ($ratings as $rating) { $rating_scheme = null; $rating_value = null; if (isset($rating['attribs']['']['scheme'])) { $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $rating_scheme = 'urn:simple'; } if (isset($rating['data'])) { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) { foreach ($ratings as $rating) { $rating_scheme = 'urn:itunes'; $rating_value = null; if (isset($rating['data'])) { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } if (is_array($ratings_parent)) { $ratings_parent = array_values(SimplePie_Misc::array_unique($ratings_parent)); } // RESTRICTIONS if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction')) { foreach ($restrictions as $restriction) { $restriction_relationship = null; $restriction_type = null; $restriction_value = null; if (isset($restriction['attribs']['']['relationship'])) { $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['attribs']['']['type'])) { $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['data'])) { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) { foreach ($restrictions as $restriction) { $restriction_relationship = 'allow'; $restriction_type = null; $restriction_value = 'itunes'; if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes') { $restriction_relationship = 'deny'; } $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction')) { foreach ($restrictions as $restriction) { $restriction_relationship = null; $restriction_type = null; $restriction_value = null; if (isset($restriction['attribs']['']['relationship'])) { $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['attribs']['']['type'])) { $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['data'])) { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) { foreach ($restrictions as $restriction) { $restriction_relationship = 'allow'; $restriction_type = null; $restriction_value = 'itunes'; if (isset($restriction['data']) && strtolower($restriction['data']) == 'yes') { $restriction_relationship = 'deny'; } $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } if (is_array($restrictions_parent)) { $restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent)); } // THUMBNAILS if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail')) { foreach ($thumbnails as $thumbnail) { if (isset($thumbnail['attribs']['']['url'])) { $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } } } elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail')) { foreach ($thumbnails as $thumbnail) { if (isset($thumbnail['attribs']['']['url'])) { $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } } } // TITLES if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title')) { if (isset($title_parent[0]['data'])) { $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } } elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title')) { if (isset($title_parent[0]['data'])) { $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } } // Clear the memory unset($parent); // If we have media:group tags, loop through them. foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group) { // If we have media:content tags, loop through them. foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content) { if (isset($content['attribs']['']['url'])) { // Attributes $bitrate = null; $channels = null; $duration = null; $expression = null; $framerate = null; $height = null; $javascript = null; $lang = null; $length = null; $medium = null; $samplingrate = null; $type = null; $url = null; $width = null; // Elements $captions = null; $categories = null; $copyrights = null; $credits = null; $description = null; $hashes = null; $keywords = null; $player = null; $ratings = null; $restrictions = null; $thumbnails = null; $title = null; // Start checking the attributes of media:content if (isset($content['attribs']['']['bitrate'])) { $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['channels'])) { $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['duration'])) { $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $duration = $duration_parent; } if (isset($content['attribs']['']['expression'])) { $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['framerate'])) { $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['height'])) { $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['lang'])) { $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['fileSize'])) { $length = ceil($content['attribs']['']['fileSize']); } if (isset($content['attribs']['']['medium'])) { $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['samplingrate'])) { $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['type'])) { $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['width'])) { $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT); } $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); // Checking the other optional media: elements. Priority: media:content, media:group, item, channel // CAPTIONS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) { $caption_type = null; $caption_lang = null; $caption_startTime = null; $caption_endTime = null; $caption_text = null; if (isset($caption['attribs']['']['type'])) { $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['lang'])) { $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['start'])) { $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['end'])) { $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['data'])) { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } if (is_array($captions)) { $captions = array_values(SimplePie_Misc::array_unique($captions)); } } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) { foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) { $caption_type = null; $caption_lang = null; $caption_startTime = null; $caption_endTime = null; $caption_text = null; if (isset($caption['attribs']['']['type'])) { $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['lang'])) { $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['start'])) { $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['end'])) { $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['data'])) { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } if (is_array($captions)) { $captions = array_values(SimplePie_Misc::array_unique($captions)); } } else { $captions = $captions_parent; } // CATEGORIES if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) { foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) { $term = null; $scheme = null; $label = null; if (isset($category['data'])) { $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($category['attribs']['']['scheme'])) { $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $scheme = 'http://search.yahoo.com/mrss/category_schema'; } if (isset($category['attribs']['']['label'])) { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories[] = new $this->feed->category_class($term, $scheme, $label); } } if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) { foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) { $term = null; $scheme = null; $label = null; if (isset($category['data'])) { $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($category['attribs']['']['scheme'])) { $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $scheme = 'http://search.yahoo.com/mrss/category_schema'; } if (isset($category['attribs']['']['label'])) { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories[] = new $this->feed->category_class($term, $scheme, $label); } } if (is_array($categories) && is_array($categories_parent)) { $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent))); } elseif (is_array($categories)) { $categories = array_values(SimplePie_Misc::array_unique($categories)); } elseif (is_array($categories_parent)) { $categories = array_values(SimplePie_Misc::array_unique($categories_parent)); } // COPYRIGHTS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) { $copyright_url = null; $copyright_label = null; if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) { $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) { $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) { $copyright_url = null; $copyright_label = null; if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) { $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) { $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); } else { $copyrights = $copyrights_parent; } // CREDITS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) { $credit_role = null; $credit_scheme = null; $credit_name = null; if (isset($credit['attribs']['']['role'])) { $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($credit['attribs']['']['scheme'])) { $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $credit_scheme = 'urn:ebu'; } if (isset($credit['data'])) { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } if (is_array($credits)) { $credits = array_values(SimplePie_Misc::array_unique($credits)); } } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) { foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) { $credit_role = null; $credit_scheme = null; $credit_name = null; if (isset($credit['attribs']['']['role'])) { $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($credit['attribs']['']['scheme'])) { $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $credit_scheme = 'urn:ebu'; } if (isset($credit['data'])) { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } if (is_array($credits)) { $credits = array_values(SimplePie_Misc::array_unique($credits)); } } else { $credits = $credits_parent; } // DESCRIPTION if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) { $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) { $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $description = $description_parent; } // HASHES if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) { $value = null; $algo = null; if (isset($hash['data'])) { $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($hash['attribs']['']['algo'])) { $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $algo = 'md5'; } $hashes[] = $algo.':'.$value; } if (is_array($hashes)) { $hashes = array_values(SimplePie_Misc::array_unique($hashes)); } } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) { foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) { $value = null; $algo = null; if (isset($hash['data'])) { $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($hash['attribs']['']['algo'])) { $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $algo = 'md5'; } $hashes[] = $algo.':'.$value; } if (is_array($hashes)) { $hashes = array_values(SimplePie_Misc::array_unique($hashes)); } } else { $hashes = $hashes_parent; } // KEYWORDS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) { if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) { $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); foreach ($temp as $word) { $keywords[] = trim($word); } unset($temp); } if (is_array($keywords)) { $keywords = array_values(SimplePie_Misc::array_unique($keywords)); } } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) { if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) { $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); foreach ($temp as $word) { $keywords[] = trim($word); } unset($temp); } if (is_array($keywords)) { $keywords = array_values(SimplePie_Misc::array_unique($keywords)); } } else { $keywords = $keywords_parent; } // PLAYER if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) { $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) { $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } else { $player = $player_parent; } // RATINGS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) { $rating_scheme = null; $rating_value = null; if (isset($rating['attribs']['']['scheme'])) { $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $rating_scheme = 'urn:simple'; } if (isset($rating['data'])) { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); } if (is_array($ratings)) { $ratings = array_values(SimplePie_Misc::array_unique($ratings)); } } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) { foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) { $rating_scheme = null; $rating_value = null; if (isset($rating['attribs']['']['scheme'])) { $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $rating_scheme = 'urn:simple'; } if (isset($rating['data'])) { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); } if (is_array($ratings)) { $ratings = array_values(SimplePie_Misc::array_unique($ratings)); } } else { $ratings = $ratings_parent; } // RESTRICTIONS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) { $restriction_relationship = null; $restriction_type = null; $restriction_value = null; if (isset($restriction['attribs']['']['relationship'])) { $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['attribs']['']['type'])) { $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['data'])) { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } if (is_array($restrictions)) { $restrictions = array_values(SimplePie_Misc::array_unique($restrictions)); } } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) { foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) { $restriction_relationship = null; $restriction_type = null; $restriction_value = null; if (isset($restriction['attribs']['']['relationship'])) { $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['attribs']['']['type'])) { $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['data'])) { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } if (is_array($restrictions)) { $restrictions = array_values(SimplePie_Misc::array_unique($restrictions)); } } else { $restrictions = $restrictions_parent; } // THUMBNAILS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) { $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } if (is_array($thumbnails)) { $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails)); } } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) { foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) { $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } if (is_array($thumbnails)) { $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails)); } } else { $thumbnails = $thumbnails_parent; } // TITLES if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) { $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) { $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $title = $title_parent; } $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); } } } // If we have standalone media:content tags, loop through them. if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'])) { foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content) { if (isset($content['attribs']['']['url'])) { // Attributes $bitrate = null; $channels = null; $duration = null; $expression = null; $framerate = null; $height = null; $javascript = null; $lang = null; $length = null; $medium = null; $samplingrate = null; $type = null; $url = null; $width = null; // Elements $captions = null; $categories = null; $copyrights = null; $credits = null; $description = null; $hashes = null; $keywords = null; $player = null; $ratings = null; $restrictions = null; $thumbnails = null; $title = null; // Start checking the attributes of media:content if (isset($content['attribs']['']['bitrate'])) { $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['channels'])) { $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['duration'])) { $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $duration = $duration_parent; } if (isset($content['attribs']['']['expression'])) { $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['framerate'])) { $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['height'])) { $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['lang'])) { $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['fileSize'])) { $length = ceil($content['attribs']['']['fileSize']); } if (isset($content['attribs']['']['medium'])) { $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['samplingrate'])) { $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['type'])) { $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['attribs']['']['width'])) { $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT); } $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); // Checking the other optional media: elements. Priority: media:content, media:group, item, channel // CAPTIONS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) { $caption_type = null; $caption_lang = null; $caption_startTime = null; $caption_endTime = null; $caption_text = null; if (isset($caption['attribs']['']['type'])) { $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['lang'])) { $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['start'])) { $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['attribs']['']['end'])) { $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($caption['data'])) { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } if (is_array($captions)) { $captions = array_values(SimplePie_Misc::array_unique($captions)); } } else { $captions = $captions_parent; } // CATEGORIES if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) { foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) { $term = null; $scheme = null; $label = null; if (isset($category['data'])) { $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($category['attribs']['']['scheme'])) { $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $scheme = 'http://search.yahoo.com/mrss/category_schema'; } if (isset($category['attribs']['']['label'])) { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } $categories[] = new $this->feed->category_class($term, $scheme, $label); } } if (is_array($categories) && is_array($categories_parent)) { $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent))); } elseif (is_array($categories)) { $categories = array_values(SimplePie_Misc::array_unique($categories)); } elseif (is_array($categories_parent)) { $categories = array_values(SimplePie_Misc::array_unique($categories_parent)); } else { $categories = null; } // COPYRIGHTS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) { $copyright_url = null; $copyright_label = null; if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) { $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) { $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); } else { $copyrights = $copyrights_parent; } // CREDITS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) { $credit_role = null; $credit_scheme = null; $credit_name = null; if (isset($credit['attribs']['']['role'])) { $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($credit['attribs']['']['scheme'])) { $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $credit_scheme = 'urn:ebu'; } if (isset($credit['data'])) { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } if (is_array($credits)) { $credits = array_values(SimplePie_Misc::array_unique($credits)); } } else { $credits = $credits_parent; } // DESCRIPTION if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) { $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $description = $description_parent; } // HASHES if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) { $value = null; $algo = null; if (isset($hash['data'])) { $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($hash['attribs']['']['algo'])) { $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $algo = 'md5'; } $hashes[] = $algo.':'.$value; } if (is_array($hashes)) { $hashes = array_values(SimplePie_Misc::array_unique($hashes)); } } else { $hashes = $hashes_parent; } // KEYWORDS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) { if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) { $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); foreach ($temp as $word) { $keywords[] = trim($word); } unset($temp); } if (is_array($keywords)) { $keywords = array_values(SimplePie_Misc::array_unique($keywords)); } } else { $keywords = $keywords_parent; } // PLAYER if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) { $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } else { $player = $player_parent; } // RATINGS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) { $rating_scheme = null; $rating_value = null; if (isset($rating['attribs']['']['scheme'])) { $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $rating_scheme = 'urn:simple'; } if (isset($rating['data'])) { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); } if (is_array($ratings)) { $ratings = array_values(SimplePie_Misc::array_unique($ratings)); } } else { $ratings = $ratings_parent; } // RESTRICTIONS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) { $restriction_relationship = null; $restriction_type = null; $restriction_value = null; if (isset($restriction['attribs']['']['relationship'])) { $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['attribs']['']['type'])) { $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($restriction['data'])) { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } if (is_array($restrictions)) { $restrictions = array_values(SimplePie_Misc::array_unique($restrictions)); } } else { $restrictions = $restrictions_parent; } // THUMBNAILS if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) { foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) { $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); } if (is_array($thumbnails)) { $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails)); } } else { $thumbnails = $thumbnails_parent; } // TITLES if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) { $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } else { $title = $title_parent; } $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); } } } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link) { if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure') { // Attributes $bitrate = null; $channels = null; $duration = null; $expression = null; $framerate = null; $height = null; $javascript = null; $lang = null; $length = null; $medium = null; $samplingrate = null; $type = null; $url = null; $width = null; $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); if (isset($link['attribs']['']['type'])) { $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($link['attribs']['']['length'])) { $length = ceil($link['attribs']['']['length']); } // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); } } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link) { if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] == 'enclosure') { // Attributes $bitrate = null; $channels = null; $duration = null; $expression = null; $framerate = null; $height = null; $javascript = null; $lang = null; $length = null; $medium = null; $samplingrate = null; $type = null; $url = null; $width = null; $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); if (isset($link['attribs']['']['type'])) { $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($link['attribs']['']['length'])) { $length = ceil($link['attribs']['']['length']); } // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); } } if ($enclosure = $this->get_item_tags('', 'enclosure')) { if (isset($enclosure[0]['attribs']['']['url'])) { // Attributes $bitrate = null; $channels = null; $duration = null; $expression = null; $framerate = null; $height = null; $javascript = null; $lang = null; $length = null; $medium = null; $samplingrate = null; $type = null; $url = null; $width = null; $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0])); if (isset($enclosure[0]['attribs']['']['type'])) { $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); } if (isset($enclosure[0]['attribs']['']['length'])) { $length = ceil($enclosure[0]['attribs']['']['length']); } // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); } } $this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures'])); } if (!empty($this->data['enclosures'])) { return $this->data['enclosures']; } else { return null; } } function get_latitude() { if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) { return (float) $return[0]['data']; } elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match)) { return (float) $match[1]; } else { return null; } } function get_longitude() { if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) { return (float) $return[0]['data']; } elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) { return (float) $return[0]['data']; } elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', $return[0]['data'], $match)) { return (float) $match[2]; } else { return null; } } /** * Creates the add_to_* methods' return data * * @access private * @param string $item_url String to prefix to the item permalink * @param string $title_url String to prefix to the item title * (and suffix to the item permalink) * @return mixed URL if feed exists, false otherwise */ function add_to_service($item_url, $title_url = null) { if ($this->get_permalink() !== null) { $return = $this->sanitize($item_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_permalink()); if ($title_url !== null && $this->get_title() !== null) { $return .= $this->sanitize($title_url, SIMPLEPIE_CONSTRUCT_IRI) . rawurlencode($this->get_title()); } return $return; } else { return null; } } function add_to_blinklist() { return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title='); } function add_to_blogmarks() { return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title='); } function add_to_delicious() { return $this->add_to_service('http://del.icio.us/post/?v=3&url=', '&title='); } function add_to_digg() { return $this->add_to_service('http://digg.com/submit?phase=2&URL='); } function add_to_furl() { return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t='); } function add_to_magnolia() { return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title='); } function add_to_myweb20() { return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t='); } function add_to_newsvine() { return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h='); } function add_to_reddit() { return $this->add_to_service('http://reddit.com/submit?url=', '&title='); } function add_to_segnalo() { return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title='); } function add_to_simpy() { return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title='); } function add_to_spurl() { return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title='); } function add_to_wists() { return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title='); } function search_technorati() { return $this->add_to_service('http://www.technorati.com/search/'); } } class SimplePie_Author { var $name; var $link; var $email; // Constructor, used to input the data function SimplePie_Author($name = null, $link = null, $email = null) { $this->name = $name; $this->link = $link; $this->email = $email; } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_name() { if ($this->name !== null) { return $this->name; } else { return null; } } function get_link() { if ($this->link !== null) { return $this->link; } else { return null; } } function get_email() { if ($this->email !== null) { return $this->email; } else { return null; } } } class SimplePie_Category { var $term; var $scheme; var $label; // Constructor, used to input the data function SimplePie_Category($term = null, $scheme = null, $label = null) { $this->term = $term; $this->scheme = $scheme; $this->label = $label; } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_term() { if ($this->term !== null) { return $this->term; } else { return null; } } function get_scheme() { if ($this->scheme !== null) { return $this->scheme; } else { return null; } } function get_label() { if ($this->label !== null) { return $this->label; } else { return $this->get_term(); } } } class SimplePie_Enclosure { var $bitrate; var $captions; var $categories; var $channels; var $copyright; var $credits; var $description; var $duration; var $expression; var $framerate; var $handler; var $hashes; var $height; var $javascript; var $keywords; var $lang; var $length; var $link; var $medium; var $player; var $ratings; var $restrictions; var $samplingrate; var $thumbnails; var $title; var $type; var $width; // Constructor, used to input the data function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null) { $this->bitrate = $bitrate; $this->captions = $captions; $this->categories = $categories; $this->channels = $channels; $this->copyright = $copyright; $this->credits = $credits; $this->description = $description; $this->duration = $duration; $this->expression = $expression; $this->framerate = $framerate; $this->hashes = $hashes; $this->height = $height; $this->javascript = $javascript; $this->keywords = $keywords; $this->lang = $lang; $this->length = $length; $this->link = $link; $this->medium = $medium; $this->player = $player; $this->ratings = $ratings; $this->restrictions = $restrictions; $this->samplingrate = $samplingrate; $this->thumbnails = $thumbnails; $this->title = $title; $this->type = $type; $this->width = $width; if (class_exists('idna_convert')) { $idn = new idna_convert; $parsed = SimplePie_Misc::parse_url($link); $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); } $this->handler = $this->get_handler(); // Needs to load last } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_bitrate() { if ($this->bitrate !== null) { return $this->bitrate; } else { return null; } } function get_caption($key = 0) { $captions = $this->get_captions(); if (isset($captions[$key])) { return $captions[$key]; } else { return null; } } function get_captions() { if ($this->captions !== null) { return $this->captions; } else { return null; } } function get_category($key = 0) { $categories = $this->get_categories(); if (isset($categories[$key])) { return $categories[$key]; } else { return null; } } function get_categories() { if ($this->categories !== null) { return $this->categories; } else { return null; } } function get_channels() { if ($this->channels !== null) { return $this->channels; } else { return null; } } function get_copyright() { if ($this->copyright !== null) { return $this->copyright; } else { return null; } } function get_credit($key = 0) { $credits = $this->get_credits(); if (isset($credits[$key])) { return $credits[$key]; } else { return null; } } function get_credits() { if ($this->credits !== null) { return $this->credits; } else { return null; } } function get_description() { if ($this->description !== null) { return $this->description; } else { return null; } } function get_duration($convert = false) { if ($this->duration !== null) { if ($convert) { $time = SimplePie_Misc::time_hms($this->duration); return $time; } else { return $this->duration; } } else { return null; } } function get_expression() { if ($this->expression !== null) { return $this->expression; } else { return 'full'; } } function get_extension() { if ($this->link !== null) { $url = SimplePie_Misc::parse_url($this->link); if ($url['path'] !== '') { return pathinfo($url['path'], PATHINFO_EXTENSION); } } return null; } function get_framerate() { if ($this->framerate !== null) { return $this->framerate; } else { return null; } } function get_handler() { return $this->get_real_type(true); } function get_hash($key = 0) { $hashes = $this->get_hashes(); if (isset($hashes[$key])) { return $hashes[$key]; } else { return null; } } function get_hashes() { if ($this->hashes !== null) { return $this->hashes; } else { return null; } } function get_height() { if ($this->height !== null) { return $this->height; } else { return null; } } function get_language() { if ($this->lang !== null) { return $this->lang; } else { return null; } } function get_keyword($key = 0) { $keywords = $this->get_keywords(); if (isset($keywords[$key])) { return $keywords[$key]; } else { return null; } } function get_keywords() { if ($this->keywords !== null) { return $this->keywords; } else { return null; } } function get_length() { if ($this->length !== null) { return $this->length; } else { return null; } } function get_link() { if ($this->link !== null) { return urldecode($this->link); } else { return null; } } function get_medium() { if ($this->medium !== null) { return $this->medium; } else { return null; } } function get_player() { if ($this->player !== null) { return $this->player; } else { return null; } } function get_rating($key = 0) { $ratings = $this->get_ratings(); if (isset($ratings[$key])) { return $ratings[$key]; } else { return null; } } function get_ratings() { if ($this->ratings !== null) { return $this->ratings; } else { return null; } } function get_restriction($key = 0) { $restrictions = $this->get_restrictions(); if (isset($restrictions[$key])) { return $restrictions[$key]; } else { return null; } } function get_restrictions() { if ($this->restrictions !== null) { return $this->restrictions; } else { return null; } } function get_sampling_rate() { if ($this->samplingrate !== null) { return $this->samplingrate; } else { return null; } } function get_size() { $length = $this->get_length(); if ($length !== null) { return round($length/1048576, 2); } else { return null; } } function get_thumbnail($key = 0) { $thumbnails = $this->get_thumbnails(); if (isset($thumbnails[$key])) { return $thumbnails[$key]; } else { return null; } } function get_thumbnails() { if ($this->thumbnails !== null) { return $this->thumbnails; } else { return null; } } function get_title() { if ($this->title !== null) { return $this->title; } else { return null; } } function get_type() { if ($this->type !== null) { return $this->type; } else { return null; } } function get_width() { if ($this->width !== null) { return $this->width; } else { return null; } } function native_embed($options='') { return $this->embed($options, true); } /** * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'. */ function embed($options = '', $native = false) { // Set up defaults $audio = ''; $video = ''; $alt = ''; $altclass = ''; $loop = 'false'; $width = 'auto'; $height = 'auto'; $bgcolor = '#ffffff'; $mediaplayer = ''; $widescreen = false; $handler = $this->get_handler(); $type = $this->get_real_type(); // Process options and reassign values as necessary if (is_array($options)) { extract($options); } else { $options = explode(',', $options); foreach($options as $option) { $opt = explode(':', $option, 2); if (isset($opt[0], $opt[1])) { $opt[0] = trim($opt[0]); $opt[1] = trim($opt[1]); switch ($opt[0]) { case 'audio': $audio = $opt[1]; break; case 'video': $video = $opt[1]; break; case 'alt': $alt = $opt[1]; break; case 'altclass': $altclass = $opt[1]; break; case 'loop': $loop = $opt[1]; break; case 'width': $width = $opt[1]; break; case 'height': $height = $opt[1]; break; case 'bgcolor': $bgcolor = $opt[1]; break; case 'mediaplayer': $mediaplayer = $opt[1]; break; case 'widescreen': $widescreen = $opt[1]; break; } } } } $mime = explode('/', $type, 2); $mime = $mime[0]; // Process values for 'auto' if ($width == 'auto') { if ($mime == 'video') { if ($height == 'auto') { $width = 480; } elseif ($widescreen) { $width = round((intval($height)/9)*16); } else { $width = round((intval($height)/3)*4); } } else { $width = '100%'; } } if ($height == 'auto') { if ($mime == 'audio') { $height = 0; } elseif ($mime == 'video') { if ($width == 'auto') { if ($widescreen) { $height = 270; } else { $height = 360; } } elseif ($widescreen) { $height = round((intval($width)/16)*9); } else { $height = round((intval($width)/4)*3); } } else { $height = 376; } } elseif ($mime == 'audio') { $height = 0; } // Set proper placeholder value if ($mime == 'audio') { $placeholder = $audio; } elseif ($mime == 'video') { $placeholder = $video; } $embed = ''; // Make sure the JS library is included if (!$native) { static $javascript_outputted = null; if (!$javascript_outputted && $this->javascript) { $embed .= ''; $javascript_outputted = true; } } // Odeo Feed MP3's if ($handler == 'odeo') { if ($native) { $embed .= ''; } else { $embed .= ''; } } // Flash elseif ($handler == 'flash') { if ($native) { $embed .= "get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\">"; } else { $embed .= ""; } } // Flash Media Player file types. // Preferred handler for MP3 file types. elseif ($handler == 'fmedia' || ($handler == 'mp3' && $mediaplayer != '')) { $height += 20; if ($native) { $embed .= "get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\">"; } else { $embed .= ""; } } // QuickTime 7 file types. Need to test with QuickTime 6. // Only handle MP3's if the Flash Media Player is not present. elseif ($handler == 'quicktime' || ($handler == 'mp3' && $mediaplayer == '')) { $height += 16; if ($native) { if ($placeholder != ""){ $embed .= "get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\">"; } else { $embed .= "get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\">"; } } else { $embed .= ""; } } // Windows Media elseif ($handler == 'wmedia') { $height += 45; if ($native) { $embed .= "get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\">"; } else { $embed .= ""; } } // Everything else else $embed .= '' . $alt . ''; return $embed; } function get_real_type($find_handler = false) { // If it's Odeo, let's get it out of the way. if (substr(strtolower($this->get_link()), 0, 15) == 'http://odeo.com') { return 'odeo'; } // Mime-types by handler. $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash $types_fmedia = array('video/flv', 'video/x-flv'); // Flash Media Player $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3 if ($this->get_type() !== null) { $type = strtolower($this->type); } else { $type = null; } // If we encounter an unsupported mime-type, check the file extension and guess intelligently. if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3))) { switch (strtolower($this->get_extension())) { // Audio mime-types case 'aac': case 'adts': $type = 'audio/acc'; break; case 'aif': case 'aifc': case 'aiff': case 'cdda': $type = 'audio/aiff'; break; case 'bwf': $type = 'audio/wav'; break; case 'kar': case 'mid': case 'midi': case 'smf': $type = 'audio/midi'; break; case 'm4a': $type = 'audio/x-m4a'; break; case 'mp3': case 'swa': $type = 'audio/mp3'; break; case 'wav': $type = 'audio/wav'; break; case 'wax': $type = 'audio/x-ms-wax'; break; case 'wma': $type = 'audio/x-ms-wma'; break; // Video mime-types case '3gp': case '3gpp': $type = 'video/3gpp'; break; case '3g2': case '3gp2': $type = 'video/3gpp2'; break; case 'asf': $type = 'video/x-ms-asf'; break; case 'flv': $type = 'video/x-flv'; break; case 'm1a': case 'm1s': case 'm1v': case 'm15': case 'm75': case 'mp2': case 'mpa': case 'mpeg': case 'mpg': case 'mpm': case 'mpv': $type = 'video/mpeg'; break; case 'm4v': $type = 'video/x-m4v'; break; case 'mov': case 'qt': $type = 'video/quicktime'; break; case 'mp4': case 'mpg4': $type = 'video/mp4'; break; case 'sdv': $type = 'video/sd-video'; break; case 'wm': $type = 'video/x-ms-wm'; break; case 'wmv': $type = 'video/x-ms-wmv'; break; case 'wvx': $type = 'video/x-ms-wvx'; break; // Flash mime-types case 'spl': $type = 'application/futuresplash'; break; case 'swf': $type = 'application/x-shockwave-flash'; break; } } if ($find_handler) { if (in_array($type, $types_flash)) { return 'flash'; } elseif (in_array($type, $types_fmedia)) { return 'fmedia'; } elseif (in_array($type, $types_quicktime)) { return 'quicktime'; } elseif (in_array($type, $types_wmedia)) { return 'wmedia'; } elseif (in_array($type, $types_mp3)) { return 'mp3'; } else { return null; } } else { return $type; } } } class SimplePie_Caption { var $type; var $lang; var $startTime; var $endTime; var $text; // Constructor, used to input the data function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null) { $this->type = $type; $this->lang = $lang; $this->startTime = $startTime; $this->endTime = $endTime; $this->text = $text; } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_endtime() { if ($this->endTime !== null) { return $this->endTime; } else { return null; } } function get_language() { if ($this->language !== null) { return $this->language; } else { return null; } } function get_starttime() { if ($this->startTime !== null) { return $this->startTime; } else { return null; } } function get_text() { if ($this->text !== null) { return $this->text; } else { return null; } } function get_type() { if ($this->type !== null) { return $this->type; } else { return null; } } } class SimplePie_Credit { var $role; var $scheme; var $name; // Constructor, used to input the data function SimplePie_Credit($role = null, $scheme = null, $name = null) { $this->role = $role; $this->scheme = $scheme; $this->name = $name; } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_role() { if ($this->role !== null) { return $this->role; } else { return null; } } function get_scheme() { if ($this->scheme !== null) { return $this->scheme; } else { return null; } } function get_name() { if ($this->name !== null) { return $this->name; } else { return null; } } } class SimplePie_Copyright { var $url; var $label; // Constructor, used to input the data function SimplePie_Copyright($url = null, $label = null) { $this->url = $url; $this->label = $label; } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_url() { if ($this->url !== null) { return $this->url; } else { return null; } } function get_attribution() { if ($this->label !== null) { return $this->label; } else { return null; } } } class SimplePie_Rating { var $scheme; var $value; // Constructor, used to input the data function SimplePie_Rating($scheme = null, $value = null) { $this->scheme = $scheme; $this->value = $value; } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_scheme() { if ($this->scheme !== null) { return $this->scheme; } else { return null; } } function get_value() { if ($this->value !== null) { return $this->value; } else { return null; } } } class SimplePie_Restriction { var $relationship; var $type; var $value; // Constructor, used to input the data function SimplePie_Restriction($relationship = null, $type = null, $value = null) { $this->relationship = $relationship; $this->type = $type; $this->value = $value; } function __toString() { // There is no $this->data here return md5(serialize($this)); } function get_relationship() { if ($this->relationship !== null) { return $this->relationship; } else { return null; } } function get_type() { if ($this->type !== null) { return $this->type; } else { return null; } } function get_value() { if ($this->value !== null) { return $this->value; } else { return null; } } } /** * @todo Move to properly supporting RFC2616 (HTTP/1.1) */ class SimplePie_File { var $url; var $useragent; var $success = true; var $headers = array(); var $body; var $status_code; var $redirects = 0; var $error; var $method; function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) { if (class_exists('idna_convert')) { $idn = new idna_convert; $parsed = SimplePie_Misc::parse_url($url); $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); } $this->url = $url; $this->useragent = $useragent; if (preg_match('/^http(s)?:\/\//i', $url)) { if ($useragent === null) { $useragent = ini_get('user_agent'); $this->useragent = $useragent; } if (!is_array($headers)) { $headers = array(); } if (!$force_fsockopen && extension_loaded('curl')) { $this->method = 'curl'; $fp = curl_init(); $headers2 = array(); foreach ($headers as $key => $value) { $headers2[] = "$key: $value"; } if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>=')) { curl_setopt($fp, CURLOPT_ENCODING, ''); } curl_setopt($fp, CURLOPT_URL, $url); curl_setopt($fp, CURLOPT_HEADER, 1); curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1); curl_setopt($fp, CURLOPT_TIMEOUT, $timeout); curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($fp, CURLOPT_REFERER, $url); curl_setopt($fp, CURLOPT_USERAGENT, $useragent); curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2); if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>=')) { curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects); } $this->headers = curl_exec($fp); if (curl_errno($fp) == 23 || curl_errno($fp) == 61) { curl_setopt($fp, CURLOPT_ENCODING, 'none'); $this->headers = curl_exec($fp); } if (curl_errno($fp)) { $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp); $this->success = false; } else { $info = curl_getinfo($fp); curl_close($fp); $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1); $this->headers = array_pop($this->headers); $parser = new SimplePie_HTTP_Parser($this->headers); if ($parser->parse()) { $this->headers = $parser->headers; $this->body = $parser->body; $this->status_code = $parser->status_code; if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) { $this->redirects++; if (isset($this->headers['content-location'])) { $location = SimplePie_Misc::absolutize_url($this->headers['location'], SimplePie_Misc::absolutize_url($this->headers['content-location'], $url)); } else { $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); } return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); } } } } else { $this->method = 'fsockopen'; $url_parts = parse_url($url); if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) == 'https') { $url_parts['host'] = "ssl://$url_parts[host]"; $url_parts['port'] = 443; } if (!isset($url_parts['port'])) { $url_parts['port'] = 80; } $fp = fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout); if (!$fp) { $this->error = 'fsockopen error: ' . $errstr; $this->success = false; } else { if (function_exists('stream_set_timeout')) { stream_set_timeout($fp, $timeout); } else { socket_set_timeout($fp, $timeout); } if (isset($url_parts['path'])) { if (isset($url_parts['query'])) { $get = "$url_parts[path]?$url_parts[query]"; } else { $get = $url_parts['path']; } } else { $get = '/'; } $out = "GET $get HTTP/1.0\r\n"; $out .= "Host: $url_parts[host]\r\n"; $out .= "User-Agent: $useragent\r\n"; if (function_exists('gzinflate')) { $out .= "Accept-Encoding: gzip,deflate\r\n"; } if (isset($url_parts['user']) && isset($url_parts['pass'])) { $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n"; } foreach ($headers as $key => $value) { $out .= "$key: $value\r\n"; } $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); if (function_exists('stream_get_meta_data')) { $info = stream_get_meta_data($fp); } else { $info = socket_get_status($fp); } $this->headers = ''; while (!$info['eof'] && !$info['timed_out']) { $this->headers .= fread($fp, 1160); if (function_exists('stream_get_meta_data')) { $info = stream_get_meta_data($fp); } else { $info = socket_get_status($fp); } } if (!$info['timed_out']) { $parser = new SimplePie_HTTP_Parser($this->headers); if ($parser->parse()) { $this->headers = $parser->headers; $this->body = $parser->body; $this->status_code = $parser->status_code; if (($this->status_code == 300 || $this->status_code == 301 || $this->status_code == 302 || $this->status_code == 303 || $this->status_code == 307 || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) { $this->redirects++; if (isset($this->headers['content-location'])) { $location = SimplePie_Misc::absolutize_url($this->headers['location'], SimplePie_Misc::absolutize_url($this->headers['content-location'], $url)); } else { $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); } return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); } if (isset($this->headers['content-encoding']) && ($this->headers['content-encoding'] == 'gzip' || $this->headers['content-encoding'] == 'deflate')) { if (substr($this->body, 0, 8) == "\x1f\x8b\x08\x00\x00\x00\x00\x00") { $this->body = substr($this->body, 10); } $this->body = gzinflate($this->body); } } } else { $this->error = 'fsocket timed out'; $this->success = false; } fclose($fp); } } } elseif (function_exists('file_get_contents')) { $this->method = 'file_get_contents'; if (!$this->body = file_get_contents($url)) { $this->error = 'file_get_contents could not read the file'; $this->success = false; } } else { $this->method = 'fopen'; if (($fp = fopen($url, 'rb')) === false) { $this->error = 'failed to open stream: No such file or directory'; $this->success = false; } else { $this->body = ''; while (!feof($fp)) { $this->body .= fread($fp, 8192); } fclose($fp); } } } } /** * HTTP Response Parser * * @package SimplePie * @todo Support HTTP Requests */ class SimplePie_HTTP_Parser { /** * HTTP Version * * @access public * @var string */ var $http_version = ''; /** * Status code * * @access public * @var string */ var $status_code = ''; /** * Reason phrase * * @access public * @var string */ var $reason = ''; /** * Key/value pairs of the headers * * @access public * @var array */ var $headers = array(); /** * Body of the response * * @access public * @var string */ var $body = ''; /** * Current state of the state machine * * @access private * @var string */ var $state = 'start'; /** * Input data * * @access private * @var string */ var $data = ''; /** * Input data length (to avoid calling strlen() everytime this is needed) * * @access private * @var int */ var $data_length = 0; /** * Current position of the pointer * * @access private * @var int */ var $position = 0; /** * Name of the hedaer currently being parsed * * @access private * @var string */ var $name = ''; /** * Value of the hedaer currently being parsed * * @access private * @var string */ var $value = ''; /** * Create an instance of the class with the input data * * @access public * @param string $data Input data */ function SimplePie_HTTP_Parser($data) { $this->data = $data; $this->data_length = strlen($this->data); } /** * Parse the input data * * @access public * @return bool true on success, false on failure */ function parse() { while ($this->state && $this->state != 'emit' && $this->has_data()) { $state = $this->state; $this->$state(); } $this->data = ''; if ($this->state == 'emit') { return true; } else { $this->http_version = ''; $this->status_code = ''; $this->headers = array(); $this->body = ''; return false; } } /** * Check whether there is data beyond the pointer * * @access private * @return bool true if there is further data, false if not */ function has_data() { return (bool) ($this->position < $this->data_length); } /** * See if the next character is LWS * * @access private * @return bool true if the next character is LWS, false if not */ function is_linear_whitespace() { return (bool) (strspn($this->data, "\x09\x20", $this->position, 1) || (substr($this->data, $this->position, 2) == "\r\n" && strspn($this->data, "\x09\x20", $this->position + 2, 1)) || (strspn($this->data, "\r\n", $this->position, 1) && strspn($this->data, "\x09\x20", $this->position + 1, 1))); } /** * The starting state of the state machine, see if the data is a response or request * * @access private */ function start() { $this->state = 'http_version_response'; } /** * Parse an HTTP-version string * * @access private */ function http_version() { if (preg_match('/^HTTP\/([0-9]+\.[0-9]+)/i', substr($this->data, $this->position, strcspn($this->data, "\r\n", $this->position)), $match)) { $this->position += strlen($match[0]); $this->http_version = $match[1]; return true; } else { return false; } } /** * Parse LWS, replacing consecutive characters with a single space * * @access private */ function linear_whitespace() { do { if (substr($this->data, $this->position, 2) == "\r\n") { $this->position += 2; } elseif (strspn($this->data, "\r\n", $this->position, 1)) { $this->position++; } $this->position += strspn($this->data, "\x09\x20", $this->position); } while ($this->is_linear_whitespace()); $this->value .= "\x20"; } /** * Parse an HTTP-version string within a response * * @access private */ function http_version_response() { if ($this->http_version() && $this->data[$this->position] == "\x20") { $this->state = 'status_code'; $this->position++; } else { $this->state = false; } } /** * Parse a status code * * @access private */ function status_code() { if (strspn($this->data, '1234567890', $this->position, 3) == 3) { $this->status_code = substr($this->data, $this->position, 3); $this->state = 'reason_phrase'; $this->position += 3; } else { $this->state = false; } } /** * Skip over the reason phrase (it has no normative value, and you can send absolutely anything here) * * @access private */ function reason_phrase() { $len = strcspn($this->data, "\r\n", $this->position); $this->reason = substr($this->data, $this->position, $len); $this->position += $len; if ($this->has_data()) { if (substr($this->data, $this->position, 2) == "\r\n") { $this->position += 2; } elseif (strspn($this->data, "\r\n", $this->position, 1)) { $this->position++; } $this->state = 'name'; } } /** * Parse a header name * * @access private */ function name() { $len = strcspn($this->data, ':', $this->position); $this->name = substr($this->data, $this->position, $len); $this->position += $len; if ($this->has_data() && $this->data[$this->position] == ':') { $this->state = 'value_next'; $this->position++; } else { $this->state = false; } } /** * See what state to move the state machine to while within non-quoted header values * * @access private */ function value_next() { if ($this->is_linear_whitespace()) { $this->state = 'value_linear_whitespace'; } elseif ($this->data[$this->position] == '"') { $this->state = 'value_quote_next'; $this->position++; } elseif (substr($this->data, $this->position, 2) == "\r\n") { $this->state = 'end_crlf'; $this->position += 2; } elseif (strspn($this->data, "\r\n", $this->position, 1)) { $this->state = 'end_crlf'; $this->position++; } else { $this->state = 'value_no_quote'; } } /** * Parse a header value while outside quotes * * @access private */ function value_no_quote() { $len = strcspn($this->data, "\x09\x20\r\n\"", $this->position); $this->value .= substr($this->data, $this->position, $len); $this->state = 'value_next'; $this->position += $len; } /** * Parse LWS outside quotes * * @access private */ function value_linear_whitespace() { $this->linear_whitespace(); $this->state = 'value_next'; } /** * See what state to move the state machine to while within quoted header values * * @access private */ function value_quote_next() { if ($this->is_linear_whitespace()) { $this->state = 'value_linear_whitespace_quote'; } else { switch ($this->data[$this->position]) { case '"': $this->state = 'value_next'; $this->position++; break; case '\\': $this->state = 'value_quote_char'; $this->position++; break; default: $this->state = 'value_quote'; break; } } } /** * Parse a header value while within quotes * * @access private */ function value_quote() { $len = strcspn($this->data, "\x09\x20\r\n\"\\", $this->position); $this->value .= substr($this->data, $this->position, $len); $this->position += $len; $this->state = 'value_quote_next'; } /** * Parse an escaped character within quotes * * @access private */ function value_quote_char() { $this->value .= $this->data[$this->position]; $this->state = 'value_quote_next'; $this->position++; } /** * Parse LWS within quotes * * @access private */ function value_linear_whitespace_quote() { $this->linear_whitespace(); $this->state = 'value_quote_next'; } /** * Parse a CRLF, and see whether we have a further header, or whether we are followed by the body * * @access private */ function end_crlf() { $this->name = strtolower($this->name); $this->value = trim($this->value, "\x20"); if (isset($this->headers[$this->name])) { $this->headers[$this->name] .= ', ' . $this->value; } else { $this->headers[$this->name] = $this->value; } if (substr($this->data, $this->position, 2) == "\r\n") { $this->body = substr($this->data, $this->position + 2); $this->state = 'emit'; } elseif (strspn($this->data, "\r\n", $this->position, 1)) { $this->body = substr($this->data, $this->position + 1); $this->state = 'emit'; } else { $this->name = ''; $this->value = ''; $this->state = 'name'; } } } class SimplePie_Cache { var $location; var $filename; var $extension; var $name; function SimplePie_Cache($location, $filename, $extension) { $this->location = $location; $this->filename = rawurlencode($filename); $this->extension = rawurlencode($extension); $this->name = "$location/$this->filename.$this->extension"; } function save($data) { if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location)) { if (function_exists('file_put_contents')) { return (bool) file_put_contents($this->name, serialize($data)); } else { $fp = fopen($this->name, 'wb'); if ($fp) { fwrite($fp, serialize($data)); fclose($fp); return true; } } } return false; } function load() { if (file_exists($this->name) && is_readable($this->name)) { if (function_exists('file_get_contents')) { return unserialize(file_get_contents($this->name)); } elseif (($fp = fopen($this->name, 'rb')) !== false) { $data = ''; while (!feof($fp)) { $data .= fread($fp, 8192); } fclose($fp); return unserialize($data); } } return false; } function mtime() { if (file_exists($this->name)) { return filemtime($this->name); } return false; } function touch() { if (file_exists($this->name)) { return touch($this->name); } return false; } function unlink() { if (file_exists($this->name)) { return unlink($this->name); } return false; } } class SimplePie_Misc { function time_hms($seconds) { $time = ''; $hours = floor($seconds / 3600); $remainder = $seconds % 3600; if ($hours > 0) { $time .= $hours.':'; } $minutes = floor($remainder / 60); $seconds = $remainder % 60; if ($minutes < 10 && $hours > 0) { $minutes = '0' . $minutes; } if ($seconds < 10) { $seconds = '0' . $seconds; } $time .= $minutes.':'; $time .= $seconds; return $time; } function absolutize_url($relative, $base) { if ($relative !== '') { $relative = SimplePie_Misc::parse_url($relative); if ($relative['scheme'] !== '') { $target = $relative; } elseif ($base !== '') { $base = SimplePie_Misc::parse_url($base); $target = SimplePie_Misc::parse_url(''); if ($relative['authority'] !== '') { $target = $relative; $target['scheme'] = $base['scheme']; } else { $target['scheme'] = $base['scheme']; $target['authority'] = $base['authority']; if ($relative['path'] !== '') { if (strpos($relative['path'], '/') === 0) { $target['path'] = $relative['path']; } elseif (($target['path'] = dirname("$base[path].")) == '/') { $target['path'] .= $relative['path']; } else { $target['path'] .= '/' . $relative['path']; } if ($relative['query'] !== '') { $target['query'] = $relative['query']; } } else { if ($base['path'] !== '') { $target['path'] = $base['path']; } else { $target['path'] = '/'; } if ($relative['query'] !== '') { $target['query'] = $relative['query']; } elseif ($base['query'] !== '') { $target['query'] = $base['query']; } } } if ($relative['fragment'] !== '') { $target['fragment'] = $relative['fragment']; } } else { // No base URL, just return the relative URL $target = $relative; } $return = SimplePie_Misc::compress_parse_url($target['scheme'], $target['authority'], $target['path'], $target['query'], $target['fragment']); } else { $return = $base; } $return = SimplePie_Misc::normalize_url($return); return $return; } function remove_dot_segments($input) { $output = ''; while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input == '.' || $input == '..') { // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise, if (strpos($input, '../') === 0) { $input = substr($input, 3); } elseif (strpos($input, './') === 0) { $input = substr($input, 2); } // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise, elseif (strpos($input, '/./') === 0) { $input = substr_replace($input, '/', 0, 3); } elseif ($input == '/.') { $input = '/'; } // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise, elseif (strpos($input, '/../') === 0) { $input = substr_replace($input, '/', 0, 4); $output = substr_replace($output, '', strrpos($output, '/')); } elseif ($input == '/..') { $input = '/'; $output = substr_replace($output, '', strrpos($output, '/')); } // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise, elseif ($input == '.' || $input == '..') { $input = ''; } // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer elseif (($pos = strpos($input, '/', 1)) !== false) { $output .= substr($input, 0, $pos); $input = substr_replace($input, '', 0, $pos); } else { $output .= $input; $input = ''; } } return $output . $input; } function get_element($realname, $string) { $return = array(); $name = preg_quote($realname, '/'); if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) { for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++) { $return[$i]['tag'] = $realname; $return[$i]['full'] = $matches[$i][0][0]; $return[$i]['offset'] = $matches[$i][0][1]; if (strlen($matches[$i][3][0]) <= 2) { $return[$i]['self_closing'] = true; } else { $return[$i]['self_closing'] = false; $return[$i]['content'] = $matches[$i][4][0]; } $return[$i]['attribs'] = array(); if (isset($matches[$i][2][0]) && preg_match_all('/((?:[^\s:]+:)?[^\s:]+)(?:\s*=\s*(?:"([^"]*)"|\'([^\']*)\'|([a-z0-9\-._:]*)))?\s/U', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER)) { for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++) { if (count($attribs[$j]) == 2) { $attribs[$j][2] = $attribs[$j][1]; } $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8'); } } } } return $return; } function element_implode($element) { $full = "<$element[tag]"; foreach ($element['attribs'] as $key => $value) { $key = strtolower($key); $full .= " $key=\"" . htmlspecialchars($value['data']) . '"'; } if ($element['self_closing']) { $full .= ' />'; } else { $full .= ">$element[content]"; } return $full; } function error($message, $level, $file, $line) { switch ($level) { case E_USER_ERROR: $note = 'PHP Error'; break; case E_USER_WARNING: $note = 'PHP Warning'; break; case E_USER_NOTICE: $note = 'PHP Notice'; break; default: $note = 'Unknown Error'; break; } error_log("$note: $message in $file on line $line", 0); return $message; } /** * If a file has been cached, retrieve and display it. * * This is most useful for caching images (get_favicon(), etc.), * however it works for all cached files. This WILL NOT display ANY * file/image/page/whatever, but rather only display what has already * been cached by SimplePie. * * @access public * @see SimplePie::get_favicon() * @param str $identifier_url URL that is used to identify the content. * This may or may not be the actual URL of the live content. * @param str $cache_location Location of SimplePie's cache. Defaults * to './cache'. * @param str $cache_extension The file extension that the file was * cached with. Defaults to 'spc'. * @param str $cache_class Name of the cache-handling class being used * in SimplePie. Defaults to 'SimplePie_Cache', and should be left * as-is unless you've overloaded the class. * @param str $cache_name_function Function that converts the filename * for saving. Defaults to 'md5'. */ function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5') { $cache = new $cache_class($cache_location, call_user_func($cache_name_function, $identifier_url), $cache_extension); if ($file = $cache->load()) { header('Content-type:' . $file['headers']['content-type']); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days echo $file['body']; exit; } die('Cached file for ' . $identifier_url . ' cannot be found.'); } function fix_protocol($url, $http = 1) { $url = SimplePie_Misc::normalize_url($url); $parsed = SimplePie_Misc::parse_url($url); if ($parsed['scheme'] !== '' && $parsed['scheme'] != 'http' && $parsed['scheme'] != 'https') { return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http); } if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url)) { return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http); } if ($http == 2 && $parsed['scheme'] !== '') { return "feed:$url"; } elseif ($http == 3 && strtolower($parsed['scheme']) == 'http') { return substr_replace($url, 'podcast', 0, 4); } elseif ($http == 4 && strtolower($parsed['scheme']) == 'http') { return substr_replace($url, 'itpc', 0, 4); } else { return $url; } } function parse_url($url) { static $cache = array(); if (isset($cache[$url])) { return $cache[$url]; } elseif (preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $url, $match)) { for ($i = count($match); $i <= 9; $i++) { $match[$i] = ''; } return $cache[$url] = array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]); } else { return $cache[$url] = array('scheme' => '', 'authority' => '', 'path' => '', 'query' => '', 'fragment' => ''); } } function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '') { $return = ''; if ($scheme !== '') { $return .= "$scheme:"; } if ($authority !== '') { $return .= "//$authority"; } if ($path !== '') { $return .= $path; } if ($query !== '') { $return .= "?$query"; } if ($fragment !== '') { $return .= "#$fragment"; } return $return; } function normalize_url($url) { $url = preg_replace_callback('/%([0-9A-Fa-f]{2})/', array('SimplePie_Misc', 'percent_encoding_normalization'), $url); $url = SimplePie_Misc::parse_url($url); $url['scheme'] = strtolower($url['scheme']); if ($url['authority'] !== '') { $url['authority'] = strtolower($url['authority']); $url['path'] = SimplePie_Misc::remove_dot_segments($url['path']); } return SimplePie_Misc::compress_parse_url($url['scheme'], $url['authority'], $url['path'], $url['query'], $url['fragment']); } function percent_encoding_normalization($match) { $integer = hexdec($match[1]); if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer == 0x2D || $integer == 0x2E || $integer == 0x5F || $integer == 0x7E) { return chr($integer); } else { return strtoupper($match[0]); } } /** * Remove bad UTF-8 bytes * * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C * FAQ: Multilingual Forms (modified to include full ASCII range) * * @author Geoffrey Sneddon * @see http://www.w3.org/International/questions/qa-forms-utf-8 * @param string $str String to remove bad UTF-8 bytes from * @return string UTF-8 string */ function utf8_bad_replace($str) { if (function_exists('iconv')) { $out = iconv('UTF-8', 'UTF-8//IGNORE', $str); if($out !== false) return $out; } if (function_exists('mb_convert_encoding')) { return mb_convert_encoding($str, 'UTF-8', 'UTF-8'); } elseif (preg_match_all('/([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})/', $str, $matches)) { return implode("\xEF\xBF\xBD", $matches[0]); } elseif ($str !== '') { return "\xEF\xBF\xBD"; } else { return ''; } } function change_encoding($data, $input, $output) { $input = SimplePie_Misc::encoding($input); $output = SimplePie_Misc::encoding($output); if (function_exists('iconv') && ($return = @iconv($input, "$output//IGNORE", $data))) { return $return; } elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data))) { return $return; } elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($data, $output, $input))) { return $return; } elseif ($input == 'ISO-8859-1' && $output == 'UTF-8') { return utf8_encode($data); } elseif ($input == 'UTF-8' && $output == 'ISO-8859-1') { return utf8_decode($data); } return $data; } function encoding($encoding) { // Character sets are case-insensitive (though we'll return them in the form given in their registration) switch (strtoupper($encoding)) { case 'ANSI_X3.4-1968': case 'ISO-IR-6': case 'ANSI_X3.4-1986': case 'ISO_646.IRV:1991': case 'ASCII': case 'ISO646-US': case 'US-ASCII': case 'US': case 'IBM367': case 'CP367': case 'CSASCII': return 'US-ASCII'; case 'ISO_8859-1:1987': case 'ISO-IR-100': case 'ISO_8859-1': case 'ISO-8859-1': case 'LATIN1': case 'L1': case 'IBM819': case 'CP819': case 'CSISOLATIN1': return 'ISO-8859-1'; case 'ISO_8859-2:1987': case 'ISO-IR-101': case 'ISO_8859-2': case 'ISO-8859-2': case 'LATIN2': case 'L2': case 'CSISOLATIN2': return 'ISO-8859-2'; case 'ISO_8859-3:1988': case 'ISO-IR-109': case 'ISO_8859-3': case 'ISO-8859-3': case 'LATIN3': case 'L3': case 'CSISOLATIN3': return 'ISO-8859-3'; case 'ISO_8859-4:1988': case 'ISO-IR-110': case 'ISO_8859-4': case 'ISO-8859-4': case 'LATIN4': case 'L4': case 'CSISOLATIN4': return 'ISO-8859-4'; case 'ISO_8859-5:1988': case 'ISO-IR-144': case 'ISO_8859-5': case 'ISO-8859-5': case 'CYRILLIC': case 'CSISOLATINCYRILLIC': return 'ISO-8859-5'; case 'ISO_8859-6:1987': case 'ISO-IR-127': case 'ISO_8859-6': case 'ISO-8859-6': case 'ECMA-114': case 'ASMO-708': case 'ARABIC': case 'CSISOLATINARABIC': return 'ISO-8859-6'; case 'ISO_8859-7:1987': case 'ISO-IR-126': case 'ISO_8859-7': case 'ISO-8859-7': case 'ELOT_928': case 'ECMA-118': case 'GREEK': case 'GREEK8': case 'CSISOLATINGREEK': return 'ISO-8859-7'; case 'ISO_8859-8:1988': case 'ISO-IR-138': case 'ISO_8859-8': case 'ISO-8859-8': case 'HEBREW': case 'CSISOLATINHEBREW': return 'ISO-8859-8'; case 'ISO_8859-9:1989': case 'ISO-IR-148': case 'ISO_8859-9': case 'ISO-8859-9': case 'LATIN5': case 'L5': case 'CSISOLATIN5': return 'ISO-8859-9'; case 'ISO-8859-10': case 'ISO-IR-157': case 'L6': case 'ISO_8859-10:1992': case 'CSISOLATIN6': case 'LATIN6': return 'ISO-8859-10'; case 'ISO_6937-2-ADD': case 'ISO-IR-142': case 'CSISOTEXTCOMM': return 'ISO_6937-2-add'; case 'JIS_X0201': case 'X0201': case 'CSHALFWIDTHKATAKANA': return 'JIS_X0201'; case 'JIS_ENCODING': case 'CSJISENCODING': return 'JIS_Encoding'; case 'SHIFT_JIS': case 'MS_KANJI': case 'CSSHIFTJIS': return 'Shift_JIS'; case 'EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE': case 'CSEUCPKDFMTJAPANESE': case 'EUC-JP': return 'EUC-JP'; case 'EXTENDED_UNIX_CODE_FIXED_WIDTH_FOR_JAPANESE': case 'CSEUCFIXWIDJAPANESE': return 'Extended_UNIX_Code_Fixed_Width_for_Japanese'; case 'BS_4730': case 'ISO-IR-4': case 'ISO646-GB': case 'GB': case 'UK': case 'CSISO4UNITEDKINGDOM': return 'BS_4730'; case 'SEN_850200_C': case 'ISO-IR-11': case 'ISO646-SE2': case 'SE2': case 'CSISO11SWEDISHFORNAMES': return 'SEN_850200_C'; case 'IT': case 'ISO-IR-15': case 'ISO646-IT': case 'CSISO15ITALIAN': return 'IT'; case 'ES': case 'ISO-IR-17': case 'ISO646-ES': case 'CSISO17SPANISH': return 'ES'; case 'DIN_66003': case 'ISO-IR-21': case 'DE': case 'ISO646-DE': case 'CSISO21GERMAN': return 'DIN_66003'; case 'NS_4551-1': case 'ISO-IR-60': case 'ISO646-NO': case 'NO': case 'CSISO60DANISHNORWEGIAN': case 'CSISO60NORWEGIAN1': return 'NS_4551-1'; case 'NF_Z_62-010': case 'ISO-IR-69': case 'ISO646-FR': case 'FR': case 'CSISO69FRENCH': return 'NF_Z_62-010'; case 'ISO-10646-UTF-1': case 'CSISO10646UTF1': return 'ISO-10646-UTF-1'; case 'ISO_646.BASIC:1983': case 'REF': case 'CSISO646BASIC1983': return 'ISO_646.basic:1983'; case 'INVARIANT': case 'CSINVARIANT': return 'INVARIANT'; case 'ISO_646.IRV:1983': case 'ISO-IR-2': case 'IRV': case 'CSISO2INTLREFVERSION': return 'ISO_646.irv:1983'; case 'NATS-SEFI': case 'ISO-IR-8-1': case 'CSNATSSEFI': return 'NATS-SEFI'; case 'NATS-SEFI-ADD': case 'ISO-IR-8-2': case 'CSNATSSEFIADD': return 'NATS-SEFI-ADD'; case 'NATS-DANO': case 'ISO-IR-9-1': case 'CSNATSDANO': return 'NATS-DANO'; case 'NATS-DANO-ADD': case 'ISO-IR-9-2': case 'CSNATSDANOADD': return 'NATS-DANO-ADD'; case 'SEN_850200_B': case 'ISO-IR-10': case 'FI': case 'ISO646-FI': case 'ISO646-SE': case 'SE': case 'CSISO10SWEDISH': return 'SEN_850200_B'; case 'KS_C_5601-1987': case 'ISO-IR-149': case 'KS_C_5601-1989': case 'KSC_5601': case 'KOREAN': case 'CSKSC56011987': return 'KS_C_5601-1987'; case 'ISO-2022-KR': case 'CSISO2022KR': return 'ISO-2022-KR'; case 'EUC-KR': case 'CSEUCKR': return 'EUC-KR'; case 'ISO-2022-JP': case 'CSISO2022JP': return 'ISO-2022-JP'; case 'ISO-2022-JP-2': case 'CSISO2022JP2': return 'ISO-2022-JP-2'; case 'JIS_C6220-1969-JP': case 'JIS_C6220-1969': case 'ISO-IR-13': case 'KATAKANA': case 'X0201-7': case 'CSISO13JISC6220JP': return 'JIS_C6220-1969-jp'; case 'JIS_C6220-1969-RO': case 'ISO-IR-14': case 'JP': case 'ISO646-JP': case 'CSISO14JISC6220RO': return 'JIS_C6220-1969-ro'; case 'PT': case 'ISO-IR-16': case 'ISO646-PT': case 'CSISO16PORTUGUESE': return 'PT'; case 'GREEK7-OLD': case 'ISO-IR-18': case 'CSISO18GREEK7OLD': return 'greek7-old'; case 'LATIN-GREEK': case 'ISO-IR-19': case 'CSISO19LATINGREEK': return 'latin-greek'; case 'NF_Z_62-010_(1973)': case 'ISO-IR-25': case 'ISO646-FR1': case 'CSISO25FRENCH': return 'NF_Z_62-010_(1973)'; case 'LATIN-GREEK-1': case 'ISO-IR-27': case 'CSISO27LATINGREEK1': return 'Latin-greek-1'; case 'ISO_5427': case 'ISO-IR-37': case 'CSISO5427CYRILLIC': return 'ISO_5427'; case 'JIS_C6226-1978': case 'ISO-IR-42': case 'CSISO42JISC62261978': return 'JIS_C6226-1978'; case 'BS_VIEWDATA': case 'ISO-IR-47': case 'CSISO47BSVIEWDATA': return 'BS_viewdata'; case 'INIS': case 'ISO-IR-49': case 'CSISO49INIS': return 'INIS'; case 'INIS-8': case 'ISO-IR-50': case 'CSISO50INIS8': return 'INIS-8'; case 'INIS-CYRILLIC': case 'ISO-IR-51': case 'CSISO51INISCYRILLIC': return 'INIS-cyrillic'; case 'ISO_5427:1981': case 'ISO-IR-54': case 'ISO5427CYRILLIC1981': return 'ISO_5427:1981'; case 'ISO_5428:1980': case 'ISO-IR-55': case 'CSISO5428GREEK': return 'ISO_5428:1980'; case 'GB_1988-80': case 'ISO-IR-57': case 'CN': case 'ISO646-CN': case 'CSISO57GB1988': return 'GB_1988-80'; case 'GB_2312-80': case 'ISO-IR-58': case 'CHINESE': case 'CSISO58GB231280': return 'GB_2312-80'; case 'NS_4551-2': case 'ISO646-NO2': case 'ISO-IR-61': case 'NO2': case 'CSISO61NORWEGIAN2': return 'NS_4551-2'; case 'VIDEOTEX-SUPPL': case 'ISO-IR-70': case 'CSISO70VIDEOTEXSUPP1': return 'videotex-suppl'; case 'PT2': case 'ISO-IR-84': case 'ISO646-PT2': case 'CSISO84PORTUGUESE2': return 'PT2'; case 'ES2': case 'ISO-IR-85': case 'ISO646-ES2': case 'CSISO85SPANISH2': return 'ES2'; case 'MSZ_7795.3': case 'ISO-IR-86': case 'ISO646-HU': case 'HU': case 'CSISO86HUNGARIAN': return 'MSZ_7795.3'; case 'JIS_C6226-1983': case 'ISO-IR-87': case 'X0208': case 'JIS_X0208-1983': case 'CSISO87JISX0208': return 'JIS_C6226-1983'; case 'GREEK7': case 'ISO-IR-88': case 'CSISO88GREEK7': return 'greek7'; case 'ASMO_449': case 'ISO_9036': case 'ARABIC7': case 'ISO-IR-89': case 'CSISO89ASMO449': return 'ASMO_449'; case 'ISO-IR-90': case 'CSISO90': return 'iso-ir-90'; case 'JIS_C6229-1984-A': case 'ISO-IR-91': case 'JP-OCR-A': case 'CSISO91JISC62291984A': return 'JIS_C6229-1984-a'; case 'JIS_C6229-1984-B': case 'ISO-IR-92': case 'ISO646-JP-OCR-B': case 'JP-OCR-B': case 'CSISO92JISC62991984B': return 'JIS_C6229-1984-b'; case 'JIS_C6229-1984-B-ADD': case 'ISO-IR-93': case 'JP-OCR-B-ADD': case 'CSISO93JIS62291984BADD': return 'JIS_C6229-1984-b-add'; case 'JIS_C6229-1984-HAND': case 'ISO-IR-94': case 'JP-OCR-HAND': case 'CSISO94JIS62291984HAND': return 'JIS_C6229-1984-hand'; case 'JIS_C6229-1984-HAND-ADD': case 'ISO-IR-95': case 'JP-OCR-HAND-ADD': case 'CSISO95JIS62291984HANDADD': return 'JIS_C6229-1984-hand-add'; case 'JIS_C6229-1984-KANA': case 'ISO-IR-96': case 'CSISO96JISC62291984KANA': return 'JIS_C6229-1984-kana'; case 'ISO_2033-1983': case 'ISO-IR-98': case 'E13B': case 'CSISO2033': return 'ISO_2033-1983'; case 'ANSI_X3.110-1983': case 'ISO-IR-99': case 'CSA_T500-1983': case 'NAPLPS': case 'CSISO99NAPLPS': return 'ANSI_X3.110-1983'; case 'T.61-7BIT': case 'ISO-IR-102': case 'CSISO102T617BIT': return 'T.61-7bit'; case 'T.61-8BIT': case 'T.61': case 'ISO-IR-103': case 'CSISO103T618BIT': return 'T.61-8bit'; case 'ECMA-CYRILLIC': case 'ISO-IR-111': case 'KOI8-E': case 'CSISO111ECMACYRILLIC': return 'ECMA-cyrillic'; case 'CSA_Z243.4-1985-1': case 'ISO-IR-121': case 'ISO646-CA': case 'CSA7-1': case 'CA': case 'CSISO121CANADIAN1': return 'CSA_Z243.4-1985-1'; case 'CSA_Z243.4-1985-2': case 'ISO-IR-122': case 'ISO646-CA2': case 'CSA7-2': case 'CSISO122CANADIAN2': return 'CSA_Z243.4-1985-2'; case 'CSA_Z243.4-1985-GR': case 'ISO-IR-123': case 'CSISO123CSAZ24341985GR': return 'CSA_Z243.4-1985-gr'; case 'ISO_8859-6-E': case 'CSISO88596E': case 'ISO-8859-6-E': return 'ISO-8859-6-E'; case 'ISO_8859-6-I': case 'CSISO88596I': case 'ISO-8859-6-I': return 'ISO-8859-6-I'; case 'T.101-G2': case 'ISO-IR-128': case 'CSISO128T101G2': return 'T.101-G2'; case 'ISO_8859-8-E': case 'CSISO88598E': case 'ISO-8859-8-E': return 'ISO-8859-8-E'; case 'ISO_8859-8-I': case 'CSISO88598I': case 'ISO-8859-8-I': return 'ISO-8859-8-I'; case 'CSN_369103': case 'ISO-IR-139': case 'CSISO139CSN369103': return 'CSN_369103'; case 'JUS_I.B1.002': case 'ISO-IR-141': case 'ISO646-YU': case 'JS': case 'YU': case 'CSISO141JUSIB1002': return 'JUS_I.B1.002'; case 'IEC_P27-1': case 'ISO-IR-143': case 'CSISO143IECP271': return 'IEC_P27-1'; case 'JUS_I.B1.003-SERB': case 'ISO-IR-146': case 'SERBIAN': case 'CSISO146SERBIAN': return 'JUS_I.B1.003-serb'; case 'JUS_I.B1.003-MAC': case 'MACEDONIAN': case 'ISO-IR-147': case 'CSISO147MACEDONIAN': return 'JUS_I.B1.003-mac'; case 'GREEK-CCITT': case 'ISO-IR-150': case 'CSISO150': case 'CSISO150GREEKCCITT': return 'greek-ccitt'; case 'NC_NC00-10:81': case 'CUBA': case 'ISO-IR-151': case 'ISO646-CU': case 'CSISO151CUBA': return 'NC_NC00-10:81'; case 'ISO_6937-2-25': case 'ISO-IR-152': case 'CSISO6937ADD': return 'ISO_6937-2-25'; case 'GOST_19768-74': case 'ST_SEV_358-88': case 'ISO-IR-153': case 'CSISO153GOST1976874': return 'GOST_19768-74'; case 'ISO_8859-SUPP': case 'ISO-IR-154': case 'LATIN1-2-5': case 'CSISO8859SUPP': return 'ISO_8859-supp'; case 'ISO_10367-BOX': case 'ISO-IR-155': case 'CSISO10367BOX': return 'ISO_10367-box'; case 'LATIN-LAP': case 'LAP': case 'ISO-IR-158': case 'CSISO158LAP': return 'latin-lap'; case 'JIS_X0212-1990': case 'X0212': case 'ISO-IR-159': case 'CSISO159JISX02121990': return 'JIS_X0212-1990'; case 'DS_2089': case 'DS2089': case 'ISO646-DK': case 'DK': case 'CSISO646DANISH': return 'DS_2089'; case 'US-DK': case 'CSUSDK': return 'us-dk'; case 'DK-US': case 'CSDKUS': return 'dk-us'; case 'KSC5636': case 'ISO646-KR': case 'CSKSC5636': return 'KSC5636'; case 'UNICODE-1-1-UTF-7': case 'CSUNICODE11UTF7': return 'UNICODE-1-1-UTF-7'; case 'ISO-2022-CN': return 'ISO-2022-CN'; case 'ISO-2022-CN-EXT': return 'ISO-2022-CN-EXT'; case 'UTF-8': return 'UTF-8'; case 'ISO-8859-13': return 'ISO-8859-13'; case 'ISO-8859-14': case 'ISO-IR-199': case 'ISO_8859-14:1998': case 'ISO_8859-14': case 'LATIN8': case 'ISO-CELTIC': case 'L8': return 'ISO-8859-14'; case 'ISO-8859-15': case 'ISO_8859-15': case 'LATIN-9': return 'ISO-8859-15'; case 'ISO-8859-16': case 'ISO-IR-226': case 'ISO_8859-16:2001': case 'ISO_8859-16': case 'LATIN10': case 'L10': return 'ISO-8859-16'; case 'GBK': case 'CP936': case 'MS936': case 'WINDOWS-936': return 'GBK'; case 'GB18030': return 'GB18030'; case 'OSD_EBCDIC_DF04_15': return 'OSD_EBCDIC_DF04_15'; case 'OSD_EBCDIC_DF03_IRV': return 'OSD_EBCDIC_DF03_IRV'; case 'OSD_EBCDIC_DF04_1': return 'OSD_EBCDIC_DF04_1'; case 'ISO-11548-1': case 'ISO_11548-1': case 'ISO_TR_11548-1': case 'CSISO115481': return 'ISO-11548-1'; case 'KZ-1048': case 'STRK1048-2002': case 'RK1048': case 'CSKZ1048': return 'KZ-1048'; case 'ISO-10646-UCS-2': case 'CSUNICODE': return 'ISO-10646-UCS-2'; case 'ISO-10646-UCS-4': case 'CSUCS4': return 'ISO-10646-UCS-4'; case 'ISO-10646-UCS-BASIC': case 'CSUNICODEASCII': return 'ISO-10646-UCS-Basic'; case 'ISO-10646-UNICODE-LATIN1': case 'CSUNICODELATIN1': case 'ISO-10646': return 'ISO-10646-Unicode-Latin1'; case 'ISO-10646-J-1': return 'ISO-10646-J-1'; case 'ISO-UNICODE-IBM-1261': case 'CSUNICODEIBM1261': return 'ISO-Unicode-IBM-1261'; case 'ISO-UNICODE-IBM-1268': case 'CSUNICODEIBM1268': return 'ISO-Unicode-IBM-1268'; case 'ISO-UNICODE-IBM-1276': case 'CSUNICODEIBM1276': return 'ISO-Unicode-IBM-1276'; case 'ISO-UNICODE-IBM-1264': case 'CSUNICODEIBM1264': return 'ISO-Unicode-IBM-1264'; case 'ISO-UNICODE-IBM-1265': case 'CSUNICODEIBM1265': return 'ISO-Unicode-IBM-1265'; case 'UNICODE-1-1': case 'CSUNICODE11': return 'UNICODE-1-1'; case 'SCSU': return 'SCSU'; case 'UTF-7': return 'UTF-7'; case 'UTF-16BE': return 'UTF-16BE'; case 'UTF-16LE': return 'UTF-16LE'; case 'UTF-16': return 'UTF-16'; case 'CESU-8': case 'CSCESU-8': return 'CESU-8'; case 'UTF-32': return 'UTF-32'; case 'UTF-32BE': return 'UTF-32BE'; case 'UTF-32LE': return 'UTF-32LE'; case 'BOCU-1': case 'CSBOCU-1': return 'BOCU-1'; case 'ISO-8859-1-WINDOWS-3.0-LATIN-1': case 'CSWINDOWS30LATIN1': return 'ISO-8859-1-Windows-3.0-Latin-1'; case 'ISO-8859-1-WINDOWS-3.1-LATIN-1': case 'CSWINDOWS31LATIN1': return 'ISO-8859-1-Windows-3.1-Latin-1'; case 'ISO-8859-2-WINDOWS-LATIN-2': case 'CSWINDOWS31LATIN2': return 'ISO-8859-2-Windows-Latin-2'; case 'ISO-8859-9-WINDOWS-LATIN-5': case 'CSWINDOWS31LATIN5': return 'ISO-8859-9-Windows-Latin-5'; case 'HP-ROMAN8': case 'ROMAN8': case 'R8': case 'CSHPROMAN8': return 'hp-roman8'; case 'ADOBE-STANDARD-ENCODING': case 'CSADOBESTANDARDENCODING': return 'Adobe-Standard-Encoding'; case 'VENTURA-US': case 'CSVENTURAUS': return 'Ventura-US'; case 'VENTURA-INTERNATIONAL': case 'CSVENTURAINTERNATIONAL': return 'Ventura-International'; case 'DEC-MCS': case 'DEC': case 'CSDECMCS': return 'DEC-MCS'; case 'IBM850': case 'CP850': case '850': case 'CSPC850MULTILINGUAL': return 'IBM850'; case 'PC8-DANISH-NORWEGIAN': case 'CSPC8DANISHNORWEGIAN': return 'PC8-Danish-Norwegian'; case 'IBM862': case 'CP862': case '862': case 'CSPC862LATINHEBREW': return 'IBM862'; case 'PC8-TURKISH': case 'CSPC8TURKISH': return 'PC8-Turkish'; case 'IBM-SYMBOLS': case 'CSIBMSYMBOLS': return 'IBM-Symbols'; case 'IBM-THAI': case 'CSIBMTHAI': return 'IBM-Thai'; case 'HP-LEGAL': case 'CSHPLEGAL': return 'HP-Legal'; case 'HP-PI-FONT': case 'CSHPPIFONT': return 'HP-Pi-font'; case 'HP-MATH8': case 'CSHPMATH8': return 'HP-Math8'; case 'ADOBE-SYMBOL-ENCODING': case 'CSHPPSMATH': return 'Adobe-Symbol-Encoding'; case 'HP-DESKTOP': case 'CSHPDESKTOP': return 'HP-DeskTop'; case 'VENTURA-MATH': case 'CSVENTURAMATH': return 'Ventura-Math'; case 'MICROSOFT-PUBLISHING': case 'CSMICROSOFTPUBLISHING': return 'Microsoft-Publishing'; case 'WINDOWS-31J': case 'CSWINDOWS31J': return 'Windows-31J'; case 'GB2312': case 'CSGB2312': return 'GB2312'; case 'BIG5': case 'CSBIG5': return 'Big5'; case 'MACINTOSH': case 'MAC': case 'CSMACINTOSH': return 'macintosh'; case 'IBM037': case 'CP037': case 'EBCDIC-CP-US': case 'EBCDIC-CP-CA': case 'EBCDIC-CP-WT': case 'EBCDIC-CP-NL': case 'CSIBM037': return 'IBM037'; case 'IBM038': case 'EBCDIC-INT': case 'CP038': case 'CSIBM038': return 'IBM038'; case 'IBM273': case 'CP273': case 'CSIBM273': return 'IBM273'; case 'IBM274': case 'EBCDIC-BE': case 'CP274': case 'CSIBM274': return 'IBM274'; case 'IBM275': case 'EBCDIC-BR': case 'CP275': case 'CSIBM275': return 'IBM275'; case 'IBM277': case 'EBCDIC-CP-DK': case 'EBCDIC-CP-NO': case 'CSIBM277': return 'IBM277'; case 'IBM278': case 'CP278': case 'EBCDIC-CP-FI': case 'EBCDIC-CP-SE': case 'CSIBM278': return 'IBM278'; case 'IBM280': case 'CP280': case 'EBCDIC-CP-IT': case 'CSIBM280': return 'IBM280'; case 'IBM281': case 'EBCDIC-JP-E': case 'CP281': case 'CSIBM281': return 'IBM281'; case 'IBM284': case 'CP284': case 'EBCDIC-CP-ES': case 'CSIBM284': return 'IBM284'; case 'IBM285': case 'CP285': case 'EBCDIC-CP-GB': case 'CSIBM285': return 'IBM285'; case 'IBM290': case 'CP290': case 'EBCDIC-JP-KANA': case 'CSIBM290': return 'IBM290'; case 'IBM297': case 'CP297': case 'EBCDIC-CP-FR': case 'CSIBM297': return 'IBM297'; case 'IBM420': case 'CP420': case 'EBCDIC-CP-AR1': case 'CSIBM420': return 'IBM420'; case 'IBM423': case 'CP423': case 'EBCDIC-CP-GR': case 'CSIBM423': return 'IBM423'; case 'IBM424': case 'CP424': case 'EBCDIC-CP-HE': case 'CSIBM424': return 'IBM424'; case 'IBM437': case 'CP437': case '437': case 'CSPC8CODEPAGE437': return 'IBM437'; case 'IBM500': case 'CP500': case 'EBCDIC-CP-BE': case 'EBCDIC-CP-CH': case 'CSIBM500': return 'IBM500'; case 'IBM851': case 'CP851': case '851': case 'CSIBM851': return 'IBM851'; case 'IBM852': case 'CP852': case '852': case 'CSPCP852': return 'IBM852'; case 'IBM855': case 'CP855': case '855': case 'CSIBM855': return 'IBM855'; case 'IBM857': case 'CP857': case '857': case 'CSIBM857': return 'IBM857'; case 'IBM860': case 'CP860': case '860': case 'CSIBM860': return 'IBM860'; case 'IBM861': case 'CP861': case '861': case 'CP-IS': case 'CSIBM861': return 'IBM861'; case 'IBM863': case 'CP863': case '863': case 'CSIBM863': return 'IBM863'; case 'IBM864': case 'CP864': case 'CSIBM864': return 'IBM864'; case 'IBM865': case 'CP865': case '865': case 'CSIBM865': return 'IBM865'; case 'IBM868': case 'CP868': case 'CP-AR': case 'CSIBM868': return 'IBM868'; case 'IBM869': case 'CP869': case '869': case 'CP-GR': case 'CSIBM869': return 'IBM869'; case 'IBM870': case 'CP870': case 'EBCDIC-CP-ROECE': case 'EBCDIC-CP-YU': case 'CSIBM870': return 'IBM870'; case 'IBM871': case 'CP871': case 'EBCDIC-CP-IS': case 'CSIBM871': return 'IBM871'; case 'IBM880': case 'CP880': case 'EBCDIC-CYRILLIC': case 'CSIBM880': return 'IBM880'; case 'IBM891': case 'CP891': case 'CSIBM891': return 'IBM891'; case 'IBM903': case 'CP903': case 'CSIBM903': return 'IBM903'; case 'IBM904': case 'CP904': case '904': case 'CSIBBM904': return 'IBM904'; case 'IBM905': case 'CP905': case 'EBCDIC-CP-TR': case 'CSIBM905': return 'IBM905'; case 'IBM918': case 'CP918': case 'EBCDIC-CP-AR2': case 'CSIBM918': return 'IBM918'; case 'IBM1026': case 'CP1026': case 'CSIBM1026': return 'IBM1026'; case 'EBCDIC-AT-DE': case 'CSIBMEBCDICATDE': return 'EBCDIC-AT-DE'; case 'EBCDIC-AT-DE-A': case 'CSEBCDICATDEA': return 'EBCDIC-AT-DE-A'; case 'EBCDIC-CA-FR': case 'CSEBCDICCAFR': return 'EBCDIC-CA-FR'; case 'EBCDIC-DK-NO': case 'CSEBCDICDKNO': return 'EBCDIC-DK-NO'; case 'EBCDIC-DK-NO-A': case 'CSEBCDICDKNOA': return 'EBCDIC-DK-NO-A'; case 'EBCDIC-FI-SE': case 'CSEBCDICFISE': return 'EBCDIC-FI-SE'; case 'EBCDIC-FI-SE-A': case 'CSEBCDICFISEA': return 'EBCDIC-FI-SE-A'; case 'EBCDIC-FR': case 'CSEBCDICFR': return 'EBCDIC-FR'; case 'EBCDIC-IT': case 'CSEBCDICIT': return 'EBCDIC-IT'; case 'EBCDIC-PT': case 'CSEBCDICPT': return 'EBCDIC-PT'; case 'EBCDIC-ES': case 'CSEBCDICES': return 'EBCDIC-ES'; case 'EBCDIC-ES-A': case 'CSEBCDICESA': return 'EBCDIC-ES-A'; case 'EBCDIC-ES-S': case 'CSEBCDICESS': return 'EBCDIC-ES-S'; case 'EBCDIC-UK': case 'CSEBCDICUK': return 'EBCDIC-UK'; case 'EBCDIC-US': case 'CSEBCDICUS': return 'EBCDIC-US'; case 'UNKNOWN-8BIT': case 'CSUNKNOWN8BIT': return 'UNKNOWN-8BIT'; case 'MNEMONIC': case 'CSMNEMONIC': return 'MNEMONIC'; case 'MNEM': case 'CSMNEM': return 'MNEM'; case 'VISCII': case 'CSVISCII': return 'VISCII'; case 'VIQR': case 'CSVIQR': return 'VIQR'; case 'KOI8-R': case 'CSKOI8R': return 'KOI8-R'; case 'HZ-GB-2312': return 'HZ-GB-2312'; case 'IBM866': case 'CP866': case '866': case 'CSIBM866': return 'IBM866'; case 'IBM775': case 'CP775': case 'CSPC775BALTIC': return 'IBM775'; case 'KOI8-U': return 'KOI8-U'; case 'IBM00858': case 'CCSID00858': case 'CP00858': case 'PC-MULTILINGUAL-850+EURO': return 'IBM00858'; case 'IBM00924': case 'CCSID00924': case 'CP00924': case 'EBCDIC-LATIN9--EURO': return 'IBM00924'; case 'IBM01140': case 'CCSID01140': case 'CP01140': case 'EBCDIC-US-37+EURO': return 'IBM01140'; case 'IBM01141': case 'CCSID01141': case 'CP01141': case 'EBCDIC-DE-273+EURO': return 'IBM01141'; case 'IBM01142': case 'CCSID01142': case 'CP01142': case 'EBCDIC-DK-277+EURO': case 'EBCDIC-NO-277+EURO': return 'IBM01142'; case 'IBM01143': case 'CCSID01143': case 'CP01143': case 'EBCDIC-FI-278+EURO': case 'EBCDIC-SE-278+EURO': return 'IBM01143'; case 'IBM01144': case 'CCSID01144': case 'CP01144': case 'EBCDIC-IT-280+EURO': return 'IBM01144'; case 'IBM01145': case 'CCSID01145': case 'CP01145': case 'EBCDIC-ES-284+EURO': return 'IBM01145'; case 'IBM01146': case 'CCSID01146': case 'CP01146': case 'EBCDIC-GB-285+EURO': return 'IBM01146'; case 'IBM01147': case 'CCSID01147': case 'CP01147': case 'EBCDIC-FR-297+EURO': return 'IBM01147'; case 'IBM01148': case 'CCSID01148': case 'CP01148': case 'EBCDIC-INTERNATIONAL-500+EURO': return 'IBM01148'; case 'IBM01149': case 'CCSID01149': case 'CP01149': case 'EBCDIC-IS-871+EURO': return 'IBM01149'; case 'BIG5-HKSCS': return 'Big5-HKSCS'; case 'IBM1047': case 'IBM-1047': return 'IBM1047'; case 'PTCP154': case 'CSPTCP154': case 'PT154': case 'CP154': case 'CYRILLIC-ASIAN': return 'PTCP154'; case 'AMIGA-1251': case 'AMI1251': case 'AMIGA1251': case 'AMI-1251': return 'Amiga-1251'; case 'KOI7-SWITCHED': return 'KOI7-switched'; case 'BRF': case 'CSBRF': return 'BRF'; case 'TSCII': case 'CSTSCII': return 'TSCII'; case 'WINDOWS-1250': return 'windows-1250'; case 'WINDOWS-1251': return 'windows-1251'; case 'WINDOWS-1252': return 'windows-1252'; case 'WINDOWS-1253': return 'windows-1253'; case 'WINDOWS-1254': return 'windows-1254'; case 'WINDOWS-1255': return 'windows-1255'; case 'WINDOWS-1256': return 'windows-1256'; case 'WINDOWS-1257': return 'windows-1257'; case 'WINDOWS-1258': return 'windows-1258'; default: return (string) $encoding; } } function get_curl_version() { if (is_array($curl = curl_version())) { $curl = $curl['version']; } elseif (substr($curl, 0, 5) == 'curl/') { $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5)); } elseif (substr($curl, 0, 8) == 'libcurl/') { $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8)); } else { $curl = 0; } return $curl; } function is_subclass_of($class1, $class2) { if (func_num_args() != 2) { trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING); } elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1)) { return is_subclass_of($class1, $class2); } elseif (is_string($class1) && is_string($class2)) { if (class_exists($class1)) { if (class_exists($class2)) { $class2 = strtolower($class2); while ($class1 = strtolower(get_parent_class($class1))) { if ($class1 == $class2) { return true; } } } } else { trigger_error('Unknown class passed as parameter', E_USER_WARNNG); } } return false; } /** * Strip HTML comments * * @access public * @param string $data Data to strip comments from * @return string Comment stripped string */ function strip_comments($data) { $output = ''; while (($start = strpos($data, '', $start)) !== false) { $data = substr_replace($data, '', 0, $end + 3); } else { $data = ''; } } return $output . $data; } function parse_date($dt, $rfc822_tz = true) { static $cache = array(); if (!isset($cache[$dt][$rfc822_tz])) { $dt = SimplePie_Misc::uncomment_rfc822($dt); /* Capturing subpatterns: 1: RFC 822 date 2: RFC 822 day 3: RFC 822 month 4: RFC 822 year 5: ISO 8601 date 6: ISO 8601 century 7: ISO 8601 year 8: ISO 8601 month 9: ISO 8601 day 10: ISO 8601 ordinal day 11: ISO 8601 month 12: ISO 8601 day 13: ISO 8601 week 14: ISO 8601 day of week 15: Time 16: Hour 17: Hour Decimal 18: Minute 19: Minute Decimal 20: Second 21: Second Decimal 22: Timezone 23: Diff ± 24: Hour 25: Hour Decimal 26: Minute 27: Minute Decimal 28: Alphabetic Timezone */ if (preg_match('/^(?:(?:(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)[,\s]+)?(([0-9]{1,2})\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s*([0-9]{4}|[0-9]{2}))|(([0-9]{2})(?:([0-9]{2})(?:(?:-|\s)*(?:([0-9]{2})([0-9]{2})|([0-9]{3})|([0-9]{2})(?:(?:-|\s)*([0-9]{2}))?|W([0-9]{2})(?:(?:-|\s)*([0-9]))?))?)?))((?:T|\s)+([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*([0-9]{2})(?:(?:,|\.)([0-9]*))?)?)?(?:\s)*((?:(\+|-)([0-9]{2})(?:(?:,|\.)([0-9]*)|(?:\:|\s)*(?:([0-9]{2})(?:(?:,|\.)([0-9]*))?))?)|(UTC|GMT|EST|CST|MST|PST|EDT|CDT|MDT|PDT|UT|[A-IK-Z]))?)?$/i', $dt, $match)) { // Fill all matches for ($i = count($match); $i <= 28; $i++) { $match[$i] = ''; } // Set blank vars $year = 1970; $month = 1; $day = 1; $hour = 0; $minute = 0; $second = 0; $timezone = false; // RFC 822 if ($match[1] !== '') { if (strlen($match[4]) == 2) { $year = ($match[4] < 70) ? "20$match[4]" : "19$match[4]"; } else { $year = $match[4]; } switch (strtolower($match[3])) { case 'jan': $month = 1; break; case 'feb': $month = 2; break; case 'mar': $month = 3; break; case 'apr': $month = 4; break; case 'may': $month = 5; break; case 'jun': $month = 6; break; case 'jul': $month = 7; break; case 'aug': $month = 8; break; case 'sep': $month = 9; break; case 'oct': $month = 10; break; case 'nov': $month = 11; break; case 'dec': $month = 12; break; } $day = $match[2]; } // ISO 8601 else { // Year if ($match[7] !== '') { $year = "$match[6]$match[7]"; // Two Digit Month/Day if ($match[11] !== '') { $month = $match[11]; if ($match[12] !== '') { $day = $match[12]; } } // Four Digit Month/Day elseif ($match[8] !== '') { $month = $match[8]; $day = $match[9]; } // Ordinal Day elseif ($match[10] !== '') { $day = $match[10]; } // Week Date elseif ($match[13] !== '') { // Week Day if ($match[14] !== '') { $day = $match[14]; } $first_day_of_year = date('w', mktime(0, 0, 0, 1, 1, $year)); if ($first_day_of_year == 0) { $first_day_of_year = 7; } $day = 7 * ($match[13] - 1) + $day - ($first_day_of_year - 1); } } else { $year = "$match[6]00"; } } // Time if ($match[15] !== '') { $time = 0; $time += ($match[16] + ('.' . $match[17])) * 3600; $time += ($match[18] + ('.' . $match[19])) * 60; $time += $match[20] + ('.' . $match[21]); $hour = floor($time / 3600); $time -= $hour * 3600; $minute = floor($time / 60); $time -= $minute * 60; $second = round($time); // Timezone if ($match[22] !== '') { // Alphabetic Timezone if ($match[28] !== '') { // Military if (strlen($match[28]) == 1) { if ($match[28] == 'Z' || $match[28] == 'z' || !$rfc822_tz) { $timezone = 0; } else { $timezone = ord(strtoupper($match[28])); if ($timezone > 74) { $timezone--; } if ($timezone <= 76) { $timezone = -($timezone - 64); } else { $timezone -= 76; } $timezone *= 3600; } } // Code else { switch (strtoupper($match[28])) { case 'UT': case 'UTC': case 'GMT': $timezone = 0; break; case 'EST': $timezone = -18000; break; case 'CST': $timezone = -21600; break; case 'MST': $timezone = -25200; break; case 'PST': $timezone = -28800; break; case 'EDT': $timezone = -14400; break; case 'CDT': $timezone = -18000; break; case 'MDT': $timezone = -21600; break; case 'PDT': $timezone = -25200; break; } } } // Timezone difference from UTC else { $timezone = 0; $timezone += ($match[24] + ('.' . $match[25])) * 3600; $timezone += ($match[26] + ('.' . $match[27])) * 60; $timezone = (int) round($timezone); if ($match[23] == '-') { $timezone = -$timezone; } } } } if ($timezone === false) { $cache[$dt][$rfc822_tz] = mktime($hour, $minute, $second, $month, $day, $year); } else { $cache[$dt][$rfc822_tz] = gmmktime($hour, $minute, $second, $month, $day, $year) - $timezone; } } elseif (($time = strtotime($dt)) > 0) { $cache[$dt][$rfc822_tz] = $time; } else { $cache[$dt][$rfc822_tz] = false; } } return $cache[$dt][$rfc822_tz]; } /** * Decode HTML entities * * @static * @access public * @param string $data Input data * @return string Output data */ function entities_decode($data) { $decoder = new SimplePie_Decode_HTML_Entities($data); return $decoder->parse(); } /** * Remove RFC822 comments * * @author Tomas V.V.Cox * @author Pierre-Alain Joye * @author Amir Mohammad Saied * @copyright 1997-2006 Pierre-Alain Joye,Tomas V.V.Cox,Amir Mohammad Saied * @license http://www.opensource.org/licenses/bsd-license.php New BSD License * @version CVS: $Id: Validate.php,v 1.104 2006/11/17 16:32:06 amir Exp $ * @link http://pear.php.net/package/Validate * @access public * @param string $data Data to strip comments from * @return string Comment stripped string */ function uncomment_rfc822($data) { if ((version_compare(PHP_VERSION, '4.4.6', '>=') && version_compare(PHP_VERSION, '5', '<')) || version_compare(PHP_VERSION, '5.2.2', '>=')) { return $data; } else { return preg_replace('/((?:(?:\\\\"|[^("])*(?:"(?:[^"\\\\\r]|\\\\.)*"\s*)?)*)((?=')) { return array_unique($array); } else { $array = (array) $array; $new_array = array(); $new_array_strings = array(); foreach ($array as $key => $value) { if (is_object($value)) { if (method_exists($value, '__toString')) { $cmp = $value->__toString(); } else { trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR); } } elseif (is_array($value)) { $cmp = (string) reset($value); } else { $cmp = (string) $value; } if (!in_array($cmp, $new_array_strings)) { $new_array[$key] = $value; $new_array_strings[] = $cmp; } } return $new_array; } } /** * Converts a unicode codepoint to a UTF-8 character * * @static * @access public * @param int $codepoint Unicode codepoint * @return string UTF-8 character */ function codepoint_to_utf8($codepoint) { static $cache = array(); $codepoint = (int) $codepoint; if (isset($cache[$codepoint])) { return $cache[$codepoint]; } elseif ($codepoint < 0) { return $cache[$codepoint] = false; } else if ($codepoint <= 0x7f) { return $cache[$codepoint] = chr($codepoint); } else if ($codepoint <= 0x7ff) { return $cache[$codepoint] = chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f)); } else if ($codepoint <= 0xffff) { return $cache[$codepoint] = chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); } else if ($codepoint <= 0x10ffff) { return $cache[$codepoint] = chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); } else { // U+FFFD REPLACEMENT CHARACTER return $cache[$codepoint] = "\xEF\xBF\xBD"; } } /** * Re-implementation of PHP 4.2.0's is_a() * * @static * @access public * @param object $object The tested object * @param string $class_name The class name * @return bool Returns true if the object is of this class or has this class as one of its parents, false otherwise */ function is_a($object, $class_name) { if (function_exists('is_a')) { return is_a($object, $class_name); } elseif (!is_object($object)) { return false; } elseif (get_class($object) == strtolower($class_name)) { return true; } else { return is_subclass_of($object, $class_name); } } /** * Re-implementation of PHP 5's stripos() * * Returns the numeric position of the first occurrence of needle in the * haystack string. * * @static * @access string * @param object $haystack * @param string $needle Note that the needle may be a string of one or more * characters. If needle is not a string, it is converted to an integer * and applied as the ordinal value of a character. * @param int $offset The optional offset parameter allows you to specify which * character in haystack to start searching. The position returned is still * relative to the beginning of haystack. * @return bool If needle is not found, stripos() will return boolean false. */ function stripos($haystack, $needle, $offset = 0) { if (function_exists('stripos')) { return stripos($haystack, $needle, $offset); } else { if (is_string($needle)) { $needle = strtolower($needle); } elseif (is_int($needle) || is_bool($needle) || is_double($needle)) { $needle = strtolower(chr($needle)); } else { trigger_error('needle is not a string or an integer', E_USER_WARNING); return false; } return strpos(strtolower($haystack), $needle, $offset); } } } /** * Decode HTML Entities * * This implements HTML5 as of revision 967 (2007-06-28) * * @package SimplePie */ class SimplePie_Decode_HTML_Entities { /** * Data to be parsed * * @access private * @var string */ var $data = ''; /** * Currently consumed bytes * * @access private * @var string */ var $consumed = ''; /** * Position of the current byte being parsed * * @access private * @var int */ var $position = 0; /** * Create an instance of the class with the input data * * @access public * @param string $data Input data */ function SimplePie_Decode_HTML_Entities($data) { $this->data = $data; } /** * Parse the input data * * @access public * @return string Output data */ function parse() { while (($this->position = strpos($this->data, '&', $this->position)) !== false) { $this->consume(); $this->entity(); $this->consumed = ''; } return $this->data; } /** * Consume the next byte * * @access private * @return mixed The next byte, or false, if there is no more data */ function consume() { if (isset($this->data[$this->position])) { $this->consumed .= $this->data[$this->position]; return $this->data[$this->position++]; } else { $this->consumed = false; return false; } } /** * Consume a range of characters * * @access private * @param string $chars Characters to consume * @return mixed A series of characters that match the range, or false */ function consume_range($chars) { if ($len = strspn($this->data, $chars, $this->position)) { $data = substr($this->data, $this->position, $len); $this->consumed .= $data; $this->position += $len; return $data; } else { $this->consumed = false; return false; } } /** * Unconsume one byte * * @access private */ function unconsume() { $this->consumed = substr($this->consumed, 0, -1); $this->position--; } /** * Decode an entity * * @access private */ function entity() { switch ($this->consume()) { case "\x09": case "\x0A": case "\x0B": case "\x0B": case "\x0C": case "\x20": case "\x3C": case "\x26": case false: break; case "\x23": switch ($this->consume()) { case "\x78": case "\x58": $range = '0123456789ABCDEFabcdef'; $hex = true; break; default: $range = '0123456789'; $hex = false; $this->unconsume(); break; } if ($codepoint = $this->consume_range($range)) { static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8"); if ($hex) { $codepoint = hexdec($codepoint); } else { $codepoint = intval($codepoint); } if (isset($windows_1252_specials[$codepoint])) { $replacement = $windows_1252_specials[$codepoint]; } else { $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint); } if ($this->consume() != ';') { $this->unconsume(); } $consumed_length = strlen($this->consumed); $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length); $this->position += strlen($replacement) - $consumed_length; } break; default: static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4", 'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eacute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB", 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\xCE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' => "\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbquo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C"); for ($i = 0, $match = null; $i < 9 && $this->consume(); $i++) { $consumed = substr($this->consumed, 1); if (isset($entities[$consumed])) { $match = $consumed; } } if ($match !== null) { $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1); $this->position += strlen($entities[$match]) - strlen($consumed) - 1; } break; } } } class SimplePie_Locator { var $useragent; var $timeout; var $file; var $local = array(); var $elsewhere = array(); var $file_class = 'SimplePie_File'; var $cached_entities = array(); var $http_base; var $base; var $base_location = 0; var $checked_feeds = 0; var $max_checked_feeds = 10; function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10) { $this->file =& $file; $this->file_class = $file_class; $this->useragent = $useragent; $this->timeout = $timeout; $this->max_checked_feeds = $max_checked_feeds; } function find($type = SIMPLEPIE_LOCATOR_ALL) { if ($this->is_feed($this->file)) { return $this->file; } if ($type & ~SIMPLEPIE_LOCATOR_NONE) { $this->get_base(); } if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery()) { return $working; } if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links()) { if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local)) { return $working; } if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local)) { return $working; } if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere)) { return $working; } if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere)) { return $working; } } return null; } function is_feed(&$file) { $body = SimplePie_Misc::strip_comments($file->body); if (preg_match('/<([^\s:]+:)?(rss|RDF|feed)' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/i', $body)) { return true; } return false; } function get_base() { if (isset($this->file->headers['content-location'])) { $this->http_base = SimplePie_Misc::absolutize_url(trim($this->file->headers['content-location']), $this->file->url); } else { $this->http_base = $this->file->url; } $this->base = $this->http_base; $elements = SimplePie_Misc::get_element('base', $this->file->body); foreach ($elements as $element) { if ($element['attribs']['href']['data'] !== '') { $this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base); $this->base_location = $element['offset']; break; } } } function autodiscovery() { $links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body)); $done = array(); foreach ($links as $link) { if ($this->checked_feeds == $this->max_checked_feeds) { break; } if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data'])) { $rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data']))); if ($this->base_location < $link['offset']) { $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base); } else { $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base); } if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml')))) { $this->checked_feeds++; $feed = new $this->file_class($href, $this->timeout, 5, null, $this->useragent); if ($this->is_feed($feed)) { return $feed; } } $done[] = $href; } } return null; } function get_links() { $links = SimplePie_Misc::get_element('a', $this->file->body); foreach ($links as $link) { if (isset($link['attribs']['href']['data'])) { $href = trim($link['attribs']['href']['data']); $parsed = SimplePie_Misc::parse_url($href); if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme'])) { if ($this->base_location < $link['offset']) { $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base); } else { $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base); } $current = SimplePie_Misc::parse_url($this->file->url); if ($parsed['authority'] === '' || $parsed['authority'] == $current['authority']) { $this->local[] = $href; } else { $this->elsewhere[] = $href; } } } } $this->local = array_unique($this->local); $this->elsewhere = array_unique($this->elsewhere); if (!empty($this->local) || !empty($this->elsewhere)) { return true; } return null; } function extension(&$array) { foreach ($array as $key => $value) { if ($this->checked_feeds == $this->max_checked_feeds) { break; } if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml'))) { $this->checked_feeds++; $feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent); if ($this->is_feed($feed)) { return $feed; } else { unset($array[$key]); } } } return null; } function body(&$array) { foreach ($array as $key => $value) { if ($this->checked_feeds == $this->max_checked_feeds) { break; } if (preg_match('/(rss|rdf|atom|xml)/i', $value)) { $this->checked_feeds++; $feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent); if ($this->is_feed($feed)) { return $feed; } else { unset($array[$key]); } } } return null; } } class SimplePie_Parser { var $xml; var $error_code; var $error_string; var $current_line; var $current_column; var $current_byte; var $separator = ' '; var $feed = false; var $namespace = array(''); var $element = array(''); var $xml_base = array(''); var $xml_base_explicit = array(false); var $xml_lang = array(''); var $data = array(); var $datas = array(array()); var $current_xhtml_construct = -1; var $encoding; function pre_process(&$data, $encoding) { // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character if (strtoupper($encoding) == 'US-ASCII') { $this->encoding = 'UTF-8'; } else { $this->encoding = $encoding; } // Strip BOM: // UTF-32 Big Endian BOM if (strpos($data, "\x0\x0\xFE\xFF") === 0) { $data = substr($data, 4); } // UTF-32 Little Endian BOM elseif (strpos($data, "\xFF\xFE\x0\x0") === 0) { $data = substr($data, 4); } // UTF-16 Big Endian BOM elseif (strpos($data, "\xFE\xFF") === 0) { $data = substr($data, 2); } // UTF-16 Little Endian BOM elseif (strpos($data, "\xFF\xFE") === 0) { $data = substr($data, 2); } // UTF-8 BOM elseif (strpos($data, "\xEF\xBB\xBF") === 0) { $data = substr($data, 3); } // Make sure the XML prolog is sane and has the correct encoding $data = preg_replace("/^<\?xml[\x20\x9\xD\xA]+version([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"1.0\"|'1.0'|\"1.1\"|'1.1')([\x20\x9\xD\xA]+encoding([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"[A-Za-z][A-Za-z0-9._\-]*\"|'[A-Za-z][A-Za-z0-9._\-]*'))?([\x20\x9\xD\xA]+standalone([\x20\x9\xD\xA]+)?=([\x20\x9\xD\xA]+)?(\"(yes|no)\"|'(yes|no)'))?([\x20\x9\xD\xA]+)?\?>/", '', $data); $data = "\n" . $data; } function parse(&$data) { $return = true; // Create the parser $this->xml = xml_parser_create_ns($this->encoding, $this->separator); xml_parser_set_option($this->xml, XML_OPTION_SKIP_WHITE, 1); xml_parser_set_option($this->xml, XML_OPTION_CASE_FOLDING, 0); xml_set_object($this->xml, $this); xml_set_character_data_handler($this->xml, 'cdata'); xml_set_element_handler($this->xml, 'tag_open', 'tag_close'); // workound for a bug in PHP/libxml2 as described on http://bugs.simplepie.org/issues/show/101 $data = str_replace('<', '<', $data); $data = str_replace('>', '>', $data); $data = str_replace('&', '&', $data); $data = str_replace(''', ''', $data); $data = str_replace('"', '"', $data); // Parse! if (!xml_parse($this->xml, $data, true)) { $this->data = null; $this->error_code = xml_get_error_code($this->xml); $this->error_string = xml_error_string($this->error_code); $return = false; } $this->current_line = xml_get_current_line_number($this->xml); $this->current_column = xml_get_current_column_number($this->xml); $this->current_byte = xml_get_current_byte_index($this->xml); xml_parser_free($this->xml); return $return; } function get_error_code() { return $this->error_code; } function get_error_string() { return $this->error_string; } function get_current_line() { return $this->current_line; } function get_current_column() { return $this->current_column; } function get_current_byte() { return $this->current_byte; } function get_data() { return $this->data; } function tag_open($parser, $tag, $attributes) { if ($this->feed === 0) { return; } elseif ($this->feed == false) { if (in_array($tag, array( SIMPLEPIE_NAMESPACE_ATOM_10 . $this->separator . 'feed', SIMPLEPIE_NAMESPACE_ATOM_03 . $this->separator . 'feed', 'rss', SIMPLEPIE_NAMESPACE_RDF . $this->separator . 'RDF' ))) { $this->feed = 1; } } else { $this->feed++; } list($this->namespace[], $this->element[]) = $this->split_ns($tag); $attribs = array(); foreach ($attributes as $name => $value) { list($attrib_namespace, $attribute) = $this->split_ns($name); $attribs[$attrib_namespace][$attribute] = $value; } if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base'])) { $this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base)); $this->xml_base_explicit[] = true; } else { $this->xml_base[] = end($this->xml_base); $this->xml_base_explicit[] = end($this->xml_base_explicit); } if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang'])) { $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang']; } else { $this->xml_lang[] = end($this->xml_lang); } if ($this->current_xhtml_construct >= 0) { $this->current_xhtml_construct++; if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML) { $this->data['data'] .= '<' . end($this->element); if (isset($attribs[''])) { foreach ($attribs[''] as $name => $value) { $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"'; } } $this->data['data'] .= '>'; } } else { $this->datas[] =& $this->data; $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][]; $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang)); if ((end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] == 'xml') || (end($this->namespace) == SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] == 'xhtml')) { $this->current_xhtml_construct = 0; } } } function cdata($parser, $cdata) { if ($this->current_xhtml_construct >= 0) { $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding); } elseif ($this->feed > 1) { $this->data['data'] .= $cdata; } } function tag_close($parser, $tag) { if (!$this->feed) { return; } if ($this->current_xhtml_construct >= 0) { $this->current_xhtml_construct--; if (end($this->namespace) == SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param'))) { $this->data['data'] .= 'element) . '>'; } } if ($this->current_xhtml_construct == -1) { $this->data =& $this->datas[$this->feed]; array_pop($this->datas); } array_pop($this->element); array_pop($this->namespace); array_pop($this->xml_base); array_pop($this->xml_base_explicit); array_pop($this->xml_lang); $this->feed--; } function split_ns($string) { static $cache = array(); if (!isset($cache[$string])) { if ($pos = strpos($string, $this->separator)) { static $separator_length; if (!$separator_length) { $separator_length = strlen($this->separator); } $cache[$string] = array(substr($string, 0, $pos), substr($string, $pos + $separator_length)); } else { $cache[$string] = array('', $string); } } return $cache[$string]; } } /** * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shortern a string while preserving HTML tags */ class SimplePie_Sanitize { // Private vars var $base; // Options var $remove_div = true; var $image_handler = ''; var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); var $encode_instead_of_strip = false; var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); var $strip_comments = false; var $output_encoding = 'UTF-8'; var $enable_cache = true; var $cache_location = './cache'; var $cache_name_function = 'md5'; var $cache_class = 'SimplePie_Cache'; var $file_class = 'SimplePie_File'; var $timeout = 10; var $useragent = ''; var $force_fsockopen = false; var $replace_url_attributes = array( 'a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite' ); function remove_div($enable = true) { $this->remove_div = (bool) $enable; } function set_image_handler($page = false) { if ($page) { $this->image_handler = (string) $page; } else { $this->image_handler = false; } } function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache') { if (isset($enable_cache)) { $this->enable_cache = (bool) $enable_cache; } if ($cache_location) { $this->cache_location = (string) $cache_location; } if ($cache_name_function) { $this->cache_name_function = (string) $cache_name_function; } if ($cache_class) { $this->cache_class = (string) $cache_class; } } function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false) { if ($file_class) { $this->file_class = (string) $file_class; } if ($timeout) { $this->timeout = (string) $timeout; } if ($useragent) { $this->useragent = (string) $useragent; } if ($force_fsockopen) { $this->force_fsockopen = (string) $force_fsockopen; } } function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style')) { if ($tags) { if (is_array($tags)) { $this->strip_htmltags = $tags; } else { $this->strip_htmltags = explode(',', $tags); } } else { $this->strip_htmltags = false; } } function encode_instead_of_strip($encode = false) { $this->encode_instead_of_strip = (bool) $encode; } function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc')) { if ($attribs) { if (is_array($attribs)) { $this->strip_attributes = $attribs; } else { $this->strip_attributes = explode(',', $attribs); } } else { $this->strip_attributes = false; } } function strip_comments($strip = false) { $this->strip_comments = (bool) $strip; } function set_output_encoding($encoding = 'UTF-8') { $this->output_encoding = (string) $encoding; } /** * Set element/attribute key/value pairs of HTML attributes * containing URLs that need to be resolved relative to the feed * * @access public * @since 1.0 * @param array $element_attribute Element/attribute key/value pairs */ function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite')) { $this->replace_url_attributes = (array) $element_attribute; } function sanitize($data, $type, $base = '') { $data = trim($data); if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI) { if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML) { if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/(\w+)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data)) { $type |= SIMPLEPIE_CONSTRUCT_HTML; } else { $type |= SIMPLEPIE_CONSTRUCT_TEXT; } } if ($type & SIMPLEPIE_CONSTRUCT_BASE64) { $data = base64_decode($data); } if ($type & SIMPLEPIE_CONSTRUCT_XHTML) { if ($this->remove_div) { $data = preg_replace('/^/', '', $data); $data = preg_replace('/<\/div>$/', '', $data); } else { $data = preg_replace('/^/', '
', $data); } } if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML)) { // Strip comments if ($this->strip_comments) { $data = SimplePie_Misc::strip_comments($data); } // Strip out HTML tags and attributes that might cause various security problems. // Based on recommendations by Mark Pilgrim at: // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely if ($this->strip_htmltags) { foreach ($this->strip_htmltags as $tag) { $pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU'; while (preg_match($pcre, $data)) { $data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data); } } } if ($this->strip_attributes) { foreach ($this->strip_attributes as $attrib) { $data = preg_replace('/ '. trim($attrib) .'=("|")(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|\'|'|<|>|\+|{|})*("|")/i', '', $data); $data = preg_replace('/ '. trim($attrib) .'=(\'|')(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|"|"|<|>|\+|{|})*(\'|')/i', '', $data); $data = preg_replace('/ '. trim($attrib) .'=(\w|\s|=|-|:|;|\/|\.|\?|&|,|#|!|\(|\)|\+|{|})*/i', '', $data); } } // Replace relative URLs $this->base = $base; foreach ($this->replace_url_attributes as $element => $attributes) { $data = $this->replace_urls($data, $element, $attributes); } // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags. if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache) { $images = SimplePie_Misc::get_element('img', $data); foreach ($images as $img) { if (isset($img['attribs']['src']['data'])) { $image_url = $img['attribs']['src']['data']; $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $image_url), 'spi'); if ($cache->load()) { $img['attribs']['src']['data'] = $this->image_handler . rawurlencode($img['attribs']['src']['data']); $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data); } else { $file = new $this->file_class($image_url, $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); $headers = $file->headers; if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300))) { if (!$cache->save(array('headers' => $file->headers, 'body' => $file->body))) { trigger_error("$cache->name is not writeable", E_USER_WARNING); } $img['attribs']['src']['data'] = $this->image_handler . rawurlencode($img['attribs']['src']['data']); $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data); } } } } } // Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data $data = trim($data); } if ($type & SIMPLEPIE_CONSTRUCT_IRI) { $data = SimplePie_Misc::absolutize_url($data, $base); } if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI)) { $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8'); } if ($this->output_encoding != 'UTF-8') { $data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding); } } return $data; } function replace_urls($data, $tag, $attributes) { if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags)) { $elements = SimplePie_Misc::get_element($tag, $data); foreach ($elements as $element) { if (is_array($attributes)) { foreach ($attributes as $attribute) { if (isset($element['attribs'][$attribute]['data'])) { $element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base); $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data); } } } elseif (isset($element['attribs'][$attributes]['data'])) { $element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base); $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data); } } } return $data; } function do_strip_htmltags($match) { if ($this->encode_instead_of_strip) { if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) { $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8'); $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8'); return "<$match[1]$match[2]>$match[3]</$match[1]>"; } else { return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8'); } } elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) { return $match[4]; } else { return ''; } } } ?> splitbrain-dokuwiki-d6c824b/inc/TarLib.class.php000066400000000000000000001017411134327003500216700ustar00rootroot00000000000000 (Maxg) * @author Christopher Smith */ /** * Those constants represent the compression method to use. * COMPRESS_GZIP is used for the GZIP compression; COMPRESS_BZIP for * BZIP2 and COMPRESS_NONE for no compression. * * On the other hand, COMPRESS_AUTO is a bit harder. It will first check * if the zlib extensions are loaded. * If it is, GZIP will be used. Else it will check if the bz2 extensions * are loaded. If it is, BZIP2 will be used. Else no compression will be * performed. * * You can then use getCompression() to know the compression chosen. * * If you selected a compression which can't be used (i.e extension not * present), it will be just disabled, and won't produce any error ! * As a consequence, getCompression() will return COMPRESS_NONE * * ARCHIVE_DYNAMIC can be passed as the first argument of the constructor, to * create an archive in memory instead of a file. See also: MaxgTar(), * getDynamicArchive() and writeArchive() * * ARCHIVE_RENAMECOMP is a flag that can be multiplied by the compression method * (i.e COMPRESS_AUTO * ARCHIVE_RENAMECOMP). This will add the correct extension * to the archive name, which is useful with COMPRESS_AUTO, ie .bz2 if you gave * COMPRESS_BZIP. See also getCompression(TRUE) which does exactly the * same * * COMPRESS_DETECT does exactly the opposite and try to detect the * compression to use to read the archive depending on its extension. (i.e if * the archive ends with .tar.gz TarLib will try to decompress it with * GZIP). See also setCompression() * * FULL_ARCHIVE is a -1 constant that means "the complete archive" when * extracting. This is explained in Extract() */ define('COMPRESS_GZIP',1); define('COMPRESS_BZIP',2); define('COMPRESS_AUTO',3); define('COMPRESS_NONE',0); define('TARLIB_VERSION','1.2'); define('FULL_ARCHIVE',-1); define('ARCHIVE_DYNAMIC',0); define('ARCHIVE_RENAMECOMP',5); define('COMPRESS_DETECT',-1); class TarLib { var $_comptype; var $_compzlevel; var $_fp; var $_memdat; var $_nomf; var $_result; var $_initerror; /** * constructor, initialize the class * * The constructor initialize the variables and prepare the class for the * archive, and return the object created. Note that you can use multiple * instances of the MaxgTar class, if you call this function another time and * store the object in an other variable. * * In fact, MaxgTar accepts the following arguments (all are optional) : * * filename can be either a file name (absolute or relative). In this * case, it can be used both for reading and writing. You can also open * remote archive if you add a protocole name at the beginning of the file * (ie https://host.dom/archive.tar.gz), but for reading only and if the * directive allow_url_fopen is enabled in PHP.INI (this can be checked with * TarInfo()). If you pass a file that doesn't exist, the script * will try to create it. If the archive already exists and contains files, * you can use Add() to append files.But by default this parameter * is ARCHIVE_DYNAMIC (write only) so the archive is created in memory and * can be sent to a file [writeArchive()] or to the client * [sendClient()] * * compression_type should be a constant that represents a type of * compression, or its integer value. The different values are described in * the constants. * * compression_level is an integer between 1 and 9 (by default) an * represent the GZIP or BZIP compression level. 1 produce fast compression, * and 9 produce smaller files. See the RFC 1952 for more infos. */ function tarlib($p_filen = ARCHIVE_DYNAMIC , $p_comptype = COMPRESS_AUTO, $p_complevel = 9) { $this->_initerror = 0; $this->_nomf = $p_filen; $flag=0; if($p_comptype && $p_comptype % 5 == 0){ $p_comptype /= ARCHIVE_RENAMECOMP; $flag=1; } if($p_complevel > 0 && $p_complevel <= 9) $this->_compzlevel = $p_complevel; else $p_complevel = 9; if($p_comptype == COMPRESS_DETECT) { if(strtolower(substr($p_filen,-3)) == '.gz') $p_comptype = COMPRESS_GZIP; elseif(strtolower(substr($p_filen,-4)) == '.bz2') $p_comptype = COMPRESS_BZIP; else $p_comptype = COMPRESS_NONE; } switch($p_comptype) { case COMPRESS_GZIP: if(!extension_loaded('zlib')) $this->_initerror = -1; $this->_comptype = COMPRESS_GZIP; break; case COMPRESS_BZIP: if(!extension_loaded('bz2')) $this->_initerror = -2; $this->_comptype = COMPRESS_BZIP; break; case COMPRESS_AUTO: if(extension_loaded('zlib')) $this->_comptype = COMPRESS_GZIP; elseif(extension_loaded('bz2')) $this->_comptype = COMPRESS_BZIP; else $this->_comptype = COMPRESS_NONE; break; default: $this->_comptype = COMPRESS_NONE; } if($this->_initerror < 0) $this->_comptype = COMPRESS_NONE; if($flag) $this->_nomf.= '.'.$this->getCompression(1); $this->_result = true; } /** * Recycle a TAR object. * * This function does exactly the same as TarLib (constructor), except it * returns a status code. */ function setArchive($p_name='', $p_comp = COMPRESS_AUTO, $p_level=9) { $this->_CompTar(); $this->TarLib($p_name, $p_comp, $p_level); return $this->_result; } /** * Get the compression used to generate the archive * * This is a very useful function when you're using dynamical archives. * Besides, if you let the script chose which compression to use, you'll have * a problem when you'll want to send it to the client if you don't know * which compression was used. * * There are two ways to call this function : if you call it without argument * or with FALSE, it will return the compression constants, explained on the * MaxgTar Constants. If you call it with GetExtension on TRUE it will * return the extension without starting dot (ie "tar" or "tar.bz2" or * "tar.gz") * * NOTE: This can be done with the flag ARCHIVE_RENAMECOMP, see the * MaxgTar Constants */ function getCompression($ext = false) { $exts = Array('tar','tar.gz','tar.bz2'); if($ext) return $exts[$this->_comptype]; return $this->_comptype; } /** * Change the compression mode. * * This function will change the compression methode to read or write * the archive. See the MaxgTar Constants to see which constants you can use. * It may look strange, but it returns the GZIP compression level. */ function setCompression($p_comp = COMPRESS_AUTO) { $this->setArchive($this->_nomf, $p_comp, $this->_compzlevel); return $this->_compzlevel; } /** * Returns the compressed dynamic archive. * * When you're working with dynamic archives, use this function to grab * the final compressed archive in a string ready to be put in a SQL table or * in a file. */ function getDynamicArchive() { return $this->_encode($this->_memdat); } /** * Write a dynamical archive into a file * * This function attempts to write a dynamicaly-genrated archive into * TargetFile on the webserver. It returns a TarErrorStr() status * code. * * To know the extension to add to the file if you're using AUTO_DETECT * compression, you can use getCompression(). */ function writeArchive($p_archive) { if(!$this->_memdat) return -7; $fp = @fopen($p_archive, 'wb'); if(!$fp) return -6; fwrite($fp, $this->_memdat); fclose($fp); return true; } /** * Send a TAR archive to the client browser. * * This function will send an archive to the client, and return a status * code, but can behave differently depending on the arguments you give. All * arguments are optional. * * ClientName is used to specify the archive name to give to the browser. If * you don't give one, it will send the constructor filename or return an * error code in case of dynamical archive. * * FileName is optional and used to send a specific archive. Leave it blank * to send dynamical archives or the current working archive. * * If SendHeaders is enabled (by default), the library will send the HTTP * headers itself before it sends the contents. This headers are : * Content-Type, Content-Disposition, Content-Length and Accept-Range. * * Please note that this function DOES NOT stops the script so don't forget * to exit() to avoid your script sending other data and corrupt the archive. * Another note : for AUTO_DETECT dynamical archives you can know the * extension to add to the name with getCompression() */ function sendClient($name = '', $archive = '', $headers = true) { if(!$name && !$this->_nomf) return -9; if(!$archive && !$this->_memdat) return -10; if(!$name) $name = basename($this->_nomf); if($archive){ if(!file_exists($archive)) return -11; } else $decoded = $this->getDynamicArchive(); if($headers) { header('Content-Type: application/x-gtar'); header('Content-Disposition: attachment; filename='.basename($name)); header('Accept-Ranges: bytes'); header('Content-Length: '.($archive ? filesize($archive) : strlen($decoded))); } if($archive) { $fp = @fopen($archive,'rb'); if(!$fp) return -4; while(!feof($fp)) echo fread($fp,2048); } else { echo $decoded; } return true; } /** * Extract part or totality of the archive. * * This function can extract files from an archive, and returns then a * status codes that can be converted with TarErrorStr() into a * human readable message. * * Only the first argument is required, What and it can be either the * constant FULL_ARCHIVE or an indexed array containing each file you want to * extract. * * To contains the target folder to extract the archive. It is optional and * the default value is '.' which means the current folder. If the target * folder doesn't exist, the script attempts to create it and give it * permissions 0777 by default. * * RemovePath is very usefull when you want to extract files from a subfoler * in the archive to a root folder. For instance, if you have a file in the * archive called some/sub/folder/test.txt and you want to extract it to the * script folder, you can call Extract with To = '.' and RemovePath = * 'some/sub/folder/' * * FileMode is optional and its default value is 0755. It is in fact the UNIX * permission in octal mode (prefixed with a 0) that will be given on each * extracted file. */ function Extract($p_what = FULL_ARCHIVE, $p_to = '.', $p_remdir='', $p_mode = 0755) { if(!$this->_OpenRead()) return -4; // if(!@is_dir($p_to)) if(!@mkdir($p_to, 0777)) return -8; --CS if(!@is_dir($p_to)) if(!$this->_dirApp($p_to)) return -8; //--CS (route through correct dir fn) $ok = $this->_extractList($p_to, $p_what, $p_remdir, $p_mode); $this->_CompTar(); return $ok; } /** * Create a new package with the given files * * This function will attempt to create a new archive with global headers * then add the given files into. If the archive is a real file, the * contents are written directly into the file, if it is a dynamic archive * contents are only stored in memory. This function should not be used to * add files to an existing archive, you should use Add() instead. * * The FileList actually supports three different modes : * * - You can pass a string containing filenames separated by pipes '|'. * In this case the file are read from the webserver filesystem and the * root folder is the folder where the script using the MaxgTar is called. * * - You can also give a unidimensional indexed array containing the * filenames. The behaviour for the content reading is the same that a * '|'ed string. * * - The more useful usage is to pass bidimensional arrays, where the * first element contains the filename and the second contains the file * contents. You can even add empty folders to the package if the filename * has a leading '/'. Once again, have a look at the exemples to understand * better. * * Note you can also give arrays with both dynamic contents and static files. * * The optional parameter RemovePath can be used to delete a part of the tree * of the filename you're adding, for instance if you're adding in the root * of a package a file that is stored somewhere in the server tree. * * On the contrary the parameter AddPath can be used to add a prefix folder * to the file you store. Note also that the RemovePath is applied before the * AddPath is added, so it HAS a sense to use both parameters together. */ function Create($p_filelist,$p_add='',$p_rem='') { if(!$fl = $this->_fetchFilelist($p_filelist)) return -5; if(!$this->_OpenWrite()) return -6; $ok = $this->_addFileList($fl,$p_add,$p_rem); if($ok){ $this->_writeFooter(); }else{ $this->_CompTar(); @unlink($this->_nomf); } return $ok; } /** * Add files to an existing package. * * This function does exactly the same than Create() exept it * will append the given files at the end of the archive. Please not the is * safe to call Add() on a newly created archive whereas the * contrary will fail ! * * This function returns a status code, you can use TarErrorStr() on * it to get the human-readable description of the error. */ function Add($p_filelist, $p_add = '', $p_rem = '') { if (($this->_nomf != ARCHIVE_DYNAMIC && @is_file($this->_nomf)) || ($this->_nomf == ARCHIVE_DYNAMIC && !$this->_memdat)){ return $this->Create($p_filelist, $p_add, $p_rem); } if(!$fl = $this->_fetchFilelist($p_filelist)) return -5; return $this->_append($fl, $p_add, $p_rem); } /** * Read the contents of a TAR archive * * This function attempts to get the list of the files stored in the * archive, and return either an error code or an indexed array of * associative array containing for each file the following informations : * * checksum Tar Checksum of the file * filename The full name of the stored file (up to 100 c.) * mode UNIX permissions in DECIMAL, not octal * uid The Owner ID * gid The Group ID * size Uncompressed filesize * mtime Timestamp of last modification * typeflag Empty for files, set for folders * link For the links, did you guess it ? * uname Owner name * gname Group name */ function ListContents() { if(!$this->_nomf) return -3; if(!$this->_OpenRead()) return -4; $result = Array(); while ($dat = $this->_read(512)) { $dat = $this->_readHeader($dat); if(!is_array($dat)) continue; $this->_seek(ceil($dat['size']/512)*512,1); $result[] = $dat; } return $result; } /** * Convert a status code into a human readable message * * Some MaxgTar functions like Create(), Add() ... return numerical * status code. You can pass them to this function to grab their english * equivalent. */ function TarErrorStr($i) { $ecodes = Array( 1 => true, 0 => "Undocumented error", -1 => "Can't use COMPRESS_GZIP compression : ZLIB extensions are not loaded !", -2 => "Can't use COMPRESS_BZIP compression : BZ2 extensions are not loaded !", -3 => "You must set a archive file to read the contents !", -4 => "Can't open the archive file for read !", -5 => "Invalide file list !", -6 => "Can't open the archive in write mode !", -7 => "There is no ARCHIVE_DYNAMIC to write !", -8 => "Can't create the directory to extract files !", -9 => "Please pass a archive name to send if you made created an ARCHIVE_DYNAMIC !", -10 => "You didn't pass an archive filename and there is no stored ARCHIVE_DYNAMIC !", -11 => "Given archive doesn't exist !" ); return isset($ecodes[$i]) ? $ecodes[$i] : $ecodes[0]; } /** * Display informations about the MaxgTar Class. * * This function will display vaious informations about the server * MaxgTar is running on. * * The optional parameter DispHeaders is used to generate a full page with * HTML headers (TRUE by default) or just the table with the informations * (FALSE). Note that the HTML page generated is verified compatible XHTML * 1.0, but not HTML 4.0 compatible. */ function TarInfo($headers = true) { if($headers) { ?> MaxgComp TAR
MaxgComp TAR
This software was created by the Maxg Network, http://maxg.info
It is distributed under the GNU Lesser General Public License
You can find the documentation of this class here
MaxgComp TAR
MaxgComp TAR version
ZLIB extensions Yes' : 'No')?>
BZ2 extensions Yes' : 'No')?>
Allow URL fopen Yes' : 'No')?>
Time limit
PHP Version
Special thanks to « Vincent Blavet » for his PEAR::Archive_Tar class
'; } function _seek($p_flen, $tell=0) { if($this->_nomf === ARCHIVE_DYNAMIC) $this->_memdat=substr($this->_memdat,0,($tell ? strlen($this->_memdat) : 0) + $p_flen); elseif($this->_comptype == COMPRESS_GZIP) @gzseek($this->_fp, ($tell ? @gztell($this->_fp) : 0)+$p_flen); elseif($this->_comptype == COMPRESS_BZIP) @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen); else @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen); } function _OpenRead() { if($this->_comptype == COMPRESS_GZIP) $this->_fp = @gzopen($this->_nomf, 'rb'); elseif($this->_comptype == COMPRESS_BZIP) $this->_fp = @bzopen($this->_nomf, 'rb'); else $this->_fp = @fopen($this->_nomf, 'rb'); return ($this->_fp ? true : false); } function _OpenWrite($add = 'w') { if($this->_nomf === ARCHIVE_DYNAMIC) return true; if($this->_comptype == COMPRESS_GZIP) $this->_fp = @gzopen($this->_nomf, $add.'b'.$this->_compzlevel); elseif($this->_comptype == COMPRESS_BZIP) $this->_fp = @bzopen($this->_nomf, $add.'b'); else $this->_fp = @fopen($this->_nomf, $add.'b'); return ($this->_fp ? true : false); } function _CompTar() { if($this->_nomf === ARCHIVE_DYNAMIC || !$this->_fp) return; if($this->_comptype == COMPRESS_GZIP) @gzclose($this->_fp); elseif($this->_comptype == COMPRESS_BZIP) @bzclose($this->_fp); else @fclose($this->_fp); } function _read($p_len) { if($this->_comptype == COMPRESS_GZIP) return @gzread($this->_fp,$p_len); elseif($this->_comptype == COMPRESS_BZIP) return @bzread($this->_fp,$p_len); else return @fread($this->_fp,$p_len); } function _write($p_data) { if($this->_nomf === ARCHIVE_DYNAMIC) $this->_memdat .= $p_data; elseif($this->_comptype == COMPRESS_GZIP) return @gzwrite($this->_fp,$p_data); elseif($this->_comptype == COMPRESS_BZIP) return @bzwrite($this->_fp,$p_data); else return @fwrite($this->_fp,$p_data); } function _encode($p_dat) { if($this->_comptype == COMPRESS_GZIP) return gzencode($p_dat, $this->_compzlevel); elseif($this->_comptype == COMPRESS_BZIP) return bzcompress($p_dat, $this->_compzlevel); else return $p_dat; } function _readHeader($p_dat) { if (!$p_dat || strlen($p_dat) != 512) return false; for ($i=0, $chks=0; $i<148; $i++) $chks += ord($p_dat[$i]); for ($i=156,$chks+=256; $i<512; $i++) $chks += ord($p_dat[$i]); $headers = @unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $p_dat); if(!$headers) return false; $return['checksum'] = OctDec(trim($headers['checksum'])); if ($return['checksum'] != $chks) return false; $return['filename'] = trim($headers['filename']); $return['mode'] = OctDec(trim($headers['mode'])); $return['uid'] = OctDec(trim($headers['uid'])); $return['gid'] = OctDec(trim($headers['gid'])); $return['size'] = OctDec(trim($headers['size'])); $return['mtime'] = OctDec(trim($headers['mtime'])); $return['typeflag'] = $headers['typeflag']; $return['link'] = trim($headers['link']); $return['uname'] = trim($headers['uname']); $return['gname'] = trim($headers['gname']); return $return; } function _fetchFilelist($p_filelist) { if(!$p_filelist || (is_array($p_filelist) && !@count($p_filelist))) return false; if(is_string($p_filelist)) { $p_filelist = explode('|',$p_filelist); if(!is_array($p_filelist)) $p_filelist = Array($p_filelist); } return $p_filelist; } function _addFileList($p_fl, $p_addir, $p_remdir) { foreach($p_fl as $file) { if(($file == $this->_nomf && $this->_nomf != ARCHIVE_DYNAMIC) || !$file || (!file_exists($file) && !is_array($file))) continue; if (!$this->_addFile($file, $p_addir, $p_remdir)) continue; if (@is_dir($file)) { $d = @opendir($file); if(!$d) continue; readdir($d); readdir($d); while($f = readdir($d)) { if($file != ".") $tmplist[0] = "$file/$f"; else $tmplist[0] = $d; $this->_addFileList($tmplist, $p_addir, $p_remdir); } closedir($d); unset($tmplist,$f); } } return true; } function _addFile($p_fn, $p_addir = '', $p_remdir = '') { if(is_array($p_fn)) list($p_fn, $data) = $p_fn; $sname = $p_fn; if($p_remdir) { if(substr($p_remdir,-1) != '/') $p_remdir .= "/"; if(substr($sname, 0, strlen($p_remdir)) == $p_remdir) $sname = substr($sname, strlen($p_remdir)); } if($p_addir) $sname = $p_addir.(substr($p_addir,-1) == '/' ? '' : "/").$sname; if(strlen($sname) > 99) return; if(@is_dir($p_fn)) { if(!$this->_writeFileHeader($p_fn, $sname)) return false; } else { if(!$data) { $fp = fopen($p_fn, 'rb'); if(!$fp) return false; } if(!$this->_writeFileHeader($p_fn, $sname, ($data ? strlen($data) : false))) return false; if(!$data) { while(!feof($fp)) { $packed = pack("a512", fread($fp,512)); $this->_write($packed); } fclose($fp); } else { $len = strlen($data); for($s = 0; $s < $len; $s += 512){ $this->_write(pack("a512",substr($data,$s,512))); } } } return true; } function _writeFileHeader($p_file, $p_sname, $p_data=false) { if(!$p_data) { if (!$p_sname) $p_sname = $p_file; $p_sname = $this->_pathTrans($p_sname); $h_info = stat($p_file); $h[0] = sprintf("%6s ", DecOct($h_info[4])); $h[] = sprintf("%6s ", DecOct($h_info[5])); $h[] = sprintf("%6s ", DecOct(fileperms($p_file))); clearstatcache(); $h[] = sprintf("%11s ", DecOct(filesize($p_file))); $h[] = sprintf("%11s", DecOct(filemtime($p_file))); $dir = @is_dir($p_file) ? '5' : ''; } else { $dir = ''; $p_data = sprintf("%11s ", DecOct($p_data)); $time = sprintf("%11s ", DecOct(time())); $h = Array(" 0 "," 0 "," 40777 ",$p_data,$time); } $data_first = pack("a100a8a8a8a12A12", $p_sname, $h[2], $h[0], $h[1], $h[3], $h[4]); $data_last = pack("a1a100a6a2a32a32a8a8a155a12", $dir, '', '', '', '', '', '', '', '', ""); for ($i=0,$chks=0; $i<148; $i++) $chks += ord($data_first[$i]); for ($i=156, $chks+=256, $j=0; $i<512; $i++, $j++) $chks += ord($data_last[$j]); $this->_write($data_first); $chks = pack("a8",sprintf("%6s ", DecOct($chks))); $this->_write($chks.$data_last); return true; } function _append($p_filelist, $p_addir="", $p_remdir="") { if(!$this->_fp) if(!$this->_OpenWrite('a')) return -6; if($this->_nomf == ARCHIVE_DYNAMIC) { $s = strlen($this->_memdat); $this->_memdat = substr($this->_memdat,0,-512); } else { $s = filesize($this->_nomf); $this->_seek($s-512); } $ok = $this->_addFileList($p_filelist, $p_addir, $p_remdir); $this->_writeFooter(); return $ok; } function _pathTrans($p_dir) { if ($p_dir) { $subf = explode("/", $p_dir); $r=''; for ($i=count($subf)-1; $i>=0; $i--) { if ($subf[$i] == ".") { # do nothing } elseif ($subf[$i] == "..") { $i--; } elseif (!$subf[$i] && $i!=count($subf)-1 && $i) { # do nothing } else { $r = $subf[$i].($i!=(count($subf)-1) ? "/".$r : ""); } } } return $r; } function _writeFooter() { $this->_write(pack("a512", "")); } function _extractList($p_to, $p_files, $p_remdir, $p_mode = 0755) { if (!$p_to || ($p_to[0]!="/"&&substr($p_to,0,3)!="../"&&substr($p_to,1,3)!=":\\"&&substr($p_to,1,2)!=":/")) /*" // <- PHP Coder bug */ $p_to = "./$p_to"; if ($p_remdir && substr($p_remdir,-1)!='/') $p_remdir .= '/'; $p_remdirs = strlen($p_remdir); while($dat = $this->_read(512)) { $headers = $this->_readHeader($dat); if(!$headers['filename']) continue; if($p_files == -1 || $p_files[0] == -1){ $extract = true; } else { $extract = false; foreach($p_files as $f) { if(substr($f,-1) == "/") { if((strlen($headers['filename']) > strlen($f)) && (substr($headers['filename'],0,strlen($f))==$f)) { $extract = true; break; } } elseif($f == $headers['filename']) { $extract = true; break; } } } if ($extract) { $det[] = $headers; if ($p_remdir && substr($headers['filename'],0,$p_remdirs)==$p_remdir) $headers['filename'] = substr($headers['filename'],$p_remdirs); if($headers['filename'].'/' == $p_remdir && $headers['typeflag']=='5') continue; if ($p_to != "./" && $p_to != "/") { while($p_to{-1}=="/") $p_to = substr($p_to,0,-1); if($headers['filename']{0} == "/") $headers['filename'] = $p_to.$headers['filename']; else $headers['filename'] = $p_to."/".$headers['filename']; } $ok = $this->_dirApp($headers['typeflag']=="5" ? $headers['filename'] : dirname($headers['filename'])); if($ok < 0) return $ok; if (!$headers['typeflag']) { if (!$fp = @fopen($headers['filename'], "wb")) return -6; $n = floor($headers['size']/512); for ($i=0; $i<$n; $i++){ fwrite($fp, $this->_read(512),512); } if (($headers['size'] % 512) != 0) fwrite($fp, $this->_read(512), $headers['size'] % 512); fclose($fp); touch($headers['filename'], $headers['mtime']); chmod($headers['filename'], $p_mode); } else { $this->_seek(ceil($headers['size']/512)*512,1); } }else $this->_seek(ceil($headers['size']/512)*512,1); } return $det; } function _dirApp($d) { // map to dokuwiki function (its more robust) return io_mkdir_p($d); } } splitbrain-dokuwiki-d6c824b/inc/ZipLib.class.php000066400000000000000000000426351134327003500217120ustar00rootroot00000000000000 */ class ZipLib { var $datasec; var $ctrl_dir = array(); var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; var $old_offset = 0; var $dirs = Array("."); function get_List($zip_name) { $zip = @fopen($zip_name, 'rb'); if(!$zip) return(0); $centd = $this->ReadCentralDir($zip,$zip_name); @rewind($zip); @fseek($zip, $centd['offset']); for ($i=0; $i<$centd['entries']; $i++) { $header = $this->ReadCentralFileHeaders($zip); $header['index'] = $i; $info['filename'] = $header['filename']; $info['stored_filename'] = $header['stored_filename']; $info['size'] = $header['size']; $info['compressed_size'] = $header['compressed_size']; $info['crc'] = strtoupper(dechex( $header['crc'] )); $info['mtime'] = $header['mtime']; $info['comment'] = $header['comment']; $info['folder'] = ($header['external']==0x41FF0010||$header['external']==16)?1:0; $info['index'] = $header['index']; $info['status'] = $header['status']; $ret[]=$info; unset($header); } return $ret; } function Add($files,$compact) { if(!is_array($files[0])) $files=Array($files); for($i=0;$files[$i];$i++){ $fn = $files[$i]; if(!in_Array(dirname($fn[0]),$this->dirs)) $this->add_Dir(dirname($fn[0])); if(basename($fn[0])) $ret[basename($fn[0])]=$this->add_File($fn[1],$fn[0],$compact); } return $ret; } /** * Zips recursively the $folder directory, from the $basedir directory */ function Compress($folder, $basedir=null, $parent=null) { $full_path = $basedir."/".$parent.$folder; $zip_path = $parent.$folder; if ($zip_path) { $zip_path .= "/"; $this->add_dir($zip_path); } $dir = new DirectoryIterator($full_path); foreach($dir as $file) { if(!$file->isDot()) { $filename = $file->getFilename(); if($file->isDir()) { $this->Compress($filename, $basedir, $zip_path); } else { $content = join('', file($full_path.'/'.$filename)); $this->add_File($content, $zip_path.$filename); } } } } /** * Returns the Zip file */ function get_file() { $data = implode('', $this -> datasec); $ctrldir = implode('', $this -> ctrl_dir); return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', count($this->ctrl_dir)).pack('v', count($this->ctrl_dir)). pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00"; } function add_dir($name) { $name = str_replace("\\", "/", $name); $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; $fr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); $fr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0); $this -> datasec[] = $fr; $new_offset = strlen(implode("", $this->datasec)); $cdrec = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; $cdrec .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); $cdrec .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 ); $ext = "\xff\xff\xff\xff"; $cdrec .= pack("V", 16 ).pack("V", $this -> old_offset ).$name; $this -> ctrl_dir[] = $cdrec; $this -> old_offset = $new_offset; $this -> dirs[] = $name; } /** * Add a file named $name from a string $data */ function add_File($data, $name, $compact = 1) { $name = str_replace('\\', '/', $name); $dtime = dechex($this->DosTime()); $hexdtime = pack('H*',$dtime[6].$dtime[7]. $dtime[4].$dtime[5]. $dtime[2].$dtime[3]. $dtime[0].$dtime[1]); if($compact){ $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00".$hexdtime; }else{ $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00".$hexdtime; } $unc_len = strlen($data); $crc = crc32($data); if($compact){ $zdata = gzcompress($data); $c_len = strlen($zdata); $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); }else{ $zdata = $data; } $c_len=strlen($zdata); $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); $fr .= pack('v', strlen($name)).pack('v', 0).$name.$zdata; $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); $this -> datasec[] = $fr; $new_offset = strlen(implode('', $this->datasec)); if($compact) { $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00"; } else { $cdrec = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00"; } $cdrec .= $hexdtime.pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); $cdrec .= pack('v', strlen($name) ).pack('v', 0 ).pack('v', 0 ); $cdrec .= pack('v', 0 ).pack('v', 0 ).pack('V', 32 ); $cdrec .= pack('V', $this -> old_offset ); $this -> old_offset = $new_offset; $cdrec .= $name; $this -> ctrl_dir[] = $cdrec; return true; } function DosTime() { $timearray = getdate(); if ($timearray['year'] < 1980) { $timearray['year'] = 1980; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); } /** * Extract a zip file $zn to the $to directory */ function Extract ( $zn, $to, $index = Array(-1) ) { if(!@is_dir($to)) $this->_mkdir($to); $ok = 0; $zip = @fopen($zn,'rb'); if(!$zip) return(-1); $cdir = $this->ReadCentralDir($zip,$zn); $pos_entry = $cdir['offset']; if(!is_array($index)){ $index = array($index); } for($i=0; isset($index[$i]);$i++){ if(intval($index[$i])!=$index[$i]||$index[$i]>$cdir['entries']) return(-1); } for ($i=0; $i<$cdir['entries']; $i++) { @fseek($zip, $pos_entry); $header = $this->ReadCentralFileHeaders($zip); $header['index'] = $i; $pos_entry = ftell($zip); @rewind($zip); fseek($zip, $header['offset']); if(in_array("-1",$index)||in_array($i,$index)){ $stat[$header['filename']]=$this->ExtractFile($header, $to, $zip); } } fclose($zip); return $stat; } function ReadFileHeader($zip, $header) { $binary_data = fread($zip, 30); $data = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data); $header['filename'] = fread($zip, $data['filename_len']); if ($data['extra_len'] != 0) { $header['extra'] = fread($zip, $data['extra_len']); } else { $header['extra'] = ''; } $header['compression'] = $data['compression']; foreach (array('size','compressed_size','crc') as $hd) { // On ODT files, these headers are 0. Keep the previous value. if ($data[$hd] != 0) $header[$hd] = $data[$hd]; } $header['flag'] = $data['flag']; $header['mdate'] = $data['mdate']; $header['mtime'] = $data['mtime']; if ($header['mdate'] && $header['mtime']){ $hour = ($header['mtime']&0xF800)>>11; $minute = ($header['mtime']&0x07E0)>>5; $seconde = ($header['mtime']&0x001F)*2; $year = (($header['mdate']&0xFE00)>>9)+1980; $month = ($header['mdate']&0x01E0)>>5; $day = $header['mdate']&0x001F; $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year); } else { $header['mtime'] = time(); } $header['stored_filename'] = $header['filename']; $header['status'] = "ok"; return $header; } function ReadCentralFileHeaders($zip){ $binary_data = fread($zip, 46); $header = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data); if ($header['filename_len'] != 0){ $header['filename'] = fread($zip,$header['filename_len']); }else{ $header['filename'] = ''; } if ($header['extra_len'] != 0){ $header['extra'] = fread($zip, $header['extra_len']); }else{ $header['extra'] = ''; } if ($header['comment_len'] != 0){ $header['comment'] = fread($zip, $header['comment_len']); }else{ $header['comment'] = ''; } if ($header['mdate'] && $header['mtime']) { $hour = ($header['mtime'] & 0xF800) >> 11; $minute = ($header['mtime'] & 0x07E0) >> 5; $seconde = ($header['mtime'] & 0x001F)*2; $year = (($header['mdate'] & 0xFE00) >> 9) + 1980; $month = ($header['mdate'] & 0x01E0) >> 5; $day = $header['mdate'] & 0x001F; $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year); } else { $header['mtime'] = time(); } $header['stored_filename'] = $header['filename']; $header['status'] = 'ok'; if (substr($header['filename'], -1) == '/') $header['external'] = 0x41FF0010; return $header; } function ReadCentralDir($zip,$zip_name) { $size = filesize($zip_name); if ($size < 277){ $maximum_size = $size; } else { $maximum_size=277; } @fseek($zip, $size-$maximum_size); $pos = ftell($zip); $bytes = 0x00000000; while ($pos < $size) { $byte = @fread($zip, 1); $bytes=(($bytes << 8) & 0xFFFFFFFF) | Ord($byte); if ($bytes == 0x504b0506){ $pos++; break; } $pos++; } $data=unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', fread($zip, 18)); if ($data['comment_size'] != 0){ $centd['comment'] = fread($zip, $data['comment_size']); } else { $centd['comment'] = ''; $centd['entries'] = $data['entries']; } $centd['disk_entries'] = $data['disk_entries']; $centd['offset'] = $data['offset']; $centd['disk_start'] = $data['disk_start']; $centd['size'] = $data['size']; $centd['disk'] = $data['disk']; return $centd; } function ExtractFile($header,$to,$zip) { $header = $this->readfileheader($zip, $header); if(substr($to,-1)!="/") $to.="/"; if(substr($header['filename'],-1)=="/") { $this->_mkdir($to.$header['filename']); return +2; } if (!$this->_mkdir($to.dirname($header['filename']))) return (-1); if (!array_key_exists("external", $header) || (!($header['external']==0x41FF0010)&&!($header['external']==16))) { if ($header['compression']==0) { $fp = @fopen($to.$header['filename'], 'wb'); if(!$fp) return(-1); $size = $header['compressed_size']; while ($size != 0) { $read_size = ($size < 2048 ? $size : 2048); $buffer = fread($zip, $read_size); $binary_data = pack('a'.$read_size, $buffer); @fwrite($fp, $binary_data, $read_size); $size -= $read_size; } fclose($fp); touch($to.$header['filename'], $header['mtime']); }else{ if (!is_dir(dirname($to.$header['filename']))) $this->_mkdir(dirname($to.$header['filename'])); $fp = fopen($to.$header['filename'].'.gz','wb'); if(!$fp) return(-1); $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); fwrite($fp, $binary_data, 10); $size = $header['compressed_size']; while ($size != 0) { $read_size = ($size < 1024 ? $size : 1024); $buffer = fread($zip, $read_size); $binary_data = pack('a'.$read_size, $buffer); @fwrite($fp, $binary_data, $read_size); $size -= $read_size; } $binary_data = pack('VV', $header['crc'], $header['size']); fwrite($fp, $binary_data,8); fclose($fp); $gzp = @gzopen($to.$header['filename'].'.gz','rb'); if(!$gzp){ @gzclose($gzp); @unlink($to.$header['filename']); die("Archive is compressed whereas ZLIB is not enabled."); } $fp = @fopen($to.$header['filename'],'wb'); if(!$fp) return(-1); $size = $header['size']; while ($size != 0) { $read_size = ($size < 2048 ? $size : 2048); $buffer = gzread($gzp, $read_size); $binary_data = pack('a'.$read_size, $buffer); @fwrite($fp, $binary_data, $read_size); $size -= $read_size; } fclose($fp); gzclose($gzp); touch($to.$header['filename'], $header['mtime']); @unlink($to.$header['filename'].'.gz'); } } return true; } /** * centralize mkdir calls and use dokuwiki io functions * * @author Christopher Smith */ function _mkdir($d) { return io_mkdir_p($d); } function ExtractStr($zn, $name) { $ok = 0; $zip = @fopen($zn,'rb'); if(!$zip) return(null); $cdir = $this->ReadCentralDir($zip,$zn); $pos_entry = $cdir['offset']; for ($i=0; $i<$cdir['entries']; $i++) { @fseek($zip, $pos_entry); $header = $this->ReadCentralFileHeaders($zip); $header['index'] = $i; $pos_entry = ftell($zip); @rewind($zip); fseek($zip, $header['offset']); if ($name == $header['stored_filename'] || $name == $header['filename']) { $str = $this->ExtractStrFile($header, $zip); fclose($zip); return $str; } } fclose($zip); return null; } function ExtractStrFile($header,$zip) { $hdr = $this->readfileheader($zip); $binary_data = ''; if (!($header['external']==0x41FF0010) && !($header['external']==16)) { if ($header['compression']==0) { while ($size != 0) { $read_size = ($size < 2048 ? $size : 2048); $buffer = fread($zip, $read_size); $binary_data .= pack('a'.$read_size, $buffer); $size -= $read_size; } return $binary_data; } else { $size = $header['compressed_size']; if ($size == 0) { return ''; } //Just in case if ($size > ($this->_ret_bytes(ini_get('memory_limit'))/2)) { die("Compressed file is to huge to be uncompress in memory."); } while ($size != 0) { $read_size = ($size < 2048 ? $size : 2048); $buffer = fread($zip, $read_size); $binary_data .= pack('a'.$read_size, $buffer); $size -= $read_size; } $str = gzinflate($binary_data, $header['size']); if ($header['crc'] == crc32($str)) { return $str; } else { die("Crc Error"); } } } return null; } function _ret_bytes($val) { $val = trim($val); $last = $val{strlen($val)-1}; switch($last) { case 'k': case 'K': return (int) $val * 1024; break; case 'm': case 'M': return (int) $val * 1048576; break; default: return $val; } } } splitbrain-dokuwiki-d6c824b/inc/actions.php000066400000000000000000000432521134327003500210510ustar00rootroot00000000000000 */ if(!defined('DOKU_INC')) die('meh.'); require_once(DOKU_INC.'inc/template.php'); /** * Call the needed action handlers * * @author Andreas Gohr * @triggers ACTION_ACT_PREPROCESS * @triggers ACTION_HEADERS_SEND */ function act_dispatch(){ global $INFO; global $ACT; global $ID; global $QUERY; global $lang; global $conf; global $license; $preact = $ACT; // give plugins an opportunity to process the action $evt = new Doku_Event('ACTION_ACT_PREPROCESS',$ACT); if ($evt->advise_before()) { //sanitize $ACT $ACT = act_clean($ACT); //check if searchword was given - else just show $s = cleanID($QUERY); if($ACT == 'search' && empty($s)){ $ACT = 'show'; } //login stuff if(in_array($ACT,array('login','logout'))){ $ACT = act_auth($ACT); } //check if user is asking to (un)subscribe a page if($ACT == 'subscribe') { try { $ACT = act_subscription($ACT); } catch (Exception $e) { msg($e->getMessage(), -1); } } //check permissions $ACT = act_permcheck($ACT); //register $nil = array(); if($ACT == 'register' && $_POST['save'] && register()){ $ACT = 'login'; } if ($ACT == 'resendpwd' && act_resendpwd()) { $ACT = 'login'; } //update user profile if ($ACT == 'profile') { if(!$_SERVER['REMOTE_USER']) { $ACT = 'login'; } else { if(updateprofile()) { msg($lang['profchanged'],1); $ACT = 'show'; } } } //revert if($ACT == 'revert'){ if(checkSecurityToken()){ $ACT = act_revert($ACT); }else{ $ACT = 'show'; } } //save if($ACT == 'save'){ if(checkSecurityToken()){ $ACT = act_save($ACT); }else{ $ACT = 'show'; } } //cancel conflicting edit if($ACT == 'cancel') $ACT = 'show'; //draft deletion if($ACT == 'draftdel') $ACT = act_draftdel($ACT); //draft saving on preview if($ACT == 'preview') $ACT = act_draftsave($ACT); //edit if(($ACT == 'edit' || $ACT == 'preview') && $INFO['editable']){ $ACT = act_edit($ACT); }else{ unlock($ID); //try to unlock } //handle export if(substr($ACT,0,7) == 'export_') $ACT = act_export($ACT); //display some infos if($ACT == 'check'){ check(); $ACT = 'show'; } //handle admin tasks if($ACT == 'admin'){ // retrieve admin plugin name from $_REQUEST['page'] if (!empty($_REQUEST['page'])) { $pluginlist = plugin_list('admin'); if (in_array($_REQUEST['page'], $pluginlist)) { // attempt to load the plugin if ($plugin =& plugin_load('admin',$_REQUEST['page']) !== null) $plugin->handle(); } } } // check permissions again - the action may have changed $ACT = act_permcheck($ACT); } // end event ACTION_ACT_PREPROCESS default action $evt->advise_after(); unset($evt); // when action 'show', the intial not 'show' and POST, do a redirect if($ACT == 'show' && $preact != 'show' && strtolower($_SERVER['REQUEST_METHOD']) == 'post'){ act_redirect($ID,$preact); } //call template FIXME: all needed vars available? $headers[] = 'Content-Type: text/html; charset=utf-8'; trigger_event('ACTION_HEADERS_SEND',$headers,'act_sendheaders'); include(template('main.php')); // output for the commands is now handled in inc/templates.php // in function tpl_content() } function act_sendheaders($headers) { foreach ($headers as $hdr) header($hdr); } /** * Sanitize the action command * * Add all allowed commands here. * * @author Andreas Gohr */ function act_clean($act){ global $lang; global $conf; // check if the action was given as array key if(is_array($act)){ list($act) = array_keys($act); } //remove all bad chars $act = strtolower($act); $act = preg_replace('/[^1-9a-z_]+/','',$act); if($act == 'export_html') $act = 'export_xhtml'; if($act == 'export_htmlbody') $act = 'export_xhtmlbody'; // check if action is disabled if(!actionOK($act)){ msg('Command disabled: '.htmlspecialchars($act),-1); return 'show'; } //disable all acl related commands if ACL is disabled if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin', 'subscribe','unsubscribe','profile','revert', 'resendpwd','subscribens','unsubscribens',))){ msg('Command unavailable: '.htmlspecialchars($act),-1); return 'show'; } if(!in_array($act,array('login','logout','register','save','cancel','edit','draft', 'preview','search','show','check','index','revisions', 'diff','recent','backlink','admin','subscribe','revert', 'unsubscribe','profile','resendpwd','recover','wordblock', 'draftdel','subscribens','unsubscribens',)) && substr($act,0,7) != 'export_' ) { msg('Command unknown: '.htmlspecialchars($act),-1); return 'show'; } return $act; } /** * Run permissionchecks * * @author Andreas Gohr */ function act_permcheck($act){ global $INFO; global $conf; if(in_array($act,array('save','preview','edit','recover'))){ if($INFO['exists']){ if($act == 'edit'){ //the edit function will check again and do a source show //when no AUTH_EDIT available $permneed = AUTH_READ; }else{ $permneed = AUTH_EDIT; } }else{ $permneed = AUTH_CREATE; } }elseif(in_array($act,array('login','search','recent','profile'))){ $permneed = AUTH_NONE; }elseif($act == 'revert'){ $permneed = AUTH_ADMIN; if($INFO['ismanager']) $permneed = AUTH_EDIT; }elseif($act == 'register'){ $permneed = AUTH_NONE; }elseif($act == 'resendpwd'){ $permneed = AUTH_NONE; }elseif($act == 'admin'){ if($INFO['ismanager']){ // if the manager has the needed permissions for a certain admin // action is checked later $permneed = AUTH_READ; }else{ $permneed = AUTH_ADMIN; } }else{ $permneed = AUTH_READ; } if($INFO['perm'] >= $permneed) return $act; return 'denied'; } /** * Handle 'draftdel' * * Deletes the draft for the current page and user */ function act_draftdel($act){ global $INFO; @unlink($INFO['draft']); $INFO['draft'] = null; return 'show'; } /** * Saves a draft on preview * * @todo this currently duplicates code from ajax.php :-/ */ function act_draftsave($act){ global $INFO; global $ID; global $conf; if($conf['usedraft'] && $_POST['wikitext']){ $draft = array('id' => $ID, 'prefix' => $_POST['prefix'], 'text' => $_POST['wikitext'], 'suffix' => $_POST['suffix'], 'date' => $_POST['date'], 'client' => $INFO['client'], ); $cname = getCacheName($draft['client'].$ID,'.draft'); if(io_saveFile($cname,serialize($draft))){ $INFO['draft'] = $cname; } } return $act; } /** * Handle 'save' * * Checks for spam and conflicts and saves the page. * Does a redirect to show the page afterwards or * returns a new action. * * @author Andreas Gohr */ function act_save($act){ global $ID; global $DATE; global $PRE; global $TEXT; global $SUF; global $SUM; //spam check if(checkwordblock()) return 'wordblock'; //conflict check //FIXME use INFO if($DATE != 0 && @filemtime(wikiFN($ID)) > $DATE ) return 'conflict'; //save it saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM,$_REQUEST['minor']); //use pretty mode for con //unlock it unlock($ID); //delete draft act_draftdel($act); session_write_close(); // when done, show page return 'show'; } /** * Revert to a certain revision * * @author Andreas Gohr */ function act_revert($act){ global $ID; global $REV; global $lang; // when no revision is given, delete current one // FIXME this feature is not exposed in the GUI currently $text = ''; $sum = $lang['deleted']; if($REV){ $text = rawWiki($ID,$REV); if(!$text) return 'show'; //something went wrong $sum = $lang['restored']; } // spam check if(checkwordblock($Text)) return 'wordblock'; saveWikiText($ID,$text,$sum,false); msg($sum,1); //delete any draft act_draftdel($act); session_write_close(); // when done, show current page $_SERVER['REQUEST_METHOD'] = 'post'; //should force a redirect $REV = ''; return 'show'; } /** * Do a redirect after receiving post data * * Tries to add the section id as hash mark after section editing */ function act_redirect($id,$preact){ global $PRE; global $TEXT; global $MSG; //are there any undisplayed messages? keep them in session for display //on the next page if(isset($MSG) && count($MSG)){ //reopen session, store data and close session again @session_start(); $_SESSION[DOKU_COOKIE]['msg'] = $MSG; session_write_close(); } $opts = array( 'id' => $id, 'preact' => $preact ); //get section name when coming from section edit if($PRE && preg_match('/^\s*==+([^=\n]+)/',$TEXT,$match)){ $check = false; //Byref $opts['fragment'] = sectionID($match[0], $check); } trigger_event('ACTION_SHOW_REDIRECT',$opts,'act_redirect_execute'); } function act_redirect_execute($opts){ $go = wl($opts['id'],'',true); if(isset($opts['fragment'])) $go .= '#'.$opts['fragment']; //show it send_redirect($go); } /** * Handle 'login', 'logout' * * @author Andreas Gohr */ function act_auth($act){ global $ID; global $INFO; //already logged in? if(isset($_SERVER['REMOTE_USER']) && $act=='login'){ return 'show'; } //handle logout if($act=='logout'){ $lockedby = checklock($ID); //page still locked? if($lockedby == $_SERVER['REMOTE_USER']) unlock($ID); //try to unlock // do the logout stuff auth_logoff(); // rebuild info array $INFO = pageinfo(); act_redirect($ID,'login'); } return $act; } /** * Handle 'edit', 'preview' * * @author Andreas Gohr */ function act_edit($act){ global $ID; global $INFO; //check if locked by anyone - if not lock for my self $lockedby = checklock($ID); if($lockedby) return 'locked'; lock($ID); return $act; } /** * Export a wiki page for various formats * * Triggers ACTION_EXPORT_POSTPROCESS * * Event data: * data['id'] -- page id * data['mode'] -- requested export mode * data['headers'] -- export headers * data['output'] -- export output * * @author Andreas Gohr * @author Michael Klier */ function act_export($act){ global $ID; global $REV; global $conf; global $lang; $pre = ''; $post = ''; $output = ''; $headers = array(); // search engines: never cache exported docs! (Google only currently) $headers['X-Robots-Tag'] = 'noindex'; $mode = substr($act,7); switch($mode) { case 'raw': $headers['Content-Type'] = 'text/plain; charset=utf-8'; $headers['Content-Disposition'] = 'attachment; filename='.noNS($ID).'.txt'; $output = rawWiki($ID,$REV); break; case 'xhtml': $pre .= '' . DOKU_LF; $pre .= '' . DOKU_LF; $pre .= '' . DOKU_LF; $pre .= ' ' . DOKU_LF; $pre .= ' '.$ID.'' . DOKU_LF; // get metaheaders ob_start(); tpl_metaheaders(); $pre .= ob_get_clean(); $pre .= '' . DOKU_LF; $pre .= '' . DOKU_LF; $pre .= '
' . DOKU_LF; // get toc $pre .= tpl_toc(true); $headers['Content-Type'] = 'text/html; charset=utf-8'; $output = p_wiki_xhtml($ID,$REV,false); $post .= '
' . DOKU_LF; $post .= '' . DOKU_LF; $post .= '' . DOKU_LF; break; case 'xhtmlbody': $headers['Content-Type'] = 'text/html; charset=utf-8'; $output = p_wiki_xhtml($ID,$REV,false); break; default: $output = p_cached_output(wikiFN($ID,$REV), $mode); $headers = p_get_metadata($ID,"format $mode"); break; } // prepare event data $data = array(); $data['id'] = $ID; $data['mode'] = $mode; $data['headers'] = $headers; $data['output'] =& $output; trigger_event('ACTION_EXPORT_POSTPROCESS', $data); if(!empty($data['output'])){ if(is_array($data['headers'])) foreach($data['headers'] as $key => $val){ header("$key: $val"); } print $pre.$data['output'].$post; exit; } return 'show'; } /** * Handle page 'subscribe' * * Throws exception on error. * * @author Adrian Lang */ function act_subscription($act){ global $lang; global $INFO; global $ID; // get and preprocess data. $params = array(); foreach(array('target', 'style', 'action') as $param) { if (isset($_REQUEST["sub_$param"])) { $params[$param] = $_REQUEST["sub_$param"]; } } // any action given? if not just return and show the subscription page if(!$params['action'] || !checkSecurityToken()) return $act; // Handle POST data, may throw exception. trigger_event('ACTION_HANDLE_SUBSCRIBE', $params, 'subscription_handle_post'); $target = $params['target']; $style = $params['style']; $data = $params['data']; $action = $params['action']; // Perform action. require_once DOKU_INC . 'inc/subscription.php'; if (!subscription_set($_SERVER['REMOTE_USER'], $target, $style, $data)) { throw new Exception(sprintf($lang["subscr_{$action}_error"], hsc($INFO['userinfo']['name']), prettyprint_id($target))); } msg(sprintf($lang["subscr_{$action}_success"], hsc($INFO['userinfo']['name']), prettyprint_id($target)), 1); act_redirect($ID, $act); // Assure that we have valid data if act_redirect somehow fails. $INFO['subscribed'] = get_info_subscribed(); return 'show'; } /** * Validate POST data * * Validates POST data for a subscribe or unsubscribe request. This is the * default action for the event ACTION_HANDLE_SUBSCRIBE. * * @author Adrian Lang */ function subscription_handle_post(&$params) { global $INFO; global $lang; // Get and validate parameters. if (!isset($params['target'])) { throw new Exception('no subscription target given'); } $target = $params['target']; $valid_styles = array('every', 'digest'); if (substr($target, -1, 1) === ':') { // Allow “list†subscribe style since the target is a namespace. $valid_styles[] = 'list'; } $style = valid_input_set('style', $valid_styles, $params, 'invalid subscription style given'); $action = valid_input_set('action', array('subscribe', 'unsubscribe'), $params, 'invalid subscription action given'); // Check other conditions. if ($action === 'subscribe') { if ($INFO['userinfo']['mail'] === '') { throw new Exception($lang['subscr_subscribe_noaddress']); } } elseif ($action === 'unsubscribe') { $is = false; foreach($INFO['subscribed'] as $subscr) { if ($subscr['target'] === $target) { $is = true; } } if ($is === false) { throw new Exception(sprintf($lang['subscr_not_subscribed'], $_SERVER['REMOTE_USER'], prettyprint_id($target))); } // subscription_set deletes a subscription if style = null. $style = null; } $data = in_array($style, array('list', 'digest')) ? time() : null; $params = compact('target', 'style', 'data', 'action'); } //Setup VIM: ex: et ts=2 enc=utf-8 : splitbrain-dokuwiki-d6c824b/inc/adLDAP.php000066400000000000000000002613371134327003500204440ustar00rootroot00000000000000_account_suffix = $_account_suffix; } /** * Get the account suffix * * @return string */ public function get_account_suffix() { return $this->_account_suffix; } /** * Set the domain controllers array * * @param array $_domain_controllers * @return void */ public function set_domain_controllers(array $_domain_controllers) { $this->_domain_controllers = $_domain_controllers; } /** * Get the list of domain controllers * * @return void */ public function get_domain_controllers() { return $this->_domain_controllers; } /** * Set the username of an account with higher priviledges * * @param string $_ad_username * @return void */ public function set_ad_username($_ad_username) { $this->_ad_username = $_ad_username; } /** * Get the username of the account with higher priviledges * * This will throw an exception for security reasons */ public function get_ad_username() { throw new adLDAPException('For security reasons you cannot access the domain administrator account details'); } /** * Set the password of an account with higher priviledges * * @param string $_ad_password * @return void */ public function set_ad_password($_ad_password) { $this->_ad_password = $_ad_password; } /** * Get the password of the account with higher priviledges * * This will throw an exception for security reasons */ public function get_ad_password() { throw new adLDAPException('For security reasons you cannot access the domain administrator account details'); } /** * Set whether to detect the true primary group * * @param bool $_real_primary_group * @return void */ public function set_real_primarygroup($_real_primarygroup) { $this->_real_primarygroup = $_real_primarygroup; } /** * Get the real primary group setting * * @return bool */ public function get_real_primarygroup() { return $this->_real_primarygroup; } /** * Set whether to use SSL * * @param bool $_use_ssl * @return void */ public function set_use_ssl($_use_ssl) { $this->_use_ssl = $_use_ssl; } /** * Get the SSL setting * * @return bool */ public function get_use_ssl() { return $this->_use_ssl; } /** * Set whether to use TLS * * @param bool $_use_tls * @return void */ public function set_use_tls($_use_tls) { $this->_use_tls = $_use_tls; } /** * Get the TLS setting * * @return bool */ public function get_use_tls() { return $this->_use_tls; } /** * Set whether to lookup recursive groups * * @param bool $_recursive_groups * @return void */ public function set_recursive_groups($_recursive_groups) { $this->_recursive_groups = $_recursive_groups; } /** * Get the recursive groups setting * * @return bool */ public function get_recursive_groups() { return $this->_recursive_groups; } /** * Default Constructor * * Tries to bind to the AD domain over LDAP or LDAPs * * @param array $options Array of options to pass to the constructor * @throws Exception - if unable to bind to Domain Controller * @return bool */ function __construct($options=array()){ // You can specifically overide any of the default configuration options setup above if (count($options)>0){ if (array_key_exists("account_suffix",$options)){ $this->_account_suffix=$options["account_suffix"]; } if (array_key_exists("base_dn",$options)){ $this->_base_dn=$options["base_dn"]; } if (array_key_exists("domain_controllers",$options)){ $this->_domain_controllers=$options["domain_controllers"]; } if (array_key_exists("ad_username",$options)){ $this->_ad_username=$options["ad_username"]; } if (array_key_exists("ad_password",$options)){ $this->_ad_password=$options["ad_password"]; } if (array_key_exists("real_primarygroup",$options)){ $this->_real_primarygroup=$options["real_primarygroup"]; } if (array_key_exists("use_ssl",$options)){ $this->_use_ssl=$options["use_ssl"]; } if (array_key_exists("use_tls",$options)){ $this->_use_tls=$options["use_tls"]; } if (array_key_exists("recursive_groups",$options)){ $this->_recursive_groups=$options["recursive_groups"]; } } if ($this->ldap_supported() === false) { throw new adLDAPException('No LDAP support for PHP. See: http://www.php.net/ldap'); } return $this->connect(); } /** * Default Destructor * * Closes the LDAP connection * * @return void */ function __destruct(){ $this->close(); } /** * Connects and Binds to the Domain Controller * * @return bool */ public function connect() { // Connect to the AD/LDAP server as the username/password $dc=$this->random_controller(); if ($this->_use_ssl){ $this->_conn = ldap_connect("ldaps://".$dc, 636); } else { $this->_conn = ldap_connect($dc); } // Set some ldap options for talking to AD ldap_set_option($this->_conn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($this->_conn, LDAP_OPT_REFERRALS, 0); if ($this->_use_tls) { ldap_start_tls($this->_conn); } // Bind as a domain admin if they've set it up if ($this->_ad_username!=NULL && $this->_ad_password!=NULL){ $this->_bind = @ldap_bind($this->_conn,$this->_ad_username.$this->_account_suffix,$this->_ad_password); if (!$this->_bind){ if ($this->_use_ssl && !$this->_use_tls){ // If you have problems troubleshooting, remove the @ character from the ldap_bind command above to get the actual error message throw new adLDAPException('Bind to Active Directory failed. Either the LDAPs connection failed or the login credentials are incorrect. AD said: ' . $this->get_last_error()); } else { throw new adLDAPException('Bind to Active Directory failed. Check the login credentials and/or server details. AD said: ' . $this->get_last_error()); } } } if ($this->_base_dn == NULL) { $this->_base_dn = $this->find_base_dn(); } return (true); } /** * Closes the LDAP connection * * @return void */ public function close() { ldap_close ($this->_conn); } /** * Validate a user's login credentials * * @param string $username A user's AD username * @param string $password A user's AD password * @param bool optional $prevent_rebind * @return bool */ public function authenticate($username,$password,$prevent_rebind=false){ // Prevent null binding if ($username===NULL || $password===NULL){ return (false); } if (empty($username) || empty($password)){ return (false); } // Bind as the user $this->_bind = @ldap_bind($this->_conn,$username.$this->_account_suffix,$password); if (!$this->_bind){ return (false); } // Cnce we've checked their details, kick back into admin mode if we have it if ($this->_ad_username!=NULL && !$prevent_rebind){ $this->_bind = @ldap_bind($this->_conn,$this->_ad_username.$this->_account_suffix,$this->_ad_password); if (!$this->_bind){ // This should never happen in theory throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->get_last_error()); } } return (true); } //***************************************************************************************************************** // GROUP FUNCTIONS /** * Add a group to a group * * @param string $parent The parent group name * @param string $child The child group name * @return bool */ public function group_add_group($parent,$child){ // Find the parent group's dn $parent_group=$this->group_info($parent,array("cn")); if ($parent_group[0]["dn"]===NULL){ return (false); } $parent_dn=$parent_group[0]["dn"]; // Find the child group's dn $child_group=$this->group_info($child,array("cn")); if ($child_group[0]["dn"]===NULL){ return (false); } $child_dn=$child_group[0]["dn"]; $add=array(); $add["member"] = $child_dn; $result=@ldap_mod_add($this->_conn,$parent_dn,$add); if ($result==false){ return (false); } return (true); } /** * Add a user to a group * * @param string $group The group to add the user to * @param string $user The user to add to the group * @param bool $isGUID Is the username passed a GUID or a samAccountName * @return bool */ public function group_add_user($group,$user,$isGUID=false){ // Adding a user is a bit fiddly, we need to get the full DN of the user // and add it using the full DN of the group // Find the user's dn $user_dn=$this->user_dn($user,$isGUID); if ($user_dn===false){ return (false); } // Find the group's dn $group_info=$this->group_info($group,array("cn")); if ($group_info[0]["dn"]===NULL){ return (false); } $group_dn=$group_info[0]["dn"]; $add=array(); $add["member"] = $user_dn; $result=@ldap_mod_add($this->_conn,$group_dn,$add); if ($result==false){ return (false); } return (true); } /** * Add a contact to a group * * @param string $group The group to add the contact to * @param string $contact_dn The DN of the contact to add * @return bool */ public function group_add_contact($group,$contact_dn){ // To add a contact we take the contact's DN // and add it using the full DN of the group // Find the group's dn $group_info=$this->group_info($group,array("cn")); if ($group_info[0]["dn"]===NULL){ return (false); } $group_dn=$group_info[0]["dn"]; $add=array(); $add["member"] = $contact_dn; $result=@ldap_mod_add($this->_conn,$group_dn,$add); if ($result==false){ return (false); } return (true); } /** * Create a group * * @param array $attributes Default attributes of the group * @return bool */ public function group_create($attributes){ if (!is_array($attributes)){ return ("Attributes must be an array"); } if (!array_key_exists("group_name",$attributes)){ return ("Missing compulsory field [group_name]"); } if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } if (!array_key_exists("description",$attributes)){ return ("Missing compulsory field [description]"); } if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } $attributes["container"]=array_reverse($attributes["container"]); //$member_array = array(); //$member_array[0] = "cn=user1,cn=Users,dc=yourdomain,dc=com"; //$member_array[1] = "cn=administrator,cn=Users,dc=yourdomain,dc=com"; $add=array(); $add["cn"] = $attributes["group_name"]; $add["samaccountname"] = $attributes["group_name"]; $add["objectClass"] = "Group"; $add["description"] = $attributes["description"]; //$add["member"] = $member_array; UNTESTED $container="OU=".implode(",OU=",$attributes["container"]); $result=ldap_add($this->_conn,"CN=".$add["cn"].", ".$container.",".$this->_base_dn,$add); if ($result!=true){ return (false); } return (true); } /** * Remove a group from a group * * @param string $parent The parent group name * @param string $child The child group name * @return bool */ public function group_del_group($parent,$child){ // Find the parent dn $parent_group=$this->group_info($parent,array("cn")); if ($parent_group[0]["dn"]===NULL){ return (false); } $parent_dn=$parent_group[0]["dn"]; // Find the child dn $child_group=$this->group_info($child,array("cn")); if ($child_group[0]["dn"]===NULL){ return (false); } $child_dn=$child_group[0]["dn"]; $del=array(); $del["member"] = $child_dn; $result=@ldap_mod_del($this->_conn,$parent_dn,$del); if ($result==false){ return (false); } return (true); } /** * Remove a user from a group * * @param string $group The group to remove a user from * @param string $user The AD user to remove from the group * @param bool $isGUID Is the username passed a GUID or a samAccountName * @return bool */ public function group_del_user($group,$user,$isGUID=false){ // Find the parent dn $group_info=$this->group_info($group,array("cn")); if ($group_info[0]["dn"]===NULL){ return (false); } $group_dn=$group_info[0]["dn"]; // Find the users dn $user_dn=$this->user_dn($user,$isGUID); if ($user_dn===false){ return (false); } $del=array(); $del["member"] = $user_dn; $result=@ldap_mod_del($this->_conn,$group_dn,$del); if ($result==false){ return (false); } return (true); } /** * Remove a contact from a group * * @param string $group The group to remove a user from * @param string $contact_dn The DN of a contact to remove from the group * @return bool */ public function group_del_contact($group,$contact_dn){ // Find the parent dn $group_info=$this->group_info($group,array("cn")); if ($group_info[0]["dn"]===NULL){ return (false); } $group_dn=$group_info[0]["dn"]; $del=array(); $del["member"] = $contact_dn; $result=@ldap_mod_del($this->_conn,$group_dn,$del); if ($result==false){ return (false); } return (true); } /** * Return a list of groups in a group * * @param string $group The group to query * @param bool $recursive Recursively get groups * @return array */ public function groups_in_group($group, $recursive = NULL){ if (!$this->_bind){ return (false); } if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it // Search the directory for the members of a group $info=$this->group_info($group,array("member","cn")); $groups=$info[0]["member"]; if (!is_array($groups)) { return (false); } $group_array=array(); for ($i=0; $i<$groups["count"]; $i++){ $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($groups[$i])."))"; $fields = array("samaccountname", "distinguishedname", "objectClass"); $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); $entries = ldap_get_entries($this->_conn, $sr); // not a person, look for a group if ($entries['count'] == 0 && $recursive == true) { $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($groups[$i])."))"; $fields = array("distinguishedname"); $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); $entries = ldap_get_entries($this->_conn, $sr); if (!isset($entries[0]['distinguishedname'][0])) { continue; } $sub_groups = $this->groups_in_group($entries[0]['distinguishedname'][0], $recursive); if (is_array($sub_groups)) { $group_array = array_merge($group_array, $sub_groups); $group_array = array_unique($group_array); } continue; } $group_array[] = $entries[0]['distinguishedname'][0]; } return ($group_array); } /** * Return a list of members in a group * * @param string $group The group to query * @param bool $recursive Recursively get group members * @return array */ public function group_members($group, $recursive = NULL){ if (!$this->_bind){ return (false); } if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it // Search the directory for the members of a group $info=$this->group_info($group,array("member","cn")); $users=$info[0]["member"]; if (!is_array($users)) { return (false); } $user_array=array(); for ($i=0; $i<$users["count"]; $i++){ $filter="(&(objectCategory=person)(distinguishedName=".$this->ldap_slashes($users[$i])."))"; $fields = array("samaccountname", "distinguishedname", "objectClass"); $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); $entries = ldap_get_entries($this->_conn, $sr); // not a person, look for a group if ($entries['count'] == 0 && $recursive == true) { $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($users[$i])."))"; $fields = array("samaccountname"); $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); $entries = ldap_get_entries($this->_conn, $sr); if (!isset($entries[0]['samaccountname'][0])) { continue; } $sub_users = $this->group_members($entries[0]['samaccountname'][0], $recursive); if (is_array($sub_users)) { $user_array = array_merge($user_array, $sub_users); $user_array = array_unique($user_array); } continue; } if ($entries[0]['samaccountname'][0] === NULL && $entries[0]['distinguishedname'][0] !== NULL) { $user_array[] = $entries[0]['distinguishedname'][0]; } elseif ($entries[0]['samaccountname'][0] !== NULL) { $user_array[] = $entries[0]['samaccountname'][0]; } } return ($user_array); } /** * Group Information. Returns an array of information about a group. * The group name is case sensitive * * @param string $group_name The group name to retrieve info about * @param array $fields Fields to retrieve * @return array */ public function group_info($group_name,$fields=NULL){ if ($group_name===NULL){ return (false); } if (!$this->_bind){ return (false); } if (stristr($group_name, '+')) { $group_name=stripslashes($group_name); } $filter="(&(objectCategory=group)(name=".$this->ldap_slashes($group_name)."))"; //echo ($filter."!!!
"); if ($fields===NULL){ $fields=array("member","memberof","cn","description","distinguishedname","objectcategory","samaccountname"); } $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); $entries = ldap_get_entries($this->_conn, $sr); //print_r($entries); return ($entries); } /** * Return a complete list of "groups in groups" * * @param string $group The group to get the list from * @return array */ public function recursive_groups($group){ if ($group===NULL){ return (false); } $ret_groups=array(); $groups=$this->group_info($group,array("memberof")); if (is_array($groups[0]["memberof"])) { $groups=$groups[0]["memberof"]; if ($groups){ $group_names=$this->nice_names($groups); $ret_groups=array_merge($ret_groups,$group_names); //final groups to return foreach ($group_names as $id => $group_name){ $child_groups=$this->recursive_groups($group_name); $ret_groups=array_merge($ret_groups,$child_groups); } } } return ($ret_groups); } /** * Returns a complete list of the groups in AD based on a SAM Account Type * * @param string $samaccounttype The account type to return * @param bool $include_desc Whether to return a description * @param string $search Search parameters * @param bool $sorted Whether to sort the results * @return array */ public function search_groups($samaccounttype = ADLDAP_SECURITY_GLOBAL_GROUP, $include_desc = false, $search = "*", $sorted = true) { if (!$this->_bind){ return (false); } $filter = '(&(objectCategory=group)'; if ($samaccounttype !== null) { $filter .= '(samaccounttype='. $samaccounttype .')'; } $filter .= '(cn='.$search.'))'; // Perform the search and grab all their details $fields=array("samaccountname","description"); $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); $entries = ldap_get_entries($this->_conn, $sr); $groups_array = array(); for ($i=0; $i<$entries["count"]; $i++){ if ($include_desc && strlen($entries[$i]["description"][0]) > 0 ){ $groups_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["description"][0]; } elseif ($include_desc){ $groups_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["samaccountname"][0]; } else { array_push($groups_array, $entries[$i]["samaccountname"][0]); } } if( $sorted ){ asort($groups_array); } return ($groups_array); } /** * Returns a complete list of all groups in AD * * @param bool $include_desc Whether to return a description * @param string $search Search parameters * @param bool $sorted Whether to sort the results * @return array */ public function all_groups($include_desc = false, $search = "*", $sorted = true){ $groups_array = $this->search_groups(null, $include_desc, $search, $sorted); return ($groups_array); } /** * Returns a complete list of security groups in AD * * @param bool $include_desc Whether to return a description * @param string $search Search parameters * @param bool $sorted Whether to sort the results * @return array */ public function all_security_groups($include_desc = false, $search = "*", $sorted = true){ $groups_array = $this->search_groups(ADLDAP_SECURITY_GLOBAL_GROUP, $include_desc, $search, $sorted); return ($groups_array); } /** * Returns a complete list of distribution lists in AD * * @param bool $include_desc Whether to return a description * @param string $search Search parameters * @param bool $sorted Whether to sort the results * @return array */ public function all_distribution_groups($include_desc = false, $search = "*", $sorted = true){ $groups_array = $this->search_groups(ADLDAP_DISTRIBUTION_GROUP, $include_desc, $search, $sorted); return ($groups_array); } //***************************************************************************************************************** // USER FUNCTIONS /** * Create a user * * If you specify a password here, this can only be performed over SSL * * @param array $attributes The attributes to set to the user account * @return bool */ public function user_create($attributes){ // Check for compulsory fields if (!array_key_exists("username",$attributes)){ return ("Missing compulsory field [username]"); } if (!array_key_exists("firstname",$attributes)){ return ("Missing compulsory field [firstname]"); } if (!array_key_exists("surname",$attributes)){ return ("Missing compulsory field [surname]"); } if (!array_key_exists("email",$attributes)){ return ("Missing compulsory field [email]"); } if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } if (array_key_exists("password",$attributes) && (!$this->_use_ssl && !$this->_use_tls)){ throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.'); } if (!array_key_exists("display_name",$attributes)){ $attributes["display_name"]=$attributes["firstname"]." ".$attributes["surname"]; } // Translate the schema $add=$this->adldap_schema($attributes); // Additional stuff only used for adding accounts $add["cn"][0]=$attributes["display_name"]; $add["samaccountname"][0]=$attributes["username"]; $add["objectclass"][0]="top"; $add["objectclass"][1]="person"; $add["objectclass"][2]="organizationalPerson"; $add["objectclass"][3]="user"; //person? //$add["name"][0]=$attributes["firstname"]." ".$attributes["surname"]; // Set the account control attribute $control_options=array("NORMAL_ACCOUNT"); if (!$attributes["enabled"]){ $control_options[]="ACCOUNTDISABLE"; } $add["userAccountControl"][0]=$this->account_control($control_options); //echo ("
"); print_r($add);

        // Determine the container
        $attributes["container"]=array_reverse($attributes["container"]);
        $container="OU=".implode(",OU=",$attributes["container"]);

        // Add the entry
        $result=@ldap_add($this->_conn, "CN=".$add["cn"][0].", ".$container.",".$this->_base_dn, $add);
        if ($result!=true){ return (false); }

        return (true);
    }

    /**
    * Delete a user account
    *
    * @param string $username The username to delete (please be careful here!)
    * @param bool $isGUID Is the username a GUID or a samAccountName
    * @return array
    */
    public function user_delete($username,$isGUID=false) {
        $userinfo = $this->user_info($username, array("*"),$isGUID);
        $dn = $userinfo[0]['distinguishedname'][0];
        $result=$this->dn_delete($dn);
        if ($result!=true){ return (false); }
        return (true);
    }

    /**
    * Groups the user is a member of
    *
    * @param string $username The username to query
    * @param bool $recursive Recursive list of groups
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return array
    */
    public function user_groups($username,$recursive=NULL,$isGUID=false){
        if ($username===NULL){ return (false); }
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it
        if (!$this->_bind){ return (false); }

        // Search the directory for their information
        $info=@$this->user_info($username,array("memberof","primarygroupid"),$isGUID);
        $groups=$this->nice_names($info[0]["memberof"]); // Presuming the entry returned is our guy (unique usernames)

        if ($recursive === true){
            foreach ($groups as $id => $group_name){
                $extra_groups=$this->recursive_groups($group_name);
                $groups=array_merge($groups,$extra_groups);
            }
        }

        return ($groups);
    }

    /**
    * Find information about the users
    *
    * @param string $username The username to query
    * @param array $fields Array of parameters to query
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return array
    */
    public function user_info($username,$fields=NULL,$isGUID=false){
        if ($username===NULL){ return (false); }
        if (!$this->_bind){ return (false); }

        if ($isGUID === true) {
            $username = $this->strguid2hex($username);
            $filter="objectguid=".$username;
        }
        else {
            $filter="samaccountname=".$username;
        }
        if ($fields===NULL){ $fields=array("samaccountname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); }
        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
        $entries = ldap_get_entries($this->_conn, $sr);

        if ($entries[0]['count'] >= 1) {
            // AD does not return the primary group in the ldap query, we may need to fudge it
            if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])){
                //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
                $entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
            } else {
                $entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn;
            }
        }

        $entries[0]["memberof"]["count"]++;
        return ($entries);
    }

    /**
    * Determine if a user is in a specific group
    *
    * @param string $username The username to query
    * @param string $group The name of the group to check against
    * @param bool $recursive Check groups recursively
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function user_ingroup($username,$group,$recursive=NULL,$isGUID=false){
        if ($username===NULL){ return (false); }
        if ($group===NULL){ return (false); }
        if (!$this->_bind){ return (false); }
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it

        // Get a list of the groups
        $groups=$this->user_groups($username,$recursive,$isGUID);

        // Return true if the specified group is in the group list
        if (in_array($group,$groups)){ return (true); }

        return (false);
    }

    /**
    * Determine a user's password expiry date
    *
    * @param string $username The username to query
    * @param book $isGUID Is the username passed a GUID or a samAccountName
    * @requires bcmath http://www.php.net/manual/en/book.bc.php
    * @return array
    */
    public function user_password_expiry($username,$isGUID=false) {
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        if (!$this->_bind){ return (false); }
        if (!function_exists('bcmod')) { return ("Missing function support [bcmod] http://www.php.net/manual/en/book.bc.php"); };

        $userinfo = $this->user_info($username, array("pwdlastset", "useraccountcontrol"), $isGUID);
        $pwdlastset = $userinfo[0]['pwdlastset'][0];
        $status = array();

        if ($userinfo[0]['useraccountcontrol'][0] == '66048') {
            // Password does not expire
            return "Does not expire";
        }
        if ($pwdlastset === '0') {
            // Password has already expired
            return "Password has expired";
        }

         // Password expiry in AD can be calculated from TWO values:
         //   - User's own pwdLastSet attribute: stores the last time the password was changed
         //   - Domain's maxPwdAge attribute: how long passwords last in the domain
         //
         // Although Microsoft chose to use a different base and unit for time measurements.
         // This function will convert them to Unix timestamps
         $sr = ldap_read($this->_conn, $this->_base_dn, 'objectclass=*', array('maxPwdAge'));
         if (!$sr) {
             return false;
         }
         $info = ldap_get_entries($this->_conn, $sr);
         $maxpwdage = $info[0]['maxpwdage'][0];


         // See MSDN: http://msdn.microsoft.com/en-us/library/ms974598.aspx
         //
         // pwdLastSet contains the number of 100 nanosecond intervals since January 1, 1601 (UTC),
         // stored in a 64 bit integer.
         //
         // The number of seconds between this date and Unix epoch is 11644473600.
         //
         // maxPwdAge is stored as a large integer that represents the number of 100 nanosecond
         // intervals from the time the password was set before the password expires.
         //
         // We also need to scale this to seconds but also this value is a _negative_ quantity!
         //
         // If the low 32 bits of maxPwdAge are equal to 0 passwords do not expire
         //
         // Unfortunately the maths involved are too big for PHP integers, so I've had to require
         // BCMath functions to work with arbitrary precision numbers.
         if (bcmod($maxpwdage, 4294967296) === '0') {
            return "Domain does not expire passwords";
        }

        // Add maxpwdage and pwdlastset and we get password expiration time in Microsoft's
        // time units.  Because maxpwd age is negative we need to subtract it.
        $pwdexpire = bcsub($pwdlastset, $maxpwdage);

        // Convert MS's time to Unix time
        $status['expiryts'] = bcsub(bcdiv($pwdexpire, '10000000'), '11644473600');
        $status['expiryformat'] = date('Y-m-d H:i:s', bcsub(bcdiv($pwdexpire, '10000000'), '11644473600'));

        return $status;
    }

    /**
    * Modify a user
    *
    * @param string $username The username to query
    * @param array $attributes The attributes to modify.  Note if you set the enabled attribute you must not specify any other attributes
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function user_modify($username,$attributes,$isGUID=false){
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        if (array_key_exists("password",$attributes) && !$this->_use_ssl){
            throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
        }

        // Find the dn of the user
        $user_dn=$this->user_dn($username,$isGUID);
        if ($user_dn===false){ return (false); }

        // Translate the update to the LDAP schema
        $mod=$this->adldap_schema($attributes);

        // Check to see if this is an enabled status update
        if (!$mod && !array_key_exists("enabled", $attributes)){ return (false); }

        // Set the account control attribute (only if specified)
        if (array_key_exists("enabled",$attributes)){
            if ($attributes["enabled"]){ $control_options=array("NORMAL_ACCOUNT"); }
            else { $control_options=array("NORMAL_ACCOUNT","ACCOUNTDISABLE"); }
            $mod["userAccountControl"][0]=$this->account_control($control_options);
        }

        // Do the update
        $result=@ldap_modify($this->_conn,$user_dn,$mod);
        if ($result==false){ return (false); }

        return (true);
    }

    /**
    * Disable a user account
    *
    * @param string $username The username to disable
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function user_disable($username,$isGUID=false){
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        $attributes=array("enabled"=>0);
        $result = $this->user_modify($username, $attributes, $isGUID);
        if ($result==false){ return (false); }

        return (true);
    }

    /**
    * Enable a user account
    *
    * @param string $username The username to enable
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function user_enable($username,$isGUID=false){
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        $attributes=array("enabled"=>1);
        $result = $this->user_modify($username, $attributes, $isGUID);
        if ($result==false){ return (false); }

        return (true);
    }

    /**
    * Set the password of a user - This must be performed over SSL
    *
    * @param string $username The username to modify
    * @param string $password The new password
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function user_password($username,$password,$isGUID=false){
        if ($username===NULL){ return (false); }
        if ($password===NULL){ return (false); }
        if (!$this->_bind){ return (false); }
        if (!$this->_use_ssl && !$this->_use_tls){
            throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
        }

        $user_dn=$this->user_dn($username,$isGUID);
        if ($user_dn===false){ return (false); }

        $add=array();
        $add["unicodePwd"][0]=$this->encode_password($password);

        $result=ldap_mod_replace($this->_conn,$user_dn,$add);
        if ($result==false){ return (false); }

        return (true);
    }

    /**
    * Return a list of all users in AD
    *
    * @param bool $include_desc Return a description of the user
    * @param string $search Search parameter
    * @param bool $sorted Sort the user accounts
    * @return array
    */
    public function all_users($include_desc = false, $search = "*", $sorted = true){
        if (!$this->_bind){ return (false); }

        // Perform the search and grab all their details
        $filter = "(&(objectClass=user)(samaccounttype=". ADLDAP_NORMAL_ACCOUNT .")(objectCategory=person)(cn=".$search."))";
        $fields=array("samaccountname","displayname");
        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
        $entries = ldap_get_entries($this->_conn, $sr);

        $users_array = array();
        for ($i=0; $i<$entries["count"]; $i++){
            if ($include_desc && strlen($entries[$i]["displayname"][0])>0){
                $users_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["displayname"][0];
            } elseif ($include_desc){
                $users_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["samaccountname"][0];
            } else {
                array_push($users_array, $entries[$i]["samaccountname"][0]);
            }
        }
        if ($sorted){ asort($users_array); }
        return ($users_array);
    }

    /**
    * Converts a username (samAccountName) to a GUID
    *
    * @param string $username The username to query
    * @return string
    */
    public function username2guid($username) {
        if (!$this->_bind){ return (false); }
        if ($username === null){ return ("Missing compulsory field [username]"); }

        $filter = "samaccountname=" . $username;
        $fields = array("objectGUID");
        $sr = @ldap_search($this->_conn, $this->_base_dn, $filter, $fields);
        if (ldap_count_entries($this->_conn, $sr) > 0) {
            $entry = @ldap_first_entry($this->_conn, $sr);
            $guid = @ldap_get_values_len($this->_conn, $entry, 'objectGUID');
            $strGUID = $this->binary2text($guid[0]);
            return ($strGUID);
        }
        else {
            return (false);
        }
    }

    //*****************************************************************************************************************
    // CONTACT FUNCTIONS
    // * Still work to do in this area, and new functions to write

    /**
    * Create a contact
    *
    * @param array $attributes The attributes to set to the contact
    * @return bool
    */
    public function contact_create($attributes){
        // Check for compulsory fields
        if (!array_key_exists("display_name",$attributes)){ return ("Missing compulsory field [display_name]"); }
        if (!array_key_exists("email",$attributes)){ return ("Missing compulsory field [email]"); }
        if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); }
        if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); }

        // Translate the schema
        $add=$this->adldap_schema($attributes);

        // Additional stuff only used for adding contacts
        $add["cn"][0]=$attributes["display_name"];
        $add["objectclass"][0]="top";
        $add["objectclass"][1]="person";
        $add["objectclass"][2]="organizationalPerson";
        $add["objectclass"][3]="contact";
        if (!isset($attributes['exchange_hidefromlists'])) {
            $add["msExchHideFromAddressLists"][0]="TRUE";
        }

        // Determine the container
        $attributes["container"]=array_reverse($attributes["container"]);
        $container="OU=".implode(",OU=",$attributes["container"]);

        // Add the entry
        $result=@ldap_add($this->_conn, "CN=".$add["cn"][0].", ".$container.",".$this->_base_dn, $add);
        if ($result!=true){ return (false); }

        return (true);
    }

    /**
    * Determine the list of groups a contact is a member of
    *
    * @param string $distinguisedname The full DN of a contact
    * @param bool $recursive Recursively check groups
    * @return array
    */
    public function contact_groups($distinguishedname,$recursive=NULL){
        if ($distinguishedname===NULL){ return (false); }
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it
        if (!$this->_bind){ return (false); }

        // Search the directory for their information
        $info=@$this->contact_info($distinguishedname,array("memberof","primarygroupid"));
        $groups=$this->nice_names($info[0]["memberof"]); //presuming the entry returned is our contact

        if ($recursive === true){
            foreach ($groups as $id => $group_name){
                $extra_groups=$this->recursive_groups($group_name);
                $groups=array_merge($groups,$extra_groups);
            }
        }

        return ($groups);
    }

    /**
    * Get contact information
    *
    * @param string $distinguisedname The full DN of a contact
    * @param array $fields Attributes to be returned
    * @return array
    */
    public function contact_info($distinguishedname,$fields=NULL){
        if ($distinguishedname===NULL){ return (false); }
        if (!$this->_bind){ return (false); }

        $filter="distinguishedName=".$distinguishedname;
        if ($fields===NULL){ $fields=array("distinguishedname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); }
        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
        $entries = ldap_get_entries($this->_conn, $sr);

        if ($entries[0]['count'] >= 1) {
            // AD does not return the primary group in the ldap query, we may need to fudge it
            if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["primarygroupid"][0])){
                //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
                $entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
            } else {
                $entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn;
            }
        }

        $entries[0]["memberof"]["count"]++;
        return ($entries);
    }

    /**
    * Determine if a contact is a member of a group
    *
    * @param string $distinguisedname The full DN of a contact
    * @param string $group The group name to query
    * @param bool $recursive Recursively check groups
    * @return bool
    */
    public function contact_ingroup($distinguisedname,$group,$recursive=NULL){
        if ($distinguisedname===NULL){ return (false); }
        if ($group===NULL){ return (false); }
        if (!$this->_bind){ return (false); }
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it

        // Get a list of the groups
        $groups=$this->contact_groups($distinguisedname,array("memberof"),$recursive);

        // Return true if the specified group is in the group list
        if (in_array($group,$groups)){ return (true); }

        return (false);
    }

    /**
    * Modify a contact
    *
    * @param string $distinguishedname The contact to query
    * @param array $attributes The attributes to modify.  Note if you set the enabled attribute you must not specify any other attributes
    * @return bool
    */
    public function contact_modify($distinguishedname,$attributes){
        if ($distinguishedname===NULL){ return ("Missing compulsory field [distinguishedname]"); }

        // Translate the update to the LDAP schema
        $mod=$this->adldap_schema($attributes);

        // Check to see if this is an enabled status update
        if (!$mod){ return (false); }

        // Do the update
        $result=ldap_modify($this->_conn,$distinguishedname,$mod);
        if ($result==false){ return (false); }

        return (true);
    }

    /**
    * Delete a contact
    *
    * @param string $distinguishedname The contact dn to delete (please be careful here!)
    * @return array
    */
    public function contact_delete($distinguishedname) {
        $result = $this->dn_delete($distinguishedname);
        if ($result!=true){ return (false); }
        return (true);
    }

    /**
    * Return a list of all contacts
    *
    * @param bool $include_desc Include a description of a contact
    * @param string $search The search parameters
    * @param bool $sorted Whether to sort the results
    * @return array
    */
    public function all_contacts($include_desc = false, $search = "*", $sorted = true){
        if (!$this->_bind){ return (false); }

        // Perform the search and grab all their details
        $filter = "(&(objectClass=contact)(cn=".$search."))";
        $fields=array("displayname","distinguishedname");
        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
        $entries = ldap_get_entries($this->_conn, $sr);

        $users_array = array();
        for ($i=0; $i<$entries["count"]; $i++){
            if ($include_desc && strlen($entries[$i]["displayname"][0])>0){
                $users_array[ $entries[$i]["distinguishedname"][0] ] = $entries[$i]["displayname"][0];
            } elseif ($include_desc){
                $users_array[ $entries[$i]["distinguishedname"][0] ] = $entries[$i]["distinguishedname"][0];
            } else {
                array_push($users_array, $entries[$i]["distinguishedname"][0]);
            }
        }
        if ($sorted){ asort($users_array); }
        return ($users_array);
    }

    //*****************************************************************************************************************
    // FOLDER FUNCTIONS

    /**
    * Returns a folder listing for a specific OU
    * See http://adldap.sourceforge.net/wiki/doku.php?id=api_folder_functions
    *
    * @param array $folder_name An array to the OU you wish to list.
    *                           If set to NULL will list the root, strongly recommended to set
    *                           $recursive to false in that instance!
    * @param string $dn_type The type of record to list.  This can be ADLDAP_FOLDER or ADLDAP_CONTAINER.
    * @param bool $recursive Recursively search sub folders
    * @param bool $type Specify a type of object to search for
    * @return array
    */
    public function folder_list($folder_name = NULL, $dn_type = ADLDAP_FOLDER, $recursive = NULL, $type = NULL) {
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it
        if (!$this->_bind){ return (false); }

        $filter = '(&';
        if ($type !== NULL) {
            switch ($type) {
                case 'contact':
                    $filter .= '(objectClass=contact)';
                    break;
                case 'computer':
                    $filter .= '(objectClass=computer)';
                    break;
                case 'group':
                    $filter .= '(objectClass=group)';
                    break;
                case 'folder':
                    $filter .= '(objectClass=organizationalUnit)';
                    break;
                case 'container':
                    $filter .= '(objectClass=container)';
                    break;
                case 'domain':
                    $filter .= '(objectClass=builtinDomain)';
                    break;
                default:
                    $filter .= '(objectClass=user)';
                    break;
            }
        }
        else {
            $filter .= '(objectClass=*)';
        }
        // If the folder name is null then we will search the root level of AD
        // This requires us to not have an OU= part, just the base_dn
        $searchou = $this->_base_dn;
        if (is_array($folder_name)) {
            $ou = $dn_type . "=".implode("," . $dn_type . "=",$folder_name);
            $filter .= '(!(distinguishedname=' . $ou . ',' . $this->_base_dn . ')))';
            $searchou = $ou . ',' . $this->_base_dn;
        }
        else {
            $filter .= '(!(distinguishedname=' . $this->_base_dn . ')))';
        }

        if ($recursive === true) {
            $sr=ldap_search($this->_conn, $searchou, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
            $entries = @ldap_get_entries($this->_conn, $sr);
            if (is_array($entries)) {
                return $entries;
            }
        }
        else {
            $sr=ldap_list($this->_conn, $searchou, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
            $entries = @ldap_get_entries($this->_conn, $sr);
            if (is_array($entries)) {
                return $entries;
            }
        }

        return false;
    }

    //*****************************************************************************************************************
    // COMPUTER FUNCTIONS

    /**
    * Get information about a specific computer
    *
    * @param string $computer_name The name of the computer
    * @param array $fields Attributes to return
    * @return array
    */
    public function computer_info($computer_name,$fields=NULL){
        if ($computer_name===NULL){ return (false); }
        if (!$this->_bind){ return (false); }

        $filter="(&(objectClass=computer)(cn=".$computer_name."))";
        if ($fields===NULL){ $fields=array("memberof","cn","displayname","dnshostname","distinguishedname","objectcategory","operatingsystem","operatingsystemservicepack","operatingsystemversion"); }
        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
        $entries = ldap_get_entries($this->_conn, $sr);

        return ($entries);
    }

    /**
    * Check if a computer is in a group
    *
    * @param string $computer_name The name of the computer
    * @param string $group The group to check
    * @param bool $recursive Whether to check recursively
    * @return array
    */
    public function computer_ingroup($computer_name,$group,$recursive=NULL){
        if ($computer_name===NULL){ return (false); }
        if ($group===NULL){ return (false); }
        if (!$this->_bind){ return (false); }
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // use the default option if they haven't set it

        //get a list of the groups
        $groups=$this->computer_groups($computer_name,array("memberof"),$recursive);

        //return true if the specified group is in the group list
        if (in_array($group,$groups)){ return (true); }

        return (false);
    }

    /**
    * Get the groups a computer is in
    *
    * @param string $computer_name The name of the computer
    * @param bool $recursive Whether to check recursively
    * @return array
    */
    public function computer_groups($computer_name,$recursive=NULL){
        if ($computer_name===NULL){ return (false); }
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it
        if (!$this->_bind){ return (false); }

        //search the directory for their information
        $info=@$this->computer_info($computer_name,array("memberof","primarygroupid"));
        $groups=$this->nice_names($info[0]["memberof"]); //presuming the entry returned is our guy (unique usernames)

        if ($recursive === true){
            foreach ($groups as $id => $group_name){
              $extra_groups=$this->recursive_groups($group_name);
              $groups=array_merge($groups,$extra_groups);
            }
        }

        return ($groups);
    }

    //************************************************************************************************************
    // EXCHANGE FUNCTIONS

    /**
    * Create an Exchange account
    *
    * @param string $username The username of the user to add the Exchange account to
    * @param array $storagegroup The mailbox, Exchange Storage Group, for the user account, this must be a full CN
    *                            If the storage group has a different base_dn to the adLDAP configuration, set it using $base_dn
    * @param string $emailaddress The primary email address to add to this user
    * @param string $mailnickname The mail nick name.  If mail nickname is blank, the username will be used
    * @param bool $usedefaults Indicates whether the store should use the default quota, rather than the per-mailbox quota.
    * @param string $base_dn Specify an alternative base_dn for the Exchange storage group
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function exchange_create_mailbox($username, $storagegroup, $emailaddress, $mailnickname=NULL, $usedefaults=TRUE, $base_dn=NULL, $isGUID=false){
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        if ($storagegroup===NULL){ return ("Missing compulsory array [storagegroup]"); }
        if (!is_array($storagegroup)){ return ("[storagegroup] must be an array"); }
        if ($emailaddress===NULL){ return ("Missing compulsory field [emailaddress]"); }

        if ($base_dn===NULL) {
            $base_dn = $this->_base_dn;
        }

        $container="CN=".implode(",CN=",$storagegroup);

        if ($mailnickname===NULL) { $mailnickname=$username; }
        $mdbUseDefaults = $this->bool2str($usedefaults);

        $attributes = array(
            'exchange_homemdb'=>$container.",".$base_dn,
            'exchange_proxyaddress'=>'SMTP:' . $emailaddress,
            'exchange_mailnickname'=>$mailnickname,
            'exchange_usedefaults'=>$mdbUseDefaults
        );
        $result = $this->user_modify($username,$attributes,$isGUID);
        if ($result==false){ return (false); }
        return (true);
    }

    /**
    * Add an X400 address to Exchange
    * See http://tools.ietf.org/html/rfc1685 for more information.
    * An X400 Address looks similar to this X400:c=US;a= ;p=Domain;o=Organization;s=Doe;g=John;
    *
    * @param string $username The username of the user to add the X400 to to
    * @param string $country Country
    * @param string $admd Administration Management Domain
    * @param string $pdmd Private Management Domain (often your AD domain)
    * @param string $org Organization
    * @param string $surname Surname
    * @param string $givenName Given name
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function exchange_add_X400($username, $country, $admd, $pdmd, $org, $surname, $givenname, $isGUID=false) {
        if ($username===NULL){ return ("Missing compulsory field [username]"); }

        $proxyvalue = 'X400:';

        // Find the dn of the user
        $user=$this->user_info($username,array("cn","proxyaddresses"), $isGUID);
        if ($user[0]["dn"]===NULL){ return (false); }
        $user_dn=$user[0]["dn"];

        // We do not have to demote an email address from the default so we can just add the new proxy address
        $attributes['exchange_proxyaddress'] = $proxyvalue . 'c=' . $country . ';a=' . $admd . ';p=' . $pdmd . ';o=' . $org . ';s=' . $surname . ';g=' . $givenname . ';';

        // Translate the update to the LDAP schema
        $add=$this->adldap_schema($attributes);

        if (!$add){ return (false); }

        // Do the update
        // Take out the @ to see any errors, usually this error might occur because the address already
        // exists in the list of proxyAddresses
        $result=@ldap_mod_add($this->_conn,$user_dn,$add);
        if ($result==false){ return (false); }

        return (true);
    }

    /**
    * Add an address to Exchange
    *
    * @param string $username The username of the user to add the Exchange account to
    * @param string $emailaddress The email address to add to this user
    * @param bool $default Make this email address the default address, this is a bit more intensive as we have to demote any existing default addresses
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function exchange_add_address($username, $emailaddress, $default=FALSE, $isGUID=false) {
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); }

        $proxyvalue = 'smtp:';
        if ($default === true) {
            $proxyvalue = 'SMTP:';
        }

        // Find the dn of the user
        $user=$this->user_info($username,array("cn","proxyaddresses"),$isGUID);
        if ($user[0]["dn"]===NULL){ return (false); }
        $user_dn=$user[0]["dn"];

        // We need to scan existing proxy addresses and demote the default one
        if (is_array($user[0]["proxyaddresses"]) && $default===true) {
            $modaddresses = array();
            for ($i=0;$i_conn,$user_dn,$modaddresses);
            if ($result==false){ return (false); }

            return (true);
        }
        else {
            // We do not have to demote an email address from the default so we can just add the new proxy address
            $attributes['exchange_proxyaddress'] = $proxyvalue . $emailaddress;

            // Translate the update to the LDAP schema
            $add=$this->adldap_schema($attributes);

            if (!$add){ return (false); }

            // Do the update
            // Take out the @ to see any errors, usually this error might occur because the address already
            // exists in the list of proxyAddresses
            $result=@ldap_mod_add($this->_conn,$user_dn,$add);
            if ($result==false){ return (false); }

            return (true);
        }
    }

    /**
    * Remove an address to Exchange
    * If you remove a default address the account will no longer have a default,
    * we recommend changing the default address first
    *
    * @param string $username The username of the user to add the Exchange account to
    * @param string $emailaddress The email address to add to this user
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function exchange_del_address($username, $emailaddress, $isGUID=false) {
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); }

        // Find the dn of the user
        $user=$this->user_info($username,array("cn","proxyaddresses"),$isGUID);
        if ($user[0]["dn"]===NULL){ return (false); }
        $user_dn=$user[0]["dn"];

        if (is_array($user[0]["proxyaddresses"])) {
            $mod = array();
            for ($i=0;$i_conn,$user_dn,$mod);
            if ($result==false){ return (false); }

            return (true);
        }
        else {
            return (false);
        }
    }
    /**
    * Change the default address
    *
    * @param string $username The username of the user to add the Exchange account to
    * @param string $emailaddress The email address to make default
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return bool
    */
    public function exchange_primary_address($username, $emailaddress, $isGUID=false) {
        if ($username===NULL){ return ("Missing compulsory field [username]"); }
        if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); }

        // Find the dn of the user
        $user=$this->user_info($username,array("cn","proxyaddresses"), $isGUID);
        if ($user[0]["dn"]===NULL){ return (false); }
        $user_dn=$user[0]["dn"];

        if (is_array($user[0]["proxyaddresses"])) {
            $modaddresses = array();
            for ($i=0;$i_conn,$user_dn,$modaddresses);
            if ($result==false){ return (false); }

            return (true);
        }

    }

    /**
    * Mail enable a contact
    * Allows email to be sent to them through Exchange
    *
    * @param string $distinguishedname The contact to mail enable
    * @param string $emailaddress The email address to allow emails to be sent through
    * @param string $mailnickname The mailnickname for the contact in Exchange.  If NULL this will be set to the display name
    * @return bool
    */
    public function exchange_contact_mailenable($distinguishedname, $emailaddress, $mailnickname=NULL){
        if ($distinguishedname===NULL){ return ("Missing compulsory field [distinguishedname]"); }
        if ($emailaddress===NULL){ return ("Missing compulsory field [emailaddress]"); }

        if ($mailnickname !== NULL) {
            // Find the dn of the user
            $user=$this->contact_info($distinguishedname,array("cn","displayname"));
            if ($user[0]["displayname"]===NULL){ return (false); }
            $mailnickname = $user[0]['displayname'][0];
        }

        $attributes = array("email"=>$emailaddress,"contact_email"=>"SMTP:" . $emailaddress,"exchange_proxyaddress"=>"SMTP:" . $emailaddress,"exchange_mailnickname"=>$mailnickname);

        // Translate the update to the LDAP schema
        $mod=$this->adldap_schema($attributes);

        // Check to see if this is an enabled status update
        if (!$mod){ return (false); }

        // Do the update
        $result=ldap_modify($this->_conn,$distinguishedname,$mod);
        if ($result==false){ return (false); }

        return (true);
    }

    /**
    * Returns a list of Exchange Servers in the ConfigurationNamingContext of the domain
    *
    * @param array $attributes An array of the AD attributes you wish to return
    * @return array
    */
    public function exchange_servers($attributes = array('cn','distinguishedname','serialnumber')) {
        if (!$this->_bind){ return (false); }

        $configurationNamingContext = $this->get_root_dse(array('configurationnamingcontext'));
        $sr = @ldap_search($this->_conn,$configurationNamingContext[0]['configurationnamingcontext'][0],'(&(objectCategory=msExchExchangeServer))',$attributes);
        $entries = @ldap_get_entries($this->_conn, $sr);
        return $entries;
    }

    /**
    * Returns a list of Storage Groups in Exchange for a given mail server
    *
    * @param string $exchangeServer The full DN of an Exchange server.  You can use exchange_servers() to find the DN for your server
    * @param array $attributes An array of the AD attributes you wish to return
    * @param bool $recursive If enabled this will automatically query the databases within a storage group
    * @return array
    */
    public function exchange_storage_groups($exchangeServer, $attributes = array('cn','distinguishedname'), $recursive = NULL) {
        if (!$this->_bind){ return (false); }
        if ($exchangeServer===NULL){ return ("Missing compulsory field [exchangeServer]"); }
        if ($recursive===NULL){ $recursive=$this->_recursive_groups; }

        $filter = '(&(objectCategory=msExchStorageGroup))';
        $sr=@ldap_search($this->_conn, $exchangeServer, $filter, $attributes);
        $entries = @ldap_get_entries($this->_conn, $sr);

        if ($recursive === true) {
            for ($i=0; $i<$entries['count']; $i++) {
                $entries[$i]['msexchprivatemdb'] = $this->exchange_storage_databases($entries[$i]['distinguishedname'][0]);
            }
        }

        return $entries;
    }

    /**
    * Returns a list of Databases within any given storage group in Exchange for a given mail server
    *
    * @param string $storageGroup The full DN of an Storage Group.  You can use exchange_storage_groups() to find the DN
    * @param array $attributes An array of the AD attributes you wish to return
    * @return array
    */
    public function exchange_storage_databases($storageGroup, $attributes = array('cn','distinguishedname','displayname')) {
        if (!$this->_bind){ return (false); }
        if ($storageGroup===NULL){ return ("Missing compulsory field [storageGroup]"); }

        $filter = '(&(objectCategory=msExchPrivateMDB))';
        $sr=@ldap_search($this->_conn, $storageGroup, $filter, $attributes);
        $entries = @ldap_get_entries($this->_conn, $sr);
        return $entries;
    }

    //************************************************************************************************************
    // SERVER FUNCTIONS

    /**
    * Find the Base DN of your domain controller
    *
    * @return string
    */
    public function find_base_dn() {
        $namingContext = $this->get_root_dse(array('defaultnamingcontext'));
        return $namingContext[0]['defaultnamingcontext'][0];
    }

    /**
    * Get the RootDSE properties from a domain controller
    *
    * @param array $attributes The attributes you wish to query e.g. defaultnamingcontext
    * @return array
    */
    public function get_root_dse($attributes = array("*", "+")) {
        if (!$this->_bind){ return (false); }

        $sr = @ldap_read($this->_conn, NULL, 'objectClass=*', $attributes);
        $entries = @ldap_get_entries($this->_conn, $sr);
        return $entries;
    }

    //************************************************************************************************************
    // UTILITY FUNCTIONS (Many of these functions are protected and can only be called from within the class)

    /**
    * Get last error from Active Directory
    *
    * This function gets the last message from Active Directory
    * This may indeed be a 'Success' message but if you get an unknown error
    * it might be worth calling this function to see what errors were raised
    *
    * return string
    */
    public function get_last_error() {
        return @ldap_error($this->_conn);
    }

    /**
    * Detect LDAP support in php
    *
    * @return bool
    */
    protected function ldap_supported() {
        if (!function_exists('ldap_connect')) {
            return (false);
        }
        return (true);
    }

    /**
    * Schema
    *
    * @param array $attributes Attributes to be queried
    * @return array
    */
    protected function adldap_schema($attributes){

        // LDAP doesn't like NULL attributes, only set them if they have values
        // If you wish to remove an attribute you should set it to a space
        // TO DO: Adapt user_modify to use ldap_mod_delete to remove a NULL attribute
        $mod=array();

        // Check every attribute to see if it contains 8bit characters and then UTF8 encode them
        array_walk($attributes, array($this, 'encode8bit'));

        if ($attributes["address_city"]){ $mod["l"][0]=$attributes["address_city"]; }
        if ($attributes["address_code"]){ $mod["postalCode"][0]=$attributes["address_code"]; }
        //if ($attributes["address_country"]){ $mod["countryCode"][0]=$attributes["address_country"]; } // use country codes?
        if ($attributes["address_country"]){ $mod["c"][0]=$attributes["address_country"]; }
        if ($attributes["address_pobox"]){ $mod["postOfficeBox"][0]=$attributes["address_pobox"]; }
        if ($attributes["address_state"]){ $mod["st"][0]=$attributes["address_state"]; }
        if ($attributes["address_street"]){ $mod["streetAddress"][0]=$attributes["address_street"]; }
        if ($attributes["company"]){ $mod["company"][0]=$attributes["company"]; }
        if ($attributes["change_password"]){ $mod["pwdLastSet"][0]=0; }
        if ($attributes["department"]){ $mod["department"][0]=$attributes["department"]; }
        if ($attributes["description"]){ $mod["description"][0]=$attributes["description"]; }
        if ($attributes["display_name"]){ $mod["displayName"][0]=$attributes["display_name"]; }
        if ($attributes["email"]){ $mod["mail"][0]=$attributes["email"]; }
        if ($attributes["expires"]){ $mod["accountExpires"][0]=$attributes["expires"]; } //unix epoch format?
        if ($attributes["firstname"]){ $mod["givenName"][0]=$attributes["firstname"]; }
        if ($attributes["home_directory"]){ $mod["homeDirectory"][0]=$attributes["home_directory"]; }
        if ($attributes["home_drive"]){ $mod["homeDrive"][0]=$attributes["home_drive"]; }
        if ($attributes["initials"]){ $mod["initials"][0]=$attributes["initials"]; }
        if ($attributes["logon_name"]){ $mod["userPrincipalName"][0]=$attributes["logon_name"]; }
        if ($attributes["manager"]){ $mod["manager"][0]=$attributes["manager"]; }  //UNTESTED ***Use DistinguishedName***
        if ($attributes["office"]){ $mod["physicalDeliveryOfficeName"][0]=$attributes["office"]; }
        if ($attributes["password"]){ $mod["unicodePwd"][0]=$this->encode_password($attributes["password"]); }
        if ($attributes["profile_path"]){ $mod["profilepath"][0]=$attributes["profile_path"]; }
        if ($attributes["script_path"]){ $mod["scriptPath"][0]=$attributes["script_path"]; }
        if ($attributes["surname"]){ $mod["sn"][0]=$attributes["surname"]; }
        if ($attributes["title"]){ $mod["title"][0]=$attributes["title"]; }
        if ($attributes["telephone"]){ $mod["telephoneNumber"][0]=$attributes["telephone"]; }
        if ($attributes["mobile"]){ $mod["mobile"][0]=$attributes["mobile"]; }
        if ($attributes["pager"]){ $mod["pager"][0]=$attributes["pager"]; }
        if ($attributes["ipphone"]){ $mod["ipphone"][0]=$attributes["ipphone"]; }
        if ($attributes["web_page"]){ $mod["wWWHomePage"][0]=$attributes["web_page"]; }
        if ($attributes["fax"]){ $mod["facsimileTelephoneNumber"][0]=$attributes["fax"]; }
        if ($attributes["enabled"]){ $mod["userAccountControl"][0]=$attributes["enabled"]; }

        // Distribution List specific schema
        if ($attributes["group_sendpermission"]){ $mod["dlMemSubmitPerms"][0]=$attributes["group_sendpermission"]; }
        if ($attributes["group_rejectpermission"]){ $mod["dlMemRejectPerms"][0]=$attributes["group_rejectpermission"]; }

        // Exchange Schema
        if ($attributes["exchange_homemdb"]){ $mod["homeMDB"][0]=$attributes["exchange_homemdb"]; }
        if ($attributes["exchange_mailnickname"]){ $mod["mailNickname"][0]=$attributes["exchange_mailnickname"]; }
        if ($attributes["exchange_proxyaddress"]){ $mod["proxyAddresses"][0]=$attributes["exchange_proxyaddress"]; }
        if ($attributes["exchange_usedefaults"]){ $mod["mDBUseDefaults"][0]=$attributes["exchange_usedefaults"]; }
        if ($attributes["exchange_policyexclude"]){ $mod["msExchPoliciesExcluded"][0]=$attributes["exchange_policyexclude"]; }
        if ($attributes["exchange_policyinclude"]){ $mod["msExchPoliciesIncluded"][0]=$attributes["exchange_policyinclude"]; }

        // This schema is designed for contacts
        if ($attributes["exchange_hidefromlists"]){ $mod["msExchHideFromAddressLists"][0]=$attributes["exchange_hidefromlists"]; }
        if ($attributes["contact_email"]){ $mod["targetAddress"][0]=$attributes["contact_email"]; }

        //echo ("
"); print_r($mod);
        /*
        // modifying a name is a bit fiddly
        if ($attributes["firstname"] && $attributes["surname"]){
            $mod["cn"][0]=$attributes["firstname"]." ".$attributes["surname"];
            $mod["displayname"][0]=$attributes["firstname"]." ".$attributes["surname"];
            $mod["name"][0]=$attributes["firstname"]." ".$attributes["surname"];
        }
        */

        if (count($mod)==0){ return (false); }
        return ($mod);
    }

    /**
    * Coping with AD not returning the primary group
    * http://support.microsoft.com/?kbid=321360
    *
    * For some reason it's not possible to search on primarygrouptoken=XXX
    * If someone can show otherwise, I'd like to know about it :)
    * this way is resource intensive and generally a pain in the @#%^
    *
    * @deprecated deprecated since version 3.1, see get get_primary_group
    * @param string $gid Group ID
    * @return string
    */
    protected function group_cn($gid){
        if ($gid===NULL){ return (false); }
        $r=false;

        $filter="(&(objectCategory=group)(samaccounttype=". ADLDAP_SECURITY_GLOBAL_GROUP ."))";
        $fields=array("primarygrouptoken","samaccountname","distinguishedname");
        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
        $entries = ldap_get_entries($this->_conn, $sr);

        for ($i=0; $i<$entries["count"]; $i++){
            if ($entries[$i]["primarygrouptoken"][0]==$gid){
                $r=$entries[$i]["distinguishedname"][0];
                $i=$entries["count"];
            }
        }

        return ($r);
    }

    /**
    * Coping with AD not returning the primary group
    * http://support.microsoft.com/?kbid=321360
    *
    * This is a re-write based on code submitted by Bruce which prevents the
    * need to search each security group to find the true primary group
    *
    * @param string $gid Group ID
    * @param string $usersid User's Object SID
    * @return string
    */
    protected function get_primary_group($gid, $usersid){
        if ($gid===NULL || $usersid===NULL){ return (false); }
        $r=false;

        $gsid = substr_replace($usersid,pack('V',$gid),strlen($usersid)-4,4);
        $filter='(objectsid='.$this->getTextSID($gsid).')';
        $fields=array("samaccountname","distinguishedname");
        $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
        $entries = ldap_get_entries($this->_conn, $sr);

        return $entries[0]['distinguishedname'][0];
     }

    /**
    * Convert a binary SID to a text SID
    *
    * @param string $binsid A Binary SID
    * @return string
    */
     protected function getTextSID($binsid) {
        $hex_sid = bin2hex($binsid);
        $rev = hexdec(substr($hex_sid, 0, 2));
        $subcount = hexdec(substr($hex_sid, 2, 2));
        $auth = hexdec(substr($hex_sid, 4, 12));
        $result = "$rev-$auth";

        for ($x=0;$x < $subcount; $x++) {
            $subauth[$x] =
                hexdec($this->little_endian(substr($hex_sid, 16 + ($x * 8), 8)));
                $result .= "-" . $subauth[$x];
        }

        // Cheat by tacking on the S-
        return 'S-' . $result;
     }

    /**
    * Converts a little-endian hex number to one that hexdec() can convert
    *
    * @param string $hex A hex code
    * @return string
    */
     protected function little_endian($hex) {
        $result = '';
        for ($x = strlen($hex) - 2; $x >= 0; $x = $x - 2) {
            $result .= substr($hex, $x, 2);
        }
        return $result;
     }

    /**
    * Converts a binary attribute to a string
    *
    * @param string $bin A binary LDAP attribute
    * @return string
    */
    protected function binary2text($bin) {
        $hex_guid = bin2hex($bin);
        $hex_guid_to_guid_str = '';
        for($k = 1; $k <= 4; ++$k) {
            $hex_guid_to_guid_str .= substr($hex_guid, 8 - 2 * $k, 2);
        }
        $hex_guid_to_guid_str .= '-';
        for($k = 1; $k <= 2; ++$k) {
            $hex_guid_to_guid_str .= substr($hex_guid, 12 - 2 * $k, 2);
        }
        $hex_guid_to_guid_str .= '-';
        for($k = 1; $k <= 2; ++$k) {
            $hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2);
        }
        $hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4);
        $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20);
        return strtoupper($hex_guid_to_guid_str);
    }

    /**
    * Converts a binary GUID to a string GUID
    *
    * @param string $binaryGuid The binary GUID attribute to convert
    * @return string
    */
    public function decodeGuid($binaryGuid) {
        if ($binaryGuid === null){ return ("Missing compulsory field [binaryGuid]"); }

        $strGUID = $this->binary2text($binaryGuid);
        return ($strGUID);
    }

    /**
    * Converts a string GUID to a hexdecimal value so it can be queried
    *
    * @param string $strGUID A string representation of a GUID
    * @return string
    */
    protected function strguid2hex($strGUID) {
        $strGUID = str_replace('-', '', $strGUID);

        $octet_str = '\\' . substr($strGUID, 6, 2);
        $octet_str .= '\\' . substr($strGUID, 4, 2);
        $octet_str .= '\\' . substr($strGUID, 2, 2);
        $octet_str .= '\\' . substr($strGUID, 0, 2);
        $octet_str .= '\\' . substr($strGUID, 10, 2);
        $octet_str .= '\\' . substr($strGUID, 8, 2);
        $octet_str .= '\\' . substr($strGUID, 14, 2);
        $octet_str .= '\\' . substr($strGUID, 12, 2);
        //$octet_str .= '\\' . substr($strGUID, 16, strlen($strGUID));
        for ($i=16; $i<=(strlen($strGUID)-2); $i++) {
            if (($i % 2) == 0) {
                $octet_str .= '\\' . substr($strGUID, $i, 2);
            }
        }

        return $octet_str;
    }

    /**
    * Obtain the user's distinguished name based on their userid
    *
    *
    * @param string $username The username
    * @param bool $isGUID Is the username passed a GUID or a samAccountName
    * @return string
    */
    protected function user_dn($username,$isGUID=false){
        $user=$this->user_info($username,array("cn"),$isGUID);
        if ($user[0]["dn"]===NULL){ return (false); }
        $user_dn=$user[0]["dn"];
        return ($user_dn);
    }

    /**
    * Encode a password for transmission over LDAP
    *
    * @param string $password The password to encode
    * @return string
    */
    protected function encode_password($password){
        $password="\"".$password."\"";
        $encoded="";
        for ($i=0; $i 
    * @return string
    */
    protected function ldap_slashes($str){
        return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e',
                            '"\\\\\".join("",unpack("H2","$1"))',
                            $str);
    }

    /**
    * Select a random domain controller from your domain controller array
    *
    * @return string
    */
    protected function random_controller(){
        mt_srand(doubleval(microtime()) * 100000000); // For older PHP versions
        return ($this->_domain_controllers[array_rand($this->_domain_controllers)]);
    }

    /**
    * Account control options
    *
    * @param array $options The options to convert to int
    * @return int
    */
    protected function account_control($options){
        $val=0;

        if (is_array($options)){
            if (in_array("SCRIPT",$options)){ $val=$val+1; }
            if (in_array("ACCOUNTDISABLE",$options)){ $val=$val+2; }
            if (in_array("HOMEDIR_REQUIRED",$options)){ $val=$val+8; }
            if (in_array("LOCKOUT",$options)){ $val=$val+16; }
            if (in_array("PASSWD_NOTREQD",$options)){ $val=$val+32; }
            //PASSWD_CANT_CHANGE Note You cannot assign this permission by directly modifying the UserAccountControl attribute.
            //For information about how to set the permission programmatically, see the "Property flag descriptions" section.
            if (in_array("ENCRYPTED_TEXT_PWD_ALLOWED",$options)){ $val=$val+128; }
            if (in_array("TEMP_DUPLICATE_ACCOUNT",$options)){ $val=$val+256; }
            if (in_array("NORMAL_ACCOUNT",$options)){ $val=$val+512; }
            if (in_array("INTERDOMAIN_TRUST_ACCOUNT",$options)){ $val=$val+2048; }
            if (in_array("WORKSTATION_TRUST_ACCOUNT",$options)){ $val=$val+4096; }
            if (in_array("SERVER_TRUST_ACCOUNT",$options)){ $val=$val+8192; }
            if (in_array("DONT_EXPIRE_PASSWORD",$options)){ $val=$val+65536; }
            if (in_array("MNS_LOGON_ACCOUNT",$options)){ $val=$val+131072; }
            if (in_array("SMARTCARD_REQUIRED",$options)){ $val=$val+262144; }
            if (in_array("TRUSTED_FOR_DELEGATION",$options)){ $val=$val+524288; }
            if (in_array("NOT_DELEGATED",$options)){ $val=$val+1048576; }
            if (in_array("USE_DES_KEY_ONLY",$options)){ $val=$val+2097152; }
            if (in_array("DONT_REQ_PREAUTH",$options)){ $val=$val+4194304; }
            if (in_array("PASSWORD_EXPIRED",$options)){ $val=$val+8388608; }
            if (in_array("TRUSTED_TO_AUTH_FOR_DELEGATION",$options)){ $val=$val+16777216; }
        }
        return ($val);
    }

    /**
    * Take an LDAP query and return the nice names, without all the LDAP prefixes (eg. CN, DN)
    *
    * @param array $groups
    * @return array
    */
    protected function nice_names($groups){

        $group_array=array();
        for ($i=0; $i<$groups["count"]; $i++){ // For each group
            $line=$groups[$i];

            if (strlen($line)>0){
                // More presumptions, they're all prefixed with CN=
                // so we ditch the first three characters and the group
                // name goes up to the first comma
                $bits=explode(",",$line);
                $group_array[]=substr($bits[0],3,(strlen($bits[0])-3));
            }
        }
        return ($group_array);
    }

    /**
    * Delete a distinguished name from Active Directory
    * You should never need to call this yourself, just use the wrapper functions user_delete and contact_delete
    *
    * @param string $dn The distinguished name to delete
    * @return bool
    */
    protected function dn_delete($dn){
        $result=ldap_delete($this->_conn, $dn);
        if ($result!=true){ return (false); }
        return (true);
    }

    /**
    * Convert a boolean value to a string
    * You should never need to call this yourself
    *
    * @param bool $bool Boolean value
    * @return string
    */
    protected function bool2str($bool) {
        return ($bool) ? 'TRUE' : 'FALSE';
    }

    /**
    * Convert 8bit characters e.g. accented characters to UTF8 encoded characters
    */
    protected function encode8bit(&$item, $key) {
        $encode = false;
        if (is_string($item)) {
            for ($i=0; $i> 7) {
                    $encode = true;
                }
            }
        }
        if ($encode === true && $key != 'password') {
            $item = utf8_encode($item);
        }
    }
}

/**
* adLDAP Exception Handler
*
* Exceptions of this type are thrown on bind failure or when SSL is required but not configured
* Example:
* try {
*   $adldap = new adLDAP();
* }
* catch (adLDAPException $e) {
*   echo $e;
*   exit();
* }
*/
class adLDAPException extends Exception {}

?>
splitbrain-dokuwiki-d6c824b/inc/auth.php000066400000000000000000001044151134327003500203510ustar00rootroot00000000000000
 */

if(!defined('DOKU_INC')) die('meh.');
require_once(DOKU_INC.'inc/common.php');
require_once(DOKU_INC.'inc/io.php');

// some ACL level defines
define('AUTH_NONE',0);
define('AUTH_READ',1);
define('AUTH_EDIT',2);
define('AUTH_CREATE',4);
define('AUTH_UPLOAD',8);
define('AUTH_DELETE',16);
define('AUTH_ADMIN',255);

global $conf;

if($conf['useacl']){
    require_once(DOKU_INC.'inc/blowfish.php');
    require_once(DOKU_INC.'inc/mail.php');

    global $auth;

    // load the the backend auth functions and instantiate the auth object
    if (@file_exists(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php')) {
        require_once(DOKU_INC.'inc/auth/basic.class.php');
        require_once(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php');

        $auth_class = "auth_".$conf['authtype'];
        if (class_exists($auth_class)) {
            $auth = new $auth_class();
            if ($auth->success == false) {
                // degrade to unauthenticated user
                unset($auth);
                auth_logoff();
                msg($lang['authtempfail'], -1);
            }
        } else {
            nice_die($lang['authmodfailed']);
        }
    } else {
        nice_die($lang['authmodfailed']);
    }
}

// do the login either by cookie or provided credentials
if($conf['useacl']){
    if($auth){
        if (!isset($_REQUEST['u'])) $_REQUEST['u'] = '';
        if (!isset($_REQUEST['p'])) $_REQUEST['p'] = '';
        if (!isset($_REQUEST['r'])) $_REQUEST['r'] = '';
        $_REQUEST['http_credentials'] = false;
        if (!$conf['rememberme']) $_REQUEST['r'] = false;

        // streamline HTTP auth credentials (IIS/rewrite -> mod_php)
        if(isset($_SERVER['HTTP_AUTHORIZATION'])){
            list($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']) =
                explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
        }

        // if no credentials were given try to use HTTP auth (for SSO)
        if(empty($_REQUEST['u']) && empty($_COOKIE[DOKU_COOKIE]) && !empty($_SERVER['PHP_AUTH_USER'])){
            $_REQUEST['u'] = $_SERVER['PHP_AUTH_USER'];
            $_REQUEST['p'] = $_SERVER['PHP_AUTH_PW'];
            $_REQUEST['http_credentials'] = true;
        }

        // apply cleaning
        $_REQUEST['u'] = $auth->cleanUser($_REQUEST['u']);

        if(isset($_REQUEST['authtok'])){
            // when an authentication token is given, trust the session
            auth_validateToken($_REQUEST['authtok']);
        }elseif(!is_null($auth) && $auth->canDo('external')){
            // external trust mechanism in place
            $auth->trustExternal($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']);
        }else{
            $evdata = array(
                    'user'     => $_REQUEST['u'],
                    'password' => $_REQUEST['p'],
                    'sticky'   => $_REQUEST['r'],
                    'silent'   => $_REQUEST['http_credentials'],
                    );
            trigger_event('AUTH_LOGIN_CHECK', $evdata, 'auth_login_wrapper');
        }
    }

    //load ACL into a global array
    global $AUTH_ACL;
    if(is_readable(DOKU_CONF.'acl.auth.php')){
        $AUTH_ACL = file(DOKU_CONF.'acl.auth.php');
        //support user wildcard
        if(isset($_SERVER['REMOTE_USER'])){
            $AUTH_ACL = str_replace('%USER%',$_SERVER['REMOTE_USER'],$AUTH_ACL);
            $AUTH_ACL = str_replace('@USER@',$_SERVER['REMOTE_USER'],$AUTH_ACL); //legacy
        }
    }else{
        $AUTH_ACL = array();
    }
}

function auth_login_wrapper($evdata) {
    return auth_login($evdata['user'],
                      $evdata['password'],
                      $evdata['sticky'],
                      $evdata['silent']);
}

/**
 * This tries to login the user based on the sent auth credentials
 *
 * The authentication works like this: if a username was given
 * a new login is assumed and user/password are checked. If they
 * are correct the password is encrypted with blowfish and stored
 * together with the username in a cookie - the same info is stored
 * in the session, too. Additonally a browserID is stored in the
 * session.
 *
 * If no username was given the cookie is checked: if the username,
 * crypted password and browserID match between session and cookie
 * no further testing is done and the user is accepted
 *
 * If a cookie was found but no session info was availabe the
 * blowfish encrypted password from the cookie is decrypted and
 * together with username rechecked by calling this function again.
 *
 * On a successful login $_SERVER[REMOTE_USER] and $USERINFO
 * are set.
 *
 * @author  Andreas Gohr 
 *
 * @param   string  $user    Username
 * @param   string  $pass    Cleartext Password
 * @param   bool    $sticky  Cookie should not expire
 * @param   bool    $silent  Don't show error on bad auth
 * @return  bool             true on successful auth
 */
function auth_login($user,$pass,$sticky=false,$silent=false){
    global $USERINFO;
    global $conf;
    global $lang;
    global $auth;
    $sticky ? $sticky = true : $sticky = false; //sanity check

    if (!$auth) return false;

    if(!empty($user)){
        //usual login
        if ($auth->checkPass($user,$pass)){
            // make logininfo globally available
            $_SERVER['REMOTE_USER'] = $user;
            auth_setCookie($user,PMA_blowfish_encrypt($pass,auth_cookiesalt()),$sticky);
            return true;
        }else{
            //invalid credentials - log off
            if(!$silent) msg($lang['badlogin'],-1);
            auth_logoff();
            return false;
        }
    }else{
        // read cookie information
        list($user,$sticky,$pass) = auth_getCookie();
        // get session info
        $session = $_SESSION[DOKU_COOKIE]['auth'];
        if($user && $pass){
            // we got a cookie - see if we can trust it
            if(isset($session) &&
                    $auth->useSessionCache($user) &&
                    ($session['time'] >= time()-$conf['auth_security_timeout']) &&
                    ($session['user'] == $user) &&
                    ($session['pass'] == $pass) &&  //still crypted
                    ($session['buid'] == auth_browseruid()) ){
                // he has session, cookie and browser right - let him in
                $_SERVER['REMOTE_USER'] = $user;
                $USERINFO = $session['info']; //FIXME move all references to session
                return true;
            }
            // no we don't trust it yet - recheck pass but silent
            $pass = PMA_blowfish_decrypt($pass,auth_cookiesalt());
            return auth_login($user,$pass,$sticky,true);
        }
    }
    //just to be sure
    auth_logoff(true);
    return false;
}

/**
 * Checks if a given authentication token was stored in the session
 *
 * Will setup authentication data using data from the session if the
 * token is correct. Will exit with a 401 Status if not.
 *
 * @author Andreas Gohr 
 * @param  string $token The authentication token
 * @return boolean true (or will exit on failure)
 */
function auth_validateToken($token){
    if(!$token || $token != $_SESSION[DOKU_COOKIE]['auth']['token']){
        // bad token
        header("HTTP/1.0 401 Unauthorized");
        print 'Invalid auth token - maybe the session timed out';
        unset($_SESSION[DOKU_COOKIE]['auth']['token']); // no second chance
        exit;
    }
    // still here? trust the session data
    global $USERINFO;
    $_SERVER['REMOTE_USER'] = $_SESSION[DOKU_COOKIE]['auth']['user'];
    $USERINFO = $_SESSION[DOKU_COOKIE]['auth']['info'];
    return true;
}

/**
 * Create an auth token and store it in the session
 *
 * NOTE: this is completely unrelated to the getSecurityToken() function
 *
 * @author Andreas Gohr 
 * @return string The auth token
 */
function auth_createToken(){
    $token = md5(mt_rand());
    @session_start(); // reopen the session if needed
    $_SESSION[DOKU_COOKIE]['auth']['token'] = $token;
    session_write_close();
    return $token;
}

/**
 * Builds a pseudo UID from browser and IP data
 *
 * This is neither unique nor unfakable - still it adds some
 * security. Using the first part of the IP makes sure
 * proxy farms like AOLs are stil okay.
 *
 * @author  Andreas Gohr 
 *
 * @return  string  a MD5 sum of various browser headers
 */
function auth_browseruid(){
    $ip   = clientIP(true);
    $uid  = '';
    $uid .= $_SERVER['HTTP_USER_AGENT'];
    $uid .= $_SERVER['HTTP_ACCEPT_ENCODING'];
    $uid .= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $uid .= $_SERVER['HTTP_ACCEPT_CHARSET'];
    $uid .= substr($ip,0,strpos($ip,'.'));
    return md5($uid);
}

/**
 * Creates a random key to encrypt the password in cookies
 *
 * This function tries to read the password for encrypting
 * cookies from $conf['metadir'].'/_htcookiesalt'
 * if no such file is found a random key is created and
 * and stored in this file.
 *
 * @author  Andreas Gohr 
 *
 * @return  string
 */
function auth_cookiesalt(){
    global $conf;
    $file = $conf['metadir'].'/_htcookiesalt';
    $salt = io_readFile($file);
    if(empty($salt)){
        $salt = uniqid(rand(),true);
        io_saveFile($file,$salt);
    }
    return $salt;
}

/**
 * Log out the current user
 *
 * This clears all authentication data and thus log the user
 * off. It also clears session data.
 *
 * @author  Andreas Gohr 
 * @param bool $keepbc - when true, the breadcrumb data is not cleared
 */
function auth_logoff($keepbc=false){
    global $conf;
    global $USERINFO;
    global $INFO, $ID;
    global $auth;

    // make sure the session is writable (it usually is)
    @session_start();

    if(isset($_SESSION[DOKU_COOKIE]['auth']['user']))
        unset($_SESSION[DOKU_COOKIE]['auth']['user']);
    if(isset($_SESSION[DOKU_COOKIE]['auth']['pass']))
        unset($_SESSION[DOKU_COOKIE]['auth']['pass']);
    if(isset($_SESSION[DOKU_COOKIE]['auth']['info']))
        unset($_SESSION[DOKU_COOKIE]['auth']['info']);
    if(!$keepbc && isset($_SESSION[DOKU_COOKIE]['bc']))
        unset($_SESSION[DOKU_COOKIE]['bc']);
    if(isset($_SERVER['REMOTE_USER']))
        unset($_SERVER['REMOTE_USER']);
    $USERINFO=null; //FIXME

    if (version_compare(PHP_VERSION, '5.2.0', '>')) {
        setcookie(DOKU_COOKIE,'',time()-600000,DOKU_REL,'',($conf['securecookie'] && is_ssl()),true);
    }else{
        setcookie(DOKU_COOKIE,'',time()-600000,DOKU_REL,'',($conf['securecookie'] && is_ssl()));
    }

    if($auth && $auth->canDo('logoff')){
        $auth->logOff();
    }
}

/**
 * Check if a user is a manager
 *
 * Should usually be called without any parameters to check the current
 * user.
 *
 * The info is available through $INFO['ismanager'], too
 *
 * @author Andreas Gohr 
 * @see    auth_isadmin
 * @param  string user      - Username
 * @param  array  groups    - List of groups the user is in
 * @param  bool   adminonly - when true checks if user is admin
 */
function auth_ismanager($user=null,$groups=null,$adminonly=false){
    global $conf;
    global $USERINFO;
    global $auth;

    if (!$auth) return false;
    if(is_null($user)) {
        if (!isset($_SERVER['REMOTE_USER'])) {
            return false;
        } else {
            $user = $_SERVER['REMOTE_USER'];
        }
    }
    $user = $auth->cleanUser($user);
    if(is_null($groups)) $groups = (array) $USERINFO['grps'];
    $groups = array_map(array($auth,'cleanGroup'),$groups);
    $user   = auth_nameencode($user);

    // check username against superuser and manager
    $superusers = explode(',', $conf['superuser']);
    $superusers = array_unique($superusers);
    $superusers = array_map('trim', $superusers);
    // prepare an array containing only true values for array_map call
    $alltrue = array_fill(0, count($superusers), true);
    $superusers = array_map('auth_nameencode', $superusers, $alltrue);

    // case insensitive?
    if(!$auth->isCaseSensitive()){
        $superusers = array_map('utf8_strtolower',$superusers);
        $user       = utf8_strtolower($user);
    }

    // check user match
    if(in_array($user, $superusers)) return true;

    // check managers
    if(!$adminonly){
        $managers = explode(',', $conf['manager']);
        $managers = array_unique($managers);
        $managers = array_map('trim', $managers);
        // prepare an array containing only true values for array_map call
        $alltrue = array_fill(0, count($managers), true);
        $managers = array_map('auth_nameencode', $managers, $alltrue);
        if(!$auth->isCaseSensitive()) $managers = array_map('utf8_strtolower',$managers);
        if(in_array($user, $managers)) return true;
    }

    // check user's groups against superuser and manager
    if (!empty($groups)) {

        //prepend groups with @ and nameencode
        $cnt = count($groups);
        for($i=0; $i<$cnt; $i++){
            $groups[$i] = '@'.auth_nameencode($groups[$i]);
            if(!$auth->isCaseSensitive()){
                $groups[$i] = utf8_strtolower($groups[$i]);
            }
        }

        // check groups against superuser and manager
        foreach($superusers as $supu)
            if(in_array($supu, $groups)) return true;
        if(!$adminonly){
            foreach($managers as $mana)
                if(in_array($mana, $groups)) return true;
        }
    }

    return false;
}

/**
 * Check if a user is admin
 *
 * Alias to auth_ismanager with adminonly=true
 *
 * The info is available through $INFO['isadmin'], too
 *
 * @author Andreas Gohr 
 * @see auth_ismanager
 */
function auth_isadmin($user=null,$groups=null){
    return auth_ismanager($user,$groups,true);
}

/**
 * Convinience function for auth_aclcheck()
 *
 * This checks the permissions for the current user
 *
 * @author  Andreas Gohr 
 *
 * @param  string  $id  page ID (needs to be resolved and cleaned)
 * @return int          permission level
 */
function auth_quickaclcheck($id){
    global $conf;
    global $USERINFO;
    # if no ACL is used always return upload rights
    if(!$conf['useacl']) return AUTH_UPLOAD;
    return auth_aclcheck($id,$_SERVER['REMOTE_USER'],$USERINFO['grps']);
}

/**
 * Returns the maximum rights a user has for
 * the given ID or its namespace
 *
 * @author  Andreas Gohr 
 *
 * @param  string  $id     page ID (needs to be resolved and cleaned)
 * @param  string  $user   Username
 * @param  array   $groups Array of groups the user is in
 * @return int             permission level
 */
function auth_aclcheck($id,$user,$groups){
    global $conf;
    global $AUTH_ACL;
    global $auth;

    // if no ACL is used always return upload rights
    if(!$conf['useacl']) return AUTH_UPLOAD;
    if (!$auth) return AUTH_NONE;

    //make sure groups is an array
    if(!is_array($groups)) $groups = array();

    //if user is superuser or in superusergroup return 255 (acl_admin)
    if(auth_isadmin($user,$groups)) { return AUTH_ADMIN; }

    $ci = '';
    if(!$auth->isCaseSensitive()) $ci = 'ui';

    $user = $auth->cleanUser($user);
    $groups = array_map(array($auth,'cleanGroup'),(array)$groups);
    $user = auth_nameencode($user);

    //prepend groups with @ and nameencode
    $cnt = count($groups);
    for($i=0; $i<$cnt; $i++){
        $groups[$i] = '@'.auth_nameencode($groups[$i]);
    }

    $ns    = getNS($id);
    $perm  = -1;

    if($user || count($groups)){
        //add ALL group
        $groups[] = '@ALL';
        //add User
        if($user) $groups[] = $user;
        //build regexp
        $regexp   = join('|',$groups);
    }else{
        $regexp = '@ALL';
    }

    //check exact match first
    $matches = preg_grep('/^'.preg_quote($id,'/').'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL);
    if(count($matches)){
        foreach($matches as $match){
            $match = preg_replace('/#.*$/','',$match); //ignore comments
            $acl   = preg_split('/\s+/',$match);
            if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
            if($acl[2] > $perm){
                $perm = $acl[2];
            }
        }
        if($perm > -1){
            //we had a match - return it
            return $perm;
        }
    }

    //still here? do the namespace checks
    if($ns){
        $path = $ns.':\*';
    }else{
        $path = '\*'; //root document
    }

    do{
        $matches = preg_grep('/^'.$path.'\s+('.$regexp.')\s+/'.$ci,$AUTH_ACL);
        if(count($matches)){
            foreach($matches as $match){
                $match = preg_replace('/#.*$/','',$match); //ignore comments
                $acl   = preg_split('/\s+/',$match);
                if($acl[2] > AUTH_DELETE) $acl[2] = AUTH_DELETE; //no admins in the ACL!
                if($acl[2] > $perm){
                    $perm = $acl[2];
                }
            }
            //we had a match - return it
            return $perm;
        }

        //get next higher namespace
        $ns   = getNS($ns);

        if($path != '\*'){
            $path = $ns.':\*';
            if($path == ':\*') $path = '\*';
        }else{
            //we did this already
            //looks like there is something wrong with the ACL
            //break here
            msg('No ACL setup yet! Denying access to everyone.');
            return AUTH_NONE;
        }
    }while(1); //this should never loop endless

    //still here? return no permissions
    return AUTH_NONE;
}

/**
 * Encode ASCII special chars
 *
 * Some auth backends allow special chars in their user and groupnames
 * The special chars are encoded with this function. Only ASCII chars
 * are encoded UTF-8 multibyte are left as is (different from usual
 * urlencoding!).
 *
 * Decoding can be done with rawurldecode
 *
 * @author Andreas Gohr 
 * @see rawurldecode()
 */
function auth_nameencode($name,$skip_group=false){
    global $cache_authname;
    $cache =& $cache_authname;
    $name  = (string) $name;

    if (!isset($cache[$name][$skip_group])) {
        if($skip_group && $name{0} =='@'){
            $cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
                    "'%'.dechex(ord(substr('\\1',-1)))",substr($name,1));
        }else{
            $cache[$name][$skip_group] = preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
                    "'%'.dechex(ord(substr('\\1',-1)))",$name);
        }
    }

    return $cache[$name][$skip_group];
}

/**
 * Create a pronouncable password
 *
 * @author  Andreas Gohr 
 * @link    http://www.phpbuilder.com/annotate/message.php3?id=1014451
 *
 * @return string  pronouncable password
 */
function auth_pwgen(){
    $pw = '';
    $c  = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones
    $v  = 'aeiou';              //vowels
    $a  = $c.$v;                //both

    //use two syllables...
    for($i=0;$i < 2; $i++){
        $pw .= $c[rand(0, strlen($c)-1)];
        $pw .= $v[rand(0, strlen($v)-1)];
        $pw .= $a[rand(0, strlen($a)-1)];
    }
    //... and add a nice number
    $pw .= rand(10,99);

    return $pw;
}

/**
 * Sends a password to the given user
 *
 * @author  Andreas Gohr 
 *
 * @return bool  true on success
 */
function auth_sendPassword($user,$password){
    global $conf;
    global $lang;
    global $auth;
    if (!$auth) return false;

    $hdrs  = '';
    $user     = $auth->cleanUser($user);
    $userinfo = $auth->getUserData($user);

    if(!$userinfo['mail']) return false;

    $text = rawLocale('password');
    $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
    $text = str_replace('@FULLNAME@',$userinfo['name'],$text);
    $text = str_replace('@LOGIN@',$user,$text);
    $text = str_replace('@PASSWORD@',$password,$text);
    $text = str_replace('@TITLE@',$conf['title'],$text);

    return mail_send($userinfo['name'].' <'.$userinfo['mail'].'>',
            $lang['regpwmail'],
            $text,
            $conf['mailfrom']);
}

/**
 * Register a new user
 *
 * This registers a new user - Data is read directly from $_POST
 *
 * @author  Andreas Gohr 
 *
 * @return bool  true on success, false on any error
 */
function register(){
    global $lang;
    global $conf;
    global $auth;

    if (!$auth) return false;
    if(!$_POST['save']) return false;
    if(!$auth->canDo('addUser')) return false;

    //clean username
    $_POST['login'] = trim($auth->cleanUser($_POST['login']));

    //clean fullname and email
    $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname']));
    $_POST['email']    = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email']));

    if( empty($_POST['login']) ||
        empty($_POST['fullname']) ||
        empty($_POST['email']) ){
        msg($lang['regmissing'],-1);
        return false;
    }

    if ($conf['autopasswd']) {
        $pass = auth_pwgen();                // automatically generate password
    } elseif (empty($_POST['pass']) ||
            empty($_POST['passchk'])) {
        msg($lang['regmissing'], -1);        // complain about missing passwords
        return false;
    } elseif ($_POST['pass'] != $_POST['passchk']) {
        msg($lang['regbadpass'], -1);      // complain about misspelled passwords
        return false;
    } else {
        $pass = $_POST['pass'];              // accept checked and valid password
    }

    //check mail
    if(!mail_isvalid($_POST['email'])){
        msg($lang['regbadmail'],-1);
        return false;
    }

    //okay try to create the user
    if(!$auth->triggerUserMod('create', array($_POST['login'],$pass,$_POST['fullname'],$_POST['email']))){
        msg($lang['reguexists'],-1);
        return false;
    }

    // create substitutions for use in notification email
    $substitutions = array(
            'NEWUSER' => $_POST['login'],
            'NEWNAME' => $_POST['fullname'],
            'NEWEMAIL' => $_POST['email'],
            );

    if (!$conf['autopasswd']) {
        msg($lang['regsuccess2'],1);
        notify('', 'register', '', $_POST['login'], false, $substitutions);
        return true;
    }

    // autogenerated password? then send him the password
    if (auth_sendPassword($_POST['login'],$pass)){
        msg($lang['regsuccess'],1);
        notify('', 'register', '', $_POST['login'], false, $substitutions);
        return true;
    }else{
        msg($lang['regmailfail'],-1);
        return false;
    }
}

/**
 * Update user profile
 *
 * @author    Christopher Smith 
 */
function updateprofile() {
    global $conf;
    global $INFO;
    global $lang;
    global $auth;

    if (!$auth) return false;
    if(empty($_POST['save'])) return false;
    if(!checkSecurityToken()) return false;

    // should not be able to get here without Profile being possible...
    if(!$auth->canDo('Profile')) {
        msg($lang['profna'],-1);
        return false;
    }

    if ($_POST['newpass'] != $_POST['passchk']) {
        msg($lang['regbadpass'], -1);      // complain about misspelled passwords
        return false;
    }

    //clean fullname and email
    $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['fullname']));
    $_POST['email']    = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/','',$_POST['email']));

    if ((empty($_POST['fullname']) && $auth->canDo('modName')) ||
        (empty($_POST['email']) && $auth->canDo('modMail'))) {
        msg($lang['profnoempty'],-1);
        return false;
    }

    if (!mail_isvalid($_POST['email']) && $auth->canDo('modMail')){
        msg($lang['regbadmail'],-1);
        return false;
    }

    if ($_POST['fullname'] != $INFO['userinfo']['name'] && $auth->canDo('modName')) $changes['name'] = $_POST['fullname'];
    if ($_POST['email'] != $INFO['userinfo']['mail'] && $auth->canDo('modMail')) $changes['mail'] = $_POST['email'];
    if (!empty($_POST['newpass']) && $auth->canDo('modPass')) $changes['pass'] = $_POST['newpass'];

    if (!count($changes)) {
        msg($lang['profnochange'], -1);
        return false;
    }

    if ($conf['profileconfirm']) {
        if (!$auth->checkPass($_SERVER['REMOTE_USER'], $_POST['oldpass'])) {
            msg($lang['badlogin'],-1);
            return false;
        }
    }

    if ($result = $auth->triggerUserMod('modify', array($_SERVER['REMOTE_USER'], $changes))) {
        // update cookie and session with the changed data
        $cookie = base64_decode($_COOKIE[DOKU_COOKIE]);
        list($user,$sticky,$pass) = explode('|',$cookie,3);
        if ($changes['pass']) $pass = PMA_blowfish_encrypt($changes['pass'],auth_cookiesalt());

        auth_setCookie($_SERVER['REMOTE_USER'],$pass,(bool)$sticky);
        return true;
    }
}

/**
 * Send a  new password
 *
 * This function handles both phases of the password reset:
 *
 *   - handling the first request of password reset
 *   - validating the password reset auth token
 *
 * @author Benoit Chesneau 
 * @author Chris Smith 
 * @author Andreas Gohr 
 *
 * @return bool true on success, false on any error
 */
function act_resendpwd(){
    global $lang;
    global $conf;
    global $auth;

    if(!actionOK('resendpwd')) return false;
    if (!$auth) return false;

    // should not be able to get here without modPass being possible...
    if(!$auth->canDo('modPass')) {
        msg($lang['resendna'],-1);
        return false;
    }

    $token = preg_replace('/[^a-f0-9]+/','',$_REQUEST['pwauth']);

    if($token){
        // we're in token phase

        $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
        if(!@file_exists($tfile)){
            msg($lang['resendpwdbadauth'],-1);
            return false;
        }
        $user = io_readfile($tfile);
        @unlink($tfile);
        $userinfo = $auth->getUserData($user);
        if(!$userinfo['mail']) {
            msg($lang['resendpwdnouser'], -1);
            return false;
        }

        $pass = auth_pwgen();
        if (!$auth->triggerUserMod('modify', array($user,array('pass' => $pass)))) {
            msg('error modifying user data',-1);
            return false;
        }

        if (auth_sendPassword($user,$pass)) {
            msg($lang['resendpwdsuccess'],1);
        } else {
            msg($lang['regmailfail'],-1);
        }
        return true;

    } else {
        // we're in request phase

        if(!$_POST['save']) return false;

        if (empty($_POST['login'])) {
            msg($lang['resendpwdmissing'], -1);
            return false;
        } else {
            $user = trim($auth->cleanUser($_POST['login']));
        }

        $userinfo = $auth->getUserData($user);
        if(!$userinfo['mail']) {
            msg($lang['resendpwdnouser'], -1);
            return false;
        }

        // generate auth token
        $token = md5(auth_cookiesalt().$user); //secret but user based
        $tfile = $conf['cachedir'].'/'.$token{0}.'/'.$token.'.pwauth';
        $url = wl('',array('do'=>'resendpwd','pwauth'=>$token),true,'&');

        io_saveFile($tfile,$user);

        $text = rawLocale('pwconfirm');
        $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text);
        $text = str_replace('@FULLNAME@',$userinfo['name'],$text);
        $text = str_replace('@LOGIN@',$user,$text);
        $text = str_replace('@TITLE@',$conf['title'],$text);
        $text = str_replace('@CONFIRM@',$url,$text);

        if(mail_send($userinfo['name'].' <'.$userinfo['mail'].'>',
                     $lang['regpwmail'],
                     $text,
                     $conf['mailfrom'])){
            msg($lang['resendpwdconfirm'],1);
        }else{
            msg($lang['regmailfail'],-1);
        }
        return true;
    }

    return false; // never reached
}

/**
 * Encrypts a password using the given method and salt
 *
 * If the selected method needs a salt and none was given, a random one
 * is chosen.
 *
 * The following methods are understood:
 *
 *   smd5  - Salted MD5 hashing
 *   apr1  - Apache salted MD5 hashing
 *   md5   - Simple MD5 hashing
 *   sha1  - SHA1 hashing
 *   ssha  - Salted SHA1 hashing
 *   crypt - Unix crypt
 *   mysql - MySQL password (old method)
 *   my411 - MySQL 4.1.1 password
 *   kmd5  - Salted MD5 hashing as used by UNB
 *
 * @author  Andreas Gohr 
 * @return  string  The crypted password
 */
function auth_cryptPassword($clear,$method='',$salt=null){
    global $conf;
    if(empty($method)) $method = $conf['passcrypt'];

    //prepare a salt
    if(is_null($salt)) $salt = md5(uniqid(rand(), true));

    switch(strtolower($method)){
        case 'smd5':
            if(defined('CRYPT_MD5') && CRYPT_MD5) return crypt($clear,'$1$'.substr($salt,0,8).'$');
            // when crypt can't handle SMD5, falls through to pure PHP implementation
            $magic = '1';
        case 'apr1':
            //from http://de.php.net/manual/en/function.crypt.php#73619 comment by 
            if(!$magic) $magic = 'apr1';
            $salt = substr($salt,0,8);
            $len = strlen($clear);
            $text = $clear.'$'.$magic.'$'.$salt;
            $bin = pack("H32", md5($clear.$salt.$clear));
            for($i = $len; $i > 0; $i -= 16) {
                $text .= substr($bin, 0, min(16, $i));
            }
            for($i = $len; $i > 0; $i >>= 1) {
                $text .= ($i & 1) ? chr(0) : $clear{0};
            }
            $bin = pack("H32", md5($text));
            for($i = 0; $i < 1000; $i++) {
                $new = ($i & 1) ? $clear : $bin;
                if ($i % 3) $new .= $salt;
                if ($i % 7) $new .= $clear;
                $new .= ($i & 1) ? $bin : $clear;
                $bin = pack("H32", md5($new));
            }
            $tmp = '';
            for ($i = 0; $i < 5; $i++) {
                $k = $i + 6;
                $j = $i + 12;
                if ($j == 16) $j = 5;
                $tmp = $bin[$i].$bin[$k].$bin[$j].$tmp;
            }
            $tmp = chr(0).chr(0).$bin[11].$tmp;
            $tmp = strtr(strrev(substr(base64_encode($tmp), 2)),
                    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
                    "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
            return '$'.$magic.'$'.$salt.'$'.$tmp;
        case 'md5':
            return md5($clear);
        case 'sha1':
            return sha1($clear);
        case 'ssha':
            $salt=substr($salt,0,4);
            return '{SSHA}'.base64_encode(pack("H*", sha1($clear.$salt)).$salt);
        case 'crypt':
            return crypt($clear,substr($salt,0,2));
        case 'mysql':
            //from http://www.php.net/mysql comment by 
            $nr=0x50305735;
            $nr2=0x12345671;
            $add=7;
            $charArr = preg_split("//", $clear);
            foreach ($charArr as $char) {
                if (($char == '') || ($char == ' ') || ($char == '\t')) continue;
                $charVal = ord($char);
                $nr ^= ((($nr & 63) + $add) * $charVal) + ($nr << 8);
                $nr2 += ($nr2 << 8) ^ $nr;
                $add += $charVal;
            }
            return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff));
        case 'my411':
            return '*'.sha1(pack("H*", sha1($clear)));
        case 'kmd5':
            $key = substr($salt, 16, 2);
            $hash1 = strtolower(md5($key . md5($clear)));
            $hash2 = substr($hash1, 0, 16) . $key . substr($hash1, 16);
            return $hash2;
        default:
            msg("Unsupported crypt method $method",-1);
    }
}

/**
 * Verifies a cleartext password against a crypted hash
 *
 * The method and salt used for the crypted hash is determined automatically
 * then the clear text password is crypted using the same method. If both hashs
 * match true is is returned else false
 *
 * @author  Andreas Gohr 
 * @return  bool
 */
function auth_verifyPassword($clear,$crypt){
    $method='';
    $salt='';

    //determine the used method and salt
    $len = strlen($crypt);
    if(preg_match('/^\$1\$([^\$]{0,8})\$/',$crypt,$m)){
        $method = 'smd5';
        $salt   = $m[1];
    }elseif(preg_match('/^\$apr1\$([^\$]{0,8})\$/',$crypt,$m)){
        $method = 'apr1';
        $salt   = $m[1];
    }elseif(substr($crypt,0,6) == '{SSHA}'){
        $method = 'ssha';
        $salt   = substr(base64_decode(substr($crypt, 6)),20);
    }elseif($len == 32){
        $method = 'md5';
    }elseif($len == 40){
        $method = 'sha1';
    }elseif($len == 16){
        $method = 'mysql';
    }elseif($len == 41 && $crypt[0] == '*'){
        $method = 'my411';
    }elseif($len == 34){
        $method = 'kmd5';
        $salt   = $crypt;
    }else{
        $method = 'crypt';
        $salt   = substr($crypt,0,2);
    }

    //crypt and compare
    if(auth_cryptPassword($clear,$method,$salt) === $crypt){
        return true;
    }
    return false;
}

/**
 * Set the authentication cookie and add user identification data to the session
 *
 * @param string  $user       username
 * @param string  $pass       encrypted password
 * @param bool    $sticky     whether or not the cookie will last beyond the session
 */
function auth_setCookie($user,$pass,$sticky) {
    global $conf;
    global $auth;
    global $USERINFO;

    if (!$auth) return false;
    $USERINFO = $auth->getUserData($user);

    // set cookie
    $cookie = base64_encode($user).'|'.((int) $sticky).'|'.base64_encode($pass);
    $time = $sticky ? (time()+60*60*24*365) : 0; //one year
    if (version_compare(PHP_VERSION, '5.2.0', '>')) {
        setcookie(DOKU_COOKIE,$cookie,$time,DOKU_REL,'',($conf['securecookie'] && is_ssl()),true);
    }else{
        setcookie(DOKU_COOKIE,$cookie,$time,DOKU_REL,'',($conf['securecookie'] && is_ssl()));
    }
    // set session
    $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
    $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
    $_SESSION[DOKU_COOKIE]['auth']['buid'] = auth_browseruid();
    $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
    $_SESSION[DOKU_COOKIE]['auth']['time'] = time();
}

/**
 * Returns the user, (encrypted) password and sticky bit from cookie
 *
 * @returns array
 */
function auth_getCookie(){
    if (!isset($_COOKIE[DOKU_COOKIE])) {
        return array(null, null, null);
    }
    list($user,$sticky,$pass) = explode('|',$_COOKIE[DOKU_COOKIE],3);
    $sticky = (bool) $sticky;
    $pass   = base64_decode($pass);
    $user   = base64_decode($user);
    return array($user,$sticky,$pass);
}

//Setup VIM: ex: et ts=2 enc=utf-8 :
splitbrain-dokuwiki-d6c824b/inc/auth/000077500000000000000000000000001134327003500176335ustar00rootroot00000000000000splitbrain-dokuwiki-d6c824b/inc/auth/ad.class.php000066400000000000000000000143131134327003500220360ustar00rootroot00000000000000
 *  @link    http://www.nosq.com/blog/2005/08/ldap-activedirectory-and-dokuwiki/
 *  @author  Andreas Gohr 
 */

require_once(DOKU_INC.'inc/adLDAP.php');

class auth_ad extends auth_basic {
    var $cnf = null;
    var $opts = null;
    var $adldap = null;

    /**
     * Constructor
     */
    function auth_ad() {
        global $conf;
        $this->cnf = $conf['auth']['ad'];

        // ldap extension is needed
        if (!function_exists('ldap_connect')) {
            if ($this->cnf['debug'])
                msg("LDAP err: PHP LDAP extension not found.",-1);
            $this->success = false;
            return;
        }

        // Prepare SSO
        if($_SERVER['REMOTE_USER'] && $this->cnf['sso']){
             // remove possible NTLM domain
             list($dom,$usr) = explode('\\',$_SERVER['REMOTE_USER'],2);
             if(!$usr) $usr = $dom;

             // remove possible Kerberos domain
             list($usr,$dom) = explode('@',$usr);

             $dom = strtolower($dom);
             $_SERVER['REMOTE_USER'] = $usr;

             // we need to simulate a login
             if(empty($_COOKIE[DOKU_COOKIE])){
                 $_REQUEST['u'] = $_SERVER['REMOTE_USER'];
                 $_REQUEST['p'] = 'sso_only';
             }
        }

        // prepare adLDAP standard configuration
        $this->opts = $this->cnf;

        // add possible domain specific configuration
        if($dom && is_array($this->cnf[$dom])) foreach($this->cnf[$dom] as $key => $val){
            $this->opts[$key] = $val;
        }

        // handle multiple AD servers
        $this->opts['domain_controllers'] = explode(',',$this->opts['domain_controllers']);
        $this->opts['domain_controllers'] = array_map('trim',$this->opts['domain_controllers']);
        $this->opts['domain_controllers'] = array_filter($this->opts['domain_controllers']);

        // we currently just handle authentication, so no capabilities are set
    }

    /**
     * Check user+password [required auth function]
     *
     * Checks if the given user exists and the given
     * plaintext password is correct by trying to bind
     * to the LDAP server
     *
     * @author  James Van Lommel 
     * @return  bool
     */
    function checkPass($user, $pass){
        if($_SERVER['REMOTE_USER'] &&
           $_SERVER['REMOTE_USER'] == $user &&
           $this->cnf['sso']) return true;

        if(!$this->_init()) return false;
        return $this->adldap->authenticate($user, $pass);
    }

    /**
     * Return user info [required auth function]
     *
     * Returns info about the given user needs to contain
     * at least these fields:
     *
     * name string  full name of the user
     * mail string  email addres of the user
     * grps array   list of groups the user is in
     *
     * This LDAP specific function returns the following
     * addional fields:
     *
     * dn   string  distinguished name (DN)
     * uid  string  Posix User ID
     *
     * @author  James Van Lommel 
     */
   function getUserData($user){
        global $conf;
        if(!$this->_init()) return false;

        //get info for given user
        $result = $this->adldap->user_info($user);

        //general user info
        $info['name'] = $result[0]['displayname'][0];
        $info['mail'] = $result[0]['mail'][0];
        $info['uid']  = $result[0]['samaccountname'][0];
        $info['dn']   = $result[0]['dn'];

        // handle ActiveDirectory memberOf
        $info['grps'] = $this->adldap->user_groups($user,(bool) $this->opts['recursive_groups']);

        if (is_array($info['grps'])) {
            foreach ($info['grps'] as $ndx => $group) {
                $info['grps'][$ndx] = $this->cleanGroup($group);
            }
        }

        // always add the default group to the list of groups
        if(!is_array($info['grps']) || !in_array($conf['defaultgroup'],$info['grps'])){
            $info['grps'][] = $conf['defaultgroup'];
        }

        return $info;
    }

    /**
     * Make AD group names usable by DokuWiki.
     *
     * Removes backslashes ('\'), pound signs ('#'), and converts spaces to underscores.
     *
     * @author  James Van Lommel (jamesvl@gmail.com)
     */
    function cleanGroup($name) {
        $sName = str_replace('\\', '', $name);
        $sName = str_replace('#', '', $sName);
        $sName = preg_replace('[\s]', '_', $sName);
        return $sName;
    }

    /**
     * Sanitize user names
     */
    function cleanUser($name) {
        return $this->cleanGroup($name);
    }

    /**
     * Most values in LDAP are case-insensitive
     */
    function isCaseSensitive(){
        return false;
    }

    /**
     * Initialize the AdLDAP library and connect to the server
     */
    function _init(){
        if(!is_null($this->adldap)) return true;

        // connect
        try {
            $this->adldap = new adLDAP($this->opts);
            return true;
        } catch (adLDAPException $e) {
            $this->success = false;
            $this->adldap  = null;
        }
        return false;
    }
}

//Setup VIM: ex: et ts=4 enc=utf-8 :
splitbrain-dokuwiki-d6c824b/inc/auth/basic.class.php000066400000000000000000000311131134327003500225300ustar00rootroot00000000000000
 */

class auth_basic {

  var $success = true;


  /**
   * Posible things an auth backend module may be able to
   * do. The things a backend can do need to be set to true
   * in the constructor.
   */
  var $cando = array (
    'addUser'     => false, // can Users be created?
    'delUser'     => false, // can Users be deleted?
    'modLogin'    => false, // can login names be changed?
    'modPass'     => false, // can passwords be changed?
    'modName'     => false, // can real names be changed?
    'modMail'     => false, // can emails be changed?
    'modGroups'   => false, // can groups be changed?
    'getUsers'    => false, // can a (filtered) list of users be retrieved?
    'getUserCount'=> false, // can the number of users be retrieved?
    'getGroups'   => false, // can a list of available groups be retrieved?
    'external'    => false, // does the module do external auth checking?
    'logoff'      => false, // has the module some special logoff method?
  );


  /**
   * Constructor.
   *
   * Carry out sanity checks to ensure the object is
   * able to operate. Set capabilities in $this->cando
   * array here
   *
   * Set $this->success to false if checks fail
   *
   * @author  Christopher Smith 
   */
  function auth_basic() {
     // the base class constructor does nothing, derived class
    // constructors do the real work
  }

  /**
   * Capability check. [ DO NOT OVERRIDE ]
   *
   * Checks the capabilities set in the $this->cando array and
   * some pseudo capabilities (shortcutting access to multiple
   * ones)
   *
   * ususal capabilities start with lowercase letter
   * shortcut capabilities start with uppercase letter
   *
   * @author  Andreas Gohr 
   * @return  bool
   */
  function canDo($cap) {
    switch($cap){
      case 'Profile':
        // can at least one of the user's properties be changed?
        return ( $this->cando['modPass']  ||
                 $this->cando['modName']  ||
                 $this->cando['modMail'] );
        break;
      case 'UserMod':
        // can at least anything be changed?
        return ( $this->cando['modPass']   ||
                 $this->cando['modName']   ||
                 $this->cando['modMail']   ||
                 $this->cando['modLogin']  ||
                 $this->cando['modGroups'] ||
                 $this->cando['modMail'] );
        break;
      default:
        // print a helping message for developers
        if(!isset($this->cando[$cap])){
          msg("Check for unknown capability '$cap' - Do you use an outdated Plugin?",-1);
        }
        return $this->cando[$cap];
    }
  }

  /**
   * Trigger the AUTH_USERDATA_CHANGE event and call the modification function. [ DO NOT OVERRIDE ]
   *
   * You should use this function instead of calling createUser, modifyUser or
   * deleteUsers directly. The event handlers can prevent the modification, for
   * example for enforcing a user name schema.
   *
   * @author Gabriel Birke 
   * @param string $type Modification type ('create', 'modify', 'delete')
   * @param array $params Parameters for the createUser, modifyUser or deleteUsers method. The content of this array depends on the modification type
   * @return mixed Result from the modification function or false if an event handler has canceled the action
   */
  function triggerUserMod($type, $params)
  {
    $validTypes = array(
      'create' => 'createUser',
      'modify' => 'modifyUser',
      'delete' => 'deleteUsers'
    );
    if(empty($validTypes[$type]))
      return false;
    $eventdata = array('type' => $type, 'params' => $params, 'modification_result' => null);
    $evt = new Doku_Event('AUTH_USER_CHANGE', $eventdata);
    if ($evt->advise_before(true)) {
      $result = call_user_func_array(array($this, $validTypes[$type]), $params);
      $evt->data['modification_result'] = $result;
    }
    $evt->advise_after();
    unset($evt);
    return $result;
  }

  /**
   * Log off the current user [ OPTIONAL ]
   *
   * Is run in addition to the ususal logoff method. Should
   * only be needed when trustExternal is implemented.
   *
   * @see     auth_logoff()
   * @author  Andreas Gohr 
   */
  function logOff(){
  }

  /**
   * Do all authentication [ OPTIONAL ]
   *
   * Set $this->cando['external'] = true when implemented
   *
   * If this function is implemented it will be used to
   * authenticate a user - all other DokuWiki internals
   * will not be used for authenticating, thus
   * implementing the checkPass() function is not needed
   * anymore.
   *
   * The function can be used to authenticate against third
   * party cookies or Apache auth mechanisms and replaces
   * the auth_login() function
   *
   * The function will be called with or without a set
   * username. If the Username is given it was called
   * from the login form and the given credentials might
   * need to be checked. If no username was given it
   * the function needs to check if the user is logged in
   * by other means (cookie, environment).
   *
   * The function needs to set some globals needed by
   * DokuWiki like auth_login() does.
   *
   * @see auth_login()
   * @author  Andreas Gohr 
   *
   * @param   string  $user    Username
   * @param   string  $pass    Cleartext Password
   * @param   bool    $sticky  Cookie should not expire
   * @return  bool             true on successful auth
   */
  function trustExternal($user,$pass,$sticky=false){
#    // some example:
#
#    global $USERINFO;
#    global $conf;
#    $sticky ? $sticky = true : $sticky = false; //sanity check
#
#    // do the checking here
#
#    // set the globals if authed
#    $USERINFO['name'] = 'FIXME';
#    $USERINFO['mail'] = 'FIXME';
#    $USERINFO['grps'] = array('FIXME');
#    $_SERVER['REMOTE_USER'] = $user;
#    $_SESSION[DOKU_COOKIE]['auth']['user'] = $user;
#    $_SESSION[DOKU_COOKIE]['auth']['pass'] = $pass;
#    $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
#    return true;
  }

  /**
   * Check user+password [ MUST BE OVERRIDDEN ]
   *
   * Checks if the given user exists and the given
   * plaintext password is correct
   *
   * May be ommited if trustExternal is used.
   *
   * @author  Andreas Gohr 
   * @return  bool
   */
  function checkPass($user,$pass){
    msg("no valid authorisation system in use", -1);
    return false;
  }

  /**
   * Return user info [ MUST BE OVERRIDDEN ]
   *
   * Returns info about the given user needs to contain
   * at least these fields:
   *
   * name string  full name of the user
   * mail string  email addres of the user
   * grps array   list of groups the user is in
   *
   * @author  Andreas Gohr 
   * @return  array containing user data or false
   */
  function getUserData($user) {
    if(!$this->cando['external']) msg("no valid authorisation system in use", -1);
    return false;
  }

  /**
   * Create a new User [implement only where required/possible]
   *
   * Returns false if the user already exists, null when an error
   * occurred and true if everything went well.
   *
   * The new user HAS TO be added to the default group by this
   * function!
   *
   * Set addUser capability when implemented
   *
   * @author  Andreas Gohr 
   */
  function createUser($user,$pass,$name,$mail,$grps=null){
    msg("authorisation method does not allow creation of new users", -1);
    return null;
  }

  /**
   * Modify user data [implement only where required/possible]
   *
   * Set the mod* capabilities according to the implemented features
   *
   * @author  Chris Smith 
   * @param   $user      nick of the user to be changed
   * @param   $changes   array of field/value pairs to be changed (password will be clear text)
   * @return  bool
   */
  function modifyUser($user, $changes) {
    msg("authorisation method does not allow modifying of user data", -1);
    return false;
  }

  /**
   * Delete one or more users [implement only where required/possible]
   *
   * Set delUser capability when implemented
   *
   * @author  Chris Smith 
   * @param   array  $users
   * @return  int    number of users deleted
   */
  function deleteUsers($users) {
    msg("authorisation method does not allow deleting of users", -1);
    return false;
  }

  /**
   * Return a count of the number of user which meet $filter criteria
   * [should be implemented whenever retrieveUsers is implemented]
   *
   * Set getUserCount capability when implemented
   *
   * @author  Chris Smith 
   */
  function getUserCount($filter=array()) {
    msg("authorisation method does not provide user counts", -1);
    return 0;
  }

  /**
   * Bulk retrieval of user data [implement only where required/possible]
   *
   * Set getUsers capability when implemented
   *
   * @author  Chris Smith 
   * @param   start     index of first user to be returned
   * @param   limit     max number of users to be returned
   * @param   filter    array of field/pattern pairs, null for no filter
   * @return  array of userinfo (refer getUserData for internal userinfo details)
   */
  function retrieveUsers($start=0,$limit=-1,$filter=null) {
    msg("authorisation method does not support mass retrieval of user data", -1);
    return array();
  }

  /**
   * Define a group [implement only where required/possible]
   *
   * Set addGroup capability when implemented
   *
   * @author  Chris Smith 
   * @return  bool
   */
  function addGroup($group) {
    msg("authorisation method does not support independent group creation", -1);
    return false;
  }

  /**
   * Retrieve groups [implement only where required/possible]
   *
   * Set getGroups capability when implemented
   *
   * @author  Chris Smith 
   * @return  array
   */
  function retrieveGroups($start=0,$limit=0) {
    msg("authorisation method does not support group list retrieval", -1);
    return array();
  }

  /**
   * Return case sensitivity of the backend [OPTIONAL]
   *
   * When your backend is caseinsensitive (eg. you can login with USER and
   * user) then you need to overwrite this method and return false
   */
  function isCaseSensitive(){
    return true;
  }

  /**
   * Sanitize a given username [OPTIONAL]
   *
   * This function is applied to any user name that is given to
   * the backend and should also be applied to any user name within
   * the backend before returning it somewhere.
   *
   * This should be used to enforce username restrictions.
   *
   * @author Andreas Gohr 
   * @param string $user - username
   * @param string - the cleaned username
   */
  function cleanUser($user){
    return $user;
  }

  /**
   * Sanitize a given groupname [OPTIONAL]
   *
   * This function is applied to any groupname that is given to
   * the backend and should also be applied to any groupname within
   * the backend before returning it somewhere.
   *
   * This should be used to enforce groupname restrictions.
   *
   * Groupnames are to be passed without a leading '@' here.
   *
   * @author Andreas Gohr 
   * @param string $group - groupname
   * @param string - the cleaned groupname
   */
  function cleanGroup($group){
    return $group;
  }


  /**
   * Check Session Cache validity [implement only where required/possible]
   *
   * DokuWiki caches user info in the user's session for the timespan defined
   * in $conf['auth_security_timeout'].
   *
   * This makes sure slow authentication backends do not slow down DokuWiki.
   * This also means that changes to the user database will not be reflected
   * on currently logged in users.
   *
   * To accommodate for this, the user manager plugin will touch a reference
   * file whenever a change is submitted. This function compares the filetime
   * of this reference file with the time stored in the session.
   *
   * This reference file mechanism does not reflect changes done directly in
   * the backend's database through other means than the user manager plugin.
   *
   * Fast backends might want to return always false, to force rechecks on
   * each page load. Others might want to use their own checking here. If
   * unsure, do not override.
   *
   * @param  string $user - The username
   * @author Andreas Gohr 
   * @return bool
   */
  function useSessionCache($user){
    global $conf;
    return ($_SESSION[DOKU_COOKIE]['auth']['time'] >= @filemtime($conf['cachedir'].'/sessionpurge'));
  }

}
//Setup VIM: ex: et ts=2 enc=utf-8 :
splitbrain-dokuwiki-d6c824b/inc/auth/ldap.class.php000066400000000000000000000320151134327003500223710ustar00rootroot00000000000000
 * @author    Chris Smith 
 */

class auth_ldap extends auth_basic {
    var $cnf = null;
    var $con = null;
    var $bound = 0; // 0: anonymous, 1: user, 2: superuser

    /**
     * Constructor
     */
    function auth_ldap(){
        global $conf;
        $this->cnf = $conf['auth']['ldap'];

        // ldap extension is needed
        if(!function_exists('ldap_connect')) {
            if ($this->cnf['debug'])
                msg("LDAP err: PHP LDAP extension not found.",-1,__LINE__,__FILE__);
            $this->success = false;
            return;
        }

        if(empty($this->cnf['groupkey'])) $this->cnf['groupkey'] = 'cn';

        // auth_ldap currently just handles authentication, so no
        // capabilities are set
    }

    /**
     * Check user+password
     *
     * Checks if the given user exists and the given
     * plaintext password is correct by trying to bind
     * to the LDAP server
     *
     * @author  Andreas Gohr 
     * @return  bool
     */
    function checkPass($user,$pass){
        // reject empty password
        if(empty($pass)) return false;
        if(!$this->_openLDAP()) return false;

        // indirect user bind
        if($this->cnf['binddn'] && $this->cnf['bindpw']){
            // use superuser credentials
            if(!@ldap_bind($this->con,$this->cnf['binddn'],$this->cnf['bindpw'])){
                if($this->cnf['debug'])
                    msg('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
                return false;
            }
            $this->bound = 2;
        }else if($this->cnf['binddn'] &&
                 $this->cnf['usertree'] &&
                 $this->cnf['userfilter']) {
            // special bind string
            $dn = $this->_makeFilter($this->cnf['binddn'],
                                     array('user'=>$user,'server'=>$this->cnf['server']));

        }else if(strpos($this->cnf['usertree'], '%{user}')) {
            // direct user bind
            $dn = $this->_makeFilter($this->cnf['usertree'],
                                     array('user'=>$user,'server'=>$this->cnf['server']));

        }else{
            // Anonymous bind
            if(!@ldap_bind($this->con)){
                msg("LDAP: can not bind anonymously",-1);
                if($this->cnf['debug'])
                    msg('LDAP anonymous bind: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
                return false;
            }
        }

        // Try to bind to with the dn if we have one.
        if(!empty($dn)) {
            // User/Password bind
            if(!@ldap_bind($this->con,$dn,$pass)){
                if($this->cnf['debug']){
                    msg("LDAP: bind with $dn failed", -1,__LINE__,__FILE__);
                    msg('LDAP user dn bind: '.htmlspecialchars(ldap_error($this->con)),0);
                }
                return false;
            }
            $this->bound = 1;
            return true;
        }else{
            // See if we can find the user
            $info = $this->getUserData($user,true);
            if(empty($info['dn'])) {
                return false;
            } else {
                $dn = $info['dn'];
            }

            // Try to bind with the dn provided
            if(!@ldap_bind($this->con,$dn,$pass)){
                if($this->cnf['debug']){
                    msg("LDAP: bind with $dn failed", -1,__LINE__,__FILE__);
                    msg('LDAP user bind: '.htmlspecialchars(ldap_error($this->con)),0);
                }
                return false;
            }
            $this->bound = 1;
            return true;
        }

        return false;
    }

    /**
     * Return user info
     *
     * Returns info about the given user needs to contain
     * at least these fields:
     *
     * name string  full name of the user
     * mail string  email addres of the user
     * grps array   list of groups the user is in
     *
     * This LDAP specific function returns the following
     * addional fields:
     *
     * dn     string  distinguished name (DN)
     * uid    string  Posix User ID
     * inbind bool    for internal use - avoid loop in binding
     *
     * @author  Andreas Gohr 
     * @author  Trouble
     * @author  Dan Allen 
     * @author  
     * @author  Stephane Chazelas 
     * @return  array containing user data or false
     */
    function getUserData($user,$inbind=false) {
        global $conf;
        if(!$this->_openLDAP()) return false;

        // force superuser bind if wanted and not bound as superuser yet
        if($this->cnf['binddn'] && $this->cnf['bindpw'] && $this->bound < 2){
            // use superuser credentials
            if(!@ldap_bind($this->con,$this->cnf['binddn'],$this->cnf['bindpw'])){
                if($this->cnf['debug'])
                    msg('LDAP bind as superuser: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
                return false;
            }
            $this->bound = 2;
        }elseif($this->bound == 0 && !$inbind) {
            // in some cases getUserData is called outside the authentication workflow
            // eg. for sending email notification on subscribed pages. This data might not
            // be accessible anonymously, so we try to rebind the current user here
            $pass = PMA_blowfish_decrypt($_SESSION[DOKU_COOKIE]['auth']['pass'],auth_cookiesalt());
            $this->checkPass($_SESSION[DOKU_COOKIE]['auth']['user'], $pass);
        }

        $info['user']   = $user;
        $info['server'] = $this->cnf['server'];

        //get info for given user
        $base = $this->_makeFilter($this->cnf['usertree'], $info);
        if(!empty($this->cnf['userfilter'])) {
            $filter = $this->_makeFilter($this->cnf['userfilter'], $info);
        } else {
            $filter = "(ObjectClass=*)";
        }

        $sr     = @ldap_search($this->con, $base, $filter);
        $result = @ldap_get_entries($this->con, $sr);
        if($this->cnf['debug']){
            msg('LDAP user search: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
            msg('LDAP search at: '.htmlspecialchars($base.' '.$filter),0,__LINE__,__FILE__);
        }

        // Don't accept more or less than one response
        if(!is_array($result) || $result['count'] != 1){
            return false; //user not found
        }

        $user_result = $result[0];
        ldap_free_result($sr);

        // general user info
        $info['dn']   = $user_result['dn'];
        $info['gid']  = $user_result['gidnumber'][0];
        $info['mail'] = $user_result['mail'][0];
        $info['name'] = $user_result['cn'][0];
        $info['grps'] = array();

        // overwrite if other attribs are specified.
        if(is_array($this->cnf['mapping'])){
            foreach($this->cnf['mapping'] as $localkey => $key) {
                if(is_array($key)) {
                    // use regexp to clean up user_result
                    list($key, $regexp) = each($key);
                    if($user_result[$key]) foreach($user_result[$key] as $grp){
                        if (preg_match($regexp,$grp,$match)) {
                            if($localkey == 'grps') {
                                $info[$localkey][] = $match[1];
                            } else {
                                $info[$localkey] = $match[1];
                            }
                        }
                    }
                } else {
                    $info[$localkey] = $user_result[$key][0];
                }
            }
        }
        $user_result = array_merge($info,$user_result);

        //get groups for given user if grouptree is given
        if ($this->cnf['grouptree'] && $this->cnf['groupfilter']) {
            $base   = $this->_makeFilter($this->cnf['grouptree'], $user_result);
            $filter = $this->_makeFilter($this->cnf['groupfilter'], $user_result);
            $sr = @ldap_search($this->con, $base, $filter, array($this->cnf['groupkey']));
            if(!$sr){
                msg("LDAP: Reading group memberships failed",-1);
                if($this->cnf['debug']){
                    msg('LDAP group search: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
                    msg('LDAP search at: '.htmlspecialchars($base.' '.$filter),0,__LINE__,__FILE__);
                }
                return false;
            }
            $result = ldap_get_entries($this->con, $sr);
            ldap_free_result($sr);

            if(is_array($result)) foreach($result as $grp){
                if(!empty($grp[$this->cnf['groupkey']][0])){
                    if($this->cnf['debug'])
                        msg('LDAP usergroup: '.htmlspecialchars($grp[$this->cnf['groupkey']][0]),0,__LINE__,__FILE__);
                    $info['grps'][] = $grp[$this->cnf['groupkey']][0];
                }
            }
        }

        // always add the default group to the list of groups
        if(!in_array($conf['defaultgroup'],$info['grps'])){
            $info['grps'][] = $conf['defaultgroup'];
        }
        return $info;
    }

    /**
     * Most values in LDAP are case-insensitive
     */
    function isCaseSensitive(){
        return false;
    }

    /**
     * Make LDAP filter strings.
     *
     * Used by auth_getUserData to make the filter
     * strings for grouptree and groupfilter
     *
     * filter      string  ldap search filter with placeholders
     * placeholders array   array with the placeholders
     *
     * @author  Troels Liebe Bentsen 
     * @return  string
     */
    function _makeFilter($filter, $placeholders) {
        preg_match_all("/%{([^}]+)/", $filter, $matches, PREG_PATTERN_ORDER);
        //replace each match
        foreach ($matches[1] as $match) {
            //take first element if array
            if(is_array($placeholders[$match])) {
                $value = $placeholders[$match][0];
            } else {
                $value = $placeholders[$match];
            }
            $value = $this->_filterEscape($value);
            $filter = str_replace('%{'.$match.'}', $value, $filter);
        }
        return $filter;
    }

    /**
     * Escape a string to be used in a LDAP filter
     *
     * Ported from Perl's Net::LDAP::Util escape_filter_value
     *
     * @author Andreas Gohr
     */
    function _filterEscape($string){
        return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e',
                            '"\\\\\".join("",unpack("H2","$1"))',
                            $string);
    }

    /**
     * Opens a connection to the configured LDAP server and sets the wanted
     * option on the connection
     *
     * @author  Andreas Gohr 
     */
    function _openLDAP(){
        if($this->con) return true; // connection already established

        $this->bound = 0;

        $port = ($this->cnf['port']) ? $this->cnf['port'] : 389;
        $this->con = @ldap_connect($this->cnf['server'],$port);
        if(!$this->con){
            msg("LDAP: couldn't connect to LDAP server",-1);
            return false;
        }

        //set protocol version and dependend options
        if($this->cnf['version']){
            if(!@ldap_set_option($this->con, LDAP_OPT_PROTOCOL_VERSION,
                                 $this->cnf['version'])){
                msg('Setting LDAP Protocol version '.$this->cnf['version'].' failed',-1);
                if($this->cnf['debug'])
                    msg('LDAP version set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
            }else{
                //use TLS (needs version 3)
                if($this->cnf['starttls']) {
                    if (!@ldap_start_tls($this->con)){
                        msg('Starting TLS failed',-1);
                        if($this->cnf['debug'])
                            msg('LDAP TLS set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
                    }
                }
                // needs version 3
                if(isset($this->cnf['referrals'])) {
                    if(!@ldap_set_option($this->con, LDAP_OPT_REFERRALS,
                       $this->cnf['referrals'])){
                        msg('Setting LDAP referrals to off failed',-1);
                        if($this->cnf['debug'])
                            msg('LDAP referal set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
                    }
                }
            }
        }

        //set deref mode
        if($this->cnf['deref']){
            if(!@ldap_set_option($this->con, LDAP_OPT_DEREF, $this->cnf['deref'])){
                msg('Setting LDAP Deref mode '.$this->cnf['deref'].' failed',-1);
                if($this->cnf['debug'])
                    msg('LDAP deref set: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__);
            }
        }

        return true;
    }
}

//Setup VIM: ex: et ts=4 enc=utf-8 :
splitbrain-dokuwiki-d6c824b/inc/auth/mysql.class.php000066400000000000000000000776621134327003500226370ustar00rootroot00000000000000
 * @author     Chris Smith 
 * @author     Matthias Grimm 
*/

define('DOKU_AUTH', dirname(__FILE__));
require_once(DOKU_AUTH.'/basic.class.php');

class auth_mysql extends auth_basic {

    var $dbcon        = 0;
    var $dbver        = 0;    // database version
    var $dbrev        = 0;    // database revision
    var $dbsub        = 0;    // database subrevision
    var $cnf          = null;
    var $defaultgroup = "";

    /**
     * Constructor
     *
     * checks if the mysql interface is available, otherwise it will
     * set the variable $success of the basis class to false
     *
     * @author Matthias Grimm 
     */
    function auth_mysql() {
      global $conf;
      $this->cnf          = $conf['auth']['mysql'];

      if (method_exists($this, 'auth_basic'))
        parent::auth_basic();

      if(!function_exists('mysql_connect')) {
        if ($this->cnf['debug'])
          msg("MySQL err: PHP MySQL extension not found.",-1,__LINE__,__FILE__);
        $this->success = false;
        return;
      }

      // default to UTF-8, you rarely want something else
      if(!isset($this->cnf['charset'])) $this->cnf['charset'] = 'utf8';

      $this->defaultgroup = $conf['defaultgroup'];

      // set capabilities based upon config strings set
      if (empty($this->cnf['server']) || empty($this->cnf['user']) ||
          empty($this->cnf['password']) || empty($this->cnf['database'])){
        if ($this->cnf['debug'])
          msg("MySQL err: insufficient configuration.",-1,__LINE__,__FILE__);
        $this->success = false;
        return;
      }

      $this->cando['addUser']      = $this->_chkcnf(array('getUserInfo',
                                                          'getGroups',
                                                          'addUser',
                                                          'getUserID',
                                                          'getGroupID',
                                                          'addGroup',
                                                          'addUserGroup'),true);
      $this->cando['delUser']      = $this->_chkcnf(array('getUserID',
                                                          'delUser',
                                                          'delUserRefs'),true);
      $this->cando['modLogin']     = $this->_chkcnf(array('getUserID',
                                                          'updateUser',
                                                          'UpdateTarget'),true);
      $this->cando['modPass']      = $this->cando['modLogin'];
      $this->cando['modName']      = $this->cando['modLogin'];
      $this->cando['modMail']      = $this->cando['modLogin'];
      $this->cando['modGroups']    = $this->_chkcnf(array('getUserID',
                                                          'getGroups',
                                                          'getGroupID',
                                                          'addGroup',
                                                          'addUserGroup',
                                                          'delGroup',
                                                          'getGroupID',
                                                          'delUserGroup'),true);
      /* getGroups is not yet supported
      $this->cando['getGroups']    = $this->_chkcnf(array('getGroups',
                                                          'getGroupID'),false); */
      $this->cando['getUsers']     = $this->_chkcnf(array('getUsers',
                                                          'getUserInfo',
                                                          'getGroups'),false);
      $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'),false);
    }

    /**
     * Check if the given config strings are set
     *
     * @author  Matthias Grimm 
     * @return  bool
     */
    function _chkcnf($keys, $wop=false){
      foreach ($keys as $key){
        if (empty($this->cnf[$key])) return false;
      }

      /* write operation and lock array filled with tables names? */
      if ($wop && (!is_array($this->cnf['TablesToLock']) ||
                   !count($this->cnf['TablesToLock']))){
        return false;
      }

      return true;
    }

    /**
     * Checks if the given user exists and the given plaintext password
     * is correct. Furtheron it might be checked wether the user is
     * member of the right group
     *
     * Depending on which SQL string is defined in the config, password
     * checking is done here (getpass) or by the database (passcheck)
     *
     * @param  $user  user who would like access
     * @param  $pass  user's clear text password to check
     * @return bool
     *
     * @author  Andreas Gohr 
     * @author  Matthias Grimm 
     */
    function checkPass($user,$pass){
      $rc  = false;

      if($this->_openDB()) {
        $sql    = str_replace('%{user}',$this->_escape($user),$this->cnf['checkPass']);
        $sql    = str_replace('%{pass}',$this->_escape($pass),$sql);
        $sql    = str_replace('%{dgroup}',$this->_escape($this->defaultgroup),$sql);
        $result = $this->_queryDB($sql);

        if($result !== false && count($result) == 1) {
          if($this->cnf['forwardClearPass'] == 1)
            $rc = true;
          else
            $rc = auth_verifyPassword($pass,$result[0]['pass']);
        }
        $this->_closeDB();
      }
      return $rc;
    }

    /**
     * [public function]
     *
     * Returns info about the given user needs to contain
     * at least these fields:
     *   name  string  full name of the user
     *   mail  string  email addres of the user
     *   grps  array   list of groups the user is in
     *
     * @param $user   user's nick to get data for
     *
     * @author  Andreas Gohr 
     * @author  Matthias Grimm 
     */
    function getUserData($user){
      if($this->_openDB()) {
        $this->_lockTables("READ");
        $info = $this->_getUserInfo($user);
        $this->_unlockTables();
        $this->_closeDB();
      } else
        $info = false;
      return $info;
    }

    /**
     * [public function]
     *
     * Create a new User. Returns false if the user already exists,
     * null when an error occurred and true if everything went well.
     *
     * The new user will be added to the default group by this
     * function if grps are not specified (default behaviour).
     *
     * @param $user  nick of the user
     * @param $pwd   clear text password
     * @param $name  full name of the user
     * @param $mail  email address
     * @param $grps  array of groups the user should become member of
     *
     * @author  Andreas Gohr 
     * @author  Chris Smith 
     * @author  Matthias Grimm 
     */
    function createUser($user,$pwd,$name,$mail,$grps=null){
      if($this->_openDB()) {
        if (($info = $this->_getUserInfo($user)) !== false)
          return false;  // user already exists

        // set defaultgroup if no groups were given
        if ($grps == null)
          $grps = array($this->defaultgroup);

        $this->_lockTables("WRITE");
        $pwd = $this->cnf['forwardClearPass'] ? $pwd : auth_cryptPassword($pwd);
        $rc = $this->_addUser($user,$pwd,$name,$mail,$grps);
        $this->_unlockTables();
        $this->_closeDB();
        if ($rc) return true;
      }
      return null;  // return error
    }

    /**
     * Modify user data [public function]
     *
     * An existing user dataset will be modified. Changes are given in an array.
     *
     * The dataset update will be rejected if the user name should be changed
     * to an already existing one.
     *
     * The password must be provides unencrypted. Pasword cryption is done
     * automatically if configured.
     *
     * If one or more groups could't be updated, an error would be set. In
     * this case the dataset might already be changed and we can't rollback
     * the changes. Transactions would be really usefull here.
     *
     * modifyUser() may be called without SQL statements defined that are
     * needed to change group membership (for example if only the user profile
     * should be modified). In this case we asure that we don't touch groups
     * even $changes['grps'] is set by mistake.
     *
     * @param   $user     nick of the user to be changed
     * @param   $changes  array of field/value pairs to be changed (password
     *                    will be clear text)
     * @return  bool      true on success, false on error
     *
     * @author  Chris Smith 
     * @author  Matthias Grimm 
     */
    function modifyUser($user, $changes) {
      $rc = false;

      if (!is_array($changes) || !count($changes))
        return true;  // nothing to change

      if($this->_openDB()) {
        $this->_lockTables("WRITE");

        if (($uid = $this->_getUserID($user))) {
          $rc = $this->_updateUserInfo($changes, $uid);

          if ($rc && isset($changes['grps']) && $this->cando['modGroups']) {
            $groups = $this->_getGroups($user);
            $grpadd = array_diff($changes['grps'], $groups);
            $grpdel = array_diff($groups, $changes['grps']);

            foreach($grpadd as $group)
              if (($this->_addUserToGroup($user, $group, 1)) == false)
                $rc = false;

            foreach($grpdel as $group)
              if (($this->_delUserFromGroup($user, $group)) == false)
                $rc = false;
          }
        }

        $this->_unlockTables();
        $this->_closeDB();
      }
      return $rc;
    }

    /**
     * [public function]
     *
     * Remove one or more users from the list of registered users
     *
     * @param   array  $users   array of users to be deleted
     * @return  int             the number of users deleted
     *
     * @author  Christopher Smith 
     * @author  Matthias Grimm 
     */
    function deleteUsers($users) {
      $count = 0;

      if($this->_openDB()) {
        if (is_array($users) && count($users)) {
          $this->_lockTables("WRITE");
          foreach ($users as $user) {
            if ($this->_delUser($user))
              $count++;
          }
          $this->_unlockTables();
        }
        $this->_closeDB();
      }
      return $count;
    }

    /**
     * [public function]
     *
     * Counts users which meet certain $filter criteria.
     *
     * @param  array  $filter  filter criteria in item/pattern pairs
     * @return count of found users.
     *
     * @author  Matthias Grimm 
     */
    function getUserCount($filter=array()) {
      $rc = 0;

      if($this->_openDB()) {
        $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);

        if ($this->dbver >= 4) {
          $sql = substr($sql, 6);  /* remove 'SELECT' or 'select' */
          $sql = "SELECT SQL_CALC_FOUND_ROWS".$sql." LIMIT 1";
          $this->_queryDB($sql);
          $result = $this->_queryDB("SELECT FOUND_ROWS()");
          $rc = $result[0]['FOUND_ROWS()'];
        } else if (($result = $this->_queryDB($sql)))
          $rc = count($result);

        $this->_closeDB();
      }
      return $rc;
    }

    /**
     * Bulk retrieval of user data. [public function]
     *
     * @param   first     index of first user to be returned
     * @param   limit     max number of users to be returned
     * @param   filter    array of field/pattern pairs
     * @return  array of userinfo (refer getUserData for internal userinfo details)
     *
     * @author  Matthias Grimm 
     */
    function retrieveUsers($first=0,$limit=10,$filter=array()) {
      $out   = array();

      if($this->_openDB()) {
        $this->_lockTables("READ");
        $sql  = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
        $sql .= " ".$this->cnf['SortOrder']." LIMIT $first, $limit";
        $result = $this->_queryDB($sql);

        if (!empty($result)) {
          foreach ($result as $user)
            if (($info = $this->_getUserInfo($user['user'])))
              $out[$user['user']] = $info;
        }

        $this->_unlockTables();
        $this->_closeDB();
      }
      return $out;
    }

    /**
     * Give user membership of a group [public function]
     *
     * @param   $user
     * @param   $group
     * @return  bool    true on success, false on error
     *
     * @author  Matthias Grimm 
     */
    function joinGroup($user, $group) {
      $rc = false;

      if ($this->_openDB()) {
        $this->_lockTables("WRITE");
        $rc  = $this->_addUserToGroup($user, $group);
        $this->_unlockTables();
        $this->_closeDB();
      }
      return $rc;
    }

    /**
     * Remove user from a group [public function]
     *
     * @param   $user    user that leaves a group
     * @param   $group   group to leave
     * @return  bool
     *
     * @author  Matthias Grimm 
     */
    function leaveGroup($user, $group) {
      $rc = false;

      if ($this->_openDB()) {
        $this->_lockTables("WRITE");
        $uid = $this->_getUserID($user);
        $rc  = $this->_delUserFromGroup($user, $group);
        $this->_unlockTables();
        $this->_closeDB();
      }
      return $rc;
    }

    /**
     * MySQL is case-insensitive
     */
    function isCaseSensitive(){
        return false;
    }

    /**
     * Adds a user to a group.
     *
     * If $force is set to '1' non existing groups would be created.
     *
     * The database connection must already be established. Otherwise
     * this function does nothing and returns 'false'. It is strongly
     * recommended to call this function only after all participating
     * tables (group and usergroup) have been locked.
     *
     * @param   $user    user to add to a group
     * @param   $group   name of the group
     * @param   $force   '1' create missing groups
     * @return  bool     'true' on success, 'false' on error
     *
     * @author Matthias Grimm 
     */
    function _addUserToGroup($user, $group, $force=0) {
      $newgroup = 0;

      if (($this->dbcon) && ($user)) {
        $gid = $this->_getGroupID($group);
        if (!$gid) {
          if ($force) {  // create missing groups
            $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['addGroup']);
            $gid = $this->_modifyDB($sql);
            $newgroup = 1;  // group newly created
          }
          if (!$gid) return false; // group didn't exist and can't be created
        }

        $sql = $this->cnf['addUserGroup'];
        if(strpos($sql,'%{uid}') !== false){
            $uid = $this->_getUserID($user);
            $sql = str_replace('%{uid}',  $this->_escape($uid),$sql);
        }
        $sql = str_replace('%{user}', $this->_escape($user),$sql);
        $sql = str_replace('%{gid}',  $this->_escape($gid),$sql);
        $sql = str_replace('%{group}',$this->_escape($group),$sql);
        if ($this->_modifyDB($sql) !== false) return true;

        if ($newgroup) { // remove previously created group on error
          $sql = str_replace('%{gid}',  $this->_escape($gid),$this->cnf['delGroup']);
          $sql = str_replace('%{group}',$this->_escape($group),$sql);
          $this->_modifyDB($sql);
        }
      }
      return false;
    }

    /**
     * Remove user from a group
     *
     * @param   $user    user that leaves a group
     * @param   $group   group to leave
     * @return  bool     true on success, false on error
     *
     * @author  Matthias Grimm 
     */
    function _delUserFromGroup($user, $group) {
      $rc = false;


      if (($this->dbcon) && ($user)) {
        $sql = $this->cnf['delUserGroup'];
        if(strpos($sql,'%{uid}') !== false){
            $uid = $this->_getUserID($user);
            $sql = str_replace('%{uid}',  $this->_escape($uid),$sql);
        }
        $gid = $this->_getGroupID($group);
        if ($gid) {
          $sql = str_replace('%{user}', $this->_escape($user),$sql);
          $sql = str_replace('%{gid}',  $this->_escape($gid),$sql);
          $sql = str_replace('%{group}',$this->_escape($group),$sql);
          $rc  = $this->_modifyDB($sql) == 0 ? true : false;
        }
      }
      return $rc;
    }

    /**
     * Retrieves a list of groups the user is a member off.
     *
     * The database connection must already be established
     * for this function to work. Otherwise it will return
     * 'false'.
     *
     * @param  $user  user whose groups should be listed
     * @return bool   false on error
     * @return array  array containing all groups on success
     *
     * @author Matthias Grimm 
     */
    function _getGroups($user) {
      $groups = array();

      if($this->dbcon) {
        $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getGroups']);
        $result = $this->_queryDB($sql);

        if($result !== false && count($result)) {
          foreach($result as $row)
            $groups[] = $row['group'];
        }
        return $groups;
      }
      return false;
    }

    /**
     * Retrieves the user id of a given user name
     *
     * The database connection must already be established
     * for this function to work. Otherwise it will return
     * 'false'.
     *
     * @param  $user   user whose id is desired
     * @return user id
     *
     * @author Matthias Grimm 
     */
    function _getUserID($user) {
      if($this->dbcon) {
        $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserID']);
        $result = $this->_queryDB($sql);
        return $result === false ? false : $result[0]['id'];
      }
      return false;
    }

    /**
     * Adds a new User to the database.
     *
     * The database connection must already be established
     * for this function to work. Otherwise it will return
     * 'false'.
     *
     * @param  $user  login of the user
     * @param  $pwd   encrypted password
     * @param  $name  full name of the user
     * @param  $mail  email address
     * @param  $grps  array of groups the user should become member of
     * @return bool
     *
     * @author  Andreas Gohr 
     * @author  Chris Smith 
     * @author  Matthias Grimm 
     */
    function _addUser($user,$pwd,$name,$mail,$grps){
      if($this->dbcon && is_array($grps)) {
        $sql = str_replace('%{user}', $this->_escape($user),$this->cnf['addUser']);
        $sql = str_replace('%{pass}', $this->_escape($pwd),$sql);
        $sql = str_replace('%{name}', $this->_escape($name),$sql);
        $sql = str_replace('%{email}',$this->_escape($mail),$sql);
        $uid = $this->_modifyDB($sql);

        if ($uid) {
          foreach($grps as $group) {
            $gid = $this->_addUserToGroup($user, $group, 1);
            if ($gid === false) break;
          }

          if ($gid) return true;
          else {
            /* remove the new user and all group relations if a group can't
             * be assigned. Newly created groups will remain in the database
             * and won't be removed. This might create orphaned groups but
             * is not a big issue so we ignore this problem here.
             */
            $this->_delUser($user);
            if ($this->cnf['debug'])
              msg ("MySQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
          }
        }
      }
      return false;
    }

    /**
     * Deletes a given user and all his group references.
     *
     * The database connection must already be established
     * for this function to work. Otherwise it will return
     * 'false'.
     *
     * @param  $user   user whose id is desired
     * @return bool
     *
     * @author Matthias Grimm 
     */
    function _delUser($user) {
      if($this->dbcon) {
        $uid = $this->_getUserID($user);
        if ($uid) {
          $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUserRefs']);
          $this->_modifyDB($sql);
          $sql = str_replace('%{uid}',$this->_escape($uid),$this->cnf['delUser']);
          $sql = str_replace('%{user}',  $this->_escape($user),$sql);
          $this->_modifyDB($sql);
          return true;
        }
      }
      return false;
    }

    /**
     * getUserInfo
     *
     * Gets the data for a specific user The database connection
     * must already be established for this function to work.
     * Otherwise it will return 'false'.
     *
     * @param  $user  user's nick to get data for
     * @return bool   false on error
     * @return array  user info on success
     *
     * @author Matthias Grimm 
     */
    function _getUserInfo($user){
      $sql = str_replace('%{user}',$this->_escape($user),$this->cnf['getUserInfo']);
      $result = $this->_queryDB($sql);
      if($result !== false && count($result)) {
        $info = $result[0];
        $info['grps'] = $this->_getGroups($user);
        return $info;
      }
      return false;
    }

    /**
     * Updates the user info in the database
     *
     * Update a user data structure in the database according changes
     * given in an array. The user name can only be changes if it didn't
     * exists already. If the new user name exists the update procedure
     * will be aborted. The database keeps unchanged.
     *
     * The database connection has already to be established for this
     * function to work. Otherwise it will return 'false'.
     *
     * The password will be crypted if necessary.
     *
     * @param  $changes  array of items to change as pairs of item and value
     * @param  $uid      user id of dataset to change, must be unique in DB
     * @return true on success or false on error
     *
     * @author Matthias Grimm 
     */
    function _updateUserInfo($changes, $uid) {
      $sql  = $this->cnf['updateUser']." ";
      $cnt = 0;
      $err = 0;

      if($this->dbcon) {
        foreach ($changes as $item => $value) {
          if ($item == 'user') {
            if (($this->_getUserID($changes['user']))) {
              $err = 1; /* new username already exists */
              break;    /* abort update */
            }
            if ($cnt++ > 0) $sql .= ", ";
            $sql .= str_replace('%{user}',$value,$this->cnf['UpdateLogin']);
          } else if ($item == 'name') {
            if ($cnt++ > 0) $sql .= ", ";
            $sql .= str_replace('%{name}',$value,$this->cnf['UpdateName']);
          } else if ($item == 'pass') {
            if (!$this->cnf['forwardClearPass'])
              $value = auth_cryptPassword($value);
            if ($cnt++ > 0) $sql .= ", ";
            $sql .= str_replace('%{pass}',$value,$this->cnf['UpdatePass']);
          } else if ($item == 'mail') {
            if ($cnt++ > 0) $sql .= ", ";
            $sql .= str_replace('%{email}',$value,$this->cnf['UpdateEmail']);
          }
        }

        if ($err == 0) {
          if ($cnt > 0) {
            $sql .= " ".str_replace('%{uid}', $uid, $this->cnf['UpdateTarget']);
            if(get_class($this) == 'auth_mysql') $sql .= " LIMIT 1"; //some PgSQL inheritance comp.
            $this->_modifyDB($sql);
          }
          return true;
        }
      }
      return false;
    }

    /**
     * Retrieves the group id of a given group name
     *
     * The database connection must already be established
     * for this function to work. Otherwise it will return
     * 'false'.
     *
     * @param  $group   group name which id is desired
     * @return group id
     *
     * @author Matthias Grimm 
     */
    function _getGroupID($group) {
      if($this->dbcon) {
        $sql = str_replace('%{group}',$this->_escape($group),$this->cnf['getGroupID']);
        $result = $this->_queryDB($sql);
        return $result === false ? false : $result[0]['id'];
      }
      return false;
    }

    /**
     * Opens a connection to a database and saves the handle for further
     * usage in the object. The successful call to this functions is
     * essential for most functions in this object.
     *
     * @return bool
     *
     * @author Matthias Grimm 
     */
    function _openDB() {
      if (!$this->dbcon) {
        $con = @mysql_connect ($this->cnf['server'], $this->cnf['user'], $this->cnf['password']);
        if ($con) {
          if ((mysql_select_db($this->cnf['database'], $con))) {
            if ((preg_match("/^(\d+)\.(\d+)\.(\d+).*/", mysql_get_server_info ($con), $result)) == 1) {
              $this->dbver = $result[1];
              $this->dbrev = $result[2];
              $this->dbsub = $result[3];
            }
            $this->dbcon = $con;
            if(!empty($this->cnf['charset'])){
                 mysql_query('SET CHARACTER SET "' . $this->cnf['charset'] . '"', $con);
            }
            return true;   // connection and database successfully opened
          } else {
            mysql_close ($con);
            if ($this->cnf['debug'])
              msg("MySQL err: No access to database {$this->cnf['database']}.",-1,__LINE__,__FILE__);
          }
        } else if ($this->cnf['debug'])
          msg ("MySQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
               -1,__LINE__,__FILE__);

        return false;  // connection failed
      }
      return true;  // connection already open
    }

    /**
     * Closes a database connection.
     *
     * @author Matthias Grimm 
     */
    function _closeDB() {
      if ($this->dbcon) {
        mysql_close ($this->dbcon);
        $this->dbcon = 0;
      }
    }

    /**
     * Sends a SQL query to the database and transforms the result into
     * an associative array.
     *
     * This function is only able to handle queries that returns a
     * table such as SELECT.
     *
     * @param $query  SQL string that contains the query
     * @return array with the result table
     *
     * @author Matthias Grimm 
     */
    function _queryDB($query) {
      if($this->cnf['debug'] >= 2){
        msg('MySQL query: '.hsc($query),0,__LINE__,__FILE__);
      }

      $resultarray = array();
      if ($this->dbcon) {
        $result = @mysql_query($query,$this->dbcon);
        if ($result) {
          while (($t = mysql_fetch_assoc($result)) !== false)
            $resultarray[]=$t;
          mysql_free_result ($result);
          return $resultarray;
        }
        if ($this->cnf['debug'])
          msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
      }
      return false;
    }

    /**
     * Sends a SQL query to the database
     *
     * This function is only able to handle queries that returns
     * either nothing or an id value such as INPUT, DELETE, UPDATE, etc.
     *
     * @param $query  SQL string that contains the query
     * @return insert id or 0, false on error
     *
     * @author Matthias Grimm 
     */
    function _modifyDB($query) {
      if ($this->dbcon) {
        $result = @mysql_query($query,$this->dbcon);
        if ($result) {
          $rc = mysql_insert_id($this->dbcon); //give back ID on insert
          if ($rc !== false) return $rc;
        }
        if ($this->cnf['debug'])
          msg('MySQL err: '.mysql_error($this->dbcon),-1,__LINE__,__FILE__);
      }
      return false;
    }

    /**
     * Locked a list of tables for exclusive access so that modifications
     * to the database can't be disturbed by other threads. The list
     * could be set with $conf['auth']['mysql']['TablesToLock'] = array()
     *
     * If aliases for tables are used in SQL statements, also this aliases
     * must be locked. For eg. you use a table 'user' and the alias 'u' in
     * some sql queries, the array must looks like this (order is important):
     *   array("user", "user AS u");
     *
     * MySQL V3 is not able to handle transactions with COMMIT/ROLLBACK
     * so that this functionality is simulated by this function. Nevertheless
     * it is not as powerful as transactions, it is a good compromise in safty.
     *
     * @param $mode  could be 'READ' or 'WRITE'
     *
     * @author Matthias Grimm 
     */
    function _lockTables($mode) {
      if ($this->dbcon) {
        if (is_array($this->cnf['TablesToLock']) && !empty($this->cnf['TablesToLock'])) {
          if ($mode == "READ" || $mode == "WRITE") {
            $sql = "LOCK TABLES ";
            $cnt = 0;
            foreach ($this->cnf['TablesToLock'] as $table) {
              if ($cnt++ != 0) $sql .= ", ";
              $sql .= "$table $mode";
            }
            $this->_modifyDB($sql);
            return true;
          }
        }
      }
      return false;
    }

    /**
     * Unlock locked tables. All existing locks of this thread will be
     * abrogated.
     *
     * @author Matthias Grimm 
     */
    function _unlockTables() {
      if ($this->dbcon) {
        $this->_modifyDB("UNLOCK TABLES");
        return true;
      }
      return false;
    }

    /**
     * Transforms the filter settings in an filter string for a SQL database
     * The database connection must already be established, otherwise the
     * original SQL string without filter criteria will be returned.
     *
     * @param  $sql     SQL string to which the $filter criteria should be added
     * @param  $filter  array of filter criteria as pairs of item and pattern
     * @return SQL string with attached $filter criteria on success
     * @return the original SQL string on error.
     *
     * @author Matthias Grimm 
     */
    function _createSQLFilter($sql, $filter) {
      $SQLfilter = "";
      $cnt = 0;

      if ($this->dbcon) {
        foreach ($filter as $item => $pattern) {
          $tmp = '%'.$this->_escape($pattern).'%';
          if ($item == 'user') {
            if ($cnt++ > 0) $SQLfilter .= " AND ";
            $SQLfilter .= str_replace('%{user}',$tmp,$this->cnf['FilterLogin']);
          } else if ($item == 'name') {
            if ($cnt++ > 0) $SQLfilter .= " AND ";
            $SQLfilter .= str_replace('%{name}',$tmp,$this->cnf['FilterName']);
          } else if ($item == 'mail') {
            if ($cnt++ > 0) $SQLfilter .= " AND ";
            $SQLfilter .= str_replace('%{email}',$tmp,$this->cnf['FilterEmail']);
          } else if ($item == 'grps') {
            if ($cnt++ > 0) $SQLfilter .= " AND ";
            $SQLfilter .= str_replace('%{group}',$tmp,$this->cnf['FilterGroup']);
          }
        }

        // we have to check SQLfilter here and must not use $cnt because if
        // any of cnf['Filter????'] is not defined, a malformed SQL string
        // would be generated.

        if (strlen($SQLfilter)) {
          $glue = strpos(strtolower($sql),"where") ? " AND " : " WHERE ";
          $sql = $sql.$glue.$SQLfilter;
        }
      }

      return $sql;
    }

    /**
     * Escape a string for insertion into the database
     *
     * @author Andreas Gohr 
     * @param  string  $string The string to escape
     * @param  boolean $like   Escape wildcard chars as well?
     */
    function _escape($string,$like=false){
      if($this->dbcon){
        $string = mysql_real_escape_string($string, $this->dbcon);
      }else{
        $string = addslashes($string);
      }
      if($like){
        $string = addcslashes($string,'%_');
      }
      return $string;
    }
}

//Setup VIM: ex: et ts=2 enc=utf-8 :
splitbrain-dokuwiki-d6c824b/inc/auth/pgsql.class.php000066400000000000000000000335421134327003500226050ustar00rootroot00000000000000
 * @author     Chris Smith 
 * @author     Matthias Grimm 
*/

define('DOKU_AUTH', dirname(__FILE__));
require_once(DOKU_AUTH.'/mysql.class.php');

class auth_pgsql extends auth_mysql {

    /**
     * Constructor
     *
     * checks if the pgsql interface is available, otherwise it will
     * set the variable $success of the basis class to false
     *
     * @author Matthias Grimm 
     * @author Andreas Gohr 
     */
    function auth_pgsql() {
      global $conf;
      $this->cnf          = $conf['auth']['pgsql'];
      if(!$this->cnf['port']) $this->cnf['port'] = 5432;

      if (method_exists($this, 'auth_basic'))
        parent::auth_basic();

      if(!function_exists('pg_connect')) {
        if ($this->cnf['debug'])
          msg("PgSQL err: PHP Postgres extension not found.",-1);
        $this->success = false;
        return;
      }

      $this->defaultgroup = $conf['defaultgroup'];

      // set capabilities based upon config strings set
      if (empty($this->cnf['user']) ||
          empty($this->cnf['password']) || empty($this->cnf['database'])){
        if ($this->cnf['debug'])
          msg("PgSQL err: insufficient configuration.",-1,__LINE__,__FILE__);
        $this->success = false;
        return;
      }

      $this->cando['addUser']      = $this->_chkcnf(array('getUserInfo',
                                                          'getGroups',
                                                          'addUser',
                                                          'getUserID',
                                                          'getGroupID',
                                                          'addGroup',
                                                          'addUserGroup'));
      $this->cando['delUser']      = $this->_chkcnf(array('getUserID',
                                                          'delUser',
                                                          'delUserRefs'));
      $this->cando['modLogin']     = $this->_chkcnf(array('getUserID',
                                                          'updateUser',
                                                          'UpdateTarget'));
      $this->cando['modPass']      = $this->cando['modLogin'];
      $this->cando['modName']      = $this->cando['modLogin'];
      $this->cando['modMail']      = $this->cando['modLogin'];
      $this->cando['modGroups']    = $this->_chkcnf(array('getUserID',
                                                          'getGroups',
                                                          'getGroupID',
                                                          'addGroup',
                                                          'addUserGroup',
                                                          'delGroup',
                                                          'getGroupID',
                                                          'delUserGroup'));
      /* getGroups is not yet supported
      $this->cando['getGroups']    = $this->_chkcnf(array('getGroups',
                                                          'getGroupID')); */
      $this->cando['getUsers']     = $this->_chkcnf(array('getUsers',
                                                          'getUserInfo',
                                                          'getGroups'));
      $this->cando['getUserCount'] = $this->_chkcnf(array('getUsers'));
    }

    /**
     * Check if the given config strings are set
     *
     * @author  Matthias Grimm 
     * @return  bool
     */
    function _chkcnf($keys, $wop=false){
      foreach ($keys as $key){
        if (empty($this->cnf[$key])) return false;
      }
      return true;
    }

    // @inherit function checkPass($user,$pass)
    // @inherit function getUserData($user)
    // @inherit function createUser($user,$pwd,$name,$mail,$grps=null)
    // @inherit function modifyUser($user, $changes)
    // @inherit function deleteUsers($users)


    /**
     * [public function]
     *
     * Counts users which meet certain $filter criteria.
     *
     * @param  array  $filter  filter criteria in item/pattern pairs
     * @return count of found users.
     *
     * @author  Matthias Grimm 
     */
    function getUserCount($filter=array()) {
      $rc = 0;

      if($this->_openDB()) {
        $sql = $this->_createSQLFilter($this->cnf['getUsers'], $filter);

        // no equivalent of SQL_CALC_FOUND_ROWS in pgsql?
        if (($result = $this->_queryDB($sql))){
          $rc = count($result);
        }
        $this->_closeDB();
      }
      return $rc;
    }

    /**
     * Bulk retrieval of user data. [public function]
     *
     * @param   first     index of first user to be returned
     * @param   limit     max number of users to be returned
     * @param   filter    array of field/pattern pairs
     * @return  array of userinfo (refer getUserData for internal userinfo details)
     *
     * @author  Matthias Grimm 
     */
    function retrieveUsers($first=0,$limit=10,$filter=array()) {
      $out   = array();

      if($this->_openDB()) {
        $this->_lockTables("READ");
        $sql  = $this->_createSQLFilter($this->cnf['getUsers'], $filter);
        $sql .= " ".$this->cnf['SortOrder']." LIMIT $limit OFFSET $first";
        $result = $this->_queryDB($sql);

        foreach ($result as $user)
          if (($info = $this->_getUserInfo($user['user'])))
            $out[$user['user']] = $info;

        $this->_unlockTables();
        $this->_closeDB();
      }
      return $out;
    }

    // @inherit function joinGroup($user, $group)
    // @inherit function leaveGroup($user, $group) {

    /**
     * Adds a user to a group.
     *
     * If $force is set to '1' non existing groups would be created.
     *
     * The database connection must already be established. Otherwise
     * this function does nothing and returns 'false'.
     *
     * @param   $user    user to add to a group
     * @param   $group   name of the group
     * @param   $force   '1' create missing groups
     * @return  bool     'true' on success, 'false' on error
     *
     * @author Matthias Grimm 
     * @author Andreas Gohr   
     */
    function _addUserToGroup($user, $group, $force=0) {
      $newgroup = 0;

      if (($this->dbcon) && ($user)) {
        $gid = $this->_getGroupID($group);
        if (!$gid) {
          if ($force) {  // create missing groups
            $sql = str_replace('%{group}',addslashes($group),$this->cnf['addGroup']);
            $this->_modifyDB($sql);
            //group should now exists try again to fetch it
            $gid = $this->_getGroupID($group);
            $newgroup = 1;  // group newly created
          }
        }
        if (!$gid) return false; // group didn't exist and can't be created

        $sql = $this->cnf['addUserGroup'];
        if(strpos($sql,'%{uid}') !== false){
            $uid = $this->_getUserID($user);
            $sql = str_replace('%{uid}', addslashes($uid), $sql);
        }
        $sql = str_replace('%{user}', addslashes($user),$sql);
        $sql = str_replace('%{gid}',  addslashes($gid),$sql);
        $sql = str_replace('%{group}',addslashes($group),$sql);
        if ($this->_modifyDB($sql) !== false) return true;

        if ($newgroup) { // remove previously created group on error
          $sql = str_replace('%{gid}',  addslashes($gid),$this->cnf['delGroup']);
          $sql = str_replace('%{group}',addslashes($group),$sql);
          $this->_modifyDB($sql);
        }
      }
      return false;
    }

    // @inherit function _delUserFromGroup($user $group)
    // @inherit function _getGroups($user)
    // @inherit function _getUserID($user)

    /**
     * Adds a new User to the database.
     *
     * The database connection must already be established
     * for this function to work. Otherwise it will return
     * 'false'.
     *
     * @param  $user  login of the user
     * @param  $pwd   encrypted password
     * @param  $name  full name of the user
     * @param  $mail  email address
     * @param  $grps  array of groups the user should become member of
     * @return bool
     *
     * @author  Andreas Gohr 
     * @author  Chris Smith 
     * @author  Matthias Grimm 
     */
    function _addUser($user,$pwd,$name,$mail,$grps){
      if($this->dbcon && is_array($grps)) {
        $sql = str_replace('%{user}', addslashes($user),$this->cnf['addUser']);
        $sql = str_replace('%{pass}', addslashes($pwd),$sql);
        $sql = str_replace('%{name}', addslashes($name),$sql);
        $sql = str_replace('%{email}',addslashes($mail),$sql);
        if($this->_modifyDB($sql)){
          $uid = $this->_getUserID($user);
        }else{
          return false;
        }

        if ($uid) {
          foreach($grps as $group) {
            $gid = $this->_addUserToGroup($user, $group, 1);
            if ($gid === false) break;
          }

          if ($gid) return true;
          else {
            /* remove the new user and all group relations if a group can't
             * be assigned. Newly created groups will remain in the database
             * and won't be removed. This might create orphaned groups but
             * is not a big issue so we ignore this problem here.
             */
            $this->_delUser($user);
            if ($this->cnf['debug'])
              msg("PgSQL err: Adding user '$user' to group '$group' failed.",-1,__LINE__,__FILE__);
          }
        }
      }
      return false;
    }

    // @inherit function _delUser($user)
    // @inherit function _getUserInfo($user)
    // @inherit function _updateUserInfo($changes, $uid)
    // @inherit function _getGroupID($group)

    /**
     * Opens a connection to a database and saves the handle for further
     * usage in the object. The successful call to this functions is
     * essential for most functions in this object.
     *
     * @return bool
     *
     * @author Matthias Grimm 
     */
    function _openDB() {
      if (!$this->dbcon) {
        $dsn  = $this->cnf['server'] ? 'host='.$this->cnf['server'] : '';
        $dsn .= ' port='.$this->cnf['port'];
        $dsn .= ' dbname='.$this->cnf['database'];
        $dsn .= ' user='.$this->cnf['user'];
        $dsn .= ' password='.$this->cnf['password'];

        $con = @pg_connect($dsn);
        if ($con) {
            $this->dbcon = $con;
            return true;   // connection and database successfully opened
        } else if ($this->cnf['debug']){
            msg ("PgSQL err: Connection to {$this->cnf['user']}@{$this->cnf['server']} not possible.",
                  -1,__LINE__,__FILE__);
        }
        return false;  // connection failed
      }
      return true;  // connection already open
    }

    /**
     * Closes a database connection.
     *
     * @author Matthias Grimm 
     */
    function _closeDB() {
      if ($this->dbcon) {
        pg_close ($this->dbcon);
        $this->dbcon = 0;
      }
    }

    /**
     * Sends a SQL query to the database and transforms the result into
     * an associative array.
     *
     * This function is only able to handle queries that returns a
     * table such as SELECT.
     *
     * @param $query  SQL string that contains the query
     * @return array with the result table
     *
     * @author Matthias Grimm 
     */
    function _queryDB($query) {
      if ($this->dbcon) {
        $result = @pg_query($this->dbcon,$query);
        if ($result) {
          while (($t = pg_fetch_assoc($result)) !== false)
            $resultarray[]=$t;
          pg_free_result ($result);
          return $resultarray;
        }elseif ($this->cnf['debug'])
          msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
      }
      return false;
    }

    /**
     * Executes an update or insert query. This differs from the
     * MySQL one because it does NOT return the last insertID
     *
     * @author Andreas Gohr
     */
    function _modifyDB($query) {
      if ($this->dbcon) {
        $result = @pg_query($this->dbcon,$query);
        if ($result) {
          pg_free_result ($result);
          return true;
        }
        if ($this->cnf['debug']){
          msg('PgSQL err: '.pg_last_error($this->dbcon),-1,__LINE__,__FILE__);
        }
      }
      return false;
    }

    /**
     * Start a transaction
     *
     * @param $mode  could be 'READ' or 'WRITE'
     * @author Matthias Grimm 
     */
    function _lockTables($mode) {
      if ($this->dbcon) {
        $this->_modifyDB('BEGIN');
        return true;
      }
      return false;
    }

    /**
     * Commit a transaction
     *
     * @author Matthias Grimm 
     */
    function _unlockTables() {
      if ($this->dbcon) {
        $this->_modifyDB('COMMIT');
        return true;
      }
      return false;
    }

    // @inherit function _createSQLFilter($sql, $filter)


    /**
     * Escape a string for insertion into the database
     *
     * @author Andreas Gohr 
     * @param  string  $string The string to escape
     * @param  boolean $like   Escape wildcard chars as well?
     */
    function _escape($string,$like=false){
      $string = pg_escape_string($string);
      if($like){
        $string = addcslashes($string,'%_');
      }
      return $string;
    }

}

//Setup VIM: ex: et ts=2 enc=utf-8 :
splitbrain-dokuwiki-d6c824b/inc/auth/plain.class.php000066400000000000000000000226401134327003500225570ustar00rootroot00000000000000
 * @author     Chris Smith 
 */

define('DOKU_AUTH', dirname(__FILE__));
require_once(DOKU_AUTH.'/basic.class.php');

define('AUTH_USERFILE',DOKU_CONF.'users.auth.php');

class auth_plain extends auth_basic {

    var $users = null;
    var $_pattern = array();

    /**
     * Constructor
     *
     * Carry out sanity checks to ensure the object is
     * able to operate. Set capabilities.
     *
     * @author  Christopher Smith 
     */
    function auth_plain() {
      if (!@is_readable(AUTH_USERFILE)){
        $this->success = false;
      }else{
        if(@is_writable(AUTH_USERFILE)){
          $this->cando['addUser']      = true;
          $this->cando['delUser']      = true;
          $this->cando['modLogin']     = true;
          $this->cando['modPass']      = true;
          $this->cando['modName']      = true;
          $this->cando['modMail']      = true;
          $this->cando['modGroups']    = true;
        }
        $this->cando['getUsers']     = true;
        $this->cando['getUserCount'] = true;
      }
    }

    /**
     * Check user+password [required auth function]
     *
     * Checks if the given user exists and the given
     * plaintext password is correct
     *
     * @author  Andreas Gohr 
     * @return  bool
     */
    function checkPass($user,$pass){

      $userinfo = $this->getUserData($user);
      if ($userinfo === false) return false;

      return auth_verifyPassword($pass,$this->users[$user]['pass']);
    }

    /**
     * Return user info
     *
     * Returns info about the given user needs to contain
     * at least these fields:
     *
     * name string  full name of the user
     * mail string  email addres of the user
     * grps array   list of groups the user is in
     *
     * @author  Andreas Gohr 
     */
    function getUserData($user){

      if($this->users === null) $this->_loadUserData();
      return isset($this->users[$user]) ? $this->users[$user] : false;
    }

    /**
     * Create a new User
     *
     * Returns false if the user already exists, null when an error
     * occurred and true if everything went well.
     *
     * The new user will be added to the default group by this
     * function if grps are not specified (default behaviour).
     *
     * @author  Andreas Gohr 
     * @author  Chris Smith 
     */
    function createUser($user,$pwd,$name,$mail,$grps=null){
      global $conf;

      // user mustn't already exist
      if ($this->getUserData($user) !== false) return false;

      $pass = auth_cryptPassword($pwd);

      // set default group if no groups specified
      if (!is_array($grps)) $grps = array($conf['defaultgroup']);

      // prepare user line
      $groups = join(',',$grps);
      $userline = join(':',array($user,$pass,$name,$mail,$groups))."\n";

      if (io_saveFile(AUTH_USERFILE,$userline,true)) {
        $this->users[$user] = compact('pass','name','mail','grps');
        return $pwd;
      }

      msg('The '.AUTH_USERFILE.' file is not writable. Please inform the Wiki-Admin',-1);
      return null;
    }

    /**
     * Modify user data
     *
     * @author  Chris Smith 
     * @param   $user      nick of the user to be changed
     * @param   $changes   array of field/value pairs to be changed (password will be clear text)
     * @return  bool
     */
    function modifyUser($user, $changes) {
      global $conf;
      global $ACT;
      global $INFO;

      // sanity checks, user must already exist and there must be something to change
      if (($userinfo = $this->getUserData($user)) === false) return false;
      if (!is_array($changes) || !count($changes)) return true;

      // update userinfo with new data, remembering to encrypt any password
      $newuser = $user;
      foreach ($changes as $field => $value) {
        if ($field == 'user') {
          $newuser = $value;
          continue;
        }
        if ($field == 'pass') $value = auth_cryptPassword($value);
        $userinfo[$field] = $value;
      }

      $groups = join(',',$userinfo['grps']);
      $userline = join(':',array($newuser, $userinfo['pass'], $userinfo['name'], $userinfo['mail'], $groups))."\n";

      if (!$this->deleteUsers(array($user))) {
        msg('Unable to modify user data. Please inform the Wiki-Admin',-1);
        return false;
      }

      if (!io_saveFile(AUTH_USERFILE,$userline,true)) {
        msg('There was an error modifying your user data. You should register again.',-1);
        // FIXME, user has been deleted but not recreated, should force a logout and redirect to login page
        $ACT == 'register';
        return false;
      }

      $this->users[$newuser] = $userinfo;
      return true;
    }

    /**
     *  Remove one or more users from the list of registered users
     *
     *  @author  Christopher Smith 
     *  @param   array  $users   array of users to be deleted
     *  @return  int             the number of users deleted
     */
    function deleteUsers($users) {

      if (!is_array($users) || empty($users)) return 0;

      if ($this->users === null) $this->_loadUserData();

      $deleted = array();
      foreach ($users as $user) {
        if (isset($this->users[$user])) $deleted[] = preg_quote($user,'/');
      }

      if (empty($deleted)) return 0;

      $pattern = '/^('.join('|',$deleted).'):/';

      if (io_deleteFromFile(AUTH_USERFILE,$pattern,true)) {
        foreach ($deleted as $user) unset($this->users[$user]);
        return count($deleted);
      }

      // problem deleting, reload the user list and count the difference
      $count = count($this->users);
      $this->_loadUserData();
      $count -= count($this->users);
      return $count;
    }

    /**
     * Return a count of the number of user which meet $filter criteria
     *
     * @author  Chris Smith 
     */
    function getUserCount($filter=array()) {

      if($this->users === null) $this->_loadUserData();

      if (!count($filter)) return count($this->users);

      $count = 0;
      $this->_constructPattern($filter);

      foreach ($this->users as $user => $info) {
          $count += $this->_filter($user, $info);
      }

      return $count;
    }

    /**
     * Bulk retrieval of user data
     *
     * @author  Chris Smith 
     * @param   start     index of first user to be returned
     * @param   limit     max number of users to be returned
     * @param   filter    array of field/pattern pairs
     * @return  array of userinfo (refer getUserData for internal userinfo details)
     */
    function retrieveUsers($start=0,$limit=0,$filter=array()) {

      if ($this->users === null) $this->_loadUserData();

      ksort($this->users);

      $i = 0;
      $count = 0;
      $out = array();
      $this->_constructPattern($filter);

      foreach ($this->users as $user => $info) {
        if ($this->_filter($user, $info)) {
          if ($i >= $start) {
            $out[$user] = $info;
            $count++;
            if (($limit > 0) && ($count >= $limit)) break;
          }
          $i++;
        }
      }

      return $out;
    }

    /**
     * Only valid pageid's (no namespaces) for usernames
     */
    function cleanUser($user){
        global $conf;
        return cleanID(str_replace(':',$conf['sepchar'],$user));
    }

    /**
     * Only valid pageid's (no namespaces) for groupnames
     */
    function cleanGroup($group){
        global $conf;
        return cleanID(str_replace(':',$conf['sepchar'],$group));
    }

    /**
     * Load all user data
     *
     * loads the user file into a datastructure
     *
     * @author  Andreas Gohr 
     */
    function _loadUserData(){
      $this->users = array();

      if(!@file_exists(AUTH_USERFILE)) return;

      $lines = file(AUTH_USERFILE);
      foreach($lines as $line){
        $line = preg_replace('/#.*$/','',$line); //ignore comments
        $line = trim($line);
        if(empty($line)) continue;

        $row    = explode(":",$line,5);
        $groups = array_values(array_filter(explode(",",$row[4])));

        $this->users[$row[0]]['pass'] = $row[1];
        $this->users[$row[0]]['name'] = urldecode($row[2]);
        $this->users[$row[0]]['mail'] = $row[3];
        $this->users[$row[0]]['grps'] = $groups;
      }
    }

    /**
     * return 1 if $user + $info match $filter criteria, 0 otherwise
     *
     * @author   Chris Smith 
     */
    function _filter($user, $info) {
        // FIXME
        foreach ($this->_pattern as $item => $pattern) {
            if ($item == 'user') {
                if (!preg_match($pattern, $user)) return 0;
            } else if ($item == 'grps') {
                if (!count(preg_grep($pattern, $info['grps']))) return 0;
            } else {
                if (!preg_match($pattern, $info[$item])) return 0;
            }
        }
        return 1;
    }

    function _constructPattern($filter) {
      $this->_pattern = array();
      foreach ($filter as $item => $pattern) {
//        $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i';          // don't allow regex characters
        $this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i';    // allow regex characters
      }
    }
}

//Setup VIM: ex: et ts=2 enc=utf-8 :
splitbrain-dokuwiki-d6c824b/inc/blowfish.php000066400000000000000000000633701134327003500212310ustar00rootroot00000000000000
 *
 * See the enclosed file COPYING for license information (LGPL). If you
 * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
 *
 * @author  Mike Cochrane 
 * @version $Id: blowfish.php 11081 2008-01-25 09:35:48Z cybot_tm $
 * @since   Horde 2.2
 * @package horde.cipher
 */

// Change for phpMyAdmin by lem9:
//class Horde_Cipher_blowfish extends Horde_Cipher {
class Horde_Cipher_blowfish
{
    /* Pi Array */
    var $p = array(
            0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,
            0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,
            0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
            0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,
            0x9216D5D9, 0x8979FB1B);

    /* S Boxes */
    var $s1 = array(
            0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
            0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
            0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
            0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
            0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
            0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
            0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
            0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
            0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
            0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
            0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
            0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
            0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
            0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
            0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
            0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
            0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
            0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
            0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
            0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
            0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
            0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
            0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
            0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
            0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
            0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
            0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
            0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
            0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
            0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
            0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
            0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
            0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
            0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
            0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
            0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
            0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
            0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
            0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
            0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
            0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
            0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
            0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
            0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
            0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
            0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
            0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
            0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
            0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
            0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
            0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
            0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
            0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
            0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
            0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
            0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
            0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
            0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
            0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
            0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
            0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
            0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
            0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
            0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A);
    var $s2 = array(
            0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
            0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
            0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
            0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
            0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
            0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
            0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
            0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
            0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
            0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
            0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
            0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
            0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
            0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
            0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
            0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
            0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
            0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
            0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
            0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
            0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
            0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
            0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
            0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
            0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
            0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
            0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
            0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
            0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
            0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
            0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
            0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
            0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
            0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
            0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
            0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
            0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
            0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
            0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
            0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
            0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
            0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
            0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
            0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
            0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
            0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
            0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
            0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
            0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
            0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
            0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
            0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
            0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
            0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
            0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
            0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
            0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
            0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
            0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
            0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
            0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
            0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
            0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
            0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7);
    var $s3 = array(
            0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
            0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
            0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
            0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
            0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
            0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
            0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
            0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
            0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
            0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
            0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
            0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
            0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
            0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
            0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
            0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
            0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
            0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
            0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
            0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
            0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
            0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
            0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
            0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
            0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
            0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
            0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
            0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
            0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
            0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
            0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
            0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
            0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
            0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
            0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
            0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
            0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
            0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
            0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
            0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
            0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
            0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
            0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
            0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
            0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
            0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
            0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
            0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
            0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
            0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
            0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
            0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
            0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
            0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
            0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
            0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
            0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
            0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
            0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
            0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
            0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
            0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
            0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
            0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0);
    var $s4 = array(
            0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
            0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
            0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
            0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
            0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
            0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
            0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
            0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
            0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
            0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
            0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
            0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
            0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
            0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
            0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
            0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
            0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
            0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
            0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
            0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
            0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
            0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
            0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
            0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
            0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
            0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
            0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
            0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
            0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
            0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
            0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
            0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
            0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
            0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
            0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
            0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
            0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
            0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
            0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
            0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
            0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
            0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
            0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
            0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
            0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
            0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
            0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
            0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
            0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
            0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
            0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
            0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
            0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
            0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
            0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
            0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
            0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
            0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
            0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
            0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
            0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
            0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
            0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
            0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6);

    /* The number of rounds to do */
    var $_rounds = 16;

    /**
     * Set the key to be used for en/decryption
     *
     * @param String $key   The key to use
     */
    function setKey($key) {
        $key = $this->_formatKey($key);
        $keyPos = $keyXor = 0;

        $iMax = count($this->p);
        $keyLen = count($key);
        for ($i = 0; $i < $iMax; $i++) {
            for ($t = 0; $t < 4; $t++) {
                $keyXor = ($keyXor << 8) | (($key[$keyPos]) & 0x0ff);
                if (++$keyPos == $keyLen) {
                    $keyPos = 0;
                }
            }
            $this->p[$i] = $this->p[$i] ^ $keyXor;
        }

        $encZero = array('L' => 0, 'R' => 0);
        for ($i = 0; $i + 1 < $iMax; $i += 2) {
            $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
            $this->p[$i] = $encZero['L'];
            $this->p[$i + 1] = $encZero['R'];
        }

        $iMax = count($this->s1);
        for ($i = 0; $i < $iMax; $i += 2) {
            $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
            $this->s1[$i] = $encZero['L'];
            $this->s1[$i + 1] = $encZero['R'];
        }

        $iMax = count($this->s2);
        for ($i = 0; $i < $iMax; $i += 2) {
            $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
            $this->s2[$i] = $encZero['L'];
            $this->s2[$i + 1] = $encZero['R'];
        }

        $iMax = count($this->s3);
        for ($i = 0; $i < $iMax; $i += 2) {
            $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
            $this->s3[$i] = $encZero['L'];
            $this->s3[$i + 1] = $encZero['R'];
        }

        $iMax = count($this->s4);
        for ($i = 0; $i < $iMax; $i += 2) {
            $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']);
            $this->s4[$i] = $encZero['L'];
            $this->s4[$i + 1] = $encZero['R'];
        }

    }

    /**
     * Encrypt a block on data.
     *
     * @param String $block         The data to encrypt
     * @param optional String $key  The key to use
     *
     * @return String the encrypted output
     */
    function encryptBlock($block, $key = null) {
        if (!is_null($key)) {
            $this->setKey($key);
        }

        list($L, $R) = array_values(unpack('N*', $block));
        $parts = $this->_encryptBlock($L, $R);
        return pack("NN", $parts['L'], $parts['R']);
    }

    /**
     * Encrypt a block on data.
     *
     * @param String $L  The data to encrypt.
     * @param String $R  The data to encrypt.
     *
     * @return String  The encrypted output.
     */
    function _encryptBlock($L, $R) {
        $L ^= $this->p[0];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[1];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[2];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[3];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[4];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[5];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[6];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[7];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[8];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[9];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[10];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[11];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[12];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[13];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[14];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[15];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[16];
        $R ^= $this->p[17];

        return array('L' => $R, 'R' => $L);
    }

    /**
     * Decrypt a block on data.
     *
     * @param String $block         The data to decrypt
     * @param optional String $key  The key to use
     *
     * @return String the decrypted output
     */
    function decryptBlock($block, $key = null) {
        if (!is_null($key)) {
            $this->setKey($key);
        }

        // change for phpMyAdmin
        $L = null;
        $R = null;

        $retarray = array_values(unpack('N*', $block));
        if (isset($retarray[0])) {
            $L = $retarray[0];
        }
        if (isset($retarray[1])) {
            $R = $retarray[1];
        }
        // end change for phpMyAdmin

        $L ^= $this->p[17];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[16];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[15];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[14];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[13];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[12];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[11];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[10];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[9];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[8];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[7];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[6];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[5];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[4];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[3];
        $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[2];
        $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[1];

        $decrypted = pack("NN", $R ^ $this->p[0], $L);
        return $decrypted;
    }

    /**
     * Converts a text key into an array.
     *
     * @return array  The key.
     */
    function _formatKey($key) {
        return array_values(unpack('C*', $key));
    }

}

// higher-level functions:
/**
 * Encryption using blowfish algorithm
 *
 * @param   string  original data
 * @param   string  the secret
 *
 * @return  string  the encrypted result
 *
 * @access  public
 *
 * @author  lem9
 */
function PMA_blowfish_encrypt($data, $secret) {
    $pma_cipher = new Horde_Cipher_blowfish;
    $encrypt = '';

    $data .= '_'; // triming fixed for DokuWiki FS#1690 FS#1713
    $mod = strlen($data) % 8;

    if ($mod > 0) {
        $data .= str_repeat("\0", 8 - $mod);
    }

    foreach (str_split($data, 8) as $chunk) {
        $encrypt .= $pma_cipher->encryptBlock($chunk, $secret);
    }
    return base64_encode($encrypt);
}

/**
 * Decryption using blowfish algorithm
 *
 * @param   string  encrypted data
 * @param   string  the secret
 *
 * @return  string  original data
 *
 * @access  public
 *
 * @author  lem9
 */
function PMA_blowfish_decrypt($encdata, $secret) {
    $pma_cipher = new Horde_Cipher_blowfish;
    $decrypt = '';
    $data = base64_decode($encdata);

    foreach (str_split($data, 8) as $chunk) {
        $decrypt .= $pma_cipher->decryptBlock($chunk, $secret);
    }
    return substr(rtrim($decrypt, "\0"), 0, -1); // triming fixed for DokuWiki FS#1690 FS#1713
}
splitbrain-dokuwiki-d6c824b/inc/cache.php000066400000000000000000000224671134327003500204610ustar00rootroot00000000000000
 */

if(!defined('DOKU_INC')) die('meh.');
require_once(DOKU_INC.'inc/io.php');
require_once(DOKU_INC.'inc/pageutils.php');
require_once(DOKU_INC.'inc/parserutils.php');

class cache {
    var $key = '';          // primary identifier for this item
    var $ext = '';          // file ext for cache data, secondary identifier for this item
    var $cache = '';        // cache file name
    var $depends = array(); // array containing cache dependency information,
    //   used by _useCache to determine cache validity

    var $_event = '';       // event to be triggered during useCache

    function cache($key,$ext) {
        $this->key = $key;
        $this->ext = $ext;
        $this->cache = getCacheName($key,$ext);
    }

    /**
     * public method to determine whether the cache can be used
     *
     * to assist in cetralisation of event triggering and calculation of cache statistics,
     * don't override this function override _useCache()
     *
     * @param  array   $depends   array of cache dependencies, support dependecies:
     *                            'age'   => max age of the cache in seconds
     *                            'files' => cache must be younger than mtime of each file
     *                                       (nb. dependency passes if file doesn't exist)
     *
     * @return bool    true if cache can be used, false otherwise
     */
    function useCache($depends=array()) {
        $this->depends = $depends;
        $this->_addDependencies();

        if ($this->_event) {
            return $this->_stats(trigger_event($this->_event,$this,array($this,'_useCache')));
        } else {
            return $this->_stats($this->_useCache());
        }
    }

    /**
     * private method containing cache use decision logic
     *
     * this function processes the following keys in the depends array
     *   purge - force a purge on any non empty value
     *   age   - expire cache if older than age (seconds)
     *   files - expire cache if any file in this array was updated more recently than the cache
     *
     * can be overridden
     *
     * @return bool               see useCache()
     */
    function _useCache() {

        if (!empty($this->depends['purge'])) return false;              // purge requested?
        if (!($this->_time = @filemtime($this->cache))) return false;   // cache exists?

        // cache too old?
        if (!empty($this->depends['age']) && ((time() - $this->_time) > $this->depends['age'])) return false;

        if (!empty($this->depends['files'])) {
            foreach ($this->depends['files'] as $file) {
                if ($this->_time < @filemtime($file)) return false;         // cache older than files it depends on?
            }
        }

        return true;
    }

    /**
     * add dependencies to the depends array
     *
     * this method should only add dependencies,
     * it should not remove any existing dependencies and
     * it should only overwrite a dependency when the new value is more stringent than the old
     */
    function _addDependencies() {
        if (isset($_REQUEST['purge'])) $this->depends['purge'] = true;   // purge requested
    }

    /**
     * retrieve the cached data
     *
     * @param   bool   $clean   true to clean line endings, false to leave line endings alone
     * @return  string          cache contents
     */
    function retrieveCache($clean=true) {
        return io_readFile($this->cache, $clean);
    }

    /**
     * cache $data
     *
     * @param   string $data   the data to be cached
     * @return  bool           true on success, false otherwise
     */
    function storeCache($data) {
        return io_savefile($this->cache, $data);
    }

    /**
     * remove any cached data associated with this cache instance
     */
    function removeCache() {
        @unlink($this->cache);
    }

    /**
     * Record cache hits statistics.
     * (Only when debugging allowed, to reduce overhead.)
     *
     * @param    bool   $success   result of this cache use attempt
     * @return   bool              pass-thru $success value
     */
    function _stats($success) {
        global $conf;
        static $stats = null;
        static $file;

        if (!$conf['allowdebug']) { return $success; }

        if (is_null($stats)) {
            $file = $conf['cachedir'].'/cache_stats.txt';
            $lines = explode("\n",io_readFile($file));

            foreach ($lines as $line) {
                $i = strpos($line,',');
                $stats[substr($line,0,$i)] = $line;
            }
        }

        if (isset($stats[$this->ext])) {
            list($ext,$count,$hits) = explode(',',$stats[$this->ext]);
        } else {
            $ext = $this->ext;
            $count = 0;
            $hits = 0;
        }

        $count++;
        if ($success) $hits++;
        $stats[$this->ext] = "$ext,$count,$hits";

        io_saveFile($file,join("\n",$stats));

        return $success;
    }
}

class cache_parser extends cache {

    var $file = '';       // source file for cache
    var $mode = '';       // input mode (represents the processing the input file will undergo)

    var $_event = 'PARSER_CACHE_USE';

    function cache_parser($id, $file, $mode) {
        if ($id) $this->page = $id;
        $this->file = $file;
        $this->mode = $mode;

        parent::cache($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode);
    }

    function _useCache() {

        if (!@file_exists($this->file)) return false;                   // source exists?
        return parent::_useCache();
    }

    function _addDependencies() {
        global $conf, $config_cascade;

        $this->depends['age'] = isset($this->depends['age']) ?
            min($this->depends['age'],$conf['cachetime']) : $conf['cachetime'];

        // parser cache file dependencies ...
        $files = array($this->file,                                     // ... source
                DOKU_INC.'inc/parser/parser.php',                // ... parser
                DOKU_INC.'inc/parser/handler.php',               // ... handler
                );
        $files = array_merge($files, getConfigFiles('main'));           // ... wiki settings

        $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files;
        parent::_addDependencies();
    }

}

class cache_renderer extends cache_parser {

    function useCache($depends=array()) {
        $use = parent::useCache($depends);

        // meta data needs to be kept in step with the cache
        if (!$use && isset($this->page)) {
            p_set_metadata($this->page,array(),true);
        }

        return $use;
    }

    function _useCache() {
        global $conf;

        if (!parent::_useCache()) return false;

        if (!isset($this->page)) {
            return true;
        }

        // check current link existence is consistent with cache version
        // first check the purgefile
        // - if the cache is more recent than the purgefile we know no links can have been updated
        if ($this->_time >= @filemtime($conf['cachedir'].'/purgefile')) {
            return true;
        }

        // for wiki pages, check metadata dependencies
        $metadata = p_get_metadata($this->page);

        if (!isset($metadata['relation']['references']) ||
                empty($metadata['relation']['references'])) {
            return true;
        }

        foreach ($metadata['relation']['references'] as $id => $exists) {
            if ($exists != page_exists($id,'',false)) return false;
        }

        return true;
    }

    function _addDependencies() {

        // renderer cache file dependencies ...
        $files = array(
                DOKU_INC.'inc/parser/'.$this->mode.'.php',       // ... the renderer
                );

        // page implies metadata and possibly some other dependencies
        if (isset($this->page)) {

            $metafile = metaFN($this->page,'.meta');
            if (@file_exists($metafile)) {
                $files[] = $metafile;                                       // ... the page's own metadata
                $files[] = DOKU_INC.'inc/parser/metadata.php';              // ... the metadata renderer

                $valid = p_get_metadata($this->page, 'date valid');
                if (!empty($valid['age'])) {
                    $this->depends['age'] = isset($this->depends['age']) ?
                        min($this->depends['age'],$valid['age']) : $valid['age'];
                }

            } else {
                $this->depends['purge'] = true;                             // ... purging cache will generate metadata
                return;
            }
        }

        $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files;
        parent::_addDependencies();
    }
}

class cache_instructions extends cache_parser {

    function cache_instructions($id, $file) {
        parent::cache_parser($id, $file, 'i');
    }

    function retrieveCache($clean=true) {
        $contents = io_readFile($this->cache, false);
        return !empty($contents) ? unserialize($contents) : array();
    }

    function storeCache($instructions) {
        return io_savefile($this->cache,serialize($instructions));
    }
}
splitbrain-dokuwiki-d6c824b/inc/changelog.php000066400000000000000000000364361134327003500213460ustar00rootroot00000000000000
 */

// Constants for known core changelog line types.
// Use these in place of string literals for more readable code.
define('DOKU_CHANGE_TYPE_CREATE',       'C');
define('DOKU_CHANGE_TYPE_EDIT',         'E');
define('DOKU_CHANGE_TYPE_MINOR_EDIT',   'e');
define('DOKU_CHANGE_TYPE_DELETE',       'D');
define('DOKU_CHANGE_TYPE_REVERT',       'R');

/**
 * parses a changelog line into it's co