lucene-analyzers-common-8.11.2-150200.4.7.1<>, f^~p9|dP/`X RJI2RtB!d;LvV;V[bo3Mo?NRًi(cu77ʗHʽnfg+6} Uumm]0)k)Vmf \;$K`oX$RqW78,-tV!5r48K}s!`m}_ ,1.g ۘ-ie.z*3e9>{c@Q@R/qnɑnnfA:>A?d! . Q&1 Gb}     <T((8$9x:BF G H8IPXXYlZ[\]^Zbc|defluv4wxyz,<@FClucene-analyzers-common8.11.2150200.4.7.1Analyzers-common module for luceneApache Lucene is a full-text search engine written entirely in Java. This package provides the "analyzers-common" module for Lucene.f^~h04-ch1bA^SUSE Linux Enterprise 15SUSE LLC Apache-2.0https://www.suse.com/Development/Libraries/Javahttps://lucene.apache.org/linuxnoarch":%AA큤f^wf^wf^wf^wf^wf^w7f12a23109e440bd81b3cde69f51b7ad8a73810a70f286f6a33f74367375b10c09f6a04133a5e915ddb8036c2514a9505a243e6770b6f57c428a2f5264a549e757a12fde65c9d67544c3023e849e9894b6c2b26af5e548de9e486bff62b1969elucene/lucene-analyzers-common.jarrootrootrootrootrootrootrootrootrootrootrootrootlucene-8.11.2-150200.4.7.1.src.rpmlucene-analysislucene-analyzers-commonmvn(org.apache.lucene:lucene-analyzers-common)mvn(org.apache.lucene:lucene-analyzers-common:pom:)osgi(org.apache.lucene.analyzers-common)@@@@    java-headlessjavapackages-filesystemmvn(org.apache.lucene:lucene-core)osgi(org.apache.lucene.core)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)8.11.28.11.23.0.4-14.6.0-14.0-15.2-14.14.1ee @dQdgb7@^@^x]n]?]@]@]@]@\b@\'@[Y5Ycl@YTY@U hgus.kenion@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comidonmez@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comfstrba@suse.comjengelh@inai.debadshah400@gmail.comdziolkowski@suse.comtchvatal@suse.com- Use %patch -P N instead of deprecated %patchN.- Upgrade to version 8.11.2 * API Changes + LUCENE-9265: SimpleFSDirectory is deprecated in favor of NIOFSDirectory. + LUCENE-9304: Removed ability to set DocumentsWriterPerThreadPool on IndexWriterConfig. The DocumentsWriterPerThreadPool is a packaged protected final class which made it impossible to customize. + LUCENE-9339: MergeScheduler#merge doesn't accept a parameter if a new merge was found anymore. + LUCENE-9330: SortFields are now responsible for writing themselves into index headers if they are used as index sorts. + LUCENE-9340: Deprecate SimpleBindings#add(SortField). + LUCENE-9345: MergeScheduler is now decoupled from IndexWriter. Instead it accepts a MergeSource interface that offers the basic methods to acquire pending merges, run the merge and do accounting around it. + LUCENE-9349: QueryVisitor.consumeTermsMatching() now takes a Supplier to enable queries that build large automata to provide them lazily. TermsInSetQuery switches to using this method to report matching terms. + LUCENE-9366: DocValues.emptySortedNumeric() no longer takes a maxDoc parameter + LUCENE-7822: CodecUtil#checkFooter(IndexInput, Throwable) now throws a CorruptIndexException if checksums mismatch or if checksums can't be verified. + LUCENE-7020: TieredMergePolicy#setMaxMergeAtOnceExplicit is deprecated and the number of segments that get merged via explicit merges is unlimited by default. + LUCENE-9437: Lucene's facet module's DocValuesOrdinalsReader.decode method is now public, making it easier for applications to decode facet ordinals into their corresponding labels + LUCENE-9449: Field comparators for numeric fields and _doc were moved to their own package. TopFieldCollector sets TotalHits.relation to GREATER_THAN_OR_EQUAL_TO, as soon as the requested total hits threshold is reached, even though in some cases no skipping optimization is applied and all hits are collected. + LUCENE-9515: IndexingChain now accepts individual primitives rather than a DocumentsWriterPerThread instance in order to create a new DocConsumer. + LUCENE-9680: Removed deprecation warning from IndexWriter#getFieldNames(). + LUCENE-9902: Change the getValue method from IntTaxonomyFacets to be protected instead of private. Users can now access the count of an ordinal directly without constructing an extra FacetLabel. Also use variable length arguments for the getOrdinal call in TaxonomyReader. + LUCENE-9962: DrillSideways allows sub-classes to provide "drill down" FacetsCollectors. They may provide a null collector if they choose to bypass "drill down" facet collection. + LUCENE-10027: Add a new Directory reader open API from indexCommit and a custom comparator for sorting leaf readers + LUCENE-10036: Replaced the ScoreCachingWrappingScorer ctor with a static factory method that ensures unnecessary wrapping doesn't occur. * New Features + LUCENE-7889: Grouping by range based on values from DoubleValuesSource and LongValuesSource + LUCENE-8962: Add IndexWriter merge-on-commit feature to selectively merge small segments on commit, subject to a configurable timeout, to improve search performance by reducing the number of small segments for searching + LUCENE-8962: Add IndexWriter merge-on-refresh feature to selectively merge small segments on getReader, subject to a configurable timeout, to improve search performance by reducing the number of small segments for searching. + LUCENE-9378: Doc values now allow configuring how to trade compression for retrieval speed. + LUCENE-9385: Add FacetsConfig option to control which drill-down terms are indexed for a FacetLabel + LUCENE-9386: RegExpQuery added case insensitive matching option. + LUCENE-9413: Add CJKWidthCharFilter and its factory + LUCENE-9444: Add utility class to retrieve facet labels from the taxonomy index for a facet field so such fields do not also have to be redundantly stored + LUCENE-9484: Allow sorting an index after it was created. With SortingCodecReader, existing unsorted segments can be wrapped and merged into a fresh index using IndexWriter#addIndices API. + LUCENE-9507: Custom order for leaves in IndexReader and IndexWriter + LUCENE-9537: Added smoothingScore method and default implementation to Scorable abstract class. The smoothing score allows scorers to calculate a score for a document where the search term or subquery is not present. The smoothing score acts like an idf so that documents that do not have terms or subqueries that are more frequent in the index are not penalized as much as documents that do not have less frequent terms or subqueries and prevents scores which are the product or terms or subqueries from going to zero. Added the implementation of the Indri AND and the IndriDirichletSimilarity from the academic Indri search engine: http://www.lemurproject.org/indri.php. + LUCENE-9552: New LatLonPoint query that accepts an array of LatLonGeometries. + LUCENE-9553: New XYPoint query that accepts an array of XYGeometries. + LUCENE-9572: TypeAsSynonymFilter has been enhanced support ignoring some types, and to allow the generated synonyms to copy some or all flags from the original token + LUCENE-9574 A token filter to drop tokens that match all specified flags. + LUCENE-9575: PatternTypingFilter has been added to allow setting a type attribute on tokens based on a configured set of regular expressions + LUCENE-9594: FeatureField supports newLinearQuery that for scoring uses raw indexed values of features without any transformation. + LUCENE-9641: LatLonPoint query support for spatial relationships. + LUCENE-9694: New tool for creating a deterministic index to enable benchmarking changes on a consistent multi-segment index even when they require re-indexing. + LUCENE-9950: New facet counting implementation for general string doc value fields (SortedSetDocValues / SortedDocValues) not created through FacetsConfig + LUCENE-10035: The SimpleText codec now writes skip lists. + LUCENE-10083: Analyzer and stemmer for Telugu language * Improvements + LUCENE-9276: Use same code-path for updateDocuments and updateDocument in IndexWriter and DocumentsWriter. + LUCENE-9279: Update dictionary version for Ukrainian analyzer to 4.9.1 + LUCENE-8050: PerFieldDocValuesFormat should not get the DocValuesFormat on a field that has no doc values. + LUCENE-9304: Removed ThreadState abstraction from DocumentsWriter which allows pooling of DWPT directly and improves the approachability of the IndexWriter code. + LUCENE-9324: Add an ID to SegmentCommitInfo in order to compare commits for equality and make snapshots incremental on generational files. + LUCENE-9342: TotalHits' relation will be EQUAL_TO when the number of hits is lower than TopDocsColector's numHits + LUCENE-9353: Metadata of the terms dictionary moved to its own file, with the '.tmd' extension. This allows checksums of metadata to be verified when opening indices and helps save seeks when opening an index. + LUCENE-9359: SegmentInfos#readCommit now always returns a CorruptIndexException if the content of the file is invalid. + LUCENE-9393: Make FunctionScoreQuery use ScoreMode.COMPLETE for creating the inner query weight when ScoreMode.TOP_DOCS is requested. + LUCENE-9392: Make FacetsConfig.DELIM_CHAR publicly accessible + LUCENE-9397: UniformSplit supports encodable fields metadata. + LUCENE-9396: Improved truncation detection for points. + LUCENE-9402: Let MultiCollector handle minCompetitiveScore + LUCENE-8574: Add a new ExpressionValueSource which will enforce only one value per name per hit in dependencies, ExpressionFunctionValues will no longer recompute already computed values + LUCENE-9416: Fix CheckIndex to print an invalid non-zero norm as unsigned long when detecting corruption. + LUCENE-9440: FieldInfo#checkConsistency called twice from Lucene50(60)FieldInfosFormat#read; Removed the (redundant?) assert and do these checks for real. + LUCENE-9446: In BooleanQuery rewrite, always remove MatchAllDocsQuery filter clauses when possible. + LUCENE-9501: Improve coverage for Asserting* test classes: make sure to handle singleton doc values, and sometimes exercise Weight#scorer instead of Weight#bulkScorer for top-level queries. + LUCENE-9511: Include StoredFieldsWriter in DWPT accounting to ensure that it's heap consumption is taken into account when IndexWriter stalls or should flush DWPTs. + LUCENE-9514: Include TermVectorsWriter in DWPT accounting to ensure that it's heap consumption is taken into account when IndexWriter stalls or should flush DWPTs. + LUCENE-9523: In query shapes over shape fields, skip points while traversing the BKD tree when the relationship with the document is already known. + LUCENE-9539: Use more compact datastructures to represent sorted doc-values in memory when sorting a segment before flush and in SortingCodecReader. + LUCENE-9458: WordDelimiterGraphFilter should order tokens at the same position by endOffset to emit longer tokens first. The same graph is produced. + LUCENE-5309: Optimize facet counting for single-valued SSDV / StringValueFacetCounts. + LUCENE-9023: GlobalOrdinalsWithScore should not compute occurrences when the provided min is 1. + LUCENE-9177: ICUNormalizer2CharFilter no longer requires normalization-inert characters as boundaries for incremental processing, vastly improving worst-case performance. + LUCENE-9455: ExitableTermsEnum should sample timeout and interruption check before calling next(). + LUCENE-9662: Make CheckIndex concurrent by parallelizing index check across segments. + LUCENE-9663: Add compression to terms dict from SortedSet/Sorted DocValues. + LUCENE-9675: Binary doc values fields now expose their configured compression mode in the attributes of the field info. + LUCENE-9725: BM25FQuery was extended to handle similarities beyond BM25Similarity. It was renamed to CombinedFieldQuery to reflect its more general scope. + LUCENE-9877: Reduce index size by increasing allowable exceptions in PForUtil from 3 to 7. + LUCENE-9687: Hunspell support improvements: add API for spell-checking and suggestions, support compound words, fix various behavior differences between Java and C++ implementations, improve performance + LUCENE-9917: The BEST_SPEED compression mode now trades more compression ratio in exchange of faster reads. + LUCENE-9935: Enable bulk merge for stored fields with index sort. + LUCENE-9944: Allow DrillSideways users to provide their own CollectorManager without also requiring them to provide an ExecutorService. + LUCENE-9945: Extend DrillSideways to support exposing FacetCollectors directly. + LUCENE-9946: Support for multi-value fields in LongRangeFacetCounts and DoubleRangeFacetCounts. + LUCENE-9965: Added QueryProfilerIndexSearcher and ProfilerCollector to support debugging query execution strategy and timing. + LUCENE-9981: Operations.getCommonSuffix/Prefix(Automaton) is now much more efficient, from a worst case exponential down to quadratic cost in the number of states + transitions in the Automaton. These methods no longer use the costly determinize method, removing the risk of TooComplexToDeterminizeException + LUCENE-9981: Operations.determinize now throws TooComplexToDeterminizeException based on too much "effort" spent determinizing rather than a precise state count on the resulting returned automaton, to better handle adversarial cases like det(rev(regexp("(.*a){2000}"))) that spend lots of effort but result in smallish eventual returned automata. + LUCENE-9983: Stop sorting determinize powersets unnecessarily. + LUCENE-10030: Lazily evaluate score in DrillSidewaysScorer.doQueryFirstScoring + LUCENE-10043: Decrease default for LRUQueryCache's skipCacheFactor to 10. This prevents caching a query clause when it is much more expensive than running the top-level query. + LUCENE-10103: Make QueryCache respect Accountable queries * Optimizations + LUCENE-9254: UniformSplit keeps FST off-heap. + LUCENE-8103: DoubleValuesSource and QueryValueSource now use a TwoPhaseIterator if one is provided by the Query. + LUCENE-9287: UsageTrackingQueryCachingPolicy no longer caches DocValuesFieldExistsQuery. + LUCENE-9286: FST.Arc.BitTable reads directly FST bytes. Arc is lightweight again and FSTEnum traversal faster. + LUCENE-7788: fail precommit on unparameterised log messages and examine for wasted work/objects + LUCENE-9273: Speed up geometry queries by specialising Component2D spatial operations. Instead of using a generic relate method for all relations, we use specialize methods for each one. In addition, the type of triangle is computed at deserialization time, therefore we can be more selective when decoding points of a triangle. + LUCENE-9087: Build always trees with full leaves and lower the default value for maxPointsPerLeafNode to 512. + LUCENE-9148: Points now write their index in a separate file. + LUCENE-9280: Add an ability for field comparators to skip non-competitive documents. Creating a TopFieldCollector with totalHitsThreshold less than Integer.MAX_VALUE instructs Lucene to skip non-competitive documents whenever possible. For numeric sort fields the skipping functionality works when the same field is indexed both with doc values and points. To indicate that the same data is stored in these points and doc values SortField#setCanUsePoints method should be used. + LUCENE-9395: ConstantValuesSource now shares a single DoubleValues instance across all segments + LUCENE-9447, LUCENE-9486: Stored fields now get higer compression ratios on highly compressible data. + LUCENE-9373: FunctionMatchQuery now accepts a "matchCost" optimization hint. + LUCENE-9510: Indexing with an index sort is now faster by not compressing temporary representations of the data. + LUCENE-9449: Enhance DocComparator to provide an iterator over competitive documents when searching with "after". This iterator can quickly position on the desired "after" document skipping all documents and segments before "after". + LUCENE-9021: QueryParser: re-use the LookaheadSuccess exception. + LUCENE-9346: WANDScorer now supports queries that have a 'minimumNumberShouldMatch' configured. + LUCENE-9536: Reduced memory usage for OrdinalMap when a segment has all values. + LUCENE-9636: Faster decoding of postings for some numbers of bits per value. + LUCENE-9673: Substantially improve RAM efficiency of how MemoryIndex stores postings in memory, and reduced a bit of RAM overhead in IndexWriter's internal postings book-keeping + LUCENE-9827: Speed up merging of stored fields and term vectors for smaller segments. + LUCENE-9932: Performance improvement for BKD index building + LUCENE-9996: Improved memory efficiency of IndexWriter's RAM buffer, in particular in the case of many fields and many indexing threads. + LUCENE-10014: Lucene90DocValuesFormat was using too many bits per value when compressing via gcd, unnecessarily wasting index storage. + LUCENE-10022: Rewrite empty DisjunctionMaxQuery to MatchNoDocsQuery. + LUCENE-10031: Slightly faster segment merging for sorted indices. + LUCENE-10196: Improve IntroSorter with 3-ways partitioning + LUCENE-10481: FacetsCollector will not request scores if it does not use them * Bug Fixes + LUCENE-9300: Fix corruption of the new gen field infos when doc values updates are applied on a segment created externally and added to the index with IndexWriter#addIndexes(Directory). + LUCENE-9350: Partial reversion of LUCENE-9068; holding levenshtein automata on FuzzyQuery can end up blowing up query caches which use query objects as cache keys, so building the automata is now delayed to search time again. + LUCENE-9259: Fix wrong NGramFilterFactory argument name for preserveOriginal option + LUCENE-8849: DocValuesRewriteMethod.visit wasn't visiting its embedded query + LUCENE-9258: DocTermsIndexDocValues assumed it was operating on a SortedDocValues (single valued) field when it could be multi-valued used with a SortedSetSelector + LUCENE-9164: Ensure IW processes all internal events before it closes itself on a rollback. + LUCENE-8908: Return default value from objectVal when doc doesn't match the query in QueryValueSource + LUCENE-9133: Fix for potential NPE in TermFilteredPresearcher for empty fields + LUCENE-9309: Wait for #addIndexes merges when aborting merges. + LUCENE-9337: Ensure CMS updates it's thread accounting datastructures consistently. CMS today releases it's lock after finishing a merge before it re-acquires it to update the thread accounting datastructures. This causes threading issues where concurrently finishing threads fail to pick up pending merges causing potential thread starvation on forceMerge calls + LUCENE-9314: Single-document monitor runs were using the less efficient MultiDocumentBatch implementation. + LUCENE-9362: Fix equality check in ExpressionValueSource#rewrite. This fixes rewriting of inner value sources. + LUCENE-9405: IndexWriter incorrectly calls closeMergeReaders twice when the merged segment is 100% deleted. + LUCENE-9400: Tessellator might build illegal polygons when several holes share the shame vertex. + LUCENE-9417: Tessellator might build illegal polygons when several holes share are connected to the same vertex. + LUCENE-9418: Fix ordered intervals over interleaved terms + LUCENE-9443: The UnifiedHighlighter was closing the underlying reader when there were multiple term-vector fields. This was a regression in 8.6.0. + LUCENE-9478: Prevent DWPTDeleteQueue from referencing itself and leaking memory. The queue passed an implicit this reference to the next queue instance on flush which leaked about 500byte of memory on each full flush, commit or getReader call. + LUCENE-9427: Fix a regression where the unified highlighter didn't produce highlights on fuzzy queries that correspond to exact matches. + LUCENE-9467: Fix NRTCachingDirectory to use Directory#fileLength to check if a file already exists instead of opening an IndexInput on the file which might throw a AccessDeniedException in some Directory implementations. + LUCENE-9501: Fix a bug in IndexSortSortedNumericDocValuesRangeQuery where it could violate the DocIdSetIterator contract. + LUCENE-9401: Include field in ComplexPhraseQuery's toString() + LUCENE-9578: Fix TermRangeQuery when there is no upper bound and the lower bound is the empty string excluded. This would previously match no strings at all while it should match all non-empty strings. + LUCENE-9524: Fix NPE in SpanWeight#explain when no scoring is required and SpanWeight has null Similarity.SimScorer. + LUCENE-9508: DocumentsWriter was only stalling threads for 1 second allowing documents to be indexed even the DocumentsWriter wasn't able to keep up flushing. Unless IW can't make progress due to an ill behaving DWPT this issue was barely noticeable. + LUCENE-9581: Japanese tokenizer should discard the compound token instead of disabling the decomposition of long tokens when discardCompoundToken is activated. + LUCENE-9595: Make Component2D#withinPoint implementations consistent with ShapeQuery logic. + LUCENE-9606: Wrap boolean queries generated by shape fields with a Constant score query. + LUCENE-9617: Fix per-field memory leak in IndexWriter.deleteAll(). Reset next available internal field number to 0 on FieldInfos.clear(), to avoid wasting FieldInfo references. + LUCENE-9635: BM25FQuery - Mask encoded norm long value in array lookup. + LUCENE-9642: When encoding triangles in ShapeField, make sure generated triangles are CCW by rotating triangle points before checking triangle orientation. + LUCENE-9661: Fix deadlock in TermsEnum.EMPTY that occurs when trying to initialize TermsEnum and BaseTermsEnum at the same time + LUCENE-9744: NPE on a degenerate query in MinimumShouldMatchIntervalsSource $MinimumMatchesIterator.getSubMatches(). + LUCENE-9762: DoubleValuesSource.fromQuery (also used by FunctionScoreQuery.boostByQuery) could throw an exception when the query implements TwoPhaseIterator and when the score is requested repeatedly. + LUCENE-9791: BytesRefHash.equals/find is now thread safe, fixing a Luwak/Monitor bug causing registered queries to sometimes fail to match. + LUCENE-9870: Fix Circle2D intersectsLine t-value (distance) range clamp + LUCENE-9887: Fixed parameter use in RadixSelector. + LUCENE-9953: LongValueFacetCounts should count each document at most once when determining the total count for a dimension. Prior to this fix, multi-value docs could contribute a > 1 count to the dimension count. + LUCENE-9958: Fixed performance regression for boolean queries that configure a minimum number of matching clauses. + LUCENE-9963: FlattenGraphFilter is now more robust when handling incoming holes in the input token graph + LUCENE-9964: Duplicate long values in a document field should only be counted once when using SortedNumericDocValuesFields + LUCENE-9967: Do not throw NullPointerException while trying to handle another exception in ReplicaNode.start + LUCENE-9988: Fix DrillSideways correctness bug introduced in LUCENE-9944 + LUCENE-9991: Fix edge case failure in TestStringValueFacetCounts + LUCENE-9999: CombinedFieldQuery can fail with an exception when document is missing some fields. + LUCENE-10008: Respect ignoreCase in CommonGramsFilterFactory + LUCENE-10020: DocComparator should not skip docs with the same docID on multiple sorts with search after + LUCENE-10026: Fix CombinedFieldQuery equals and hashCode, which ensures query rewrites don't drop CombinedFieldQuery clauses. + LUCENE-10039: Correct CombinedFieldQuery scoring when there is a single field. + LUCENE-10046: Counting bug fixed in StringValueFacetCounts. + LUCENE-10060: Ensure DrillSidewaysQuery instances never get cached. + LUCENE-10070 Skip deleted docs when accumulating facet counts for all docs + LUCENE-10081: KoreanTokenizer should check the max backtrace gap on whitespaces. + LUCENE-10106: Sort optimization can wrongly skip the first document of each segment + LUCENE-10110: MultiCollector now handles single leaf collector that wants to skip low-scoring hits but the combined score mode doesn't allow it + LUCENE-10111: Missing calculating the bytes used of DocsWithFieldSet in NormValuesWriter + LUCENE-10116: Missing calculating the bytes used of DocsWithFieldSet and currentValues in SortedSetDocValuesWriter + LUCENE-10119: Sort optimization with search_after can wrongly skip documents whose values are equal to the last value of the previous page + LUCENE-10126: Sort optimization with a chunked bulk scorer can wrongly skip documents + LUCENE-10134: ConcurrentSortedSetDocValuesFacetCounts shouldn't share liveDocs Bits across threads + LUCENE-10154: NumericLeafComparator to define getPointValues + LUCENE-10208: Ensure that the minimum competitive score does not decrease in concurrent search + LUCENE-10477: Highlighter: WeightedSpanTermExtractor.extractWeightedSpanTerms to Query#rewrite multiple times if necessary + LUCENE-10564: Make sure SparseFixedBitSet#or updates ramBytesUsed * Documentation + LUCENE-9424: Add a performance warning to AttributeSource.captureState javadocs * Changes in runtime behaviour + LUCENE-9539: SortingCodecReader now doesn't cache doc values fields anymore. Previously, SortingCodecReader used to cache all doc values fields after they were loaded into memory. This reader should only be used to sort segments after the fact using IndexWriter#addIndices. * Other + LUCENE-9257: Always keep FST off-heap. FSTLoadMode, Reader attributes and openedFromWriter removed. + LUCENE-9272: Checksums of the terms index are now verified when LeafReader#checkIntegrity is called rather than when opening the index. + LUCENE-9270: Update Javadoc about normalizeEntry in the Kuromoji DictionaryBuilder. + LUCENE-9275: Make TestLatLonMultiPolygonShapeQueries more resilient for CONTAINS queries. + LUCENE-9244: Adjust TestLucene60PointsFormat#testEstimatePointCount2Dims so it does not fail when a point is shared by multiple leaves. + LUCENE-9271: ByteBufferIndexInput was refactored to work on top of the ByteBuffer API. + LUCENE-9191: Make LineFileDocs's random seeking more efficient, making tests using LineFileDocs faster + LUCENE-9338: Refactors SimpleBindings to improve type safety and cycle detection + LUCENE-9358: Change the way the multi-dimensional BKD tree builder generates the intermediate tree representation to be equal to the one dimensional case to avoid unnecessary tree and leaves rotation. + LUCENE-9288: poll_mirrors.py release script can handle HTTPS mirrors. + LUCENE-9232: Fix or suppress 13 resource leak precommit warnings in lucene/replicator + LUCENE-9398: Always keep BKD index off-heap. BKD reader does not implement Accountable any more. + LUCENE-9292: Refactor BKD point configuration into its own class. + LUCENE-9470: Make TestXYMultiPolygonShapeQueries more resilient for CONTAINS queries. + LUCENE-9512: Move LockFactory stress test to be a unit/integration test. + LUCENE-9637: Removes some unused code and replaces the Point implementation on ShapeField/ShapeQuery random tests. + LUCENE-9836: Removed the pure Maven build. It is no longer possible to build artifacts using Maven (this feature was no longer working correctly). Due to migration to Gradle for Lucene/Solr 9.0, the maintenance of the Maven build was no longer reasonable. POM files are generated for deployment to Maven Central only. Please use "ant generate-maven-artifacts" to produce and deploy artifacts to any repository. + LUCENE-9836: Migrate Maven tasks to use "maven-resolver-ant-tasks" instead of the no longer maintained "maven-ant-tasks". + LUCENE-9985: Upgrade jetty to 9.4.41 + LUCENE-9976: Fix WANDScorer assertion error. + LUCENE-10098: Add docs/links to GermanAnalyzer describing how to decompound nouns + SOLR-14995: Update Jetty to 9.4.34 * Build + Upgrade forbiddenapis to version 3.0.1. + LUCENE-9376: Fix or suppress 20 resource leak precommit warnings in lucene/search + LUCENE-9380: Fix auxiliary class warnings in Lucene + LUCENE-9389: Enhance gradle logging calls validation: eliminate getMessage() + Upgrade forbiddenapis to version 3.1. + LUCENE-10104, SOLR-15631: Upgrade forbiddenapis to version 3.2 - Removed patch: * lucene-java8compat.patch + not needed in this version, since the compatibility is handled by --release option for javac versions that support it - Added patch: * lucene-timestamps.patch + use SOURCE_DATE_EPOCH for timestamps and for pseudo-random seeds + improves reproducibility of builds using lucene for indexing - Modified patches: * lucene-missing-dependencies.patch * lucene-nodoclint.patch * lucene-osgi-manifests.patch + rediff to changed context- Avoid xerces-j2 on classpath * fixes build after apache-ivy upgrade to 2.5.2- Do not depend on jtidy, since it is not used during build- Added patch: * lucene-nodoclint.patch + Do not abort compilation on html5 errors with javadoc 17- Upgrade to version 8.5.0 * API Changes: + LUCENE-9093: Change in behavior of the UnifiedHighlighter's LengthGoalBreakIterator that will yield Passages sized a little different due to the fact that the sizing pivot is now the center of the first match and not its left edge. + LUCENE-9116: PostingsWriterBase and PostingsReaderBase no longer support setting a field's metadata via a 'long[]'. + LUCENE-9116: The FSTOrd postings format has been removed. + LUCENE-8369: Remove obsolete spatial module. + LUCENE-8621: Refactor LatLonShape, XYShape, and all query and utility classes to core. + LUCENE-9218: XY geometries API works in float space. + LUCENE-9212: Intervals.multiterm() takes CompiledAutomaton rather than plain Automaton + LUCENE-9150: Restore support for dynamic PlanetModel in spatial3d. + LUCENE-9171: QueryBuilder.newTermQuery() and .newSynonymQuery() now take boost parameters. + LUCENE-9029: Deprecate SloppyMath toRadians/toDegrees in favor of Java Math. + LUCENE-8620: Add CONTAINS support for LatLonShape and XYShape. + LUCENE-9050: MultiTermIntervalsSource.visit() was not calling back to its visitor. + LUCENE-8909: IndexWriter#getFieldNames() method is used to get fields present in index. After LUCENE-8316, this method is no longer required. Hence, deprecate IndexWriter#getFieldNames() method. + LUCENE-8755: SpatialPrefixTreeFactory now consumes the "version" parsed with Lucene's Version class. The quad and packed quad prefix trees are sensitive to this. It's recommended to pass the version like you should do likewise for analysis components for tokenized text, or else changes to the encoding in future versions may be incompatible with older indexes. + LUCENE-8956: QueryRescorer now only sorts the first topN hits instead of all initial hits. + LUCENE-8921: IndexSearcher.termStatistics() no longer takes a TermStates; it takes the docFreq and totalTermFreq. And don't call if docFreq <= 0. The previous implementation survives as deprecated and final. It's removed in 9.0. + LUCENE-8990: PointValues#estimateDocCount(visitor) estimates the number of documents that would be matched by the given IntersectVisitor. THe method is used to compute the cost() of ScorerSuppliers instead of PointValues#estimatePointCount(visitor). + LUCENE-8865: IndexSearcher now uses Executor instead of ExecutorService. This change is fully backwards compatible since ExecutorService directly implements Executor. + LUCENE-8856: Intervals queries have moved from the sandbox to the queries module. + LUCENE-8893: Intervals.wildcard() and Intervals.prefix() methods now take BytesRef rather than String. + LUCENE-3041: A query introspection API has been added. Queries should implement a visit() method, taking a QueryVisitor, and either pass the visitor down to any child queries, or call a visitX() or consumeX() method on it. All locations in the code that called Weight.extractTerms() have been changed to use this API, and the extractTerms() method has been deprecated. + LUCENE-8735: Directory.getPendingDeletions is now abstract to ensure subclasses override it. FilterDirectory now delegates the call, ensuring correct default behaviour for subclasses. + LUCENE-8662: TermsEnum.seekExact(BytesRef) to abstract and delegate seekExact(BytesRef) in FilterLeafReader.FilterTermsEnum. + LUCENE-8469: Deprecated StringHelper.compare has been removed. + LUCENE-8039: Introduce a "delta distance" method set to GeoDistance. This allows distance calculations, especially for paths, to take into account an "excursion" to include the specified point. + LUCENE-8007: Index statistics Terms.getSumDocFreq(), Terms.getDocCount() are now required to be stored by codecs. Additionally, TermsEnum.totalTermFreq() and Terms.getSumTotalTermFreq() are now required: if frequencies are not stored they are equal to TermsEnum.docFreq() and Terms.getSumDocFreq(), respectively, because all freq() values equal 1. + LUCENE-8038: Deprecated PayloadScoreQuery constructors have been removed + LUCENE-8014: Similarity.computeSlopFactor() and Similarity.computePayloadFactor() have been removed + LUCENE-7996: Queries are now required to produce positive scores. + LUCENE-8099: CustomScoreQuery, BoostedQuery and BoostingQuery have been removed + LUCENE-8012: Explanation now takes Number rather than float + LUCENE-8116: SimScorer now only takes a frequency and a norm as per-document scoring factors. + LUCENE-8113: TermContext has been renamed to TermStates, and can now be constructed lazily if term statistics are not required + LUCENE-8242: Deprecated method IndexSearcher#createNormalizedWeight() has been removed + LUCENE-8267: Memory codecs removed from the codebase (MemoryPostings, MemoryDocValues). + LUCENE-8144: Moved QueryCachingPolicy.ALWAYS_CACHE to the test framework. + LUCENE-8356: StandardFilter and StandardFilterFactory have been removed + LUCENE-8373: StandardAnalyzer.ENGLISH_STOP_WORD_SET has been removed + LUCENE-8388: Unused PostingsEnum#attributes() method has been removed + LUCENE-8405: TopDocs.maxScore is removed. IndexSearcher and TopFieldCollector no longer have an option to compute the maximum score when sorting by field. + LUCENE-8411: TopFieldCollector no longer takes a fillFields option, it now always fills fields. + LUCENE-8412: TopFieldCollector no longer takes a trackDocScores option. Scores need to be set on top hits via TopFieldCollector#populateScores instead. + LUCENE-6228: A new Scorable abstract class has been added, containing only those methods from Scorer that should be called from Collectors. LeafCollector.setScorer() now takes a Scorable rather than a Scorer. + LUCENE-8475: Deprecated constants have been removed from RamUsageEstimator. + LUCENE-8483: Scorers may no longer take null as a Weight + LUCENE-8352: TokenStreamComponents is now final, and can take a Consumer in its constructor + LUCENE-8498: LowerCaseTokenizer has been removed, and CharTokenizer no longer takes a normalizer function. + LUCENE-7875: Moved MultiFields static methods out of the class. getLiveDocs is now in MultiBits which is now public. getMergedFieldInfos and getIndexedFields are now in FieldInfos. getTerms is now in MultiTerms. getTermPositionsEnum and getTermDocsEnum were collapsed and renamed to just getTermPostingsEnum and moved to MultiTerms. + LUCENE-8513: MultiFields.getFields is now removed. Please avoid this class, and Fields in general, when possible. + LUCENE-8497: MultiTermAwareComponent has been removed, and in its place TokenFilterFactory and CharFilterFactory now expose type-safe normalize() methods. This decouples normalization from tokenization entirely. + LUCENE-8597: IntervalIterator now exposes a gaps() method that reports the number of gaps between its component sub-intervals. This can be used in a new filter available via Intervals.maxgaps(). + LUCENE-8609: Remove IndexWriter#numDocs() and IndexWriter#maxDoc() in favor of IndexWriter#getDocStats(). * Changes in Runtime Behavior + LUCENE-8671: Load FST off-heap also for ID-like fields if reader is not opened from an IndexWriter. + LUCENE-8730: WordDelimiterGraphFilter always emits its original token first. This brings its behaviour into line with the deprecated WordDelimiterFilter, so that the only difference in output between the two is in the position length attribute. + LUCENE-7386: Disjunctions nested in disjunctions are now flattened. This might trigger changes in the produced scores due to changes to the order in which scores of sub clauses are summed up. + LUCENE-8756: MoreLikeThisQuery now respects custom term frequencies (TermFrequencyAttribute) at search time + LUCENE-8333: Switch MoreLikeThis.setMaxDocFreqPct to use maxDoc instead of numDocs. + LUCENE-7837: Indices that were created before the previous major version will now fail to open even if they have been merged with the previous major version. + LUCENE-8020: Similarities are no longer passed terms that don't exist by queries such as SpanOrQuery, so scoring formulas no longer require divide-by-zero hacks. IndexSearcher.termStatistics/collectionStatistics return null instead of returning bogus values for a non-existent term or field. + LUCENE-7996: FunctionQuery and FunctionScoreQuery now return a score of 0 when the function produces a negative value. + LUCENE-8116: Similarities now score fields that omit norms as if the norm was 1. This might change score values on fields that omit norms. + LUCENE-8134: Index options are no longer automatically downgraded. + LUCENE-8031: Length normalization correctly reflects omission of term frequencies. + LUCENE-7444: StandardAnalyzer no longer defaults to removing English stopwords + LUCENE-8060: IndexSearcher's search and searchAfter methods now only compute total hit counts accurately up to 1,000 in order to enable top-hits optimizations such as block-max WAND (LUCENE-8135). + LUCENE-8505: IndexWriter#addIndices will now fail if the target index is sorted but the candidate is not. + LUCENE-8535: Highlighter and FVH doesn't support ToParent and ToChildBlockJoinQuery out of the box anymore. In order to highlight on Block-Join Queries a custom WeightedSpanTermExtractor / FieldQuery should be used. + LUCENE-8563: BM25 scores don't include the (k1+1) factor in their numerator anymore. This doesn't affect ordering as this is a constant factor which is the same for every document. + LUCENE-8509: WordDelimiterGraphFilter will no longer set the offsets of internal tokens by default, preventing a number of bugs when the filter is chained with tokenfilters that change the length of their tokens + LUCENE-8633: IntervalQuery scores do not use term weighting any more, the score is instead calculated as a function of the sloppy frequency of the matching intervals. + LUCENE-8635: FSTs can now remain off-heap, accessed via IndexInput, and the default codec's term dictionary (BlockTreeTermsReader) will now leave the FST for the terms index off-heap for non-primary-key fields using MMapDirectory, reducing heap usage for such fields. * New Features: + LUCENE-8903: Add LatLonShape and XYShape point query. + LUCENE-8707: Add LatLonShape and XYShape distance query. + LUCENE-9238: New XYPointField field and Queries for indexing, searching and sorting cartesian points. + LUCENE-8936: Add SpanishMinimalStemFilter + LUCENE-8764 LUCENE-8945: Add "export all terms and doc freqs" feature to Luke with delimiters. + LUCENE-8747: Composite Matches from multiple subqueries now allow access to their submatches, and a new NamedMatches API allows marking of subqueries and a simple way to find which subqueries have matched on a given document + LUCENE-8769: Introduce Range Query For Multiple Connected Ranges + LUCENE-8960: Introduce LatLonDocValuesPointInPolygonQuery for LatLonDocValuesField + LUCENE-8753: New UniformSplitPostingsFormat (name "UniformSplit") primarily benefiting in simplicity and extensibility. New STUniformSplitPostingsFormat (name "SharedTermsUniformSplit") that shares a single internal term dictionary across fields. + LUCENE-8632: New XYShape Field and Queries for indexing and searching general cartesian geometries. + LUCENE-8891: Snowball stemmer/analyzer for the Estonian language. + LUCENE-8815: Provide a DoubleValues implementation for retrieving the value of features without requiring a separate numeric field. Note that as feature values are stored with only 8 bits of mantissa the values returned may have a delta from the original values indexed. + LUCENE-8803: Provide a FeatureSortfield to allow sorting search hits by descending value of a feature. This is exposed via the factory method FeatureField#newFeatureSort. + LUCENE-8784: The KoreanTokenizer now preserves punctuations if discardPunctuation is set to false (defaults to true). + LUCENE-8812: Add new KoreanNumberFilter that can change Hangul character to number and process decimal point. It is similar to the JapaneseNumberFilter. + LUCENE-8362: Add doc-value support to range fields. + LUCENE-8766: Add monitor subproject (previously Luwak monitoring library). This allows a stream of documents to be matched against a set of registered queries in an efficien manner, for use as a monitoring or classification tool. + LUCENE-7714: Add a numeric range query in sandbox that takes advantage of index sorting. + LUCENE-8859: The completion suggester's postings format now have an option to load its internal FST off-heap. + LUCENE-2562: The well-known graphical user interface for inspecting Lucene indexes "Luke" was added as a Lucene module. It can be started from the binary distribution by calling the shell scripts in the module folder or from the source checkout by using 'ant -f lucene/luke/build.xml run'. Luke provides a Swing-based user interface and can be used to open Lucene or Solr (or Elasticsearch) indexes, inspect documents, check index commits and segments, or test (custom) analyzers. It also has maintenance functions to check index structures and force merge indexes for archival. + LUCENE-8340: LongPoint#newDistanceFeatureQuery may be used to boost scores based on how close a value of a long field is from a configurable origin. This is typically useful to boost by recency. + LUCENE-8482: LatLonPoint#newDistanceFeatureQuery may be used to boost scores based on the haversine distance of a LatLonPoint field to a provided point. This is typically useful to boost by distance. + LUCENE-8216: Added a new BM25FQuery in sandbox to blend statistics across several fields using the BM25F formula. + LUCENE-8564: GraphTokenFilter is an abstract class useful for token filters that need to read-ahead in the token stream and take into account graph structures. This also changes FixedShingleFilter to extend GraphTokenFilter + LUCENE-8612: Intervals.extend() treats an interval as if it covered a wider span than it actually does, allowing users to force minimum gaps between intervals in a phrase. + LUCENE-8629: New interval functions: Intervals.before(), Intervals.after(), Intervals.within() and Intervals.overlapping(). + LUCENE-8622: Adds a minimum-should-match interval function that produces intervals spanning a subset of a set of sources. + LUCENE-8645: Intervals.fixField() allows you to report intervals from one field as if they came from another. + LUCENE-8646: New interval functions: Intervals.prefix() and Intervals.wildcard() + LUCENE-8655: Add a getter in FunctionScoreQuery class in order to access to the underlying DoubleValuesSource. + LUCENE-8697: GraphTokenStreamFiniteStrings correctly handles side paths containing gaps + LUCENE-8702: Simplify intervals returned from vararg Intervals factory methods * Improvements: + LUCENE-9149: Increase data dimension limit in BKD. + LUCENE-9102: Add maxQueryLength option to DirectSpellchecker. + LUCENE-9091: UnifiedHighlighter HTML escaping should only escape essentials + LUCENE-9105: UniformSplit postings format detects corrupted index and better handles IO exceptions. + LUCENE-9106: UniformSplit postings format allows extension of block/line serializers. + LUCENE-9093: UnifiedHighlighter's LengthGoalBreakIterator has a new fragmentAlignment option to better center the first match in the passage. Also the sizing point now pivots at the center of the first match term and not its left edge. This yields Passages that won't be identical to the previous behavior. + LUCENE-9153: Allow WhitespaceAnalyzer to set a maxTokenLength other than the default of 255 + LUCENE-9152: Improve line intersections with polygons when they are touching from the outside. + LUCENE-9123: Add new JapaneseTokenizer constructors with discardCompoundToken option that controls whether the tokenizer emits original (compound) tokens when the mode is not NORMAL. + UCENE-9253: KoreanTokenizer now supports custom dictionaries(system, unknown). + LUCENE-9171: QueryBuilder can now use BoostAttributes on input token streams to selectively boost particular terms or synonyms in parsed queries. + LUCENE-9002: Skip costly caching clause in LRUQueryCache if it makes the query many times slower. + LUCENE-9006: WordDelimiterGraphFilter's catenateAll token is now ordered before any token parts, like WDF did. + LUCENE-9028: introducing Intervals.multiterm() + LUCENE-9018: ConcatenateGraphFilter now has a configurable separator. + LUCENE-9036: ExitableDirectoryReader may interupt scaning over DocValues + LUCENE-9062: QueryVisitor now has a consumeTermsMatching() method, allowing queries that match a class of terms to pass a ByteRunAutomaton matching those that class back to the visitor. + LUCENE-9073: IntervalQuery to respond field on toString() and explain() + LUCENE-8874: Show SPI names instead of class names in Luke Analysis tab. + LUCENE-8894: Add APIs to find SPI names for Tokenizer/CharFilter/TokenFilter factory classes. + LUCENE-8914: move the logic for discarding inner modes in FloatPointNearestNeighbor to the IntersectVisitor so we take advantage of the change introduced in LUCENE-7862. + LUCENE-8955: move the logic for discarding inner modes in LatLonPoint NearestNeighbor to the IntersectVisitor so we take advantage of the change introduced in LUCENE-7862. + LUCENE-8918: PhraseQuery throws exceptions at construction time if it is passed null arguments. + LUCENE-8916: GraphTokenStreamFiniteStrings preserves all Token attributes through its finite strings TokenStreams + LUCENE-8933: Check kuromoji user dictionary beforehand to avoid unexpected runtime exceptions. (Tomoko Uchida + LUCENE-8906: Expose Lucene50PostingsFormat.IntBlockTermState as public so that other postings formats can re-use it. + LUCENE-8942: Remove redundant parameters and improve visibility strictness in LRUQueryCache + SOLR-13663: Introduce into XML Query Parser + LUCENE-8952: Use a sort key instead of true distance in NearestNeighbor + LUCENE-8620: Tessellator labels the edges of the generated triangles whether they belong to the original polygon. This information is added to the triangle encoding. + LUCENE-8964: Fix geojson shape parsing on string arrays in properties + LUCENE-8976: Use exact distance between point and bounding rectangle in FloatPointNearestNeighbor. + LUCENE-8966: The Korean analyzer now splits tokens on boundaries between digits and alphabetic characters. + LUCENE-8984: MoreLikeThis MLT is biased for uncommon fields + LUCENE-7840: Non-scoring BooleanQuery now removes SHOULD clauses before building the scorer supplier as opposed to eliminating them during scoring construction. + LUCENE-8770: BlockMaxConjunctionScorer now leverages two-phase iterators in order to avoid executing the second phase when scorers don't intersect. + LUCENE-8781: FST lookup performance has been improved in many cases by encoding Arcs using full-sized arrays with gaps. The new encoding is enabled for postings in the default codec and for suggesters. + LUCENE-8818: Fix smokeTestRelease.py encoding bug + LUCENE-8845: Allow Intervals.prefix() and Intervals.wildcard() to specify their maximum allowed expansions + LUCENE-8875: Introduce a Collector optimized for use cases when large number of hits are requested + LUCENE-8848 LUCENE-7757 LUCENE-8492: The UnifiedHighlighter now detects that parts of the query are not understood by it, and thus it should not make optimizations that result in no highlights or slow highlighting. This generally works best for WEIGHT_MATCHES mode. Consequently queries produced by ComplexPhraseQueryParser and the surround QueryParser will now highlight correctly. + LUCENE-8793: Luke enhanced UI for CustomAnalyzer: show detailed analysis steps. + LUCENE-8855: Add Accountable to some Query implementations + LUCENE-8673: Use radix partitioning when merging dimensional points instead of sorting all dimensions before hand. + LUCENE-8687: Optimise radix partitioning for points on heap. + LUCENE-8699: Change HeapPointWriter to use a single byte array instead to a list of byte arrays. In addition a new interface PointValue is added to abstract out the different formats between offline and on-heap writers. + LUCENE-8703: Build point writers in the BKD tree only when they are needed. + LUCENE-8652: SynonymQuery can now deboost the document frequency of each term when blending the score of the synonym. + LUCENE-8631: The Korean's user dictionary now picks the longest-matching word and discards the other matches. + LUCENE-8732: ConstantScoreQuery can now early terminate the query if the minimum score is greater than the constant score and total hits are not requested. + LUCENE-8750: Implements setMissingValue() on sort fields produced from DoubleValuesSource and LongValuesSource + LUCENE-8701: ToParentBlockJoinQuery now creates a child scorer that disallows skipping over non-competitive documents if the score of a parent depends on the score of multiple children (avg, max, min). Additionally the score mode 'none' that assigns a constant score to each parent can early terminate top scores's collection. + LUCENE-8751: Weight#matches now use the ScorerSupplier to build scorers with a lead cost of 1 (single document). + LUCENE-8752: Japanese new era name '令和' (Reiwa) is added to the dictionary used in JapaneseTokenizer so that the analyzer handles the era name correctly. Reiwa is set to replace the Heisei Era on May 1, 2019. + LUCENE-8671: Introduced reader attributes allows a per IndexReader configuration of codec internals. This enables a per reader configuration if FSTs are on- or off-heap on a per field basis + LUCENE-8787: spatial-extras DateRangePrefixTree used to only parse ISO-8601 timestamps with 0 or 3 digits of milliseconds precision but now parses other lengths (although > 3 not used). + LUCENE-7997: Add BaseSimilarityTestCase to sanity check similarities. SimilarityBase switches to 64-bit doubles internally to help avoid common numeric issues. Add missing range checks for similarity parameters. Improve BM25 and ClassicSimilarity's explanations. + LUCENE-8011: Improved similarity explanations. + LUCENE-4198: Codecs now have the ability to index score impacts. + LUCENE-8135: Boolean queries now implement the block-max WAND algorithm in order to speed up selection of top scored documents. + LUCENE-8279: CheckIndex now cross-checks terms with norms. + LUCENE-8660: TopDocsCollectors now return an accurate count (instead of a lower bound) if the total hit count is equal to the provided threshold. * Optimizations + LUCENE-9211: Add compression for Binary doc value fields. + LUCENE-4702: Better compression of terms dictionaries. + LUCENE-9228: Sort dvUpdates in the term order before applying if they all update a single field to the same value. This optimization can reduce the flush time by around 20% for the docValues update user cases. + LUCENE-9245: Reduce AutomatonTermsEnum memory usage. + LUCENE-9237: Faster UniformSplit intersect TermsEnum. + LUCENE-9068: FuzzyQuery builds its Automaton up-front + LUCENE-9113: Faster merging of SORTED/SORTED_SET doc values. + LUCENE-9125: Optimize Automaton.step() with binary search and introduce Automaton.next(). + LUCENE-9147: The index of stored fields and term vectors in now off-heap. + LUCENE-8928: When building a kd-tree for dimensions n > 2, compute exact bounds for an inner node every N splits to improve the quality of the tree. N is defined by SPLITS_BEFORE_EXACT_BOUNDS which is set to 4. + BaseDirectoryReader no longer sums up the 'LeafReader#numDocs' of its leaves eagerly. This especially helps when creating views of readers that hide documents, since computing the number of live documents is an expensive operation. + LUCENE-8992: TopFieldCollector and TopScoreDocCollector can now share minimum scores across leaves concurrently. + LUCENE-8932: BKDReader's index is now stored off-heap when the IndexInput is an instance of ByteBufferIndexInput. + LUCENE-9024: IntroSelector now falls back to the median of medians algorithm instead of sorting when the maximum recursion level is exceeded, providing better worst-case runtime. + LUCENE-8920: The denser arcs of FST now index labels with a bitset in order to provide near constant time access. + LUCENE-9027: Use SIMD instructions to decode postings. + LUCENE-9049: Remove FST cached root arcs now redundant with labels indexed by bitset. This frees some on-heap FST space. + LUCENE-9045: Do not use TreeMap/TreeSet in BlockTree and PerFieldPostingsFormat. + LUCENE-8922: DisjunctionMaxQuery more efficiently leverages impacts to skip non-competitive hits. + LUCENE-8935: BooleanQuery with no scoring clause can now early terminate the query when the total hits is not requested. + LUCENE-8941: Matches on wildcard queries will defer building their full disjunction until a MatchesIterator is pulled + LUCENE-8755: spatial-extras quad and packed quad prefix trees now index points faster. + LUCENE-8860: add additional leaf node level optimizations in LatLonShapeBoundingBoxQuery. + LUCENE-8968: Improve performance of WITHIN and DISJOINT queries for Shape queries by doing just one pass whenever possible. + LUCENE-8939: Introduce shared count based early termination across multiple slices + LUCENE-8980: Blocktree's seekExact now short-circuits false if the term isn't in the min-max range of the segment. Large perf gain for ID/time like data when populated sequentially. + LUCENE-8796: Use exponential search instead of binary search in IntArrayDocIdSet#advance method + LUCENE-8865: Use incoming thread for execution if IndexSearcher has an executor. Now caller threads execute at least one search on an index even if there is an executor provided to minimize thread context switching. + LUCENE-8868: New storing strategy for BKD tree leaves with low cardinality. It stores the distinct values once with the cardinality value reducing the storage cost. + LUCENE-8885: Optimise BKD reader by exploiting cardinality information stored on leaves. + LUCENE-8896: Override default implementation of IntersectVisitor#visit(DocIDSetBuilder, byte[]) for several queries. + LUCENE-8901: Load frequencies lazily only when needed in BlockDocsEnum and BlockImpactsEverythingEnum + LUCENE-8888: Optimize distribution of points with data dimensions in BKD tree leaves. + LUCENE-8311: Phrase queries now leverage impacts. + LUCENE-8040: Optimize IndexSearcher.collectionStatistics, avoiding MultiFields/MultiTerms + LUCENE-4100: Disjunctions now support faster collection of top hits when the total hit count is not required. + LUCENE-7993: Phrase queries are now faster if total hit counts are not required. + LUCENE-8109: Boolean queries propagate information about the minimum competitive score in order to make collection faster if there are disjunctions or phrase queries as sub queries, which know how to leverage this information to run faster. + LUCENE-8439: Disjunction max queries can skip blocks to select the top documents if the total hit count is not required. + LUCENE-8204: Boolean queries with a mix of required and optional clauses are now faster if the total hit count is not required. + LUCENE-8448: Boolean queries now propagates the mininum score to their sub-scorers. + LUCENE-8511: MultiFields.getIndexedFields is now optimized; does not call getMergedFieldInfos + LUCENE-8507: TopFieldCollector can now update the minimum competitive score if the primary sort is by relevancy and the total hit count is not required. + LUCENE-8464: ConstantScoreScorer now implements setMinCompetitveScore in order to early terminate the iterator if the minimum score is greater than the constant score. + LUCENE-8607: MatchAllDocsQuery can shortcut when total hit count is not required + LUCENE-8585: Index-time jump-tables for DocValues, for O(1) advance when retrieving doc values. * Bug Fixes + LUCENE-9084: Fix potential deadlock due to circular synchronization in AnalyzingInfixSuggester + LUCENE-9115: NRTCachingDirectory no longer caches files of unknown size. + LUCENE-9144: Fix error message on OneDimensionBKDWriter when too many points are added to the writer. + LUCENE-9135: Make UniformSplit FieldMetadata counters long. + LUCENE-9200: Fix TieredMergePolicy to use double (not float) math to make its merging decisions, fixing a corner-case bug uncovered by fun randomized tests + LUCENE-9099: Unordered and Ordered interval queries now correctly handle repeated subterms - ordered intervals could supply an 'extra' minimized interval, resulting in odd matches when combined with eg CONTAINS queries; and unordered intervals would match duplicate subterms on the same position, so an query for UNORDERED(foo, foo) would match a document containing 'foo' only once. + LUCENE-9250: Add support for Circle2d#intersectsLine around the dateline. + LUCENE-9243: Add fudge factor when creating a bounding box of a XYCircle. + LUCENE-9239: Circle2D#WithinTriangle detects properly if a triangle is Within distance. + LUCENE-9251: Fix bug in the polygon tessellator where edges with different value on #isEdgeFromPolygon were bot filtered out properly. + LUCENE-9263: Fix wrong transformation of distance in meters to radians in Geo3DPoint. + LUCENE-9001: Fix race condition in SetOnce. + LUCENE-9030: Fix WordnetSynonymParser behaviour so it behaves similar to SolrSynonymParser. + LUCENE-9054: Fix reproduceJenkinsFailures.py to not overwrite junit XML files when retrying + LUCENE-9031: UnsupportedOperationException on MatchesIterator.getQuery() + LUCENE-8996: maxScore was sometimes missing from distributed grouped responses. + LUCENE-9055: Fix the detection of lines crossing triangles through edge points. + LUCENE-9103: Disjunctions can miss some hits in some rare conditions. + LUCENE-8755: spatial-extras quad and packed quad prefix trees could throw a NullPointerException for certain cell edge coordinates + LUCENE-9005: BooleanQuery.visit() would pull subVisitors from its parent visitor, rather than from a visitor for its own specific query. This could cause problems when BQ was nested under another BQ. Instead, we now pull a MUST subvisitor, pass it to any MUST subclauses, and then pull SHOULD, MUST_NOT and FILTER visitors from it rather than from the parent. + LUCENE-8831: Fixed LatLonShapeBoundingBoxQuery .hashCode methods. + LUCENE-8775: Improve tessellator to handle better cases where a hole share a vertex with the polygon. + LUCENE-8785: Ensure new threadstates are locked before retrieving the number of active threadstates. This causes assertion errors and potentially broken field attributes in the IndexWriter when IndexWriter#deleteAll is called while actively indexing. + LUCENE-8804: Forbid calls to putAttribute on frozen FieldType instances. + LUCENE-8828: Removes the buggy 'disallow overlaps' boolean from Intervals.unordered(), and replaces it with a new Intervals.unorderedNoOverlaps() method + LUCENE-8843: Don't ignore exceptions that are thrown when trying to open a file in IOUtils#fsync. + LUCENE-8835: FileSwitchDirectory now respects the file extension when listing directory contents to ensure we don't expose pending deletes if both directory point to the same underlying filesystem directory. + LUCENE-8853: FileSwitchDirectory now applies best effort to place tmp files in the same directory as the target files. + LUCENE-8892: Add missing closing parentheses in MultiBoolFunction's description() + LUCENE-8736: LatLonShapePolygonQuery returns incorrect WITHIN results with shared boundaries. Point in Polygon now correctly includes boundary points. Box and Polygon relations with triangles have also been improved to correctly include boundary points. + LUCENE-8712: Polygon2D does not detect crossings through segment edges. + LUCENE-8720: NameIntCacheLRU (in the facets module) had an int overflow bug that disabled cleaning of the cache + LUCENE-8726: ValueSource.asDoubleValuesSource() could leak a reference to IndexSearcher + LUCENE-8719: FixedShingleFilter can miss shingles at the end of a token stream if there are multiple paths with different lengths. + LUCENE-8688: TieredMergePolicy#findForcedMerges now tries to create the cheapest merges that allow the index to go down to 'maxSegmentCount' segments or less. + LUCENE-8477: Interval disjunctions could miss valid hits if some of the clauses of the disjunction are minimized away. We now rewrite intervals if a source contains a disjunction and the internal gaps matter for matching. This behaviour can be disabled if users are more interested in speed rather than accuracy of matching. + LUCENE-8741: ValueSource.fromDoubleValuesSource() was casting to Scorer instead of Scorable, leading to ClassCastExceptions + LUCENE-8754: Fix ConcurrentModificationException in SegmentInfo if attributes are accessed in MergePolicy while the merge is running + LUCENE-8765: Fixed validation of the number of added points in KD trees. * Other + LUCENE-9109: Backport some changes from master (except StackWalker) to improve TestSecurityManager + LUCENE-9110: Backport refactored stack analysis in tests to use generalized LuceneTestCase methods + LUCENE-9141: Simplify LatLonShapeXQuery API by adding a new abstract class called LatLonGeometry. Queries are executed with input objects that extend such interface. + LUCENE-9194: Simplify XYShapeXQuery API by adding a new abstract class called XYGeometry. Queries are executed with input objects that extend such interface. + LUCENE-9096: Simplification of CompressingTermVectorsWriter#flushOffsets. + LUCENE-9225: Rectangle extends LatLonGeometry so it can be used in a geometry collection. + LUCENE-8979: Code Cleanup: Use entryset for map iteration wherever possible. - Part 2 + LUCENE-8746: Refactor EdgeTree - Introduce a Component tree that represents the tree of components (e.g polygons). Edge tree is now just a tree of edges. + LUCENE-8994: Code Cleanup - Pass values to list constructor instead of empty constructor followed by addAll(). + LUCENE-9046: Fix wrong example in Javadoc of TermInSetQuery + LUCENE-8983: Add sandbox PhraseWildcardQuery to control multi-terms expansions in a phrase. + LUCENE-9067: Polygon2D#contains() is now thread safe. + LUCENE-8778 LUCENE-8911 LUCENE-8957: Define analyzer SPI names as static final fields and document the names in Javadocs. + LUCENE-8758: QuadPrefixTree: removed levelS and levelN fields which weren't used. + LUCENE-8975: Code Cleanup: Use entryset for map iteration wherever possible. + LUCENE-8993, LUCENE-8807: Changed all repository and download references in build files to HTTPS. + LUCENE-8998: Fix OverviewImplTest.testIsOptimized reproducible failure. + LUCENE-8999: LuceneTestCase.expectThrows now propogates assert/assumption failures up to the test w/o wrapping in a new assertion failure unless the caller has explicitly expected them + LUCENE-8062: GlobalOrdinalsWithScoreQuery is no longer eligible for query caching. + LUCENE-8847: Code Cleanup: Remove StringBuilder.append with concatenated strings. + LUCENE-8861: Script to find open Github PRs that needs attention + LUCENE-8852: ReleaseWizard tool for release managers + LUCENE-8838: Remove support for Steiner points on Tessellator. + LUCENE-8879: Improve BKDRadixSelector tests. + LUCENE-8886: Fix TestMutablePointsReaderUtils tests. + LUCENE-8680: Refactor EdgeTree#relateTriangle method. + LUCENE-8685: Refactor LatLonShape tests. + LUCENE-8713: Add Line2D tests. + LUCENE-8729: Workaround: Disable accessibility doclints (Java 13+), so compilation with recent JDK succeeds. + LUCENE-8725: Make TermsQuery.SeekingTermSetTermsEnum a top level class and public * Build + Upgrade forbiddenapis to version 2.7; upgrade Groovy to 2.4.17. + LUCENE-9041: Upgrade ecj to 3.19.0 to fix sporadic precommit javadoc issues * Test Framework + LUCENE-8825: CheckHits now display the shard index in case of mismatch between top hits. - Modified patches: * 0001-Disable-ivy-settings.patch * 0002-Dependency-generation.patch * lucene-java8compat.patch * lucene-osgi-manifests.patch + rediff to changed context - Added patch: * lucene-missing-dependencies.patch + patch out dependencies that are not needed for modules that we distribute + patch out dependencies on jars that we don't build + add target for the new monitor jars- Modified patch: * lucene-osgi-manifests.patch + add the OSGi manifest to queryparser module too- Modified patch: * lucene-osgi-manifests.patch + add the OSGi manifests also to modules that are currently not built due to missing dependencies- Remove a bogus log4j build dependency- Fix property Provides and Obsoletes in order to make upgrade smooth - Added patch: * lucene-osgi-manifests.patch + Patch the build to produce OSGi manifests needed by eclipse - Install the artifacts to "lucene" subdirectory and create compatibility symlinks - Install lucene-misc as archful artifact, since it contains JNI code- Upgrade to version 7.1.0 - Added patches: * 0001-Disable-ivy-settings.patch * 0002-Dependency-generation.patch + Sync with Fedora's 7.1.0 * lucene-java8compat.patch + Avoid using java9+ only functions- Remove the parent references from the pom files, since we are not building lucene using maven. - Overhaul the packaging to distribute the artifacts and the corresponding metadata and pom files in the same package - Specify runtime dependencies of the different packages - Remove version information from the artifact names- Remove the JPP prefix from pom filenames- Remove dependency on jline, because nothing in the build uses it- Require the different apache-commons-* packages instead of jakarta-commons-*- Do not require asm to build. Nothing depends on it- Minimum supported java is 1.8- Remove unused "%package javadoc" declaration block. - Trim filler words from descriptions. Say a thing about features.- Update to version 6.6.0: + See https://lucene.apache.org/core/6_6_0/changes/Changes.html for a full list of changes. - Drop patches that are no longer applicable or needed: + lucene-no-classpath-in-manifest.patch + lucene-no-get.patch + lucene-2.3.0-db-javadoc.patch - Add BuildRequires: antlr-java, apache-commons-codec, apache-ivy, asm, fdupes, git - Replace SOURCE0 by full source URL. - Update to changed list of non-core modules: + Update source URL's for corresponding pom files. + Update %%install section to reflect changed list + Each module corresponds to a subpackage, named according to its jar file (except lucene which corresponds to the main jar file lucene-core-%{version}.jar). - Adapt file list to changes.- New build dependency: javapackages-local- Fix build with new javapackages-toolslucene-analysish04-ch1b 17174795508.11.2-150200.4.7.18.11.2-150200.4.7.18.11.28.11.28.11.28.11.2-150200.4.7.1lucenelucene-analyzers-common.jarlucene-analyzers-common.jarlucene-analyzers-common.xmllucenelucene-analyzers-common.pom/usr/share/java//usr/share/java/lucene//usr/share/maven-metadata//usr/share/maven-poms//usr/share/maven-poms/lucene/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:34130/SUSE_SLE-15-SP2_Update/7b8c064d90394e0c56f1b107a812940b-lucene.SUSE_SLE-15-SP2_Updatedrpmxz5x86_64-suse-linuxdirectorygzip ERROR: Stdin has more than one entry--rest ignored (Zip archive data, at least v1.0 to extract Java archive data (JAR))ASCII textXML 1.0 document textPRPPRRRB#1`6Qhutf-8fe6d430425b1bc9eceed54f2839950bbfa4047723c889981f5288d83ba46e7e6?7zXZ !t/c]"k%8*@TB s;%|&Scn-\P(u[xYehiҸ"16ħ $d/1:< Hp6rIA*6jGd嶹o *^} beZ)fs|8b,@b/t0q" cr~`B*^7HPՔRZ2wsֶ8EK"#nFh‡HÍv8a*a׿Mu5$l^ox,TkΊ=IObahլuȔ{u7K4Տν1T)7ۤ)aA r BWYzgI.+#Bac_x -f}^GVH&"B==ڧ5m:hki կY 3O%_DA h_IJBzORU{w^e1K?]hj}YeDV3SMŒ|)hd0|' WG45^~EzȔlUBpr}PGWK[K;76sy!ݎh8ԲT7K%3uK8\t޸{R@ S=j*kzQva,0{ =,/>z1c\"xb쭨œӳKv#G(ApM-0I諡`QU 3%qR/z .T(:~ux^_>(vF s$ A|Azb>4x vcF9ڕ xjՔ*gA{FGSj@ai˜|xA0)>r]g\Y;{g! xOyrխGQZNܨTdji|["trsj |O3XR B'hnDS-'V /-dl3+V>3JMo4P$('ݱ>gx6r˟1KmwOʴPiyŬqDunA7Nj2'q>J3b'dLEctJWӵ+'ҟS3GmAh%KiHLb\+m®Lem܊A:ј&5p"rvj埳=КT>v66XPo>Y%;, \//%vNvXjޱ(ڃU{X5u,\R,Ոơ}z.]τN˒6[4s0 MI]:P+;nf62#сDdM5{?ْ}s2{#MQ]E ȴܸX`jq.);ieq8LR-\}L6;qKDt, iebO+^!EzufM r=`F;6*-'+8X$8i=ssfCKtۏ/Zsrvh7I4Ibòa1AtOz|x6Q]KMկTfQoN!^ZeIň>{dwKRb6㎝6lJo.E.gWZEr)C)vꦠYE"?̱zx.ݮK c[7jn"8U4+h{ne ,>Vh%n2\Ŝևˬ$NhgSb3VJ( kٴ‰bJe0\wvϪ M"@"AwΤuFE|^RE $WkϷknv.67 `ky R+'IRD Pu>N $w`G؂nXoђh4w`<"U 3D]_eē oVEME>s/OK}[]5"U|hlXړp0Uu\3l oӎ9Qyc@u~dǔmDja33biWΈuH= KM/wv3nN471h蟾\!&v*fc›#jV[EcJ/fN]SkcbܙV6!m $`9O{Z?r!4#`uGN[SNMX}s 3I1?_e} At}8u^&c\@] 'rOYU y RLk fbȂԦ9V狅`+0Q #9{1ৡY@T}|C~!?kJ5{HE*5N"A9soSLv-W7a(Lc;?:ZSe*h/ sK # IԗVԅ #Oƛdܔa唙bqx\%;FvԶ~!Is-$Nx^ᅁQD}F/#@#OhCrwԻ][㡉5+ty rtGþu)inzP*j3.ƪ+tiS}#c?MŠu[x':@ᮯf۠3nl+Ձaep)-M.\VE{p{f(fKd613#oy&BN adA)B7"cvp=a }`^-oQ 5փO7!ZR;(_%PqD$nMMi(^xzHqnKh -5i:ځ:3?b BVQH0 JC*\Sq[Ϊ6_7Xw8La|<ol3QP9-+>raf9SP?$ww+q{))a;`l# )$LEg?7{,X5Y+C2B bD)!` z'c5E~atmmL"f ,^E5$c[d,XLUS(UH !Z@ l=Tf5Ğ'4 %˛sf U,Vͥv=>ޖ!5 /2DlBGDl@ XD9J/r6@)vcua?ǃ Z-;>|OH8[3:{BV8iǒ xX-'Gtʌ5 b}d.R`QjUk;tbZoT "Eg\5Ȋp\ێʭq#XjZYf"8g+\4ڮ !g=Οa؁ދ) #REg:b㪬D·L2b'*8`; !ebn]p+-_,^ڄZ"B(V؄5V:a]ȩzLX$bf{~FHЈ,E>^gVЮ & 4A2AđVJIj~|mY\vqypNQ+x0\0e;cf$@?t?wPJe ?v$">vuKuZo2e^_"r b::M&UO`$.˜TrS#ۡv0 Tf)IѦkcaHg)92~"| fY@ WLM.2"Sjj!HeHEsfu@Q@.ݮ!*7!omJ^V/{)Jwv8:`r'j3Ҏ'kiWy2i Kw(~x})iZ~x2-[nhwWriY\ɵ uSJHT\n r߲*dqQϓ]e)ԙ.fvbΞN )tsCVܡZGclk3ݼT63^:|KrϑPv/>OUwp؟`p*w N<& ɲOoޒ̄U^\\\p qF3IEخV9gwTrQqNT KýiCF_VbaKt#i ah{:^hy x!h3EzwLyHBΜ"9*aK^]m>`ԫzX;#{`:$sֱHS[)g <8ua H3vLVQ?%-e҂ez=!*ǘ=3#Q2C%sg͵BMMk˳2CmfBS9a1 hnKJaTm9vz̕OHFPd"jq:dڤ@z-n;{7R#`E-R~y1i^'QӫMvwkL;g(1KbOX9A[àޔ$];rٴ'Ndϣ[?ftv:qZ\jH_OwS50=63"Hh)Nm <*z6H:n~;OB%Jt;]#\WhXJv#6rp`U`ln2?Y׾;0%: \=nh}Lq RT~@|GJ/7qBF֤^CؾO'4F Ry/Vƫ_JCIF+eLF3U׾71'y]B@4KvobRxŪ_<eR@3d(VLG+okD:i=x9AQsVߚT[hDoKjo[/}g(fie  O<1-.>M)B@)diL˞ۃX/A%t y< гmU"s+\(>7\&.oiiT>CΡy5#QH8,bNJ__^$OgrH\oRC1 ` qVjɟ&i~Xݮī[=BBxm{Ř]Jd\\H'0ǚ䮵H띆3[M.:W7q\F E^Dw2=wOɼjS"핅-a1 4k#휶Vy QLO /M;G,&Š.yì00E+/ 8:K?7(9L|x Ova}*p0 PVhHh`Pw~5QIR+Nf:H7q@N9<+Ge :T*(ʧİ֋b2?j7A&DI*D cy@*BcE^u<`Ҙ\nPJmʼn63*tY\{G'zQ)z,w-t0F[<7459oB6VV-1jieMH. `])&\ϒmT D*IqD֔I 78awlP>fn~ee߃( ՞@Q QtNSls[XX[*q|?gxcrII8:q#/VÛTr>@DmYư'9=RdӤ3O]v%ؐ}8maZ"o%l=oI)ܑ*d$ӄ l@@D"\^bϼ\2<~vzk)6@On'YDˑˌd 7Ye2PYF&)m|hQֻ@X@9+rtxt%"c7'[9U0Jݕ8s9E5/jZzoC6!OXfQܬ!EHڴ>@C/tϕ'F WpW( A5[֖)aZ1Jq5LX]]-2*m_*G N|jC% c3kp ݆4iKY|v4uFݒDƴ'/Շ4}VYڰ} J&a遺SC8`(?S/^ar·؈26p*^ȃ#uvAH&{"X?u\⹿4,M. 8Yt;m=ݮeߴ虇2*LՇh=f%'lФBf1c,qCApBĢ&6rAy(j%ay $hr[cq5VІgO/ֺߖ}0+z V<J&K  wh 2 Dێ5f?" BRݟ s4+Jg]>MFN_BgRT!ru?7M)nmIXayʺLB!#HK* q (3'&MH܆c4f>ֲÂL {{1PYl`.?h_W;Xucv+OJPs} W-|<"(~yCqbKE?pz{u.qh ~N,U>R SC|1;mm?Dx`@ #-F$gdeBz[QDoCLv^VCmnXCC"3.qzsikU$[:pQaWJ%U4xkG+WI/"8$EC˩5<58OG Ef6kܤxsS7ƈ VђT!J2Nl#,^|ORnyRILFuv< &i­EY7+=) Q ̢HՉs 4\V @OÊѤY g=CQ=_ܒj^7C6vX.*#â}A@"0z6(Lc^+DEP="{pDPy AP̫?А32xrzf;>*/0ƗfcuF{3\9  D7J>~E3' uސ~>E DٚLA-O7;E<`n};_an^&v8!mJp͆vM'i4l@Eu9lT򱲿(\yHWΰߓ [ 5y_ Av@H5OiLUJ >nAGiBfjn ].45 ѷ"\#dRf^0iwr1Mþhq?V3隁14K}P ^q/tѡM -+f` s+Nף ^"fVzsջ j ~Ƭ!E&M$ B2V/wT6/bU41k2gZ)nJ)P-j0B.&V;6%̗i-Ýޙ*fu)Dz O]) p^ݖ<Ɂװ%jdCdrSD2rTɊ˚Rzϰ!; PlQB8GhJCH=dz\j,㦊~,^9YHpwǞiR޼Xb3L'%HY]~l rg"8^T9!)?GԬ獝z1޿3 uSCs`7@#&(#XBsˁz8C#s>H B5p+G0<.*ҷẌ́<6nL0&kUHz+ 8SNsBַ'C4qs7)KEm*0c&Fl|veΊs2@0pFC vp2t/\iQ[Q6ܡIhUP dqo9帾}C wxU=N"PcO}̄.N//i1y-MHįѲ-MayhOrˍ. p&x&UQ= c1T0//|pjG.T{@얛| 28݆O| f$"Q7ĸnr/d{eүV%àI\r2?M $洉3 :BKEm 46q׿"MX %B!px,caw+G4RuSOlCCœ:sM곡}{ѡ ^u+Hp] oW. NHC9J A,H:5v'މ~WvsM/aI>b>D!cM!gk@x FG'vp[rpQh#Nx#-㕠 O '݁م暒nָI\)kGKj1UZ~#&!U\_ l8vnc:00K|~iFx pwa].d{Ib,2ǬNnuY2ؤs,^@b5AGRAlbh M2ĀIb0఑3DfmIG}(Y?$ȿ"B*Ozc%ѷ%fn>z]H9jc%XAI+aEQ+EG{9>:Mwm$;F"`Ջ{JnQeTs|xܧbI3'eO%PaE2V1A`[t[FA: ?E>j݉iuM]s-_k0H+egJz*L6tNlO t/WӍ-_MN2k5"ӈN#vĤDӄ:ԦS/WjA~%+tZlIɱ{9@ ? 㗰]"\)} i)b~?j*6k8Ⱥ*`@n8 i^E-–o19&[M]U I>i]nsiC#lrP#ݺ'Kh;N't", ^O]n?-R4.>b#.S7Y8͊I. L)܅i.1rfѴ _ j쒛e2@F-$-`ksee3ڪ*)bÈx73@"x..v= ڿFiKL?7v jheٱζmoa`"1tq;[Ց(iLY2Z_E>kӚMMj Qױ7Kdk  #T+-/0asKfk-уIpt~(\}DEn 1Ɂ3mȖ3~Q2]kt.Z!)rc}t{>Jve#Pk̪:9sG#hQlO%}x18l0jlł{xT%^ܲ;:G5TސZq{Ot)1qNg <\<#ɰJ-L_6!@Lؙ AWj1[􂐫= Ƞ<~/Z^]Tѧ2+gK + kn&k\FB(pҕ"n_'釺C+pKNy&o+{%`4eҮjJ6k\4Sh3prs'HդUz|[eVlt5dij*/Cq.H׶^W ;`%[Oq  %cV_ bfo\& -s-t!6+GE?)Qqe x+lm^kr~ zx'A=Cs6 ,=+apuaۀCkg!O,A>Y,:b|E&pV8'5`cDjLJqi]7LpW͢@[w[*GuDLp9PoS9lP&y5dRn)ORf(cI'I>kQW쁯LJ́`E8 }]cpnX/E&Y63g~a h1}R#-l-%U⧫Q"0uq7'Zf&kʱjCOs 5K£ef1{vAUWԾ:ښحL>g.O[jN/n<$ uph E)?$;^ AxPnn=)h8Unx\s!tf%}pL ^FXǛޜY9T³a7R!ES'\EVž5M;+^K:b8|N|> KoFef9trl6 Lx\-}jlI?.?*ryP^kFk955xGG'4'dAjA-~jVe߽i;z%dwk5:c}^:tz<ѩޟ́O {~ 4 ^bK; 4oڣ.8wܲml3:]W5 ś\D5N03 T\ 4*b] _ A>$j<EᕽTM{wpܑIGvj MQV/n= {NgPR׳\|zV`v߄$,Q9[8`"`̩42 :ݚ~;b&p~<2h=˽/-G r`cZ5@WD1Ie$p(02rhX1('={ې8o-\+gٜb :A.6uʠ j3fpP c[nVi}߀*3\͋ ?;aIqu%cLj亭t!oS$G &fB ݻ%&x_JIx*n[xG?~AEa^@ێCߔ.Zm7P YЃW? z.1k̴~jqџWAOlP'ܪ-[4I3W^֧ZqX< 8 |+4v JNfsIH,%;> ?MTJ@L8!E5Sp5B|Xp1=xC AVVA!9ܖ7ýQMHf)E1}>p$-ɝLz;``<P*蟭$h߼O\ " ٕ]^֢ -ܮ`K^oq[@Tc.2ů8-yXOAb}ɝWB6m]<3f,QdGz=E ׮X\z@LPlr|b Q8$>=Wή@NpU NܤOv;?L`QԙrV*ӕ˽}_&]ٌ%Aw\(x/$vJ  P`N~j[].`s£J׹w0Ѓ]ƻGE Es^Af-xf^ӏBi)`A-4#6d*)M{/η"2僱Pmކyks]f﵅XrVm ( ? ս:AK3%i tۮѾIXy-Hz>}I_qU-9. } oUfXASzk7?q?6eX6%I+&~EH b~H'n|֏?s {igk/%YQƆ)&5(q^nj*>D?Qk;fm #d?5w rl%,A-oXrr֛L#>9RJli1D1F$(.8U85.;Bxkn#/hr:'ZdgZvgɻ;fGwjәmiD&~ɞIwpŅkff0a$Ϗ%Vk˰c`J.?td¦Yd}XP{3tT afR@- [[]ߡ V7MhpF NKdWedi}?V+)Ұ߭k$fr=Og݋9|~0oI6t.X>/ap /A<Ӻ)HeSßpJ H:cfb8#.IplZߙBUܡOD\^+}=60T}Op+?N|X˂٧JdV`5|7* 'm:rdG##5=R+@3ox?1T>]ex-V4:5z5"Ы<]Sq= J3{_[femMs1l _M]y2م*1 i/xWc#OWnb%dz>;>-u6}c= }W:𬘵 VmQ r߷L\P#lK/E,lg*H/D >̜;td%_ eml{rtT, HrN9d}NS) oyx9w0pl >S|YesJڧ'^h>hfpEsɜ;Z&`;6ǷˁI?_}J[Coxy3g==lg;Tԓ\i#I/4i*lnU`{w0x[ j;[@m㊠Li4m ;mKJ X,.zUir$pR钴qN"JF#".fZJmcAoVS:aRDgKbd7’IpgOٔiqɹD_#gl#ETIi;" iCjƞ(@r||ZS1LkHȝNv,E}&ɖW; dO} ]P>DHI.4o#q餁p ~KQFݳy( xTUR[Omْ"p*kXr4(o Ϟǝ5Zr'P#XɅ&Y j3P_>GNInBEdH2S]f$w5N;55 c!%:kAL 9遾 S\$ gy퓲AuJUbN?*E4( X/GVK4?H/=cU|3 A"`;+dǿd/r}Mקu1l~I62 URyqM*{PC1nPcRKc4MV,CUͯW_^%m9DO*n̈Mu3,SEXp'%>rLP\I F6K9YCk5FM.W8JTi~m~ 'e>UWWQN4ZXpSH^a#ilK8z,RHRd<žr"=_$ܩ~@} =1S=Rw%9 !HCa7P¦Jy9\y@Qi/8^U8=ih>)%#?`)ksLg'::K%+tpzMJ㢑Ae7;b[صܽM҂GIFO{OPPճ"yAl+!4#I[Isf,DF#ZJx1\K^y]mb6:GyF(wio`,W5Qx5u銾-y'A| .<CYvtظ=w⫷6/9 etv2k ~8 Oi Зؑݻ:F;wPƒ5 7HR  ,>*$tk_߫="^N:& @z3qvA؎1Y iJ"1ȥ =FQͱpM%< Tl j? bp8Y0C<#م7ؐdqp\NKTЂd=/Q<-h҉o=e45A$ÅY#]K(hDK̺V"kK@,bmwQo[9Қ/kDs~QAy|޲T /iڔ  ٮɨȜ= ^_TZz iJ-o Â!yا%>bSH?x,>5t"(Bocx?P=+Nf #"Yrr{:A.٦%EmNs$'faN*1?[Fia׺ )bkg#5 DhW/ô3 DĢ@!1[572'S(Z -3*?V2v;^ )#zl3r^+DcK%@"\]Z *,;gpT! vGtt*\X6 OiMO}{LE,C/f@U/Ojmukf{,5%gL!MuhhiwK qtP8mr(1}^ @Ǖ6 T"w+k!-Bܐ6 '$=bcƧ.Y58:)v*/߷gG68Fwlɟ!CJv!r #[؀֙p@P5[C$FF*4zNDH\N|3yWHd*vMqVr+dHx/Loq F eoMhv9ؚWw2%U>cDpr ܤH42O^m?`d\RH-D]V>+*i,F\SWF>QAUMG2P=p..AƧi1䤈_ KazX٪"U;CoR_58-T8MIY-|ogz ά}\k2$ߗٴْw|Yy9ft?a5"Xh`l+x^e( ~[A!T]`uڻMb|mXЊeQ,];678,!?fEu#`{Vux`WUEV!#Ń$K]3X(!A9zK@+Db#$U̻V ~X@1<"62Ļ< >Bywbs7@w% !~*s\Kr+kUW_z%6w|[Ci`D0zU9Otjw&*F԰r?D0# G@rV$v2=fl O)("ħQ+(#ݕ(aHLwW@ii v7+%>MtlɛLXC!Y禹u߀k&_IAKL}%tO"˖\:[̭]QFXJnN` =hGML!kz.1 Ao"a5z)p,>nLJti}[8,b hbRUcyAo?G:yUf7^;&%f`rf\vq0>Nك+D̸$\Q7!@TVP:G>d5p )iӖ;)4\;v-2`(OzcZ+=|Mof@s49#Qu:$ 9+Eb^@%5/8X,ozOͱ's~zw ">07'ֲ)y !eUTOEiգ2ښ4 ]MtrokjbK˦僴%Zex 5oL SavtS lږxe/qнk.M:?乤)-J4֞8P2e&M[`˻ ;3ڷ,bXVLj\˫Z&\X%{iTs8J® ]fѯ;>%tM&`s7nX;~tsnbՈ#~Q yhk~>2z\2q|n!-?BW:4ݶLMJҰ vvs*_j=NDٝ2.{fƍեQicG>Htd֒if}83lv$%()Y].HsiNK$[ػO8?ɩ6r9)+S!y}z(-[BQaSa]OFRv | FƗh:o'!AbLV4]m+D+fYxL.Bb<.!2wQT &Psωgh[vXA4(/cH=:AL\iqȘSCK-+Jk}ǃ/(@ h{ t;a ZuSƛLg|_L^l&mHՏޗVgu'm`Ip닓h~Eb%x!Zѷ@]?bXa&wlw|9@.mYyڌbn$?< )HjXtGS||xU6M DXr7db;es1mc1h(Q C*fgJJmK71OK@+PxC3'Ϩ  ?`FO63Wfg҉ʫ-Ɂg<@\:)H%b~?݆ vWndiaDS$ y'-9qaG7vm[@_6Zނjań;wzꎾ{#*?y&Q7 !ybP0ѥ_\qn-t&*c3g Hz"\y!LsA[jYPT+u' u8~NS-!շ՟wk…&CޟĒu78?z-IDfM90s3^ĵH#i {pI6F @^-Ѫ ."ZhK`Vndjq]r,|g*0)H}2J3](36Q1NwByqM0NZF@M>G6tL}H5qvMFVU)_Dh2.i{ϢzNX2zG,[ 30NLa"-U*;]WA6(nMxB"68=b#%ij gl.$svFW!KϧIGNY} u^Y} 4ݨܖ%RB7O,23]f{[ u+9/ԏᵘR^w+D0rdNXצ %ԁ&7 OnD z«g#:Quf@9yrwra՘bXo8Dvl6Q\卄 -sR,c"K1kȭlT &`}>~4Lr%ϓ$"!yݑ{Ei!8U·k,+>ING=>L]($]b Oc᣷rPC\ha${x, ub%0o4 }^PIKz]I]Cz~,5 ͹tֿ&dKU}hV@5X5pC o%zLi/! J1xW.NQHBPP(E ]61n_ ? Bc,~N\K$&\p-䧛P<,Z_[ӿRkӳ"=rWn,/v6-?Ɋlz:IwNB>{"6Ƀgx^S*wבb{˪@TV,8xH3*h"r˗n # c}O_P⋚Zq.o~Em CWD>Ãõ86N)W5o$y!'%fBJirQxhKJOXܔմJփ+!EgِA;9agkITErOyB4>Ġ4Y2 Aߎ S}+~bz6OFeL <#B(ީty7nL vjEqL: @K$%&5h#vb+kE"T5^ I*NfO*# ?O" c;ʂvӫbCԬ G8Cdkc}|z^LjvayA@ުkɭv\ͻWr|K&M]y^$7z];[!H2rJYً>J+| S薝݋ld>>E~C!Lmˎ".r]&a)ce|m:q,!W w-xh2Fe*|O.w6=9}똈A1kcïr[TН%v/L(駀n4DbRf Nva|bPC!}5XS+l[1Kn3 mP%Ϊ&e j% ҙqaZN3}DԲRqxSAou!"Q=OVYlSO4 };Y!Xs qP(Uww/^4k& jMp W`"z 3̂ڷ?dȺd I_H?wb>^ڧ1|x0gQ/U%*Ձ%՞w)y&ȳ|,]"p S.e;ztZcpTar5j/1 TFaO ]|U~vWbrpf{ H-p4Eza l҃y^0,<:hp# ã{x#QlՅJJS+[N몺'Q3+w"r@|vWsI-rrIzlO2W脌7-3uq!JA!Tjv}*i(#"),',R8S=W(W:iL=r SW 7w9!Q9"jQsks9ANčD3E -9irtA9tܟmQ%@M m\A17N{ewzW" BZ):̓vQ:Q_Yb*On4?gpz_yeT[22o1H+gK\~@oH@y(Z[5cxn鱽5Mx8 ᩯXVh$DܼEKnYN9o t lZwC-/RqF,EV8џ-FuޓQLKZ/PO>ӟV3A*eoNb w#! m،dh/(|mL=ad $TѦkJ]zI֨w[fj[sD,7 Zsm|,%`NcLsM0{5 yㄲඇQV>5ƃVQlzZڐ+5:ҬL[@\< UIf\G_ 'a2Cgg y%HDb6"QZZ*)|Op„wWBa,y0XOQF}4Mpя e)yOʁ&L'uGT %Yx/lT~\o}KـHI3' g]w$JSUWe ,k\0ʆSy(?1z:pŦ5 7*hY=."]T.TҹT2 i 31}zz/Rs"8w ^x_pmOnꁤ )qkf7b @;jCr5Kn{ 8ޠV8ai,)[3s06u._зFfPtZw7PuPU9,$;H |z$h1ad_ QyB2 [!Ήл cԐ|-ҴAgHi3<;er"MzgC2Y6yv*N?2fXBh{7Gd$搙T"{/L0rot}'8.ӑ8wdp7&1&<71A.0_U鑜TCz.h>?p!N#b_0ֵ|`*sá%ܽފ̸:$_ɜź)S_[N֪!)E  [ܛ+Q[2ܫ,~L/"k"z]8aހ浭Q=^d"PY3vC0kL@m5ۍĸc_F )Y9n5lOIBJϨxKZ+kla Q^!4կ&eʰ ; H"60U>'˷<ZR-}znM{1:{E%ܻdsGRPs9($ /C)zV}?n=596a -<5PIF5O1zNb[04›t Ak`DנrdvZK㕔c:rgWߤ9% ̶VI|(!7lOj_T 4s:`6.LA)k)Cn"s`'S GALH\9@F1k4'3y2R4I&|dzhnh5>ζKURn=lԛGi/hNFY]I+V{֖'5K[jD'߃ fw9͐mw s 45ar䭾")g??B^>%EkiS$<4Ѥv5P,g>8# H9c"aaIvsY$̫m.m[<5&X;ERV 0649T0\BV^v0T?"_e*'TM40yIP>QLJC'={ws@3_}*ϧl cΉJ@AQ}S60Ɏz٩7(5}TMf ,Ys[rti/z}c2t vFrQoTԈ]ڧ(^ 5|)d_A7,h[_#'6AEiwf15R *j7NC}+DګHih׹p,y4JcP,-vBh7HrIKS[z3K`6G/،A = .0! Յ>$h{EsPō cgvCfD`I)9K G\3Z1%`1OeR-G!9 b_cM@KG\h_lD:a*qp("EvUwxiu8H:EO^} ]1cr'dy1N>`HFҩ_*,Z哃͠+)>GlifQ$m%1@a5EF+ ќ?cOh㉨~O3%]_T4SXn`rCŞ+IKDc;EBqEyccߏS;ӑ*K]DOvXW-ԭ RRN U'+Qʔ?}9b;ԗXӤ\έYȷkPn.l̵89xvƣJu^H~ T N:zE{)cFKH~K I'm\W'=}?ncXci3g?z|h6=t#c~fA ⨴ Z7ܡ"7Ju:lvBN%KJ&e%lkIa_v}=HbR̼gϋvd S0K/sCEJYqSC'@MbfNC{b-{˼ʭRQ1( C9W7]?yҢ05A/ee~Ѹm : EV|W&aiM%,{' N!BBޔ&06˜d"+c62c!EUFb.E#.hUw\qyiˡoa-maJW^$\-4,! o*N5K9{M$ɞajѽ\g KlR%A:fqO;ۣ_3@&k5%2_=,kya4T0\/O0ituz zí5HYQ]adUNQd5z0jS$ U~^45,f‚Q0 +NnԮL-E b¤rincVѺp~R+ѴK&#EiЊS ct]EFgsEغfV&.yk7&ԁm0?WjA } H8za$Q`. -ᄨnߌ9]H14$^!= !N=.,D8[xB A^[IP/ǭ׀g k~,*QA9c?hq8Ox MBH'}]V%!UJ[1}D1,3ϝ˵}H7ha- ӯ&v[4$:C'TCeU-ŗRٜcn#ol;GT'.e.ֳ'۪z^D)Zy ʻ]M3`"dp@Hsm8\tpgDo1p"K ߳'50yu-coъw]aʆszEre?_'} A@[ԍ| ϺDl FDz2<o]K1R!k#6ƺU\hZE|̠>2_ި۹#5 Dؕ v?{E=zϜՊ(6'fy2:um8*)9!M>@aD~~$FS3bE{ܓ$Cx4-/O{aB?Cy1Nyйʫ+ 3+Y (c@ G AymhݛzH{/ 2Z̗\$0BC DioZfD\Z^& d9ej6k: ow'['Lqj4G}.j ʨ/ pZa6^?=j6C>>ds4=ZLTh #,:T?Amԯ X IH}N+Ӂ~P7stk;`d_}S8i?}? ntl:qn~3朼|ވs3?"hbۺe = TѢIh LCCWr {Z us! UFâd "y+~TiXHCEiaYHB6R@9#30>u&vsǼ{Iu]Rs#} &7.Dt<Q qͤ"JJ V[a|\5/N^66%7A,vF6X!5MSA ^g2 +aEj_0 )5Mp0j:`JuJ?d: Qɖ'MM.z+#*N𦜂D9*X؛,jOEO :C#v}'%KEvIjjԷzn´v+sY@E &١3ad!lA{bh(ׄ"LֽMT(6 k&8:AɹoxVbdLDg !pm9'N"AymaϴMʌ8;J72떆[h%{\[Z ;ЯǤhqxP:Wq,m).ů#9w4VI{YX7-WlGgI]U{? R`hpVJSfFQ6: o=ҞcH)*y7Jg?;ޯZ;c-F>SoQTVߗ#$_J oz*Z+waTܙuړYX~ MLZ_\=,*qY#ñY\RLUB時>WdOzLݓRzr Pw#VimrWt ;)eړd=6L3 $ϬGP |0TnZh9[20scA2'\s5S{=*MoT4֡ʍug gF] Ѥ$h[L Tsty^̩1g*d#_(6(au:H| 5ZRf hm"s> 6<+; 1e ڵ,%Wx(l@mv~Q>rcDͺŴknb /YZ"ʧ7G)Z'*(?,ja-eF;ЖfF\2c3UXBUq$:X7 cr%dPg4IOo׀@+z`0UmϨiJ. k)J7J:͚e J<!C2V7/^CjP ]cZ"[ޤŵ"KQ@FF&Iϸ$ٝky7.r-%Ը3l;lYCGA3ٮ=aGP%iO{iO߳B۔[s0DZU "&e=D?|Et^WG(a Anf#mē;s5REIBt#rRJ}NNXA6n]3, hjZX4Q& " Q!+uy \#`T 1"_: PpP}dbq닞Fa ##uΪ.L-bKkEJܹ*=+ Q$#.$ -zn1VHo]mͿh2 *5%>=~dfoa Z_P?㙖ZO-A4ϫrx,'0ɶz,ꤣEu޽^0 MLrO4AT^Yqg|R0s,>Ql,XqnW3{z6YKNW2 tXV7fc!OD18%9@LBc^<M`+ڝVLe>)GIvjZlR(X[Ix;8p7 hes-?nV1 oq"VVK!g3&:L&OpRD7{ꁪԵE bfnI_{q9nacEip'XT)s*w|GH59x;BMº0cy 5Omh>1=ATҏZ*SDASb:z?#BĀޑ6L*/ADĂљs4<1{a.m~ deնnZ36F9S[fC\mnr{ ,k[rbaxflmMC ٍ)ϫvP [Ab f Aʒ$,*"ܿ5EكGTZb  >N7c&=IFԅ# i#/<{roܜ4W.vAfMQl0Yvk.lkHqz,٣+fcVd˂T C`ߘ: 9vsAvjɘ[:m]C֓}dFx7ɲ;0mS?+n'æ0@̅/Gw-Ȩ ٧pSmluG} %wmRQ^;u(]/F C('N :%a~Gl7|~P*tNZU@۬y{d(/Ay[&ܶuz}*%${7.o |ݷ$,]JyG$3ӷ $G?w+[`(r6 K$nCgÐMͰٝj40O|3/P${aSSw1OhBE@},nMz/ZWT~w^D c_]tdeKkVIn!;2t 0cvձ>h ʨ0ʹ')J% =k~VY|[ T=Qa--;q\; [B73u@3" Eve}@8= O7c5t !EeGER)[ô6kT:4svC۴ymaP.3gq"A`lc9!NY%MV٤6`C7 Z'7% @wUaڦr)qV:X:Bg3'Frl:k ,GLF]Hp9A7e]8T3$y1aHc"O2W#{űq;(4vp9ʡЮߵh!eW|\aT{ssumg kr&GӜG-llOGϯ9l^DZ"._y!eH|i6O>rhTIXypbŏ 9(Ɏ0?iH;LKR4WgDƶ|2drk/8~P9 ^Ye\& $8 >a\ čg%{Y&R3s@./rw_n5_Цf&ܭVakfv0xxJ»n`c^z~(D?<iMQ{yDh|mh$S51Ooz9EWS oʸN~=vuסɸsP rR:IX4-'ˎfUo2E/?҅Ě͍c٣ŧl PWhy&=E}cNd"I-g֑،49Ṏ$a L{_kDf6NiZTDǤ0ҳ(_8Up"6>MGqh~ .m7TتrAvY32ncDY9 LLO\&:*m{Npc3wYϓlxJHq߽9%?;B])e.}'㳕'=_,?Yq? Ksĭ<1 Nj0g^rtd`gxo~.A Пx %uUThÓ5Z/_YS%QЪJ߂y]k,`֓-J‌5;IOrxAzF~FoXlau=#q3VLޗAkāB'vKh<;03~8d8ʕ!hgǀ|co}ټ%IxjFQ'`[/t~㺱b_zf}Ӳ*[ih@%v`RR܆6҂Jh"kQtȾT~,I^ioƒ `=,Fy0GhttXApDevw9}pY|7bLhɴ"NEZ7eho#~w4( Qe}سj'6.dX΂MƚK@=J_ZD:mĬSE8l[['f0@wo dmAZkMy,Up3>Y>l$V82re:j".zf1Rgo'wh> %\rf:{6m"uZ.Pjde8ҟǿĦCG--ګ|9 f"'M5+SJ^?l}(]od͓*èξyKETKTr]T3)S[mVDjnm|=fW`?W4pUHe8q"S%GSTe0Z aiL/\c;HQ/LcaޣxvXJ $9[tki[Y܈Ax~dOvjxO2!$v*0 P;zøg`4ZdbXb@֐;@Q;JN3>terOsT~tEPmlhe@1gjtphtH]RuVWVZ+hE1ݍ7t8F4cIXE'5c,9- MPl %Y.jTc0)\BߌXoyc0/'ʽ DTKaݻfpӴ)e]޲X,4 :b2K,y^<  (qVEf\N 6(+OaC"Ʌ^1f\cy\ <-B.|5ERPНD2Nxs'9 \[ {0_n=0Հ B}enAwyf&0{ڠyYF/wH^`o !,`⼼'-]d̪ 9#[8,녋/M1sr0C \^@pZ>y'F^2h7В4_o,{]w+4d̐C|Rh$ MAl#:6!xYLcw7:Tw}CYph Y>}wG ×/|4DN;4hp>abjqy UWG kC~ޡX{"iƼ pc`93-- G* +94)FE HwM!gYdh.N^ }jpi8+Ipu9Tڌ4'\38tp:1ථbB] һN^|-M:ΕaC`B`fSzN Y0m-- o'!SiȊzs,÷Bq--4Xʾi#E1G/<\s#Eu5l籓&&H43=q60*O7Z*NaF(m,?!nayGH{?f7><^l QߨxM#w#{;^RuJtvJRXi?[>|Bh)&Í("l+-w {赳^w8 p\!)Gs6GJSB] -LU (.jԪO7֯SŵPTނ|~KHĂq%I+ǿQi.*I0WĆĖ C*OH'n/@R3~*ĕv ;m"N~kSLJQ(;Yա}v /Q_e/Җs7iDf؛ޡTj=Tk%(%'&[9@N-D+m'v̡xhO,84wHɲadS$ՋMԫ)dan0ٙrU& mmF:#xp:F/䖬X_9i}`8>3+ 1Ihq(i j;~Fl5%Al8IKڦP%~b!;3QW- ^B2ԪV4S.zwF@ҡ\k"(3Y ;3$Kz +m/5Ѵ?ZSk=onH89;`)JA O2ӝZ>o(:]9_e I '*q9|0p| d_> ZTo,`V0)J ֻa908قF͒$㿫c z&[rm?c@'c_0VŚ үZquC=GΈjcc.lnE97;;[K#؇oOAQ'I֝U!S\n}P2%ɬ.N>omucϮõ f<TaZܟ$/b-V՚}Gp5^c.aLL7W HjWGW洁6RY[]6ƊLYÆnfۼYlTuti^1_i$htL_o.aRl%lzh"}H$J.`L|]JSpus륩ɨxͤYEܖ\M݌a4D<(>'Tm!Q:'Ĥaa7\Swu7s/W nōJ4_>;8Yb: Sgx1ZP͋(cٞI+;$Ȯdj)glBuS/ QaI/͙3]&޿L\܈=TYv"W3ZfYsuHͶNFfP%Z_K68}T?=`zidOArĪxe [g/bY}&3,Ƕ ; 5Zy _d8*1nx}ysfQ5xl-Eһ@[`*nB/"q`;(N4d?j)ޝȉ"ɲ#N) _xk~S]Rd*i"&?<:l"<.;S ~,X 5}ELeEbiJp\-92'r [6ڪaE'y+6l~ 㯉.=hG󼣚^=] s-as9 B>2nN>\C( %SHXR cHZ]6kלGP'{]7A+cA'A&r^/aP4"͢{TLOȝ\ $o! 4#|yh~T%@%4< j.%T|q@3DcuG'QmsZbffB#3}a^31l!la/X0űC3cC+aDmJ|}OΕ;е|H@+myYME֏ڋF;$\σz;lPL 9c\z+"Ȅʩ\f8wr1UߺƨsΕ. ɘ߸0YFȸ!7xa 8\M8en䠟3~xW+IL%t KP $/vR.򢄴 N3,҈uifxQو )r86"0 0d*>mG $@N"gR]ݷ;Q~?,rKRt=6L.a O"lAS6Da8HP.} Ucf:ͶD8nنs+{7n-=(ydB;=Vmc~_ZT7*l/'ra,I>[$_L 7hISXPx6:U ݿjGGG ěngW#i@ )ku>3Ov]ȊmnEVoB*WAbSxa/ _֬H0nv[tVcNff;*IxLS\"*iw[o :-Dq̴{?p4@g( ;udDf)[k0[^ 1 6 GR VctL)i NiruCb1'n_HJR:z~e PZ~.:\P<_F&og ݾy)E[K|΁㖴Dlש0!Y 'hy6 + ;PKwi*`YX&q8B0^iի3Q;ՙ{ԛ-=~PKdIh aY=Ylw!sãO|oOSF"BQrÐm¯fU&,F\So;kW~ZPrO\e_%$nr6T^aJi]G78=a`)[L f2/{s 4H6zO-\ t&vor!=lh9{B{||exJ҂ .D[iMuzn*w{U8# 4{էdl3u<1u= Н/:Mj[Eorb' 0i)3}k2fmT5-d]k^2uSEUb&Dm0ƾYmo#m?q7Fw2A\U'ca(b'_=ٖރ)n}'Vw3n׫cX?}„U~9iJ!}J>UAJ&OyMB65;{t+)/ t}e~ n ;S!<"J;ԂWTA}^AuRSJ̻q{y'J]݇*3ǩR5kC-UM\5 #:C)3n)M4bgBpb u.o#keIL~?B/* P~(51x?{w)6~)my5(PP5c#R 41&D٫=0{VXO x%G`( T:Ovial+qdNPeBw' {0d/.~օ9yXJэٝ.a# ݮA:.׉>)0ͳhN(OO?,>لu[,yv ::ϋ &NBo{Uc9(`jhE櫸w藍W,5(|q tEu7FB{RGt8eA]Ig5(tδ r5Ed{[~} DܼCjdrlF4J9šDy 6LFtԬ:z}qt?)5A#|Ջ3Ue»diMo %դl-YO4 ~%r@M|dն(]v.Ph1hbGOWc"R z/heGQߩ~MU'tc'=$rn?\U9?yHuw2[Z(Z&(uHqfw/&w8|6% J3n@m1Zћ&F{`/ B)=vK^F硴RZU8d %_'"Q+J!'Йwid?t,}=c+;{\>l/TGND vFuѻ?d[0~TL]YzeW>Wdi 1RS؛^|8%u1o\HGW Z:b=&BID׿5C)//ɴ}Hi N*ȓJ U| a㿻1l RIn|/+Ut@Kϻe k=yai@n$aߘ0?I\6vHVie]Q(z{*Ek `ӚBBI(^ZB;~6;6e"Cֽ{qͧD!u:Sp40K ]i9;ΫܝkrAs17ȞL!12DZq2%pT9XK,Uvta2,0WqkwI V aPCC=;[^Iib B+%9hwj+!aځƚ@e ?8܏rΒRn}ݍdU!P4.v1g虂l+fu "q69sInCKL!,8V0sIZF<2U!)P?& O0qGr2,-w.7*6O`c[dcιh̼D{7HiLѹ]\$3%|>2f< CȪr>V,ti sX.jԷ"PQ2݃RF Ĥ8Uű*Kˉ2yFoxy%,6WyGLĒ z*{0`+xºo/G2SY zgc<V$&ck^๚2c޾V{PPVjx#}J#=-jGArTy3>x靭$^a)X?q<`oȋnx?a`u ]7%|y%֝T]^߱ Rۚ}0UL>6sĥŎ|Ic`6WZ>3o^ p,% S@7aM5N|O3`o#O|sҥ#HU\vN=39$ Cl(@ OB&ټYo PG0}NdI0 qwEY Q/roNvGuHJE9ɭ) ~c3Х>D)\Op"!x +7vC'/藩2WgeݞٜW#Y*˳H="m•0' .Hzo 4<3& ݞY, w^#[^;D 4Eds0t4aưzևK`:p5 fwbMuHSMmtFgSDMw~n(0/'eWTz6 =SӬ" s'去x5)ː} u b$*͏l4(9 ömBo!C W]ӒՖ /cf%IcOJv(5v3%Vp']8=jO2Xl&a, #ag)!VNlG/T?˭$\]WSQYN?Llg;@ao"|:q{g+)E5۽ij h)j׾YLFn`ӬW6A6MR!][ݎ 祥ilr&!r H(p2)YƍqB&…03KxY7hඒd"ߐ"FlܫWaZ7.r/7 \nBr,!2`u D򣤣(~Lb(V,\ֱCaY "7w12\"ɳоq>4'g@zSRR2 <͠:os/cO:\%='D92_A@ck}: o(L.s1 1X=NsLrLr. x~G^!QZ@'cÕ/ .`T-\2-Lu`/iq+X|&e )8ow1_ h Ozp) WѺ+&pKĀZrP)מoXIS$8co2h+)?lfoS4 W?'-j cJ VV,HnR}!fd4)c^6R&)EBWP sY e=0Y31_6vPVSO0>철F E(Yaw `4:Rv jEj$XWpQ%HqSFx!2g#^th\tʳ)Y\%*mQ=!Uς8.HBz,Ӆm/3Pugl@C\O9O3y)Ow>(oe4!~;#EΆČi#P1`O<*`q/X(/f&>s4G?8~_dE1? ~F'dxٽQ-V 2-d@,Y!]\ bqIy,ZH5D*%:h$L:j}F/OB'O|T| QHǑERS/`i)"6 U{TLHl_Pt%J sU'TDѓۿ Z JeO]X˕NɖWE+ ٥vaJ^gB%evdb<<7GL'D8#{ĺ2. 51>]{"}~It o;܂vIqd#k=E\܊ⴷ=dL8JPHrMrPƣwo/yź2N,O.# ݽ$.%U )S*_PJd94W8 }7:— gzD 2F^#N3O8-&djQ횊c%HF†@Y=%!ѻ_Murߺ uC9Z=ݢX ߣ899tgE縊NjK7VVη&ѩ5h,L\qm"_8(.wAnE(9cՓqnGz[>߹Gߴ:e|Η׎X)`ɣxFe $#,7UVs[~Ec"lc"(hϮΜH[ikpˏI5N$Ve)H_Qn:$s[Y= >ejzCE@~a}v }< D;ǬC[բ/kơװy#G]ɓ]N?*POaB*Zp%.tRd_<#8b;3, ޣ*i ec9]kw':'±+(ݚ?Df3wfюxuy9o ab7f~2t۸q2LVN7Z^}lnm,0TXk`DUw+| ܕڵ] \pobRȠ<[(q1Mkp^Hm%-n)c(S /qzEs:ݳ4ks՘v;BCOSOESkDB 7)Vw&6ES][R k7}I5t1WCPɬXhjvr?Gc\ݔx+{sT}L⋠墻IO3۪_"<.L&7 jQ9sٓha:ȑYi{-!bx~ 1.{Ա==%Pp ɛZ䉊4V A9Pio\^)q6'#!4g?z v:wt_4V;J,<q{-]q^NV*~䱂>|Ns ?G Xp:ݻ j衈Vi$]r [o-֔K~6C1tz)9}yf{VT!SB8xbnipj[:?(Xl{V͜뉩snXWpᄉ 5W5&T=8qV$bLV~>nX>9H#O'9`>CQvҾ(泣 v%9~&5Q4x kHY(%wl@MqsWqH',ۙ9=X=}E?NF]cavE yFrl>*408.515έl>^l,j'O{=M>Fp"/ߋjr-v'szڋX$jnYOP|h#yK˕C2~{`>8k ܺ&Ǽd'V6 n(5xXa IEf1+eъ|ViPCyE|Q]a3V0<ʸprXҲ•ܞQntrnp+j 8Gc֘E^l5*;P+o wZZ,HcZΔ(/ȥt6xl,^%̝͊2:15YޜDUhn]Mu,Ŗb{"ۺc# =9⤖.q` P(-3:B!a噴~W?FNmlw%ضY; >ZycĞ [=UbN -/΂;aPBUДw鱥Jwia[fLFoOn5z5Z7Ow8;UrDu)|ؙd@n,#,ʁvCԐ{5RZ •aeYhkD(xhp_`ax׾?p( }ύ8_'6xF{e< 0@l?&:AyꇯVڳ#h5dd\bIsF(oJ4%\#a!rK:0 XKIS̢Z&m3JG"}O YgNp{I d*HyEA2RZ܆';W&UVOjYb) sB-B -+Pge-pΨ%M#q;h:v D8LO5̨%ج'ކ\ s_Vn_.%`ʰ,UGSyBMQsn% ԨЈ!aݹ9F ѿo9p'~rÉKөbd]/[FU 8Gw_RGӚIf2;S4'[NSz4o)?AʇM$\x#QK{G#eꑂHfNsdU&2!vHK|>O?Jmq8u.rj, <YQS,]jRӃLxĈ F߮TKxJ%e*n3i[~zɪ -QV7TV=]+Ei8SW9aJB:B!DtZ7cx56% 5*/"Ѹi;ˠ+B{V(I(./h/=Ңe ˉy K`Da-ڜ wi]U5蕄}kʁ/=q_k:zډ&v5?Z} T2Wz Ӟ:)0t2y̕YQ|t2aK][[m2k#kT+Tedf'a#DX65dd5 켃2l=iTlfB*j-l ] ex6Ҵ8.2I=D* m()%#~3-܎=+/<սm{vS6hYPr I@%V{O 4T_Lg6fΒ2 |p ; 5TeYcӜCI NhmEB«d*\Xk+ |c}cbڿi Ҿ"% NM@/f&f3˸~1_X[kgML6/4?uy%UB }U^ŃgwjEM}gYД@?7H}«TӶ! 6Ҁū= 3tnz8H:4VpsFDЃ Ҧ[ "rZUt}-kK ʐcMY'#I;&W;wb@[~ܧKˆB [݉ Jl-V8@k^{APiūV&DQ58t6 $ecf n:wܥ#II<ѫS|&|-Q<6f  .}Fѭ椸uAæx<ᛈ'7 :IUQ7dk%WDpjȤ㚳flyxF1xˡ>͡њ{FqC`pmۯ{+Y/AaFrWDfu_ڢb/@Sii#`v~m-e*7*"P*D40xO>w+-F(=+{iKTNyUR!׍R󍪹G KPn[R0v̴5\(3jw1wޜ/n?7CeǗV?^*nX5jonD4{Y66ZONu`a\ƻE[(dQ֣u(̞}ǾvF%}ҁy^hM@>[]<{: +C2K?|7$IoJ>1<j>OB~V=< $PAw"u1g[j|m-zFz*ϺGd2բ4Bԗ !~|XEr؄ywe7|I*GS ysw7yp~f$AxNYR7v Xilk!vOrXË|W ?!s62ڽ"))h}۪cxJz  ?efV7 1u?Z./{b_Y7jjfl9 |^ Crd KwBt7#V'¤/#>,:Wh_a{/ۑ"Re2rחt NM* E1 LZv!*)!/ rPIn*)JH׶^"sKN*eP_ZLt4PZuGcxd²"Ck& d渶EF4MΈs{ch""[3;eYH͏ѻF<&럳fpPWYsJܞ|[LL^,^؋KxwDw┩<ğQ5uybF$W$egn,0I>*̼u6-1@B;pIگ+CV*G9F<1o29d{ht{&%H0 J. q";M"[jeX7l ~0%Bb+~djkɿ#%3![+_5*_qK9vi{:q밿 2WvOq]$XFv;S7EoCni/AMЌQŒ D%y $oMq@_N $,kͪ[]"޹$.<@4neبwG|hp΀u]mI ]f>a6J_X|5}Wc&NL4/س_J$7}N\;9h4Ƀq_GkCvӝ$>qd1M⪟e$hB<@m-1ۈbtT5/ˡ5\ҕ|벼UƼ]&{Ilj@$ ^) /'YC%|od'-X 2B=ۓyHq nGJQu+#C@]D~n1dej+^FBwʷA+-X]YMS/Y9O/OBIbg=jeH|kR5Z,z9l(F@, b?ŜKA&l8 MK}vI1`[3 Kr΂|=up$#@cvE.t3 Pfru`V${t:M1p\QH .%01tAɺm;멻ض1Bx@H![[򅾙@u]TW*Hȱ[TLЃ02gۏ "!"P4Sf}L 4ά·:T m TE -w-=Ck"l}IH"2<M&۔\Y3o;XV^Tr Bvvd::ZȧMAUԤJ&^.ΒgY1Qn_2? HMOp`so?S3O; g>H, n*jZ+Cج:W[~aۏ܉O֙ ƁFⒺ)*Ӭu c,YSDm.I9P4aLOl"7Wʍ!oay+%ocv6Snb]lUvX-~Jnf![+OcWbuw ˇ=t3WY"Jjd(&j30\> 98B>G)N*uZd" 9k8d3w MH׬Wdc۵+r71+v/IflM(dnLg8J!FɤQ,0ckZjфU>lV཰u0нIŮ]2%wH>WKa9[*Jp1f!k8Q0 P)~?.,AA7X+D!wW~ .p SPFtވb|;eq[GVXxj6hyr,Rf/يbȾĴ46Nic|_WkptfǑüAǒbq=3.?;>껊A}Ƕè]N+`F'8գXt [čƳ1}j?UР pEgGf)[*zݷuEwծ9 =LiԌJq q ?hO6;0v*NyG,A;ӛ@[C\ZA c xf"SK -24`6(j,h!_6dZT3Y_sqq8AIJ *"2-6`NఃEh&+@#-W2RL\ 1- 0V ^m4YZkOq}z8@h8I6C'7p}ybuYGyX&8[PnPwCf\&"n ja6az6= ԔQc/,/[-PZhkQA`@rRC׍"BO5KZ$zib_nBIGڛ߂Dm+d0M{E&~pHl?OV%F MaSC܅{pwږDbg* O_(DFw"{Łzx+ϴ{'܄L-46ysRF8GY䗐+_#i~ 9?cf2&:142VM_MLݣC'1At.Og^}`Im:{aWH (+R :kzL):( E0X0\`Ñsr -P+6:| P!O|'q~7*7"r啑dWOZr k3 HAǼ:Xbq`:`PhA8/@5lf`sbH~<`Qżq% A>3a踉f=C"YvD ̠ ~1\0uH ̽!xEpi7` @6Ckp/` &013o;I B U|:Ř }ش@ xl9 z l 3u00up (Ǵ5'cc7֚ sdb`K8CgIZz~I F ;*Ϫeű*hunspell/FlagEnumerator$1.classAjAEED@.µ "'HY-3BEC-Ye_/ \T(0!^ e\o?I.ő/LxޘאZ5P$C7bX?S\[:7_;3)I"Tl{8W3AoQCeC+].뾓Ђ`23{s?WC4\¤5D0ـ.L:h|}a3*>֠aV*>/_4;'_paQڱ$Y9Z/tEVU|k*Rkzֶ 7c 3<9 ԍ |nKiKvNui^]0rcs+M+='\kX2P0|tu!K"'R?nڦ? L(e!Lۘv6 wYlX$rN^X+5f%҆r[Lȗ H [XK JX8m;+|Gz&7_.".mX 9VvBL5(Dm\E~)d^IdTGm ܼ1cJԶ^ץ,)*8/qW.۬J*x*D-_/fB92šrhF7ˎӽ#Mv@^GdTA3c rr:ub%+GeyN!d),ʔ]ʘ~M-.kxEl<G6Nդl#=OB#N!EfDbWwaSAG2:#'GdiLlv=!1٧A&_mABvG XPnhMz٢qts˽{PzYC bqXjoy]!@?RHL !zב|U*E)\zGtyƟh $[Pl}~*xDssñp=o=(V #GnP'tt0!?I*"nBZ>pP5W=Mxbg#EQz6!B۴Py~"FZy]Ni_\SOrw.l ,MT> vog"²ibhunspell/GeneratingSuggester$1.classT_OA-TEAZ-ĘEI*r]]gw2]&Cٙ_z3X Pp#MTKUmHWdx561"Ri,I R펅R R[Nzimc°W:zQqPh`XJ-ᡰPfkb|,d0ۊ;'HlMSmjr[Y31{˵;2vpKFŴ=X,s72Lce~`% Q%̆(^ujrݷ2|,fȽ ' ɰv$u'Rq\^IG%fy]?{c덱6w^+, SX8Mwjc,ϿRJ0Sq;FQ[*l"UF9vI&:\ |Ss"^*@ep,.b1Sا$g Wܗ9ˤcJnD b,hunspell/GeneratingSuggester$AffixProcessor.class1OA yK~4lcBmL WiBb?lfsGYQ;co^^}9n e+OmNMjF(M,k/JDֽs$, lwb|oSp`]?&g/AYtYUpB^lGX\! 5Cv7Yhunspell/GeneratingSuggester$EntryFilter.classV[wUNt锖rM6-XZ*=$Nf\J (ޞ^xq-Z|v_?\>@V/9g۷}v y|`OࠊH`8LͰV0Ba9}D6iټڂא ʪ875M Do)LmټI+N+ Sz j䅌me9ƪ͠-K8)p)$xE0}]X"-nV\M}- Lذ嗄=b% L馟rB)ϰ oaOtU؇ 3l;dl!eC[ưQ4%|ʤss;&A[-ϩ'|U~4cX_(Ptᜡ3=j |Ui>& T;\"oV.b..mCRa&Җd:F 郎5q}fki&/Mx%1l.6vE.\0 24Gxj]4ݼı^IH6tj!fXD (j00aF6&4Xڶz/ hܶFuN;44UpFn"\SVЎ񑆧ѣଆsDç 5\E3uBǦ)a+=|)ų̋Tli9.SF.'3CjmR-ش  .x) :J\FZ5dCIpr:ġS*+캢0y (qT'(|M؁['İuR6Mbd;#M°=ƃJ;c#gXK^l9yUC+*aC2&ib IFFϻ2 !"f鉔,3:ΰѳY^C@5kψD&yKIH ԧT\8VϺmD>xŪ˕if W1XU<+C=F,duȺTo[G2N9P!8]cؙawO\cV9dl@If`M`!6nIx)x^5*&.z`/\:u^&rxi)㚴}]T0߳jY:2²T=&'5؎ Tܦ?u\CzGSbA#8w aaw{,fmLB[>#GhLPJ?b h'$ж:pl1Pd55%8Yz42J>CFaH~ })9}2Cd61t~Aqzߟa_bD7GB,zI?cYnɀE }+:3||:)6 >Dג]X] }a7d.g'vό@dܻ8C3!<>҉?azOvOI1kdAx$b#ݧ+mK>~@pl4E莺$x] 1hunspell/GeneratingSuggester.class\ `Tչ3wL.!l$lQ"@b$.2dd2g&,VTZEiZQ U^EUkZEy&S;{s}Ǟ$V~Wx5?by|](7MD~/52?>^W|*S/Ƈʵ~*o:}Ko&oi0N?ϫ 8R@]j>M+m}?'-&?&CS%2yNƢN;h}@uӃA.~B^ܒQO),^b~FJG&?'Ey??>^^>ïUyV@wB yL* 0~:ߔ_y گ=Sz57oDoK-;2w~=ۃ ~Oz_^"| 'aٖGRzQHE&?_&.(xCJZiGܧ?Sd\b?Z^+\~^ rGGyEI?.U~i_ ˯BSug.Dґ0UGձP*IpjCCtd>J%L3䚙X:oԳ_0oZ&aVҡxzQ(q68[0 |Y3jkgzeh?{:z̙`h"Ja3;lj 7EFZ#P<[F7S-Xl숉LnNGui,= IM!^GӓƖD8}v4ڼ<\(zNԇbBɨԝF#M1ҥyNGs2k[#)HHC`WB/ ⍣kIt%‹pu(hoMGck##r곣4f3V,栙]d1 B ZD*bGD"7E捬n Zϗ6Gc; ya2I(5- 8뤃:o>IG+á5 @^&kNƴ`X|x(ݚ>ƚw=mkMbE(/j]hj B1QՉpMY漘&d'iipW^M"YM"{BD33Uvi P8ޔw_ݶ3"uMW hfb_sϷ6R%VPzT[FPӾZ19PTe0sJHPN|O7 1,y4y˪EZ vd۵R:O3Cp,u,&H[ex$n %8.@,ɴ }x`:aNst#ҥGi iQLJ'ސՄ1נz VtMGZ)c%TM&#3(ߑgAa-!=dѫEoQ2Dj 1UR%o ˜t:锣o2Rǫ[jZjO|) ̉Tw^Nn"5ReTh5Tc-ux5R$EП),u:RUj&S|â4Vʢ,ub >q<^ji IGɐŅjfBtOM&Ckz5;_ 40hj9C} "5rcjEЧ͗ڙ(,BEeb|RgEZ,-<R9:RS-uTH-S{O8)U-Q j4#ʃ-uZa?+0w̘,W K`uLTsyRkæZiUjuVkEX}RPߴ%R]XRf,u9Ox&n N]aB7?ԕj}F9tZk4ՖF]koD ۦndlMmtfog$nV5KݢnFRSOHuSMuQ;y/H6$L]b moIGn?ѮtNg#F\5!]}Ksӌ7N^D∋;5odTPeϞxfCF.]'^s|<A떣T c|R |Dk2AӝZWԽ$ Nר9өs3;_`k~9k.t˲:|>׏~昭1MNTS>NCL VW,.sn 1miTav2˩a Se8&2\zN;j@=r8:uɊt_] Yw#?&řJX-=d}k6}xlM4^{h[bzQK( @gM %|AP6g5K3Q}@D6]z"brZҚ9E 9n9i=&16MJ,><9ON>Rg_ع;OFPZӇ#)p6>;աX6M>OblJ:WͥziXLh;Ȥ~tm#{QSP~N>ϩ?@= rOTWPGh'z>Uҫlw(GɽCi &Ƥ o|'4h^:~.\eT!LU{ eHRƀaVtT TG=͠%%ݳ+mTV˃>n*/zwSE]?p B×.Fo߿s"ѽh/JX*[nE`!Dh9F "Lc tH[H΁~ Wzۏ;yA~Ot;@a{?w"Ahiѡ!;@9^r4ܟSo6xF4Ok$ zB{}@r'L$V*ksW>[ȀQTv:ؾ/%V{`n:?_a8 =w>[;vn~T} P)@bzVП#1hmb-fj5kXY&O?\i9J9 b7JI'7h'ѤM#hThS" Acc9|Jקf i[B2Ӌw{6VmГ]an?OBlG4VduF;֡6)PK1mZΤ6##ѦL:ΤՁɵ:* VdӼ[(N~tz4'cY@#F_He.)~@W ;i~*Vim{UEo~ivm'35•N:/hAފ@A-MbI'vvgqvn2Uz@Q]ʂڑ\F }@QNk?,VthnJJi&ҝ죭l}܍Bz~Z3t,Z {94\LY9K[XrF&`ˬXK9feGϢd?Dt]l2Jn&!K҅FU ԺgTT8}df}S^G~q5of Pl]Nwc~tnJ^BO+Xxx wIgm#KPXn:E Xp/:øOh0ZcxM?\I6_NY#x< 9;zƦhsv=&+5!`ܞYcIS7Rs؄=MW `mY-B1SIn6Ihၐn\Q*L' ٮuGv+(ȆaO[QF~W|M㓱OE\Eq4جtO\Mt|N>Y5G>C!*#9xlm|ڲD1R>Ȋl(CMs!vyMg$TӀZNhJ<6ec\GMӵٷbVv.ݡ ۱#y}&2!%d KDTzؓcx۷f!3`n fqq 8}ݔXPbJI μmF62SCi 2sK,vپv][xyy> <Љ\ [HY4Ϧ3y)Ey<L#ѓWx97 C^qϤ[FxLQV>:ú$ٮDg@%Yg WӀFy/eGc3|kAOcMoR$3X8l6mЁ5שe{hS~Փ؊ZB>޿׿. Pn|!rFq:Ƿ ԤK'}Q:Qua/K37F6|I^/&<\i|#`AO76V xa*R a^Nl>Ĭ-A:Pa:{+lu3暀x y";Sw:oP h\UZ]Je4/yzh _MM| @ zZ7em44-XR@.aQyJKv= $^||{`HOЇJ7Nd> D^v b/v z 7֧α_{= ߚsyÔk(_:OIb_dH|sڕd(Q/_9T4VW @P6S"Mee-QW1 Fk0sծ$JTmg;MD}*ߗ= c5j5;sٯ9QM5r4AT"-G\SO[Vsa}5=dFը{?ǘ<@|7͇S0$@+ՉJed n!Ra@QʼXϮs`P( 6Cl¡f?ͲQHжxO־R,,ziMa6;4j.eCʭ4(3=,C\ c҅oYEsW7NU6SJOcBeYh={a66M"%!HQ.FY$lzBHSٻ.H'tI.EZDV0ZVAK-'0G%]Ws`s]>q<@A ʍTtm4ގѵӗ"F9  *lW(I%zYEqmŵZm.eumŵYAq-G4RQ"9O+!΁R5wn\_,:PmsiI&C0$L{:wS{h'|W{AJo{;p$(ۻ;Ana^}rFYL]W.okӤwwu>9LP(W@oAQAeU-F\^[*.\F2rۉB)w6(2<\@M2<<+;"Hǁ䯹nO=a!xtEk&- SZ5ţHtenWI͠}ݴ-h0FlƵ'&C{Q3j\<_aꔨs`w{AzbKMvTIq;,`AE,98)\8X-k0FN^a~LZ- r8b k<=%T.@XnhKC\dl}L7(]?lb|hBzp@ r.U>Uf/|Ly%GmWX&,Ed4s g0lefpw+1jY3[+Vi%%5ssT4+qEUupFAsi3H P9SLvhunspell/Hunspell$2.classVSUXXbKZ5$P4-`ZPK/KXl}rZi_% ]?JÜ_ZN\ra.15fH8M,$M溜>r#2J1hp|hT@hyLʰ׳.33oz:>m"J.+Nq;CđZc89IPs! qOM% 6삂5 : bkx4~|:0kXGQ`jxGH, 71 6 p$ڻaDg#¦hְP^9 y-5Y7R1D]<-g0*#An1S9BtFmih_EkB~B/٦K3~d!Kn@Aq]^€#JCZV@# >Dp:^(ү Z Bp!]x.Uuznmog^gyp`b*'pj [?aiaAnN򅬂 R4H$> F褒`_v hunspell/Hunspell$CompoundPart.classWi| vUT6&CP+Z܆⵼˻bwW$4mJI m ͕m6~kI{#i>h{o1OE+b5Sx!C/&lA%8ȳ]g\  a3ш#Aͥx ZA|2x8 |5|B'|JCjZ9Y]Ln3@}ҲbZVKwL.zL3Lc8dL&X f~D@$r\W32&ќsL,ޭNI>۲NѢ.B$L]l]h7M.M=c]͚)PW n=3%up ,,0 A_ބ;oPx7Mq[4L}K][h"i6c;3/;yK=MZV~+(x\/N W b-qkS ̊T'hXF3bU^oDR`oqHgNk^_cGYf0ɀ& Dl y.6F y=T )=ٚqָ]od1s pޑ2zLCuqL]nv_hٍ07C'\溦)7dȒsSVN #-V *s*a.;U܍U*`^ *訥Lh_ėT|O8(ᔂTדmkk&:1X`gT9U\*ث"vTo[ ;KV= +~_s8x^#/5SqO3?/_*_7*~ ~ڵq½nQ'PywxNytV4ע8FlVjYI^ioEeWrzN=f~~$͈mu"~dyʾ37a]25.Aˋ0*A&-$~<9ͤpk9c yRYztdWY|9nRqvLeuj֏TܴͫLIsz/\_V>;T}JsVgO, >Ͷ%G'>1Rֱu*]mkپQ`f=K /8=iOETuUpJl=[hVK3gBҠtkd01Ķ`?k8\v FT/V4+Mɍwnm x8 iݡW˩xf啕p7.>Iş7iP-azXR[RhZ\=ؗP4%-'Gxw仑F$;Uy~-A5חz7e2)JKG`q-UέWfL}"!ڃ:n˹5?b?X]:=Ofh |پAa њa(~khn Q(!}f{1SlFX$Q)Blb+׀ &6lWG{o z <FAB 67馇>GJZji$hp.Ǭ3EFIEi?㖆V2C(V|^C(Zm)4/tN<(080.GkoT GR)l#wcރ؉]X`dQ /D FeP>ZD5N cP{"6`Qb:_w8VŒ:idžvͳk-SN*Cxy9Y,D8ˏK|w;tGs&qpaq#8}x$m2b{L&#\䠑W6U2 r$k_f|E͕q|R<7r ܣurt]X.W=KEo+8{;nspell/Hunspell.class| xT{,w2 C`Cjd&a"E  &Q F83aQ)RѺVTP].ֶjkKO-{f&əs==ワsٓGD[@w*qw/s-K~7=&v<ݔ-=bvIohn+vl-K|_cHpt_D;1GUq#y8B xR|}3p7O3Y"O0g3s3nWϹ&wS%!4`ՔVq%h.R [ rYsh[P1Alab¹:o=I7 $pE驊SZTIHBњ*3 ̥I<)IjraƂ`2G-Mp3E7}<> UƖ`4)b`,G@+3P Zb MA CgNrK5ft!M+C㑚_L̉ËyGzD"Hs=Tytq%ֳVy?{=LJ J5ahjQ|RZILOazM؜XzUp=A!HFΕI[ `.1;)֝aw:8TdN8 djB́m0LLzڛYᏚͫB" bfE-鶀H] BcUdȏc='C͐S)[Tj mT jdڶ8c GC `CVћ7K-*C[РꞥVtzQlf}!_4I6P~l2Lcc? Ե* ٙ:L>߯ AѤ3Z$ǒ^gHPD몄SŨ2iUvCu킚+WW"P8j|SS*:JAU~E?i|a= tԳټEاvAU+jjfG^FOX|gH͸J{ٕ⽳P̸NC o4n/xxG$ oQSNO,\KfϭЫLТxHvspS*7tI/8+z[B]t܌lfL_!eJ)b8*ѰGO`eO׸O@},2F׏BSgPNT@SM.318ب#|kDjEfNb+ϔ.'Noxnd>y4֨ c瘝)N"^4[:nƻQB(#QN Ne.ܙq1묙SԗaAи⏚Y:!_w܋=km1><eDC!.C_Iuq9\"$gd`tG4<:&5y1,a 瓻G _/hl_t"d&(zNe@h!v%>lWxG 6p]dD_h*P^حGlg"h]\+]l_Ub.6uw|{#][[^k Epxl%ЄI:6&||!mtCBgז2Ԁef #zu~<NWcD䠁=I'I[w{y|H?o)>K?FVS?GC߀g:ܕ{LT=φ&& ah>mH~ eﰇhԄ*h;Rک2m#wkrh9h]JWA,4BT@a{-(BeDR3ԂYaF+mO8^"G[-l5yK = KG`p.O D3kg^4 ^يд{(ک3>&O9?`+ls}F}Sjxm*zXTgRdRq69&oXx9H8{-kp*;{3"7 fLM~ O~J C0|̞F0пM h ro kG-@Fu2F6eMTє†o;&aoS{`cPb *y;qP-P-P-P-4Q͂:HP,y+Te0oӔ>J)&:Li1zڨ?\2L=DAӍu@C*>0~hiʢʢʢʤt%y0-# snO>H}ASʝiJ!P8{pJNӖ4ۄ W:`4B/#fm0*QЇ#ňA {:N)S^/ZQhHc:4xۨ</;@37Qמ2%¼4^Ɉsg "]Xԡ-,W3cw.1˅0R-}S'syfO$&b2j+{wр^rb_}6s4L = 96$E2u(|!ġBd l6C&zէӤYkn,BužmHn#9l{˞FGi.'8˘T,r$k?CNBW{+5?z3xCtAi z>'S M2ִQ'x5{hљxtc}eDzirî.nxHSsavmaGi2Y4*6`~pz怄K \޾2 t M?ӅkAz58ބ qy ކ[|zE Y^!㤋lC-"\{L\P{QA5bHJ .T_rOxkҽ;XF;? 3Ky')V ?(OwMfuXw  uk%XK*>g ͧ=MK|N:*9•Y~r3ӛd>t;Mo"Sbs4)ê (&+`;] ^ A&jX5u,Ks)lROS8E+iIم jP*`Y )y bi71X20 ,Nkr5;Ac4ZQ9`$ef b#6‚Jвh.*Cv^S9`C`*Q\,Fb1]F}NAC!C9DwPRPs Nh\\RɖP*D#GPKa~m,S%|tDkAYFqLWa] WĠb]K1RBAoU Ap7*aّ|PClCeҊ6~TEoc:8j!FGbtZ2z򧨞2q8 Y4YUp,Qd"ĪbS0tD(>Lk$ y>+ΨH')OCd*".O;f.m`0@AG-?"m41܁߉P'pne{ONҽN1y.m:^Dqھ/ݡj' Dva5sGq[ȷdĵt6<%E: & b?VU2b-VR#qb!>@ωH(3*uHTB3ڃ#l VN4 d}aj̸}#-!y^gg?D-fpL3r3e͉9O>r) N)9nZ ڰ~zr/*vb7={w&51b*1Zk%{-VXWQU\݄8y*4#p3lMLa۩IJ(ŗsBCb\M9?rJs˵:xTۈhh8HE{ZAB $ -,4yKteQ]!OAVea_rH pDSխYfZG کxZᣴ H3f')D)F m/b,JM=if:sq( e>?t  'i.ՈSx 3T:R L2oMՖpy:Ǒ$B?P6 KFTw? Ee'jWyjWJWF1:z gWyht6Ԗ=K qGhH;W.oJg-HWCz"> Px[v*+04"CQ9%Q+4#?B"H~ Q- H<CzB~,Bω7u&[afAZU7zOPJǜtƛceD欄 %I꫉J!&OQi4\ۃW9reo0z۴/;V7e^DŽ '@"ڲ\ IQq߯XjϩUELF. CĿw]߷"~0NCRכKmESȣ* -D'? t9bI̓I YJYvHV+SjՂ894BB8M0dM'UUCaoc9<v#Q+]iLS|_`XhڣmǞ?JT6*kBs+~60-ˇ}GzABӍwC9=ģaKN=TN0Pj!|o;y4Q=d?ʒ)_p9 * h, ` !GP,H*GvYL_cYB_~#,r.>FWk|Y?fC:*i*ꈫq4^P88fk;քsȕ?8C>|]_EmW$7'/Z\ |1f6ƣt2?ˉi-t2ݦJahWۡo{iHQss.Swr;- h{0rAv/'i9e|БFt*3hIse%AAr26b7*Jc[f.U!q!Vb CK QޖJ!NRb,sbRŁ ܣt2=g1Uemڙ_3\ \lB!tƞ[wA8osʰeiWnH9K!ӃH&ou:{H 14&9uS=я̚Ke8avkh\KKD+dFLbf1-lau@"1ֻֻfؗl'8ф4! έ_D\j:Z# j&8t?_8wkl*Ci7tcdo;}+`WvvwJ7yi2NdF 4^nr5il1CbcըضVRTV4aPd?Ngei/SbyQk.-)C$)WVy%)#?;#>g6i52j*е94ɭ_ 6*\ v^O$oKpi fKJmNx~y[!i. B;ci!Ѣ\}]-.3w[mj V&* x0eL8nJɇwPס0#mԷv,hi7;߁8@`Hgcι(_\eob^#w*G^PF( AhN{Z7dƭO,-3Xx6D#1O<5e >2T{\:q9m-FYqt?j% 8F']|IS ]d^[fĮ[]Ǫ`7W3lalŷ LV*,tY躀\@KlW&PN:V1>7lz)['Il#mŶQ_!u- Q[;qG>#o@-Γ3yŲModifyingSuggester.classZ xSו>zғdBI-Nb`&Bzh8i6]ff+m6I5mަL>ә.ә6?==dHqu߻{s˯=<-C>/-bz>[L^w/Ibz3}ч/I,W25Yui!7}N z^|Gz/{=}~ ѿ],KO?-oL~%,+i~-~#ͿdŦ??z͟iW?Ki^UiNKWiΈ2gEk8&{ L":Z۱KM=t.-2. w$n +%.5;&Q) +4>;/'5W+T0 (mٴiSF -n5L6Tl@L. ;T*'٫t)'U cqr-_sG[.e:4ah.m ͢S@Ryz%+RwRѻ*x8z:A($OIҏcbh+ɍv.iͤK)@մOUh?ʼnTO6dh`̽ ㍥dm1\3C%DOPT RiN=@>)DujZHkiuੇK)KWeVPR_M_]jQ a/rZ3i .Sy)qm`#D| u͊jRuFn2 ܐv>@ACttT cMt3H8; \wC&-d܊7hj T34/?C7ZRNu:<Ktڂ):-3[#M5Ľ"<+T BG\٬ F sזZ*E{iuHh[Ek=S.ZhUjꁕX<ʝgc9!p%=TFt pnGن~7YI鈅2z"H &2ZGoCOSgSp}w`P> =N {=B9 pَ-bJŮD&, iRZ&iI^PbH~  Mm"9#)vdᑱ:>N&ȋ^nӺan ߃zs(o݅41= =X =K!:sj֧)*+cG G+_|Z9ގ]6KO!U=< =`=T]ːRgnzXVxX. 򃼔$Q$A}vdqBUH#S5v &C}GpB܍\rn0Oc}8KփGާ6ntȸN;ˎs^zQe!_e\Ib NҦ|gGcpqq>A|-Nr;Lhr8"jU Wޅ:n1Tw ۮp#ĉAYҙObA^27)+pvֹ6NSҶ:@ Vߍ:L׊uĚ:D կ5nj+W<ݟ)X*Ϣ"@//hHeFֱס^mq&XKLT//v^r5PڶTᬖz> |%=qvD~x@[wdC_D3Tcnk4]~J+^%j38G 1C*CU@1Vn(U1j䱂պ`V U;.l?P=jPQghk/?5 _ 9Bq ԮFnlKPBqQ|Rө8 .BIssR)@q؂!' wp ïsY%6{5w`P\CKpivy>r!I9 V%*:ŕ0L:ޜ!u=xO+Ab[ʒO-HgTįE* (_Eg:iv)bZ+_|%ؼ˱yW -ym2PyfL$dNj㞵%)Y/SB0ġBg˹v'2fgY6|W wC59]!VMXe\{zX/{À9}N1X 㘺p8AY+L|Oi0q;}{Y)cR]i«LB >OS4\jK߀~c1t؈[w[lfϱcǾqmql\:Y}I(? rv5sYwʳ(w Z`bsM %UGJRAj\#v5lɉL dSyዩf\M1/wJ RFA=AS}4l=CP}c$Mi,Z_:cʛܹE}-pB) 'MQ2j^z'iQZ2nYw2]-stkB*aq\KEZ6BŴPқ z'W;GR5 8Ht)H$znuN>9Ht ӹ)`F!Rik>GWQ ߣjԸ@mZ."O8P<hЯ΂u:qiNuOXxmF ^=s-ƫ(̭뜬U*}fou6 KYwc]@]-`,lgaU0|brKnspell/RepEntry.classUIsW4xA /F 0$Xz㑘prOUr䖃/98ULBU9G$T7~f? |A1 kc;غKKlM5ev?Qq%vR`*[u^>e솊 x #ETVqG@+mK ?Գne mXs-zQ.Hh^6&?aaL"'4,[(chf}U5%WV.n쇠|ٞ8/Wn.:,"M3{EV&,^r6rl+޿W[TqùdJ|gN8ެՠ\ `t*GeVlx&Qgk׋Z]W0*Lf,E'ؤǒzJY| jffKNgHqR1=DS"b%ggfFr)+끜@'m3$2.闭ɘnנO$(՛^ZqvM֑‡:zѧUx#gͯ2ޔwtaE*i k:J(xud6m=`ܻG׷ǭ5Ӆ] =fÚ0'r%>=^9z^6A޶,jP*ĹUX}#h`"R?RIdz' F[ݛ}){Hv hq2 ru1C h]NhP~ʴ;^K8yJeOdF;(HPYo{^*؎0g+l/Ui T2 cD~m4@hpY:/mXSt5 ,*>b}[ȹE r:={iw |9G"O*cH}TSJJٱr=)[ŵJ?;|Q.pnI)<mE zX#*scoS85]vόxTCd*{}\&Ld1ntQw$p!?g(=ZĬY^Os|FO("o#qnspell/Stemmer$1.classVksU~Ntbi\ m@P p Zd,MOpFq/|3RQG+^ 4Ny?yϻ{k7u؀jWpHK hhdz&>#xE:N$`ZNƑQ8N+:($=`LP9b\t@d*+T,`pf2*3c׊cf#3WMsnFi8f9V0.'&Tv@,L'ksӦwVNtݢIR fLe)`}ح.[NRAVCXH/X_dq6b̪-ROr r^fjeg3]Mzfz_e*ҙQR˙T e3ߞYUg} w00cqGu%5Ƞ|w+tAD.Ɂjf9jVn洪 DyE󨥠sQ6l#Nv}9a50i `

ob'gM u"HcG#LF &@"b'u23K,m}sڤʥW%[ӽKM,.ktv/a~Gj%]c* ,WҊ<'& Wow`nǙ>n#b e~Fljv\5([*Q]1ί=M&%meڪc ^1yKxKH&c+%\EFBTHXVl6^'8C xec hunspell/Stemmer$CaseVariationProcessor.classPjA }Qk+x7o.B zJǠ+2[Gk!y|?L1HOqCH+ﴄ@ޭţ[(hزePƆJQ/o 2k!_r8; ^F}uy1 ߈|apOmmaUOo{5a t]"''bbG| hunspell/Stemmer$RootProcessor.classJ@5i >H^ǂ((t6)ݰ*Mzr߇/u VT!4"ĭm)ƵVu)Uh !_5K; ]سJMz9sѯ)B$L^ܱ(ẇ~k^;]0@_4$\`M\hYwAHqhunspell/Stemmer.class[ |T?f&7+`! ! ` HT2L&adȄ Zk\jкmQ5Xk*Tnj>޹I Ds|;w.hjuO֮J |!TKP?k9IH&LIN&D%> zible .'f%4);IPn6xx4Je].K>+WdU|<ߤ&H 7HAwo ?oij!g[Շ6?w%z4wX]G}Y+}/Cdxi#?)%WdWפ-}Jc<.Ȳ'd`4Of@OˊnVx8LLfC{{$Q %2 %#P*o3 KW(izc<6- Lu#iPlk2=Ŧ9+2eS{Z=4t䮍DreFГbx;ݩu$Sv6D ٝ4ЦдX h{ܩVWg*MdxE8n29Ju&@C@wuDrEu|` ^P0%F2Ҷ!Ҟb բhE.+NRu:[[#)lNcwBJpMKp=q`no,ޖZp8uvg "B!jHVvdڑVHYͩPxPb{h2 BSWPG 8Ko5IiưX$qc2;ۣ;#Bx*D"9mK#"Xo G:DӖzL EjrѭP* %p DǺ: [fK@ M|@ 9KX$."ndoի?P(eDž- {;% Z% *hNo>g6bσ"t0U`>Q3щM=(dEgYBh3 Bm"D$ܙHu>BZFK|}ļ╡dv-v,i`Q?o-LnsZ,yGZl'4Yu8b: Itڤٲ$q{KԳ}6烯iZMj :f)Qh7b[ov&fTǬr4KҊgn`[<za4)X{2ZWCKJ-|~c>Ydxl'SMI^{$Ғ\OC(1Jy= l&4&ZڑEiI{;:iϰ4BXhږD g0ŇƼ6DNuI}ڌ'mQҳ~dN2>&>qLҼJXnB5;H}T˴S%HMiMn1?&="wҗM~29%e5C=_WFIF놱Lu,[9^~5cL!Mz^1oOh?ݹ&&'Mz<f/m/W&}]1&17M~6wɿg w GYf?h8ձ0/&f&4~&ȇ!ϿI(}x="iXFs".]jx|[R-)CLpT2k*HEKLe IS5)?QnJśښ3tOD`8~f iatժyi^ȌP nP|CktBTVtLڎ f x* GC呄KWB_Mǥ-^om)O&[:)x ʑ)ȖNxD4:^s*I׳6yή+E⤷6Dr;pI>|ymg2߰4v UgL˹<m}S|}dZ,B! o[{@ .q/ U83$'Z3OPW~Akˏ_;Zdc͈s uӤ!ϣt-]GD(_Ix"[6mf(-G\V4nr=M';J7*y4J"}HCN c!,A=j/&Aˢ.ڎ{4/[hy'VYn袆[U*GeYM]4QV[ݔRڜ<5 ]EArˊrOY4ˀy/Ȃ5R^M#³F=L. x1# 'WPz 4Τ@h ͣi)~t>f_HtGmtm5`iU3N@y\AB )|aN0-R{ϧ&Ww0vߣib51z=/Z~ q]F^z9~ExWw NufS xރ4"z*Sv]DtQ^}4ƍ"{7RFЃmdq} Zk¾ؼ}wd:Q;F:t* Nu3}Fr>K10 q ppy=y yD!yx#¥tCOkq_XD,ȟ}GiZ9L%]#'r2&@#@[)~Olֲ8=SnQYЄ.2=٤=pnB 8o}ǵQ6l<+,+wUdw;.A+yܳiʹܼz'QlxoB,ρqu}}6}n*ռ$ur:Mq8Wa_+]N& Z;A84ae BBQZ.?Ļy{^Qe)+;~*/+r5*G2W34U<n٦Ã2l@p>h_o`PN{F>㧃;B|PQULE-@19[ꃑ`'R\}|-dg`Z0½su+r]A>Zm6oؿz)ROU(o= sDh\W},@Fkb#](vͿ]Z(. f֐E蹇~D?}H2RA!>B8 0FeTcme>vHBqV,׸T1Xruok3\UزUXP.F`/M jd~ZÙh=g;}nQ/ͯv_Ou0 )k3[$uY;ҙ%5Ƭ$J<G4ޠ:$B)ŽKK-5%bK+F%NU/e黎ck] ྇ݢr{x9/ -CKSyUxh|P:rƩ~#GW0STlҜǖ}[5y9+s!B/$Q,Q}ܷϥۦ]2Y\Xq.pʃt#n^  ˟s{.~릕+%מ'- >oĒU;=@gJO>ZUHq}\ WQ1O)Zl2PQР5h5rAuqu  fugjYA.Zz.5/P&ǚ|5"s]y@m ^+˂@w 2pMN0%Qo h9nj ]##$ .42y}0.%'78 &FhTkh:h-Vnz@rt7ҷ8A/r'6owy /r:W|9\q>A]/Ms#:ކ%CPXa !\]ŊwFqy(/,p-H$ѿd`9V7l$z5Y{𛸐]!d-kf8dZ{@ X{X{H!@vd"<$^ o>i@>> }ȯ!I/2ɧVB xԾ8Y\9 -ٳ>,Au%k$O5z[Os ҟaS fa'd.kR]K}&:TpTANscjRXjLk}7Wg:X\Tm͋:^Rģ|F'q+]5l-S| W"LMxt!yN*Wp?z ?EFEgt%NW5o$ߢ? E-pyrCs;9lު]bzyR6$'A/v#߿ZT`䇓-0z"t6BShW.l<քS(= &;ê8Zh# >å{{@OhInCAC@E; ȵIBh!d8z0!up'"w/mzN'<۩IV'oOtQϵIV{ˮG%e0ߣrS@K`|w£?$:tr畇nVԥr`Ojd'Pi[wz}=P.B +ZC# drȵ@°@K (߀KĐYm,fx'e =HOْx"% d76"..˺(^~E: nn*ʳQiTyBePwR2MO  d;lp眴[}DHTm#LC\Nom>gqcsݻT` Ν4Vxt8k-"Seb_/E>E#J*NUt5VPX]R>5 jBZDob_ԙ0%Qg_5rZUlCfDF|#RR5Q ?A(gLp1VэdCC%or/Y[6@MH4$V{@o[..-"]6 E@vVHrDڷHМIqQNE+e,m2I JmxܭǑp22yKuu})̤|.T׊t zZ,&{:".9:J^,*G<AxxBB3o*qSwu- :P;Ni'GCiU4F_ d 'K]W:ESI5Y'jOq;p >%Om5Zhc1mdݽ+>Jp-4FJ4]A ϥNR649I[X؍K{_'Q>o y,)q<8y}R ³»(r8`Qn{@}hX [!$Gܤ28W?GyeT[ ÎRǃ^\ Pje17* {V[^V!Ƹͪ6{k,㬫왫?-Dd =sZ.Ҷ3 dznfMx~2j<W kͼ" Khunspell/SuggestionTimeoutException.classSMo0~ܯВnem&r6UH B봻&Q k8r x8pHO?_߾xvEܫ` 2 Xv`DKE)PoiLC/, kSQxx}0ҒҮ 2f' {1d(g##E^suiq2ex܋1S/B񐫓T X( Qx "MLDHSA3DO? }xlc1#q džo3<<;f9Bqgh㾨YD `A* Α"`LjBo,مۗ}[ g ż Xfbb%</hunspell/TrigramAutomaton.classX `U^4G# Mih%%mֶNm7q҂ G8EQAVI,x *'~n6=i޼y&{/&q. \"RUAx/ղrMuD7 nħ pS)n.@DV _ D|9nWD `N74lx˄- Ȯj//;D頼^)Pa E귃؋5V۶-q^Ycǖ}U{b$ i-X*ԓS}V<Zu'AvyJS HS$XOQS)~)O:ZpgDYs: %^,K:~_ ^[N ? ǔnﳒu Wc!{*:^?tX'M)IR% `¤bs/I&LҿERF8_X 1O>tlE:6 o8޹=q-s5-KF,˸ew{jaxk[[j "IkHۜT[7+QpflSL<h|q( bCcǦdwN+cG'ԑǜ#wo:H.=E kF"5aĘ  F;MrirX9x=< +^Ka~8jYwI_yE?cKsS݄MO؜UNB3])gGLdHgSF#>:`bʺ#IͽBoKe~!h/pcÝl {{ & Snv9q.ݢO%rGM> qKn_+%;1AJ6Q֢:7NR.fi7ܺ(MW~<><"7%6Z63j4x%&[;)v_["1C ʜziGV*91rS|gG;bLTWS {0_^gʇ)88o.,@̜ʹ/Gqn@7tDoILLL,VhQ8G%jNmLyܭXj5<p^^v|mY؂wsYr X.b ᣫfN.q6އÍZFZVIYNEHEO34D5xx T4@>xQu 5TrI˜0P^^Tab6 DNjʈ|pbtk QZKQwyy%HYgp1@ rUI-,F3feDh¾1sY)pJ@@=N5Mh x2ݵ& {JF|[am (5+(gj&YF(Ot0)s3 X0w#=e,x ITs^yvCRB E/@.'Xʫ|$Q&>hunspell/WordCase$1.classSmOP~֮,2Ȝo(mJh45 C6€}]wҮjb1gHz^s}}ӿ~x"na<*n+X5pG3p2ÖO\V,>',"%A<RZ06y,#0dv] C8dК?@D| RvBC z~Kb/L"Wlc~‰2`/xh &f1j&h0T[`dw^z۾V')j >nivB3s'DԔ9 s)F %`AG ϱA1y"ΥP"![H-7}ᨹ6 2@"de)i+[hunspell/WordCase$CharCase.classSOP.֮tc<|n8B L #W.底;Ү$W21 ?G-@$&Mss{0Dƕ tc@r?!Z^c0J5x(%)EPyaƩUp&l?r6z]dx |ު*}Nj;+[\X_[tixs(Wf_]6uH){/_E+winǓb9:_*Cn\VJ#dXha֩䁧i 9I1w&e7jCU%oDUJUsV҅ܲ`z⥧g9㪁j,Zica3➅nd-*C __$/\regO R;?HSx,0ARB m=hiM0O^]f3:NDal*! Z)toͬ6Shqum܉tdUI$ѡ<1g="hu-~'0Š3V2wB&mDge;Dr vgl\-2xG=D#Bq-cY nspell/WordCase.classU[SSWNrA[-F ֻ(%5\jXC<@4`.I_:Ӈ2'>9o;{; tLpSa7fD\ q pMć~Ffe׃;D9QE,ȈMdEH\q5:i`m fq|3,t. |aK|ek[1Ѱm#| +oT>[%t6pv ;]$G74<=[=gq$!O g D'/Z D@"k@"k@"[0A{6ELA -:yZP6M.n?ouNk#VZG@{SxWIb:we UBw)Ͳsa)%!xK8|N")'3A*!o5XO!aн k "ܠ߅}jWp^]`@ $rHm+WIy:J =[9;3DVY$c_~,D~Fgi2.ps' 70h48iU=C3Fn bOְ ss#;̴(!.$$żOP+D赕7&{5dgN'Q|jX$ Iv6!pd15\T2+ƌKv\kXMd udBvH\Oz 5߅V:5Q 6FEA.$m_i'ZVZeԔ<5*XlQ_"7Ê=|V`LzFͽs<66R[* wQ᭦$3K.cd|MlV>[* p-;/z6}v1V)ͺRSv+eRZ %y)|45E"x}!/&6xfV>aoZ%-qv=kMtkPK ,Xۻ97org/apache/lucene/analysis/hunspell/WordContext$1.classn@i.N\IKr)Դ Z @H("7դYt&(q1vd;5 !PBIڤ 6E3~Pq,T\nU⚂nHsS[Ҭ+`npc_={:p/to_ާȍЏvvˁ1Q!\ߍ3$Cd9 \E}#7g8;+Թ`yGOYa}WB\c~);^~&~UkM 4l{ 23=tV24Fa7&s ; ZEXxltCȸ`V 2^tT Fhͷ/W: I"bƗJ&ULjSU7xЪZ߼]5 ڍ3Nr)U2XD4O4Bv@ s_dcLfg!Tf%̌ Rb^~ l`t xD/`Zh&M`H29ZhAm+Qc+˸BRZ*%RIhunspell/WordContext.classV[SV-,\%Z(4 Iژ5YB"ˏStxhH'N:s,Y]980X(ޡScC75kpL<6lV7\k Me1NBxD> fNT$NȱO|}S21L0 "om\4Djjv~&zK zKM{uz!H$!L>p|- %,+-BJoH(' % K-ITar%꫾{јkD}?usn:f}(pG./ :hunspell/WordStorage$1.classM 0_Z= ׆7 cCHJ ^ͅPbccx`#1Hr9J@zQn$Lq䶴@f]!!UԝbÒ 黯,;ZV` &هW=^j2<]jV.!0wAWQI舾N>hunspell/WordStorage$Builder$1.classTNA. jY@@c&&($kNn3;+aL|g23K$Ѻ|g\s 9rȡh=}&(*dbU-/*Ng1͐Ǟl+>"1,ҵy;-a#a٭8P67U(+OU ZfX.ue^bHM0e+zpKO˝ôNm OsRazv })Q?Py)aviѧT;P0a;,0X?f=) ZaD3&1ѬG3O7 &jbK&n`zu~ i [g\J~+*VXeA=2,5U+|񞐜|Tu3wzMR^PKe*GD4ԧG[\h+ϷR%DweOS)i?gj5]FH(I X>Pu>#g-#]|^!T b^ ~< ^ B'8 C!f(/aYxH#!T|E|UץoPR| ЄoK;[ bx\_i~ۏd$gs 9#J_} S1~#>o;i,4<<,}Z?5<Ο(\_B 5y֒KC-tZF6kf >#ۚ˺vjAM[gMP|$y_w )ôn *ǴN'l02FlHe6Trk޼:c2+͆ԑʺXuF+S̜0|)0n<A1fFVB˷͌Y M}+=Բ SklkU*0Y'U Hqesh^Eއ?TZ= ἚSUшlv9skN0|[JGXr[22.MtYH6r9qsEJ(X>[܂pƥ:92f||H+`HHӋ>t\tl%:64q>W45Kǿat:^ėNI#IrrqS¤h(sn05GfGCU#N~ ;(AHөT f(Dc-I_fm4u qiSV崝7 :ͶfQNQc3*=u +:֩wTAu :M:M'd4!!0 FiZ)M,Yg\Om?+IF֌:fvܨŨkGl=g3:)8SXj:T4hNSY:$T:͠sL3uZɶT\5bt{J@5lK'=fԶҬ~`:n4S=͖4Oq?}gϕf ǔY`X#w8՝-Մ2řF 8:N6k/Hn$3c_riP.ԗ&jGXj'f[1Y~GY2`>cظA11Y<12AƦ Bb\reiQVQ3bc,}?0Saΐy}J QVuc<|cp!@hz(~56=@Q )J)J35kyM:A:֪txHGqo~dLxSS0JnFe ͨuԆdLTR܈n [ٙIQoە6^MLO ^PMb/#8!‹_c{{1;pŦAf0OcA4l هx1o3jo>a;*x4ߏw8дE// Z+`ONێq¿Y1G\agȪ!,m>='S4W.4H k *!,n$P`2X"6W̟vY,EE_f?ZH`vc0Ϳ]+G"%RT1eKNM.e<;+&`Cœ0z!LF s_ZqGE?|r-\ ç끩Ү}`% F1ʘ@daMro.t/ "yKyuȲy~Y(jA1g5Scgl\sc!6~+ pqXwC+'h@73/&܂pH7B8cq"@z ~#=a E@qѕ fыCwNFkR'mGi6!HO/pUb4U?4jhTH[qR?}V V^(yki!߂3n>_"?k+KМɡlbxi mg>Î/e%Fx1^-<ު5Gt&I* r<6hjT880ȥ칡bvArLLz>-M79Ϗ&  NbӪǷVWS[ B,oAU#7IJ- ZX  V M4qBoIЛr{0| &-- Iy|#< y֏(媶|g}Â@.uEkn}U>sdhZY#@X-E&⺙Mq$kFFm8' DD؁stg8oahWe{n8xZak x[tdP)py ӵC94A4}"T̛x/X/dp%i.hw$Zم0c0X x#u~zJY&0g2 !:A}0S}Lq12:6"z(_uƻu s e^)L/X{Ujx3lO`0fШW5ʘ˸~FK5Pm+&(O "nې_IWǩk? ;kcd6q)]OwIbb#1t"{YZ٫\#^ I}3`;o1\ˋe0%gG'j<шB7R3RbZ6l~? ]@lq,VuP1 pzۖiH.ab"qr+ڄ-җZ6ϕlKjp}V*wQ&,(;`>9q НLees!; a[fs8!][ٍ5DL׳ra?M* /L hWB.I(VZ[U^6x.-ڹK:/,{p,&Rh&zT)mrJsKaw‡53TJրjx&`"q[$2X4n2l 욗$Z}psEpB`%ݜ7 fhZ^}S2Uo53u|(=q&"|`fwuN,.X#j?qT]M9?0Um_ܕ\?P*ζ3 Cn)'Ѕc(8>}FB1y#g.{֓5~}b,7𠒆_e|c*,r/N74QMXkV'i-?kϥd޹̙agn'/-#c3}mk;~LvȢlMp]c?y(,]W_5nyؓ֋?CDj  ;oxt$a) dQovYt3t!3tWFJ᛿7)s#kf%<K`a$;Uz,65r^JߩOjIeѥW%n̶_;j^:-+! ,2UfY5+}TU*d_NyS%X'fgYYuʔq-ֺCyDZj}OZmi6V,WE9Z?",KnRç)-Z2A@RAU MU1vSθY>l0#Sl*+4{=JM VB!`GI셖ZuS42.PV.4B$ѵLXwIi KI2vA^ftѵz3oʂ/ki)Dc5 Zv mdeI^ͳg|sb'OR{9&/)d53ԁiyrO@'} F+7g/T6P UZ$hUyB+v.+xJ ߞ; 6E8vn˅(p6ORP[kO*kO&0ly j.owAS9.|z7t[>%$:͚ a+/ӥ/@F( >'?SNߧ?U|%EBCǡmtOq* `\>7φԓ+ v¶ ɣ@MaKΔo D+ɴOيw8߸^#ll&KS e;dGR`hJ9ijY&3"t9{3ҬL V0tRY2& 8cn_GDPZX/Sx<o~.q2 i" Oj$Hp\T@`JTnBL@ØZq69eD=|)M@v0xpivZ3IC|ڰ-;}4o# "xp pyʍ&Fp ?3kŤ`}#xQS9=gm@fiX==Z_ɹN2&e)Vu>$~]OȇP S{Њ1tȃ9՜~]6x +,S.a(%惷r GkX94AP `a}~j|(%#fo-bIϴ0o:@iI U$O.XGe˔+}!{e /%j燾D=5^ h9y(#lAL_I@ f)~a:`ϭ'“zBekyʔhCЄә!1%Z)jN òJ;`uu+YE}FiBgw%=~zR`t-]UkLn$0GU0"u:Fw##TM0WS=Yu3^ޱ[MJ/p/2>Daй I o[`ZC23dBv}4 E8z`M5RH11l:O(9)r!Z.H0E_E41dԴV6!,p2B⚯!l,v lҮ%{bG%>ֲ;xk V'7509Is V.U)A@uZ졗Rfjp /XbF5Iayvo<]]x6xkՒ6wUE&0ޚA+P,-N }̑a˭OPशݢս8Q'ⴡ@av(6&%7J#J=72OLPf9~->=ƴO7vvVT~ZXb7GΎ9LC3!}~}YrM$"$^~V*ĄrLCx)g[(~8r5yDLDGbT>浱iYjъVK˄Q|RE ~R'j=:3qL Hod7Gt.wsa&\]ތ |hQN_yp϶pNp͌Ƃ-F!΃sS.SIMص,Z3ZDا pn,ß|躪]A^R«3Ix t 4O+ޒ|JƯ6Kr^u~UڴH 9w&, uRNd/OJW4d])yR ۜ&A!5S QZHشsK]"͹j\rטi-z*<&򠱸+enL&~N C&mt.{˚Xs<g&YDv:p8rhG \pkRj:E O73SK LV>L \cZMXlDE=#Tw ~2^FyzRj?js34w0b kFBtt w>&Nlȑ$5,ׂ6vEnm6s[K|a2/p)ƍp`!o.o! ipsAl*D8sDJ¿Cc?6eYJZ&CU\ P~U?c8Gmα|~1-:k0f_4U$pDY֭8-n*3\*.` 3"&V9 N͚P9./yw%{>+o;`ǭ bAt/Zavۚu>C7]fd ?Ё vc`" [(.Z?q Lᘥn939x# Qۙ?qȪᠱ@m-%֘=Nps0hJul*%" Zf)#AEZg9|)9&}x( JPJAX{pqqғ8 m~NA!peJ-k 0Ciu=}N(c=xK8 nRM48Q  T_6Z8T*у*YC3+Wl#S,ޮZ o؞Mr%J b:B+qj3^v~w:d{и5~QhLjR޽ UW S?LS HyB|qꗺs Qdm|GŨ;)A~~1 QP~p3w AւHKsD ̽4Q2J58= 5rݨ)݉"j\ZLJSf''ݧ1h w6BDܶCP'UJ9S̱dmw k{ʐ :͵*6ԛh;&6$&ZyLIh߈g~CB|>!`@Ӣ?Jj_0r-&0Xr2L/ *nhGq!\t(>N"40S1}Gf?oRc0&~H`3PmOcb]8$V1%0(433._SHrZ)`xPWtpN߽װhdG^Z9(alR91u j>RHwW[{h[e#7%;'VB!ljv 񕚰LAJ= 8cx%ЌeEF}>^%̱0~yzh=rRS~| "(Ux4z4bvـHd71+ /l4J" иO5T)wAx[L̚s'8lfTE &*^r2u8oAFյd2zMKFR4 u;;S6 >O .SdGMίa>/bOu%bAfN'vN NN xne+1ܾEK7/ok'E+$ lL.SZ## rɃ\?VDp7BWˋ|ssNb'j3ӊi#`Mx)h2v;%bnpSMRͷmKAɹN?GT_Q[]5dDps?6nkR!+y|Bf$kjIncHI#4T~{^:PM$ODT@oAb^>, "ސ~yLS~fcl_+=`P8k,G&a[CiÀyJ&i)5.? x{%X~W!h5-](Ƴ;Ԛ1;m&c?ǖ Cl/08)jI1Tṧhf/te8&Q1)aYxl]㠹9%[%~Dl:BeOUi+ [>`QWb-l`}T6 &  d7;KX9f4,m4$osC >T).q@,vBM{@w@؂9l̛^uWxXVkȔXΧnc:-~aW6 R\3bȁtubFrZ`n j9e÷*Z A+1{OxfpΫ ʠ@-z/D DJ@:7ʍ1jնޛh Q(bgsg!-1Tl-r IM$h:X_[_tY!So\ ڬL ޟu=.1uJ[BnV[~gZ|^ŒF"xH[Bh,|}#K: @S}ݣq]*87y.ei10آPL#R#&n${m`''NSNt% pfٮ_?pQ-D;1~8f쵹&fh @4tT2Ʀ?;|'CXo;Cٍ{&s`';r8hٮ0^}0ݧBv0@3<6Τ y6_Ohn:^< F1'r Uqw)2)/tuW}02v9~V : WUmA1P?"L_&V*[Sh_%{'V* 5~.TRt܅F67)nܣx4?+Jfu`tV#vj >|A1E FȂ @r R(R))׌Z8ɜtŏm2oJa!8 Y,nJr` >rB~$ACJ@cعƂ[G.(61ӗ3w½]?BulU(2EYTm)8ӞC8YO"[52-Q҅;LjΦP$T=G\S;|+O\  ڤO[,*Ijt3cl~ noˆ>?C]=K:19OyG33eI Cz#Iܬs /W4j5 7Ch U7q/˧_'ap)>:rn6-J|z3:w/JCzȫ]DTW٨7nh}c.h6'ٯPS>L'ґ64G!u<iFƽS6m-P<ٓ,j: *|kSU~jv9L f[O`V:n{"EӅEvkl6SCtv:3͸s"1w#WJkݠG=9D8:Ǡ@ ,/ul̤8bnL ;ei{#w޴.J6;wqPؐ#yޓnCj.yXIbHZi<ߛa[B_W{ FBL<;C^ ǁ *W'w+o,\Af Ja!5 U׷aˇ3\5EM3L-RLR(K)RA^)6.AG֢ꚚEZ3I:V:=Q^ sobA(u`C㈥צMk XωfΌ^t:@Sq sds71e1h76&XK &!r]qT+mh-"J%-E. Qv^Wβ;rհiR<XԴiI\\?TC1 f,)zA@AaCٽ^BA`F* 2{1hĝvXdĩEQp>mnɶK])YIPܿ SpF7&k8c̒;e$}+Ƽ:al5d< 8eu+Gr8bl0Lx1Ge](+h6%$ z2 6+To+ϒ_ @ʀ5AVڹ dŻƤUEZ`]/6 0[ Yj6Cl汜nD0b$OvpݝZNUFKrwp c9{/i<#'U,ԹfIK[/$@]|-Y:"`.\"{Mc5ioͬ[#CIK +IPEv<ؑqbfiͰ[R#o䱀͹) `m9@/v9xܔ:tn6clE"0Ep<~Dq<.)4fjcW%?}WJfP [D%xwmXh1g Ǟ{2Xx7vγ=O_ͼ4Zk0W[©t5XdwqA)EƩf^s׀8Su ܛ(  fDMnz,PЮ+ ~߄MԱas&[t6ȕ[)6r> *(LVn']f;fYtn?HʒPF9p<0W~)g]bb,h,'On3s%}$O7~I -a:<"]%Õ}Ɠr>QwMF?i񍆜G1UNP"ҿkw)9 t7aw9+T*/0-U !+Ylغ57ݵ7=(`=8]CsLD6[&}KH{(vĸu_! [^;'16 XS]YdGm6Vd๙. pϠ 3 E;&ʸoU:v!PO/˫=!O/rcnk<2 ބ~Vo?kV G 3Pj (R>zk{̨m OGJ0 :sc 8T<&  E(%H zr\q +;ɤ#)'KarOG5eտh)oED=9Nݪ?bU|Ŧij{s`6!tEl%20>:8PB?C 9'K#`CZQ;|32ɥ lɳKwY+\aMpTAc䅝y5>2GNNP]BU L .ZQh pUYtyln*K9>20948\jIfQ#zf]7M[ֺAZG/yZ/ڰV~䓕msJPYT IQVIJ R9˔bysUR/'HDxX{Ԡa\>ӊdAq ]*5BkhvVAo)mdM ܠqRj,g(Jl +M6)u?KC4`Bʹ;(pp]*+W~h LPSkv?lq'>[x>* `9YtF_n43OE V6v&EGXɾa$Imӆ˰5~qDq\{-Vx'}us4^%jݼyT,|K:9$_ Y+0~;zG0Z;[ n74ĄkyZ,)c<d F1;jhMɍ1}gE{<)bSsxwA/r)uy Wh((MBbg#( .|@z7l{2Dc@Hyh0><O{EH3@9 ӸҖaQ8OMC=U9iep(.G*`FO5TV]S~v3%fKs1"!^>ѯyPqOw!&$yZϺ.$YV +޸=Pt*s/ifRCv$ߪb0$4r:!r;ے@@NM,PO%p\iF֊9.#Yk4u0c3TGoT-'gY!+Ⴟ0#᳈CY8ޤF|Ы!9E0%@ p^Q_2^@:)f_҆7W!lGɡNCf$ }n)#$&{zB`w:'OPy@˺ I/~0G^ޤkNMBѬd@dwbGG [ZTsP/~p5Y&z+ "9WM t[,x;U~]%OS3eyusFz<̥,Hzourߚ{,hGG}bqE#6;Ty#/5:@,΃AzǬ+#hV͜--Z[6"?V|fЮZ" Y{[*Gӧ.Jbzgeb 69mX-o4"zהiЇpSO$O3fygܼ],m{:pؽ@B-`wj)i`yz:ijբ1TMY.OFF! ("tu\j 3ƈeӒ 5H)ԓ>V>#z!5𹢬 ~+qFVaaX#Md\R@N$XW&:L`o*tJR_Tءr΋:FϾ0 觪'(:(8/vfWobTz*>yzz%\A8#JZXCem8\A\=βXǴ%'V$zu&='n>%@3μSJQIYY^qȀKyU =lpG9n<03-Y5er^Mdه?gZifMȥ5FCVxe.1JݔZ(Y:XF07l1|$1R'͘IIA!͵-*p;$UxA7/V?LC[1ޔBպY"v*$Sb} ؆ xv )sY"F^h=/6LsͰqHMo]l .SR6Nsie0R#YBwZ(U8bKFSrIQo ?|g?8"ۂ {JiBn2OBjO H1Ljp2j:MCI@U"ƴK+4b~=+5^ 2,|mI. Ջ|Twӯ;Z?T."#G[G>$yLʹ-xX9z5G8}!>n KVIaൄ|JW~{嘯33U9ɗJ7EJS%D8p(gCK!^n Cpk(,pwDn}1j" EKSK$[rOMnzTR< Ub,w! h֧bN|_-&1QFUkZ\ !ÖqΚEYLz@ az7l>uPLgOQefhwZDw(֦ɝd#WE UŅR (@hpT?țCԑoHc (Ք'_G.HFR<]T AeM`p0mY=iEnY aq:ݯVN9|ums"!cڞBȳrNne6bԕ݋)`5̐F#$ߨ ieH5WŞv\䅌7tUmAOV9_K![{ydsW,Q̗;iPcǚal sDJ%⅔ h m$.7oٳNm(G y ePԺdcCJVbE`!JTQw7?ˏޞ2,!Xc~Ǻ^=%T˜*5Ä$YF(ToOЊdw5[pDqF::'+ǐ/7VRWTG'Q=߂<ۊS{ﶻE&oe7__pC|g"3ghyT&~Q n+_+p/1EM{M%[]OVJpA.g 9t8o$%\6W_g׍?RÀnK¾#J.QIiU"T\kic⤛&R([8J 1g:_su7\e]j+瞑Wϋkqu6|Abb1"?¼?aNLК\r_=ϥ#.m B+$~b YH`kR*sID d-S*{Bq6VRsAb\?+4MdVWџ+pF 'MH2b+̒U׉"Wein(j7vdD!5qOG4-ZHÝo$U3(݇(iwL1EV +ܩZLje6jT0,$ZF*c?p~|ҋN$Z@\! iw>M.^A5W^כ Miyl}W <%D﨧kJǓZd@B>u 8IhjUoky Ty!UOkS-6ӗ2hY m=m5|SWb)@~wp=#ZhiձɛpD*$d<\#b ;^%D$>HgH17#,2 ؕƔ/,b[QeJΛ^?W6$OF-2L.=MW ovnsdN}6un_?G?sHw2-J-araڱ s|_O2 <ީrE^di1MzO$ri`F-U8=_klx-1A V=)kLQ}x8y<{x6j(0xW:bZ<-L#XfzPȪ|; |e6UxWyl9v7TYaC?4!3x2[tj5Mfx;5!χD+e2Q"/`foˍ=mt)aAlT5sm+/<1UtT\ڕ<^0m#!~ykyrMd̿#|wb8j/Hn'`ˌmb iP渗('{xAcLѮ5*.?sV֍SQG৘$׌4OT2kVsAݲm!H{R}4pJ ·97Cs 4sY !l+=jږ_PRtIx+ -sV4}P]b2&UW92JTWz|gAdHvvꝬ 1e* L ,`قU@9c5t-ZvfIKڭC>rvX$ܛnmM;)#)pĀZeH=/5̰M+EiQŗQ H<3T$̤MPoApGY:'چvuJ T ?H~ bx$H2OˎNHPnd H ?ԬWl0 JLm?IV0eNWrP,oD9 佸9I$YHa"1͟$ vDm?2~A`Idc;Ԋ3k K.t H5~?PLPBC)Q~B #P@%DtBCe{AʾcVs8UT<aXjc-2s}7tͫIBCLWąa 5|| C_I8Tժ&.@6۟1r/T&x5#TY\Lˍ&tZNN { 魭ngНnиX\DJ[YoV6նWaAYk$Lg(ڜ'|=ŎSaYz.^({W7Ȫ Jɢg_T  i=yڡym>O\di@ sSV<3OEx!_$LJv (ɒ2YŨutPfKc؍}}6Y[..f{6n?Q["b"jѴ_. 12:נX*  [r*~3[g"2{4ّF.=>|&E#A@ &=@0bOIFI9 O;pt?M- -PQz49?9,0Y;<}H7$ȷYQC9>,u};@HйيVߜf$?[ȿr%%9E 3ŻmU7,mXM04c.d`m}1Y^`'Lg)BL$Ib.^*f) `Ι|Xr2 Ôb!玭q5EttaRR y>ArccayTNe=&5P|lHfK_~9"*a-c^6M|eB]XkXtCw>B ñCGe"ju=9Ơ]V_fQ 3s{_ - ?zMw lTj D|%'c RctRbNL*͘ QB˶;)r{Cg^lvL g\{zc@nPƏx`yr"_"s5EgLVm6A}.tC̽Z45m="!0zq/li;z:\b;5OؾM{κ+c F4r;.oBun2.}Mf,)R(够({ə _9ௌvp?3uJMl ً%`id }Ä/3n9إPtWw8G_,lQd2IRWP1";;p=>TQ Κa_1Ad92`j JݱXXjlRHVV(ww?^<m uUTB!#N$;C 2H MVI&y!zGZr8{\aIqWp qu LU(o0Vk{ڶ Ä~>|f\Ŏ;8Y{c./FzAv_@"j^sՓqKn*µ4,W/^cg((j7ª*h/3r @C :giL(O[y%\5) qf#ǨX&?=-!EtTx8r 0AcVo1.5I;Z y?ڦ-r ƏŶ!$| 8uOS h=C|3t+p,H]} m`O:ݱm׈K+qTTnklwGK"W#^0! 1ͪ۹G|) u> =wWڎ ȍ@-U~q/+twS8-jFD:>0 }E_+.jLq˅_el#Sm'\wic>Vҍ6B<&T;e&9)`7!HevN7|vuL5&M`K^j̙reUƯi VdqM9uTo݋o oWAy17>9c?1@0aB]@_z طIg)hsOi*zgQ9PIyTmmnEa<D!=٤paq_wRjRRpylY4GvM5~e. !<Γ]1 򈝅-IANH/]cAKs(Iߦ;ie[;%tiO4K;qftJNMl0q#O,ON? ds&10Tx܇$˯ZK:Fv. dW`S-  Mv)v`;̤$vNWDaTԆ*~>UmàxɣSqM^,S UgLQ+$GI=dW_ۄL՜O.GK|7^qw]}w{x=GA'TvD]U+9"1;!-d~ᢤҦsяFg"'!År6Q2nok ^3  :v|FQUB"э\O7@b65{ha:?O+ݴ>KT\]n>a=w}+Sj߅μh? 듰PXȁa%4&MH׋7Ө8M:֞H-.-KtL\ xc{ *\EۛU]?vnelb-~vEmrkn@}Z\@3|ԛ%c;rXOїX]">ɹQ\foƹz!ep<hAӤytƤȜ^dWFaXꨧ8/c8gD7B"d#yI&vjRd\a)mO{Do}ԍCݨtL꾽<>]=a쐚dG9rULPϚu#LKWݫArGV\A,<`i)4?-J`TVU%FwLvn:QhT|j BTK4 $pu8Dw=P? <B[4Hk\Uh)SȬ,jpMQU"63 FM2p1߀I"=7j|s>@ʏdaw r q% wA' رCn!.{;\'6+8/\N8Τ/_`] vXCx}fBP5i{A1 IlCC!*g^s_$/ϲCsMEomI^ݿdPuS]*3zp po3|(a0hsiFf]+WDx]?zy\L.#YavlF{.%8ϏgzcwVAӍ!d ÷iֱ0r__p~{GbScIV *[퇀#|r_AC0X l( hME ,v&i9Bؐ[I$ btE0bdZh?Gy[g=j\"^n/2e֊LT2^"uHtD`jpYog bA)U6hȣrZ(v+.-MůptQQ ʣskk<6:-xjw(CİTbVZQP%t;cΠϲ{FNV޲!g;3.W B(o+sf#w֨gϑGӺŀ.cÝpu&X?rTGMBU:˧ftcJi(s6k#~kINJ>˨=S<򭃯xd*1&0z; AeK}6Npx2y\b/ BTQ6}Cjt|k>=E![,oNF./S֏pt^KZQ,9V&;% 8:tLG5+ (v2$}g,?h۳;e4|I{.g|A!.P7w-hL;hcEF o|=59#"/+%/Z]íO͜e2[5MD~Ym]P4=j(%: . .KC(6PXTjjZTN\]OԀnP%`DԤ"FKLd [rP &nHVf A9Pc5[fH.|%#(g{#<𷛽bOj{uʶ[1cD Bթ-,x̠wd]=TQ׋\~ BU]$? a@mWs%6tzUAR0 &h#*0ǼԱs7I?ZH[{4ɂІS0j=n t>}.t% oO*˳HwJ.V-ůiy?*Hd[r3l=̅U(%}˄AEg4oM!;בќ^2,WcZP5_ %#In(c[RS\7')΃λZ9zݲ_:P-[dQ/e|!T  ߱ot["MO~HTТ KXc6X6m6aaI^\cSϰQMR[}!mG)ʔ0B9;mP٬V'7f7P2AVf3]`[J]9)ǧ&[\#]_DN7 K$$rA9}ڸ dViET%^MYbە:I2;`r׋ͧkn+[66Xw_i:Y$e?KytNߤy f&wz O{8n0j8雷}=GҞkEt e\Ɵpn{OP;ķ|;_Js`2V PM8LJ2߳SniW H";kXUM;"mr;>>8*@uF>hQr+um#AGl91쌎q8qǽ0`ui; evrsCOMEl-;kSʯ$tT*S;Gk 6[A&!\Tp_:f}H w>˫ۨlQ|$tg:\L-^XX~K[JszWFٯF~.L3Z { LQ!}la/|䦒2 }#Fc}~?k"Աn䈰db&#ch֌ " ?L^LyڵO(~+=dmF 6##-d9HM, T17]] ĥ9YE>d*4U08'v k]CE;@‘g!DoDOu*+J͹Jr󣝁  >ېFq ;ቧ(u(;2*-E,d bSJ`h{5vv8a槥'F{U]k je1f?ҕ,8Uâ7l,StRɸdw(H4z˔SZ+Mvj"& PI@G2_ф]RRPje!3 - s]l}p630о:D_UnjָMp&Y&x|y֤6)jK㨀Rn#10E ~ʴӗȣ[84m$zc=DQBШiRDvzI}çdU+[Uhn =qC=QCIJ,I7#3Q&q8UIH#@1Tb sĉ޸Y.m'l"}!sc LIn0 4-6;!0=ak׏zfj{x[Y7dۛQNS*҈6>/3jÓsgK+KX`^_{J:r5|*-Okv`Je\u^РZ*Y_*v|>!kO b0>̽Ű{R^*0~t--= - m@gTGjcIFMGOW/veNIA5jwhZĔlNn)f=[6`ڝG<@mNQ56id*Xfv=;'s<.d^VRa]kj8 T85 "*x@ba 7qhsz;wSI ͨv@cO)|GǙ2w3y53KKre;pM'~|m8^nb[ OUIGMٺ5Dxe,d.p' 5,Mb#ީ)/y[ٍC[eq7I>%$F>rM@bC_neQ/Am' ^==~Z^p u$w*?5]YonvYlVܐ^&_ֶpz<S[FvP3=ѱ É OZd#/߭ qOr.%1x][Kh@!@1I`W8-L\g`vsX͂ -iT.}2)ت/gI}d""+"6.VrJ3#yشRSU“X-tjie3VZ۶2ztXm2ex,h@h.K(=,(8s8P1ݧhϲCHf< z.=[:Xp$A-E@Va.I5M.4I?m;|4,OKtAM:"`1Ғpk-qh7kt!C4"Ԫ{JԘdT{O*x_mZMN~/'N lW(P_Ly88Կ̕0@퉑IwߪRK)v̜13tX5cVi:|*1ߧŒO\zVzzj _٥!,V󝦆QM{m2s.m^E1~0Oh0dc}C'tb+[=81}QYҴ X 9U!GA \̙6'CnAg~H5,,5یe2er"0 @&:k <7֭RA d %N+TK@D&؏ w2B1Vh> ;20Nd<(<-=VuLqM\ F;>X&ש8lMJFS1H-:-)X,>3~Ne9L?;6&%4`'>Gjb;LHqJ㯄 N1PoJ蜵H|ycz~P{x}48uO=JsMτ{%L-X=S\HVulNBd2)mHZ5itAQD Mt*C(2Aߕs IL'o Nt/u7RLc-$AQ{JիjEnv7t14:GUS e(@I&&[gcZhGxZ(] _v]-FF)& ~ q#d rP_[*U+`&J~ AÏIqF^TKp3kQeGuY6P,C]VK8+ynPA P>[AnȢM+x86r1q-4!\% ȕH_l_lԼm3IńN[Э.&s+ nڐ@-@+&,_Raû IAlDp]q6Ƹ FRWI[V%hޜa q&ѣi`m9 @ȯ6bkrɥ)7,=IITΊ~q fa0O '(7E]\6k2Fb<64&'*{7U+V *hnt4n;:Pm+`J8Vvz>' =}cd3ޱVm bzGNP{q=%7coP2 pVD1Xh43g%zTa V=yT:\ 4K 6U q;ͱCn:71U: @1@\0'g ynjbQ:+d^GE=ryțYԋqiB=߰wư^kЎvXdA W\m9JMV,YljV"v_QytIzuc{X OAC\'V%Wέ7݀E?fX))ippccg Qqj"@?0LsgUh u=NF\fEZ?s5g+981[1 =ͅ,s!{u|+580)ߞ-5|D<5 B1Iӣ@F}A٠oI÷мI”%k]Ju4}D=_-d+*N,xQopugDR8)cle4:w?ҎlmB"zLfgScU =qscpfj&Şh@xFzWr3%i5[KyB215pbq?Q2EF覣ߝ0EunDk?p s 0;WF\T]d!Bph%- n@9EZ܋g6|ú!fD}oux̤k*=p;i'm:;r ImsAaE߇tg"]N/".pwh2.Y) ͥ*o7T̜+T+H ܎?֡R x9LKv<ĩϿЃ۴) ıc!_ ']v7{␮pm5( i=:EXZFjF'toư];r$0PG*4Ro~TDC$tR`X m\A3&*ogj!7س9Zvk:b#7*[xN%эRe֝fJL~ twUL{KP> ܖ"':J1wZZCY50-_ZV섡JvhcG>dߑ~-[{)F0xhp9-tY9~ b5nܪ޹޹$_lk_׮[!6Zٓ 6 cjsS{1Hu>*uL gb-TP;<|ng|IΕ̸Zת;Μ|Za+4ȉ2¯6")A'd9H-P!1$("g ,b8˼("G7;^NlSGm:םZ X|aiXE`vxa8gbqPr@ Ik2ُ)"!gŒ\c&TI84o:kKdϹg~Zv]*D z0G\)Y[œ}_h%%@ [X ϗ#ׁ061B-RJLu9tzlQͿ~'3*H~e|Bj $! -{mv{[4WqsL|VEԎ3 JH;ߚOb{n,c^8,}EdR<Ӄf<[Pqhӂ5EIB*X{9p2+q]44Ee Lh}?Qvx1Y~IKJgǃARc07щኸP(CK5+~ܪ`IN wÐ㣑+ʔUYxX))MV~Ti _V! lଵ,CYjHkz¨p#oc܏ϢA=&Er?r*w<ca>*zoyEVF:L9FQkfoSh/ڵ-rϦc":nuv i >~1wiάNfyPk7i|c CNcdf_e(~<(4]ٻaަԐGyZ0$6r9xD6cHɔh-qA!ZXn~'}Ã+XZ=.RFlF\Hbv!V!bVFV4ɦ88Z 򻃆rӮxz33 {~އί%xHJmy,26\qY]71v#DN :›q$飽]@, m)!@I };0RC~?`}q}V&G\Zb`􅯖UyMZlzNe|$1&}\TʒX5wy6Y<ʆ ]o(Mpe*m>/vJ! G}晥H7Hf$qzQ3\Uͮ6 ].l7emQhF%xJ">>`eozd*t[$-TCCh&_:7̌Ab*]SFoxDhhbyn[Oxd;S}]U{ -NM~po8FI\Wib-) se»!9;8^T}$2B30X~$I HxZFedw]rAh#P[`.,,CbV2Jt&z4lN 2]LQ8ʠI-/&okx)B;Bm$ F 0,fx;:3/k'|I'*s٫'\Kf?햎u;8ԛv-_"W=#q a 'H(@V>Ztrĵ/NNon'p1F vZ}*:D+{N<Ce MטĊ*Zi1]].e#C[Roi0D"t&WPwdz֓A{8(<mL̳݌UptbmmDJ+upIN;3A2I>g&v{+dHZ@3ct\%1|H`Y Ra)fA1 n=OԎ4cX,@_ՅOneQ-V@FY2 }̩׉h(سE2&4mv4/XD/02qNj8tɼx.R q9b8_]-,*%)֐ umS[s"T?s]^ jW~6!jʼne6ę3.?vPcM ?_xޱ~v I:衡<fQtZ5Id}CweVGطF8AN`Kv`I% -ُ+/ƚ*b> 6ZXxXYc/!R 7z`stZp}j_Rsbkg]b^W'>  #JR78*VP7ՠԑv@5v]Gӧg4RAM Ya=ZN5q'_nsJXRՐ(~*2 ;p#k*\evh ^lyՂ}.Epl;'h>&J52<A w}"{qҔTzYp DlUY HxrE^0>$ .o"p\&ZoDB$d8I\!̍,g{e8'M.CbdY(6L Vχ^fE7LD%m89zta03={)dbRl_H "%>v0 Z.@ހ2+nyq<ր%LۧT5r5k\ODuϡ/z 9h-,5iAC{~Zz[\V60mE ͑¼7m׌\_\hL>W}Lr.L.E(i]v{= J_D?INTŊa8D@)E%bGV|c.&h"hȹ‘)rugxY?#37Sf6&sCAEWS)չ;$ Hr򍨙$]^m sVH&5ru?یNOO1$,G3(r%_-C6['w /)Up=[CkAߌӊlS5 Z*$QBY' { 茟#ՃB<L^\4H Hy‚_I5W1orw +G^_-ty=cV-zo쳳mܱ3aϒV;qe⑨٫w-kanN+F-~߳\U|XfDYz 7r6AWPn|ݖYXdN^"iQ3 Č{܋ԫp` ]{s e^)?R&8TP59D+1x*?a> P}ťC1 =W m1 (gjď IyǶ2BZAޚ@/B·Z|+N ĸ{]< G7_(B{bMe.).rrKkk Ns< \sHo"ҝdi#Q";d;4"q08ދlʤ^274L2c}iq"ig\zչwj,_V" )G҇UN3s!2m\E!lɦSn?D 2Qic/uX;>':@/_o1I1=+xm<\>o(DZK&u2),JōPUVX\צּK1p4٩Nv瑕0eŔrTt7"dՎ#7#q pXD}G1SZ+ cJFPg(@R_l )n;nٿyMv!4йSE{U]G)8_m;ǀ)v$5.D"ۜz@Y$\e)A) :ZL%)'Fy[l Nti 菈+b SʉCjSA1=kP "3Yq*וjFyIL56nRJxstLMA8n64农C դR3lGP՛Fj=,E0¡H|rn8VP$j2\I|>6;c Ut97Wp%_YE&9S^Qx(< i&p/V^{]E80qI5_4]kw*.Zﶊ\-С$`wN'5c֊S{ ~d"EDswͺ"etd8ۼwe5`Ս?*yr-LhE!¼eV5  Qj?<ӻa4 i lVԧ?/DOzM7Q {FS[G-4u]r a?(,Ft9 Ib @Rd! <>3?2=SRB֚0];Tآ`oPPAZ˘ 1YpS@zʱ.N l:24IHwR ژ+(ݰRyǟ?2L@՘Qir]؋i;&z}/YdĦ r.p;>.T\PCKFڳt}:F>9NYxʀݞVsaiR\,7)ֽ 9I'Z(=oϟa:mī_ 1u!XJfE[UrFvΔ{~DjX=MN 56IOQQ 1k2HbNMmQNMaE*C(*mwD}~s/40F+2~lgtB g$h),˻F=]aj̹`>N'ِEϴ8M\0 xܙSE3&I~Or4jf7o- a.Q=R3Z)>B(3!i]̮zVVPp|p_tHCco+iUB~! 9 w84Bܗ{ŭg٥-9E%<04U;*VLpi[!&1P5a@ :r 졢qj|x{j$^æ= /VW1} ZDwšү_JW E$ht,.Ȯ\jlCC7FdF`yx#Wt+}ȁ}aY!d_RX-aRL4x@z{ U#/ܻQ:8npoBMև`m&pz柅 @:o;M O]Xm.(qEp/Yck`.?4Nċa]UpYK~ ]&l2Ldֶ`\|\Jbqޠb25f<_f"ӓG-hdyÕ(WQԜlH ܥN=_.IqTL[ٮR%Sս<%P)vzFi@Xx}'\< \l.Jzh$2ja!?bzFnxʼiCOܘ#wy8DcUc BD#gl3:n=5:mÕL$ i y$S+d k[_3G<^8;Mt,k)4JzG.dG%bFp (Vy. ?~L"ǽ-Xy!(71Ӂv}3Lj@YBPBq5c;z.ɨ~§x2SWU?eYJqHrc5v_~r%9HΕs>,[=,O)ڧ1BeU$P}qaDݨY(ohs]dpR\Bߋ BY,o^r,)tn0m'`MiUU~o~<c;'C^t2Y?C=ҬSW1m cP6)[4w&;܁<#C0= [WIE.\]];Һh\:5xAL Yúl+(9ܑ b@7#ίEkUQ .d %<azu߸(xƖ.RTDcHp5IjJMWrk36sl/G HΔjE'ωmr[pVn+0% 1ɜ!x0Sd@6c܃^he`)a/ TA%V{iv| iֿ5f +X>uk6;IpaqJ_p J]6\V{N@ 5wK7]WsG FurX `d3.3ǷpUyc04>c?17>3 D\VN8C1Oβp!>!w\$߼Z9LO:;x@ Q ^A)#t(=5v聑l!\]> 룷4y%KǞ$OLL?f(4|ݕQ :q@9&OY܀޶q#Xf ٧[)XqMgQ| 3^+PC5#/l}䒯|kI^!\ ʡɈ H;P8se-ee+aќ<3F@K{|Vw&깢Cd1=L~G7xF/H #Of>)Ow'P0ͤ~ՉiǍ^m2F¦KMǛpVٜM=&@}X`Q&׊nZP4\Lk%3KvAI+=:9^zДDmk_qVSX4Tk"A1 z%P#EvD0'k)z)wK6vްjs# TVkbL&zc ")|.z'Fk&WZB3PM/B?^_٠z#?,rAޘX ƁZ?F=Q_}U%¶!&HCE/0b8{Ap]TLFQ:L_Y8RO4dYyMR=H2#I:B| . 63_z1 i`$ QoŞ⛒Px>Cy_Ol8Z iV(wRzvǢ o!m U!lS̺LY!.'`>!r̋ƊM#9FjU.pmF5wlxg& S:^SMfUj܀èD[Յy-k>}R&'FIevT蔭x6^N);qtͼ*ǹ#kwƺ,Pu2 ,f3]bƓ_ygjdT6) mOYnCsWow YɆb4@.`[!B[Sأ{}5Mg]VǛr^1F9ŏ9EydB:^H٭JҪAоT87}tÕ(ttqEreM7VH*8Hp/c8S O(5\, [xdϥ ՝lG)cԄ@GAx~}SCb/hXF1Ϗ_"a6N7w z z"ۭ>jڿek%_Gٶxp_<F7+%4"@vEC8^c ׵@  ZcNG?,M6"~ o3ύ?JukBA*)L7 bEz&eӄd+i27ͭe.JJT i'S,b7Zbd]8_bo{~rJhi.)ܼœH'W~θ3;|OqHĢ)F,&)]/۬tJE=]ǰײ,l+ U3 7~,O( (Y"ezTWhѢ?7߆ѪaFH#qtqֲ Z Qb|Py`H&c? 2Sy*1D ty*cvn cݿQL)9za ǥz2`Y-SIUL2ϣo8iأKW5*?Ϫ^덮KE׃ޘ,zQr3V^VUȕho@ 7` YZ