#
# This module contains data compression and extraction functions.
# Copyright (C) 2007-2010 Dennis Furey
#
# compress                                    (2818)
# extract                                      (151)
# extractable                                  (657)
# hash                                          (11)
# heavy_common_subtrees                       (2051)
# paths                                        (289)
# recompress                                  (2804)
# self_extracting                             (3200)
# shared_subtrees                              (171)
# trim                                         (103)
#
# compressed with granularity 30
#
#
# 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; version 3.
# 
# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#
{kwozjkkvAezz{jNEZ_wgzwfcwCvnysiBeD[i]zpUVozeLi=ZdL[eFhh^sd^=cnDawrRjwkzD@Z]awp
wnviPxshjB_csmO\xzhfGCyxdBD=CgkHkpwn_WVxkrp\eCGKqODlhk_qIHyOvwxfJFiqqGeFoYkReWZ
NqhxqYF=PJcgP^WAZqhiNsOmXuMIVcYFhVVnHiwGgFnlR?ndeZiWJZs{nx?GGINKo<npReP{=?QoOwI
SVc{wHxp_HiNxl_PeNrKvMWSKANJqq[=zS{zqG=HuHowhif^nwoI?ExS^qRqHGD=Yam{KrmFr@ndqoW
XnExGGvGe=QSt_`wa_BZJZexU{{NhNURhRPiDCGMGKSAerkQsatCSV>e\HT<[Fc{YyFeoG>i`dXqPmO
yVjwxaOQqXCYGplB<bBL@[a{[p_HgHzp_O\iPgsgDjekARXTV?GEHdiDLFDAzUz{svHp>iHuDuENlO[
PRhvEaGQuLad<NTh<UZ=@SezuyXf\iPWANiHOzdmN_QhkbqV<P_OE?vuZ@ScCz[foH@\I<nq{N^fOLT
[HpuR=S^P[]BSjSht[r[iFqNlQMYN`ad`_PlZIiN[iLatJ[@U[D=AyRCyniPAHjaMOHjDUI`Bt[PhFc
t<C\uzNawdF[cfo>pmmDhYX`_P\qHke=D[>L<CzFKyD<S?HiPqF_vNPbLwHkIi@nAjE[vM{jB[m]IIG
KHbMnIJKNGJ`@`>uzY@M[GL@W]ROQ=EcIFzBiU=HpN<\[DvuZm>WQQQNXniLWLmJbLG\aulMazL@iNQ
QJT>@j=mk\<Ecp?cumfhNzOHMYnAN`Fb<=z^noHeFqAQ[ff\^E[pWGNp<L_Rmn\@uxZyAIDPIM^Y\hR
K`iHLHuuEl>UPlPpwQQ?bbLQPvOY]lAiOQFxxfIRprB[fwIjKGSTODP\AIqQAYQTU]OPpyJTyPwIPqa
SAY]MQPUS]YkO^iIFqjvaxqQQ^aP^vIk=IOQ?JqABfmiPnbq>EI_hqQOebiHcfOQ@oNaLbpINLw\b__
PqQaC?f`qAXh@aoPiFw`pnOxRjEM?IASNQPwIDIOYRiAMoayqGhSkMEIJaOKtEPzJBoQ?GYYxVnQCGA
PPJgPHfjHvyFv{s{GNOXiDaQKNLCQH\TjTtMHiSJrWXHqX^UPDpASVM?\hoJvQXiMnvkQRqEodxtHda
D{TwLI=IzNXRNCQqLox_oO<PAppgGyMWviyOaGhwph[qQ<cIDW{lEQXpCEU>I<PgPeP]EL<EIveg[L[
VO<y@nwz?EWIP?PVn@pvjjvyysnp_pOcE<Wz>F@NoQBlbh`lOfzWgpn[GNBUnLCHdME@l]<<
