Full Code of moosetechnology/Moose for AI

development 5cb9764eb687 cached
19 files
60.5 KB
35.5k tokens
1 requests
Download .txt
Repository: moosetechnology/Moose
Branch: development
Commit: 5cb9764eb687
Files: 19
Total size: 60.5 KB

Directory structure:
gitextract_8l3g4ytd/

├── .github/
│   └── workflows/
│       ├── test-and-release.yml
│       └── test.yml
├── .gitignore
├── .project
├── .smalltalk.ston
├── .travis/
│   └── github_deploy_key.enc
├── AUTHORS
├── LICENSE
├── README.md
├── abstractionsVisuelles.md
├── documentation/
│   └── Moose-Release.md
├── scenarii.md
├── scripts/
│   └── saveImage.st
└── src/
    ├── .properties
    ├── BaselineOfMoose/
    │   ├── BaselineOfMoose.class.st
    │   └── package.st
    └── Moose-Configuration/
        ├── MooseConfiguration.class.st
        ├── MooseVersion.class.st
        └── package.st

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/workflows/test-and-release.yml
================================================
name: Test and update release

on:
  push:
    branches:
      - development
      - v10
      - v11
      - v12
  schedule:
    - cron:  '0 0 * * *'
  workflow_dispatch:
  release:
    types: [created, edited]

jobs:
  run-tests-and-update-release:
    name: Run tests and update release
    uses: moosetechnology/.github/.github/workflows/test-and-release.yml@main
    with:
      pre-upload-script: "MooseVersion current commitHash: '$GITHUB_SHA'. (Smalltalk tools toolNamed: #mooseWelcome) closePharoWelcomeThenOpen"


================================================
FILE: .github/workflows/test.yml
================================================
name: Pull-request

on:
  pull_request:
    types: [assigned, opened, synchronize, reopened]

jobs:
  run:
    uses: moosetechnology/.github/.github/workflows/run-tests.yml@main
    secrets: inherit
    with:
        create-artifact: true


================================================
FILE: .gitignore
================================================
**/.DS_Store
.DS_Store

================================================
FILE: .project
================================================
{
	'srcDirectory' : 'src',
	'tags' : [ #Moose ]
}

================================================
FILE: .smalltalk.ston
================================================
SmalltalkCISpec {
  #loading : [
    SCIMetacelloLoadSpec {
      #baseline : 'Moose',
      #directory : 'src',
      #registerInIceberg : true     
    }
  ],
  #testing : {
    #include : {
      #packages : [ 'Moose.*', 'Fame.*', 'Famix-.*' ],
      #classes :  [ #FamixRepCPPCleanerTest, #FamixRepTestEntity, #FamixRepTestSourceTextAnchor, #FamixRepTestModel, #FamixRepImportExportTest, #FamixRepSmalltalkCleanerTest, #FamixRepTestClass, #ManifestFamixReplicationTests, #FamixRepEntitiesTest, #FamixReplicaTest, #FamixRepTestFileAnchor, #FamixTHasImmediateSource, #FamixRepDetectorTest, #FamixRepSourceCleanerTest, #FamixReplicatedFragmentTest, #FamixRepTestMethod, #FamixRepFakeCleaner ]
    },
    #exclude : {
      #classes : [ #MiInspectorBrowserTest ]
    }
  }
}


================================================
FILE: AUTHORS
================================================
# Contributors to the Moose project include:
(if your name does not appear or there is a typo in your name, do not hesitate to get in touch so that we can correct this)

Aless Hosry
Anne Etien
Benoît Verhaeghe
Christopher Fuhrman
Clotilde Toullec
Cyril Ferlicot-Delbecque
Gabriel Darbord
Guillaume Larcheveque
Honoré Mahugnon Houekpetodji
Julien Delplanque
Larisa Safina
Milton Mamani Torres
Nicolas Anquetil
Nour Djihan
Patricia Totoum Mandoum
Pavel Krivanek
Santiago Bragagnolo
Sebastian Jordan Montaño
Soufyane Labsari
Stéphane Ducasse
Tudor Girba
Vincent Aranega
Younoussa Sow


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2018 The Moose AUTHORS

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================
FILE: README.md
================================================
[![Development](https://github.com/moosetechnology/Moose/actions/workflows/test-and-release.yml/badge.svg)](https://github.com/moosetechnology/Moose/actions/workflows/test-and-release.yml)
[![Stable](https://github.com/moosetechnology/Moose/actions/workflows/release.yml/badge.svg)](https://github.com/moosetechnology/Moose/actions/workflows/release.yml)

Moose is an extensive platform for software and data analysis.

Moose is an open-source software. It was started at the Software Composition Group of the University of Bern in 1996 and is currently contributed to and used by several partners. It provides a variety of services such as importing and parsing data, modeling, measuring, querying, mining, and building interactive and visual analysis tools.

## Documentation

Please refer to the [moose wiki](https://modularmoose.org/beginners/install-moose/) for the documentation.

## Installation

### Get a built Moose Image from [Pharo launcher](https://github.com/pharo-project/pharo-launcher)

![Download Moose gif](ressources/Moose-launcher.gif)

### Load Moose in a Pharo image

#### Latest version: Moose 12

Execute this in a Pharo 12 or 13 image:

```smalltalk
Metacello new
    baseline: 'Moose';
    repository: 'github://moosetechnology/Moose:development/src';
    onWarningLog;
    load
```

#### Stable version: Moose 11

Execute this in a Pharo 11 or 12 image:
```smalltalk
[ Metacello new
    baseline: 'Moose';
    repository: 'github://moosetechnology/Moose:v11.x.x/src';
    load ]
    on: MCMergeOrLoadWarning
    do: [ :warning | warning load ]
```

#### Old stable version: Moose 10

Execute this in a Pharo 10 image:

```smalltalk
[ Metacello new
    baseline: 'Moose';
    repository: 'github://moosetechnology/Moose:v10.x.x/src';
    load ]
    on: MCMergeOrLoadWarning
    do: [ :warning | warning load ]
```

### Famix generators
- Java [VerveineJ](https://modularmoose.org/developers/parsers/verveinej/) / [JDT2Famix](https://github.com/feenkcom/jdt2famix) 
- [C#](https://github.com/feenkcom/roslyn2famix) 
- [.NET](http://www.sharpmetrics.net/index.php/famix-generator)
- [SAP](https://github.com/RainerWinkler/Moose-FAMIX-SAP-Extractor)
- [Fortran](https://github.com/NicolasAnquetil/VerveineF.git)
- [C/C++](https://modularmoose.org/developers/parsers/verveinec-cpp/)


================================================
FILE: abstractionsVisuelles.md
================================================

- noeuds
- entités
- aretes
- liens directionnels ou non
- labels
- layout
- enfants/parents
- clients/providers
- highlights
- selection
- menus



================================================
FILE: documentation/Moose-Release.md
================================================
# Moose Release

## How we manage Moose versions

We create dedicated branches for each new stable version of Moose (see branches `v8` and `v9`).
These branches will not evolve much. Commits will mostly be bugfixes and back-port of cherry-picked features.
The latest Moose version, on branch `development`is not considered stable.

## [ Optional ] Release stable versions of Moosetechnology projects
It may be necessary for the stable version to point to a specific commit of Moosetechnology repositories (Famix, FamixTagging, MooseIDE, etc). In this case, follow these steps in each repository:
- Create a release for the stable version, following semantic versionning (vX.Y.Z). This can be done using Github interface.
- Move or create generic tags to this release commit:
    - If you released `v2.0.0`, create tags `v2.x.x`and `v2.0.x`.
    - If you released `v2.3.5`, move tags `v2.x.x` and `v2.3.x`.

  This can't be done via Github interface. Use command line or a tool like Gitkraken (free version is ok):
  - Fast-forward the tag to `master`
  - Push the tag

You should always get 3 tags ponting to your release commit.

## Create a branch for the stable version

Create the new branch from development. Please name it following the existing scheme: `v8`, `v9`, `v10`, etc.

If you released stable versions of a Moose repository, update BaselineOfMoose accordingly: point to a specific tag instead of the generic one.

## Update `MooseVersion>>#initialize`

This class is responsible for holding and printing the correct Moose version. It is used in `MooseHelp`, the Moose welcome window.
Update the major number in `#initialize` to the new version number.

## Update CI files

Update the file Moose/.github/workflows/versions.json with the correct:
  - Moose version name
  - Compatible Pharo version(s)
  - Name for the release that will be updated when stable version evolves (should be vN.x.x).

If you want to build a new image after each push on the stable branch, add it to Moose/.github/workflows/continuous.yml in `development` branch:
```yaml
on:
  push:
    branches:
      - development
      - v9
      - # new stable branch vN
```

## Create a branch rule for the new branch

Go to Settings>Branches and add a rule.
Set the name pattern to the new branch name.
- Check 'Require a pull request before merging'
  - Uncheck 'Require approvals'
- Check 'Require status checks to pass before merging' then choose the version(s) of Pharo that should always pass before merging a PR.
- Check 'Include administrators'.

You may also have to edit the mandatory passing pharo versions in `development` rule.

## Update smalltalkCI

SmalltalkCI is a framework for testing Smalltalk projects. It is used on CIs by many users, including moosetechnology.
We provide Moose images so users can test directly on them instead of having to load Moose each time.

Fork the repository: https://github.com/hpi-swa/smalltalkCI and modify these files:
- /pharo/run.sh
- run.sh
- main.yml
- README.md

You can follow this commit: https://github.com/hpi-swa/smalltalkCI/commit/91d6f937173426baf03645e5a79fd488e0836006 for a precise example.

## Update Pharo Launcher sources

The images available on Pharo Launcher are defined in the file `your/path/to/Pharo/sources.list`.
You can also provide your own images by defining a new file `your/path/to/Pharo/mysources.list`
### 1- Test your sources locally by creating `mysources.list`.

Here is an example:
```
[
	PhLTemplateSource {
		#type : #URLGroup,
		#name : 'Moose 9 - stable',
		#templates : [
			PhLTemplateSource {
				#type : #URL,
				#name : 'Moose9',
				#url : 'https://github.com/moosetechnology/Moose/releases/download/v9.x.x/Moose9-stable-Pharo64-10.zip'
			}
		]
	}
]
```
You should see the changes in your pharo launcher. Please test your new sources by loading and launching the new images.

### 2- Update `sources.list`.

Fork Pharo launcher repository : https://github.com/pharo-project/pharo-launcher.
Modify `sources.list` with the sources you created for Moose. Remove any version that is not maintained nor used anymore.

Open a PR to Pharo launcher repository. Ask in this PR for your changes to be uploaded to https://files.pharo.org. This last step is mandatory for your changes to be integrated. If your PR is not noticed or the source file not updated to files.pharo.org, please contact Christophe Demarrey, Markus Denker, Guille Polito or Stéphane Ducasse directly. They will help you.

When your changes are uploaded, each Pharo Launcher will propose the source update (on restart). Please accept it and test your changes by loading Moose images.

## Inform Moose users
Send a mail to moose@inria.fr and give the links to the latest builds of Moose images. You can also do it via the Moose channel of the RMoD Discord.


================================================
FILE: scenarii.md
================================================

# Usage scenarios for Moose

These scenarios can be used as exercises to get familiar with Moose.

Ideally, a scenario:
- describes in a short paragraph the goal to achieve
- gives indication on how to get a result
- provides a model exemple (or explains how to get one)
- gives the expected result (if an exemple model is provided)

## Tested methods

- **Goal**  
Find whether a given method seems (static analysis) to be tested
- **Indications**  
  1. Choose a method (not a test) in the model,
  2. Follow incoming invocations and try to find a test method
- **Example model**  
One can build a pharo model with a package (e.g. `Collections-Atomic`) and a test package (e.g. `Collections-Atomic-Tests`)
- **Expected result**  
Very simple exercise with method  `nextOrNil` that is directly invoked by test methods.
There are two implementations of `nextOrNil`, classes `LIFOQueue` and  `WaitfreeQueue`. They are invoked in 15 tests.
Because they are direct invocations, one can use a "Navigation query" or a visualization (e.g. "Navigation tree")

## Methods with a pragma/annotation

- **Goal**  
 Find all methods of some given package(s) that have a given pragma/annotation
- **Indication** 
  1. Find all `AnnotationType` in the model (for example `FamixStAnnotationType` for a model of Pharo code
  2. Restrict further to get one `AnnotationType` (for example on the name "example")
  3. Get all `AnnotationInstance`s
  4. get the `annotatedEntity`-ies of the instances
- **Example model**  
One can build a pharo model with a package (e.g. `Rubric`) and a pragma (e.g. `example`)
- **Expected result** At the time of this writing, there are 3 methods with the `example` pragma: `RubFloatingEditorBuilder>>exampleCommandLauncher` ; `RubFloatingEditorBuilder>>exampleEditableStringMorph` ; `RubTextAreaExamples>>nicolaiAttributeFix`

## Class instantiation

- **Goal**  
Find all instantiations of a class and its subclasses.
- **Indication** 
  1. Select a class
  2. Select its subclasses
  3. Collect their methods
  4. Select the constructor ones (*i.e.* new MyClass() in Java)
  5. Follow constructors incoming invocation
- **Example model**  
You can easily get a Java model using [VerveineJ](https://modularmoose.org/moose-wiki/Developers/Parsers/VerveineJ).
- **Concrete application**  
Try to determine all the widgets creation of a GUI

## Retrieve the REST services of a Java Spring application

- **Goal**  
Retrieve the rest services of a Java Spring application with the possible methods and parameters.
- **Indication**  
  1. Look for the annotation `@Path` in a Java Project
  2. Retrieve the classes annotated with the path annotation and the parameter of the path.
  3. Collect the methods of the classes
  4. Select the methods with a REST annotation (*e.g.*: `@GET`,  `@POST`)
  5. Determine the path for those methods using again the `@Path` annotation (but on methods this time)
- **Example model**  
You can easily get a Java model using [VerveineJ](https://modularmoose.org/moose-wiki/Developers/Parsers/VerveineJ)


================================================
FILE: scripts/saveImage.st
================================================
SmalltalkImage current backupTo: 'beforeTests'.


================================================
FILE: src/.properties
================================================
{
	#format : #tonel
}

================================================
FILE: src/BaselineOfMoose/BaselineOfMoose.class.st
================================================
"
rce: 22987863
"
Class {
	#name : 'BaselineOfMoose',
	#superclass : 'BaselineOf',
	#category : 'BaselineOfMoose',
	#package : 'BaselineOfMoose'
}

{ #category : 'baselines' }
BaselineOfMoose >> baseline: spec [

	<baseline>
	spec for: #common do: [
			self
				famix: spec;
				famixTagging: spec;
				famixReplication: spec;
				mooseIDE: spec.

			spec package: 'Moose-Configuration' with: [ spec requires: #( 'Famix' 'FamixTagging' 'FamixReplication' 'MooseIDE' ) ].

			self groups: spec.
			spec postLoadDoIt: #installMooseConfigurations ]
]

{ #category : 'dependencies' }
BaselineOfMoose >> famix: spec [

	spec
		baseline: 'Famix'
		with: [
		spec repository: 'github://moosetechnology/Famix:development/src' ]
]

{ #category : 'dependencies' }
BaselineOfMoose >> famixReplication: spec [

	spec
		baseline: 'FamixReplication'
		with: [ 
		spec repository: 'github://moosetechnology/FamixReplication:' ]
]

{ #category : 'dependencies' }
BaselineOfMoose >> famixTagging: spec [

	spec
		baseline: 'FamixTagging'
		with: [
		spec repository: 'github://moosetechnology/FamixTagging:development/src' ]
]

{ #category : 'baselines' }
BaselineOfMoose >> groups: spec [

	spec group: 'Metamodel' with: #( 'Famix' )
]

{ #category : 'actions' }
BaselineOfMoose >> installMooseConfigurations [

	Smalltalk at: #MooseConfiguration ifPresent: [ :mooseConfiguration | mooseConfiguration registerToIceberg ]
]

{ #category : 'dependencies' }
BaselineOfMoose >> mooseIDE: spec [

	spec
		baseline: 'MooseIDE'
		with: [ 
		spec repository: 'github://moosetechnology/MooseIDE:development/src' ]
]

{ #category : 'accessing' }
BaselineOfMoose >> projectClass [
	^ MetacelloCypressBaselineProject
]


================================================
FILE: src/BaselineOfMoose/package.st
================================================
Package { #name : 'BaselineOfMoose' }


================================================
FILE: src/Moose-Configuration/MooseConfiguration.class.st
================================================
Class {
	#name : 'MooseConfiguration',
	#superclass : 'Object',
	#category : 'Moose-Configuration',
	#package : 'Moose-Configuration'
}

{ #category : 'class initialization' }
MooseConfiguration class >> initialize [
	self installLogo.
]

{ #category : 'class initialization' }
MooseConfiguration class >> installLogo [
	| morph |
	morph := ImageMorph withForm: (Form fromBinaryStream: self mooseLogoContents base64Decoded readStream).
	
	PolymorphSystemSettings setDesktopLogoWith: morph.
	morph top: 40; left: 20
]

{ #category : 'accessing' }
MooseConfiguration class >> mooseLogoContents [

^'iVBORw0KGgoAAAANSUhEUgAAAMgAAACaCAYAAADsHgdiAAAABGdBTUEAALGPC/xhBQAAACBj
SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAA
CAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kA
BAAAAAEAAABaAAAAAAAAASwAAAABAAABLAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAA
yKADAAQAAAABAAAAmgAAAABMUbwWAAAACXBIWXMAAC4jAAAuIwF4pT92AAACzGlUWHRYTUw6
Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIg
eDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRl
c2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8v
bnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDov
L25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4z
MDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8
L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjMwMDwv
dGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpP
cmllbnRhdGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjQwMDwvZXhpZjpQ
aXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xv
clNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzA3PC9leGlmOlBpeGVs
WURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94
OnhtcG1ldGE+Cr5PGQMAAEAASURBVHgB7L0HoF1Vmfa/9j7lliQkFAOE3lKpglSRIFVABSXY
PkdnnNE/lhkdlZ7k3BCaZXR09BsZZ0YdR0dip6moBIiIdAJpVGkhlAghyb33tL3/v+dde517
7s1tCSG5mS8Lcu4pu6y91luet6x3ObcltVIaW3cvfeJK1/HohxpdvybNNd5vfTMyRqB5TjoW
f8LNeazDOhbmcGT0csheREMeMWIOSOlrlLpP3zfOjW1d5gpt4129/BX30mMXuq+fVnalNO9K
UW3EdPf/5Y6Eufjcr0e50Xt90RXbz3Xdrz7p4s6prnRYJ0Mjuku3hCHyEnlL6Ok1zvd1m9YT
XK4w3nWtqrp822fcdnvd6eYsOsSYQ9JpC5NQW8LQD7uPGvsUQSZBVVp8pBu1x92u0HKuW7uy
6uLcHi5pO86uNeOaLYbutpiONiYpjt7JYCODosh1vqKBP9Al8Z/crGWfYWIS/+/mfOP4rW82
zQiUGHONf4SW71h2oUui23k/mTmqoS8il29xzNXbrTMzZmyaPm2Eu2whECuDVxfe+wZXaF2I
dt7J1eupDXya1pmInGsd61yl83pg18fcZQc/a5BrttNvW4Qq3whzuXkuIY3RMT/nSsfX3AX3
7ela274N/D3Bdb0iEOXnJk1Tly/CJtETzr1ysCsd+So/esi8eXo97LtuGRqkxASotbQfD4PA
HDUGnv/UxBwp/3UhqQotp/P73a605F2m5sUczcainbD1ZaONgMZWYyzmmLXoA66l7R4XF04w
rSF7UXOjJm1fq6Bd8ns5N/Yt9t2MDDLbh5H7smUwyKIXMy0QnWn2XV+tIGaJorwrr665pL6T
yxV/4krLvuY+fHOrOyeqmzYZuXOwZfZMhrjG9rwFYxjrf3OF9u+7pLadq6wBUjEXNlFNjxa5
xOXs63fat1sIytoCIFamiksPjHdpy4MureO9yuBV0/jbWwSVzUtSr7j2cUUg10Mu5z7sZk25
p2G8CydvbRs+AuYIQWNLQ8xcegx64D9csW0iWqOCjVE05xSIap0mLZ/LM0HRM65SPdBdeeDL
WwLMGvkaJMCrev5kDD2YowleNWZB82XMscZF8fOubZsiE9bN+/2RW3e40sOf22rANwZrw994
9y0CBuaYtXSmi9MF6G4xR7eNeRSt4OKdfi763EZavl5NXL6wqyvmp9uvwTPZ59CR9HHkM0iA
V7kY1dyPZLLRhDnSFBVeHO3i6JuuVv6+G/OGVlftTly1EmGbfNHNXnqju/jB3Qwvy+Mi43Jr
G94IaKxkb8h9e+nSvdzsJTdjD87Brqi5ajl1Y3Zo5f3VaJB/d/nWdpcknon6Xl0wSx5IeSK3
kDayiUQTI3vj4vt3gcgfAFptz+B771VjgAWZLMKOCi/o+Gedqx/o6tFfMRFfRovEMEq3ax3D
JFZfcGntk27OtHl2uiZdOHprG3gEzH2LEa42czFjGv8z4zwOe6+LAGAbNl+FOfmUy639pXPb
PMRn5khDyrwJaklzhGYwK8c38XJXefVAd8URK0c6zBrZGkTuQ7VCy0lIJga+D7yS+zCXj12U
u8nF+VWmwgttuziX/7K7dOpXXZI72rnkIeyRVte9uuySynhckNe40iPfcIrybjXgA+n295eA
H4a4PFTn3z0WQ/w/0RrfdfXKOAxxbLzt2lya3MPYH+EunXY1zPEvNkeyD3PFF+CMm5k3MUeP
zSdmEUTOt0xwhdFvtZuOcJg1shnETc8GF3hlhl+PMMpmNHHFUfBD8WFT7+3bxmYsRhGG+eKT
3KUT/+TWVI5Eg3zDtY4mUsX5YpR88eNu1O53MumHG2wolbZG4JtZxLIRkP4+Iv4W1z76Loj9
w2QvlA0iFdqLrtr1Zbfy8WNcaeL9rmMpwdv8u+33UdtKQ1zN8U/ichf07Y2LhQhkL0YxHkna
PK/Mm28/kt6vQ3EjpnMBXs19dDfsiIWo8XFILA12c58TJgEmj/5EOsPZSLW7sT92tKitS+50
y9e82V19WNWeadbis5jc/ws82JG8oG40SavBtVx0oZs9+So7phlOjJiB2MQdCXlUum3HstmY
fSUTTrWyDHHZGs+gyT8KTL3ReiZNPGr3O5iD/fEwivCfcq8uP9ptM+E3vJ/KfEjI9QjiALOc
e8HFtQNc6SC0TeaptAuOrJeejo+sfjE5Gbwql98GMY8zeNWLN+iwrJFaxTEJ01w1WQn2nckk
OqSbGOBwt9Poj9tjlZ5odXOm/ozvDwWGXefat8WAZ+LqBK/ybVcSWPyNEyMKTvy/asD3MsQf
2ceVlt4KZCqhfauMcWowtVae59a8dKgxh8ZUbfTu/0AMZH/moNu0eRyf5+KxwNn6vjY33j60
Q+1F2kMwS8mmLn+ifRc8lT1HjZh3I5dBArzKxe9A0jNgUsu9OMSnkcggzOVHubE7vMnNmfJv
TOgd+OVbUfeSWzPNwC/t1e1Ki4o+BWXS2115zedcoVjjuJzrfLnL5bBxavV73ayH3mdMYtFh
PF3/rzQJBT2zbLKZi/7G1bEt4vyxNjbFUQUgaZfrXvsJV5p8jvvSMS/YWPox3ZdJucB1r0pc
yyiETud8N3vSj9y4cYdxTtFrfHOCNDtCNIsedkX5d/ghDlB65A34yGQQSTMF9ORSTN2xBPwg
9ljKGQ8VA67Et3zhIf49Zpg4R55PUp/khze5kInhbVoxozHXcpl9P3WqIuqxm3FNDgn4ZTxi
R3LOQrRJG3ZJBWm3A5LwB8RMvuU+fvNor00wUv93tx5D/ILbtkVr/BeG+L+jDca68tqqjU29
ehfjdDhOj296Vy/2msZSLXFXIlzGMNZo4yoR9PR8+77SPRkoy5zhsZJ9mG9ZxF+mDjdxRKBQ
GSia0yQ5wV10984215rzEdhGJoMEeFV1p2JjbGN6I4qfA9M+gLbI2eBH+XthgPu9vaGRTTyD
lKbM58O/uraxRbRIxeVyHyKodbxJx6lcad45YpQ8npf7XJS8Cdj1Ndcyusi1vQFfaPmoGz/h
Tjdz4VFMXA38LSIameOkx97QJkEhkKpn1Pi0jr8LuPl/XBf2WYxcKLYVYJSrXMcUeakW2ZiZ
S/y42MZy1pK3M/bvxp4ru9Zxecbvn11p2p3WnVxustkthTa0e+Ee/i3EswXD5CVw7ufYF02I
FVp2wFV8kp0T5tw+jJyXkTnxs6d7CaXgYA0bu9iugb4VjPsXYw5NYLX8BCp9mUmmOsfkCpN7
hrXeAeE/j9ZBzaPNY/cFN2MGMQ9zOUo71bw0nFYBNvwDyuYdHLvCtW7TYlFhl04h6e52vFwX
GfSQNhMM+d/SJCAkKARaSw/P4dl/D8HuQ8InhvjYVj4/zW8nu9kTLzA4JGbSmMmYlp32mWva
+P5KtIbgbYurrn3KrVp5eTY8EWO3n9kf0iLV7sUc93Sm6eVxfNEVCgtsTi1eksuChiMTZo08
BpHEFh6+ZPF+GHPAqy6jcDxZtxDk2xl1L1Wtf0+7JF1i7zVRSX0/iLg1I/wVsMJsJ+2vIGG+
7TA3pePvOQmJSXBQzaShaYe8mz3lWte1EgO+8nNvjGK814kSF9ouA3b8ztK4/zcY8HJnh4h4
aclEsgsWoKFnIkwwxKveEK9XfuhWr3kjzHGTFwqMkWcm3L5ktqmNPfCzCCs8VBUMc4RXGl/k
vnL0X0zbnrdgNJpnojGPmRrRUsZyhXjRtEYUb+8qlVthLOfKzG1SP95nOCCERiDMGnkMElRt
7E5DzbcbA9S6X2J0F6A1/MAnCLMoehG1/bhJKjFNUt/VufG7GuGbnTHlW67WLUmFwc7ahDh3
sSs9sKtJQhGKNTEMklES9QtvXu5Kk84Ce38a6FDBHsm7zr9gwBfeyhqHezFe/0/DgBeRbWnN
XNilxMantPhvUQZAn/zR9owtGOKF4lo08sdgjPe7Lx/2kjGHhIKEippgpo0VjOXSCzDgvWFe
K//GzZn833a8BFv7DrIbdzRmqJY5NHqUMVxhnwm6M1+TcALcCnOszmDYtvx+st0jzL19GBkv
I49BAryK8V7JhdsySqIHCJDDqmOhlHztddyOxdYXXaUbmIV7US1XQJS17GvvT5zhn6teuwD3
sL5ieW4LkfiChwFTZ/c2CD2T+GDhnKn/zDKfI9FW93kDnqhxrbotjPZfwJF/d5+6YxtPZDCV
iUW74wh+ybSkacBF25FH9UOXb/83xnB0kyF+h6vFBE2nXN0wxI05mh5r0bwwZldgmBOdRUfX
qqjuujfMd54efp9IkLAghYEWedWtXPEEwmylaRQJsjTZBdXxImlAC3AI4FzhErEbsTBrZDGI
JLu5WJfJnjgKeFQ3VVxP57mWwnbg14Jp7Vqt7LrrK93lB7yAEf5UA9/W0TBqz81HM9yMIb7/
HzAIvwlsKniDPf9B1kqfaATeVwuYnSFbA8K/dNIDbv6PDuf+X4FBi2ByDHiM0ULL37jtt8WA
X3Ssx+T0ZiQb8GaIZ1pSmQVRnjXibe9lLLoRKN4Qr3ZegSF+lJs7cYk9u6XfoGmam8ZSMGvW
IiLmxXdZNkI7hnkcfRXD/H4b6+dsZsQUE20+ZCfm8o+7bx5PhrV7ySCr2YO50cCzMXgRf2z2
oxJKnXuLm/v4HozpiINZI4tBHB4StSQ5HQ8VLhBcS+XOVS7fdQMQah/zrsjbFMUrXa3rLxxJ
qDB+xCZbrt04nmbnT50OLLjFT3KlMgeX4gqOk1+en+Mr3fSSX+zTnwaQNhFhzS8BvSb9I/c9
nes+RwAyGPCTIIBbLd1bNzPGgqlGWusxxGM3e9llEOtvgDZ7GXPIEI/ck4zHCWiNi6zrDUO8
74NIAwG1PnotcJexE0ySYV7p/LN75TmvkaX1F83zUCxXmArxc0yRC6WP2NXKXS8Bp141uCzG
dNHeaKxfYPusNbbKt4xlPt9mx44wmDWyGKQBr0iHroKcpIJj93srFZMwuWIOpUvn8ivc2meA
XLR6ealNhvdkeYglb1UJKSgiufyA5zEiZ/kIO3Cs0Haoe8t7/sHOLd3cvy1hRmmAJpNucGtX
vxE48WMz4JXeXeuu0bc5GPDzgV17mzaRRhoJRqa0cCD2Sx6cQpbA7dhyF+HsqBqcaYc5tBxg
1ctvxIPH2Iq5edZgiNvANL2EKPcukzDM2yf3GObuIvfV419p2B7+fCWO7psxEfZGdbFdqfz8
KwgxvIoMt2IgmssrppDJ67ARSRXS3KUj05s1chgkwKuZCw+wIF6tTKSc7tXTn/vpqmP8SUto
kN1z1MJClNHimElAeGmQ5T3RElAzLEXgaAMR7ZxJRNi7bjODvVMGu7vYXXwvKh3JqPv224IB
f3PeffHwFSTlzQCzfxKvj1IqMOCJwMeF45htIvBLPmSwTfCwL3Tr99qv05fBEBexdiz5GILk
bmDVEQ1DPN/yKi7Zj6AZP2heJzueMQqGeN9umWGuMVo4GU2KYa6I+ehWbL9fk7XwQ4OXGsMg
GD73hx1gjn3M7lP2Qz631C55d7HMXKLFJY+Yq4S5VKsnvzTtX+ni4PTNROj3HWkwawDisO5v
4pcMXrnC6eB+jDy4o1Z+AYP5JutI3LKjDXyMwKtWcRuacuZP68NIxrqHT9F486LohFKHNxrP
meefsU6UNyUV2wz21m3xUl2mw1xfg92+bHoxJsKDI6k8Z+o3cFEqAn+3GfDl1cpTGosU/A7G
73fdp28et3kMeAkDNIH19e4d0GzXuFzbv9K3dldZW7PU9HptgSuXj8Bm+I8BDfGmx7a3Cqyq
pcUrcHIAsZBQCfZfLTrPvg8vHdlx48bvjQDbFoaRZofxCg/bIfPFRPXnYFiuJcYp7Gzfp9Ub
YTZygji/0DoayXWqfT+CYNbIYZBSCA5Gb0faKzionJ3fucunPuc++i0xzE4QJkOpOUuetIG0
l+5HUeUe3yr/x7EEVC0QvqSpGexT/sjsZAY7Ke9R7gOWEi+jdCipLzvDrgMRXn7AQtfxP0fg
Ev0SmqRgdlH3akG3v3LjJtzlSg9ON80l/t0UBrwYVxpA2nLWInD86Huw32aYraH0jkJbHnth
ruuYfKy74sClxkj9GeI2aE0vGjMdpyzofOFM18WYtWGYu/Sr7vLJCz1DMi7W5mdCKNkPuEul
Ez6m6YvulWceb2iXWvVZjwjgm5iMajHF3IOecLl4vs21PJZOq0ZpAWrbh837MjIYxAhJk7zo
YIJ/b0JzKBERPkh/YcMzbhqp6VQrEYOo2apB/oqwS6UXkW6PG6EKftWqPuVkcSbVdHwY8HJX
B0b/c3hfWkySRTER9muKRgiasKFaMOCd7JvJn+dmpwLxniECr+TIbq65L5x9s6WJe6L1dtBQ
193Q34MhLqdD6WHyooo4M5LdG4a4ixiXeDrMMROKjRq2yZD3k0ZC6iuVPY6vMHd7XoZ51+PU
tbrcTi+h2/u2WhWdwzBKU+RaH8FGWeU6suBiHD1pv8lNnyY7EY1vtdPrtV/Y8fJmJckx5N9N
4jhoYSDo2/emr+/nkcEgLpNALjrDcoAiKL1eeQ5D/ff2+PEorSZ8gxG1bA2Hka7223vo/zzB
KwWjUOsMvrwoasGrovc24EjEK95IcDGa2YiwF9sOdtMOJsJOG8hgtx+bXswYzSDN7Cm/huEw
4MvXWIqGotFKD8+3lYA5t7nSo/uaZN/YBryIx+wDtMacRdPc9PfeDkQ53+IaivvIS1Urf891
ExGftd8tJu31CNb3pmcZ6G0pI+rRu38eDTTJDHOFmSJ3oRV9k3bpZbdM95ok30oQkPnRXCTl
R7k8anRxRmO5FTY/EnK1ys4utwu2Iq2Od62KR1KMVWxrcxW8htYC5PafNtfryGAQD6/oC8FB
wSuLQ+V+bQStkWkftSPYFrevsC3JWalbbgM2oc1L/XptsWkQuSDjeF/Lu+pLDMGWmD3537kH
eV1E2DtXccGECPt9ew5usPedngzSiFDEdKVJ73G1tee6YrET71bBjOK48GbMnXthlL9pGPBG
WH2vtZ6fdQ3z0AFvSss+7uo5DPHcm+yeraNJTW9Z5WqdH6JPH3JXHbbK4KU0Xy+CHuSegfEu
eXgK55xHblrdDPN6+Ua05jVeC6FdepqcIfQFTZzWfaaDNHm97j1Y4bg4/yzBVxn0XDbaxo3e
drz9dNkkQa/fwxzYnHgutbxBLWh9+7D5XjY/gwR4NXPZoWiCQ4mMoxFEtzWKAGQtSZE4eUkt
vkhXu1z3c/6XqV5yRdEyi7BLetaqe7tpl2zvf0fSN7cQDU6S84BrnJvWIKhxGPoeNoQ4TPM5
g703pkOaG9SbhlFcP4J+/8mM4vIa5TeNwR74dwz4/3aWTg5hBbfqYNft9zdpLTEH11AJ1tKS
nxK4/AaaVvW/giE+H+Z4kytN/Z71Sd4lHb8+LYxRPr0CyIZQoiXkjNQrPmI+bQaT09Q0V2rV
/XdGe+yBAJMQw/Zp9x4sl81Rtfoc32P7MSW5PDZl3hvqOjep/tI8XDb37ggCsdO81t/8MGvz
M0iAV3FyBuo8RgMAr6rPuNWvCBr4/iWo5Ej8gWTK5Z8HYuGrteYZRPk+NbwmmqwcXhRX3Nd+
LfWxK8zQhsgunfYnfvkXoAgRdiLkUf59uEVPMWIaymDPbtz4I2luRm+q65IWTlS6suYLBhXl
cZNtUmh7P+nkd7tLFp7oDXg0kBnXjasM/qZhiEPslzx4BhpWqf5noQGJiBdjmBxDfPUcbI3j
3dxDHjEmVJ8ELdeniQE1RrOWvBuY9M4sYi4nwD+5Sw98MNNGfszDdYMHq5gngp7HE0VTEmP3
2seyQ/zx5adfAgW8aIZ6TAG5en1C9ru0/k1AU/LtsO61FDrKneZ/2/wwa/MziCScCCDC/qgI
XjHGUfRr89Nv96jCrkiYdA+DV1LdcZ6kwmnALKSjVkyrre5+jHd+8OVFSeJ97PvAfP6Dfw2q
u/zCXKDWciYNg12GY3QV/Ri+wd58Tb1vGPD0pGMqLmV3Es/xlNkDZsDX94aob3IdpJfzFA2v
WN/r9P0cDHH1rbQMz1nbtWipXY2xZWu49FHuc6zrmMZoMCYaS4NUfS801OdM23zuAQzz6HIL
1OYKpLLjJex88Qo7O3gae1/K01C9ti+MypOJnyi91PLkU/6cbI6+dAqJn3mt6dHvdFs5WbRP
PdLCfCpG8lsLDCtAHHKz+r+fnbapXvzDbaq79b1P0BDTDnkTw3gwatzHM4L36i8kJaoVKBMj
/7m8I0lN8IrlocQ3NNBqXz3kVVyRGOr8LqWRVH3Kif3Y56VhsL8FhiLDVwyphMdC20Fu2oGf
tqNDSnyfU4f8aHaPCE1QaOJvqf2EAU/6uAi5XsOAJ5qdb5kJPFrgLsFbI0IeyIBvNsRnLjmA
vmGIt32WuAZ1qGBopb7UKv9Jmj4R8UkLTGtoPPraXkN2OjugFAzz4nnAo4lcm9wz+C9JLyLT
ebU9U792zPxwB8Zcc4RMy+UfdaW3dxrDaj78PEuTLLc50lxG8e7hRPsbVX9hzCMPZpIc7mY+
dBAHpQ0U0evgTfdh8zJIQ8LX3sFkAK9ySP/aE+7lVbfYEMyeKpeVtAbrQMC1lqZQeda+m/YG
Rh5G8ZCIJLfkYeCGmAOE1TrRjgnr2v2HnlezHYBvpYnfwTCkSiDrqbuIErvoIqLGexvhbrCb
UZOKVhSTqDBaifTxWuffkZi31gKgPgJ/lMsRgS8t+9t+DXhjMKCbGb/LPgmdUH8qPtRHxMcU
udYr9PsDXPtvGsTrtcb6QaowIiJgnX/RAyrVej5ZAnXXNqYFqHsdqezzjEgHsmWCRs63sH4n
eLCqy+zSPuBHn+Z7OqsR4LU5ZC7zmQ2y4j4+0MqV35nnUlxSxNERxWfY9+Fc/2GTv25eBtGg
f+oG9LIDXq2FsEdJsvzKfZ39I0QkkvaCFvXaBJOaYgmXf7LXKC2eb99iEC8By8pIh0nwphgk
USALid5fC8ZovXY+zCfNpdKlY+mEN9hDoLG/c4fznTEJRqYZ8FO/Tb8O5z5/8AY8671rtTa0
yb+52Yt/RPxnO2Oqj95dME2gcy96cEcWNP0C7fl1zsuhfTJDvPo7V1tzGLbODxraZyDiHU4/
m48ptlwO82k+NI7djPsFzT+v+56x1RwpXlKvkoMlecZwR/Gi3sdOzz7W2YaNOZI7Pkl3cYrf
BLtQ3kAXAbNY3iBPZkzAWBfbzDBr8zFIgFfj9jgcPXAAE4JqRZik5Oc0t333HYtk8UFC/R4X
BbGIc0z30jLU7i20sHKN33WMvCkT983SGZov1vQ+TMyl+9/FRb9O6kjeUtrj/HtIiT/NJPv6
GuxNl7e3wYAX4c89gHTyyW/G8L0SbYk7ljKpZsC3nwPT3+MuWXSq1fCSJL9k8Zm4jO+FOd5h
S4DzMsTRsOU1s4BTJ7q5hz3mdM0NMcTX6SOCSJpq1qIZCAhVfCmTlIkhkWKYZ2vR9Xt/LaTz
tO61O0JpF6ARYy9YjNPE2vTsvPn+o1y9OkY2X1Ld0R1wKsGVplbLPJeCWak7lHk4hGuhkTNn
TdOhm+rt5mOQoDpzbMslrKtiDPXaYyzmWOAfPhvclnY8WKwhkIeqjh89TjyDTGMI1aYt9n/T
+iMwBqKHlsObUhztYVbwstgPfV4CPCi/LINd66aBFTCYi640zSYClBR7rU3F62Q8y4i+dNqF
SM+3csk/m23SSbXCNNnTFVuIMyyBAUhNb2n9GQQ3wRvi1PBKU3KakmPJBbvUriGCCQXxXlPf
ZC+hrZTgGcXNhvnDbm3Fa9JSPxHzcM9FU/3YtET7sSIxaJ414CX6SwtOlAB1c1R/T7DFVP8v
SbZ324/xsZDwe57M7QQIrUCxUmQS0yJcKINodtFN+7KZGCSbmA//J5wRnU4E2AcH4+gGJmyN
NwgbAzEBwqXqCJ+Tercr11bYL2HwS7M9g6x6+WmCTM+YF0W2SK2yn7/CIIPbMNhVRDm6xAx2
FUArjDrAbb/PZ+z8DTXY/c17XqWx9AzySs2ZfLNb1X0IffyBax8rrJ8wBtS0bSExo3ARUpw1
8RCSGeJd/+GitYcAqW63c2WIDyTRe+42vHelzDBv3+F8cD8QiUidhFWUXOS+dNDagQ3z7PLe
DoQfulkjY8Y5yrDwhLv2DlzxNM8+PYxSrxNNrxLNZcrkIZNtGZpB0Wms8SFAbI6TTg+zVGxj
Y0HIcK/1+Lt5GGRGlmG711FH0VcW2GADmO3AIho1g02BsFlmK8+Ij4G84ORPVwuDLxUsyfyV
o7s45jE71rMMXpVhNA2+GamTvodL8/feYH9FOACD3dKv+R1bYqM0wQUglIjhqwcT5Z74AeIX
fwuO5/o8kHbI0j9Ig+8S3N7vBZZ9xLlDu70tw7lGXRuhM/bMXE/LC9L08xYxbyWVvV6+liIW
P/HuYsZmsGYL0zggX5xq0FaCKY4fdvd8rOphEc+rFuZq1SqM9OhlNIS0fIwm8QwSsobt4OQX
aFQJOGBWeoibXDrMvt5MMGsjTbw9wvBfguRJk3ea50nwyqVLXbz8D3aReecwQtP99erVXRlU
Bp5DIvJ55E+3lg2+3of06GoFTxbMlCCkckUPsQKM8icN/ppUzkPCKeCIwa6SKMAOtddqsPe6
K8xsjgUxy9IJPNPJRkGEzviLn5p/tjGpSffT3eWPEDWHWSz5knM3VgtOilyLIuZQNq1OIKqG
00Ktb8Tcvuzz4iEozBxnKSZ0v9K9zB8VBJw+Zd1e++Bq5pGavJIHzGdS9QyiZzsns3NeIQ0o
qZHYaDArJndOxjqt+Xr+m03xujkYxONeeT4SKpfIe2W5V4ngFSVCb1YwA8kzP3v+mP214RcN
aJoKXuH+HNBo894T86awRFf3EIwayJOV3cEIUNDn0gPv4Vgi7KR1aw16XJhBuvfpG8Vg172a
I+Ja353ivi2OYv0jHRbmlitYZT5VEjXBX90y+oOuzNqTWQvfZppH2tKuETq+gX81xoJ8Mx96
LwLl9EbEPE2+7J0J/D4kjMuYtbRoHNJ+HwQLQ8c8xYUl/fTKa/mr0SxxbjnQikOkXKI9/LHz
9ce77L96yCuMi4dZog2Hu1fLHTYTzNr0DBI2kW+dcAxqVrWvgFdlDdC1evHwir9B8heKeLDQ
9AoC1sjwtdZXmmQGfS6nlBNYiImqJxNc26572uHB2+JP7v9VW0arlWvsnNT5FPfzBntMhF31
tkxavgYJLq+Tec4UEV/6FbxSP8ebsxPQRl4jilHUliHBj6Pzb+X7JywNpvNlpdDvzuKnG0ih
v7yRhGn5XP0/xtDf8gxmmC8dA3PIOUEgFgO72rXMRRRwUBuOa7VnTPeF0HeAqD0syseP+j5k
c+I/EMB0ntZqBHqFBhTszBEAtpYdG7ZCiIDalvWLZ9O5A92Oxx1uhw0sGP1lXofXzcAgM/xj
5ClcLEmSL+DdSRa7lU/80X4QETHiJvnN8+OaisWlf/YnT/d/wmsw2OU9Seph8VQLrtJ97JBF
s4eGJsFgt80lo4sxWplwGezt01w0ITPYM6M23Hc4f0NEXF6n0tIDnTtYEfFPY5TjvYKoWgnI
Vbv/jTcHmwYrTb3Dda48iHt/DyOddTAIh2ondYbbLnTTLr2tEYEPXrHh9KH5mLDGvJ1tHwqt
SH4kSl6GOZ9Lh3UOaZg3rnWcp52ItJ5Ci1KF+IVKM6tefcwOKZmKaBztYSUf07qvsqjn0iI4
zXXQVvNmINnUlgOz6o8jpHLEilSXwGf4bgaYtYkZBOklSVxahNs2epsPDpor/DrWmJczeMUA
QThqe+89moFiqS08I62Qyy+376eGA+yTBtq/WY73JFf4s0koMV+lPNl+mDZ/aAbRgQ2DffL3
IVoFrRRhJz6Dwa5KjzKw10eKNUfEZy37BAxxF30lIs569tZReHEKr4DDMcQnfdSpWrqMd/2z
1A7S1SvdHwZyrQaGsSkpRezi/FFsnHmfReDNKyY7Bjg03Ka+2zM+eCDj+TnbW14MqoqSsyf9
zJ5t2FBmur+rLZKCjKThcy2PuTHX4YlSE7Ttp+Uoa6pfbE6rE+i/dw8bDOYc82apVBAeTQWO
VeQ6wtOpLb2H3bd+7ruBX21aBgneKxe9BSLem4hqHUIU8WfBwUzVhqEttI/nt+0N2yYsRooK
HmIt7sMg4ihNvmFcvCjypigYlSuwpoEWgonrM0iWEo9rTTsk5dkcNB8MdiTekE0wJgXH4wUq
LWONOKnpLa3/Ak7X8teaG8X2ZfX6TXiMKPHJdgEicnniJDz0T+9FKHOmfBdN8ibG4NZGBL5e
bfUReArAle4blzG1mGQY/QodL16J5pZrkP0bMcxd5cLwy3r89dI+10pBB0FgG/NH8fgl1ve+
FwpzEJGwqHQg2St1hF91W780Icx5A2bVf2nH1QWz0mluz52OtEuuj4Dq24cN+LyJGSSDV4k7
06S84FUUPeCe/8Od/uEzT0YI7hVzO5Gz42MgNRYtpyyXVWtAKvuUvWR2iZUBgl5kNMa5/fjR
Z842HzrYe6l7Eayqv7v0a9gHGOysx47zZ6P53mEELOIdqDUMcbTNJUTknbuX5aekplMYWhFx
wZFKJwmLE0+2NdmBkcyZkF1U703TwmRzD1rGscehbS8HEhWQ1CEC/15WkjWl0ENhgxGPaTOe
beai90PMbwPiqVA1Hqj6F11Ja9V55gB1Bnq2nu89LFKqSBQB0/Aayq6oVxbbIc3LncM5wSsW
VZcD6yR4YCoWwRVYDKcW5txDbIa+8w8w0COMO9X8TclsFpi1CRkkk5DaEDJyp1hwUCrUJdeZ
5NcEhRb84kmsdSCMPN2M8Z+/QqBJrT9ZGXzyUW6Jl05ItVo3sOh2FkSpcf/htoaR2j2XJbVP
QpQK5nF2/goIaWCDXcSuCRbhlB6+iirm1yNddzOPmDYS1dJgac/S5LlGzAZ5YKSBmiBdsDU6
plzMM5zAODxpEXhVYldF9nzLTWioDhsUY276sE7j2U2bUTY1l5trsCVf1DbZS9yrq660wxvP
vM7J634h4lY75swdcZwICTCN0iLZIqnm5c7+yB6h1t21gn6vhbHoshZOuV3skOB21gdjVuwh
l95gHk7zZkWnuc/c3uZh1nrMZbj/Bv7ddAwSdjNtG30cEmx3IFCdiUpZk+y9VyHdQA8SEhDr
YFT5zCWdYgog3/8KaQxq/dB6A3bhRdH+3VLhLof63n5fO6XU30n2Sz8vGbYv4XKMKZBmBjuL
gAptsO4un82u16NFZIiLkC2PimJt0993G5riPDxDPanp1fJ3XPQ8EfFJCzz80j0yjdlPDxpf
ma3BJyMaCr11Vw9BUvsU+rAGvjCKFJWlt7CYah/rgzScYFpopeBcGHcxz7AXxKyNTPWrqrJ3
eUhEf4bbgrRvGbUvwoN4EafWWHUYlx+xS4T0n+brhd6sfoEtLFj0pmCh7EStT1cLsTG9D3DM
4c1StRN5Ol08yY0dd4x+dg2obp9e15dNxyA9j/FOGxwtbIrje91tPyD2QOuPWNL6nqaKjUFy
z7r5YHo/8etOZimzS8qvPAZzrDQJVeAeLvEMErRSTz8Gf2cSV0YtWbO1Mn55DPZOIuxJHYM9
W8thHqqb0RbgbhFyx7K/Y/Lv5fmOdGsxxGVc5wurCb59EJj010g/n0YjRjKqGrwLPb+KmXh2
MYm8bKrAXiv/He7ZpjXwbJkW5+7H5vkrg2eCaWbw6hm430VUjEmTf+wxzKs/gVl/7mbATIJz
69Xme7qp1SYi7LRMQWevcCteeNIuE9J/el0zY0A5Y7Rwyp/DEfXdeh2mDxYo5u/Lj9/O62Lz
dKJsAAG+LNCMDKrr2Ne5bSIGQZppEi5YSFExNmYpowgklaP0Wmc1cJn4Xi0z1gttPotXg5lY
sbgef3qv4/Uhm4ArjkBCFdmazdugQCNvqPeHi9e5xkBf1C/g/lU6gcFOAbV8erk/cjbMAeHq
uZS2nmu5GkmqurVVM8ST+nxgHlmp+33fiFXMreM3tBmToK2M8Cd929W7WQOf3OGL2JFCn9Rw
JhS/a0XslIBohL/Yj20ReJgr4gxAdNeFWfDMqYWkzw3pU1qfanwuD1a+5WErVB28Uf1dL9hI
CQmn0h5ypEQFzyABIvvzEAjQhJgpJYAsWhHNyPMpD6hn6KCT+rvTRvtu0zBIgFdF9trIF3bl
oQkOUh4nhUGsZQwRHstrEwxIxzoQ6ElR9Fr1Gfs5wK9wbPNfSUPNWFLLygBxbq7oGQTqbj50
WO8N0zNRqmCeun+GEHPeYKfCuQqqlaKKpam3ttxDvOQcS19XGruM6cqauWgNv0Z8Y6Wmq9PN
KfSXHrzIuR8eA0OyFJdFRiI6ZQcX2//KjXrDXWxKejx9r9DXD8I4p5ph3o5h7tIvoBkfzqDe
+o9LCOLmWyaZbab0nnoGr8Jc9zvAQfNQdMOEHvMTFk7N6Ds/GU3Iw2meTiB5jphLwp6VaiHg
3O99Nt6Xm4ZBQn9jVKTAUR5PjktZUTcVwpNUbcbiGXb+zO0t5FT5hVI6KV94KlxmwL+E9Ow3
lZxhcaJ5VxTIOlSpCs33GPAK6/4QjNdo1aXYFFQCJAtVbkpIFUndgSF+IwzfUzVdaewR6ewd
U2fas8k22Sip6X26FlLoSyXWwE/5PDj9VCTJs5YdLI9Zmk6CYX5HAYbZjPUlRmSFFhnmCspe
ZVcrDZLK3ud2PR+ZH8E3GcxJ1a8idJBR4mBW2mACzE23QxB4f6avnIMGSeo7Z5UzRRk9WiHM
V27Rn5j+Bxl3IDkCIMp5b9YmglmbgEEYUKlElapJ05NwV6YYigxMJO2RNBIN/dBJ/vs2lmJx
tfp4iI+jhEpYS6DWMODsU++X4D2JqQkbFk/Vqnu5E470rkRvv/Q+Z8hPEIMZyKxyFKFJWqqC
iksPRFPMgmm0wyup6SrW1v0Dqnkc7GaTzi6PlqY7uC2HvM8GHGDXZsDUvzkUsat2kUJf/kmj
Cr12eCq2lhh3rTEXnuF/oJWgi7mqM1i6PrduzM+2u4E4WSTFZW1LBGoCqA02PyHAG+fYTUTM
YXO7o9v+4G18F8LF/Sc/7udUXJRc72EWyNC5U239isGsTJhmh78ef15/BgkqtzAKeEVelTJl
hdHT6Dr/QLf0VvHBQxK37owabud4JgC/ed2KNQyeZRq8J2kNBoE6NN7ysrQX97V7hWtv6EjK
YE/rd8HgLOaBA7teJfmOtO1cgSzY7o/gvv3ABhVr29D+2Hli4MyAtyJ2k88GSlGFvgWvUo6Y
CX1MkTDFdlRqcgvM65cUbOg9QzHwiBhTXpKOVquuJX/tEXt/TUgXsU+9XxqeRlsXojoCEojj
XH60Uk70vk/LYFZU/AVZBSQ8Cmbl93Tt2x9nBwba6nPWxvz4+jNIiIzmBK8YAcGrOL7TdnGS
QSdM3dyCPzxNJ5halb88Tda4Ov5zNeRh8+G93gfvSVftz3y/wnCuvCyJ288fl2HgXicN8UH2
gwhQW6+VlnwfxjgEmKKZjZgs1Al7JWo76dLk4VdNH+KWG/SzMQkeK9lhqkLvkmPo26uMAYmQ
9FWaLmXXrtLSb7vS3e2m1fVs69umzfAwqFbbzxwhsiXyeXa5fXa5XSqk/fR33RDgrWGkJyzO
0rE5Ivq5rNp7XwFWyjTc/L+7m/jPfdiTvjC2S8/s7/Kvx3evM4MwMYIBpUU7EUw6kaAb8KpV
mt5LsZA41/xkwR9eJ9NVg+8X1zzv5D+35uen+ZSe9wyoiEGr4eRVERwSP6Up3pb1bPK46FqW
ZPjgdLf9OLYva/+Awb1cAdcmmLheS+gfdYPdHnZ14e++DL+et31Nhwu3h7yzJNoLO2wbGLpu
blL1uV5RYbaPuGiM3wfeng2vWPAuDefmDZjEbl7SABZPYZcvy6VjzGzAB7hQmLrKqhcYN1zx
HK7MAJd4DbJuMiLaEfg4f77c+9d5mGXerFPMc7gJYNbryyBBBSbRSaj8NzB2CdK3G9viBj+E
feCVfTnd/6Q0b2FmMUnMQiltmONtiIE1iM4MadVJtnhKEfBCy0S7aPC++DsM/GrpHxCbjNGO
pRjbhZvhs/0sXaRt2zz9WMbJirBr5Z8WDH3NpLKkuDTLZmvcW31QtoL2D7R0Dhg5TR7n32O2
zkWJkinO3bi4gCJ2nzeGFmPpmYfTvItVWsPvJCV3er17qT91KA2daYQ7f6sicqwuFPnxL6nt
4s+f7v/0es1gVlK/DmguWAbMwhOaj463wwKN9Tpn4314fRkkwCvtWCuDrNCKinR3ZNUykFx9
4JWeqyGh8riDMeTkuZDfXJIp4N/Bnj94UeopeUHQqhikVp5kXhcR/GAELAa0GENEUG7JngTd
fs+OsKwPKWMDsW5c6SLVrp+6FbcdwARrr3BS0WF4redOR51v3SqFqPVgnXydfgsauW3UbDTF
rhjmvvhbnP+E63yGFPru6y1mohq49XJCmjvu3qW/chcv2wUvn18KPNj4hN/EgLYlt5wnDGmO
9J7hNmkrxb5YPmrCD/XLZfe008PcN19LzKv7Lu24F2jO3ifygDKv+aL3Zs1rPnjjv3/9GETE
JnilwXfueNY0MCEkndXrWexjAGkT/OG5PLBM48h41Kl0oRbgl30Y4CV4UYpALHlX5GVRmcux
eF3UBtI/YgwxkCTkrKVAqfQBmPN4SzNXjCFXqMAc5xJ9frfljs2e+BM2nryeVX+KsHMTd567
cNFUI7T1gSzWqY3wYqkuaI+ZCw/FQ/j39KnGviXKIfsR9tGvWKq8lszhM9iC7TNE4JkLHA22
D3zxFJdPiMAvPdsH4BgD83D106ewSKptm70g0rAdBc/OWFvLpH0/p/Z8lc17naRFE36cXmD3
MLWGEd9ztL0T489jm4skudY8oBbnxCN64Z+2d/OUBQCtvU7t9WOQsE48VzuZCDMp61BmtauT
zRqvt2fpH+54H7uWWKbJzqZBzOiLn/TPP33oYQhelPKaxyAOACtNiXku52FWf1pI8EKMUVre
jub4DwgIY7y2DUHBqqWZp8mdbPt2BIT2r2YECxdbSxVhx5dK0z1a81mE3b7ZtC/Bg5drIZVd
CZ5oslr3Gtddu8Q6Yq5qpHdp6leZiKORHA/Ys3W/Sr5YbQcEwDzqUH3T1l3YWPQDuRpr85OJ
CDuwFXRZr73i3NpH7R7BCB/Ok6e1pyzPTi58OWSEtUxb6KJ9W8Z4MXl7tW6gtsGsCQinE+zI
1xFmvX4MEpIP4/w7zbBVadEovt3NnbyMAfGM0HccgnifcCjF4mrZQikERA4bRC3EOdY5r+mL
4EWRVyXOsXQWWpGxHsoABS+MTpGkt3/Ai5kPHePcGly47X/to+Wc1zK6gMT9ipv6wNG29Zot
mxUjIamN4KY+xOz+E9CLCDsF12IqoqsAm2H6wERNfXu93lpfgKvaTDTfgjOEVPb2cRHDebm7
ctqjZl9YnzNbo3TA3W7l42wjt+b/splQ0Qi9mxWOhdHnuj0n3OEufvCwhiZs1oYhXadamWzE
bSkmpPW4g7JKM/3Qdt9nDikl+Tz7hSA0LRZS3dl9/GbySdT6UfEBZpUm3s8Bd3uYpUOznXED
lNfpG7m9PgwiBtBDXbyYggv16eZiNHhFSRe1oF36PkxQ4XGbVO44P4DK5EyX26FhTUHf83p/
To3o5VWJWKMeM/+ahMYe6tkMBENc/ex45Hxsits4cKqt9lM9Ku3KWq+cQUrGP7pzgIp9I+Ih
wv7CisuBWtqrXUtndZ/LnCqkbyqD3cYahlU+WBxdajlLeUXMux50K9Z+yYam1BQxD7aGeZ2m
fpy18O8C6rzkWkezDzyrFqF2NNAfMeD/wTO6mCpj9iCgCi1TDLpK8Mj4L2FIeEbqh7p7T04D
RqVaOMUeLfKEJckObrvtcOLQBrpCsK/qpCcp/KI6Yi490Uq0+oDpMLizT1+G8fH1YZDAAHF0
ChU6qHfLs1S71jAZN1qf+odX/DTbdznCL67EOmkDBfxCsYZhq/CAc/GuaBJli+SzYKFwrklc
tEbpgV3B3r/mtyst0qxoc/u2bbz/uavWDiaecL0njsye6jWgYHVd55tk6Kb1S8x9rZTvQvt+
bnTLBXZomNRe523kD2GsW4uzMbqJbtfJlkX7JdULzUXdX8RcEMoYi/5rqW1UJoWeHWfbWemo
LIFaJUJKf5VUmmvdZdQINu2TstaFIKAKuUVUUlQaujRIPdsLXRBpWK0jOypaToAxWziFcMmP
8mnvfWMhjWveAidZux5vFjdH/eRbxrti/gT79nWCWcN8qKxrw/6TYUZtpyUvUp6NcVy0gJIy
SBtgjXmT+rtYRtgqKBbnBMk4LfeS63Yv2NHrKyOiAp4smFPGfq2yr7vwt9t7qYjE7Vg6g+2N
H4ARTzatUWjN854lwF1IzklnAame94zEsSFTuG+XPeEA06ZdAxNeaxXRZbCn7GClXZLC733P
21ifg2FeAhKl6acslV3aL6n9j5tzwPVmbIsZ+muag0D4pYOe4ZlPA3Kdj7BQsmWOMWEFZCtG
ff4BYOM7GTc/DntdyCKp6p4Gm+UAyeW9i7c/D1R/9w3B3PJfWBOSrrI5VlV/Z3YIMLo/G4QL
yeMppr50yoPQxh0Y9sSpxDPZzrgDGfj99WE9vtv4DBLg1SVL90KMvcXDK6R4Us9SHDImGKyT
1UpPsbhcYbl78iCwixqTOqyWMWix8AgSkYEVjVBBo32v7ez00pKrsRcg6tp22BsV0xopxRCq
ZSLNk7/mFz/JPhFzDLflLoAJfT/zLUWk+BXDPXODj2tAzvwX0JQmTUjJWI26vtiuORyiEeGb
HWYG/Bdg9GMhvMWMSauthKwnOyKpf47z4mt2zfYxCuBmThfc3y4r87O4Y5hzk0m5lfcT5WcR
XFgQp13E1EKg0z70eQna0gHVVYlFgeeUxNDSvRR/AAqK9jZy2/gMEh4irp2G5mC1GX2udr9K
cYBfWd8HhFf8Ggy4HJurSDr4SPpygn8YxkzgcFuAYmtffQR8+7K5E+M4wgPyf8DWt2KY/p0Z
1YJwraOLuKBJzXjgSHf5Qfda1XSL/jPgw2maGLNn9sOEpfCaGeysYVel9NKic7zGAsps7OZh
Iob50r9mnI9vGOYuuow15o/7Pq3PM3CsnBCXHvhH9+rLh5Gu/x9WkgjzgmtXXMs2n2IZ8U0u
rcww6BvzSFH0ArleT9ijBc0w9HOKqMlQUBG5OFsXAm8lyR5Dn3pLNifVG6Cpzgxm7cBuQifb
uYH2hr7QsI/Y+BPnsoeI8TAIp2rfwbR+i7vykD8bkavm7EAtSLxcCxtCIvUtBlL2Hqz1WREY
PFkr73rF7XrC4zDb9tS5VZrLLCYHZ9XKbiZfdWhfRIt8FEP859Yl4fVzIqTierZSMII7qZAe
s40AkXsZ7C53OTBNFSMtP2L4GnCI+4vAIkl+9hVxbo4Z5kplr3QuxDD/Jzu7NAC0GuzSSj3x
YyBjneRL7LO48C1XLIxza15SYesTWUd+otkpReIozj3qlly1/s92jtkrxDVYBKdIvKBavriL
dS3Esfrrp2CWreKkyETHsj/SnxO0DythEK00/M6gmcT9XW8Y3w1fKg/jYiYZ7CHun0ig7RiD
VzLkksx7tW6uTfNVvedLBQ9SqiLaQim6V0+esoNChLz5jAHfwwTfSgsmpYRqNQlq1W5fxXHU
9jBH7QYI9mBbdippLKIbCK/7swd5zQx2FV5zjnXfBEQVxW5p28e5nS6yE0sbMcLekV0rjTvQ
HruaYe4l+vk9hvmA/qBBnoOfggEvRtG2z2spTVSv/86NZsyqZe0DL7yK8MI7WK8usgDepx7l
w3rAm7BuJ6k9YzaIGCSiQAev5giwGwz0cpynWe0lIs9oRUmY6XG4pnezwPRGhlkbl0GCikso
K1NsbzdVXOl6mQH+jT3uYPAqzOfhJ1IzqkpavBQN/wr5ZwYaqn6/v4YFSrJVPoYm6Fh2FrDK
1/+NUCsqiBznCJ69+nFW+50OASx338qydQd0HPR7l3W/lL2iTNrS5B+D43/RY7C7zxKA2x+o
5bH+umeu3zdmmOtayw7nOT+OYV61iHmS/Df3/tWghvlw7xQyCiRkvnTQE4zViaxU/Cxjpwxc
xhcNUEFxJMmZruPRt7mv70ewlDFX34bV5vuj0vgpM8ktWEhy6odVRI7r8DLgZQINpdGNrC3q
NERQaMXFnTvFzgk0OOAF1u+HjcsgofMxq75UI9e2dY7mu8sOeNoGbzAi1LCoFceqWBy1XmEO
bbYSFkqFwKM/qv9XYWjFLLSp/exFX8cD9lOYYjyDKG4TLJGgo2M8tvYtV/uYSoLKRlgPCWgn
9vMS1nfXcLGGzXzyRaRr7ko7OqTy93PqsL8KmQIu+QK2FQ8S5dHUFIbommnXCDB12Bfs70DG
QmMiIaOmxW5RTpqDxUtGuxFaK4EoJzBJN+AO/mKjbvBwUugDjFIAWB5GTU+dHafGj/VOlCAs
7eZ9Xsz7hj06d+oj9GmB0ZhWeKqUrbXMQdPntA39uPEYRNjQOr9sMk98FKpYA8j4Zd6rofKo
gv87XyQGAkaRrWDF4rKFUlQWG7AFL4ww9EUPvJF6x39kh6lPgs3rTACjbwa+JhUXbH07yn5+
0xW3fwDJfh5JjH5/QEmu18oowWDXdmtp+sUsws5e5lRQLy1+r0/9FzNuYFP/NMazln4EaKVi
ckTMx1K7NprTU4RuEBtvqNsKntgYaCzQiGKM0tJLiGUtdK3tX2X8SJ8XHjIJT/o8CZyVrjpo
4XNu2twF5trWHJiWgx4GaiEtph5pXYhS2bliPNq1t+5kp4SA8UDnB6ieJj/HdhF01oZD090l
D+yFphbkGlgDDXjN/n8Y+CH6P36QbzNsmCSn44Ij1ImoqZVfcrV4GPCKyzaM8BoLpZRGbl17
BSJ/3m46kJdEE2qEycCU2BE2X7yDc99oxQu0jtnUBa/4Tijdk2OyI4x0rbLbzRVGXeW22RY/
/0PnWyTa3LoZo2zoIAeD/bm1VyHZl9EfRbXpAAXbVJHD7rEBE2jEC9GqlGkcdbDRjpL8MMy7
SL9Y8VU/RhtgmOvEwBgm4LJ7zFo8ExvqAST0pRDfTpQxAsqxwaZWJmosfWNdDHlfqlCvUkdR
fBdZCR/xgkAG9QDCYPZsf37CttBJvdO0UlwgDtXiGSRs7ZbdZJ0/Aakk1V/x/KutN0U8pnHh
VDt2I8KsjccgodMqzMBiMdsUPo5/5y6f+lzmvQqDus7z2hchz6fu/EIp+cdVYEz+cmsQbq+W
SbseSfczvBrsCMuioCqxj5Y2AmYJzJUJk3yenWW7P4nU+ymu3QLHUgHkFSXq7Yrb90o8NQtN
oyhDVNc0YmGC15tR6KcM3Ksx2GvVi8yQVAV1VVJPIw+DNsRgD5Oe1jHMW1gLzi5BtmdK7QLr
r+4pMbA+bR3GeGC8rX9xyUKECWn+5Eh1YuOo7E6xrYBt9UPG79MWQZfUN3uBPVuKFOKudKKt
qRucK3zb79z7xDjrl60z6SMQgnwvLF8Jg2nxlOYaTVCWoT501rbNjWAW9lEc38q6+5i+IgrN
m8UFNh7M2jgMEuCVNrxPU5LgIFDD+6Eo9fxh3Ge+hoYpru9pmNS8MvjJ5S/vS6RmDGYwQBvc
FNvvR/qcyWQCZ1gvoChrrf5xJusmm1ylm0Tx/W7O/t+gAsi7gW5vRSreANEWkZAZo9R3NY1S
2AbotQSiy6DXhjCKPEHq49wDfsp9YEgqqK9l7/E0+gyQ5cD1NtgNssC0MxceBVo8l/JCVbZG
KDJO/8Uz/Xq9DfO+jGFQig1ElVmQb/OM0YXw0HqXfLGA0PmZS6vH4g5/P+k3/8xYLmJsVdsM
eJe/Dsb5R9POvXbuLd+HwDnRnlW8ZHNmM8xLJuxKx1e4ji8BpJ9skVw4Zqi/GU3JQ6q+VIF6
SfpmtPS+GxNmDYNwh+qofs/gVc6dDsEBCuGOeuV5V6n9zs4OiX2DXirj+jxHdKM6AAA6xUlE
QVTFGiy5UPZLZn+EVYI63zJqs+TB0rIvMTjXwVQTGvVvo4hsYVLTy2t+gPLQtsZZFZX0Grv9
px5psU00Oyafjs15PL74641RlBHvNcou5FNd4dLtgF6Lz7c1B80aZbjGfCPK3X0xAoP9ExkT
EZtzV1o/1uclGOa54lVE6JG/MszLr7juzll2meFGsfsyhvZi14rJlnagVHsHGkAb+rCzFYyR
IxugXv45EAiim/Iu0mkWOI2dWpr+2ASP1mVEbJEWp9+AiY7jg9+5V9tbJ8meXOQmBMJcE5YW
fE177C8f+JW94NeFSCPF8a52/RAwtg8DvDQQS/JrYBYpK4xvsZ2OxxsVZm0cBjFcrQeJ3254
W5vBa1N45TMFaT/Acza+lh3BSahJGATPhuBDvfq0/e7Xevv6tzICtfHktIP+ADN+lvsBk7Ab
JaXLa7/ruvKs25h2p2sf/WFsIRIlgR1yBybpL+1a2/93ZkSioksHzGfyz+jNKJlG0d6ILe1X
EkGWRrmowSjBmO+r1eziTS/BYFfldOeuwmCPLXqfa3kb13u/SbmBMHrTZQzHmxZb9rcw8rFA
GW+YR+mlWfAVGwy8P1jryxglQSnqZRXyC73GIM2jExvDNAZFFOpltqGuvZnaXme5S/f/g82h
5nH7fb1XK061WKyMxGe9O4ud6u7DrDO51UWjDmU+/sdKIGmX3iqpKIX2i7GbqBt81yTTJhZf
kQGfaYBaV08RuWCDhEVzgz1TgFmlaawryd0MLYAacFC6LAU+MNBg1xjGbz0cPYyD+z3EPEgQ
98xFh0CLb6KTDBrVJ5KsMIMKfM3r98ymL4VRUbsf/k/ZDb7cqOB0XPAMgqKHCDBsaKWHP8rE
SM2zko/07JYxipu8yqSei/r/QXZRovfRu2zAiu1UNan/lnUoj5gt5BnR9ymofTGKNkWcuRAp
WPgshIhUZGg6V4Hz412AM5fRv4+z3uIbruquhqlWuhJnmINgOtyZQQa+6tWCwR6vwGCf8B4W
Yk0hrYXnksF+x3WuZLW2/LP3OjH7IMK2iDkE7dI55I3RvVYZ/fe6+Su+ZkcNFjHX+bJddA18
gpYaXix+jGudC2PsBFST1sT4xiarVWRj/JTViF8iIfCPdm2rVMnkWTo532gefZ8egugp0N12
IudAk/G7+IVx2U2FNd5HOs9vKBTxL2j3dj9Ho491udF3c84nCER+j2M0diAN+hTl/2waRkKR
rbzcdOw+31/GZSibypgM4WAw60zXxarVXPEYq50sJGFR9yGEBzcZrG0EDZJJgig6A4lNOXt8
u/Xas6666vd2Y7aoHKwD9hu8YG38Qdsx4D5IqAGLo8yDxeaeWu9QWnoNzPctjikiSbPVfrWb
XVQ5BKL9gUXPdaHS4oNhNEpygkvlak7rHl41PGX+djbxmnwxihj90gNv4Tr40+vHcY/rPPTK
NEqtugsa5XJXTBfiZr3YffbuHbxHCuYQo4hw1mn8ZhKT/juKXmuTGTPYqbCejs0Mdgh4oNYw
zAsY5oKeokbdJjnfCnkPZJirL+qTSVlsF0EpXwVyIfZZB8zQA6W0kU5VGoNVhrLPxBwaD/3T
ctbAHKGPoU/12jx7Ho1x6o6jsvwUO0QQePbE/+Q5D6O/tzc2/qlVfd1glU66iv0RtWGrWh47
UwhAsLqOJps+brR9PxRv6KCGloh+gzD0BcuLbW3UTj7dXyOD/v7DBr2+dgYRvNJgRqS2y50p
Ne3cTe6KI1YacQwkXZu7G2Ig8oNH+XaIjcFSMlbuGTustPRU11K8HyKZYfVvlblaYMlneS3l
Pye9tZGc99x8z2ppNAPPhupvwaxlmHXNr+w6AzGr4WO0YCAMwYWOKW/n3OloJ6U0FA1zy3Ct
Y++0tM11o0djo8AotoMUY+BV/rqMIoPdmGQqeJ6K6oKCXawXjxxp9VRcD+PXPB56r77otzlL
jmJsP+YN87HisO8BZ35rDNA3NcYYI+3NGKUlJcbuAfo/CwIcbxqDDbMYvzzPNs9F1aPQvO+y
JEXrJ4JC49GXMUL/AlHKdqt2rYRhVUqIXa/yZ9khE1anZicqFuR+eCxjf5V5wOSlUt3gPKWT
uiLKzi56q7+kYiF1HMcmR8cx5zvZ90PGQjhKY27jREZEGt3MMwKzxHeRDxqGvvobbdDra2MQ
b2jhlpt2KBNOQTXglTg/Yfus9WmNCDMqNodLwqQ+WbiVVc+Z5Ityqn+7O5mj2hWplYF5jPsc
T7nNDpPcHubVjKBUM9ZFZ8I8WjLLYZStFLNKog7FrIEwAqNIo3RMYclw+S0M/LVmuBZNo1Dl
pOIZJaW4Q2nZRZ5Rov7dw43oNmU/a2UwFkQVI7lDhL1h0DcNWjDME/dF7DGgFpiv0v2y61o7
0x91S49m7qUx6IPqkJWWzqFuMDZG+2wCaTs2Gd8wRoV0mLpS+8k2PugOnyIDY4jhAgRt6kqv
tyJKMdJlBz+LALrRYiPaR9C5s51tHARTN4KFxDtKUy/gXqdy7NNWN9hv/LMvquN3OAjOR3M8
jbZhT0JIUUXkXJHovNps/2eo11CjNyIgrWuIBlN3hJvDehwTWrJ3Nry9ppMbhpbLAa+sYiK2
R+1pvFfzrUsDSey+/W1E2eOdzGUnaRJROb045kd4VGYZnNLCK+36Wu36ASP5RqDQfGCRpCWQ
KpP+uu6YsdNhMO2bV0NCcp3cj+x2Ib2h7737+7wOoxx0m5szjfQZPDUJeVbyRklTyuulTX4K
rdgogl4E18xlCpE0a5SGwU5F9Si6AiaPYWAWJLWcQmDtA9Z/Y+CsM/65IC7srUK7qrcjGLah
kmOug9KmT9lzhwVEjWO5Z2AMxyKnQttM0xjK1Wph1YFWaKrCSZoc5Tomz6D00p8ajCEoNRRj
9DdOSe0ar+3ZsMhFh7jp7z/aDpOACRpI/VPdYFc/GCHj6wYrAl/rrsG8ePSi73AOYh/BKmQQ
sauxWl84bF/28xJorJLcxPywsE4aDTstyW0UmIVUfQ1NEEBSw2F/aC9ISew60U1t8iIp0xcC
DHWrenkPHo6xShX7kCSZQPygGyahMDT1X+vlTyDRv2uXEUHZKrfsosEZEBdmIK08QaQQ7eKF
C+yIMGHZ4cP6E87RhKtdduCtvN7qCzxUPwejnGk4XIZuhPetdewc7n0uRuo36P+36N9LrsQZ
nvgzif/cl1xlp/dx7lQI3xvs59+NwX4YFjO2g0CijFTZDa4+B63pDfNy5z0u/hHrVtQ6fJS6
YXzfvTOpNedy/v+H8f0G4JiybjG+x8j4ziFVWVGTfAkmv9NOl/GtvDEZ+PPsm/V7CUS5ovt3
bkL+YRwaqnKiWMR7uNCt5GVljhnZZxjiNlfTZMCfzdh8DO35zwQGWQPP3BZImeEQxquGYENL
ZkXkhp29ncEsWwH6MDsTt7+fZ9fzKAX+C25YIQYd3n/bcA0S4NVb3/Mmnu5gpJXqFgle/cJu
NfyBj9zKXT0B5go7MlA6Hc8TxRokZbSyLakvQHIfir3xXY85UZtizkaDsAweAC2S+hm4UxXE
EqH9BElWyQi0cfR6v1lHo+D67JhMpnD5WAQC+UDYQ4odyFWqLcXyLXMZEyLzy2ZRwGG89dW0
iG1l3A2xXthksO/JpM62PmkNezCCixjmhXbGQxFztGTMMt5Sqea+RizClhTw/Bct3hkodSma
1muMWgXmMK+UYi7YX9X/YTyORoKf4y6DOSzbWDbGBmqMxsCJ8BFQyhZweCv17PKwpcSd5Ewx
wdjktNBcmUeJe8+e+C0CtYczz7jimdtql9J+fGDZX99rEHkuh9sCzEpqv7Sxkic1wqMqG0+w
OtDqcK/XdNzwO9F0kn9r3itUZfpODGICg1VydGpPuO6/SMpKgvRgZH/Cuq/q+GyGNSLDVlHX
JH0HMQt/nCCbCEO7u3ZMEe5GaqZea/RlPhGWJJXywArtb0DTsP9hF8UH0p/6izXh9XV7Mfxv
gkZRvwUBzokWcPIC1iIALVLcwy3vgjC961QapW1shxuNS7Vj6TcJ6v2rK73xRbvZ3Gm/hLBl
sL8bmFbjvE+Cmf/LzdLOurTSojdDQB8zhmvDMK92f891TPu9/fb3pJaLMYr5cyGsc5HAO2D8
ojF43tZt8jAt9bDK/+Oi2peJ89xt50ibyw7aUI1hF+n7Mj2b3+jH9O+z9DfhOXbjqJP59yOn
IgrnECEJTUzNJJkBf/kBCI+bgY47YcC3/yPCECVSSc1ujKOzCRn8lFjWbQ3CHgr+BY1W7WaM
MPojoHq+TXXBzuD25KpltBr6sh5/ocDX0D51Q4vbbq+7maj9mSgQQeX/Yvh9fFjwSu5AGXNq
sxfhx8rPRNqJ0VTiHo3Cbq5x9FFsjd9AfJFt3BgItG+XRbAmoSmjGcWnQAqcQuyjY8pJNshD
DXDf6w33s6CXDOxwfTFKoQixJO8yDVFeI+hVwH4AfnTjrYm+5eIa0GvaCss8jQtLMVDRPqRs
KFZTmnQSt8ZFu2wB5x0NNAIq5lmuzF6AghAX30+Uv+UTHML+hK07WBwD1jAoJQ3uIqBU9Z8I
7t1lj9DDGBkxD/fBhnmcnAOytWYtuZ25OspiR0nyE9aPnD3ouDfbKLOWvJ3J+lfGjEVyeC6l
+SI0nPZiKU3xWQdBMA7WrQDpZy/5LmP/V9AiWjdm851JR8OXG/z8GwaxAibfZs8jeJj9jahN
CmTeq8EKeWlQ9TBijkvu2w8j9ffgZzaiIWU5UWo6BCJmi+PPGXOE9IYBmUNwCyP9koencO5b
wPWqZo6+STI9Y9JjsKHd8N/UJ2NMGFTw5bIDbofI3810HM2Y/BhiznvoRe6UoFdLawnkcD/G
9xy3bNmz3PjTLKyKSIep8MwnolXeAUZ/Lw6Ao9GArEjEpouiT7iXSN0tPXwlTIGru/1C1vdv
b5pHxneBKiS18g8gCDIIJr3PmEPjK6ExHK/Uhj99U32z6Ee44LV2XZucnkygbi8bF811f83m
kt8s7WfKtcYMgmlqZsBTdqgw6grG4lcUBd+da/m6wQNdz5/pX8POAYJZSXKoqz96iP2g8diA
tkEnNWrkFkgtkXGmlOd67TH3lxcEOYBX5/TPscKtkjiauI6lH3C51rv5TP1b0qVNa6CW+QJi
4vxohV3L0hs4Z8B2nH+GGKltafZY6NVuCqHZDlZop+k9an7Aa7zGH8QkhuvFKGgVBdvkKaqW
PaPI62U2CvZBrbwjjDPTTTtQGnJH+vo4Eq8Ik4ip/wUh8SXXjb2eL7YAEZbSs4luwuinOOd8
Y4xgYxQEayt49EgO7ZjyAeIY95jg2RSMEYYrjG3itI/gq4g2bD/SzqNEBnITA9mnPi/MaUhd
cRSyVv0CKMn+qeRT58sq/AcaGHUfjPJuoxnRjpi/vxZgVvdLN8Nkz4AkSFpl3XyuioZS2zBB
2T+H+ysO9KpzUqvhuufO98IYU8zlWe3+Osbg3w8Ar4ANkmpIAlUdHF38BsT8IW/Y4b1oHUPy
XdczwKKdxG3g2S4irGS9UjYzqPGBeqPvVct35+PuRE0fbAyb1L6HNP3QAH0Z7Eob5zcRqbdR
PHMqCzdX/Ayj9m4In5wsav5GLJQX05TXyNnAM/OfEhElChQ4A7wwFrhoKZxtO7yiomVj1CsY
tWD8KPkKMYZ7rcMiGm9j9C+YNs5T9X8VPatp0WU/4ZneRd913O0ICNlRkncDC7eQCqIM53oN
qM4SX8AoJPA8AmFXG6eYcZJLvVa+GplJcJUIfDM8b+6VxsG0JpsE5QofMYiqrcbdc2hXHAUb
0NZfg4TdRfccj2EaTeHB6h7vRT+3+/eFVzaAqFMxh4zPUcV7MaQ/5DpfLVtA0JijcgnEQHXC
9rxdI45fQoI8b+8HY+EA9cYffQzkhCetyuo00UiAV3aFTf8igrGJChqFFY4KykUE5+qVa4BF
QC+8bN2vEtQyGOIZog5jNJhDLFOHmThGUEuaul75PuN0OMT3QWOOTQWlBhvBEK+o18m5hpxU
mTFSoG7ZYcYcmv+BWlgEV+58jqf1GkgewZitJeqVy3BywDAQgApsF9o/6tzOd0JDhxs893TV
/7VrQH3RgSplJikQa8fDrAuD9WWAPvZ/gwEOtq9DUC+lop1yiwSN0nSpW7XQJ7g1wytvXOF9
gmA6SMtw+Vt44IkQvzJSW2AQ0kC6ziT9/DKIYUcpD6SQlMjzTpusWBtEAoW+5PNne6iXQxLX
HnFrnrrZTj2H+27Opuc2OwUiMWLG1Vqa/B7cvDAKaR6ytdq20Qo9GppUWsM0B+9FGW1jgQmt
EkD/BbxCCooxKOA8EhgjjGuANrnyr6iA/zTzl2cu8CDVCYaoDQZtMun36KOrsBuptMjcywtY
r2zHs17iamvfQ8zkBTRn0XVBMy46AIJbQDb0P3qtxfiKxkILfal23YIrGQhLxUZ5WFNS8q0N
1pdwkd5/15dB0ASoqs/9ehTT9zZzyZpxld7gvnJOVxZvQPJJY2BvmNa4b0+8MmR3ts0FU7N2
GPtC/u9K5y9cOXcIwSsfN4miPWESMQf/wKTz8fkPyvG6B30p3Uf+DgMgP7wkrUt/bnth6P6C
giOh9dIowABFsaVRXHokY/I/EAfLgYFPqD56nBqUigvYK13f4zv8+ZP/yorajSTGaIxrZheU
DnkFmrjW5kBpPjECVGk/HtpknNA4KbzxtKJYVZwndQXzQpI/dXvbASrpWiQCX69QN1gxE0oO
VctEyttxYT98rTvPKipCA5praeKsL1cRdI3drwzCWhoMgWzB8MH7EvrU6+/6MUiAV6N3B9Lk
9rNgnlyRMtKsTU9Mugl3qjOqf+ta7wUPnoTW6DKjKS7wkN2fIEHuTHfFfi+iMhEZtFzBp7mr
TGsoVj2Y9GkUK245FU22OwauAotI21zmvaIvI62ZRlGQTtALRilNJgV8yvuAVUdCBGIUvDcF
pch819WSw/ntQxyzcERpjP7GNMDqhEVpcq9qB2BF18dse6IdPmMQmBX2a9HiuEh0zrQVKdyh
Ji/XxVqyPfk0tnn7LNqF8bG6wdrC7QzX1s6qRTx/RvgZczT6Qgq87KEaYQOqeLgJ04+wa5YM
0trb4bxIag2/NVIIyNyVpFdRhChd5F554g67yPJ7mHTct6Un8Pl1f43iYn9nwZ9qhfq3VA6v
dt7LxH/EXT4FV2c2aCVyrpA3cD/p3IRFtHwySZ70nZru//T32kgAjM6xQdXAOfcHds+9y6SJ
iHGkttA3jYE35ukz6yguvv8b+G0r7rIpPiVEGkPPKXtmJLfggs+t+APZQexGWzhEzkhoAy2J
VhHYysTWOo8hmKzfEnYRK4yScIQG8hPsONXbCnQyK/onN/OBP5Aw+m20yf7m+Yxz4xG6vyCh
9V/cc2vZpoIyRapzplK1nbVb3ejcYzg+9sHgVx1fedYWrG/QcD00CJxnhieVOZLEF2NTOoeL
r/U7nKIJFNu4ePGRhL+1Iyz1bzGuKImLqmP9xtqvOYc35/JpYg7BL/Ajk6/2uQfa0EY7gc2h
bb7KF5+17918/6fvq0E4nb9wb4ywk8z/rhwuEL8duim2Hejbpw35rDFoGPMww2UHL7CUkBEJ
pYZ4QIPUoIaE1Yaii26WOmv5a2npBHtG74wY+CIqIgdGM5id1nd2CkKrlYRGGCd5ri496E9u
1V8OB55fjeeT37mFYkjFUZ90E7a5w0o+WZ0zaFE7HafpjcTYIEcyYqLodPO8epg1cD/6/DJ8
Bpkxzx+bRMfB4XvZeg1VTnf1G+2apWkV1kd83uWj2/g8DQ6n/i3GVZx7HulwFr56XHRgTXme
ZJuoefZwuH3fgDp8gygcRlHqyXP2+0DVKUK+kmMjx2L7aI0rxv6rrlIh6EQL/nn7sAW8iABC
HEUS05iG77aodovvb1z/GQQJ7mYy8y07QJmn2WM05qzPQ4Us63yOTAPIwmARC7q232WsHelz
81iviPCV4PjK0V3Q0seA6e8FxfwFRinaqsXIvdEVW24nqv8pwgNCJdAXRe0E+epkdsfxFLfn
TghvWvB+2ofBX9aDQaQnaSqtImNKKQEuXYK78Va/S+qy6yku9gVUJJvWYwtoR9h69Xqe+GCO
+XnDkArqWNfqMNLmWmzYqexODUYdHRtFy/WzDui39WRoEozDuVEcpTTp35JF/Lg9/GC+934v
OEK+NK26pTFGNnaWQAlzl6Ythj5YvEQulJYbOKcM34GFVlgLE7HNRaOIXG60i1lBqdbRIfHn
mwSHNJEYZc7UH2GvsXK0ehOQC/iu3DuWDbe0f42Ssz+1ZQdzpt0I2qE0EN5Nucmde4ddKHg/
/VUHfR0mgwR4ZR6jk82uUPCmnvyHm/nIcS6fPgTuPM2tZY24bIECdne16zME686wvKOgfuVl
aG5hs5R6ugvSIG9uvjRZ7Vat8jGQ4CdvPscwqdQu/vAUL5DKvcg9KANRLWR2Np+z9f0mGoHg
RmU5LvE9bE5sp+RYK7JhjpvSuvQ2O8MRa4l7pUlWRA5DNFVZU7XZ/k941XU8LM27S/Z9mgzv
kxGSyo4WExCBfwUDvngWyOIh3MFHY91+hzX3SoPhCmizoT1r4U72d90O9/o5+xA8Rgm5+3Fe
+w6SebmGaDCZm3H99zzYONysZeNkDI1stdpXXUhxHgj3hc1SVKBMWsn84C3PudX3kGsxUMsm
IWWbAav9qzSXypMYYb+yM4IvfKDTt37/+o1A0OwVVnHWuxFyRA7zFPCLCu/2Nz1uXXoL+uHl
516CBl40GpCjppYVkRvIk2khBDSW2aOT2EIPRoyiJSCXNlva69x4CIq0E3YZKHfiGRR0jye5
seOOsb4Ej+wQo7Fuhwc7Qb5tEXIco+rq2rLsFIttyDXXwiaQlbX/6latPNIS5mRUmdodDmSo
7WHwSi7eKLe8p1hcH42jvonZlK7iUpbVkr/kYx/XsdJulYdx/Zwz2DNt/W0jjgBjL/ijzOPU
sRx3dGSxsig6C+hbzOIQfe6XzdfVb6dyPMWsTVDCNSmowtr0Psc3fRQklUYRrV02bYF7/lkZ
8N+xILRsjxoxk3zhZJiD+gTAs5zs+qz64jCRxjAYJINXKsmZ1k+xlYNkDVk3tZliyxigUW4l
jHIOdZTONSNKPv6Qyt70POu8DQZark2pzjAermNtqqIW/OPNJ+m6aq35E4B0+3IOkgF7MKyL
C9drPmfr+007AiEOkSbX2Jwq/SeKDqRuwZutI/0ZyN6VqyJy1MgSDSBw42gPO344ex8GA14b
qnZM+WsY44PQx6vYpqxQhEblck4ptKaSS86d5s5bMMZgGuLY7jHIy9AMEuBVYfRbMcwnYHgF
70qEOiviobrJxRV2hJ02r8cQH6bfXrumWicp1iAPhiBWHX+4Wr+GlPfiunyObcA4Nl9gNKP7
3PO33m7nNDsA7IutL5t8BEKq0epV8xGoSyFUkAaQyTFnav1K7gw218obVkRO12024EuTv+/q
bI6U1G4xGg2eMNFunN/btb4hMOuQ9D/kAbq3Ne35IaKUvFbWaa6QEPY/n2jvyVTGeMaYI0Q0
/RlDvcK9qMdP3YBFX1PNJ47nq1z+yX5PFNa0vCb86kn6NtfNPtnUJeOUeQbJfGpJv6du/XKT
jgAOlJvzhiRc9FPLxLVsZFaLXrhkey+5mctebbr/FMV/NmkvWkiTnZ3qHayPR7LZgJ87+Qki
8NMRuGyPTYaC9qhMyWUSs8b0Ra1fZvVdCa9DMEiAV+wTkaYnmidAK+TSdA247gQS577Ae3Ki
5N7DNlivljm0xoynWFx9PAMieMW/yHuw+sKl4Eevs+a82La9RhAPVjdJfD6LOOyNuF592Hrw
6zMCIc2n/hNzvyoRM98yweWTt9n9+gZyA4yKQhE5Ob9qO7qDj1NyHa0vQ/lvB3wNBrzOm7Xf
HFDP6dApUAv8ZrlZjgDmHdv0z6y9rzo4gzTgVfFEHpBcKVLb1eSSzbN/uZpsBRlL69tCYbDW
sRSLi8bwAOgmrh/XfZAw+Mcb180GPZc7x9IR5GeP45upoE4sRgxaWv8+NK699c1GHQGL5+DS
1XqVKPojtJM3hJDLYFbfALDSadRipyJykpTwRLq9G7cTnihaJkvt/XBf1IdAv7KRc9Cs0ZjB
rD2pDzXdLhUC4ANcd3AGaXQ8Tx6LEFGs7MsaPuZWmPOv7Zr92goD3K3567BJSoIqtRgI10+T
ta6aeAYJ/nGdYwzAA2t7BefejBSAkVCVtdqP/SUzDOs/bH0dESOQuXQT1oloOa7mTHuaX/LI
PiZQFQIIrWeulyPtcT9BCzny3uN8FizUF6+h5XJ/Dc0STAZiaZdlFAlxFuVmDQmzejq5zv0F
nbiYKmgkyQmZB4DjcQnIG6DclvUMuvS6RYOxyMESLpR9E8Uvus7VXjP1GpKMAfKsWMu3so4E
/7r87HX87WrB/97rBls/bNYRCOk+MWWBqt2kwkM3hTbq89bO8v3KGEgfwlx3rQVeRy/bF9p/
UcJTLSzKsg/DfYF+Zbh/WsFtIJVVyzEjmg1I5c1KsZ3ZRlvHDALhBmaQgBNzyUlEx3cA/uCu
Y62w6t2qvGOUm+RGjTveujvMoEu/j1ZLdrMBkv9bmzp+5Wj8tmqZf1xvZd8onz9N320P14J/
3UU3mL9dfvfmY3X81rb5R0AGs2l+tieIKC4tCa7azaqbbAHk5loBGYf8afVahKX3ZNnqxIqP
hQy7iFzTYwd4tU3xJOJ1e6CZPP1GXFgrDXPFXcF00+2McKx96P0yMIMEnJhj91AZ0IXWPL7p
W/EI/MnysETQ+dhHSIfhDeh9Wz6FTVLiwm7e743ac5aDpVViPf0KfvMJxx7HAx2AV4KMUZlC
WcX24Hdf5wZbv9jsIxAkf0JMRFLQ6uayzqX6bpIGMwbynRR0j6xifY5AsUEgDI8o3n2DnyHQ
RZQ7m2sjfLGD8oXb+Me+MqRDiScjPLNq4Vj70PulhxCbvzfPFPBKdZhSikRX2HdBuVep+zb/
vm+1Xi2dGXeratEOoaaaL914HzZJyWcLpcRw9XKWpNhkUwTmk+Qh58zslTRZ4lYtusWuFfzu
jQtvfTNiRiCk/ZSf+S2C7c8gBG2iKqRwtu9j0zyHXcTqlSwWghDMZwungrAe7oOFkMDFD+5G
LOZk4BV7VsohVv93NNj3fG5WJ0yZALPYFNXiZzBoP61/Bgku1bhwCty2nXFgN0UW6vX5ZH39
lrwrek+4M9eiMpun2HUHUVP93JeV10gQ+bnl75ZGULRTxeJ6tQxHltiLw7kzbGdXPWjqftZr
iW+vc7Z+GDkjIC1BTOSqk5Rb90tbm6GYSA7J3XfH3wCjavWngfFy84omlLCINwxhvT4t0G8u
fxrQbhz0m7I2qew6k5vJ2boF+qW4B96yXGFnoNeJdukB6Ld/Bgkcm8PS10bvBXYRzeVupTDa
0+zFsZR8GW3gTiV3CDtIg+DxGtaDZH676e8cTQc9gyi9IEfKs1qAX8EOSkafYn50BXrkDYnw
r1sL/nb/aevrSByBbI5qVJrR3h0JlB/l9yHedZL1llLjvXqdzz1tAlm0VatMwBFEApVa/xLe
/9bntcdBcHZTSOD37irsobmTH4bz7oSeVGzEM6tOz5I0+lypT+f0awNeLSZrN5lO7hULXxTs
pjBwaAkEqvz6Kr8lct0NUUkvnBf+hhhIrW1Hbrit2TgpZSe1JkCtwWzZ4MasKdCAiSmj6A/m
Xw/9DNfc+ndkjkCQ/oV5t6MZ7oKW5GOVdjjHdzijzEZguLAC7SH4AzOxiK59jNCDneKPH+JV
DgBzEDwylZu8GRr1IQFXz0IC3Dxl92VVlCkLZkUnuMuopK8Fa/0wYW/u1b0b6ik9Fby4jfWs
0rWGLYJvbHQtYXuyGuX/xIHDrqTXOJs3s/2HfE4xkKIZTDUKoiVs6GitA88VD6rB1ba+wQ4S
U/oVzD399CdsfR3JI2DrgUokI0KkIkzZtGlyKkW/dzP8L2EXAsMKFFt9M2grzre5FiLwamFx
3ZDP2Yi/nEVIgACMQgLlFzjthsapsbuePhBvgQvzxfGuXPAwKyCWxoHCd+u0ILXxXmlFWJHd
Q+P4Njd3v8fMu3QNS2a1gbtLf8/qLZX5RE3ZJo4Drxrre4/g3XC1CQwCfeD/KF7p3Go9CMwx
m9EJfnI245T/XDZKjR2WXLb3elCjfa+99fMIHIFbvA1RqxIT6epE4KVmG+TYeElNQrkktUJb
zWI5KyLHfKvmWg0aUWvsQmafBn5RTEy2bZS+y+J1rbbj8q9t4Z5CAoY8pj4EPd1BMQc+C9qz
jMNaRvtNV+/NIAG2qBiCVoJVqGOlIF6S+tpVWryymCoUaqrira2aVWpH9Z20y23wfTfdoN+3
wSCri0HEH1wnV3zOLfqyln355hmABTG4km3vQ5gxZe9DbfurB9W9trYtYwRsXRCu+7kHLQMB
aC9BCB8BHsceZjULu4fueBnGoIgcNCG6SFNgOG3aDE93gz2xhQegi2PfewSHvZGSPxjjIhP2
dQ8tICTtwmwFt4FZifIKSYI1ONjb1unNII2T829jJRhFiLmqoFQ99av19CAhah2zIKZWWY7k
z3Es5SKR9NZgomE3cv71ABoIFWqYN0/pCH6rAzHAzCU8aHq4L2dJZ1K2/NratswRaKAGlkbH
mCGyDRyr/eYsO8gLVlEbc3/j31MJJ/YLp+wr9qYcdstoLyfUAbpScmKt+oRb+cp8u4S5nTNt
Voy0CWkn9wRm4alNKqfYMX1gVh9iDvAK75U4XN4rF93iLpv6pMErk9oQriR4iS21InCd3K4W
umfjzNJAq8b6PmF2nxzrS+TO04DVyn6hlPzhIQ0lF59tD6pF97XKn1285qaeB+17za2fR/QI
NGIiEKbiXUGwNpco9YmDKZ5TzyDeS7qbPdeiDIIN+JAwV2O1KcUZ5E7WWvQ4+qX7OvvRh4yL
oM1mTkabkUipoKHuExf7hVk9DNKAV0smYkwdA3eR1AW80hZb1po0Q4g8JqguXVzR7Sje3yXT
jrVDQ/Tbn7juq1TZjBmKZnoXr2BWmjxlB/72ntge9LylY8BxZzWW1UY5KqM0Pei6V936zYge
gUywXjFlJaTuBasKKWg5rmpgibi33dvToxbNSWhKeOaKO9ljsT5x0McLWbmjWW0a5/a1slSq
+unYAUut4RnVh4yW6xS5lodWtO7St5jTQLQpXshaD4MEeOXS01iI1M7vJCV2YRTnfmPHNuPE
sHIvXnsb3L6Mh9H6dLgw52FWiH6Hu/T6m918j7+lLBDbHYjBBLPk/1ZrYQdYtSIF4eLCXuY3
r5WRKpV+HtSO3PqypYxAEKwq3K34WoKNEOemum13n26PEOY+zj1pn0UbSbKTrWf3NmeDcNd5
5AbNYbMqJ9F2qnL3uvk/vMOONfsiOyvQcg5GrXTBpaK/1m1dgf1I1Bq8AElnpzR5oIhy1uC8
Fqz/mKoQpf2e6YFXjaPxNBEhLbGJY8y2B4JZbILEfSjzQ/bkYKknspnUWnbbAU3FP5hX3rI0
Wyi1/75eUuSpWiIMan5zd7db2sGDSo3C4VvbljkCQbA+89KtTPoiHEDk96Ep4paz7YG2Z59C
ayStqsC9ipnXqzu5PXZRRi6fA/HYp6YX6EI093k2cU2jU62qo1X9TH7mrAg6tNrcxGyGmNh/
Js6Rn4WnVgzrtKxDrceb5RmkEVxZNJVeUGsK75W8CAmV0q01wSv/RdNF6j81FZXC7vkCRaTJ
nlQbIHTf8Gez5Q33aLeHrteqdNDHQD5GfVX5x5OEAhHk0MhvntTYrRYDvo8BZffZ+rJljYAE
63fYBCd1lCglv6/M0umUVaIXPvIG7FoMX5oqvWtxnhgictu40dv+/+2deYxdVR3Hz73vvdmg
rdqyCLgkUOy0UgIUkCW2uFDCJhgEEkXQqBDiggu4tHReW7ERRUGjCP6DmqgQwyKEpVJog1Ag
pYRChyLUFQpSoC3ttG+918/3d+5581qm7Whbk07vSebOve/d7Zz3+53f9j2/3772eXsSOfsg
2wS66KY+ZbGTc4FlVAdEU5l5kBnm7dcEKZGgZslTa0Hv5tQtg96ZBAnBFdZ4WBkzgg5NirLH
qTeKg+eq/QFhJi9T8yKKB0P3cQZEC+K0/Rrtt7wZBWVTlLuWD9M3XUErCTP1q1Q4g/gLEXZG
qL4RKVW4zd9miI76L/LtbjMC2eysEt01lYAGE1VitWqpcWqrC/X1LxP/IA0QtFEoQb2lA+y7
sMiudWLYye4Zo3XIbhHiQpJh7uSnvaQov1XrCGpWHN2D04CgN/fq6BrVWhacMZBnkHByRNZ2
4WVUddWlqFdUYzWDG5E0VNNsoJYgRUKEVEUc2yOkW17XL73JrlEUXXYLgxC/inhby3SRPQf/
uNQ8+cvj4gISQ/zF1Lx8We2Wo7n7HQcjWGUdFIAWMUu9iaPzWp0pJauZPH0SubgIvWCHqAXv
ZutEdoJzaWb/ePQxoFFE6YW4SBNvswZJ0X6N9qVm2XqV3r9z8BDMwToRVH0HD1jzTBe37AvV
iVPMwRZD6Z0y8dQyfvxlm2+zGT2OiJAy07cipKAo1YZ8uYX2FQ94D8/j3WCQuGMV0BIUTtoc
Ao5pIi8aGBq+a5LG0tpQap7/Jt/uZiMQ6CIBeiIvkl+OO5Vs/RP8T31XDcnhYe+GoKi9a6s9
DPcqkhCu2IPOBu02Km/gALrLrgmT/5A3yGgqqQ+qWak7weBNGSMjQcJJ6WlwM7goKLZe/bfb
2Fxg9wz+66EeEHzKmuGjeBFqkY+QFgp+IdVQLxdAaQXEpoX5kSJpE5AiNoZa0xH7oFahVn7V
yZM0sPEe+3woNc++yDe73QgEuqjU78TefYP3p2pUdw+qy1nWFxnWLl1lE6ShvLOFUwHl3d5h
fy9pJUBLTPuRVrTAkOfSfrz3q/2Kwf3wHgqEG4wJ7iopeEJyOTWYDwli6XrIc4Xeb5AOmDCO
/0R9hVe3qV7ZHbTJGKzJbGDGDtCTBJhKGTSlibFyZudkF/hkcTyDBfkSrZIg9WyhlFKKRjEp
RfG8aVltRFDpmimvtYI8rWfmO7v1CIguRLxXk08tiiiVxm8t2nNUAVaKUjUFjqVByNVbwEZR
2yyWwbFUJKOxFUdBSGg/0J7ZtBlyd5vaD9fbtdxDyzhcvBCVnhLkqPYROEQ1GMgTb7n/CESS
IB1+Fg/eq+09ILuJ3ayLBAoNoSZxQpdAUSbNs+3zFuhQRzLCbXA6YA4kCI8T7xcLL9q5PaVp
MMxE84/L2FL6SrWtGfz2Zb7ZLUdgkLZu5odmkoS403SK6518gvUncf8SKZnRnSYHOgEQvWNI
FJO1bHJ2ABOLRMSVL6FRe9FVmt65tC3tJ9wiTPAJJdvEkPLgJqj4M5/uFQN5Bkkogin1SEkZ
kvpLbv2aB+364TzAZgOgJzMsYfF8i58IeiI0pWaJdtWIcbB2yBFjzL9tgSDxJH5vtZhltTLc
5R9Pk2fwoi2yz/NltTYMI2rToq2XH4AJVppHU6XSIlRstRJrg6SCaxJtkPnmsFNQwdQCEXGm
tJ+LHuziorMsa4nicVF0F3Vi1gxb6wj0GUd/YoJ/TTewCT72djTFJIF8xFQBVSofBQfTdAGZ
Rd4Y9gP0zoT0rAnvrw4IeiI05aRJx/FA7y3QCcGP3UmJrSjem2dphpAxvtISCqfYQapWK/+4
o5SX/OLeU9YaFd0mbyNhBEQXDyIVSDjtsmBzRbtM1pbBhuXXtnBKP336Djd2nI+FBEoImXTe
vc9UaKnXinUq4Bxl0JJhax2ZuleeAD4M3KF4QBAVmRw0gIFz8RqlggY3LaLdTH5nwx8g6Xaw
nU2oR75mPWt+QU9aRR8Y2xUzNSuIwr5wI2DuwqYgLZvkqR9Y91fXNfZ0jPNxDIaW1RLkoZSX
tczHHa7M/4+gEQi/LRNrrQLsnFWlhY53uQM+OJ2Z8wXUJeGiIJMYYkp8LCQsnAoqWoxDSFpH
kYKyLlnu/vbIwzZAIWo/nNEK7uNG/bf2PJUWTJsfkB2NStVEf+vwqlajCujQYSHTZOFbDGQ4
T0BsCC0p1GRcuMMjfJkNVPLq0gf39o4A2R8ZoyRIEBn0AikqF9b3pwyw/0ljUAvy4B+f+/6n
vJ86h5YM6xfYHU8ymwK6KE98lN//MUPWSq1y0QVu+d1rYIzXjUaUfDohwbmaBZq5RtASleSQ
x0nIXWkdsp1v+kwl0zrs9O1uROPBm1UsbkDNAkXilJCkE8/W2SRj6DwjQ+3KAwA2Jp7P4qdv
sZ/6bOop7DmM1vIwoBpJRFme3cIhbtz+J9nVhrac5m+k4ijyNojz4+LfMYjG81KDQR5Hukpr
QfL4o3w7AkcgwEQSAntaw1GlOm5K5bKDp6os3z+ZcKER/pT9Rk2B5gBj6hxFUrhOUlNhzNaI
m6WN/07rULVlSRrR+qxnyzDYXUgOLczzeRhKXacTPUw/jf3xMOXTqPWBPGvUOsHRz2OF1UJy
Xk3Ec9DwM3lm0G/tN/IeBpZGPrWYLiy1rBHswHDn2CUmEhdmV8dKCIFYlEcvAg1cOBn1SoaH
3GwYSgWfICJwdnZV/m8EjkD4jZPG7czYGKAQp1L1lDo+guFOfREMd6lZafpe3/uFg+7elGTY
kjha0xHHi4GWPMGJ2we0Smr4CHzDXfnM4dQyfBT0SB8aDJxIU92b6oYH4IXPxW7u+Cepo3Ai
LzcTPY61wt2RlXCOi1O56HE3q5/yzag59odRta0mo8t0P1CUQlMKiJaQ8r78+P4mEkOQsEgM
RB4sMZBWdcWFU3yQx5wE83mfVabeibPzNrJHQL+x4hnfPWwlHX3A4EUqn1bq/CgEutZULNFK
K4kcZ4kWZ5B1JyVntEFLZO+iuagFiWQHQ2zapYY0pbgAlrB4rNG80qMWS1V44RvQ4Ifd3EnL
8WLBTWp9h15FYbVjeOgTSJMuQ0PWqz1Y9de6vhUseie7iNxqOt/W/g7x8FCjQyjKurJGICZK
XdRAH4XRRZMxZMniQPIyUZjPOYqE3D2OjvobRg6/OC0YYf7TfDuiRyCo0qSTlTqlRNMKNifN
A1CdoH1oJYoVLGRGneZHomShiTHeqEbyNAp32hdBIvmzBreGu4IRTSMCtd737CJqrM+DCVUz
xJctT5qPwJlTqJx7jZcwKVV3fEMsaRkt6pQIeOr5uJvSmbyUiLiC0a2a529y0RVuTu8Ndol3
0cmdu3mT6NKs0LdiAf8/ZPdI0e3Kh5rbzH1zyRgkkwpAH4inSugwlu7G45gpJPZWusobR7ir
T5So1bvlEmTz0R2hR9CMhQPItu7iZaj62BV4tFy0GgoYiyOnBC0979YtO9wyamoUZj/3AN+d
5OkLyHp5wse8KTCEU6edVsv9l3Hfq7C7exACFSQWtE2owUV9bs6Eq2yAJWXECzQ4wBpijg9U
JFM4mNkTrmSCPx42ftpLk/W4XWujudkvsE3ucDOWvsekia1NL4d7+DsF8JjQlEJVSgS6ZBp6
3qF2QmlvFrUkY2EODhN1fD+MK6WBkb1ymzGHOpQzhx/PPWLLhBryHLjoTqOFNJHhIVopmjre
bOznenoJA9CuJNGDot0GaIVUkiz2EbykYcwkNZSmSprPzCfHQ4PzXWmvH7t6vds0JGlKSXMJ
zoBjWsxhGpJnDt1mc+IO2eXEQXN7F7vX/3Y0qtIPMKBLtqR209oK/8/k+Ak4+EKzKwywaATt
XyuIOKEpGyzZlbeqKAAYZZvVikiOApxjA8B3+q8KpMpyJzyXtWkwVd72qBEIgT35qISHkmgQ
Olz0IxskZnFdSCIXJ8qVBrAW5Eej8oqrD9xrYxWi4jowqYE0ORcvVXnFJa7QvQTa/ajZGqXO
CJumBG3Pdf3LiHeMX4r08fb1FvGTIYxuGU2uYRx9bqQ3vQLOu5sXvR7rfgIPUK23sehvN5EZ
+1S3ceCrrnwkcHUxySLVrSYhA5LoquhfvNj9zAafoBMwgpVKuJrv90G8KVopESL7B+kBFj9N
FhM5f4zD7XshuChvI2wEAmG+tOHP7p17LUP7mGwxCQiHnio/W9FFyT5Zrz9uNqvWLTUb97p5
R67O6BVm4HzFSs5FCsiQL8U/hZnOcJvWCeFRg4axrzeykMpd7OZOWGz3k/TS+UO0zSVI+wlh
XbnpY70L3YZ/TEGk/YSATAcSwPHAClx4ruvpXupmPXeeibEgTQL0xPKhMgP4AOQxPo1o4+12
PaAW/zgsMAXVle9XbXteCH9Rvh2JI6BJVjXPE5bjKibCrGndVOBOIYFmc7QrPz0Z+nk/NjF1
YqS9B62DM1tSgyBi+dmLqF+zFNo6w21cI1qVJtOB0X+1W4NmJA3JpAYTstH60AM6hARpP3Ez
aaII+1fcbKRJHP8MTjwYaVJF9O2HBPg90uI0V3316678wdXuC0sIk7OyY926+93o+EXE5UEW
6WxUWLGI/ifj3zdEKNHC+sYNdPZ2+0gqWjn7Nv+3h40AGohas3arq6YzoBuoGhrUXKplEc3a
vkiDMyF0nEfVIrbr825UfaFpHYJGydYoLwWS0nMd55xjuL5GFamBrVHbtAJmugTGWGTP2IbU
sO+zTYtS2z98y744zAIr6Gl9vfe5NauQJpUbCSh2GrFX3oRDuy5wnfuiy/WfZbOAbiLQo9CV
naMUIaUf6Tksrz3CdExYg2NfmCeK7zc/uMRjHvt4y/DvMR+YBoLT53uHg+Quan2GhAi4KGjF
7JLCCciSs43whdx1rGS9/HAmbk3kYo7nznduLwWpzzENR5pOR08HzHSdG0ADEnMMQ2q0j/d2
JEjbqZ5weQnEYPmktXxzsZu1HGlSQO0a825eqIroOwhGuY0X/aWrrv22m3fs64aPiRqXIDmw
TxrHwgA1R8lq/sutKzuElvjYh+Fs/Cf5dk8dgamatJEkLLWOu0/20oMQgCZYB+q8UemAbkjm
UUHxwr2r9h3KF5RKP0Sd+pTFUOqVqusZ0wVjrETKXEpOg/l23jClhp2bbYYnQdqvEKeaNIFR
5kwircqGo+BuylqNwjOFKKxuqMIkn4dploBvmU7c5D582svQKXmWpGUq5VK7KYaXX+Cybq3v
QGuNQPsD8/09agSCF9QRO2tUSN4AjYhWfOsy5ugAcRE5oCWTHmIyPst1lJ6Avj5FFSmfCUWa
Tb12g1uLpiPmkNQQzW7D1tjaGGNB70Dz0sRb/7P6z0MqXMuL7u82SeXCylKmk0aV4EuCYd99
OR0AGCYIrwJDZAbrGkPO3cr1BHkubXkhduB18ktHyAj4mb7p+vp/Aw1B+JRMU4BAqpRUrq5R
5E3ARVvo6EKdgq6QLgk6WPcYIXD/ibHyJTyiXrq00+j/MDz/vQRpf0iQJurQnIk3449mXUn1
Fl5UaUXxdL1ZpxMzEJifRbIINYmlJeagIT/ojISpR+4GP3j7/fP9PXMEAi1E0c0QPrSCbWoN
2hEN1QbQYtwXsVMut7CDBIw0mEb1V249Go2YQ4xhmg4azw60HZMg7Q9u59Ry/6eJ7FwDc4yD
u/F0RV79GjxfuYskSZ5yqxYd7W68WJCTvOUjkI2AJlEZ3kuw0vd6kjn1UDxY8nANTugWQExq
rnt0B4xBVarmZahct9gN2mlxB8d08IE7eKMsDkJoH2lSnvhrwvlIk9of6QB4EzUlWw0N75X5
ud0fjDnUobzlI9AaATEHNKHczy72SQnl8Ww10RI8ZMxRw8HTPNKYQ7S3E6RG6zHs7DwG0V3l
ppMhpM4plcpsAGSVAcL8xXW4emEC6xgdjUBQbkK/KtzqX2ZaW+f9J/l2Tx+BjCaa9VsNzwc4
BLqBTqAh0VKh+Bp4qgtd+X3no1K9YjQn2tvJYYKdp2Jt+XsqpqG6coIQWEm3jp+TRXu627TW
rzlJE637mI6HQRDknEG2HL/8GF4wmwNk+LMPQ/jHo5Fga4zG8VNhOUX9SzYJS2r0z0biMDnv
grbrVJtA9CYqJ/+Vdz+FpbxfZiHMHNf9tjFu42of+/AIzF3SuV0wXvkt/58j4JHhgpTc7Ebv
d7zb8JqkxgzUqRvtNURbW8FQ7azX3HUSpP0NJSXUxDRXLp+EePw+2t0lVnvEvFronHnLR2DL
EQgSZN4Lh7ha8iOX1r+GOvWCaR06N0zCW163E4//A3NqClAESQXrAAAAAElFTkSuQmCC'
]

{ #category : 'class initialization' }
MooseConfiguration class >> mooseSettingsOn: aBuilder [

	<systemsettings>
	(aBuilder group: #moose)
		label: 'Moose';
		description: 'Moose settings'
]

{ #category : 'iceberg' }
MooseConfiguration class >> registerToIceberg [

	Iceberg announcer
		when: IceRepositoryCreated
		send: #sortIcebergRepositories
		to: self.

	Iceberg announcer
		when: IceRepositoryModified
		send: #sortIcebergRepositories
		to: self.

	self sortIcebergTabs.
	self sortIcebergRepositories.
	
]

{ #category : 'iceberg' }
MooseConfiguration class >> sortIcebergRepositories [

	IceRepository registry sort: #isMissing ascending , #name ascending
]

{ #category : 'sorting' }
MooseConfiguration class >> sortIcebergTabs [

	IceTipRepositoriesModel addTag: #Moose priority: -100
]


================================================
FILE: src/Moose-Configuration/MooseVersion.class.st
================================================
"
I am responsible for holding the version of Moose loaded in the image
"
Class {
	#name : 'MooseVersion',
	#superclass : 'Object',
	#instVars : [
		'major',
		'minor',
		'patch',
		'commitHash'
	],
	#classInstVars : [
		'current'
	],
	#category : 'Moose-Configuration',
	#package : 'Moose-Configuration'
}

{ #category : 'accessing' }
MooseVersion class >> current [
	^current ifNil: [ current := self new ]
]

{ #category : 'accessing' }
MooseVersion >> commitHash [

	^ commitHash
]

{ #category : 'accessing' }
MooseVersion >> commitHash: anObject [

	commitHash := anObject
]

{ #category : 'initialization' }
MooseVersion >> initialize [
	super initialize.
	commitHash := '#0000'.
	major := '13'.
	minor := '0'.
	patch := '0'
]

{ #category : 'accessing' }
MooseVersion >> major [

	^ major
]

{ #category : 'accessing' }
MooseVersion >> major: anObject [

	major := anObject
]

{ #category : 'accessing' }
MooseVersion >> minor [

	^ minor
]

{ #category : 'accessing' }
MooseVersion >> minor: anObject [

	minor := anObject
]

{ #category : 'accessing' }
MooseVersion >> patch [

	^ patch
]

{ #category : 'accessing' }
MooseVersion >> patch: anObject [

	patch := anObject
]

{ #category : 'accessing' }
MooseVersion >> versionNumber [
	^{major . minor . patch } joinUsing: '.'
]


================================================
FILE: src/Moose-Configuration/package.st
================================================
Package { #name : 'Moose-Configuration' }
Download .txt
gitextract_8l3g4ytd/

├── .github/
│   └── workflows/
│       ├── test-and-release.yml
│       └── test.yml
├── .gitignore
├── .project
├── .smalltalk.ston
├── .travis/
│   └── github_deploy_key.enc
├── AUTHORS
├── LICENSE
├── README.md
├── abstractionsVisuelles.md
├── documentation/
│   └── Moose-Release.md
├── scenarii.md
├── scripts/
│   └── saveImage.st
└── src/
    ├── .properties
    ├── BaselineOfMoose/
    │   ├── BaselineOfMoose.class.st
    │   └── package.st
    └── Moose-Configuration/
        ├── MooseConfiguration.class.st
        ├── MooseVersion.class.st
        └── package.st
Condensed preview — 19 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (64K chars).
[
  {
    "path": ".github/workflows/test-and-release.yml",
    "chars": 521,
    "preview": "name: Test and update release\n\non:\n  push:\n    branches:\n      - development\n      - v10\n      - v11\n      - v12\n  sched"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 239,
    "preview": "name: Pull-request\n\non:\n  pull_request:\n    types: [assigned, opened, synchronize, reopened]\n\njobs:\n  run:\n    uses: moo"
  },
  {
    "path": ".gitignore",
    "chars": 22,
    "preview": "**/.DS_Store\n.DS_Store"
  },
  {
    "path": ".project",
    "chars": 49,
    "preview": "{\n\t'srcDirectory' : 'src',\n\t'tags' : [ #Moose ]\n}"
  },
  {
    "path": ".smalltalk.ston",
    "chars": 775,
    "preview": "SmalltalkCISpec {\n  #loading : [\n    SCIMetacelloLoadSpec {\n      #baseline : 'Moose',\n      #directory : 'src',\n      #"
  },
  {
    "path": "AUTHORS",
    "chars": 581,
    "preview": "# Contributors to the Moose project include:\n(if your name does not appear or there is a typo in your name, do not hesit"
  },
  {
    "path": "LICENSE",
    "chars": 1073,
    "preview": "MIT License\n\nCopyright (c) 2018 The Moose AUTHORS\n\nPermission is hereby granted, free of charge, to any person obtaining"
  },
  {
    "path": "README.md",
    "chars": 2306,
    "preview": "[![Development](https://github.com/moosetechnology/Moose/actions/workflows/test-and-release.yml/badge.svg)](https://gith"
  },
  {
    "path": "abstractionsVisuelles.md",
    "chars": 148,
    "preview": "\n- noeuds\n- entités\n- aretes\n- liens directionnels ou non\n- labels\n- layout\n- enfants/parents\n- clients/providers\n- high"
  },
  {
    "path": "documentation/Moose-Release.md",
    "chars": 4798,
    "preview": "# Moose Release\n\n## How we manage Moose versions\n\nWe create dedicated branches for each new stable version of Moose (see"
  },
  {
    "path": "scenarii.md",
    "chars": 3050,
    "preview": "\n# Usage scenarios for Moose\n\nThese scenarios can be used as exercises to get familiar with Moose.\n\nIdeally, a scenario:"
  },
  {
    "path": "scripts/saveImage.st",
    "chars": 48,
    "preview": "SmalltalkImage current backupTo: 'beforeTests'.\n"
  },
  {
    "path": "src/.properties",
    "chars": 21,
    "preview": "{\n\t#format : #tonel\n}"
  },
  {
    "path": "src/BaselineOfMoose/BaselineOfMoose.class.st",
    "chars": 1691,
    "preview": "\"\nrce: 22987863\n\"\nClass {\n\t#name : 'BaselineOfMoose',\n\t#superclass : 'BaselineOf',\n\t#category : 'BaselineOfMoose',\n\t#pac"
  },
  {
    "path": "src/BaselineOfMoose/package.st",
    "chars": 38,
    "preview": "Package { #name : 'BaselineOfMoose' }\n"
  },
  {
    "path": "src/Moose-Configuration/MooseConfiguration.class.st",
    "chars": 45269,
    "preview": "Class {\n\t#name : 'MooseConfiguration',\n\t#superclass : 'Object',\n\t#category : 'Moose-Configuration',\n\t#package : 'Moose-C"
  },
  {
    "path": "src/Moose-Configuration/MooseVersion.class.st",
    "chars": 1289,
    "preview": "\"\nI am responsible for holding the version of Moose loaded in the image\n\"\nClass {\n\t#name : 'MooseVersion',\n\t#superclass "
  },
  {
    "path": "src/Moose-Configuration/package.st",
    "chars": 42,
    "preview": "Package { #name : 'Moose-Configuration' }\n"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the moosetechnology/Moose GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 19 files (60.5 KB), approximately 35.5k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!