Index: doc/languages.png =================================================================== diff -u -r03741ddf53d294724a4ed47b6e1a27964bbd6db4 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/next-tutorial.html'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/next-tutorial.txt'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/next-tutorial/languages.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/next-tutorial.html =================================================================== diff -u --- doc/next-tutorial/next-tutorial.html (revision 0) +++ doc/next-tutorial/next-tutorial.html (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,4001 @@ + + + + + +Tutorial for the Next Scripting Language + + + + + +
+
+
+
+
+
Abstract
+

This document provides a tutorial for the Next Scripting +Language NX.

+
+

The Next Scripting Language (NX) is a highly flexible object oriented +scripting language based on Tcl [Ousterhout 1990]. NX is a successor +of XOTcl 1 [Neumann and Zdun 2000a] and was developed based on 10 +years of experience with XOTcl in projects containing several hundred +thousand lines of code. While XOTcl was the first language designed to +provide language support for design patterns, the focus of the Next +Scripting Framework and NX is on combining this with Language +Oriented Programming. In many respects, NX was designed to ease the +learning of the language for novices (by using a more mainstream +terminology, higher orthogonality of the methods, less predefined +methods), to improve maintainability (remove sources of common errors) +and to encourage developers to write better structured programs (to +provide interfaces) especially for large projects, where many +developers are involved.

+

The Next Scripting Language is based on the Next Scripting Framework +(NSF) which was developed based on the notion of language oriented +programming. The Next Scripting Frameworks provides C-level support +for defining and hosting multiple object systems in a single Tcl +interpreter. The name of the Next Scripting Framework is derived from +the universal method combinator "next", which was introduced in XOTcl. +The combinator "next" serves as a single instrument for method +combination with filters, per-object and transitive per-class mixin +classes, per-object methods and multiple inheritance.

+

The definition of NX is fully scripted (e.g. defined in +nx.tcl). The Next Scripting Framework is shipped with three language +definitions, containing NX and XOTcl 2. Most of the existing XOTcl 1 +programs can be used without modification in the Next Scripting +Framework by using XOTcl 2. The Next Scripting Framework requires Tcl +8.5 or newer.

+
+
+
+

1. NX and its Roots

+
+

Object oriented extensions of Tcl have quite a +long history. Two of the most prominent early Tcl based OO languages +were incr Tcl (abbreviated as itcl) and Object Tcl (OTcl +[Wetherall and Lindblad 1995]). While itcl provides a traditional +C++/Java-like object system, OTcl was following the CLOS approach and +supports a dynamic object system, allowing incremental class and +object extensions and re-classing of objects.

+

Extended Object Tcl (abbreviated as XOTcl [Neumann and Zdun 2000a]) +is a successor of OTcl and was the first language providing language +support for design patterns. XOTcl extends OTcl by providing namespace +support, adding assertions, dynamic object aggregations, slots and by +introducing per-object and per-class filters and per-object and +per-class mixins.

+

XOTcl was so far released in more than 30 versions. It is described in +its detail in more than 20 papers and serves as a basis for other +object systems like TclOO [Donal ???]. The scripting language NX and +the Next Scripting Framework [Neumann and Sobernig 2009] extend +the basic ideas of XOTcl by providing support for language-oriented +programming. The the Next Scripting Framework supports multiple +object systems concurrently. Effectively, every object system has +different base classes for creating objects and classes. Therefore, +these object systems can have different interfaces and can +follow different naming conventions for built-in methods. Currently, +the Next Scripting Framework is packaged with three object systems: +NX, XOTcl 2.0, and TclCool (the language introduced by TIP#279).

+
+
+Languages +
+
Figure 1. Language History of the Next Scripting Language
+
+

+

The primary purpose of this document is to introduce NX to beginners. +We expect some prior knowledge of programming languages, and some +knowledge about Tcl. In the following sections we introduce NX by +examples. In later sections we introduce the more advanced concepts of +the language. Conceptually, most of the addressed concepts are very +similar to XOTcl. Concerning the differences between NX and XOTcl, +please refer to the "Migration Guide for the Next Scripting Language".

+
+
+
+

2. Introductory Overview Example: Stack

+
+

A classical programming example is the implementation of a stack, which +is most likely familiar to many readers from many introductory +programming courses. A stack is a last-in first-out data structure +which is manipulated via operations like push (add something to the +stack) and pop remove an entry from the stack. These operations are +called methods in the context of object oriented programming +systems. Primary goals of object orientation are encapsulation and +abstraction. Therefore, we define a common unit (a class) that defines +and encapsulates the behavior of a stack and provides methods to a user +of the data structure that abstract from the actual implementation.

+
+

2.1. Define a Class "Stack"

+

In our first example, we define a class named Stack with the methods +push and pop. When an instance of the stack is created (e.g. a +concrete stack s1) the stack will contain an instance variable named +things, initialized with the an empty list.

+
Listing 2: Class Stack

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+
nx::Class create Stack {
+
+   #
+   # Stack of Things
+   #
+
+   :variable things {}
+
+   :public method push {thing} {
+      set :things [linsert ${:things} 0 $thing]
+      return $thing
+   }
+
+   :public method pop {} {
+      set top [lindex ${:things} 0]
+      set :things [lrange ${:things} 1 end]
+      return $top
+   }
+}
+

Typically, classes are defined in NX via nx::Class create, followed +by the name of the new class (here: Stack). The definition of the +stack placed between curly braces and contains here just the method +definitions. Methods of the class are defined via :method followed +by the name of the method, an argument list and the body of the +method, consisting of Tcl and NX statements.

+

When an instance of Stack is created, it will contain an instance +variable named things. If several Stack instances are created, +each of the instances will have their own (same-named but different) +instance variable. The instance variable things is used in our +example as a list for the internal representation of the stack. We +define in a next step the methods to access and modify this list +structure. A user of the stack using the provided methods does not +have to have any knowledge about the name or the structure of the +internal representation (the instance variable things).

+

The method push receives an argument thing which should be placed +on the stack. Note that we do not have to specify the type of the +element on the stack, so we can push strings as well as numbers or +other kind of things. When an element is pushed, we add this element +as the first element to the list things. We insert the element using +the Tcl command linsert which receives the list as first element, +the position where the element should be added as second and the new +element as third argument. To access the value of the instance +variable we use Tcl’s dollar operator followed by the name. The +names of instance variables are preceded with a colon :. Since the +name contains a non-plain character, Tcl requires us to put braces +around the name. The command linsert and its arguments are placed +between square brackets. This means that the function linsert is called and +a new list is returned, where the new element is inserted at the first +position (index 0) in the list things. The result of the linsert +function is assigned again to the instance variable things, which is +updated this way. Finally the method push returns the pushed thing +using the return statement.

+

The method pop returns the most recently stacked element and removes +it from the stack. Therefore, it takes the first element from the list +(using the Tcl command lindex), assigns it to the method-scoped +variable top, removes the element from the instance variable +things (by using the Tcl command lrange) and returns the value +popped element top.

+

This finishes our first implementation of the stack, more enhanced +versions will follow. Note that the methods push and pop are +defined as public; this means that these methods can be +used from all other objects in the system. Therefore, these methods +provide an interface to the stack implementation.

+
Listing 3: Using the Stack

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+
#!/bin/env tclsh
+package require nx
+
+nx::Class create Stack {
+
+   #
+   # Stack of Things
+   #
+   ....
+}
+
+Stack create s1
+s1 push a
+s1 push b
+s1 push c
+puts [s1 pop]
+puts [s1 pop]
+s1 destroy
+

Now we want to use the stack. The code snippet in Listing 3 shows how to use the class Stack in a script. +Since NX is based on Tcl, the script will be called with the Tcl shell +tclsh. In the Tcl shell we have to require package nx to use the +Next Scripting Framework and NX. The next lines contain the definition +of the stack as presented before. Of course, it is as well possible to +make the definition of the stack an own package, such we could simple +say package require stack, or to save the definition of a stack +simply in a file and load it via source.

+

In line 12 we create an instance of the stack, namely the stack object +s1. The object s1 is an instance of Stack and has therefore +access to its methods. The methods like push or pop can be invoked +via a command starting with the object name followed by the +method name. In lines 13-15 we push on the stack the values a, then +b, and c. In line 16 we output the result of the pop method +using the Tcl command puts. We will see on standard output the +value+c+ (the last stacked item). The output of the line 17 is the +value b (the previously stacked item). Finally, in line 18 we +destroy the object. This is not necessary here, but shows the life +cycle of an object. In some respects, destroy is the counterpart of +create from line 12.

+
+
+object-class-appclass.png +
+
Figure 4. Class and Object Diagram
+
+

+

Figure 4 shows the actual class and +object structure of the first Stack example. Note that the common +root class is nx::Object that contains methods for all objects. +Since classes are as well objects in NX, nx::Class is a +specialization of nx::Object. nx::Class provides methods for +creating objects, such as the method create which is used to create +objects (and classes as well).

+
+
+

2.2. Define an Object Named "stack"

+

The definition of the stack in Listing 2 +follows the traditional object oriented approach, found in +practically every object oriented programming language: Define a class +with some methods, create instances from this class, and use the +methods defined in the class in the instances of the class.

+

In our next example, we introduce generic objects and object +specific methods. With NX, we can define generic objects, which are +instances of the most generic class nx::Object (sometimes called +"common root class"). nx::Object is predefined and contains a +minimal set of methods applicable to all NX objects.

+

In our second example, we will define a generic object named stack +and provide methods for this object. The methods defined in our first +example were methods provided by a class for objects. Now we defined +object specific methods, which are methods applicable only to the +object for which they are defined.

+
Listing 5: Object stack

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+
nx::Object create stack {
+
+   :variable things {}
+
+   :public method push {thing} {
+      set :things [linsert ${:things} 0 $thing]
+      return $thing
+   }
+
+   :public method pop {} {
+      set top [lindex ${:things} 0]
+      set :things [lrange ${:things} 1 end]
+      return $top
+   }
+}
+

The example in Listing 5 defines the +object stack in a very similar way as the class Stack. But the +following points are different.

+
    +
  • +

    +First, we use nx::Object instead of nx::Class to denote + that we want to create a generic object, not a class. +

    +
  • +
  • +

    +As in the example above, we use :variable to define the + instance variable things for this object (the object stack). +

    +
  • +
+

The definition for the methods push and pop are the same as +before, but this times these methods are object-specific (in general, +all methods defined for an object are object-specific). In order to use +the stack, we can use directly the object stack in the same way as +we have used the object s1 in Listing 3 +the class diagram for this the object stack.

+
+
+object-stack.png +
+
Figure 6. Object stack
+
+

+

A reader might wonder when to use a class Stack or rather an object +stack. A big difference is certainly that one can define easily +multiple instances of a class, while the object is actually a +singleton. The concept of the object stack is similar to a module, +providing a certain functionality via a common interface, without +providing the functionality to create multiple instances. The reuse of +methods provided by the class to objects is as well a difference. If +the methods of the class are updated, all instances of the class will +immediately get the modified behavior. However, this does not mean that +the reuse for the methods of stack is not possible. NX allows for +example to copy objects (similar to prototype based languages) or to +reuse methods via e.g. aliases (more about this later).

+

Note that we use capitalized names for classes and lowercase names for +instances. This is not required and a pure convention making it easier +to understand scripts without much analysis.

+
+
+

2.3. Implementing Features using Mixin Classes

+

So far, the definition of the stack methods was pretty minimal. +Suppose, we want to define "safe stacks" that protect e.g. against +stack under-runs (a stack under-run happens, when more pop than +push operations are issued on a stack). Safety checking can be +implemented mostly independent from the implementation details of the +stack (usage of internal data structures). There are as well different +ways of checking the safety. Therefore we say that safety checking is +orthogonal to the stack core implementation.

+

With NX we can define stack-safety as a separate class using methods +with the same names as the implementations before, and "mix" this +behavior into classes or objects. The implementation of Safety in +stack under-runs and to issue error messages, when this happens.

+
Listing 7: Class Safety

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+
nx::Class create Safety {
+
+  #
+  # Implement stack safety by defining an additional
+  # instance variable named "count" that keeps track of
+  # the number of stacked elements. The methods of
+  # this class have the same names and argument lists
+  # as the methods of Stack; these methods "shadow"
+  # the methods of class Stack.
+  #
+
+  :variable count 0
+
+  :public method push {thing} {
+    incr :count
+    next
+  }
+
+  :public method pop {} {
+    if {${:count} == 0} then { error "Stack empty!" }
+    incr :count -1
+    next
+  }
+}
+

Note that all the methods of the class Safety end with next. +This command is a primitive command of NX, which calls the +same-named method with the same argument list as the current +invocation.

+

Assume we save the definition of the class Stack in a file named +Stack.tcl and the definition of the class Safety in a file named +Safety.tcl in the current directory. When we load the classes +Stack and Safety into the same script (see the terminal dialog in +e.g. a certain stack s2 as a safe stack, while all other stacks +(such as s1) might be still "unsafe". This can be achieved via the +option -mixin at the object creation time (see line 9 in +option -mixin mixes the class Safety into the new instance s2.

+
Listing 8: Using the Class Safety

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+
% package require nx
+2.0
+% source Stack.tcl
+::Stack
+% source Safety.tcl
+::Safety
+% Stack create s1
+::s1
+% Stack create s2 -mixin Safety
+::s2
+% s2 push a
+a
+% s2 pop
+a
+% s2 pop
+Stack empty!
+
+% s1 info precedence
+::Stack ::nx::Object
+
+% s2 info precedence
+::Safety ::Stack ::nx::Object
+

When the method push of s2 is called, first the method of the +mixin class Safety will be invoked that increments the counter and +continues with next to call the shadowed method, here the method +push of the Stack implementation that actually pushes the item. +The same happens, when s2 pop is invoked, first the method of +Safety is called, then the method of the Stack. When the stack is +empty (the value of count reaches 0), and pop is invoked, the +mixin class Safety generates an error message (raises an exception), +and does not invoke the method of the Stack.

+

The last two commands in Listing 8 use introspection to query for the objects +s1 and s2 in which order the involved classes are processed. This +order is called the precedence order and is obtained via info +precedence. We see that the mixin class Safety is only in use for +s2, and takes there precedence over Stack. The common root class +nx::Object is for both s1 and s2 the base class.

+
+
+per-object-mixin.png +
+
Figure 9. Per-object Mixin
+
+

+

Note that the class Safety is only mixed into a single object (here +s2), therefore we refer to this case as a per-object mixin. +Figure 9 shows the class +diagram, where the class Safety is used as a per-object mixin for +s2.

+

The class Safety can be used as well in other ways, such as e.g. for +defining classes for safe stacks <<xmp-class-safestack,

+
Listing 10: Class SafeStack

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+
#
+# Create a safe stack class by using Stack and mixin
+# Safety
+#
+nx::Class create SafeStack -superclass Stack -mixin Safety
+
+SafeStack create s3
+

The difference to the case with the per-object mixin is that now, +Safety is mixed into the definition of SafeStack. Therefore, all +instances of the class SafeStack (here the instance s3) will be +using the safety definitions. +for this definition.

+
+
+per-class-mixin.png +
+
Figure 11. Per-class Mixin
+
+

+

Note that we could use Safety as well as a per-class mixin on +Stack. In this case, all stacks would be safe stacks and we could +not provide a selective feature selection (which might be perfectly +fine).

+
+
+

2.4. Define Different Kinds of Stacks

+

The definition of Stack is generic and allows all kind of elements +to be stacked. Suppose, we want to use the generic stack definition, +but a certain stack (say, stack s4) should be a stack for integers +only. This behavior can be achieved by the same means as introduced +already in Listing 5, namely +object-specific methods.

+
Listing 12: Object Integer Stack

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+
Stack create s4 {
+
+  #
+  # Create a stack with a object-specific method
+  # to check the type of entries
+  #
+
+  :public method push {thing:integer} {
+    next
+  }
+}
+

The program snippet in Listing 12 defines an instance s4 of the class +Stack and provides an object specific method for push to implement +an integer stack. The method pull is the same for the integer stack +as for all other stacks, so it will be reused as usual from the class +Stack. The object-specific method push of s4 has a value +constraint in its argument list (thing:integer) that makes sure, +that only integers can be stacked. In case the argument is not an +integer, an exception will be raised. Of course, one could perform the +value constraint checking as well in the body of the method proc by +accepting an generic argument and by performing the test for the value +in the body of the method. In the case, the passed value is an +integer, the push method of Listing 12 calls next, and therefore calls the +shadowed generic definition of push as provided by Stack.

+
Listing 13: Class IntegerStack

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+
nx::Class create IntegerStack -superclass Stack {
+
+  #
+  # Create a Stack accepting only integers
+  #
+
+  :public method push {thing:integer} {
+    next
+  }
+}
+

An alternative approach is shown in +Listing 13, where the class +IntegerStack is defined, using the same method definition +as s4, this time on the class level.

+
+
+

2.5. Define Class Specific Methods

+

In our previous examples we defined methods provided by classes +(applicable for their instances) and object-specific methods (methods +defined on objects, which are only applicable for these objects). In +this section, we introduce methods that are defined on classes. These +method are only applicable for the class objects. Such methods are +sometimes called class methods or static methods.

+

In NX classes are objects with certain properties. The classes are +objects providing methods for instance and which are managing the +life-cycles of the objects (we will come to this point in later +sections in more detail). Since classes are objects, it is also +possible to define object-specific methods for the class +objects. However, since :method applied on classes defines methods +for instances, we have to use the method-modifier class to denote +methods to be applied on the class itself. Note that instances do not +inherit class methods. The methods defined on the class object are +actually exactly same as the object-specific methods shown in the +examples above.

+
Listing 14: Class Stack2

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+
nx::Class create Stack2 {
+
+   :public class method available_stacks {} {
+      return [llength [:info instances]]
+   }
+
+   :variable things {}
+
+   :public method push {thing} {
+      set :things [linsert ${:things} 0 $thing]
+      return $thing
+   }
+
+   :public method pop {} {
+      set top [lindex ${:things} 0]
+      set :things [lrange ${:things} 1 end]
+      return $top
+   }
+}
+
+Stack2 create s1
+Stack2 create s2
+
+puts [Stack2 available_stacks]
+

The class Stack2 in Listing 14 consists of the +earlier definition of the class Stack and is extended by the +class-specific method available_stacks, which returns the +current number of instances of the stack. The final command puts +(line 26) prints 2 to the console.

+
+
+stack2.png +
+
Figure 15. Stack2
+
+

+

The class diagram in Figure 15 shows the +diagrammatic representation of the class object-specific method +available_stacks. Since every class is a specialization of the +common root class nx::Object, the common root class is often omitted +from the class diagrams, so it was omitted here as well in the diagram.

+
+
+
+
+

3. Basic Language Features of NX

+
+
+

3.1. Variables and Properties

+

In general, NX does not need variable declarations. It allows to +create or modify variables on the fly by using for example the Tcl +commands set and unset. Depending on the variable name (or more +precisely, depending on the variable name’s prefix consisting of +colons :) a variable is either local to a method, or it is an +instance variable, or a global variable. The rules are:

+
    +
  • +

    +A variable without any colon prefix refers typically to a method + scoped variable. Such a variable is created during the invocation + of the method, and it is deleted, when the method ends. In the + example below, the variable a is method scoped. +

    +
  • +
  • +

    +A variable with a single colon prefix refers to an instance + variable. An instance variable is part of the object; when the + object is destroyed, its instance variables are deleted as well. In the + example below, the variable b is an instance variable. +

    +
  • +
  • +

    +A variable with two leading colons refers to a global variable. The + lifespan of a globale variable ends when the variable is explicitly + unset or the script terminates. Variables, which are placed in Tcl + namespaces, are also global variables. In the example below, the + variable c is a global variable. +

    +
  • +
+
Listing 16: Scopes of Variables

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+
nx::Class create Foo {
+
+  :method foo args {...}
+    # "a" is a method scoped variable
+    set a 1
+    # "b" is an Instance variable
+    set :b 2
+    # "c" is a global variable/namespaced variable
+    set ::c 3
+  }
+}
+

Listing 16 shows a method foo +of some class Foo referring to differently scoped variables.

+
+

3.1.1. Properties: Instance Variables with Accessors

+

Generally, there is no need to define or declare instance variables in +NX. In some cases, however, a definition of instance variables is +useful. NX allows us to define instances variables as properties on +classes, which are inherited to subclasses. Furthermore, the +definition of properties can be used the check permissible values for +instance variables or to initialize instance variables from default +values during object initialization.

+
+
+

A property is a definition of an attribute (an instance variable) +with accessors. The property definition might as well carry +value-constraints and a default value.

+
+
+
+person-student.png +
+
Figure 17. Classes Person and Student
+
+

+

The class diagram above defines the classes Person and +Student. For both classes, accessor methods are specified with the +same names as the attributes. (Note that we show the accessor methods +only in this example, we omit it in later ones). By defining +properties we can use the name of the attribute as method name to +access the attributes. The listing below shows an implementation of this +conceptual model in NX.

+
Listing 18: Properties

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+
#
+# Define a class Person with properties "name"
+# and "birthday"
+#
+nx::Class create Person {
+  :property name:required
+  :property birthday
+}
+
+#
+# Define a class Student as specialization of Person
+# with additional properties
+#
+nx::Class create Student -superclass Person {
+  :property matnr:required
+  :property {oncampus:boolean true}
+}
+
+#
+# Create instances using object parameters
+# for the initialization
+#
+Person create p1 -name Bob
+Student create s1 -name Susan -matnr 4711
+
+# Access property value via accessor method
+puts "The name of s1 is [s1 name]"
+

By defining name and birthday as properties of Person, NX +provides automatically accessor methods with the same name. The +accessors methods (or shortly called "accessors") provide read and +write access to the underlying instance variables. In our example, the +class Person has two methods implied by the property definition: +the method name and the method birthday.

+

The class Student is defined as a specialization of Person with +two additional properties: matnr and oncampus. The property +matnr is required (it has to be provided, when an instance of this +class is created), and the property oncampus is boolean, and is per +default set to true. Note that the class Student inherits the +properties of Person. So, Student has four properties in total.

+

The property definitions are also used to providing object +parameters. These are typically non-positional parameters, which are +used during object creation to supply values to the instance +variables. In our listing, we create an instance of Person using the +object parameter name and provide the value of Bob to the instance +variable name. Similarly, we create an instance of Student using +the two object parameters name and matnr. Finally, we use the +accessor method name to obtain the value of the instance variable +name of object s1.

+
+
+

3.1.2. Instance Variables without Accessors

+

To define instances variables with default values without accessors +the predefined method variable can be used. Such instance variables +are often used for e.g. keeping the internal state of an object. The +usage of variable is in many respects similar to property. One +difference is, that property uses the same syntax as for method +parameters, whereas variable receives the default value as a separate +argument (similar to the variable command in Tcl). The introductory +Stack example in Listing 2 uses already +the method variable.

+
Listing 19: Declaring Variables

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+
nx::Class create Base {
+  :variable x 1
+  # ...
+}
+
+nx::Class create Derived -superclass Base {
+  :variable y 2
+  # ...
+}
+
+# Create instance of the class Derived
+Derived create d1
+
+# Object d1 has instance variables
+# x == 1 and y == 2
+

Note that the variable definitions are inherited in the same way as +properties. The example in Listing 19 shows a +class Derived that inherits from Base. When an instance d1 is +created, it will contain the two instance variables x and y.

+
Listing 20: Setting Variables in the Constructor

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+
nx::Class create Base2 {
+ # ...
+ :method init {} {
+   set :x 1
+   # ....
+ }
+}
+
+nx::Class create Derived2 -superclass Base2 {
+ # ...
+ :method init {} {
+   set :y 2
+   next
+   # ....
+ }
+}
+
+# Create instance of the class Derived2
+Derived2 create d2
+

In many other object oriented languages, the instance variables are +initialized solely by the constructor (similar to class Derived2 in +Listing 20). This approach is certainly +also possible in NX. Note that the approach using constructors +requires an explicit method chaining between the constructors and is +less declarative than the approach in NX using property and variable.

+
+
+
+

3.2. Method Definitions

+

The basic building blocks of an object oriented program are object and +classes, which contain named pieces of code, the methods.

+
+
+

Methods are subroutines (pieces of code) associated with objects +and/or classes. A method has a name, receives optionally arguments +during invocation and returns a value.

+
+

Plain Tcl provides subroutines, which are not associated with objects +or classes. Tcl distinguishes between +proc+s (scripted subroutines) +and commands (system-languages implemented subroutines).

+

Methods might have different scopes, defining, on which kind of +objects these methods are applicable to. These are described in more +detail later on. For the time being, we deal here with methods defined +on classes, which are applicable for the instance of these classes.

+
+

3.2.1. Scripted Methods

+

Since NX is a scripting language, most methods are most likely +scripted methods, in which the method body contains Tcl code.

+
Listing 21: Scripted method

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+
# Define a class
+nx::Class create Dog {
+
+  # Define a scripted method for the class
+  :public method bark {} {
+    puts "[self] Bark, bark, bark."
+  }
+}
+
+# Create an instance of the class
+Dog create fido
+
+# The following line prints "::fido Bark, bark, bark."
+fido bark
+

In the example above we create a class Dog with a scripted method +named bark. The method body defines the code, which is executed when +the method is invoked. In this example, the method bar prints out a +line on the terminal starting with the object name (this is determined +by the built in command self) followed by "Bark, bark, bark.". This +method is defined on a class and applicable to instances of the class +(here the instance fido).

+
+
+

3.2.2. C-implemented Methods

+

Not all of the methods usable in NX are scripted methods; many +predefined methods are defined in the underlying system language, +which is typically C. For example, in Listing 21 we +used the method create to create the class Dog and to create the +dog instance fido. These methods are implemented in C in the next +scripting framework.

+

C-implemented methods are not only provided by the underlying +framework but might be as well defined by application developers. This +is an advanced topic, not covered here. However, application developer +might reuse some generic C code to define their own C-implemented +methods. Such methods are for example accessors, forwarders and +aliases.

+
+
+

An accessor method is in most cases a C-implemented method that +accesses instance variables of an object. A call to an accessor +without arguments uses the accessor as a getter, obtaining the actual +value of the associated variable. A call to an accessor with an +argument uses it as a setter, setting the value of the associated +variable.

+
+

Accessors have already been discussed in the section about properties, +in which the accessors were created automatically.

+
Listing 22: Accessor Methods

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+
nx::Class create Dog {
+ :public method bark {} { puts "[self] Bark, bark, bark." }
+ :method init {} { Tail create [self]::tail}
+}
+
+nx::Class create Tail {
+  :property {length:double 5}
+  :public method wag {} {return Joy}
+}
+
+# Create an instance of the class
+Dog create fido
+
+# Use the accessor "length" as a getter, to obtain the value
+# of a property. The following call returns the length of the
+# tail of fido
+fido::tail length
+
+# Use the accessor "length" as a setter, to alter the value
+# of a property. The following call changes the length of
+# the tail of fido
+fido::tail length 10
+
+# Proving an invalid values will raise an error
+fido::tail length "Hello"
+

Listing 22 shows an extended example, where every dog +has a tail. The object tail is created as a subobject of the dog in +the constructor init. The subobject can be accessed by providing the +full name of the subobject fido::tail. The method length is an +C-implemented accessor, that enforces the value constraint (here a +floating point number, since length uses the value constraint +double).

+
Listing 23: Forwarder Methods

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+
nx::Class create Dog {
+  :public method bark {} { puts "[self] Bark, bark, bark." }
+  :method init {} {
+    Tail create [self]::tail
+    :public forward wag [self]::tail wag
+  }
+}
+
+nx::Class create Tail {
+  :property {length 5}
+  :public method wag {} {return Joy}
+}
+
+# Create an instance of the class
+Dog create fido
+
+# The invocation of "fido wag" is delegated to "fido::tail wag".
+# Therefore, the following method returns "Joy".
+fido wag
+

Listing 23 again extends the example by adding a +forwarder named wag to the object (e.g. fido). The forwarder +redirects all calls of the form fido wag with arbitrary arguments to +the subobject fido::tail.

+
+
+

A forwarder method is a +C-implemented method that redirects an invocation for a certain method +to either a method of another object or to some other method of the +same object. Forwarding an invocation of a method to some other +object is a means of delegation.

+
+

The functionality of the forwarder can just as well be implemented as +a scripted method, but for the most common cases, the forward +implementation is more efficient, and the forward method expresses +the intention of the developer.

+

The method forwarder has several options to change e.g. the order of +the arguments, or to substitute certain patterns in the argument list +etc. This will be described in later sections.

+
+
+

3.2.3. Method-Aliases

+
+
+

An alias method is a means to register either an existing method, +or a Tcl proc, or a Tcl command as a method with the provided +name on a class or object.

+
+

In some way, the method alias is a restricted form of a forwarder, +though it does not support delegation to different objects or argument +reordering. The advantage of the method alias compared to a forwarder +is that it has close to zero overhead, especially for aliasing +c-implemented methods.

+
Listing 24: Method-Alias

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+
nx::Class create Dog {
+  :public method bark {} { puts "[self] Bark, bark, bark." }
+
+  # Define a public alias for the method "bark"
+  :public alias warn [:info method handle bark]
+  # ...
+}
+
+# Create an instance of the class
+Dog create fido
+
+# The following line prints "::fido Bark, bark, bark."
+fido warn
+

Listing 24 extends the last example by defining an +alias for the method "bark". The example only shows the bare +mechanism. In general, method aliases are very powerful means for +reusing pre-existing functionality. The full object system of NX and +XOTcl2 is built from aliases, reusing functionality provided by the +next scripting framework under different names. Method aliases +are as well a means for implementing traits in NX.

+
+
+
+

3.3. Method Protection

+

All kinds of methods might have different kind of protections in NX. +The call-protection defines from which calling context methods might +be called. The Next Scripting Framework supports as well redefinition +protection for methods.

+

NX distinguished between public, protected and private methods, +where the default call-protection is "protected".

+
+
+

A public method can be called from every context. A protected +method can only be invoked from the same object. A private method +can only be invoked from methods defined on the same entity +(defined on the same class or on the same object) via the invocation +with the local flag (i.e. ": -local").

+
+

All kind of method protections are applicable for all kind of methods, +either scripted or C-implemented.

+

The distinction between public and protected leads to interfaces for +classes and objects. Public methods are intended for consumers of +these entities. Public methods define the intended ways of providing +methods for external usages (usages, from other objects or +classes). Protected methods are intended for the implementor of the +class or subclasses and not for public usage. The distinction between +protected and public reduces the coupling between consumers and the +implementation, and offers more flexibility to the developer.

+
Listing 25: Protected Methods

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+
nx::Class create Foo {
+
+  # Define a public method
+  :public method foo {} {
+    # ....
+    return [:helper]
+  }
+
+  # Define a protected method
+  :method helper {} {
+     return 1
+  }
+}
+
+# Create an instance of the class:
+Foo create f1
+
+# The invocation of the public method "foo" returns 1
+f1 foo
+
+# The invocation of the protected method "helper" raises an error:
+f1 helper
+

The example above uses :protected method helper …. We could have +used here as well :method helper …, since the default method +call-protection is already protected.

+

The method call-protection of private goes one step further and +helps to hide implementation details also for implementors of +subclasses. Private methods are a means for avoiding unanticipated name +clashes. Consider the following example:

+
Listing 26: Private Methods

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+
nx::Class create Base {
+  :private method helper {a b} {expr {$a + $b}}
+  :public method foo     {a b} {: -local helper $a $b}
+}
+
+nx::Class create Sub -superclass Base {
+  :public method bar     {a b} {: -local helper $a $b}
+  :private method helper {a b} {expr {$a * $b}}
+  :create s1
+}
+
+s1 foo 3 4     ;# returns 7
+s1 bar 3 4     ;# returns 12
+s1 helper 3 4  ;# raises error: unable to dispatch method helper
+

The base class implements a public method foo using the helper +method named helper. The derived class implements a as well a public +method bar, which is also using a helper method named helper. When +an instance s1 is created from the derived class, the method foo +is invoked which uses in turn the private method of the base +class. Therefore, the invocation s1 foo 3 4 returns its sum. If +the local flag had not beed used in helper, s1 would +have tried to call the helper of Sub, which would be incorrect. For +all other purposes, the private methods are "invisible" in all +situations, e.g., when mixins are used, or within the next-path, etc.

+

By using the local flag for the invocation it is possible to call +only the local definition of the method. If we would call the method +as usual, the resolution order would be the same as usual, starting +with filters, mixins, per-object methods and the full intrinsic class +hierarchy.

+
+
+

3.4. Applicability of Methods

+

As defined above, a method is a subroutine defined on an object or +class. This object (or class) contains the method. If the object (or +class) is deleted, the contained methods will be deleted as well.

+
+

3.4.1. Instance Methods

+
+
+

Typically, methods are defined on a class, and the methods defined on the +class are applicable to the instances (direct or indirect) of this +class. These methods are called instance methods.

+
+

In the following example method, foo is an instance method defined +on class C.

+
Listing 27: Methods applicable for instances

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+
nx::Class create C {
+  :public method foo {} {return 1}
+  :create c1
+}
+
+# Method "foo" is defined on class "C"
+# and applicable to the instances of "C"
+c1 foo
+

There are many programming languages that only allow these types of methods. +However, NX also allows methods to be defined on objects.

+
+
+

3.4.2. Object Methods

+
+
+

Methods defined on objects are per-object methods. Per-object +methods are only applicable on the object, on which they are defined. +Per-object methods cannot be inherited from other objects.

+
+

The following example defines an object specific method bar on the +instance c1 of class C, and as well as the object specific method +baz defined on the object o1. An object-specific method is defined +simply by defining the method on an object.

+

Note that we can define a per-object method that shadows (redefines) +for this object an intrinsic instance method.

+
Listing 28: Per-object Method

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+
nx::Class create C {
+  :public method foo {} {return 1}
+  :create c1 {
+     :public method foo {} {return 2}
+     :public method bar {} {return 3}
+  }
+}
+
+# Method "bar" is an object specific method of "c1"
+c1 bar
+
+# object-specific method "foo" returns 2
+c1 foo
+
+# Method "baz" is an object specific method of "o1"
+nx::Object create o1 {
+  :public method baz {} {return 4}
+}
+o1 baz
+
+
+

3.4.3. Class Methods

+
+
+

A class method is a method defined on a class, which is only +applicable to the class object itself. The class method is a +per-object method of the class object.

+
+

In NX, all classes are objects. Classes are in NX special kind of +objects that have e.g. the ability to create instances and to provide +methods for the instances. Classes manage their instances. The general +method set for classes is defined on the meta-classes (more about +this later).

+

The following example defines a public class method bar on class +C. The class method is specified by using the modifier class in +front of method in the method definition command.

+
Listing 29: Class Methods

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+
nx::Class create C {
+  #
+  # Define a class method "bar" and an instance
+  # method "foo"
+  #
+  :public class method bar {} {return 2}
+  :public method foo {} {return 1}
+
+  #
+  # Create an instance of the current class
+  #
+  :create c1
+}
+
+# Method "bar" is a class method of class "C"
+# therefore applicable on the class object "C"
+C bar
+
+# Method "foo" is an instance method of "C"
+# therefore applicable on instance "c1"
+c1 foo
+
+# When trying to invoke the class method on the
+# instance, an error will be raised.
+c1 bar
+

In some other object oriented programming languages, class methods +are called "static methods".

+
+
+
+

3.5. Ensemble Methods

+

NX provides "ensemble methods" as a means to structure the method name +space and to group related methods. Ensemble methods are similar in +concept to Tcl’s ensemble commands.

+
+
+

An ensemble method is a form of a hierarchical method consisting of +a container method and sub-methods. The first argument of the +container method is interpreted as a selector (the sub-method). Every +sub-method can be an container method as well.

+
+

Ensemble methods provide a means to group related commands together, +and they are extensible in various ways. It is possible to add +sub-methods at any time to existing ensembles. Furthermore, it is +possible to extend ensemble methods via mixin classes.

+

The following example defines an ensemble method for string. An +ensemble method is defined when the provide method name contains a +space.

+
Listing 30: Ensemble Method

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+
nx::Class create C {
+
+    # Define an ensemble method "string" with sub-methods
+    # "length", "tolower" and "info"
+
+    :public method "string length"  {x} {....}
+    :public method "string tolower" {x} {...}
+    :public method "string info" {x} {...}
+    ...
+    :create c1
+}
+
+# Invoke the ensemble method
+c1 string length "hello world"
+
+
+

3.6. Method Resolution

+

When a method is invoked, the applicable method is searched in the +following order:

+Per-object Mixins -> Per-class Mixins -> Object -> Intrinsic Class Hierarchy +

In the case, no mixins are involved, first the object is searched for +a per-object method with the given name, and then the class hierarchy +of the object. The method can be defined multiple times on the search +path, so some of these method definitions might be shadowed by the +more specific definitions.

+
Listing 31: Method Resolution with Intrinsic Classes

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
nx::Class create C {
+  :public method foo {} { return "C foo: [next]"}
+}
+
+nx::Class create D -superclass C {
+
+  :public method foo {} { return "D foo: [next]"}
+
+   :create d1 {
+     :public method foo {} { return "d1 foo: [next]"}
+   }
+}
+
+# Invoke the method foo
+d1 foo
+# result: "d1 foo: D foo: C foo: "
+
+# Query the precedence order from NX via introspection
+d1 info precedence
+# result: "::D ::C ::nx::Object"
+

Consider the example in +foo is invoked on object d1, the per-object method has the highest +precedence and is therefore invoked. The per-object methods shadows +the same-named methods in the class hierarchy, namely the method foo +of class D and the method foo of class C. The shadowed methods +can be still invoked, either via the primitive next or via method +handles (we used already method handles in the section about method +aliases). In the example above, next calls the shadowed method and +add their results to the results of every method. So, the final result +contains parts from d1, D and C. Note, that the topmost next +in method foo of class C shadows no method foo and simply +returns empty (and not an error message).

+

The introspection method info precedence provides information about +the order, in which classes processed during method resolution.

+
Listing 32: Method Resolution with Mixin Classes

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+
nx::Class create M1 {
+  :public method foo {} { return "M1 foo: [next]"}
+}
+nx::Class create M2 {
+  :public method foo {} { return "M2 foo: [next]"}
+}
+
+#
+# "d1" is created based on the definitions of the last example
+#
+# Add the methods from "M1" as per-object mixin to "d1"
+d1 mixin M1
+
+#
+# Add the methods from "M2" as per-class mixin to class "C"
+C mixin M2
+
+# Invoke the method foo
+d1 foo
+# result: "M1 foo: M2 foo: d1 foo: D foo: C foo: "
+
+# Query the precedence order from NX via introspection
+d1 info precedence
+# result: "::M1 ::M2 ::D ::C ::nx::Object"
+

an extension of the previous example. We define here two additional +classes M1 and M2 which are used as per-object and per-class +mixins. Both classes define the method foo, these methods shadow +the definitions of the intrinsic class hierarchy. Therefore an +invocation of foo on object d1 causes first an invocation of +method in the per-object mixin.

+
Listing 33: Method Invocation Flags

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+
#
+# "d1" is created based on the definitions of the last two examples,
+# the mixins "M1" and "M2" are registered.
+#
+# Define a public per-object method "bar", which calls the method
+# "foo" which various invocation options:
+#
+d1 public method bar {} {
+   puts [:foo]
+   puts [: -local foo]
+   puts [: -intrinsic foo]
+   puts [: -system foo]
+}
+
+# Invoke the method "bar"
+d1 bar
+

In the first line of the body of method bar, the method foo is +called as usual with an implicit receiver, which defaults to the +current object (therefore, the call is equivalent to d1 foo). The +next three calls show how to provide flags that influence the method +resolution. The flags can be provided between the colon and the method +name. These flags are used rather seldomly but can be helpful in some +situations.

+

The invocation flag -local means that the method has to be resolved +from the same place, where the current method is defined. Since the +current method is defined as a per-object method, foo is resolved as +a per-object method. The effect is that the mixin definitions are +ignored. The invocation flag -local was already introduced int the +section about method protection, where it was used to call private +methods.

+

The invocation flag -intrinsic means that the method has to be resolved +from the intrinsic definitions, meaning simply without mixins. The +effect is here the same as with the invocation flag -local.

+

The invocation flag -system means that the method has to be resolved +from basic - typically predefined - classes of the object system. This +can be useful, when script overloads system methods, but still want to +call the shadowed methods from the base classes. In our case, we have +no definitions of foo on the base clases, therefore an error message +is returned.

+

+
+
+
   M1 foo: M2 foo: d1 foo: D foo: C foo:
+   d1 foo: D foo: C foo:
+   d1 foo: D foo: C foo:
+   ::d1: unable to dispatch method 'foo'
+
+
+
+

3.7. Parameters

+

NX provides a generalized mechanism for passing values to either +methods (we refer to these as method parameters) or to objects +(these are called object parameters). Both kind of parameters +might have different features, such as:

+
    +
  • +

    +Positional and non-positional parameters +

    +
  • +
  • +

    +Required and non-required parameters +

    +
  • +
  • +

    +Default values for parameters +

    +
  • +
  • +

    +Value-checking for parameters +

    +
  • +
  • +

    +Multiplicity of parameters +

    +
  • +
+

TODO: complete list above and provide a short summary of the section

+

Before we discuss method and object parameters in more detail, we +describe the parameter features in the subsequent sections based on +method parameters.

+
+

3.7.1. Positional and Non-Positional Parameters

+

If the position of a parameter in the list of formal arguments +(e.g. passed to a function) is significant for its meaning, this is a +positional parameter. If the meaning of the parameter is independent +of its position, this is a non-positional parameter. When we call a +method with positional parameters, the meaning of the parameters (the +association with the argument in the argument list of the method) is +determined by its position. When we call a method with non-positional +parameters, their meaning is determined via a name passed with the +argument during invocation.

+
Listing 34: Positional and Non-Positional Method Parameters

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+
nx::Object create o1 {
+
+  #
+  # Method foo has positional parameters:
+  #
+  :public method foo {x y} {
+    puts "x=$x y=$y"
+  }
+
+  #
+  # Method bar has non-positional parameters:
+  #
+  :public method bar {-x -y} {
+    puts "x=$x y=$y"
+  }
+
+  #
+  # Method baz has non-positional and
+  # positional parameters:
+  #
+  :public method baz {-x -y a} {
+    puts "x? [info exists x] y? [info exists y] a=$a"
+  }
+}
+
+# invoke foo (positional parameters)
+o1 foo 1 2
+
+# invoke bar (non-positional parameters)
+o1 bar -y 3 -x 1
+o1 bar -x 1 -y 3
+
+# invoke baz (positional and non-positional parameters)
+o1 baz -x 1 100
+o1 baz 200
+o1 baz -- -y
+

Consider the example in Listing 34. The method +foo has the argument list x y. This means that the first argument +is passed in an invocation like o1 foo 1 2 to x (here, the value +1), and the second argument is passed to y (here the value 2). +Method bar has in contrary just with non-positional arguments. Here +we pass the names of the parameter together with the values. In the +invocation o1 bar -y 3 -x 1 the names of the parameters are prefixed +with a dash ("-"). No matter whether in which order we write the +non-positional parameters in the invocation (see line 30 and 31 in +Listing 34) in both cases the variables x +and y in the body of the method bar get the same values assigned +(x becomes 1, y becomes 3).

+

It is certainly possible to combine positional and non-positional +arguments. Method baz provides two non-positional parameter (-y +and -y) and one positional parameter (namely a). The invocation in +line 34 passes the value of 1 to x and the value of 100 to a. +There is no value passed to y, therefore value of y will be +undefined in the body of baz, info exists y checks for the +existence of the variable y and returns 0.

+

The invocation in line 35 passes only a value to the positional +parameter. A more tricky case is in line 36, where we want to pass +-y as a value to the positional parameter a. The case is more +tricky since syntactically the argument parser might consider -y as +the name of one of the non-positional parameter. Therefore we use -- +(double dash) to indicate the end of the block of the non-positional +parameters and therefore the value of -y is passed to a.

+
+
+

3.7.2. Optional and Required Parameters

+

Per default positional parameters are required, and non-positional +parameters are optional (they can be left out). By using parameter +options, we can as well define positional parameters, which are +optional, and non-positional parameters, which are required.

+
Listing 35: Optional and Required Method Parameters

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+
nx::Object create o2 {
+
+  #
+  # Method foo has one required and one optional
+  # positional parameter:
+  #
+  :public method foo {x:required y:optional} {
+    puts "x=$x y? [info exists y]"
+  }
+
+  #
+  # Method bar has one required and one optional
+  # non-positional parameter:
+  #
+  :public method bar {-x:required -y:optional} {
+    puts "x=$x y? [info exists y]"
+  }
+}
+
+# invoke foo (one optional positional parameter is missing)
+o2 foo 1
+

The example in Listing 35 defined method foo +with one required and one optional positional parameter. For this +purpose we use the parameter options required and optional. The +parameter options are separated from the parameter name by a colon. If +there are multiple parameter options, these are separated by commas +(we show this in later examples).

+

The parameter definition x:required for method foo is equivalent +to x without any parameter options (see e.g. previous example), +since positional parameters are per default required. The invocation +in line 21 of Listing 35 will lead to an +undefined variable y in method foo, because no value us passed to +the optional parameter. Note that only trailing positional parameters might be +optional. If we would call method foo of Listing 34 with only one argument, the system would raise an +exception.

+

Similarly, we define method bar in Listing 35 with one required and one optional non-positional +parameter. The parameter definition -y:optional is equivalent to +-y, since non-positional parameter are per default optional. +However, the non-positional parameter -x:required is required. If we +invoke bar without it, the system will raise an exception.

+
+
+

3.7.3. Default Values for Parameters

+

Optional parameters might have a default value, which will be used, +when not value is provided for this parameter. Default values can be +specified for positional and non-positional parameters.

+
Listing 36: Method Parameters with Default Values

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+
nx::Object create o3 {
+
+  #
+  # Positional parameter with default value:
+  #
+  :public method foo {x:required {y 101}} {
+    puts "x=$x y? [info exists y]"
+  }
+
+  #
+  # Non-positional parameter with default value:
+  #
+  :public method bar {{-x 10} {-y 20}} {
+    puts "x=$x y? [info exists y]"
+  }
+}
+
+# use default values
+o3 foo
+o3 bar
+

In order to define a default value, the parameter specification must +be of the form of a 2 element list, where the second argument is the +default value. See for an example in +Listing 36.

+
+
+

3.7.4. Value Constraints

+

NX provides value constraints for all kind of parameters. By +specifying value constraints a developer can restrict the permissible +values for a parameter and document the expected values in the source +code. Value checking in NX is conditional, it can be turned on or off +in general or on a per-usage level (more about this later). The same +mechanisms can be used not only for input value checking, but as well +for return value checking (we will address this point as well later).

+
+
Built-in Value Constraints
+

NX comes with a set of built-in value constraints, which can be +extended on the scripting level. The built-in checkers are either the +native checkers provided directly by the Next Scripting Framework (the +most efficient checkers) or the value checkers provided by Tcl through +string is …. The built-in checkers have as well the advantage that +they can be used also at any time during bootstrap of an object +system, at a time, when e.g. no objects or methods are defined. The +same checkers are used as well for all C-implemented primitives of NX +and the Next Scripting Framework.

+
+
+value-checkers.png +
+
Figure 37. General Applicable Value Checkers in NX
+
+

+

Figure 37 shows the built-in +general applicable value checkers available in NX, which can be used +for all method and object parameters. In the next step, we show how to +use these value-checkers for checking permissible values for method +parameters. Then we will show, how to provide more detailed value +constraints.

+
Listing 38: Method Parameters with Value Constraints

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+
nx::Object create o4 {
+
+  #
+  # Positional parameter with value constraints:
+  #
+  :public method foo {x:integer o:object,optional} {
+    puts "x=$x o? [info exists o]"
+  }
+
+  #
+  # Non-positional parameter with value constraints:
+  #
+  :public method bar {{-x:integer 10} {-verbose:boolean false}} {
+    puts "x=$x y=$y"
+  }
+}
+
+# The following invocation raises an exception
+o4 foo a
+

Value contraints are specified as parameter options in the parameter +specifications. The parameter specification x:integer defines x as +a required positional parmeter which value is constraint to an +integer. The parameter specification o:object,optional shows how to +combine multiple parameter options. The parameter o is an optional +positional parameter, its value must be an object (see +Listing 38). Value constraints are +specified exactly the same way for non-positional parameters (see +method bar in Listing 38).

+
Listing 39: Parameterized Value Constraints

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+
#
+# Create classes for Person and Project
+#
+nx::Class create Person
+nx::Class create Project
+
+nx::Object create o5 {
+  #
+  # Parameterized value constraints
+  #
+  :public method work {
+     -person:object,type=Person
+     -project:object,type=Project
+   } {
+    # ...
+  }
+}
+
+#
+# Create a Person and a Project instance
+#
+Person create gustaf
+Project create nx
+
+#
+# Use method with value constraints
+#
+o5 work -person gustaf -project nx
+

The native checkers object, class, metaclass and baseclass can +be further specialized with the parameter option type to restrict +the permissible values to instances of certain classes. We can use for +example the native value constraint object either for testing +whether an argument is some object (without further constraints, as in +Listing 36, method foo), or we can +constrain the value further to some type (direct or indirect instance +of a class). This is shown by method work in +Listing 39 which requires +the parameter -person to be an instance of class Person and the +parameter -project to be an instance of class Project.

+
+
+
Scripted Value Constraints
+

The set of predefined value checkers can be extended by application +programs via defining methods following certain conventions. The user +defined value checkers are defined as methods of the class nx::Slot +or of one of its subclasses or instances. We will address such cases +in the next sections. In the following example we define two new +value checkers on class nx::Slot. The first value checker is called +groupsize, the second one is called choice.

+
Listing 40: Scripted Value Checker for Method Parameters

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+
#
+# Value checker named "groupsize"
+#
+::nx::Slot method type=groupsize {name value} {
+  if {$value < 1 || $value > 6} {
+    error "Value '$value' of parameter $name is not between 1 and 6"
+  }
+}
+
+#
+# Value checker named "choice" with extra argument
+#
+::nx::Slot method type=choice {name value arg} {
+  if {$value ni [split $arg |]} {
+    error "Value '$value' of parameter $name not in permissible values $arg"
+  }
+}
+
+#
+# Create an application class D
+# using the new value checkers
+#
+nx::Class create D {
+  :public method foo {a:groupsize} {
+    # ...
+  }
+  :public method bar {a:choice,arg=red|yellow|green b:choice,arg=good|bad} {
+    # ...
+  }
+}
+
+D create d1
+
+# testing "groupsize"
+d1 foo 2
+d1 foo 10
+
+# testing "choice"
+d1 bar green good
+d1 bar pink bad
+

In order to define a checker groupsize a method of the name +type=groupsize is defined. This method receives two arguments, +name and value. The first argument is the name of the parameter +(mostly used for the error message) and the second parameter is +provided value. The value checker simply tests whether the provided +value is between 1 and 3 and raises an exception if this is not the +case (invocation in line 36 in Listing 40).

+

The checker groupsize has the permissible values defined in its +method’s body. It is as well possible to define more generic checkers +that can be parameterized. For this parameterization, one can pass an +argument to the checker method (last argument). The checker choice +can be used for restricting the values to a set of predefined +constants. This set is defined in the parameter specification. The +parameter a of method bar in Listing 40 +is restricted to the values red, yellow or green, and the +parameter b is restricted to good or bad. Note that the syntax +of the permissible values is solely defined by the definition of the +value checker in lines 13 to 17. The invocation in line 39 will be ok, +the invocation in line 40 will raise an exception, since pink is not +allowed.

+

If the same checks are used in many places in the program, +defining names for the value checker will be the better choice since +it improves maintainability. For seldomly used kind of checks, the +parameterized value checkers might be more convenient.

+
+
+
+

3.7.5. Multiplicity

+
+
+

Multiplicity is used to define whether a parameter should receive +single or multiple values.

+
+

A multiplicity specification has a lower and an upper bound. A lower +bound of 0 means that the value might be empty. A lower bound of 1 +means that the parameter needs at least one value. The upper bound +might be 1 or n (or synonymously *). While the upper bound of +1 states that at most one value has to be passed, the upper bound of +n says that multiple values are permitted. Other kinds of +multiplicity are currently not allowed.

+

The multiplicity is written as parameter option in the parameter +specification in the form lower-bound..upper-bound. If no +multiplicity is defined the default multiplicity is 1..1, which +means: provide exactly one (atomic) value (this was the case in the +previous examples).

+
Listing 41: Method Parameters with Explicit Multiplicity

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+
nx::Object create o6 {
+
+  #
+  # Positional parameter with an possibly empty
+  # single value
+  #
+  :public method foo {x:integer,0..1} {
+    puts "x=$x"
+  }
+
+  #
+  # Positional parameter with an possibly empty
+  # list of values value
+  #
+  :public method bar {x:integer,0..n} {
+    puts "x=$x"
+  }
+
+  #
+  # Positional parameter with a non-empty
+  # list of values
+  #
+  :public method baz {x:integer,1..n} {
+    puts "x=$x"
+  }
+}
+

Listing 41 contains three examples for +positional parameters with different multiplicities. Multiplicity is +often combined with value constraints. A parameter specification of +the form x:integer,0..n means that the parameter x receives a list +of integers, which might be empty. Note that the value constraints are +applied to every single element of the list.

+

The parameter specification x:integer,0..1 means that x might be +an integer or it might be empty. This is one style of specifying that +no explicit value is passed for a certain parameter. Another style is +to use required or optional parameters. NX does not enforce any +particular style for handling unspecified values.

+

All the examples in Listing 41 are for +single positional parameters. Certainly, multiplicity is fully +orthogonal with the other parameter features and can be used as well +for multiple parameters, non-positional parameter, default values, +etc.

+
+
+
+
+
+

4. Advanced Language Features

+
+

+
+

4.1. Objects, Classes and Meta-Classes

+

+
+
+

4.2. Resolution Order and Next-Path

+

+
+
+

4.3. Details on Method and Object Parameters

+

The parameter specifications are used in NX for the following +purposes. They are used for

+
    +
  • +

    +the specification of input arguments of methods and commands, for +

    +
  • +
  • +

    +the specification of return values of methods and commands, and for +

    +
  • +
  • +

    +the specification for the initialization of objects. +

    +
  • +
+

We refer to the first two as method parameters and the last one as +object parameters. The examples in the previous sections all parameter +specification were specifications of method parameters.

+
+
+

Method parameters specify properties about permissible values passed +to methods.

+
+

The method parameter specify how methods are invoked, how the +actual arguments are passed to local variables of the invoked method +and what kind of checks should be performed on these.

+
+
+

Object parameters are parameters that specify, with what values +instance variables of objects are initialized and how these objects +could be parameterized.

+
+

Syntactically, object parameters and method parameters are the same, +although there are certain differences (e.g. some parameter options +are only applicable for objects parameters, the list of object +parameters is computed dynamically from the class structures, object +parameters are often used in combination with special setter methods, +etc.). Consider the following example, where we define the two +application classes Person and Student with a few properties.

+
Listing 42: Object Parameters

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+ 23
+ 24
+ 25
+ 26
+ 27
+
#
+# Define a class Person with properties "name"
+# and "birthday"
+#
+nx::Class create Person {
+  :property name:required
+  :property birthday
+}
+
+#
+# Define a class Student as specialization of Person
+# with and additional property
+#
+nx::Class create Student -superclass Person {
+  :property matnr:required
+  :property {oncampus:boolean true}
+}
+
+#
+# Create instances using object parameters
+# for the initialization
+#
+Person create p1 -name Bob
+Student create s1 -name Susan -matnr 4711
+
+# Access property value via accessor method
+puts "The name of s1 is [s1 name]"
+

The class Person has two properties name and birthday, where the +property name is required, the property birthday is not. The +class Student is a subclass of Person with the additional required +property matnr and an optional property oncampus with the +default value true (see Listing 42). The class diagram below visualizes these +definitions.

+
+
+object-parameter.png +
+
Figure 43. System and Application Classes
+
+

+

In NX, these definitions imply that instances of the class of Person +have the properties name and birthday as non-positional object +parameters. Furthermore it implies that instances of Student will +have the object parameters of Person augmented with the object +parameters from Student (namely matnr and oncampus). Based on +these object parameters, we can create a Person named Bob and a +Student named Susan with the matriculation number 4711 (see line +23 and 24 in Listing 42). After the object s1 is created it has the +instance variables name, matnr and oncampus (the latter is +initialized with the default value).

+
+

4.3.1. Object Parameters for all NX Objects

+

The object parameters are not limited to the application defined +properties, also NX provides some predefined definitions. Since +Person is a subclass of nx::Object also the object parameters of +nx::Object are inherited. In the introductory stack example, we used +-mixin applied to an object to denote per-object mixins (see +Listing 8). Since mixin +is defined as a parameter on nx::Object it can be used as an object +parameter -mixin for all objects in NX. To put it in other words, +every object can be configured to have per-object mixins. If we would +remove this definition, this feature would be removed as well.

+

As shown in the introductory examples, every object can be configured +via a scripted initialization block (the optional scripted block +specified at object creation as last argument; see +Listing 5 or +Listing 12). The +scripted block and its meaning are as well defined by the means of +object parameters. However, this object parameter is positional (last +argument) and optional (it can be omitted). The following listing shows +(simplified) the object parameters of Person p1 and Student s1.

+
Listing 44: Computed Actual Object Parameter (simplified)

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+
Object parameter for Person p1:
+   -name:required -birthday ...
+   -mixin:mixinreg,alias,1..n -filter:filterreg,alias,1..n _:initcmd,optional
+
+Object parameter for Student s1:
+   -matnr:required {-oncampus:boolean true}
+   -name:required -birthday ...
+   -mixin:mixinreg,alias,1..n -filter:filterreg,alias,1..n _:initcmd,optional
+

The actual values can be obtained via introspection via Person info +parameter definition. The object parameter types mixinreg and +filterreg are for converting definitions of filters and mixins. The +object parameter type initcmd says that the content of this variable +will be executed in the context of the object being created (before +the constructor init is called). More about the object parameter +types later.

+
+
+

4.3.2. Object Parameters for all NX Classes

+

Since classes are certain kind of objects, classes are parameterized +in the same way as objects. A typical parameter for a class definition +is the relation of the class to its superclass.In our example, we have +specified, that Student has Person as superclass via the +non-positional object parameter -superclass. If no superclass is +specified for a class, the default superclass is +nx::Object. Therefore nx::Object is the default value for the +parameter superclass.

+

Another frequently used parameter for classes is -mixin to denote +per-class mixins (see e.g. the introductory Stack example in +Listing 10), which is defined in +the same way.

+

Since Student is an instance of the meta-class nx::Class it +inherits the object parameters from nx::Class (see class diagram +Figure 43). Therefore, one can +use e.g. -superclass in the definition of classes.

+

Since nx::Class is a subclass of nx::Object, the meta-class +nx::Class inherits the parameter definitions from the most general +class nx::Object. Therefore, every class might as well be configured +with a scripted initialization block the same way as objects can be +configured. We used actually this scripted initialization block in +most examples for defining the methods of the class. The following +listing shows (simplified) the parameters applicable for Class +Student.

+
Listing 45: Computed Parameters for a Class (simplified)

+
+
+
  1
+  2
+  3
+
Object parameter for Class Student:
+   -mixin:mixinreg,alias,1..n -filter:filterreg,alias,1..n ...
+   {-superclass:class,alias,1..n ::nx::Object} ...
+

The actual values can be obtained via introspection via nx::Class info +parameter definition.

+
+
+

4.3.3. User defined Parameter Types

+

More detailed definition of the object parameter types comes here.

+
+
+

4.3.4. Slot Classes and Slot Objects

+

In one of the previous sections, we defined scripted (application +defined) checker methods on a class named nx::Slot. In general NX +offers the possibility to define value checkers not only for all +usages of parameters but as well differently for method parameters or +object parameters

+
+
+slots.png +
+
Figure 46. Slot Classes and Objects
+
+

+
+
+

4.3.5. Attribute Slots

+

Still Missing

+
    +
  • +

    +return value checking +

    +
  • +
  • +

    +switch +

    +
  • +
  • +

    +initcmd … +

    +
  • +
  • +

    +subst rules +

    +
  • +
  • +

    +converter +

    +
  • +
  • +

    +incremental slots +

    +
  • +
+
+
+
+
+
+

5. Miscellaneous

+
+
+

5.1. Profiling

+
+
+

5.2. Unknown Handlers

+

NX provides two kinds of unknown handlers:

+
    +
  • +

    +Unknown handlers for methods +

    +
  • +
  • +

    +Unknown handlers for objects and classes +

    +
  • +
+
+

5.2.1. Unknown Handlers for Methods

+

Object and classes might be equipped +with a method unknown which is called in cases, where an unknown +method is called. The method unknown receives as first argument the +called method followed by the provided arguments

+
Listing 47: Unknown Method Handler

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+
::nx::Object create o {
+  :method unknown {called_method args} {
+    puts "Unknown method '$called_method' called"
+  }
+}
+
+# Invoke an unknown method for object o:
+o foo 1 2 3
+
+# Output will be: "Unknown method 'foo' called"
+

Without any provision of an unknown method handler, an error will be +raised, when an unknown method is called.

+
+
+

5.2.2. Unknown Handlers for Objects and Classes

+

The next scripting framework provides in addition to unknown method +handlers also a means to dynamically create objects and classes, when +these are referenced. This happens e.g. when superclasses, mixins, or +parent objects are referenced. This mechanism can be used to implement +e.g. lazy loading of these classes. Nsf allows to register multiple +unknown handlers, each identified by a key (a unique name, different +from the keys of other unknown handlers).

+
Listing 48: Unknown Class Handler

+
+
+
  1
+  2
+  3
+  4
+  5
+  6
+  7
+  8
+  9
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+ 18
+ 19
+ 20
+ 21
+ 22
+
::nx::Class public class method __unknown {name} {
+  # A very simple unknown handler, showing just how
+  # the mechanism works.
+  puts "***** __unknown called with <$name>"
+  ::nx::Class create $name
+}
+
+# Register an unknown handler as a method of ::nx::Class
+::nsf::object::unknown::add nx {::nx::Class __unknown}
+
+::nx::Object create o {
+  # The class M is unknown at this point
+
+  :mixin add M
+  # The line above has triggered the unknown class handler,
+  # class M is now defined
+
+  puts [:info mixin classes]
+  # The output will be:
+  #     ***** __unknown called with <::M>
+  #     ::M
+}
+

The Next Scripting Framework allows to add, query, delete and list unknown handlers.

+
Listing 49: Unknown Handler registration

+
+
+
  1
+  2
+  3
+  4
+  5
+
# Interface for unknown handlers:
+# nsf::object::unknown::add /key/ /handler/
+# nsf::object::unknown::get /key/
+# nsf::object::unknown::delete /key/
+# nsf::object::unknown::keys
+
References
    +
  • +

    + U. Zdun, M. Strembeck, G. Neumann: + Object-Based and Class-Based Composition of Transitive Mixins, + Information and Software Technology, 49(8) 2007 . +

    +
  • +
  • +

    + G. Neumann and U. Zdun: Filters as a + language support for design patterns in object-oriented scripting + languages. In Proceedings of COOTS’99, 5th Conference on + Object-Oriented Technologies and Systems, San Diego, May 1999. +

    +
  • +
  • +

    + G. Neumann and U. Zdun: Implementing + object-specific design patterns using per-object mixins. In Proc. of + NOSA`99, Second Nordic Workshop on Software Architecture, Ronneby, + Sweden, August 1999. +

    +
  • +
  • +

    + G. Neumann and U. Zdun: Enhancing + object-based system composition through per-object mixins. In + Proceedings of Asia-Pacific Software Engineering Conference (APSEC), + Takamatsu, Japan, December 1999. +

    +
  • +
  • +

    + G. Neumann and U. Zdun: XOTCL, an + object-oriented scripting language. In Proceedings of Tcl2k: The + 7th USENIX Tcl/Tk Conference, Austin, Texas, February 2000. +

    +
  • +
  • +

    + G. Neumann and U. Zdun: Towards the Usage + of Dynamic Object Aggregations as a Form of Composition In: + Proceedings of Symposium of Applied Computing (SAC’00), Como, + Italy, Mar 19-21, 2000. +

    +
  • +
  • +

    + G. Neumann, S. Sobernig: XOTcl 2.0 - A + Ten-Year Retrospective and Outlook, in: Proceedings of the Sixteenth + Annual Tcl/Tk Conference, Portland, Oregon, October, 2009. +

    +
  • +
  • +

    + J. K. Ousterhout: Tcl: An embeddable command + language. In Proc. of the 1990 Winter USENIX Conference, January 1990. +

    +
  • +
  • +

    + J. K. Ousterhout: Scripting: Higher Level + Programming for the 21st Century, IEEE Computer 31(3), March 1998. +

    +
  • +
  • +

    + D. Wetherall and C. J. Lindblad: Extending Tcl for + Dynamic Object-Oriented Programming. Proc. of the Tcl/Tk Workshop '95, + July 1995. +

    +
  • +
+
+
+
+
+
+

+ + + Index: doc/next-tutorial/next-tutorial.txt =================================================================== diff -u --- doc/next-tutorial/next-tutorial.txt (revision 0) +++ doc/next-tutorial/next-tutorial.txt (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,2309 @@ +Tutorial for the Next Scripting Language +========================================== +Gustaf Neumann , Stefan Sobernig +v2.1, March 2011: +Written for the Initial Release of the Next Scripting Framework. +:Author Initials: GN +:toc: +:toclevels: 4 +:icons: +:numbered: +:website: http://www.xotcl.org/ + +.Abstract +***************************************************************************** +This document provides a tutorial for the Next Scripting +Language NX. +***************************************************************************** + +The Next Scripting Language (NX) is a highly flexible object oriented +scripting language based on Tcl <>. NX is a successor +of XOTcl 1 <> and was developed based on 10 +years of experience with XOTcl in projects containing several hundred +thousand lines of code. While XOTcl was the first language designed to +provide _language support for design patterns_, the focus of the Next +Scripting Framework and NX is on combining this with _Language +Oriented Programming_. In many respects, NX was designed to ease the +learning of the language for novices (by using a more mainstream +terminology, higher orthogonality of the methods, less predefined +methods), to improve maintainability (remove sources of common errors) +and to encourage developers to write better structured programs (to +provide interfaces) especially for large projects, where many +developers are involved. + +The Next Scripting Language is based on the Next Scripting Framework +(NSF) which was developed based on the notion of language oriented +programming. The Next Scripting Frameworks provides C-level support +for defining and hosting multiple object systems in a single Tcl +interpreter. The name of the Next Scripting Framework is derived from +the universal method combinator "next", which was introduced in XOTcl. +The combinator "next" serves as a single instrument for method +combination with filters, per-object and transitive per-class mixin +classes, per-object methods and multiple inheritance. + +The definition of NX is fully scripted (e.g. defined in ++nx.tcl+). The Next Scripting Framework is shipped with three language +definitions, containing NX and XOTcl 2. Most of the existing XOTcl 1 +programs can be used without modification in the Next Scripting +Framework by using XOTcl 2. The Next Scripting Framework requires Tcl +8.5 or newer. + +== NX and its Roots + +Object oriented extensions of Tcl have quite a +long history. Two of the most prominent early Tcl based OO languages +were _incr Tcl_ (abbreviated as itcl) and Object Tcl (_OTcl_ +<>). While itcl provides a traditional +C++/Java-like object system, OTcl was following the CLOS approach and +supports a dynamic object system, allowing incremental class and +object extensions and re-classing of objects. + +Extended Object Tcl (abbreviated as XOTcl <>) +is a successor of OTcl and was the first language providing language +support for design patterns. XOTcl extends OTcl by providing namespace +support, adding assertions, dynamic object aggregations, slots and by +introducing per-object and per-class filters and per-object and +per-class mixins. + +XOTcl was so far released in more than 30 versions. It is described in +its detail in more than 20 papers and serves as a basis for other +object systems like TclOO [Donal ???]. The scripting language _NX_ and +the _Next Scripting Framework_ <> extend +the basic ideas of XOTcl by providing support for _language-oriented +programming_. The the Next Scripting Framework supports multiple +object systems concurrently. Effectively, every object system has +different base classes for creating objects and classes. Therefore, +these object systems can have different interfaces and can +follow different naming conventions for built-in methods. Currently, +the Next Scripting Framework is packaged with three object systems: +NX, XOTcl 2.0, and TclCool (the language introduced by TIP#279). + +image::languages.png[align="center",width=500,title="Language History of the Next Scripting Language",alt="Languages"] +{set:img-languages:Figure {figure-number}} + +The primary purpose of this document is to introduce NX to beginners. +We expect some prior knowledge of programming languages, and some +knowledge about Tcl. In the following sections we introduce NX by +examples. In later sections we introduce the more advanced concepts of +the language. Conceptually, most of the addressed concepts are very +similar to XOTcl. Concerning the differences between NX and XOTcl, +please refer to the "Migration Guide for the Next Scripting Language". + +== Introductory Overview Example: Stack + +A classical programming example is the implementation of a stack, which +is most likely familiar to many readers from many introductory +programming courses. A stack is a last-in first-out data structure +which is manipulated via operations like +push+ (add something to the +stack) and +pop+ remove an entry from the stack. These operations are +called _methods_ in the context of object oriented programming +systems. Primary goals of object orientation are encapsulation and +abstraction. Therefore, we define a common unit (a class) that defines +and encapsulates the behavior of a stack and provides methods to a user +of the data structure that abstract from the actual implementation. + +=== Define a Class "Stack" + +In our first example, we define a class named +Stack+ with the methods ++push+ and +pop+. When an instance of the stack is created (e.g. a +concrete stack +s1+) the stack will contain an instance variable named ++things+, initialized with the an empty list. + +[[xmp-class-stack]] +.Listing {counter:figure-number}: Class Stack +{set:xmp-class-stack:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Stack { + + # + # Stack of Things + # + + :variable things {} + + :public method push {thing} { + set :things [linsert ${:things} 0 $thing] + return $thing + } + + :public method pop {} { + set top [lindex ${:things} 0] + set :things [lrange ${:things} 1 end] + return $top + } +} +-------------------------------------------------- + +Typically, classes are defined in NX via +nx::Class create+, followed +by the name of the new class (here: +Stack+). The definition of the +stack placed between curly braces and contains here just the method +definitions. Methods of the class are defined via +:method+ followed +by the name of the method, an argument list and the body of the +method, consisting of Tcl and NX statements. + +When an instance of +Stack+ is created, it will contain an instance +variable named +things+. If several +Stack+ instances are created, +each of the instances will have their own (same-named but different) +instance variable. The instance variable +things+ is used in our +example as a list for the internal representation of the stack. We +define in a next step the methods to access and modify this list +structure. A user of the stack using the provided methods does not +have to have any knowledge about the name or the structure of the +internal representation (the instance variable +things+). + +The method +push+ receives an argument +thing+ which should be placed +on the stack. Note that we do not have to specify the type of the +element on the stack, so we can push strings as well as numbers or +other kind of things. When an element is pushed, we add this element +as the first element to the list +things+. We insert the element using +the Tcl command +linsert+ which receives the list as first element, +the position where the element should be added as second and the new +element as third argument. To access the value of the instance +variable we use Tcl's dollar operator followed by the name. The +names of instance variables are preceded with a colon +:+. Since the +name contains a non-plain character, Tcl requires us to put braces +around the name. The command +linsert+ and its arguments are placed +between square brackets. This means that the function +linsert+ is called and +a new list is returned, where the new element is inserted at the first +position (index 0) in the list +things+. The result of the +linsert+ +function is assigned again to the instance variable +things+, which is +updated this way. Finally the method +push+ returns the pushed thing +using the +return+ statement. + +The method +pop+ returns the most recently stacked element and removes +it from the stack. Therefore, it takes the first element from the list +(using the Tcl command +lindex+), assigns it to the method-scoped +variable +top+, removes the element from the instance variable ++things+ (by using the Tcl command +lrange+) and returns the value +popped element +top+. + +This finishes our first implementation of the stack, more enhanced +versions will follow. Note that the methods +push+ and +pop+ are +defined as +public+; this means that these methods can be +used from all other objects in the system. Therefore, these methods +provide an interface to the stack implementation. + +[[xmp-using-stack]] +.Listing {counter:figure-number}: Using the Stack +{set:xmp-using-stack:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +#!/bin/env tclsh +package require nx + +nx::Class create Stack { + + # + # Stack of Things + # + .... +} + +Stack create s1 +s1 push a +s1 push b +s1 push c +puts [s1 pop] +puts [s1 pop] +s1 destroy +-------------------------------------------------- + +Now we want to use the stack. The code snippet in <> shows how to use the class Stack in a script. +Since NX is based on Tcl, the script will be called with the Tcl shell ++tclsh+. In the Tcl shell we have to +require package nx+ to use the +Next Scripting Framework and NX. The next lines contain the definition +of the stack as presented before. Of course, it is as well possible to +make the definition of the stack an own package, such we could simple +say +package require stack+, or to save the definition of a stack +simply in a file and load it via +source+. + +In line 12 we create an instance of the stack, namely the stack object ++s1+. The object +s1+ is an instance of +Stack+ and has therefore +access to its methods. The methods like +push+ or +pop+ can be invoked +via a command starting with the object name followed by the +method name. In lines 13-15 we push on the stack the values +a+, then ++b+, and +c+. In line 16 we output the result of the +pop+ method +using the Tcl command +puts+. We will see on standard output the +value+c+ (the last stacked item). The output of the line 17 is the +value +b+ (the previously stacked item). Finally, in line 18 we +destroy the object. This is not necessary here, but shows the life +cycle of an object. In some respects, +destroy+ is the counterpart of ++create+ from line 12. + +[[fig-class-object]] +image::object-class-appclass.png[title="Class and Object Diagram",align="center"] +{set:fig-class-object:Figure {figure-number}} + +<> shows the actual class and +object structure of the first +Stack+ example. Note that the common +root class is +nx::Object+ that contains methods for all objects. +Since classes are as well objects in NX, +nx::Class+ is a +specialization of +nx::Object+. +nx::Class+ provides methods for +creating objects, such as the method +create+ which is used to create +objects (and classes as well). + +=== Define an Object Named "stack" + +The definition of the stack in <> +follows the traditional object oriented approach, found in +practically every object oriented programming language: Define a class +with some methods, create instances from this class, and use the +methods defined in the class in the instances of the class. + +In our next example, we introduce _generic objects_ and _object +specific methods_. With NX, we can define generic objects, which are +instances of the most generic class +nx::Object+ (sometimes called +"common root class"). +nx::Object+ is predefined and contains a +minimal set of methods applicable to all NX objects. + +In our second example, we will define a generic object named +stack+ +and provide methods for this object. The methods defined in our first +example were methods provided by a class for objects. Now we defined +object specific methods, which are methods applicable only to the +object for which they are defined. + +[[xmp-object-stack]] +.Listing {counter:figure-number}: Object stack +{set:xmp-object-stack:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Object create stack { + + :variable things {} + + :public method push {thing} { + set :things [linsert ${:things} 0 $thing] + return $thing + } + + :public method pop {} { + set top [lindex ${:things} 0] + set :things [lrange ${:things} 1 end] + return $top + } +} +-------------------------------------------------- + +The example in <> defines the +object +stack+ in a very similar way as the class +Stack+. But the +following points are different. + +- First, we use +nx::Object+ instead of +nx::Class+ to denote + that we want to create a generic object, not a class. + +- As in the example above, we use +:variable+ to define the + instance variable +things+ for this object (the object +stack+). + +The definition for the methods +push+ and +pop+ are the same as +before, but this times these methods are object-specific (in general, +all methods defined for an object are object-specific). In order to use +the stack, we can use directly the object +stack+ in the same way as +we have used the object +s1+ in <> +(e.g. +stack push a+). <> shows +the class diagram for this the object +stack+. + +[[img-object-stack]] +image::object-stack.png[title="Object stack",align="center"] +{set:img-object-stack:Figure {figure-number}} + +A reader might wonder when to use a class +Stack+ or rather an object ++stack+. A big difference is certainly that one can define easily +multiple instances of a class, while the object is actually a +singleton. The concept of the object +stack+ is similar to a module, +providing a certain functionality via a common interface, without +providing the functionality to create multiple instances. The reuse of +methods provided by the class to objects is as well a difference. If +the methods of the class are updated, all instances of the class will +immediately get the modified behavior. However, this does not mean that +the reuse for the methods of +stack+ is not possible. NX allows for +example to copy objects (similar to prototype based languages) or to +reuse methods via e.g. aliases (more about this later). + +Note that we use capitalized names for classes and lowercase names for +instances. This is not required and a pure convention making it easier +to understand scripts without much analysis. + +=== Implementing Features using Mixin Classes + +So far, the definition of the stack methods was pretty minimal. +Suppose, we want to define "safe stacks" that protect e.g. against +stack under-runs (a stack under-run happens, when more +pop+ than ++push+ operations are issued on a stack). Safety checking can be +implemented mostly independent from the implementation details of the +stack (usage of internal data structures). There are as well different +ways of checking the safety. Therefore we say that safety checking is +orthogonal to the stack core implementation. + +With NX we can define stack-safety as a separate class using methods +with the same names as the implementations before, and "mix" this +behavior into classes or objects. The implementation of +Safety+ in +<> uses a counter to check for +stack under-runs and to issue error messages, when this happens. + +[[xmp-class-safety]] +.Listing {counter:figure-number}: Class Safety +{set:xmp-class-safety:Listing {figure-number}} +[source,tcl,numbered] +-------------------------------------------------- +nx::Class create Safety { + + # + # Implement stack safety by defining an additional + # instance variable named "count" that keeps track of + # the number of stacked elements. The methods of + # this class have the same names and argument lists + # as the methods of Stack; these methods "shadow" + # the methods of class Stack. + # + + :variable count 0 + + :public method push {thing} { + incr :count + next + } + + :public method pop {} { + if {${:count} == 0} then { error "Stack empty!" } + incr :count -1 + next + } +} +-------------------------------------------------- + +Note that all the methods of the class +Safety+ end with +next+. +This command is a primitive command of NX, which calls the +same-named method with the same argument list as the current +invocation. + +Assume we save the definition of the class +Stack+ in a file named ++Stack.tcl+ and the definition of the class +Safety+ in a file named ++Safety.tcl+ in the current directory. When we load the classes ++Stack+ and +Safety+ into the same script (see the terminal dialog in +<>), we can define +e.g. a certain stack +s2+ as a safe stack, while all other stacks +(such as +s1+) might be still "unsafe". This can be achieved via the +option +-mixin+ at the object creation time (see line 9 in +<>) of s2. The +option +-mixin+ mixes the class +Safety+ into the new instance +s2+. + +[[xmp-using-class-safety]] +.Listing {counter:figure-number}: Using the Class Safety +{set:xmp-using-class-safety:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +% package require nx +2.0 +% source Stack.tcl +::Stack +% source Safety.tcl +::Safety +% Stack create s1 +::s1 +% Stack create s2 -mixin Safety +::s2 +% s2 push a +a +% s2 pop +a +% s2 pop +Stack empty! + +% s1 info precedence +::Stack ::nx::Object + +% s2 info precedence +::Safety ::Stack ::nx::Object +-------------------------------------------------- + +When the method +push+ of +s2+ is called, first the method of the +mixin class +Safety+ will be invoked that increments the counter and +continues with +next+ to call the shadowed method, here the method ++push+ of the +Stack+ implementation that actually pushes the item. +The same happens, when +s2 pop+ is invoked, first the method of ++Safety+ is called, then the method of the +Stack+. When the stack is +empty (the value of +count+ reaches 0), and +pop+ is invoked, the +mixin class +Safety+ generates an error message (raises an exception), +and does not invoke the method of the +Stack+. + +The last two commands in <> use introspection to query for the objects ++s1+ and +s2+ in which order the involved classes are processed. This +order is called the +precedence order+ and is obtained via +info +precedence+. We see that the mixin class +Safety+ is only in use for ++s2+, and takes there precedence over +Stack+. The common root class ++nx::Object+ is for both +s1+ and +s2+ the base class. + +[[img-per-object-mixin]] +image::per-object-mixin.png[title="Per-object Mixin",align="center"] +{set:img-per-object-mixin:Figure {figure-number}} + +Note that the class +Safety+ is only mixed into a single object (here ++s2+), therefore we refer to this case as a _per-object mixin_. +<> shows the class +diagram, where the class +Safety+ is used as a per-object mixin for ++s2+. + +The class +Safety+ can be used as well in other ways, such as e.g. for +defining classes for safe stacks <>. + +[[xmp-class-safestack]] +.Listing {counter:figure-number}: Class SafeStack +{set:xmp-class-safestack:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# +# Create a safe stack class by using Stack and mixin +# Safety +# +nx::Class create SafeStack -superclass Stack -mixin Safety + +SafeStack create s3 +-------------------------------------------------- + +The difference to the case with the per-object mixin is that now, ++Safety+ is mixed into the definition of +SafeStack+. Therefore, all +instances of the class +SafeStack+ (here the instance +s3+) will be +using the safety definitions. +<> shows the class diagram +for this definition. + +[[img-per-class-mixin]] +image::per-class-mixin.png[title="Per-class Mixin",align="center"] +{set:img-per-class-mixin:Figure {figure-number}} + +Note that we could use +Safety+ as well as a per-class mixin on ++Stack+. In this case, all stacks would be safe stacks and we could +not provide a selective feature selection (which might be perfectly +fine). + +=== Define Different Kinds of Stacks + +The definition of +Stack+ is generic and allows all kind of elements +to be stacked. Suppose, we want to use the generic stack definition, +but a certain stack (say, stack +s4+) should be a stack for integers +only. This behavior can be achieved by the same means as introduced +already in <>, namely +object-specific methods. + +[[xmp-object-integer-stack]] +.Listing {counter:figure-number}: Object Integer Stack +{set:xmp-object-integer-stack:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +Stack create s4 { + + # + # Create a stack with a object-specific method + # to check the type of entries + # + + :public method push {thing:integer} { + next + } +} +-------------------------------------------------- + +The program snippet in <> defines an instance +s4+ of the class ++Stack+ and provides an object specific method for +push+ to implement +an integer stack. The method +pull+ is the same for the integer stack +as for all other stacks, so it will be reused as usual from the class ++Stack+. The object-specific method +push+ of +s4+ has a value +constraint in its argument list (+thing:integer+) that makes sure, +that only integers can be stacked. In case the argument is not an +integer, an exception will be raised. Of course, one could perform the +value constraint checking as well in the body of the method +proc+ by +accepting an generic argument and by performing the test for the value +in the body of the method. In the case, the passed value is an +integer, the +push+ method of <> calls +next+, and therefore calls the +shadowed generic definition of +push+ as provided by +Stack+. + +[[xmp-class-integer-stack]] +.Listing {counter:figure-number}: Class IntegerStack +{set:xmp-class-integer-stack:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create IntegerStack -superclass Stack { + + # + # Create a Stack accepting only integers + # + + :public method push {thing:integer} { + next + } +} +-------------------------------------------------- + +An alternative approach is shown in +<>, where the class ++IntegerStack+ is defined, using the same method definition +as +s4+, this time on the class level. + +=== Define Class Specific Methods + +In our previous examples we defined methods provided by classes +(applicable for their instances) and object-specific methods (methods +defined on objects, which are only applicable for these objects). In +this section, we introduce methods that are defined on classes. These +method are only applicable for the class objects. Such methods are +sometimes called _class methods_ or _static methods_. + +In NX classes are objects with certain properties. The classes are +objects providing methods for instance and which are managing the +life-cycles of the objects (we will come to this point in later +sections in more detail). Since classes are objects, it is also +possible to define object-specific methods for the class +objects. However, since +:method+ applied on classes defines methods +for instances, we have to use the method-modifier +class+ to denote +methods to be applied on the class itself. Note that instances do not +inherit class methods. The methods defined on the class object are +actually exactly same as the object-specific methods shown in the +examples above. + +[[xmp-stack2]] +.Listing {counter:figure-number}: Class Stack2 +{set:xmp-stack2:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Stack2 { + + :public class method available_stacks {} { + return [llength [:info instances]] + } + + :variable things {} + + :public method push {thing} { + set :things [linsert ${:things} 0 $thing] + return $thing + } + + :public method pop {} { + set top [lindex ${:things} 0] + set :things [lrange ${:things} 1 end] + return $top + } +} + +Stack2 create s1 +Stack2 create s2 + +puts [Stack2 available_stacks] +-------------------------------------------------- + +The class +Stack2+ in <> consists of the +earlier definition of the class +Stack+ and is extended by the +class-specific method +available_stacks+, which returns the +current number of instances of the stack. The final command +puts+ +(line 26) prints 2 to the console. + +[[img-stack2]] +image::stack2.png[align="center",title="Stack2"] +{set:img-stack2:Figure {figure-number}} + +The class diagram in <> shows the +diagrammatic representation of the class object-specific method ++available_stacks+. Since every class is a specialization of the +common root class +nx::Object+, the common root class is often omitted +from the class diagrams, so it was omitted here as well in the diagram. + +== Basic Language Features of NX + +=== Variables and Properties + +In general, NX does not need variable declarations. It allows to +create or modify variables on the fly by using for example the Tcl +commands +set+ and +unset+. Depending on the variable name (or more +precisely, depending on the variable name's prefix consisting of +colons +:+) a variable is either local to a method, or it is an +instance variable, or a global variable. The rules are: + +- A variable without any colon prefix refers typically to a method + scoped variable. Such a variable is created during the invocation + of the method, and it is deleted, when the method ends. In the + example below, the variable +a+ is method scoped. + +- A variable with a single colon prefix refers to an instance + variable. An instance variable is part of the object; when the + object is destroyed, its instance variables are deleted as well. In the + example below, the variable +b+ is an instance variable. + +- A variable with two leading colons refers to a global variable. The + lifespan of a globale variable ends when the variable is explicitly + unset or the script terminates. Variables, which are placed in Tcl + namespaces, are also global variables. In the example below, the + variable +c+ is a global variable. + +[[xmp-var-resolver]] +.Listing {counter:figure-number}: Scopes of Variables +{set:xmp-var-resolver:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Foo { + + :method foo args {...} + # "a" is a method scoped variable + set a 1 + # "b" is an Instance variable + set :b 2 + # "c" is a global variable/namespaced variable + set ::c 3 + } +} +-------------------------------------------------- + +<> shows a method +foo+ +of some class +Foo+ referring to differently scoped variables. + + +==== Properties: Instance Variables with Accessors + +Generally, there is no need to define or declare instance variables in +NX. In some cases, however, a definition of instance variables is +useful. NX allows us to define instances variables as _properties_ on +classes, which are inherited to subclasses. Furthermore, the +definition of properties can be used the check permissible values for +instance variables or to initialize instance variables from default +values during object initialization. + +========================================= +A *property* is a definition of an attribute (an instance variable) +with accessors. The property definition might as well carry +value-constraints and a default value. +========================================= + +[[img-person-student]] +image::person-student.png[align="center",title="Classes Person and Student"] +{set:img-person-student:Figure {figure-number}} + +The class diagram above defines the classes +Person+ and ++Student+. For both classes, accessor methods are specified with the +same names as the attributes. (Note that we show the accessor methods +only in this example, we omit it in later ones). By defining +properties we can use the name of the attribute as method name to +access the attributes. The listing below shows an implementation of this +conceptual model in NX. + +[[xmp-properties]] +.Listing {counter:figure-number}: Properties +{set:xmp-properties:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# +# Define a class Person with properties "name" +# and "birthday" +# +nx::Class create Person { + :property name:required + :property birthday +} + +# +# Define a class Student as specialization of Person +# with additional properties +# +nx::Class create Student -superclass Person { + :property matnr:required + :property {oncampus:boolean true} +} + +# +# Create instances using object parameters +# for the initialization +# +Person create p1 -name Bob +Student create s1 -name Susan -matnr 4711 + +# Access property value via accessor method +puts "The name of s1 is [s1 name]" +-------------------------------------------------- + +By defining +name+ and +birthday+ as properties of +Person+, NX +provides automatically accessor methods with the same name. The +accessors methods (or shortly called "accessors") provide read and +write access to the underlying instance variables. In our example, the +class +Person+ has two methods implied by the +property+ definition: +the method +name+ and the method +birthday+. + +The class +Student+ is defined as a specialization of +Person+ with +two additional properties: +matnr+ and +oncampus+. The property ++matnr+ is required (it has to be provided, when an instance of this +class is created), and the property +oncampus+ is boolean, and is per +default set to +true+. Note that the class +Student+ inherits the +properties of +Person+. So, +Student+ has four properties in total. + +The property definitions are also used to providing +object +parameters+. These are typically non-positional parameters, which are +used during object creation to supply values to the instance +variables. In our listing, we create an instance of +Person+ using the +object parameter +name+ and provide the value of +Bob+ to the instance +variable +name+. Similarly, we create an instance of +Student+ using +the two object parameters +name+ and +matnr+. Finally, we use the +accessor method +name+ to obtain the value of the instance variable ++name+ of object +s1+. + +==== Instance Variables without Accessors + +To define instances variables with default values without accessors +the predefined method +variable+ can be used. Such instance variables +are often used for e.g. keeping the internal state of an object. The +usage of +variable+ is in many respects similar to +property+. One +difference is, that +property+ uses the same syntax as for method +parameters, whereas +variable+ receives the default value as a separate +argument (similar to the +variable+ command in Tcl). The introductory +Stack example in <> uses already +the method +variable+. + +[[xmp-variable]] +.Listing {counter:figure-number}: Declaring Variables +{set:xmp-variable:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Base { + :variable x 1 + # ... +} + +nx::Class create Derived -superclass Base { + :variable y 2 + # ... +} + +# Create instance of the class Derived +Derived create d1 + +# Object d1 has instance variables +# x == 1 and y == 2 +-------------------------------------------------- + +Note that the variable definitions are inherited in the same way as +properties. The example in <> shows a +class +Derived+ that inherits from +Base+. When an instance +d1+ is +created, it will contain the two instance variables +x+ and +y+. + +[[xmp-constructor]] +.Listing {counter:figure-number}: Setting Variables in the Constructor +{set:xmp-constructor:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Base2 { + # ... + :method init {} { + set :x 1 + # .... + } +} + +nx::Class create Derived2 -superclass Base2 { + # ... + :method init {} { + set :y 2 + next + # .... + } +} + +# Create instance of the class Derived2 +Derived2 create d2 +-------------------------------------------------- + +In many other object oriented languages, the instance variables are +initialized solely by the constructor (similar to class +Derived2+ in +<>). This approach is certainly +also possible in NX. Note that the approach using constructors +requires an explicit method chaining between the constructors and is +less declarative than the approach in NX using +property+ and +variable+. + +=== Method Definitions + +The basic building blocks of an object oriented program are object and +classes, which contain named pieces of code, the methods. + +=========================================== +*Methods* are subroutines (pieces of code) associated with objects +and/or classes. A method has a name, receives optionally arguments +during invocation and returns a value. +=========================================== + +Plain Tcl provides subroutines, which are not associated with objects +or classes. Tcl distinguishes between +proc+s (scripted subroutines) +and commands (system-languages implemented subroutines). + +Methods might have different scopes, defining, on which kind of +objects these methods are applicable to. These are described in more +detail later on. For the time being, we deal here with methods defined +on classes, which are applicable for the instance of these classes. + +==== Scripted Methods + +Since NX is a scripting language, most methods are most likely +scripted methods, in which the method body contains Tcl code. + +[[xmp-fido1]] +.Listing {counter:figure-number}: Scripted method +{set:xmp-fido1:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# Define a class +nx::Class create Dog { + + # Define a scripted method for the class + :public method bark {} { + puts "[self] Bark, bark, bark." + } +} + +# Create an instance of the class +Dog create fido + +# The following line prints "::fido Bark, bark, bark." +fido bark +-------------------------------------------------- + +In the example above we create a class +Dog+ with a scripted method +named +bark+. The method body defines the code, which is executed when +the method is invoked. In this example, the method +bar+ prints out a +line on the terminal starting with the object name (this is determined +by the built in command +self+) followed by "Bark, bark, bark.". This +method is defined on a class and applicable to instances of the class +(here the instance +fido+). + +==== C-implemented Methods + +Not all of the methods usable in NX are scripted methods; many +predefined methods are defined in the underlying system language, +which is typically C. For example, in <> we +used the method +create+ to create the class +Dog+ and to create the +dog instance +fido+. These methods are implemented in C in the next +scripting framework. + +C-implemented methods are not only provided by the underlying +framework but might be as well defined by application developers. This +is an advanced topic, not covered here. However, application developer +might reuse some generic C code to define their own C-implemented +methods. Such methods are for example _accessors_, _forwarders_ and +_aliases_. + +=========================================== +An *accessor method* is in most cases a C-implemented method that +accesses instance variables of an object. A call to an accessor +without arguments uses the accessor as a getter, obtaining the actual +value of the associated variable. A call to an accessor with an +argument uses it as a setter, setting the value of the associated +variable. +=========================================== + +Accessors have already been discussed in the section about properties, +in which the accessors were created automatically. + +[[xmp-fido2]] +.Listing {counter:figure-number}: Accessor Methods +{set:xmp-fido2:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Dog { + :public method bark {} { puts "[self] Bark, bark, bark." } + :method init {} { Tail create [self]::tail} +} + +nx::Class create Tail { + :property {length:double 5} + :public method wag {} {return Joy} +} + +# Create an instance of the class +Dog create fido + +# Use the accessor "length" as a getter, to obtain the value +# of a property. The following call returns the length of the +# tail of fido +fido::tail length + +# Use the accessor "length" as a setter, to alter the value +# of a property. The following call changes the length of +# the tail of fido +fido::tail length 10 + +# Proving an invalid values will raise an error +fido::tail length "Hello" +-------------------------------------------------- + +<> shows an extended example, where every dog +has a tail. The object +tail+ is created as a subobject of the dog in +the constructor +init+. The subobject can be accessed by providing the +full name of the subobject +fido::tail+. The method +length+ is an +C-implemented accessor, that enforces the value constraint (here a +floating point number, since length uses the value constraint ++double+). + +[[xmp-fido3]] +.Listing {counter:figure-number}: Forwarder Methods +{set:xmp-fido3:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Dog { + :public method bark {} { puts "[self] Bark, bark, bark." } + :method init {} { + Tail create [self]::tail + :public forward wag [self]::tail wag + } +} + +nx::Class create Tail { + :property {length 5} + :public method wag {} {return Joy} +} + +# Create an instance of the class +Dog create fido + +# The invocation of "fido wag" is delegated to "fido::tail wag". +# Therefore, the following method returns "Joy". +fido wag +-------------------------------------------------- + +<> again extends the example by adding a +forwarder named +wag+ to the object (e.g. +fido+). The forwarder +redirects all calls of the form +fido wag+ with arbitrary arguments to +the subobject +fido::tail+. + +=========================================== +A *forwarder method* is a +C-implemented method that redirects an invocation for a certain method +to either a method of another object or to some other method of the +same object. Forwarding an invocation of a method to some other +object is a means of delegation. +=========================================== + +The functionality of the forwarder can just as well be implemented as +a scripted method, but for the most common cases, the forward +implementation is more efficient, and the +forward+ method expresses +the intention of the developer. + +The method +forwarder+ has several options to change e.g. the order of +the arguments, or to substitute certain patterns in the argument list +etc. This will be described in later sections. + +==== Method-Aliases + +=========================================== +An *alias method* is a means to register either an existing method, +or a Tcl proc, or a Tcl command as a method with the provided +name on a class or object. +=========================================== + +In some way, the method alias is a restricted form of a forwarder, +though it does not support delegation to different objects or argument +reordering. The advantage of the method alias compared to a forwarder +is that it has close to zero overhead, especially for aliasing +c-implemented methods. + +[[xmp-fido4]] +.Listing {counter:figure-number}: Method-Alias +{set:xmp-fido4:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Dog { + :public method bark {} { puts "[self] Bark, bark, bark." } + + # Define a public alias for the method "bark" + :public alias warn [:info method handle bark] + # ... +} + +# Create an instance of the class +Dog create fido + +# The following line prints "::fido Bark, bark, bark." +fido warn +-------------------------------------------------- + +<> extends the last example by defining an +alias for the method "bark". The example only shows the bare +mechanism. In general, method aliases are very powerful means for +reusing pre-existing functionality. The full object system of NX and +XOTcl2 is built from aliases, reusing functionality provided by the +next scripting framework under different names. Method aliases +are as well a means for implementing traits in NX. + +=== Method Protection + +All kinds of methods might have different kind of protections in NX. +The call-protection defines from which calling context methods might +be called. The Next Scripting Framework supports as well redefinition +protection for methods. + +NX distinguished between _public_, _protected_ and _private_ methods, +where the default call-protection is "protected". + +=========================================== +A *public* method can be called from every context. A *protected* +method can only be invoked from the same object. A *private* method +can only be invoked from methods defined on the same entity +(defined on the same class or on the same object) via the invocation +with the local flag (i.e. "+: -local+"). +=========================================== + +All kind of method protections are applicable for all kind of methods, +either scripted or C-implemented. + +The distinction between public and protected leads to interfaces for +classes and objects. Public methods are intended for consumers of +these entities. Public methods define the intended ways of providing +methods for external usages (usages, from other objects or +classes). Protected methods are intended for the implementor of the +class or subclasses and not for public usage. The distinction between +protected and public reduces the coupling between consumers and the +implementation, and offers more flexibility to the developer. + +[[xmp-protected-method]] +.Listing {counter:figure-number}: Protected Methods +{set:xmp-protected-method:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Foo { + + # Define a public method + :public method foo {} { + # .... + return [:helper] + } + + # Define a protected method + :method helper {} { + return 1 + } +} + +# Create an instance of the class: +Foo create f1 + +# The invocation of the public method "foo" returns 1 +f1 foo + +# The invocation of the protected method "helper" raises an error: +f1 helper +-------------------------------------------------- + +The example above uses +:protected method helper ...+. We could have +used here as well +:method helper ...+, since the default method +call-protection is already protected. + +The method call-protection of +private+ goes one step further and +helps to hide implementation details also for implementors of +subclasses. Private methods are a means for avoiding unanticipated name +clashes. Consider the following example: + +[[xmp-private-method]] +.Listing {counter:figure-number}: Private Methods +{set:xmp-private-method:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create Base { + :private method helper {a b} {expr {$a + $b}} + :public method foo {a b} {: -local helper $a $b} +} + +nx::Class create Sub -superclass Base { + :public method bar {a b} {: -local helper $a $b} + :private method helper {a b} {expr {$a * $b}} + :create s1 +} + +s1 foo 3 4 ;# returns 7 +s1 bar 3 4 ;# returns 12 +s1 helper 3 4 ;# raises error: unable to dispatch method helper +-------------------------------------------------- + +The base class implements a public method +foo+ using the helper +method named +helper+. The derived class implements a as well a public +method +bar+, which is also using a helper method named +helper+. When +an instance +s1+ is created from the derived class, the method +foo+ +is invoked which uses in turn the private method of the base +class. Therefore, the invocation +s1 foo 3 4+ returns its sum. If +the +local+ flag had not beed used in helper, +s1+ would +have tried to call the helper of +Sub+, which would be incorrect. For +all other purposes, the private methods are "invisible" in all +situations, e.g., when mixins are used, or within the +next+-path, etc. + +By using the +local+ flag for the invocation it is possible to call +only the local definition of the method. If we would call the method +as usual, the resolution order would be the same as usual, starting +with filters, mixins, per-object methods and the full intrinsic class +hierarchy. + +=== Applicability of Methods + +As defined above, a method is a subroutine defined on an object or +class. This object (or class) contains the method. If the object (or +class) is deleted, the contained methods will be deleted as well. + +==== Instance Methods + +=========================================== +Typically, methods are defined on a class, and the methods defined on the +class are applicable to the instances (direct or indirect) of this +class. These methods are called *instance methods*. +=========================================== + +In the following example method, +foo+ is an instance method defined +on class +C+. + +[[xmp-instance-applicable]] +.Listing {counter:figure-number}: Methods applicable for instances +{set:xmp-instance-applicable:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create C { + :public method foo {} {return 1} + :create c1 +} + +# Method "foo" is defined on class "C" +# and applicable to the instances of "C" +c1 foo +-------------------------------------------------- + +There are many programming languages that only allow these types of methods. +However, NX also allows methods to be defined on objects. + +==== Object Methods + +=========================================== +Methods defined on objects are *per-object methods*. Per-object +methods are only applicable on the object, on which they are defined. +Per-object methods cannot be inherited from other objects. +=========================================== + +The following example defines an object specific method +bar+ on the +instance +c1+ of class +C+, and as well as the object specific method ++baz+ defined on the object +o1+. An object-specific method is defined +simply by defining the method on an object. + +Note that we can define a per-object method that shadows (redefines) +for this object an intrinsic instance method. + +[[xmp-object-applicable1]] +.Listing {counter:figure-number}: Per-object Method +{set:xmp-object-applicable1:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create C { + :public method foo {} {return 1} + :create c1 { + :public method foo {} {return 2} + :public method bar {} {return 3} + } +} + +# Method "bar" is an object specific method of "c1" +c1 bar + +# object-specific method "foo" returns 2 +c1 foo + +# Method "baz" is an object specific method of "o1" +nx::Object create o1 { + :public method baz {} {return 4} +} +o1 baz +-------------------------------------------------- + +==== Class Methods + +========================================= +A *class method* is a method defined on a class, which is only +applicable to the class object itself. The class method is a +per-object method of the class object. +========================================= + +In NX, all classes are objects. Classes are in NX special kind of +objects that have e.g. the ability to create instances and to provide +methods for the instances. Classes manage their instances. The general +method set for classes is defined on the meta-classes (more about +this later). + +The following example defines a public class method +bar+ on class ++C+. The class method is specified by using the modifier +class+ in +front of +method+ in the method definition command. + +[[xmp-object-applicable2]] +.Listing {counter:figure-number}: Class Methods +{set:xmp-object-applicable2:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create C { + # + # Define a class method "bar" and an instance + # method "foo" + # + :public class method bar {} {return 2} + :public method foo {} {return 1} + + # + # Create an instance of the current class + # + :create c1 +} + +# Method "bar" is a class method of class "C" +# therefore applicable on the class object "C" +C bar + +# Method "foo" is an instance method of "C" +# therefore applicable on instance "c1" +c1 foo + +# When trying to invoke the class method on the +# instance, an error will be raised. +c1 bar +-------------------------------------------------- + +In some other object oriented programming languages, class methods +are called "static methods". + +=== Ensemble Methods + +NX provides "ensemble methods" as a means to structure the method name +space and to group related methods. Ensemble methods are similar in +concept to Tcl's ensemble commands. + +========================================= +An *ensemble method* is a form of a hierarchical method consisting of +a container method and sub-methods. The first argument of the +container method is interpreted as a selector (the sub-method). Every +sub-method can be an container method as well. +========================================= + +Ensemble methods provide a means to group related commands together, +and they are extensible in various ways. It is possible to add +sub-methods at any time to existing ensembles. Furthermore, it is +possible to extend ensemble methods via mixin classes. + +The following example defines an ensemble method for +string+. An +ensemble method is defined when the provide method name contains a +space. + +[[xmp-ensemble-methods]] +.Listing {counter:figure-number}: Ensemble Method +{set:xmp-ensemble-methods:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create C { + + # Define an ensemble method "string" with sub-methods + # "length", "tolower" and "info" + + :public method "string length" {x} {....} + :public method "string tolower" {x} {...} + :public method "string info" {x} {...} + ... + :create c1 +} + +# Invoke the ensemble method +c1 string length "hello world" +-------------------------------------------------- + +=== Method Resolution + +When a method is invoked, the applicable method is searched in the +following order: + +[align="center"] +++++ +Per-object Mixins -> Per-class Mixins -> Object -> Intrinsic Class Hierarchy +++++ + +In the case, no mixins are involved, first the object is searched for +a per-object method with the given name, and then the class hierarchy +of the object. The method can be defined multiple times on the search +path, so some of these method definitions might be _shadowed_ by the +more specific definitions. + +[[xmp-method-resolution]] +.Listing {counter:figure-number}: Method Resolution with Intrinsic Classes +{set:xmp-method-resolution:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create C { + :public method foo {} { return "C foo: [next]"} +} + +nx::Class create D -superclass C { + + :public method foo {} { return "D foo: [next]"} + + :create d1 { + :public method foo {} { return "d1 foo: [next]"} + } +} + +# Invoke the method foo +d1 foo +# result: "d1 foo: D foo: C foo: " + +# Query the precedence order from NX via introspection +d1 info precedence +# result: "::D ::C ::nx::Object" +-------------------------------------------------- + +Consider the example in +<>. When the method ++foo+ is invoked on object +d1+, the per-object method has the highest +precedence and is therefore invoked. The per-object methods shadows +the same-named methods in the class hierarchy, namely the method +foo+ +of class +D+ and the method +foo+ of class +C+. The shadowed methods +can be still invoked, either via the primitive +next+ or via method +handles (we used already method handles in the section about method +aliases). In the example above, +next+ calls the shadowed method and +add their results to the results of every method. So, the final result +contains parts from +d1+, +D+ and +C+. Note, that the topmost +next+ +in method +foo+ of class +C+ shadows no method +foo+ and simply +returns empty (and not an error message). + +The introspection method +info precedence+ provides information about +the order, in which classes processed during method resolution. + +[[xmp-method-resolution2]] +.Listing {counter:figure-number}: Method Resolution with Mixin Classes +{set:xmp-method-resolution2:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Class create M1 { + :public method foo {} { return "M1 foo: [next]"} +} +nx::Class create M2 { + :public method foo {} { return "M2 foo: [next]"} +} + +# +# "d1" is created based on the definitions of the last example +# +# Add the methods from "M1" as per-object mixin to "d1" +d1 mixin M1 + +# +# Add the methods from "M2" as per-class mixin to class "C" +C mixin M2 + +# Invoke the method foo +d1 foo +# result: "M1 foo: M2 foo: d1 foo: D foo: C foo: " + +# Query the precedence order from NX via introspection +d1 info precedence +# result: "::M1 ::M2 ::D ::C ::nx::Object" +-------------------------------------------------- + +The example in <> is +an extension of the previous example. We define here two additional +classes +M1+ and +M2+ which are used as per-object and per-class +mixins. Both classes define the method +foo+, these methods shadow +the definitions of the intrinsic class hierarchy. Therefore an +invocation of +foo+ on object +d1+ causes first an invocation of +method in the per-object mixin. + + +[[xmp-method-resolution3]] +.Listing {counter:figure-number}: Method Invocation Flags +{set:xmp-method-resolution3:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# +# "d1" is created based on the definitions of the last two examples, +# the mixins "M1" and "M2" are registered. +# +# Define a public per-object method "bar", which calls the method +# "foo" which various invocation options: +# +d1 public method bar {} { + puts [:foo] + puts [: -local foo] + puts [: -intrinsic foo] + puts [: -system foo] +} + +# Invoke the method "bar" +d1 bar +-------------------------------------------------- + +In the first line of the body of method +bar+, the method +foo+ is +called as usual with an implicit receiver, which defaults to the +current object (therefore, the call is equivalent to +d1 foo+). The +next three calls show how to provide flags that influence the method +resolution. The flags can be provided between the colon and the method +name. These flags are used rather seldomly but can be helpful in some +situations. + +The invocation flag +-local+ means that the method has to be resolved +from the same place, where the current method is defined. Since the +current method is defined as a per-object method, +foo+ is resolved as +a per-object method. The effect is that the mixin definitions are +ignored. The invocation flag +-local+ was already introduced int the +section about method protection, where it was used to call _private_ +methods. + +The invocation flag +-intrinsic+ means that the method has to be resolved +from the intrinsic definitions, meaning simply without mixins. The +effect is here the same as with the invocation flag +-local+. + +The invocation flag +-system+ means that the method has to be resolved +from basic - typically predefined - classes of the object system. This +can be useful, when script overloads system methods, but still want to +call the shadowed methods from the base classes. In our case, we have +no definitions of +foo+ on the base clases, therefore an error message +is returned. + +The output of <> is: +---- + M1 foo: M2 foo: d1 foo: D foo: C foo: + d1 foo: D foo: C foo: + d1 foo: D foo: C foo: + ::d1: unable to dispatch method 'foo' +---- + + +=== Parameters + +NX provides a generalized mechanism for passing values to either +methods (we refer to these as _method parameters_) or to objects +(these are called _object parameters_). Both kind of parameters +might have different features, such as: + +- Positional and non-positional parameters +- Required and non-required parameters +- Default values for parameters +- Value-checking for parameters +- Multiplicity of parameters + +TODO: complete list above and provide a short summary of the section + +Before we discuss method and object parameters in more detail, we +describe the parameter features in the subsequent sections based on +method parameters. + +==== Positional and Non-Positional Parameters + +If the position of a parameter in the list of formal arguments +(e.g. passed to a function) is significant for its meaning, this is a +_positional_ parameter. If the meaning of the parameter is independent +of its position, this is a _non-positional_ parameter. When we call a +method with positional parameters, the meaning of the parameters (the +association with the argument in the argument list of the method) is +determined by its position. When we call a method with non-positional +parameters, their meaning is determined via a name passed with the +argument during invocation. + +[[xmp-posnonpos]] +.Listing {counter:figure-number}: Positional and Non-Positional Method Parameters +{set:xmp-posnonpos:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Object create o1 { + + # + # Method foo has positional parameters: + # + :public method foo {x y} { + puts "x=$x y=$y" + } + + # + # Method bar has non-positional parameters: + # + :public method bar {-x -y} { + puts "x=$x y=$y" + } + + # + # Method baz has non-positional and + # positional parameters: + # + :public method baz {-x -y a} { + puts "x? [info exists x] y? [info exists y] a=$a" + } +} + +# invoke foo (positional parameters) +o1 foo 1 2 + +# invoke bar (non-positional parameters) +o1 bar -y 3 -x 1 +o1 bar -x 1 -y 3 + +# invoke baz (positional and non-positional parameters) +o1 baz -x 1 100 +o1 baz 200 +o1 baz -- -y +-------------------------------------------------- + +Consider the example in <>. The method ++foo+ has the argument list +x y+. This means that the first argument +is passed in an invocation like +o1 foo 1 2+ to +x+ (here, the value ++1+), and the second argument is passed to +y+ (here the value +2+). +Method +bar+ has in contrary just with non-positional arguments. Here +we pass the names of the parameter together with the values. In the +invocation +o1 bar -y 3 -x 1+ the names of the parameters are prefixed +with a dash ("-"). No matter whether in which order we write the +non-positional parameters in the invocation (see line 30 and 31 in +<>) in both cases the variables +x+ +and +y+ in the body of the method +bar+ get the same values assigned +(+x+ becomes +1+, +y+ becomes +3+). + +It is certainly possible to combine positional and non-positional +arguments. Method +baz+ provides two non-positional parameter (+-y+ +and +-y+) and one positional parameter (namely +a+). The invocation in +line 34 passes the value of +1+ to +x+ and the value of +100+ to +a+. +There is no value passed to +y+, therefore value of +y+ will be +undefined in the body of +baz+, +info exists y+ checks for the +existence of the variable +y+ and returns +0+. + +The invocation in line 35 passes only a value to the positional +parameter. A more tricky case is in line 36, where we want to pass ++-y+ as a value to the positional parameter +a+. The case is more +tricky since syntactically the argument parser might consider +-y+ as +the name of one of the non-positional parameter. Therefore we use +--+ +(double dash) to indicate the end of the block of the non-positional +parameters and therefore the value of +-y+ is passed to +a+. + +==== Optional and Required Parameters + +Per default positional parameters are required, and non-positional +parameters are optional (they can be left out). By using parameter +options, we can as well define positional parameters, which are +optional, and non-positional parameters, which are required. + +[[xmp-optional-req]] +.Listing {counter:figure-number}: Optional and Required Method Parameters +{set:xmp-optional-req:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Object create o2 { + + # + # Method foo has one required and one optional + # positional parameter: + # + :public method foo {x:required y:optional} { + puts "x=$x y? [info exists y]" + } + + # + # Method bar has one required and one optional + # non-positional parameter: + # + :public method bar {-x:required -y:optional} { + puts "x=$x y? [info exists y]" + } +} + +# invoke foo (one optional positional parameter is missing) +o2 foo 1 +-------------------------------------------------- + +The example in <> defined method +foo+ +with one required and one optional positional parameter. For this +purpose we use the parameter options +required+ and +optional+. The +parameter options are separated from the parameter name by a colon. If +there are multiple parameter options, these are separated by commas +(we show this in later examples). + +The parameter definition +x:required+ for method +foo+ is equivalent +to +x+ without any parameter options (see e.g. previous example), +since positional parameters are per default required. The invocation +in line 21 of <> will lead to an +undefined variable +y+ in method +foo+, because no value us passed to +the optional parameter. Note that only trailing positional parameters might be +optional. If we would call method +foo+ of <> with only one argument, the system would raise an +exception. + +Similarly, we define method +bar+ in <> with one required and one optional non-positional +parameter. The parameter definition +-y:optional+ is equivalent to ++-y+, since non-positional parameter are per default optional. +However, the non-positional parameter +-x:required+ is required. If we +invoke +bar+ without it, the system will raise an exception. + +==== Default Values for Parameters + +Optional parameters might have a default value, which will be used, +when not value is provided for this parameter. Default values can be +specified for positional and non-positional parameters. + +[[xmp-default-value]] +.Listing {counter:figure-number}: Method Parameters with Default Values +{set:xmp-default-value:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Object create o3 { + + # + # Positional parameter with default value: + # + :public method foo {x:required {y 101}} { + puts "x=$x y? [info exists y]" + } + + # + # Non-positional parameter with default value: + # + :public method bar {{-x 10} {-y 20}} { + puts "x=$x y? [info exists y]" + } +} + +# use default values +o3 foo +o3 bar +-------------------------------------------------- + +In order to define a default value, the parameter specification must +be of the form of a 2 element list, where the second argument is the +default value. See for an example in +<>. + +==== Value Constraints + +NX provides value constraints for all kind of parameters. By +specifying value constraints a developer can restrict the permissible +values for a parameter and document the expected values in the source +code. Value checking in NX is conditional, it can be turned on or off +in general or on a per-usage level (more about this later). The same +mechanisms can be used not only for input value checking, but as well +for return value checking (we will address this point as well later). + +===== Built-in Value Constraints + +NX comes with a set of built-in value constraints, which can be +extended on the scripting level. The built-in checkers are either the +native checkers provided directly by the Next Scripting Framework (the +most efficient checkers) or the value checkers provided by Tcl through ++string is ...+. The built-in checkers have as well the advantage that +they can be used also at any time during bootstrap of an object +system, at a time, when e.g. no objects or methods are defined. The +same checkers are used as well for all C-implemented primitives of NX +and the Next Scripting Framework. + +[[img-value-checkers]] +image::value-checkers.png[align="center",title="General Applicable Value Checkers in NX"] +{set:img-value-checkers:Figure {figure-number}} + +<> shows the built-in +general applicable value checkers available in NX, which can be used +for all method and object parameters. In the next step, we show how to +use these value-checkers for checking permissible values for method +parameters. Then we will show, how to provide more detailed value +constraints. + +[[xmp-value-check]] +.Listing {counter:figure-number}: Method Parameters with Value Constraints +{set:xmp-value-check:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Object create o4 { + + # + # Positional parameter with value constraints: + # + :public method foo {x:integer o:object,optional} { + puts "x=$x o? [info exists o]" + } + + # + # Non-positional parameter with value constraints: + # + :public method bar {{-x:integer 10} {-verbose:boolean false}} { + puts "x=$x y=$y" + } +} + +# The following invocation raises an exception +o4 foo a +-------------------------------------------------- + +Value contraints are specified as parameter options in the parameter +specifications. The parameter specification +x:integer+ defines +x+ as +a required positional parmeter which value is constraint to an +integer. The parameter specification +o:object,optional+ shows how to +combine multiple parameter options. The parameter +o+ is an optional +positional parameter, its value must be an object (see +<>). Value constraints are +specified exactly the same way for non-positional parameters (see +method +bar+ in <>). + +[[xmp-check-parameterized]] +.Listing {counter:figure-number}: Parameterized Value Constraints +{set:xmp-check-parameterized:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# +# Create classes for Person and Project +# +nx::Class create Person +nx::Class create Project + +nx::Object create o5 { + # + # Parameterized value constraints + # + :public method work { + -person:object,type=Person + -project:object,type=Project + } { + # ... + } +} + +# +# Create a Person and a Project instance +# +Person create gustaf +Project create nx + +# +# Use method with value constraints +# +o5 work -person gustaf -project nx +-------------------------------------------------- + +The native checkers +object+, +class+, +metaclass+ and +baseclass+ can +be further specialized with the parameter option +type+ to restrict +the permissible values to instances of certain classes. We can use for +example the native value constraint +object+ either for testing +whether an argument is some object (without further constraints, as in +<>, method +foo+), or we can +constrain the value further to some type (direct or indirect instance +of a class). This is shown by method +work+ in +<> which requires +the parameter +-person+ to be an instance of class +Person+ and the +parameter +-project+ to be an instance of class +Project+. + +===== Scripted Value Constraints + +The set of predefined value checkers can be extended by application +programs via defining methods following certain conventions. The user +defined value checkers are defined as methods of the class +nx::Slot+ +or of one of its subclasses or instances. We will address such cases +in the next sections. In the following example we define two new +value checkers on class +nx::Slot+. The first value checker is called ++groupsize+, the second one is called +choice+. + +[[xmp-user-types]] +.Listing {counter:figure-number}: Scripted Value Checker for Method Parameters +{set:xmp-user-types:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# +# Value checker named "groupsize" +# +::nx::Slot method type=groupsize {name value} { + if {$value < 1 || $value > 6} { + error "Value '$value' of parameter $name is not between 1 and 6" + } +} + +# +# Value checker named "choice" with extra argument +# +::nx::Slot method type=choice {name value arg} { + if {$value ni [split $arg |]} { + error "Value '$value' of parameter $name not in permissible values $arg" + } +} + +# +# Create an application class D +# using the new value checkers +# +nx::Class create D { + :public method foo {a:groupsize} { + # ... + } + :public method bar {a:choice,arg=red|yellow|green b:choice,arg=good|bad} { + # ... + } +} + +D create d1 + +# testing "groupsize" +d1 foo 2 +d1 foo 10 + +# testing "choice" +d1 bar green good +d1 bar pink bad +-------------------------------------------------- + +In order to define a checker +groupsize+ a method of the name ++type=groupsize+ is defined. This method receives two arguments, ++name+ and +value+. The first argument is the name of the parameter +(mostly used for the error message) and the second parameter is +provided value. The value checker simply tests whether the provided +value is between 1 and 3 and raises an exception if this is not the +case (invocation in line 36 in <>). + +The checker +groupsize+ has the permissible values defined in its +method's body. It is as well possible to define more generic checkers +that can be parameterized. For this parameterization, one can pass an +argument to the checker method (last argument). The checker +choice+ +can be used for restricting the values to a set of predefined +constants. This set is defined in the parameter specification. The +parameter +a+ of method +bar+ in <> +is restricted to the values +red+, +yellow+ or +green+, and the +parameter +b+ is restricted to +good+ or +bad+. Note that the syntax +of the permissible values is solely defined by the definition of the +value checker in lines 13 to 17. The invocation in line 39 will be ok, +the invocation in line 40 will raise an exception, since +pink+ is not +allowed. + +If the same checks are used in many places in the program, +defining names for the value checker will be the better choice since +it improves maintainability. For seldomly used kind of checks, the +parameterized value checkers might be more convenient. + +==== Multiplicity + +***************************************************************************** +*Multiplicity* is used to define whether a parameter should receive +single or multiple values. +***************************************************************************** + +A multiplicity specification has a lower and an upper bound. A lower +bound of +0+ means that the value might be empty. A lower bound of +1+ +means that the parameter needs at least one value. The upper bound +might be +1+ or +n+ (or synonymously +*+). While the upper bound of ++1+ states that at most one value has to be passed, the upper bound of ++n+ says that multiple values are permitted. Other kinds of +multiplicity are currently not allowed. + +The multiplicity is written as parameter option in the parameter +specification in the form _lower-bound_.._upper-bound_. If no +multiplicity is defined the default multiplicity is +1..1+, which +means: provide exactly one (atomic) value (this was the case in the +previous examples). + +[[xmp-multiplicity]] +.Listing {counter:figure-number}: Method Parameters with Explicit Multiplicity +{set:xmp-multiplicity:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +nx::Object create o6 { + + # + # Positional parameter with an possibly empty + # single value + # + :public method foo {x:integer,0..1} { + puts "x=$x" + } + + # + # Positional parameter with an possibly empty + # list of values value + # + :public method bar {x:integer,0..n} { + puts "x=$x" + } + + # + # Positional parameter with a non-empty + # list of values + # + :public method baz {x:integer,1..n} { + puts "x=$x" + } +} +-------------------------------------------------- + +<> contains three examples for +positional parameters with different multiplicities. Multiplicity is +often combined with value constraints. A parameter specification of +the form +x:integer,0..n+ means that the parameter +x+ receives a list +of integers, which might be empty. Note that the value constraints are +applied to every single element of the list. + +The parameter specification +x:integer,0..1+ means that +x+ might be +an integer or it might be empty. This is one style of specifying that +no explicit value is passed for a certain parameter. Another style is +to use required or optional parameters. NX does not enforce any +particular style for handling unspecified values. + +All the examples in <> are for +single positional parameters. Certainly, multiplicity is fully +orthogonal with the other parameter features and can be used as well +for multiple parameters, non-positional parameter, default values, +etc. + +== Advanced Language Features + +... + +=== Objects, Classes and Meta-Classes + +... + +=== Resolution Order and Next-Path + +... + +=== Details on Method and Object Parameters + +The parameter specifications are used in NX for the following +purposes. They are used for + +- the specification of input arguments of methods and commands, for +- the specification of return values of methods and commands, and for +- the specification for the initialization of objects. + +We refer to the first two as method parameters and the last one as +object parameters. The examples in the previous sections all parameter +specification were specifications of method parameters. + +***************************************************************************** +*Method parameters* specify properties about permissible values passed +to methods. +***************************************************************************** + +The method parameter specify how methods are invoked, how the +actual arguments are passed to local variables of the invoked method +and what kind of checks should be performed on these. + +***************************************************************************** +*Object parameters* are parameters that specify, with what values +instance variables of objects are initialized and how these objects +could be parameterized. +***************************************************************************** + +Syntactically, object parameters and method parameters are the same, +although there are certain differences (e.g. some parameter options +are only applicable for objects parameters, the list of object +parameters is computed dynamically from the class structures, object +parameters are often used in combination with special setter methods, +etc.). Consider the following example, where we define the two +application classes +Person+ and +Student+ with a few properties. + +[[xmp-object-parameters]] +.Listing {counter:figure-number}: Object Parameters +{set:xmp-object-parameters:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# +# Define a class Person with properties "name" +# and "birthday" +# +nx::Class create Person { + :property name:required + :property birthday +} + +# +# Define a class Student as specialization of Person +# with and additional property +# +nx::Class create Student -superclass Person { + :property matnr:required + :property {oncampus:boolean true} +} + +# +# Create instances using object parameters +# for the initialization +# +Person create p1 -name Bob +Student create s1 -name Susan -matnr 4711 + +# Access property value via accessor method +puts "The name of s1 is [s1 name]" +-------------------------------------------------- + +The class +Person+ has two properties +name+ and +birthday+, where the +property +name+ is required, the property +birthday+ is not. The +class +Student+ is a subclass of +Person+ with the additional required +property +matnr+ and an optional property +oncampus+ with the +default value +true+ (see <>). The class diagram below visualizes these +definitions. + +[[img-object-parameters]] +image::object-parameter.png[align="center",title="System and Application Classes"] +{set:img-object-parameters:Figure {figure-number}} + +In NX, these definitions imply that instances of the class of +Person+ +have the properties +name+ and +birthday+ as _non-positional object +parameters_. Furthermore it implies that instances of +Student+ will +have the object parameters of +Person+ augmented with the object +parameters from +Student+ (namely +matnr+ and +oncampus+). Based on +these object parameters, we can create a +Person+ named +Bob+ and a ++Student+ named +Susan+ with the matriculation number +4711+ (see line +23 and 24 in <>). After the object +s1+ is created it has the +instance variables +name+, +matnr+ and +oncampus+ (the latter is +initialized with the default value). + +==== Object Parameters for all NX Objects + +The object parameters are not limited to the application defined +properties, also NX provides some predefined definitions. Since ++Person+ is a subclass of +nx::Object+ also the object parameters of ++nx::Object+ are inherited. In the introductory stack example, we used ++-mixin+ applied to an object to denote per-object mixins (see +<>). Since +mixin+ +is defined as a parameter on +nx::Object+ it can be used as an object +parameter +-mixin+ for all objects in NX. To put it in other words, +every object can be configured to have per-object mixins. If we would +remove this definition, this feature would be removed as well. + +As shown in the introductory examples, every object can be configured +via a scripted initialization block (the optional scripted block +specified at object creation as last argument; see +<> or +<>). The +scripted block and its meaning are as well defined by the means of +object parameters. However, this object parameter is positional (last +argument) and optional (it can be omitted). The following listing shows +(simplified) the object parameters of +Person p1+ and +Student s1+. + +[[xmp-object-parameter-list]] +.Listing {counter:figure-number}: Computed Actual Object Parameter (simplified) +{set:xmp-object-parameter-list:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +Object parameter for Person p1: + -name:required -birthday ... + -mixin:mixinreg,alias,1..n -filter:filterreg,alias,1..n _:initcmd,optional + +Object parameter for Student s1: + -matnr:required {-oncampus:boolean true} + -name:required -birthday ... + -mixin:mixinreg,alias,1..n -filter:filterreg,alias,1..n _:initcmd,optional +-------------------------------------------------- + +The actual values can be obtained via introspection via +Person info +parameter definition+. The object parameter types +mixinreg+ and ++filterreg+ are for converting definitions of filters and mixins. The +object parameter type +initcmd+ says that the content of this variable +will be executed in the context of the object being created (before +the constructor +init+ is called). More about the object parameter +types later. + +==== Object Parameters for all NX Classes + +Since classes are certain kind of objects, classes are parameterized +in the same way as objects. A typical parameter for a class definition +is the relation of the class to its superclass.In our example, we have +specified, that +Student+ has +Person+ as superclass via the +non-positional object parameter +-superclass+. If no superclass is +specified for a class, the default superclass is ++nx::Object+. Therefore +nx::Object+ is the default value for the +parameter +superclass+. + +Another frequently used parameter for classes is +-mixin+ to denote +per-class mixins (see e.g. the introductory Stack example in +<>), which is defined in +the same way. + +Since +Student+ is an instance of the meta-class +nx::Class+ it +inherits the object parameters from +nx::Class+ (see class diagram +<>). Therefore, one can +use e.g. +-superclass+ in the definition of classes. + +Since +nx::Class+ is a subclass of +nx::Object+, the meta-class ++nx::Class+ inherits the parameter definitions from the most general +class +nx::Object+. Therefore, every class might as well be configured +with a scripted initialization block the same way as objects can be +configured. We used actually this scripted initialization block in +most examples for defining the methods of the class. The following +listing shows (simplified) the parameters applicable for +Class +Student+. + +[[xmp-class-parameter-list]] +.Listing {counter:figure-number}: Computed Parameters for a Class (simplified) +{set:xmp-class-parameter-list:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +Object parameter for Class Student: + -mixin:mixinreg,alias,1..n -filter:filterreg,alias,1..n ... + {-superclass:class,alias,1..n ::nx::Object} ... +-------------------------------------------------- + +The actual values can be obtained via introspection via +nx::Class info +parameter definition+. + + +==== User defined Parameter Types + +More detailed definition of the object parameter types comes here. + +==== Slot Classes and Slot Objects + +In one of the previous sections, we defined scripted (application +defined) checker methods on a class named +nx::Slot+. In general NX +offers the possibility to define value checkers not only for all +usages of parameters but as well differently for method parameters or +object parameters + +[[img-slots]] +image::slots.png[align="center",title="Slot Classes and Objects"] +{set:img-slots:Figure {figure-number}} + + +==== Attribute Slots + + +Still Missing + +- return value checking +- switch +- initcmd ... +- subst rules +- converter +- incremental slots + +== Miscellaneous + +=== Profiling + +=== Unknown Handlers + +NX provides two kinds of unknown handlers: + +- Unknown handlers for methods +- Unknown handlers for objects and classes + +==== Unknown Handlers for Methods + +Object and classes might be equipped +with a method +unknown+ which is called in cases, where an unknown +method is called. The method unknown receives as first argument the +called method followed by the provided arguments + +[[xmp-unknown-method]] +.Listing {counter:figure-number}: Unknown Method Handler +{set:xmp-unknown-method:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +::nx::Object create o { + :method unknown {called_method args} { + puts "Unknown method '$called_method' called" + } +} + +# Invoke an unknown method for object o: +o foo 1 2 3 + +# Output will be: "Unknown method 'foo' called" +-------------------------------------------------- + +Without any provision of an unknown method handler, an error will be +raised, when an unknown method is called. + +==== Unknown Handlers for Objects and Classes + +The next scripting framework provides in addition to unknown method +handlers also a means to dynamically create objects and classes, when +these are referenced. This happens e.g. when superclasses, mixins, or +parent objects are referenced. This mechanism can be used to implement +e.g. lazy loading of these classes. Nsf allows to register multiple +unknown handlers, each identified by a key (a unique name, different +from the keys of other unknown handlers). + +[[xmp-unknown-class]] +.Listing {counter:figure-number}: Unknown Class Handler +{set:xmp-unknown-class:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +::nx::Class public class method __unknown {name} { + # A very simple unknown handler, showing just how + # the mechanism works. + puts "***** __unknown called with <$name>" + ::nx::Class create $name +} + +# Register an unknown handler as a method of ::nx::Class +::nsf::object::unknown::add nx {::nx::Class __unknown} + +::nx::Object create o { + # The class M is unknown at this point + + :mixin add M + # The line above has triggered the unknown class handler, + # class M is now defined + + puts [:info mixin classes] + # The output will be: + # ***** __unknown called with <::M> + # ::M +} +-------------------------------------------------- + +The Next Scripting Framework allows to add, query, delete and list unknown handlers. + +[[xmp-unknown-registration]] +.Listing {counter:figure-number}: Unknown Handler registration +{set:xmp-unknown-registration:Listing {figure-number}} +[source,tcl,numbers] +-------------------------------------------------- +# Interface for unknown handlers: +# nsf::object::unknown::add /key/ /handler/ +# nsf::object::unknown::get /key/ +# nsf::object::unknown::delete /key/ +# nsf::object::unknown::keys +-------------------------------------------------- + + +[bibliography] +.References + +- [[Zdun, Strembeck, Neumann 2007]] U. Zdun, M. Strembeck, G. Neumann: + Object-Based and Class-Based Composition of Transitive Mixins, + Information and Software Technology, 49(8) 2007 . + +- [[Neumann and Zdun 1999a]] G. Neumann and U. Zdun: Filters as a + language support for design patterns in object-oriented scripting + languages. In Proceedings of COOTS'99, 5th Conference on + Object-Oriented Technologies and Systems, San Diego, May 1999. + +- [[Neumann and Zdun 1999b]] G. Neumann and U. Zdun: Implementing + object-specific design patterns using per-object mixins. In Proc. of + NOSA`99, Second Nordic Workshop on Software Architecture, Ronneby, + Sweden, August 1999. + +- [[Neumann and Zdun 1999c]] G. Neumann and U. Zdun: Enhancing + object-based system composition through per-object mixins. In + Proceedings of Asia-Pacific Software Engineering Conference (APSEC), + Takamatsu, Japan, December 1999. + +- [[Neumann and Zdun 2000a]] G. Neumann and U. Zdun: XOTCL, an + object-oriented scripting language. In Proceedings of Tcl2k: The + 7th USENIX Tcl/Tk Conference, Austin, Texas, February 2000. + +- [[Neumann and Zdun 2000b]] G. Neumann and U. Zdun: Towards the Usage + of Dynamic Object Aggregations as a Form of Composition In: + Proceedings of Symposium of Applied Computing (SAC'00), Como, + Italy, Mar 19-21, 2000. + +- [[Neumann and Sobernig 2009]] G. Neumann, S. Sobernig: XOTcl 2.0 - A + Ten-Year Retrospective and Outlook, in: Proceedings of the Sixteenth + Annual Tcl/Tk Conference, Portland, Oregon, October, 2009. + +- [[Ousterhout 1990]] J. K. Ousterhout: Tcl: An embeddable command + language. In Proc. of the 1990 Winter USENIX Conference, January 1990. + +- [[Ousterhout 1998]] J. K. Ousterhout: Scripting: Higher Level + Programming for the 21st Century, IEEE Computer 31(3), March 1998. + +- [[Wetherall and Lindblad 1995]] D. Wetherall and C. J. Lindblad: Extending Tcl for + Dynamic Object-Oriented Programming. Proc. of the Tcl/Tk Workshop '95, + July 1995. + + + Index: doc/next-tutorial/object-class-appclass.graffle =================================================================== diff -u --- doc/next-tutorial/object-class-appclass.graffle (revision 0) +++ doc/next-tutorial/object-class-appclass.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,638 @@ + + + + + CanvasColor + + w + 1 + + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2009-12-29 16:06:59 +0100 + Creator + Gustaf A. Neumann + GraphDocumentVersion + 4 + GraphicsList + + + Class + LineGraphic + Head + + ID + 7 + + ID + 8 + Labels + + + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + + LabelVisible + YES + Offset + 0.0 + Position + 0.34574294090270996 + + + Points + + {328.652, 336.346} + {329, 372} + {289, 388} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 4 + + + + Bounds + {{244, 388}, {90, 36}} + Class + ShapedGraphic + ID + 7 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 s1: Stack} + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 6 + Points + + {318.496, 238.346} + {298.677, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 4 + + + + Class + LineGraphic + Head + + ID + 4 + + ID + 5 + Labels + + + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + + LabelVisible + YES + Offset + 0.0 + Position + 0.52006572484970093 + + + Points + + {190, 239.572} + {233, 255} + {206, 312} + {260.173, 301.068} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 2 + + + + Bounds + {{260.173, 238.346}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 4 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Stack} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 init\ +push\ +pop\ +} + + + TextPlacement + 0 + + + Class + LineGraphic + Head + + ID + 1 + + ID + 3 + Points + + {190, 163.797} + {224.145, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 2 + + + + Bounds + {{54, 159.173}, {136, 112}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 2 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Class} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 attribute\ +class-object\ +create\ +method\ +...} + + + TextPlacement + 0 + + + Bounds + {{221, 40}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 1 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Object} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 info\ +destroy\ +method\ +...} + + + TextPlacement + 0 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + IsPalette + NO + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + ChildOrdering + 0 + + LinksVisible + NO + MagnetsVisible + NO + ModificationDate + 2011-01-08 18:45:51 +0100 + Modifier + Gustaf A. Neumann + Orientation + 2 + PageBreaks + YES + PageSetup + + BAt0eXBlZHN0cmVhbYED6IQBQISEhAtOU1ByaW50SW5mbwGEhAhOU09iamVjdACFkoSE + hBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCUhAFpFpKEhIQITlNT + dHJpbmcBlIQBKxBOU0pvYkRpc3Bvc2l0aW9uhpKEmZkPTlNQcmludFNwb29sSm9ihpKE + mZkLTlNQYXBlclNpemWGkoSEhAdOU1ZhbHVlAJSEASqEhAx7X05TU2l6ZT1mZn2cgQJT + gQNKhpKEmZkUTlNWZXJ0aWNhbFBhZ2luYXRpb26GkoSEhAhOU051bWJlcgCdm4SXlwCG + koSZmQ9OU1BhZ2VzUGVyU2hlZXSGkoShm6KXAYaShJmZFE5TVmVydGljYWxseUNlbnRl + cmVkhpKkkoSZmRlOU1ByaW50UmV2ZXJzZU9yaWVudGF0aW9uhpKgkoSZmQ9OU1ByaW50 + QWxsUGFnZXOGkqCShJmZC05TUGFwZXJOYW1lhpKEmZkGaXNvLWE0hpKEmZkITlNDb3Bp + ZXOGkqSShJmZD05TU2NhbGluZ0ZhY3RvcoaShKGbhIQBZJ4BhpKEmZkOTlNQTVBhZ2VG + b3JtYXSGkoSEhA1OU011dGFibGVEYXRhAISEBk5TRGF0YQCUl4EVL4QHWzU0MjNjXTw/ + eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjwhRE9DVFlQRSBwbGlz + dCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cu + YXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lv + bj0iMS4wIj4KPGRpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBN + SG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8 + L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh + Z2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4K + CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ + CTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0 + PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9r + ZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwv + a2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJ + CTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVu + dGF0aW9uPC9rZXk+CgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwv + aW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5h + cHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNv + bS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50 + aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+CgkJCQk8cmVh + bD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh + Zzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJy + YXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVy + dGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl + dC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJp + bmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9y + bWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5 + PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+ + Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5 + PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29t + LmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxk + aWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2Fs + U2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxl + LnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVn + ZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUu + cHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk+Cgk8ZGljdD4KCQk8 + a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwv + a2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRv + cjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJ + PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJy + YXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0 + LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCQkJPHJl + YWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9hcnJheT4K + CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJ + CQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8 + L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVk + UGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp + Y2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwv + c3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50 + LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4K + CQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJ + CTxyZWFsPjgyNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc3PC9yZWFsPgoJCQkJCTwvYXJy + YXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5 + PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+ + CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVy + TmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + Y3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmlu + Zz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBl + ckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPmlzby1hNDwvc3RyaW5n + PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4K + CQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJ + CTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVz + dGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0 + PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8 + L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJp + bnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJPGFycmF5 + PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJ + CQkJPHJlYWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9h + cnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9r + ZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJh + eT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5h + ZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJ + PGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVh + bD4KCQkJCQkJPHJlYWw+ODI0PC9yZWFsPgoJCQkJCQk8cmVhbD41Nzc8L3JlYWw+CgkJ + CQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVG + bGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJ + PC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZv + LnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmlu + Zz5BNDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0 + ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJ + CQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + QVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNv + bS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxl + LnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8 + L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8 + c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+Cjwv + ZGljdD4KPC9wbGlzdD4KhpKEmZkNTlNSaWdodE1hcmdpboaShKGbrZ4AhpKEmZkWTlNI + b3Jpem9udGFsbHlDZW50ZXJlZIaSpJKEmZkVTlNIb3Jpem9uYWxQYWdpbmF0aW9uhpKg + koSZmQ1OU0pvYkZlYXR1cmVzhpKElpcAhpKEmZkMTlNMZWZ0TWFyZ2luhpKEoZutngCG + koSZmQtOU1RvcE1hcmdpboaShKGbrZ4AhpKEmZkSTlNSZXZlcnNlUGFnZU9yZGVyhpKg + koSZmQ5OU0JvdHRvbU1hcmdpboaShKGbrZ4AhpKEmZkKTlNMYXN0UGFnZYaShKGbopeC + f////4aShJmZC05TRmlyc3RQYWdlhpKkkoSZmQ1OU09yaWVudGF0aW9uhpKghoY= + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Frame + {{522, 232}, {537, 755}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{0, 3}, {522, 657}} + Zoom + 1 + + + Index: doc/next-tutorial/object-class-appclass.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/object-parameter.graffle =================================================================== diff -u --- doc/next-tutorial/object-parameter.graffle (revision 0) +++ doc/next-tutorial/object-parameter.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,2498 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 138.17.0.133677 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {571, 818}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2009-12-29 16:06:59 +0100 + Creator + Gustaf A. Neumann + DisplayScale + 1.000 cm = 1.000 cm + GraphDocumentVersion + 6 + GraphicsList + + + Bounds + {{87.3028, 305.102}, {75, 24}} + Class + ShapedGraphic + ID + 39 + Line + + ID + 38 + Position + 0.31776151061058044 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 22 + + ID + 38 + Points + + {139.695, 285.173} + {146, 307.619} + {98, 330.354} + {165, 347.301} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 14 + + + + Bounds + {{356.22, 385}, {90, 36}} + Class + ShapedGraphic + ID + 27 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 s1 : Student} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 4 + + ID + 26 + Points + + {254.487, 337.5} + {306.859, 271.692} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 22 + + + + Class + TableGroup + Graphics + + + Bounds + {{165, 337.5}, {136, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 23 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Student} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{165, 351.5}, {136, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 24 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 matnr\ +oncampus true} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{165, 379.5}, {136, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 25 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 23 + 24 + 25 + + + GroupConnect + YES + ID + 22 + + + Bounds + {{371.257, 288.979}, {75, 24}} + Class + ShapedGraphic + ID + 9 + Line + + ID + 8 + Position + 0.57259494066238403 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 7 + + ID + 8 + Points + + {365.798, 271.692} + {412, 305} + {394.98, 325} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 4 + + + + Bounds + {{349.98, 325}, {90, 36}} + Class + ShapedGraphic + ID + 7 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 p1 : Person} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 1 + + ID + 6 + Points + + {321.522, 217.692} + {301.382, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 4 + + + + Bounds + {{199.624, 285.464}, {75, 24}} + Class + ShapedGraphic + ID + 10 + Line + + ID + 5 + Position + 0.79031980037689209 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 4 + + ID + 5 + Points + + {190, 242.283} + {233, 255} + {206, 312} + {279.268, 271.692} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 14 + + + + Class + TableGroup + Graphics + + + Bounds + {{260.346, 217.692}, {136, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 11 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Person} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{260.346, 231.692}, {136, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 12 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 name\ +birthday} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{260.346, 259.692}, {136, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 21 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 11 + 12 + 21 + + + GroupConnect + YES + ID + 4 + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 1 + + ID + 3 + Points + + {190, 167.939} + {227.538, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 14 + + + + Class + TableGroup + Graphics + + + Bounds + {{54, 159.173}, {136, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 15 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Class} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{54, 173.173}, {136, 42}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 16 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 mixin\ +superclass nx::Object\ +...} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{54, 215.173}, {136, 70}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 17 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 attribute\ +class-object\ +create\ +method\ +...} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 15 + 16 + 17 + + + GroupConnect + YES + ID + 14 + + + Class + TableGroup + Graphics + + + Bounds + {{221, 40}, {136, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 18 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Object} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{221, 54}, {136, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 19 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 mixin\ +...} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{221, 82}, {136, 56}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 20 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 info\ +destroy\ +method\ +...} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 18 + 19 + 20 + + + GroupConnect + YES + ID + 1 + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 27 + + ID + 36 + Points + + {296.117, 391.5} + {323, 403} + {355.72, 403} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 22 + + + + Bounds + {{278.76, 404.823}, {75, 24}} + Class + ShapedGraphic + ID + 37 + Line + + ID + 36 + Offset + -15 + Position + 0.42781621217727661 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2011-01-31 12:13:07 +0100 + Modifier + Gustaf A. Neumann + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 12 + + NSJobFeatures + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCEhAhOU09iamVjdACFhAFpAIY= + + NSLeftMargin + + float + 12 + + NSPagesPerSheet + + int + 1 + + NSPaperSize + + size + {595, 842} + + NSPrintAllPages + + int + 0 + + NSReversePageOrder + + int + 0 + + NSRightMargin + + float + 12 + + NSTopMargin + + float + 12 + + + PrintOnePage + + QuickLookPreview + + JVBERi0xLjMKJcTl8uXrp/Og0MTGCjUgMCBvYmoKPDwgL0xlbmd0aCA2IDAgUiAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHFmU1vHLkRhu/9K3iUD2rzo8kmfYyS + APFld2MBOSz24IwlWIZke2e8gfPv8xSb5HB6Wh/eSywIM26RRdbXW29V/65+Ub8rzY+f + jYomqv2N+pf6rF5fHYzaHZTJP4edutSjV/LbLbxVr3++2e9uvn774/39sL9DlPExi5uj + skarELzaPajX/3gw6q9f8mF1hdd5xWw5J6+w6xUuLCumNCwr3HpFsmpyypt5jHYuYqb1 + ojDlRTEvKpL8ehFnISnY1Ek6O85Nyk5pdFNQ3pnR6VjEhbU4b44rJysry+3m9UpRssqc + e5nH041dPBSVc3FMUU2TLeLimbgJF6CwMbhq9zBg+fPL6WWNdXmNeGfL9lmOX+TIGjdU + D3YXmvxorXJxdaHX/7y5f//t7j83V1/uv+zvHm6+7e92igixcxxt0BNb0hjmENXsMcBA + 2BFNVwfkHNCWgCOWstqXRjkTlk2TNqORTcTDX65VWhYkdeksqog616j8dzOiobq+Vb+q + i7tXErpWXXyuXw7fXhHIPHlfn7Q/7W7qI5XXDBdf6oPbV+o3df1W/e2aKDbqLb+fkI+p + ea7VhyVjrt7lK2n17qpXQEtqSaw47UdtiA6X/BhdDIpnRo+zGDHFcU4OPVB3crMSbWfH + F2cd/3FqRwDYMTmbhklPYzJkl5umMZqJe7DAeY+osvYdF61pLBmerWqTpMGEcOvHEGY3 + yKXcOGvNM5PGKfDHe56F0TmNLIt8P8uzj+psN9e/RfBbfj8Nvy6G6ByX9RZntY0ukQ2O + ZO2OFcW98647dnDJjWZC75Nju92inck/xIoFRELE6WSTD4Jht9VHw+Z1WE/IHpcXW21G + n41JzTmBB2JOj1pjluudKllwyedlcOrSzESf6qLv4u7zLfFz/WkJmu4iRaREBCLXgtxK + DlH8oYZhC9AWxfsSosPFf/sQPT+tJM3qNEOinNya0x5uXg1L0tRU+VjPb/nAjY758Ohh + SBFzDefmspKrJ9Yax/ForBq4pnfxjHvFZzYueNEde4w0XAsALsskEp51rdcv98NDg5Pv + 7Rvo0SzRR1t2MlVucXKxxEbgnHngQiwx1LDZtgRFTVQ00xLsj1liWnLCZIB91hJQgM2I + nBZX2QKrAyGC0hlDv9fAePPmp/Lo3+XzU/lsIbura4mqYrHhCFHN03jPA3NS0UXFWT+u + Ikut8ZQEV5ZKXDylpgFnfWh0YSP5bFGWGjLUGtIKRU2H+rlvQYDSS8b8Ub/UNaj/21AL + R+en568CfzpNEey+u6+p2S51OFy2rGzXwPjLfY7WP1p94WG5JFBdu4tsJ8LRIiTjUlV3 + +ya33aNXmEo55Er5IwrDPs/0BYqyIsNFFf9yKOoUO03CDThyQPqPwBGRF/QxSCf7OCIJ + Gs1UsxKkcLcXBGmAnJEB2w653IqMH4EmsUw54cmM74nUoUX21xqCLQb2hGWJtxYOh8PC + oTrm9f1NgYT6+dOrIaPInw3bEx2kZD1Sm88iK0Nsq8xriB3Eu8KrCgQ9hbLiXZ+ad5el + HQQNazKbbQ+tLh3LOQSt0FZI7IK2w0WHtlfV4Fj+lM0e6l/40grTJhs1ifIAGiYXhZBZ + eGeKEFAzQUBN5nyiSeF3ZyIkdKyFJwZvBiOtiZA4kWPHYGJEjh7TBNu9F4ZG3yScS1RP + cNVM7Mpu0LvtfrdVE2gZlraLm0kzlWtfTqRG9LauN9R9FhcFusXjPlGs/tX72KTa3ALf + nkmTTKzrLc1flbas7xyOuVbdi0W6tIxzbQSFR65o2OUG6cPrC4a3nBI03HSpOz1jGzbO + iAaR1TKvVbL9CmiHI/ls9zhhmuvsaWbysXOWEJXh3Kw5hopzLX18NetZHj1uVjqF0omf + m3Ujl34+ola1b8sY6ii5NEi+Hc3cN3ldOWuM06RE00VbboEMY9KSAsC3nv1gaZAjLYl1 + eoxhlgECLZqe5YlT1tOk801aMRidDUESBzJDRwR9pEvWabTyxOowOGKG1YZuzehAmziN + c6TrsB6ommTiEuFCCKHLZhttsmWiIBbdVVKUZzoaTMpBahK5GGB9fvZkMU3kA0cLmMGS + ZnKXK5K6GpvEHMAB1Eo5c+vWodvaOkH1RCdYN2IIUMJhmnYmxppHHaTVbGfaSTp+QZCP + XK1ct9sqiQeF4Yeky3fHwMpjNu1oytCLkkC/RjlN/JufHjRYN2NAEWAZdYmAhQ//3wcN + W3HngFRv4as1b6SlnsYQUxoEZXWMHrs9h+BOpgxTErJN9++ZggF0TAnAaALRw3Gw5MBE + gJHSNBNcRsZVzCWyT7Z2FzA8nR86dsnoys+KqoPEvkk/Q1uxe9nh6BTzjudok0uMRDiB + rFu81kMsjdAGFnwttdNUJKiU5U39AlqUVnhf16zQIlfnl6GF3AvLEYkukZvzCGJ4zC2z + MB3gZJYhpdZGpj04wAamiHiC8mSYzTAh0gIXE2U6BmfBA0CGIRKr9Rg8lcgZSg1TymIK + Md0q9Un8nPqOsu8k82WAx5xFxkBSn4wh+CnGIEfAwY4EylM64mK03FrycL0XDfrUB10+ + bDu0nGk5aJaRUnemINYMyvRn2hmAC4bYO57Z7T1JfQdcIROFmLB5ZgB5rJiT3y39I2XK + DhvDxUkzdss7KT+anU+kfDevkCa41cxWqdtUppXK9qf1bFHV2eJwcTJbPCunMuWbIErw + Mun4n2E9EmN5LohB+x3ZWiIJ5y7PH2M6YoAsIc9+5cxl3lLSentGBhxMYIXMnJ8eabWm + +qGZqBKOZipS7ZhQHfRJyexOGfoEB6u3+E3rjJvwXTv3gfSvTXtJ8taz1DvtW9dzQr22 + nUT5LiYvA+3u7ke6IENb6kxd+RysZaUBjS1UQ+kNVHv3jUvnnoAhXf5slAcrZIKDepsW + brcUTjFFeMByVSkJkerAQNZGO8JbLJlKRJDsefi7nfDkYpJhs2RtDEC/yGGCPcv7EfAv + piByZACdbIItwRiDmZZyL7Py9e4Sg6vS4nk9IPPzUloWplln9Fs+gHYsry1eWFpkEs8J + k9lywnZpaVXisdoyXDzrJyVDj6OfniKiOe3hnz5KGYESz3Pu6QyUCgYozygNc27AhM7J + GxjmFylKMwW3cxScYBLlQmiA9mjqZLI2AcnU1eho8uQ9BFSBNKPM8nJgdDS/bJCXMkJf + WTOmEBICoXbwEEo4/JOgGTKecBWncwnr3dheTUi3GJCR362ZeYpEC7Eg0QIdtdQMFyLF + QFQyidbcyyuMlKROQQ43dvdVibJ3XpUWq5VjJfii5azuWIISIs1wqDtWIhg9pFQdj82h + W3aLdqZyUhGqqW5qosjzpsNXTkoGLJy0jHClPuWXX8Np+wgfFQmRykYLIQJeVqCWl18F + 1xr6/ZkCpXKBajPMX/4HJf89hQplbmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKMjU0Mgpl + bmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJj + ZXMgNyAwIFIgL0NvbnRlbnRzIDUgMCBSIC9NZWRpYUJveCBbMCAwIDU3MSA4MThdCj4+ + CmVuZG9iago3IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9J + bWFnZUMgL0ltYWdlSSBdIC9Db2xvclNwYWNlIDw8IC9DczIgMjUgMCBSCi9DczEgOCAw + IFIgPj4gL0ZvbnQgPDwgL0YyLjAgMjcgMCBSIC9GMS4wIDI2IDAgUiA+PiAvWE9iamVj + dCA8PCAvSW04IDIzIDAgUgovSW0zIDEzIDAgUiAvSW0yIDExIDAgUiAvSW01IDE3IDAg + UiAvSW02IDE5IDAgUiAvSW0xIDkgMCBSIC9JbTcgMjEgMCBSIC9JbTQKMTUgMCBSID4+ + ID4+CmVuZG9iagoyMyAwIG9iago8PCAvTGVuZ3RoIDI0IDAgUiAvVHlwZSAvWE9iamVj + dCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDIyNCAvSGVpZ2h0IDExNiAvSW50ZXJwb2xh + dGUKdHJ1ZSAvQ29sb3JTcGFjZSAyOCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01h + c2sgMjkgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUg + Pj4Kc3RyZWFtCngB7dCBAAAAAMOg+VMf4QKFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBv7AADCPAAEKZW5kc3RyZWFtCmVuZG9iagoyNCAwIG9iagozNjQKZW5k + b2JqCjEzIDAgb2JqCjw8IC9MZW5ndGggMTQgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0 + eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWlnaHQgNzIgL0ludGVycG9sYXRlCnRydWUg + L0NvbG9yU3BhY2UgMjggMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDMxIDAg + UiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4Ae3QMQEAAADCoPVPbQ0PiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGPgaGAqvAAEKZW5kc3RyZWFtCmVuZG9iagoxNCAwIG9iagozMjEKZW5k + b2JqCjExIDAgb2JqCjw8IC9MZW5ndGggMTIgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0 + eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWlnaHQgMTAwIC9JbnRlcnBvbGF0ZQp0cnVl + IC9Db2xvclNwYWNlIDI4IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayAzMyAw + IFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl + YW0KeAHt0DEBAAAAwqD1T20LL4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDLwHBnJfAAEKZW5kc3RyZWFtCmVuZG9iagox + MiAwIG9iago0MzcKZW5kb2JqCjE3IDAgb2JqCjw8IC9MZW5ndGggMTggMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWlnaHQgMTI4IC9J + bnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDI4IDAgUiAvSW50ZW50IC9QZXJjZXB0 + dWFsIC9TTWFzayAzNSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0 + ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20JT4hAYcCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMG/gMD2g8AAQplbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCjU1MwplbmRvYmoKMTkg + MCBvYmoKPDwgL0xlbmd0aCAyMCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0lt + YWdlIC9XaWR0aCAzMTYgL0hlaWdodCA2OCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JT + cGFjZSAyOCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgMzcgMCBSIC9CaXRz + UGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAB + DQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBp4HBvvQAAEKZW5kc3Ry + ZWFtCmVuZG9iagoyMCAwIG9iagozMDQKZW5kb2JqCjkgMCBvYmoKPDwgL0xlbmd0aCAx + MCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMTYgL0hl + aWdodCAxNTYgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMjggMCBSIC9JbnRl + bnQgL1BlcmNlcHR1YWwgL1NNYXNrIDM5IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9G + aWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQdviEBhwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABA8/AAEHOAAEKZW5kc3RyZWFtCmVuZG9i + agoxMCAwIG9iago2NjkKZW5kb2JqCjIxIDAgb2JqCjw8IC9MZW5ndGggMjIgMCBSIC9U + eXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWlnaHQgMTAy + IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDI4IDAgUiAvSW50ZW50IC9QZXJj + ZXB0dWFsIC9TTWFzayA0MSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9G + bGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20PBxEoDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDA + z8AAeccAAQplbmRzdHJlYW0KZW5kb2JqCjIyIDAgb2JqCjQ0NQplbmRvYmoKMTUgMCBv + YmoKPDwgL0xlbmd0aCAxNiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdl + IC9XaWR0aCAzMTYgL0hlaWdodCAxODQgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3Bh + Y2UgMjggMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDQzIDAgUiAvQml0c1Bl + ckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QgQAA + AADDoPlTX+AIhVBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwICBPzCpfgABCmVuZHN0cmVhbQplbmRvYmoKMTYgMCBvYmoKNzg0CmVuZG9iagoz + MyAwIG9iago8PCAvTGVuZ3RoIDM0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAv + SW1hZ2UgL1dpZHRoIDMxNiAvSGVpZ2h0IDEwMCAvQ29sb3JTcGFjZQovRGV2aWNlR3Jh + eSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2d609TaRDGQQql9xZKC73YesqtraUeqVao2pI2 + KAJeUNy6CkGLxrLFrsbGRtQtYbWxUQSFcIkiSwQDLAHTICFi9l/bOa0ClfLK+eKXM88n + kgkfzi8z73sOzDyTk4NCAkgACSABJIAEfj2BXFSKACvy8Bv7tpTHWW0x2AdI9oAwzQ14 + 8Xj5KCDA4wEMBuPP8KXIpbEV8PmFaQk4qW8Pz+cXpAH+hN43cvn5BYBNIBSKRCKxWCzh + qODRAYBQKCgsZPjxmOTbNfcYdHlQqQAOsIklUqlMLldwWHK5TCqVAEEh4EvT2wVeCh3k + HENOIpUpFEXFSmVJiUql5qRUqpISpbK4SKGQSSUMPcg9SL3s8JisY5KOIScHbip1aZlG + o9Xp9JyUTqfVaMpK1SrgJ0/Rg9Rj4GW5cFPo4KATiYEcgANqeoPReIAycVTUAaPRoAeC + gA/oiUXMsZcdXi5z1vEFkHSKYlWpBrhRporKqmqz2WKxck4Wi9lcXVVZYaKAn6ZUVayA + 1BPwmRtjZ+JB2gG6QpFEplCqNXojVV5pthy02e00TR/moOCx7XbbQYu5spwy6jVqpUIm + gczL52WpWkg7uCaEKXRaA1VRbbXZ6dojR5119SAXx8Q8c53z6JFa2m6zVldQBm0KnhAu + jCyJlwtpVygUSxXKUq3BVGWtoR3OOtcJt6fB6/X6OCd46AaP+4Srzumga6xVJoO2VKmQ + ioWFkHg/Fm067USATq01lptttOOYy93gazzd1NzSepaDam1pbjrd6Gtwu445aJu53Mhk + nlSULfEYdlCxckBnKDfba53HPd5TZ1rPtV1sv+znpC63X2w713rmlNdz3FlrN5czZSuX + QOLtKFoo2YJCkbRIpTGYzDWOerevqeXCJf/Vjs6uG4FAN+cUCNzo6uy46r90oaXJ5653 + 1JhNBo2qiEm8HUWbuw/eTyDtSvVUla223tPYfL79SkdX4Fbwj1DvnTDndKc39EfwVqCr + 40r7+eZGT32trYrSl0LiwXvKjwceU7Jw2qk0xgor7XQ3trT5r12/GQyF792PPIhyUA8i + 9++FQ8Gb16/521oa3U7aWmHUqJgTD4o289MixU5WrNZT1TWO4z5A1xkI9t6NRPseP4n1 + c1CxJ4/7opG7vcFAJ8DzHXfUVFN6dbEsK7sCgViuLDOUW+ljnqbz/s7unnAk+jg28DT+ + PMFBPY8/HYg9jkbCPd2d/vNNnmO0tdxQppSLBQU78o5XIJAwJVtpc7i8re3XAj1/Rvpi + f8cTL18Nveaghl69TMT/jvVF/uwJXGtv9boctkqmaCUCuCx+qFkeXygtUuuoarvz5KkL + V67fDkf6+p8lBodHRsfHJzin8fHRkeHBxLP+vkj49vUrF06ddNqrKZ26SCrkZ2EnksJx + Z7LQdQ1nLnXcDAG6+IuhkbHJt1Pvpzmn91NvJ8dGhl7EAV7oZselMw11tMUEB55UlIUd + XLPKsv0VB2uhZP1dwbvRv569GB6deDc982F2jnOa/TAz/W5idPjFs7+id4Ndfija2oMV + +8uUcNHuyDt4RZEpmePuyInGc78HQpFHA4mh0cmpf2Y/zi8sck4L8x9n/5maHB1KDDyK + hAK/n2s8cYQ58JTMRfvjeQfs5MCuyu50n27ruBWOxuKDIxNTM3MLi0vLK5zT8tLiwtzM + 1MTIYDwWDd/qaDvtdtqrgJ08KzuxvERzAK4KT9PFzuC9hwOJ4bF3gG5p5VOSg/q0sgTw + 3o0NJwYe3gt2XmzywGVxQFMiF2fLO7GiREuZD9U1NLd39dx/9PTlm8np2fmlleTq5zXO + 6fNqcmVpfnZ68s3Lp4/u93S1NzfUHTJT2hLFLuxUOspM13tbLt8IRZ7EB0ffznz8dzm5 + urbOQa2tJpf//TjzdnQw/iQSunG5xVtPmymdand28IoC7H4L9D6IPX81NvVhfukToPuy + wTl9WV9b/bQ0/2Fq7NXz2IPewG8MO4vpp+xa/YE70f7E8Pj72YXl5GdA95Vz2viy/jm5 + vDD7fnw40R+9E4CXlN3YwZ+gCsUKlS6Vd1nY/ccxfSWzy/ire25ePnzOwmeF9bDLd9bf + HYa8ez0xPbe4klxb3/jKMXLwuF831teSK4tz0xOvIe/C3f6zPtdhK3xYwAdtfh6yI2UE + siPRIceQHZkPKYrsSHTIMWRH5kOKIjsSHXIM2ZH5kKLIjkSHHEN2ZD6kKLIj0SHHkB2Z + DymK7Eh0yDFkR+ZDiiI7Eh1yDNmR+ZCiyI5EhxxDdmQ+pCiyI9Ehx5AdmQ8piuxIdMgx + ZEfmQ4oiOxIdcgzZkfmQomzY4f+2M0iy+d92zk/YYU/F7j0VGeywl2cDWipY9/JgD9n3 + djm2PWTYu7jZo8m2dxF7Zrf1BrPrmcVe7W0d6Sx7tXFGYNskBKsZAR7OpmwfwGE1m8Lj + 40zUtskvdjNROIu3feCQ3SwezoBmTLqymQHNw9njjAlrNrPHjF8AzrxvDfezmnlHr4UM + RwkWXgvo8ZFpY8LG4wO9ZTLtc9h5y6CnUaZ1ExtPI8bCDb20Nl3DWHhp5aCHW4ZPHRsP + N2CH3oFbBolsvQPRs3K7NScbz0om8dArddMTlpVXKrBjqhY9ejcdiVl49KbhoTf0dyNs + Nt7QOehJnuG9zsqTPA0PvfC3zP/37oWfk4KX2iSAOxhg7wSrHQzg6vZtgwWzMgV3f6S2 + f+x19wdjiZeitw93zmzu29nzzpmUoSDuOkqvd2KW9HzT3nYdpeh9Rwi/gtoigj8hASSA + BJAAEkACv47A/z2H6OAKZW5kc3RyZWFtCmVuZG9iagozNCAwIG9iagoyMDg1CmVuZG9i + ago0MyAwIG9iago8PCAvTGVuZ3RoIDQ0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlw + ZSAvSW1hZ2UgL1dpZHRoIDMxNiAvSGVpZ2h0IDE4NCAvQ29sb3JTcGFjZQovRGV2aWNl + R3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIg + 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 + y+MLBEKRSMzgiERCgYDP48LM0UMHZ11CfGw62FqYPPrGoI89FpsDgFwej8dnaODRAYDD + YQMczBwt92s6+sL4rgd84AeA0bAZmR8Pn0q7JSf9Vi563dJ6CYmJiUk0IAnNlkiPHDpz + P049eviifvTPQ+A3GZrvzx/9E0j+w/N3/gI/TwICf8eK/AwRIAJEgAgQASLw3xb4N+qS + 5f0KZW5kc3RyZWFtCmVuZG9iago0NCAwIG9iagozNjAwCmVuZG9iagozNSAwIG9iago8 + PCAvTGVuZ3RoIDM2IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dp + ZHRoIDMxNiAvSGVpZ2h0IDEyOCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw + b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl + ID4+CnN0cmVhbQp4Ae3d60+TdxQHcJBC7zdon0KBtbbcSi1dpa4CupZAUAS8oLi6CUGL + ZmXFTmNjM9SVMG1sFMFBuESREcEAI2AIEiJm/9rOryhSKYc9b/bmOeeNmq+8eD45v9/T + 8uKcjAwqEiABEiABEiCB/18gkyopwEsefuLQl8oSbH0xOAQk/4Fw2w28RKJsKhAQiQCD + MR7El5TbZssRiyXbJRVkfXp4sThnG/AAvU9y2dk5wCaVyeRyuUKhUAq04NEBQCaTSiTM + T8Sab9/eY3RZcFIBDtgUSpVKrdFoBVwajVqlUoKgDPi29fbBS9JBzzE5pUqt1ebm6XR6 + PccZBFkcp9frdHm5Wq1apWR60HvQeunxWNexpmNyGnDjDPkFRmNhUVGxIKuoqNBoLMg3 + cOCnSepB6zG8NC/cJB1cdHIFyAEcqBWbzObDFqtAy3LYbDYVgyDwgZ5Czq699HiZ7K4T + S6HptHlcvhHcLNbSsvIKm62y0i64qqy02SrKy0qtFvAz5nN5Wmg9qZi9MfY2HrQd0Enk + SrVWZzAWmy0lZbbKIw6n0+VyHRVgwWM7nY4jlbayEou52GjQadVK6LxsUZpTC20HrwlZ + kq7QZCmtsDucrupj33lqaqHqBFbsmWs83x2rdjkd9opSi6kwiSeDF0aaxsuEtpPIFCqt + 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 + qSDr08OLmVu26EA5dnqTeoeysrYB4ceEXsCWxVoO7bld9x7rvs8FPynQ+iwAf2bue8/t + qKX8Bf4/FQikoNA/SIAESIAESIAE/ieBfwEQaT1JCmVuZHN0cmVhbQplbmRvYmoKMzYg + MCBvYmoKMjMxNAplbmRvYmoKMzEgMCBvYmoKPDwgL0xlbmd0aCAzMiAwIFIgL1R5cGUg + L1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMTYgL0hlaWdodCA3MiAvQ29s + b3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBv + bmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c+1NSWxTHtVDk + DYqgPAIPIAIinSuGaAYOjo/UW/kKSx2VasIo0pFi8pGNGcXk6ybjY9LMsrejjWlT95+7 + a4OpKE6e+0O/nP39iV/4YX/mu9baZ++1dlISFiaACWACmAAmgAn8eQLJWFEClMjDP07s + 6SRttcfgBCA5BsIYN+DFYKRgAQEGA2AgjL/DFyUXw5bKZKbFxKKldhbPZKbGAP6G3g65 + lJRUwMZiszkcDpfL5dFUsHQAwGaz0tIQPwYy35HeQ+hOQqQCOMDG5fH5AqFQRGMJhQI+ + nwcE2YAvRu8IeFF04DlEjscXiETpGWJxZqZEIqWlJJLMTLE4I10kEvB5iB54D6yXGB5y + HTIdIicEbhJpVrZMJlcolLSUQiGXybKzpBLgJ4zSA+sheAkKbhQdJDoOF8gBOKCmVKnV + OYSGpiJy1GqVEggCPqDH5aC0lxheMsp1TBaYTpQhyZIBN0Kjy9XnGQxGo4l2MhoNhjx9 + rk5DAD9ZliRDBNZjMVHFOGw8sB2gS+PwBCKxVKZUE9pcgzHfbLGQJPkXDQXLtljM+UZD + rpZQK2VSsUjAA+elMBJELdgOygQ7ik6uInR5JrOFLCw6Y7OXgEppJrRmu+1MUSFpMZvy + dIRKHoXHhoKRwHjJYLs0NpcvEmfJVRq9qYC02uylZQ5nucvlqqCdYNHlTkdZqd1mJQtM + eo1KniUW8bnsNDDewaCN2Y4D6KRytdZgJq3FpY7yisrqmtq6+r9pqPq62prqyopyR2mx + lTQbtGrkPD4nkfEQO4hYIaBTaQ2WQttZp6vqfP2FhsbmFjct1dLc2HCh/nyVy3nWVmgx + aFHYCnlgvENBCyGbmsbhp0tkKo2hwFriqKipu9Tkvtre0dnt8VyjnTye7s6O9qvupkt1 + NRWOEmuBQaOSSdKR8Q4FbfIJ2J+A7bKUhN5cWOKsrL3Y3Nre6bnhveW7fcdPO9257bvl + veHpbG9tvlhb6SwpNOsJZRYYD/YpBxMeClnIdhKZWmcibY7KugZ3W9d1r8/f1x+4H6Sh + 7gf6+/w+7/WuNndDXaXDRpp0apkEZTwI2vhPiyg7QYZUSeQVWM9WALoOj/d2byA4MDQ8 + 8oiGGhkeGggGem97PR0Ar+KstSCPUEozBAnZpbK4QnG2Smsii501F90d13r8geDQyOhY + 6FmYhnoWGhsdGQoG/D3XOtwXa5zFpEmryhYLuazUQ75jpLJ4KGRzzdZSV31zm6fnbmBg + 5HEoPD459Q8NNTU5Hg49HhkI3O3xtDXXu0qt5lwUtDwWFIsDMctgsvnpUgWRZ7Gdq7rU + 2nXTHxh49CQ8MT0TmZubp53m5iIz0xPhJ48GAv6bXa2Xqs7ZLHmEQprOZzMTsOPwId1p + jKS9/HxT+3UfoAs9n5qZXXi59GqZdnq19HJhdmbqeQjg+a63N50vt5NGDSQ8PicBOyiz + 4uxTuvxCCFl3p7c3+PDJ8+nI/OLyytvVd7TT6tuV5cX5yPTzJw+Dvd5ONwRtYb7uVLYY + Cu0h38EWRSBG6a6orPLCFY8vMDganoosLL1eff/x02fa6dPH96uvlxYiU+HRwYDPc+VC + ZVkRSnhiVGgP5jtgJwR2eovNUd3QfsMfHAlNzMwvrbz79HltfYN2Wl/7/OndytL8zERo + JOi/0d5Q7bBZ9MBOmJAdV5gpy4FS4axp7PD2PRgNT88uArq1ja+bNNTXjTWAtzg7HR59 + 0OftaKxxQrHIkWUKuYl8xxVlygnDaXt5bXNnT//g2PiLheXVj2sbm1vb32mn7a3NjbWP + q8sLL8bHBvt7Optry+2nDYQ8U3QEO4mCMJAlrrqWbl9gODQRebny/sv65tb3HzTU963N + 9S/vV15GJkLDAV93S52rhDQQCsnR7GCLAuwue3z3Hj6dnF1882Ft49v2j5//0k4/f2x/ + 21j78GZxdvLpw3s+z2XEzqjB7I7hhP/BDsfsr/RENWZxrditiVRrBd6j7NuLUduj4L3x + vi8Aintj/E2278uT0jcZA58F7D/woHQWwGDiM6h9J23UzqDw2ef+A15qZ5/4zD3uZoHK + mftJfNcTd6NF5a4H3c/iO8a9y1RKd4z4bjvuBp/C3TbuqYhvG6HSU4F7eeLblaj18uAe + svhWOSo9ZKhlFvcu7nZpUuhdTMI9s3F9wVR6ZoEd7tXea0in2quNZwT2j0JQmRFAxsOz + KbszOJRmU4Adilo8E7U7AUZhJioGD8/i/Ro8pDKLl4RnQONmXSnNgMbg4dnjvWHr488e + J0XhRSe38cw7zPlTmnmHLtqdFwPQExX4rYXoawvHfWsBtSBH6Z3Ab3zsvm9y7Dc+og3c + +G2Z2HM66FGUHR3vbZkovV8I4S9Ye0TwL0wAE8AEMAFMABP4cwT+AyLrlvIKZW5kc3Ry + ZWFtCmVuZG9iagozMiAwIG9iagoxNzkxCmVuZG9iagozOSAwIG9iago8PCAvTGVuZ3Ro + IDQwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMxNiAv + SGVpZ2h0IDE1NiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1 + ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVh + bQp4Ae3d7VNS6RsHcB8Q5BkUDwiy0AGEAyF7gkLFFhwYisQyi5Y2ZSysWQyjmpiYNVsa + KyamB21zyqbMbbKmWicbp5pma/Zf+10H291UvPr5Zt+c+/umab764nzmuu8DvrlqakiI + ABEgAkSACBCB/16glqQisCV5+I26f1PP2/xrUAck/wfhqht4CQQNJCAgEAAGx/gtvorc + KptQJGpcjZiX+fLwIpFwFfAbel/kGhqEwCaWSKRSqUwmk/M08OgAIJGIGxs5PwE3fJvO + HkdXDycV4IBNJlcolCqVmsdRqZQKhRwEJcC3qrcJXoUOZo6TkyuUanVTs0bT0kJRWl6G + olpaNJrmJrVaqZBzejB7MHrV8bip44aOk1OBG6XVter1hrY2Iy/T1mbQ61t1Wgr8VBU9 + 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 + OJg5Tm5zui+jB3rAB34AWImYl/ny8CLOrUHwTbm/Dy68cetXAeHX+B5gq+dGDp05Tq6S + Wu7i+yfwmzzNPwSc22b33N9oa/+FnycBgbUq5H9EgAgQASJABIjAfyPwP/S4kaMKZW5k + c3RyZWFtCmVuZG9iago0MCAwIG9iagozMDAzCmVuZG9iago0MSAwIG9iago8PCAvTGVu + Z3RoIDQyIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDMx + NiAvSGVpZ2h0IDEwMiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUg + dHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0 + cmVhbQp4Ae2d609TaRDGQQql9xZKC73YesqtraUeqVao2pI2KAJeUNy6KwQtGssWuxob + G1G3hNXGRhEUwiWKSAQDLAHTICFi9l/bOa0ClfLK+bIf9szziWTCh/PLzPueAzPP5OSg + kAASQAJIAAkggf+eQC4qRYAVefiNfVvK46y2GOwDJHtAmOYGvHi8fBQQ4PEABoPxZ/hS + 5NLYCvj8wrQEnNS3h+fzC9IAf0LvG7n8/ALAJhAKRSKRWCyWcFTw6ABAKBQUFjL8eEzy + 7Zp7DLo8qFQAB9jEEqlUJpcrOCy5XCaVSoCgEPCl6e0CL4UOco4hJ5HKFIqiYqWypESl + UnNSKlVJiVJZXKRQyKQShh7kHqRednhM1jFJx5CTAzeVurRMo9HqdHpOSqfTajRlpWoV + 8JOn6EHqMfCyXLgpdHDQicRADsABNb3BaDxAmTgq6oDRaNADQcAH9MQi5tjLDi+XOev4 + Akg6RbGqVAPcKFNFZVW12WyxWDkni8Vsrq6qrDBRwE9TqipWQOoJ+MyNsTPxIO0AXaFI + IlMo1Rq9kSqvNFsO2ux2mqYPc1Dw2Ha77aDFXFlOGfUatVIhk0Dm5fOyVC2kHVwTwhQ6 + rYGqqLba7HTtkaPOunqQi2NinrnOefRILW23WasrKIM2BU8IF0aWxMuFtCsUiqUKZanW + YKqy1tAOZ53rhNvT4PV6fZwTPHSDx33CVed00DXWKpNBW6pUSMXCQki8H4s2nXYiQKfW + GsvNNtpxzOVu8DWebmpuaT3LQbW2NDedbvQ1uF3HHLTNXG5kMk8qypZ4DDuoWDmgM5Sb + 7bXO4x7vqTOt59outl/2c1KX2y+2nWs9c8rrOe6stZvLmbKVSyDxdhQtlGxBoUhapNIY + TOYaR73b19Ry4ZL/t47OruuBQDfnFAhc7+rs+M1/6UJLk89d76gxmwwaVRGTeDuKNncf + vJ9A2pXqqSpbbb2nsfl8+5WOrsDN4O+h3tthzul2b+j34M1AV8eV9vPNjZ76WlsVpS+F + xIP3lB8PPKZk4bRTaYwVVtrpbmxp81+9diMYCt+9F7kf5aDuR+7dDYeCN65d9be1NLqd + tLXCqFExJx4UbeanRYqdrFitp6prHMd9gK4zEOy9E4n2PXoc6+egYo8f9UUjd3qDgU6A + 5zvuqKmm9OpiWVZ2BQKxXFlmKLfSxzxN5/2d3T3hSPRRbOBJ/FmCg3oWfzIQexSNhHu6 + O/3nmzzHaGu5oUwpFwsKduQdr0AgYUq20uZweVvbrwZ6/oj0xf6KJ168HHrFQQ29fJGI + /xXri/zRE7ja3up1OWyVTNFKBHBZ/FCzPL5QWqTWUdV258lTF65cuxWO9PU/TQwOj4yO + j09wTuPjoyPDg4mn/X2R8K1rVy6cOum0V1M6dZFUyM/CTiSF485koesazlzquBECdPHn + QyNjk2+m3k1zTu+m3kyOjQw9jwO80I2OS2ca6miLCQ48qSgLO7hmlWX7Kw7WQsn6u4J3 + on8+fT48OvF2eubD7BznNPthZvrtxOjw86d/Ru8Eu/xQtLUHK/aXKeGi3ZF38IoiUzLH + 3ZETjed+DYQiDwcSQ6OTU+9nP84vLHJOC/MfZ99PTY4OJQYeRkKBX881njjCHHhK5qL9 + 8bwDdnJgV2V3uk+3ddwMR2PxwZGJqZm5hcWl5RXOaXlpcWFuZmpiZDAei4ZvdrSddjvt + VcBOnpWdWF6iOQBXhafpYmfw7oOBxPDYW0C3tPIpyUF9WlkCeG/HhhMDD+4GOy82eeCy + OKApkYuz5Z1YUaKlzIfqGprbu3ruPXzy4vXk9Oz80kpy9fMa5/R5NbmyND87Pfn6xZOH + 93q62psb6g6ZKW2JYhd2Kh1lpuu9LZevhyKP44Ojb2Y+/r2cXF1b56DWVpPLf3+ceTM6 + GH8cCV2/3OKtp82UTrU7O3hFAXa/BHrvx569HJv6ML/0CdB92eCcvqyvrX5amv8wNfby + Wex+b+AXhp3F9FN2rf7A7Wh/Ynj83ezCcvIzoPvKOW18Wf+cXF6YfTc+nOiP3g7AS8pu + 7OBPUIVihUqXyrss7P7hmL6S2WX81T03Lx8+Z+GzwnrY5Tvr7w5D3r2amJ5bXEmurW98 + 5Rg5eNyvG+tryZXFuemJV5B34W7/WZ/rsBU+LOCDNj8P2ZEyAtmR6JBjyI7MhxRFdiQ6 + 5BiyI/MhRZEdiQ45huzIfEhRZEeiQ44hOzIfUhTZkeiQY8iOzIcURXYkOuQYsiPzIUWR + HYkOOYbsyHxIUWRHokOOITsyH1IU2ZHokGPIjsyHFEV2JDrkGLIj8yFFkR2JDjmG7Mh8 + SFE27PB/2xkk2fxvO+cn7LCnYveeigx22MuzAS0VrHt5sIfse7sc2x4y7F3c7NFk27uI + PbPbeoPZ9cxir/a2jnSWvdo4I7BtEoLVjAAPZ1O2D+Cwmk3h8XEmatvkF7uZKJzF2z5w + yG4WD2dAMyZd2cyA5uHsccaENZvZY8YvAGfet4b7Wc28o9dChqMEC68F9PjItDFh4/GB + 3jKZ9jnsvGXQ0yjTuomNpxFj4YZeWpuuYSy8tHLQwy3Dp46NhxuwQ+/ALYNEtt6B6Fm5 + 3ZqTjWclk3jolbrpCcvKKxXYMVWLHr2bjsQsPHrT8NAb+rsRNhtv6Bz0JM/wXmflSZ6G + h174W+b/e/fCz0nBS20SwB0MsHeC1Q4GcHX7tsGCWZmCuz9S2z/2uvuDscRL0duHO2c2 + 9+3seedMylAQdx2l1zsxS3q+aW+7jlL0viOEX0FtEcGfkAASQAJIAAkgASSABP7fBP4F + SDjo4AplbmRzdHJlYW0KZW5kb2JqCjQyIDAgb2JqCjIwOTAKZW5kb2JqCjI5IDAgb2Jq + Cjw8IC9MZW5ndGggMzAgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAv + V2lkdGggMjI0IC9IZWlnaHQgMTE2IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRl + cnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNv + 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 + Js3P59D9fBXNz8cl0/x8I3H+ltbnU+l9vpju58Ppf76f7v0ZiPYo9O2vkUDz/ijAR/f+ + NvTuT0QYSOf+UsBHVCh9+4PtA9K3v1sC3fvz7QPSt79iQhww3kGSnv0x4WvE9w6gROtW + GvY3JT63xAmT6NqfNv5Bidb9heOE/2AC6enQj1Gjv9AMoBlAM4Bm4PfMwN+IzvBHCmVu + ZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKMTg3MQplbmRvYmoKMzcgMCBvYmoKPDwgL0xl + bmd0aCAzOCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAz + MTYgL0hlaWdodCA2OCAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUg + dHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0 + cmVhbQp4Ae2c21NSexTH1VDkDoqAKAfkIjeB4YDiNXB0MLwc7w2WMhppYhjaxGiZqV2k + GE08yXjJTB05ZY6VnX/wrB+YiuLkPg+97N/3iRce9me+a63fXr+1dloaFiaACWACmAAm + gAn8fgLpWHEChMjDPzJOdY20OmWQAUiugDDBDXhRKJlYQIBCARgI46/wxcklsGVRqdkJ + 0Uip44enUrMSAH9B75hcZmYWYKPR6QwGg8lkskgqeHQAQKfTsrMRPwoy36XeQ+iuQaQC + OMDGZLHZHC6XR2JxuRw2mwUE6YAvQe8SeHF04DlEjsXm8Hg5uXx+Xp5AICSlBIK8PD4/ + N4fH47BZiB54D6yXGh5yHTIdIscFbgKhKF8sLigslJBShYUFYnG+SCgAftw4PbAegpei + 4MbRQaJjMIEcgANqEqlMViRXkFTyIplMKgGCgA/oMRko7aWGl45yHZUGpuPlCkRi4CZX + qIrVGq1Wp9OTTjqdVqtRF6sUcuAnFglyeWA9GhVVjIvGA9sBumwGi8PjC8USmVxZrNWV + GEwms9n8JwkFj20yGUp02mKlXCYRC/k8Dgucl0lJEbVgOygT9Di6AqlcpdEbTGZLaZmt + ohJURTKhZ66wlZVazCaDXqOSSwvi8OhQMFIYLx1sl01nsnl8UYFUodYbzVZbRVWN3VFb + V1dXTzrBQ9c67DVVFTar2ahXK6QFIj6PzaRng/HOB23CdgxAJyyQKbUGs7W8yl5b77zh + ampu+YuEamluct1w1tfaq8qtZoNWKUPOYzNSGQ+xg4jlAjqpUmuy2KoddQ2NLa0dnd03 + 3aTUze7OjtaWxoY6R7XNYtIqUdhyWWC8C0ELIZuVzWDnCMRShdZorbTXu5rbu9y3+zz9 + d7zeu6ST13un39N3293V3uyqt1dajVqFVCzIQca7ELTpGXA+AduJJHK1wVLpcDa1dff0 + 9XuHfPf9ow8CpNODUf9935C3v6+nu63J6ai0GNRyiQiMB+eU8wkPhSxkO4FYptKbbXZn + c4e7d2DQ5w88fBScmCShJoKPHgb8vsGBXndHs9NuM+tVMrEAZTwI2uRXizg7Tq5QItcY + rdX1gM7j9Y2OByenpp/NzpFQs8+mpyaD46M+rwfg1VdbjRq5RJjLSckui8bk8vOlSr25 + 3OFqc3vujgSCk9OzL16F3oRJqDehVy9mpyeDgZG7Hneby1Fu1iul+Xwuk5Z1wXeULBoL + hWyxwVpV19Ld6x0ZC07NvgyFF5cif5NQkaXFcOjl7FRwbMTb291SV2U1FKOgZdGgWJyL + WQqVzs4RFso1Jtv1hvaegeFAcGpuPvx2eSW6trZOOq2tRVeW34bn56aCgeGBnvaG6zaT + Rl4ozGHTqSnYMdiQ7hQ6c0VtY1ffoB/QhRYiK6sbm1sft0mnj1ubG6srkYUQwPMP9nU1 + 1laYdQpIeGxGCnZQZvn5f6hKLBCy7n7f+OTM/MJydP3D9u5e7B/SKba3u/1hPbq8MD8z + Oe7rd0PQWkpUf+TzodBe8B0cUTh8lO5Ka5ytt7z+4NMX4Uh0Y2sn9mn/ywHp9GX/U2xn + ayMaCb94GvR7b7U6a0pRwuOjQns+3wE7LrBTG8sg3fUOBSZmQovv1rd2Y/sHh1+/kU5f + Dw/2Y7tb6+8WQzMTgaFeSHhlRjWw417CLk8sg1LhcHV47o09nnu9FH2/vff54PD70Q/S + 6ej74cHnve330aXXc4/H7nk6XA4oFjJx3uXsiuLsOj3D40+ehyOrmzux/cNvRz/+JZ1+ + HH073I/tbK5Gws+fjA97OuPsijC7Kzjhf7DDMXucnQjHLK4VJzWRaK3AZ5TToxihMwoF + n43PvgAQOhtTqPid7MybJ7F3MtwLONvwINYLwD2opE4bkR7UNdz7TOrwEul9ovsK3HM/ + vVwg1HPHdz1JN1oE7nrwHWPyNSqRO0Z8t518fU/sbhvPVCSPjhCZqUAjZHiW52RqicAs + TxqeIUuakyMyQwbs8Ozi6YAm0dlFPDN7djSYyMwsMh6e1T6ZSSc0qw3sUNTiHYGTjQgC + OwIJeHg35eciDpHdlDS8E5W0+0VoJyoBD+/inS4fXn0XLy0OL77JiHdAYe+V0A4oTJUd + b9CilW28exzfPr7q7jEayYvTy8A77yf7/lfeeY8PNOJvLSQ+L4E+EnCsq31rIU7vJ0L4 + C9YpEfwLE8AEMAFMABPABH4fgf8AsHhuNQplbmRzdHJlYW0KZW5kb2JqCjM4IDAgb2Jq + CjE2NTIKZW5kb2JqCjQ1IDAgb2JqCjw8IC9MZW5ndGggNDYgMCBSIC9OIDEgL0FsdGVy + bmF0ZSAvRGV2aWNlR3JheSAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGF + Uk9IFFEc/s02EoSIQYV4iHcKCZUprKyg2nZ1WZVtW5XSohhn37qjszPTm9k1xZMEXaI8 + dQ+iY3Ts0KGbl6LArEvXIKkgCDx16PvN7OoohG95O9/7/f1+33tEbZ2m7zspQVRzQ5Ur + paduTk2Lgx8pRR3UTlimFfjpYnGMseu5kr+719Zn0tiy3se1dvv2PbWVZWAh6i22txD6 + IZFmAB+ZnyhlgLPAHZav2D4BPFgOrBrwI6IDD5q5MNPRnHSlsi2RU+aiKCqvYjtJrvv5 + uca+i7WJg/5cj2bWjr2z6qrRTNS090ShvA+uRBnPX1T2bDUUpw3jnEhDGinyrtXfK0zH + EZErEEoGUjVkuZ9qTp114HUYu126k+P49hClPslgqIm16bKZHYV9AHYqy+wQ8AXo8bJi + D+eBe2H/W1HDk8AnYT9kh3nWrR/2F65T4HuEPTXgzhSuxfHaih9eLQFD91QjaIxzTcTT + 1zlzpIjvMdQZmPdGOaYLMXeWqhM3gDthH1mqZgqxXfuu6iXuewJ30+M70Zs5C1ygHEly + sRXZFNA8CVgUfYuwSQ48Ps4eVeB3qJjAHLmJ3M0o9x7VERtno1KBVnqNV8ZP47nxxfhl + bBjPgH6sdtd7fP/p4xV117Y+PPmNetw5rr2dG1VhVnFlC93/xzKEj9knOabB06FZWGvY + duQPmsxMsAwoxH8FPpf6khNV3NXu7bhFEsxQPixsJbpLVG4p1Oo9g0qsHCvYAHZwksQs + Why4U2u6OXh32CJ6bflNV7Lrhv769nr72vIebcqoKSgTzbNEZpSxW6Pk3Xjb/WaREZ84 + Or7nvYpayf5JRRA/hTlaKvIUVfRWUNbEb2cOfhu2flw/pef1Qf08CT2tn9Gv6KMRvgx0 + Sc/Cc1Efo0nwsGkh4hKgioMz1E5UY40D4inx8rRbZJH9D0AZ/WYKZW5kc3RyZWFtCmVu + ZG9iago0NiAwIG9iago3MDQKZW5kb2JqCjI1IDAgb2JqClsgL0lDQ0Jhc2VkIDQ1IDAg + UiBdCmVuZG9iago0NyAwIG9iago8PCAvTGVuZ3RoIDQ4IDAgUiAvTiAzIC9BbHRlcm5h + dGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGFVM9r + E0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWliOTi0Sre + Re2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLSNPWABOQN + x1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrStpoHhP1A + 4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/TbhTzSXT + QINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+wiHCCxmt + P0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79VvJKgnCQ + OMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgyaDUhQEEUE + YZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1CJL8Qf4q + r8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8muwaP+xX + lzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62JizdWm5dn + /WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2VhinSbZH6 + JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuefKAIvbODI + mbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6HugpmNOWls05 + Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv8RGw/bBS + +fmsUtl+ThrWgZf6b8C8/UUKZW5kc3RyZWFtCmVuZG9iago0OCAwIG9iago3MzcKZW5k + b2JqCjggMCBvYmoKWyAvSUNDQmFzZWQgNDcgMCBSIF0KZW5kb2JqCjQ5IDAgb2JqCjw8 + IC9MZW5ndGggNTAgMCBSIC9OIDMgL0FsdGVybmF0ZSAvRGV2aWNlUkdCIC9GaWx0ZXIg + L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AdVYZ1QUTZeu7onMDDnnnHNOknOSHEXSkJNk + ETCQJShKkqQooAgoIkoQlSSIBEFABTGBqICiIkiQINv4Hv3es2f33/7ZOqd6nrlVc7um + n6q+9z4AsBR5hoUFwzQAhIRGRdgY6fI4Obvw4KYAEVAiXQDIeJIjw3SsrMzB/9rWngNo + b3Bccs/X/zrtfx6g9faJJAMAWSHDXt6R5BAE30bwEjksIgoAuArBTw5HhSEYhXTAEIEs + EMEn97DfP7hsD3v9gxt+z7Gz0UPm9ACAJ3l6RvgBQHyC2HliyH6ID+ISAFi6UO+AUADo + 0AjWJPt7egPAoo/MkQgJObSHwxAs4vUvP37/wp6eXn99enr6/cX//Bfkl8iN9QMiw4I9 + j/z+8n95CQmORp7X70aHXEmhwfv3uMEjfd7bU9/sDw4L/s3Zb7tPqL3tH3uo137LP9g3 + wtDmDw6L0v0XtrL7Y4/z19v/B/tEGvz1E+hpavXHHhFtY/8HR8bYGvzBcf52jn+wt4/+ + X7tvgKHJH3tAlMnfewUdMvu7BhAALIAnIEf5xO7xDvQOhR2JCPDzj+LRQXaZjwSPSShZ + SoJHTkZWZm/4/03bO1//LHbF5ve5gZhG/mOLRJ6p2hByBsb+Y/NIAKDVFdniyv+x8RMQ + 6icBuM9Pjo6I+ccfspUBwAACoAYMgBVwAX4gAiSBHFAC6kAbGABTYAnsgDNwA2TgD0JA + BDgMEkAiSANZ4AwoACWgHFSCq+A6aAQt4B7oAg/BIHgCnoGXYBp8AJ/BElgDWxAE4SBK + iB5ihbghQUgckoNUIE3IADKHbCBnyAPyg0KhaCgBSoayoFyoBLoE1UA3oTtQF9QPjUIv + oBloAVqGNmEUTIIZYE5YCJaGVWAd2Ay2gw/CfnA4HAenwKfhIrgCvgY3w13wIPwMnoY/ + w6sogCKimFC8KEmUCkoPZYlyQfmiIlDHUJmoQlQFqh7VhupDjaOmUYuon2gsmh7Ng5ZE + q6ON0fZoMjocfQydjS5BX0U3o3vQ4+gZ9BL6F4YSw4ERx6hhTDBOGD/MYUwaphBzBdOE + 6cU8w3zArGGxWCasMFYZa4x1xgZi47HZ2PPYG9hO7Ch2FruKw+FYceI4DZwlzhMXhUvD + FeOu4TpwY7gPuA08Ec+Nl8Mb4l3wofgkfCG+Ft+OH8PP4bcoaCgEKdQoLCm8KY5Q5FBU + UbRRjFB8oNgi0BKECRoEO0IgIZFQRKgn9BJeEVaIRCIfUZVoTQwgniAWERuIj4gzxJ8k + OpIYSY/kSoomnSZVkzpJL0grlJSUQpTalC6UUZSnKWsoH1C+odygoqeSojKh8qY6TlVK + 1Uw1RvWVmoJakFqH2o06jrqQ+hb1CPUiDQWNEI0ejSfNMZpSmjs0EzSrtPS0srSWtCG0 + 2bS1tP2083Q4OiE6AzpvuhS6SroHdLP0KHp+ej16Mn0yfRV9L/0HBiyDMIMJQyBDFsN1 + hmGGJUY6RgVGB8ZYxlLG+4zTTCgmISYTpmCmHKZGpudMm8yczDrMPswZzPXMY8zrLOws + 2iw+LJksN1iesWyy8rAasAaxnmVtYX3NhmYTY7NmO8x2ga2XbZGdgV2dncyeyd7IPsUB + c4hx2HDEc1RyDHGscnJxGnGGcRZzPuBc5GLi0uYK5Mrnauda4Kbn1uQO4M7n7uD+xMPI + o8MTzFPE08OzxMvBa8wbzXuJd5h3i0+Yz54vie8G32t+Ar8Kvy9/Pn83/5IAt4CFQIJA + ncCUIIWgiqC/4DnBPsF1IWEhR6F0oRaheWEWYRPhOOE64VcilCJaIuEiFSJPRbGiKqJB + oudFn4jBYopi/mKlYiPisLiSeID4efFRCYyEqkSoRIXEhCRJUkcyRrJOckaKScpcKkmq + ReqrtIC0i/RZ6T7pXzKKMsEyVTIvZelkTWWTZNtkl+XE5MhypXJP5SnlDeWPy7fKf1cQ + V/BRuKAwqUivaKGYrtituKOkrBShVK+0oCyg7KFcpjyhwqBipZKt8kgVo6qrelz1nupP + NSW1KLVGtW/qkupB6rXq8/uE9/nsq9o3q8Gn4alxSWNak0fTQ/Oi5rQWr5anVoXWO21+ + bW/tK9pzOqI6gTrXdL7qyuhG6Dbpruup6R3V69RH6RvpZ+oPG9AZ2BuUGLwx5DP0M6wz + XDJSNIo36jTGGJsZnzWeMOE0IZvUmCyZKpseNe0xI5nZmpWYvTMXM48wb7OALUwt8ixe + 7RfcH7q/xRJYmljmWb62ErYKt7prjbW2si61/mgja5Ng02dLb+tuW2u7Zqdrl2P30l7E + Ptq+24HawdWhxmHdUd8x13HaSdrpqNOgM5tzgHOrC87FweWKy+oBgwMFBz64KrqmuT4/ + KHww9mC/G5tbsNt9d2p3T/dbHhgPR49aj21PS88Kz1UvE68yryWyHvkc+bO3tne+94KP + hk+uz5yvhm+u77yfhl+e34K/ln+h/2KAXkBJwPdA48DywPUgy6DqoN1gx+AbIfgQj5A7 + oXShQaE9h7gOxR4aDRMPSwubDlcLLwhfijCLuBIJRR6MbI1iQBKZoWiR6NTomRjNmNKY + jcMOh2/F0saGxg4dETuScWQuzjDucjw6nhzfncCbkJgwc1Tn6KVj0DGvY93H+Y+nHP9w + wujE1URCYlDi4ySZpNykH8mOyW0pnCknUmZTjVLr0qjSItIm0tXTy0+iTwacHM6QzyjO + +JXpnTmQJZNVmLWdTc4eOCV7qujU7mnf08M5SjkXzmDPhJ55flbr7NVc2ty43Nk8i7zm + fJ78zPwfBe4F/YUKheXnCOeiz00XmRe1FgsUnyneLvEveVaqW3qjjKMso2z9vPf5sQva + F+rLOcuzyjcvBlycvGR0qblCqKKwElsZU/mxyqGq77LK5ZorbFeyruxUh1ZPX7W52lOj + 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 + YNXQ5eErw9UjV0dqRmof1z2+Nnh9oL7/Rn/DwM3HjaO3nt2eanrbPNsy1/rpzpe2pbvL + 937cX21f71jvXO/a6N54sNGz0bv+cK1v9dFK//eBb4Nfhj49/jg8OzL95NXo5Nj4+PDT + R8+6n9+baJqsf1E9Vf6y6FXO6/Q3R99GTvvNOL8zmVV5L/SB/iP4uDg3Od+z0PCp9HPa + YvgX169G3xSW+L8zL1OvEH8QVglrhHXCBuEnxSZ+C7eN3cH8Qu1Ce/z/o4PsxQSsEgBX + kBrdvgkAc6QGvWAMgMASEj+oALCiBMBOFcD8EwCGcwC0E/Y3fmAACTAi1aYIUmlqAGNg + CzxAMDgC0pGKsgrcAg/AOHgPViE8xA5JQ3pIhXgISocuQm3QM2gZpoXlYAc4Ab4CP0Wh + kZruEKoaNYtUbR7oCvRHjCQmGtOJJWEPYK/jIJwT7iaeCh+MH6aQpyghoAiHCC+JRsRG + Eicpg7RG6UM5QWVG1UWtRt1EI09zm1aJ9i6dLt0gvT39NEMowy/GM0yCTPeYHZhXWHJZ + FVhfsJ1gF2Uf44jn5Occ5Iri5uIe4DnCK8b7mi+P31wAJ9AjmCJkIIwT7hfJErUQoxEb + Fy+W8JSUkNyQeiRdLBMiqy/HKbcp/0rhgWKDUoVysUq+aq5anvq5fec1qjVva/VoT+gs + 6qGRva1saGMUapxlUms6ZPbdgnW/vmWEVaX1hC2VnbF9ksN9xzVnCRfPAwWuA26Qu5pH + jGeT15q3mk+i76A/c4BfYFswbUhw6ECYRPjZiJ9R3tFjh/ViW+Kk4quPChyrOiGYeDVZ + POVGmmL6/QzjzInsgFO/cgrPyuaO5IcXMp67XxxQyl729ELeRecKgcoflx9Wl9XE1Nle + l7/B3LDbuHB7snmw9UFb972+9vHO2e6NXto+yX6LwfDHxSO9oz+eijx3nyyeev6a4a3N + TO7s+EfmefdPtYub3yy+V63srrltdG4J75z9/f7AIEohI+AGokAeaCIagwPwAocQXSET + FCNaQit4BF6AT2Aboob4IWVEIyBDcYgqcA3qg97DMMwHG8CBcB7cDn9F8aDsUadQfWgU + WgedhO7FEDE2mDLMHFYRm4qdwEngknGv8ar4IvwmhTvFQ4IMoYxIIMYSP5IcSA8pVSnr + qQSpyqk5qEtpOGkqaEVpb9Np043Qu9F/ZTjGSMNYyaTKNMoczEJgqWW1YF1hK2U3ZF/h + uMRpxbnL1cDtxcPEM8SbxqfDD/i7BFIFzYQYhN4K14kcFtURI4iNiZdIeP3mvk+6SCZI + VkeOVe6H/KhCo+I5pRPKh1TIqq5qTupO+1w0PDT9taK0k3TydKv12vUnDJaNKI3FTIxN + A8yyzG9avLBEW8lZk23O2Q7b4x0MHJOdupx3D2i4xh1sdVv3UPU85tXrTe3j6lvn9yvA + NrAuGBPiHno3jCk8MuJJlHT02ZjVWNcjD+PlEiqOMRzPSISSjiZvpR5NR508lcmWVXtK + 4/TTMyG5FHk1BWaF34uKSwxKV85Xlttfwlfcr4q6Ilm9UFNTF3Rdpn6joacx97Z3s3or + 853tu4v35zu+d6N6OB6qPXIdSByqG54cJYxrPYuduP1i+ZXkG+/pwne975fneBZsPqd9 + 6fi2uaz6I2HtwU/KLZedur/8MwEeIAYUEZXJDDgBb0RZOg5OgzJwDVGRhsBr8A2CIUZI + FFGJbKFAKBHRhG5DI9AiTIDFYQs4Ai6Be+EVFD/KAZWNeoDaQaugYxCNZgOjjknE9GPp + se7Y69gdnBXuMm4b74C/RUFHEUUxSdAkXCZSEmOI0yQzUiuifBRREamSqDapY6hXaKJo + 1mjj6WC6THoG+nIGCYY2RjPGt0zRzFTMtSzGLAusp9jk2V6yp3BIc7zkTOdS5HrPXchj + xgvz3uOL5Vfm/ynQjpx/c2FGpL6vFA0QkxZbE++QyJR0lBKW2pQekbkie0LOTV5TQUCR + RgmltKW8qbKtBqsT97FoCGuqaVlpB+ik6lbp9erPGeKNxIzNTEJMz5i1mE/vJ1mqW4VY + V9hM2THa2zrkOz53ZnE5cOCC6zs3Efcwj3teBLKrd4Mv3s/LvyOQOygx+H2o8aFr4TQR + hyPfRpvGtMaKHjkfz5Bw+hjxeFYiVVJ+CmdqbbrqyYFM96y1U2dzpM6M5EbmsxX0nAsv + 5i15VpZ1Qf8idKmrMvWyeTXz1fe1zdcy670aNBo5bu00zbYM3Wm7e/1+dcfVrpsPOnpH + ++YHUEO8w3pPAsbynnY+//5C8KXL66y3zTOTsz8+Us4LfdJZdP+auHR5+fGPjXWhn05b + 2Ts9e/xH+srL7UUPAJF0Efnxze7uihAAuFwA9t4PWxW7uzuVSLHxCoDO4H+09b3JWBoA + ypA4A8DDuNkTe5//bv8F0n9FJQplbmRzdHJlYW0KZW5kb2JqCjUwIDAgb2JqCjU3MDgK + ZW5kb2JqCjI4IDAgb2JqClsgL0lDQ0Jhc2VkIDQ5IDAgUiBdCmVuZG9iago0IDAgb2Jq + Cjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvQ291bnQgMSAv + S2lkcyBbIDMgMCBSIF0gPj4KZW5kb2JqCjUxIDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9n + IC9PdXRsaW5lcyAyIDAgUiAvUGFnZXMgNCAwIFIgL1ZlcnNpb24gLzEuNCA+PgplbmRv + YmoKMiAwIG9iago8PCAvTGFzdCA1MiAwIFIgL0ZpcnN0IDUzIDAgUiA+PgplbmRvYmoK + NTMgMCBvYmoKPDwgL1BhcmVudCA1NCAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAv + WFlaIDAgODE4IDAgXSAvVGl0bGUgKENhbnZhcyAxKQo+PgplbmRvYmoKNTQgMCBvYmoK + PDwgPj4KZW5kb2JqCjUyIDAgb2JqCjw8IC9QYXJlbnQgNTQgMCBSIC9Db3VudCAwIC9E + ZXN0IFsgMyAwIFIgL1hZWiAwIDgxOCAwIF0gL1RpdGxlIChDYW52YXMgMSkKPj4KZW5k + b2JqCjU1IDAgb2JqCjw8IC9MZW5ndGggNTYgMCBSIC9MZW5ndGgxIDk4ODAgL0ZpbHRl + ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBvVoLeFTVtV7rPOadZJLJPJPJzGQmmbxf + kAkhgZyEPAmBEEhIINEECA0UNGBEkUIR0EjwgVUBkRZUWhVfQ7AwiHq5FKvlcYuKRRHF + VkAUU6oFETFn7jpnQoB8fl6+7/r1nKzZe+3nOv9ae+11zk7XgtvbIQyWAQu1U9s6Z4F8 + ed4GwMMz5rV1hnhDFqX7ZyzscoZ4PgmAvXdW5y/mhXiVH0Dj+cXcRQP9o9MA9J6O9raZ + oXr4gVJfBxWEeBxOqadjXtedIT7qCKXNc2+dMVBvkNpnzWu7c2B+OE6885a2ee2h9p7N + lCZ13npb1wBfS2lt54L2gfbYSPL9FZBKzTAH1DAXVMCAnu5mAOUZjQc4qpXqiYrT6zff + HFF4ASJV8nBPeTOWSZk/u167dPH4D17tUnU5tVPL7aUK6qNIFpMBdEj1H2mXDtZItdJl + DkBdagAqiUYTDSdKSd2mEl7FNRDdcl5Qo4MDreMD6z/fwAzC/7T868cMQRcG6hkrCh0z + VqyoTC5WYzXkcQgOLAOPnJb2ep53BHB0r8dNyahQwvTm2YkDQZ3ncfTnTXf8kBdQoRDj + +M7ziOMi0beeIscFT7bjHWp3OK/CcaiY6nsdB1ICDCX7PQEOhQjH2567HX/MS3a8klfg + 6PVSWa9jWzElOxxb8u52PL1SLnkqRU6e9ARwQ69js5TscGyi8deukCseC3VcHko6V8oT + 3bpdTm7ZHmCe3+GY50l0TKeOKGgdLZ65jmZPvmNycQATeh01UrcdjnHeQ45qaepehxCa + yBcaPdcjS5wTmjbNs9uRFJohXmotGBxOzziHncZP27zWkea5yVGcEsBnd1YmpXgqvWt9 + ATwvzyElJKiU3BJKZnhfx2egApJxKiTg49srk0lmXNPrWEHJhu2VSXkJAfaMEOXY7q30 + riTyESUQ1QdwspCmXKecqaxXDlOmKpOViUqXMk4Zo4xWRan0qnCVTqVRqVQKFadiVKCK + DgQ/FVIlK4pW6KVEwUm/nJzXM1KefugXGFQxMBYCCrjHtLDIUhQ1OjK/vPRHflrlwtbS + 1KuX5Wo21YJ2/9rqSY3+rfYmf46UCdqbrqn//2TbS6h3dd2i7XWLzjaUtbvLWt1l7USt + /tULOyz+ZdOdzm1nF0kVTj+b2Dp9RoeUtrX7F7nbS/1n3aXObXVyvyHVDVJ1nbt0GzSU + TW7c1iC0l/bWCXVl7rbSpu21ZZXjr5tr1eBclWU/MleZNFilNFet3G/IXOOl6lpprvHS + XOOluWqFWnmu1NSy2ZNKgN8DkfxeSOfXgZ0rATtA8BjRR1IqTgqe4w+DJtgf7GPJs2G8 + RCcuYzS8DErYCUvJ27wLW1ENbujDHPgQ7ZgCH4AIH8E/wAarYTP9lsEZ/Ja8zBeYRG18 + sBx+B5uCndAJRXSfQR6MMAK+CC4Ovh28BCXQA/tQiQa0B3dBJnTTvQE2oo6ZHtwGFhgH + d5BXXw5/gWPB3uCXNL4PTmEkZnIFwY/JwHgqyYdVsBV2ogvdmILTgqeo3EIyNsPWYE1w + IfU7R60yYTwsptn+jg5MxFTcgJ+wfcFlwQfp2WKprh5m0D0P7ob1sBFelFtN52J5I41f + CtVU9yAchDPwDTncZCzBO5n32S/Zf3EF3IbgPpKjnuZrhU3IEioerMeZ2Ikv4iv4J/yW + yWPa2Hz2fa6Te5Jkq4f74El4Hd6C9+BjOAt98D30I0cyjcYJuBh/S/3+wQxjWpglzP3M + MeYcm81+wim51fw9/O4gF3w/+D3JHAcpUEArfSI0Qjvds+AWuB1+DStRCetgG/yJpD0B + J1CDeszEbKzAyTgNf4mL4GHcgq/icTyJp/ELks7AOBg3k8kspPmWM6uYF5leZhfTx0ay + XewSdg/7CfstZ+RauD10n+DT+S5FrKJaOVF8VDwRTA+uCW4gvZjo9kAypMNo5AjFebCS + NLmKMNsIW+B5eAl6oTd4GfNhH7xDcv0dzsFF0lgs3S7MwRFYixNJwrk4D3+N60nCrbiD + pNyNu+EoHsXLdItgZdRMOjONaWMW0b0B1jPvyfjoWBebxKaz1eyk4Nfsi+w29hsugZvK + zecWcz3cem4TH8uP4qfwU/lO/jF+B3+A/xt/jj+vsCu6FVsUryjeU6qUw5XrlSLGkyxO + TIBX4A2yurVsJ/EeGIMrSasNcJCstw/ehMtwCfbAM2gHkZW0mRh8EgLB+0ibr8Mf2V9B + ITzMPMKMDRaxz7JqzAlepLGySF9XbhBSkpO8iQked7zL6Yizx8bYrBazyRhtiIrUR4SH + 6bQatUqp4DmWQUgrc5e3Ov2JrX4u0V1ZmS7x7jYqaLumoNXvpKLy69v4nVK/Nqq6rqVA + LWcNaSmEWgqDLVHvLITC9DRnmdvpP1TqdgZw6sRGyj9Q6m5y+vvkfI2cXyPnwyjvclEH + Z5mlo9Tpx1Znmb98YUdPWWtpehruEmgz0KSnwS4AAbTSwH4Y07aEnCuMkVqU+W3u0jK/ + 1U15qmMTytpm+msnNpaVxrhcTelpfhwzwz3dD+4Sf0TqQHepHznBhLpGmjs9bbaf5IfV + upnumasDAkxvlXJtzY1+tq3Jz7RKc0Sm+s3uUr/5rlOWq+yVXNn911T6mYTytvaecr/Q + uppAl9hWiWu7n7jqSU4alrmnqdGP95BwkhCy7KGnCG0TCa1znH61u8Td0TOnlTCH2sZe + m2Arc7eWNvmhrrHXKlhlJj1tl2VpgYtA2ZVenF4spQUuy9JQ+vmKUPm7e6TUsnTfp5RW + 1w3igtLc7ioS0++cQZMQFiTrCOmnfQT0zBhB8NHVhPSUs0meMX6GTIlN8PMJVW3+ZZMG + xGjrKB0Qbk5pr9pqk/elkiZq39qjH0kKpPZ6t7PnApBm3X1fXV/SNlCiSNBfAKlS0v+g + Cfmx7Up+obR/JtCW1GFxd0jqWyirmni3peyaAuKlfSudAs606gCoaxu3IT7YFMDgPQEo + te+iDYa9+SaqTpUMbnYpTUdMWhoVpLgoRxKU00TlkmU4e5w9VTN7nOXODjIpLkFOqaK9 + pymTAJvUSLDA5EaXX2iKGcy2NzWNpHEypHGoCzXvaaIR5gyMQKlclNlPjTLTqumpEmsb + Jzb6l5XG+IXSJgKdjHhPbaN/D9lvUxO1yhqUlCReMtsyIHM2yZyVQvU5oVEorFlGQzT1 + 9EhjTmp0u/x7enpieqRVF+IpQh5aIAwUBEBqIiEcwGW11JcStytGhtzldpFYTRKmw8iA + rxgQhfU/jXDuoNzU00fS5soI5/1MCI+4EYTzbwjhkYOSXodwAck8UkK48D+H8KjrEB79 + 0wgXDcpNQgokbZGMcPHPhHDJjSA85oYQLh2U9DqEy0jmUgnh8v8cwhXXIVz50whXDcpN + Qo4laatkhKt/JoTH3QjCNTeE8PhBSa9DeALJPF5CuPY/h/DE6xCu+2mEJw3KTUJOJmkn + yQjX/0wIN9wIwlNuCOHGQUmvQ7iJZG6UEJ46iLAQ44dr/fCyIW4XfnbHPO0ayPm3YAOT + D8DdBg8yW+EM8c2KfGjnG+BponoqL+A+g8WUVlBaRGkmtVcTrSa+m6iEaAlrh+VUV0Jj + GCWe8jaKxULfjejjDyjgNeKd0CS9rP8fl/RKf/3FXs8SR98BfvTiaSbpUv5obahQRRu7 + BrQk1ZUrjDLhRBH01SuS0igwQDS9Q0qXSf4FGE53B6xFFd6EW5hS5gwrsC9xKm4j9ykP + fC3/BwWnGK84Ql8zFqii6A1sAwC9D+ylr4VKGC24eIWd4mxOaWdBw3N2lmVsaoXSjmBV + qbe65hbSR4jx5wtr+gvH678trNH3F0JRYX+hRNlZwyJdkV6iDdzTgR8O8Xu/Hx3g6i6/ + JAmG9PYDrJLfSl/GcoS4ZD6fZ8LwoJrT6bTbQT3CqcvSter8Ok4XURGuX7jPcqTl5ME+ + KCo6fyg7C1oMub48+c6V5niw29fgSzBo+8Tj7Jm9Cp0h31vsNXzfwJ6h5zlDH1nMnFl+ + nmG9mMQG0CgY+SSlRm0223js5KRH6XTdfc2jlLWXnoaimr5v+7KzDC6age4zmCm+IxFn + Fv8mjhL/RmM3B4/yi/lz9L7pgC4heYrmUeWjKnYa0xTTaJ/F3YGr+Oeie7mdmj9zb2mP + MR9Ff2w5EfOdRW8OoFZw21Qqm67YwbJRxTa1w5RnVuU54pQ2V0RenNXpetz1YoOMbU0f + IVsTmd93pC8TivqKCvui8jP1JBi2QEtUns/lNJvMrkRvojueMUabhuUQMC4FuJzexEhs + /usraMKuF25WigfjMif//tm9h373VH2mA7OTxJ1iUNy7Ywezhpvyzo7zq3rm+FrFr7/7 + 7uKc/AVfi+8ePITtrI1Qa6dn/JKeUQsx9C2gWPCadKYoa7TVts7G88WxZlZbHKGOZfJi + DTG2OFWewWqPO+E6O0T2Ackl1XmicoczsqxRwzxKhSynPvQYkcieOHp0585jx3Yye088 + I+4T9z3z6afPYCEWPnOif/RxDL/0HUaI31y6JH5z13svvPAePoCPHXjhhQPiL1laFAw8 + TbarJdtV0ToYLcSuw3UKRpfCceFsSgQTriLpbEY2LCHcGm0MoH27q25ATNl6ayTzksAN + YZvoJqXn+HKBkzKU5YzssUXzRPpGMm8RZovfXRDfEv+HWf4JqrjW6eL4ObeJ/R/0/5Pf + e/Ic2Td9yQge48MJtwz6uvK0MEcVQV8ME61aa4TZZU6cpWsPmx1/Kl2brE82JtkSvSON + I2y7jPuNx43vpp01nDVdMnxvupQeEQ6R2niLI8GsSogP13KWjCOpliOxxZnRLFecqs60 + rM2MNE9QrU2yZTt8kVPAl2HNyg5g3ParxnNeNp++82RAA0ro0/dFmvMxMiqf/iQKmRKa + zLLx5A73JmYi2VPucKCHHjAthTHabHJIbYzRZFuQi7g4PLl6x7zSuwVh1cbTjY+hE81f + YJVK/EA1t/KXdzxYnv6I+Ez9SvGAeFr8VNzBTMS32nOmWTKWVCV549zDR8368M+ouHj2 + nhEJrQ0TvDb3qKQxHW/uFy+g8jSXRHZXEPyEG8HdTP4tH0bCQ8KEAibXtwhXIfdBHCb+ + +3TK5+7wMJ6+chlsqfStgEvMSMxIkQq4GG18jCltpEOZotGm5WhHGmqgJmNkbsroRFuh + rSYmXVWTay0ofA2t4IJKfAkGllkIqZOR+YdOnZKhIid2iPAx5xNMBJdZzqcOoBWOEahQ + EiwEmi/PS84odzgtQaVC6aK8K4eAiow2x6HZ6MpAL7V0xxOitDYNzCcxeVnCVG/JxJHN + T7AvTogf1TK1PSVOI/apK+ajYfvq1QwbGyvuD9OwBTXNXY/+9xP1v+9koiKNap3e7K2r + Kp770DlNhC1vzLCchKKHmtdUVLwp6oaPHZEUluIamSCk5z73xF+mZhtROnAhO1wc/Izb + yO+hvcEJJUKC2qkNj9KB1ROl1GqcHl5rXMnY4u0OjSPMq7W64te7aseHAOk/f1LyPLQq + +mhdFEWGTAWijNG0fL2JXqO0LOhZh0XRo0vuJ4QG+9y//3W0uy47X/wCY33FNXck3BWX + //gTI+N+9Wtuqrj/gij2+py1q/g9/efHJeX80NX7cNe4NQ9U33F/ICRvRfAYN5z0biev + eotQ9rjpWRPTHYtVxsaojqg7NYuiAsa3DG8bVRZGwdnf5TxxNqUpXKPT79R5orVxel+E + A3xxZrvNqfKZrQ5nt6ty4HkG/Gj/eXkh9EXm5+eTM5VTSafzoUWy+tBjSEtBcqOSf2Jy + 9TCMFgKyepUrq31NbmzssAdmTlajWzP5XvGSSD4p6utDyFvEGGb3qOySh8YtvbPqvrkN + y7t244hLaMURgS9wi6yLIrLpdtKFnp5ugpB2RoeEmZ3Rs2D26JUKjd2j0RpZm8GhcLBe + zuaw+cKscY71rsqya7YC0gst2qtaIfOU/CqYzJKbyg1HdzxIIl9Ri2yjzF0bstAlnh21 + seu/xMuIR3cubR9dt+T2OxZxzVNqGNX3wrq2Rsz9Bs0o/LDglYfebhj++v3r/kjrMDN4 + nBtJ+qAtBeLheaGqXNUdvQ4f13AKVPMKPW+r5sv1Vc578Z6IboeGNbFmg8lgrlSNM40z + V9maTc3mqbbj+BH3hf1z50WnfiyW6+/jV+g5JoCPCcMmhN8cfms4Gx4eo/DEu5TmqLQY + rYll4lmfeXF8XKtumY7R2TyMI/yxOKvbQ1BcsU7JOFtoXzzZlxmC41Boa2zpJzTmt+D8 + FqC1mIFuHzkts0npGvBvslYJokg9FCAenheOu5WLp913rEIwaJl+k6KtYFJjXpwZ3dqp + 9/9wWNyLjlPRbNev5sy//eysW9qWVT+wpSQ5JyarbeYm1GEGxtCxnqxbtViJL/MHCDED + FEhng69SaMNBPZ0LhunJtg+HUjweAM1A3ngcAqDPDIAh81XqB9Q4KxtJiRiHZH+5pM9o + yW948WXxM7SLUy3RqpRUtC9/I2xYIkdHA5dmMphcwL14efzvf0dRGl1IJw2Az8rxW4Jg + YAA1PIU54EUrx/e6agcMqZ/OSKQQpyg7Kxlpvmel8akT+YtuClLbSN8mOletFtJ5NGIC + 5mGjtkOrwCi9Qu0hMMM5jZn3mSMYmzUy3BthtVjfuDr2voGAhZwoBYJ9RfmhHYYcoivy + iqOQTNUoOQ8v23NUPG5OWfiwL1Y8iYa87Mbu2VzztkP98cy6hozJi4vb+3s5YdPkhBIJ + IRZKyD9s5NopHjHTSUaNkGRmUaW7T3efnjWHWSJmhbG8xxKt1HrCtRaLivGZbTaVL9Jq + tQVw4fZB8wntipH5g4EJLoAF8z0hJy6vGI+8zdEe6AQjMmfvvXfJku7uJUyG+JX4Od1f + YTQtbStG97/3l94tW7Zt27Kld5b4PNb/6yucKv7hK0YgLJeIk7gN3FQyBCeMFZLNBpUm + 1sZ4nEqbQuMxaK3hqjBLmE9vi1c4YhwWr/VH/a9s3bIPJhccWuzXeqncKMmUZY88CCrb + ddvd5HHbC+vuWGJHtdh/cHlDZrp4GiMzht+8gtm095Hxd75Rkx54nMmn3fkc7c/vFnvK + +t/mzz1ZkVxFMJMdLSdjuMw1kzWP3QUsVmxnIsIUAawQrAZlmEKncTJZjMCwRrIuJlzr + 1ckx1cztrtpZA9vHviOykdW0kJkVkZs9QnGV5KRoSUpbxaCwzMdaQ0xK2AsFLoqt9CXZ + tcu4ZkQK5ZnOohX9F7mSN+YljZFkYkj3H9HZRRukQhosFSao9YpEaxir5lxabbWmSlvh + KnVWJh9lVfZ4p07DmVI5ky0tLUrJpSVp09IijBqn3VQTrzSmK2sSbBk6sNdEpENNqjU9 + 45pd4jyFgPK+J4VMtEkQ/CEj6T+kP0SBU3bWTS03YUsoXJJ3vgQ5WPJJe0QoDpeDJcnp + GGn5OhMpVpqhjst9aPKMpCQxuGvcuL6jBxEN4mcKa+b8lgkpKcGt9ZO//kEMXqCDnOZx + zvycnCyrdVRGWemydR8+/Xaec+RIb7bJPCJpYt3ipw59+CxLCwHBGPySuZPvoHU6doc+ + LcKhS4t8FecDh82CSUlvw6iwkGoiFOc5tRd+Q3qyBDB8u6tVUs+RwpP9hecLJf38s0Z+ + Yesrom2FXnbk96lhRndkKK4xKhUUCEYa16Nt27b4KWH28O79Y7PYeQcwSzx8oH/PGBfi + +7yyJnsWs0my9+AZrp58h5XeoscJGRqTzZRiGmFqULYrFTalBhSm8DANT/u0LUzjtVm0 + tlj0WawxsVedh7Quo/Jr+o/ImEs7NLkoQptiqVB0KpkN7XFKaZuTREvAJ03eBb/x0VGZ + eJZzmsYsmfzN5Ez8iivpv7Ulc9JCYTYz8fIbG/gcQ2HaS627mYfthB2943O1HB21ICus + U5EbYZScgbNpWC/j4RIVKRofl68p46o09VyT5jHucc1m7mXNK9xO5W7NPm6/5l3uI80p + 7iJn5lgLx7PeKIZBjrdwLO+NopBBo7ZotGpvlFKl0mgtGrXWG0VzIqfUcKDgWUahVatA + o1byCi2LGg3HKOh/AMJIWarnwKpr14U9F9LSwvH685aafmtoGWVa9un3kT1SMEpuIJ8C + gMJCcq+FhRSYor47VbWkemLjXU36Ny16vjt1iepabrCO79ZbrraUwob52DJMja4YdNGv + Fm3YJW7Elh29OEncQPnfvvY6k8RYxH1Y2N/X/x5WiLtIz/IVlE5Wf+wyUyFL3yHskAg5 + MIxOpUvp5LuczmMroQYm0KlsHUyik94GmELns9OoNVJ0Km9fFGXQ14sJJWOqi2tSK9vn + Lmzvmj2jLb3k1rkzpVZXLmLozBxgGdEaos1EfqI9RIeJPiX6V6gD6il1EmURCUS1RK1E + nUTLiNYQbSbyE+0JDlxA12AeyXtfz2cP4UcO4WV3dU3/CUPqSYbrxp80hG8bwk8fws8Y + wkt4XCuvrJdr5p8zpH7uEP6WIfytQ3jC6rrxFwzhbxvCy/+zdc38tw+pl/8n7H8BmxKC + 1QplbmRzdHJlYW0KZW5kb2JqCjU2IDAgb2JqCjYzNTEKZW5kb2JqCjU3IDAgb2JqCjw8 + IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDc3MCAvQ2FwSGVpZ2h0IDc0MSAv + RGVzY2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJCb3ggWy0xMDE4IC00ODEgMTQzNiAx + MTU5XSAvRm9udE5hbWUgL09CQ0tBTStIZWx2ZXRpY2EtQm9sZCAvSXRhbGljQW5nbGUK + MCAvU3RlbVYgMCAvTWF4V2lkdGggMTUwMCAvWEhlaWdodCA1NDkgL0ZvbnRGaWxlMiA1 + NSAwIFIgPj4KZW5kb2JqCjU4IDAgb2JqClsgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwIDAgMCAwIDAgNTU2IDAgMCAwIDAgMCAwIDAgMCAzMzMgMCAwIDAgMCAwIDAKMCAw + IDcyMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNzc4IDY2NyAwIDAgNjY3IDAgMCAwIDAg + MCAwIDAgMCAwIDAgMCAwIDAgNTU2CjYxMSA1NTYgNjExIDU1NiAwIDAgMCAwIDI3OCAw + IDI3OCAwIDYxMSA2MTEgNjExIDAgMzg5IDU1NiAzMzMgNjExIDAgMCA1NTYKXQplbmRv + YmoKMjcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNl + Rm9udCAvT0JDS0FNK0hlbHZldGljYS1Cb2xkIC9Gb250RGVzY3JpcHRvcgo1NyAwIFIg + L1dpZHRocyA1OCAwIFIgL0ZpcnN0Q2hhciAzMiAvTGFzdENoYXIgMTIwIC9FbmNvZGlu + ZyAvTWFjUm9tYW5FbmNvZGluZwo+PgplbmRvYmoKNTkgMCBvYmoKPDwgL0xlbmd0aCA2 + MCAwIFIgL0xlbmd0aDEgMTA2OTYgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt + CngBvTppeFRFtlV37yWd3vdO902nu9PZF7KRQJqQhLAkhIQlQYJJSEJAUMQQjSO8qDBI + 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 + Oda3bObatezM8DvrBsrydQpMrZEJD8+lXl1H7CTqjlyiP4L9bAIKZwdGhvRn9ZRMJ+gt + Oos+kbuffhfcBsSq5IiLkbOgu8y82QxufZrcr1RYrdhPiH3rhoWuJMqLiD8sf/R4XlxE + BIKIPm7AUULhHEgc4TzJN4NV0XhwvjXj0ZdLPX17KfeIueuu1KbiA0z6QEHNiMbdM/+b + Un17/tlRSVM316yi3rOS/Ql3PPQnTDrEOcSygwUnJp4G4ABkYMkpuJ1CMPAx+CfBjZQw + mMrI1GXbsEmG3fDDcZ99/c0H4Y2469Pw1+HwZdzFpIdX4i524NuBD/DT4bspD7AJ+jOE + x9NXgU/k7ui3gbt7DI+Zd5lpnjNx+doKbZ12Ln8/fT+/Wr8JbWQ3GTYaN5p2o91GdQWa + aBhnet3AlLKvsdRKdifaiXexu01sQiJrNpiM4O8YlIpYh6AiRsFoI7crCB8wGcwHlE8a + wTa8HXUULXBbc9k8UFAAP4vkApmjLIZdl2VJNxcXFRURPQN/TAloDXDVZVyoNZnMLMYL + tXDhtTItWb30tBQJEOMG2I33wqGrAWdzNMVT0gbIIY5zbt5onIezMU2LZ7yPNpds697m + 9celJ6mz0tXsaFW44w3sxEz63PDa8Ocvhdv6OOGFGE40C88kMFXXN9GPEF5JT6QV/qvw + fQ8sIdhNcjPngO/mpagMlUv/fxgv/cehEk2W/oVRA/+smIamoxmoDv6pMEvqCMNdXvSu + kYP2qHzMuLE1ZckVrQs6WzvmzWmCOtFSUnkRwEMAqwG2AbwI8DIA8Q4/BPgc4Do0UALY + AVIAigAmAcwCWADwEMBqgG0ALwK8DPAGwIcAnwNcjww+0BcaSmPkGoanDsPThuEjh+GT + h+FkZjf33zwMnzMMbxmGS+twE31tw8rbh+HzhuHzh+ELhuHSfx5v6v/uYeX3DMPJ2tw8 + n8XD8PuG4dJ/Gm/qf8mw8geG4V0E/3/uDO9UCmVuZHN0cmVhbQplbmRvYmoKNjAgMCBv + YmoKNjg2MAplbmRvYmoKNjEgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9B + c2NlbnQgNzcwIC9DYXBIZWlnaHQgNzM3IC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMyCi9G + b250QkJveCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0ZvbnROYW1lIC9GQUdDUkUrSGVs + dmV0aWNhIC9JdGFsaWNBbmdsZSAwCi9TdGVtViAwIC9NYXhXaWR0aCAxNTAwIC9YSGVp + Z2h0IDU0MCAvRm9udEZpbGUyIDU5IDAgUiA+PgplbmRvYmoKNjIgMCBvYmoKWyAyNzgg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMzMzIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMjc4IDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA3Nzgg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDU1NiA1NTYKNTAwIDU1NiA1 + NTYgMjc4IDAgNTU2IDIyMiAyMjIgMCAyMjIgODMzIDU1NiA1NTYgNTU2IDAgMzMzIDUw + MCAyNzggNTU2IDAgMAo1MDAgNTAwIF0KZW5kb2JqCjI2IDAgb2JqCjw8IC9UeXBlIC9G + b250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFzZUZvbnQgL0ZBR0NSRStIZWx2ZXRpY2Eg + L0ZvbnREZXNjcmlwdG9yCjYxIDAgUiAvV2lkdGhzIDYyIDAgUiAvRmlyc3RDaGFyIDMy + IC9MYXN0Q2hhciAxMjEgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+CmVuZG9i + ago2MyAwIG9iagooTWFjIE9TIFggMTAuNi41IFF1YXJ0eiBQREZDb250ZXh0KQplbmRv + YmoKNjQgMCBvYmoKKEQ6MjAxMTAxMzExMTEzMTVaMDAnMDAnKQplbmRvYmoKMSAwIG9i + ago8PCAvUHJvZHVjZXIgNjMgMCBSIC9DcmVhdGlvbkRhdGUgNjQgMCBSIC9Nb2REYXRl + IDY0IDAgUiA+PgplbmRvYmoKeHJlZgowIDY1CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAw + MDA1MTgxMCAwMDAwMCBuIAowMDAwMDM2NzIzIDAwMDAwIG4gCjAwMDAwMDI2NTggMDAw + MDAgbiAKMDAwMDAzNjU2MCAwMDAwMCBuIAowMDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAw + MDI2MzggMDAwMDAgbiAKMDAwMDAwMjc2MiAwMDAwMCBuIAowMDAwMDMwNjU1IDAwMDAw + IG4gCjAwMDAwMDYyMDIgMDAwMDAgbiAKMDAwMDAwNzA5MSAwMDAwMCBuIAowMDAwMDA0 + MTg2IDAwMDAwIG4gCjAwMDAwMDQ4NDQgMDAwMDAgbiAKMDAwMDAwMzYyNSAwMDAwMCBu + IAowMDAwMDA0MTY2IDAwMDAwIG4gCjAwMDAwMDc3OTcgMDAwMDAgbiAKMDAwMDAwODgw + MiAwMDAwMCBuIAowMDAwMDA0ODY0IDAwMDAwIG4gCjAwMDAwMDU2MzggMDAwMDAgbiAK + MDAwMDAwNTY1OCAwMDAwMCBuIAowMDAwMDA2MTgyIDAwMDAwIG4gCjAwMDAwMDcxMTEg + MDAwMDAgbiAKMDAwMDAwNzc3NyAwMDAwMCBuIAowMDAwMDAzMDIwIDAwMDAwIG4gCjAw + MDAwMDM2MDUgMDAwMDAgbiAKMDAwMDAyOTc1OCAwMDAwMCBuIAowMDAwMDUxNTQxIDAw + MDAwIG4gCjAwMDAwNDM5MTQgMDAwMDAgbiAKMDAwMDAzNjUyMyAwMDAwMCBuIAowMDAw + MDI0OTgyIDAwMDAwIG4gCjAwMDAwMjcwNDUgMDAwMDAgbiAKMDAwMDAxNzQ2MCAwMDAw + MCBuIAowMDAwMDE5NDQyIDAwMDAwIG4gCjAwMDAwMDg4MjIgMDAwMDAgbiAKMDAwMDAx + MTA5OSAwMDAwMCBuIAowMDAwMDE0OTMzIDAwMDAwIG4gCjAwMDAwMTc0MzkgMDAwMDAg + biAKMDAwMDAyNzA2NiAwMDAwMCBuIAowMDAwMDI4OTA5IDAwMDAwIG4gCjAwMDAwMTk0 + NjMgMDAwMDAgbiAKMDAwMDAyMjY1OCAwMDAwMCBuIAowMDAwMDIyNjc5IDAwMDAwIG4g + CjAwMDAwMjQ5NjEgMDAwMDAgbiAKMDAwMDAxMTEyMCAwMDAwMCBuIAowMDAwMDE0OTEy + IDAwMDAwIG4gCjAwMDAwMjg5MzAgMDAwMDAgbiAKMDAwMDAyOTczOCAwMDAwMCBuIAow + MDAwMDI5Nzk1IDAwMDAwIG4gCjAwMDAwMzA2MzUgMDAwMDAgbiAKMDAwMDAzMDY5MSAw + MDAwMCBuIAowMDAwMDM2NTAyIDAwMDAwIG4gCjAwMDAwMzY2NDMgMDAwMDAgbiAKMDAw + MDAzNjg4NiAwMDAwMCBuIAowMDAwMDM2NzcxIDAwMDAwIG4gCjAwMDAwMzY4NjQgMDAw + MDAgbiAKMDAwMDAzNjk3OSAwMDAwMCBuIAowMDAwMDQzNDIwIDAwMDAwIG4gCjAwMDAw + NDM0NDEgMDAwMDAgbiAKMDAwMDA0MzY3MiAwMDAwMCBuIAowMDAwMDQ0MDk0IDAwMDAw + IG4gCjAwMDAwNTEwNDUgMDAwMDAgbiAKMDAwMDA1MTA2NiAwMDAwMCBuIAowMDAwMDUx + MjkxIDAwMDAwIG4gCjAwMDAwNTE3MTYgMDAwMDAgbiAKMDAwMDA1MTc2OCAwMDAwMCBu + IAp0cmFpbGVyCjw8IC9TaXplIDY1IC9Sb290IDUxIDAgUiAvSW5mbyAxIDAgUiAvSUQg + WyA8MjE1YTgzNzkwODUxMTdhZmEyNTllMGQ1OWRmZjU3OTM+CjwyMTVhODM3OTA4NTEx + N2FmYTI1OWUwZDU5ZGZmNTc5Mz4gXSA+PgpzdGFydHhyZWYKNTE4ODUKJSVFT0YKMSAw + IG9iago8PC9BdXRob3IgKEd1c3RhZiBBLiBOZXVtYW5uKS9DcmVhdGlvbkRhdGUgKEQ6 + MjAwOTEyMjkxNTA2MDBaKS9DcmVhdG9yIChPbW5pR3JhZmZsZSBQcm9mZXNzaW9uYWwg + NS4yLjMpL01vZERhdGUgKEQ6MjAxMTAxMzExMTEzMDBaKS9Qcm9kdWNlciA2MyAwIFIg + L1RpdGxlIChvYmplY3QtcGFyYW1ldGVyLmdyYWZmbGUpPj4KZW5kb2JqCnhyZWYKMSAx + CjAwMDAwNTMzNDMgMDAwMDAgbiAKdHJhaWxlcgo8PC9JRCBbPDIxNWE4Mzc5MDg1MTE3 + YWZhMjU5ZTBkNTlkZmY1NzkzPiA8MjE1YTgzNzkwODUxMTdhZmEyNTllMGQ1OWRmZjU3 + OTM+XSAvSW5mbyAxIDAgUiAvUHJldiA1MTg4NSAvUm9vdCA1MSAwIFIgL1NpemUgNjU+ + PgpzdGFydHhyZWYKNTM1NDIKJSVFT0YK + + QuickLookThumbnail + + TU0AKgAACwSAP+BP8AQWDQeEQmFQuGQ2HQ+IRGJROKRWLReMRiBwSMx2PR+INqRACBwx + 3OJvAB3v4EAAKBGWgAFhIAA8CQV6vF6zIHguQRIA0EACaiT+QRujUmlRhlLNGgBiOoIg + ABg8WgAgCsHAB4ttpgBts9igB6iAVAB/OF7AAPCgQgADg4OAAfkgZAAGUuFtm+AAT3+9 + RqS4HCYWENXEAABYuKPycgB+gcH3Cb4aIOzMAAe5vLROkZ3QUpnL9X2QCBkAAF7O4AON + 4QUTjMcgAZCSp6GL3xs37AbiHZ/fcGMbreCeCvx8AB8PybggEZXhRbiX/jdGFcDrdmH9 + Pe9qf9zq96C9jxeWDeDzR/0ebyenxLxZqwAOZ4veSP0AgAEhAKgAMAiBL3IcfcCAAIcD + vS9sBOyapnGUAAJAwuYCgM/J7H8qYPAsmMFoU9bywVDrhGyaRhpUeSWggC4IKofj7HuA + 4GgACACJuAgEKmDQLLy80PvFEMRN8apjluAB4H0A4AH4qiZAsCaZATJJ+HoeiyH+DYAB + wFoLPTHzvSBILQxJB4GgoEAAAcBwFAAdBvm0AAFBCs6tyWgqWgYBjoPFLztTBMLOtGXc + 0A6DrWmpN58gSvIIAnGR9nkeSCggFLNBkDUur66kEsHP7oz5TqGU+60/VAwlRVKhFTuF + UlUKXVVWgBV7fVZWCLnTW4AHXXSwG2bYABVYDcV7XwKWKAAI2Qj6gvyogTU2gVar0dFp + gActrLxPDitwxBqrQfx/RmCEWUJQtot/TlzIskpz3YAECH2AALXkAB9XqmoHsm0KRTee + 9+gAFuAMUxl0oYjd93cdpwtbC93H3NYMAetZmGgdgAA4Drbn4fKCxqgoBxYEwRS44R+5 + K/QEwDlEAgxlkO4OEmYYEAWCYKgbiA+CKCG4dLXnUe4L1/cptm5KoQg+gpkGCagAAICU + ngQAbUCQJCruEYOrgAF+tXDFkwnHr8IAkmgF7JmiFo2XW0zQBs1n4jjIPyAIBoI/KbgK + AoBz/SFIwOIdUHbwFvXACvCbM6+bL6Bp9HeABsHXJYBHxitE6AEYVhiAASQ3P9ZPTfr7 + HV0IAA/0nDISjfOoTJcqILPE9IodRxG4AB8gKDAAAqmAAOcyrkOV3fd9fWNMu7VuX5ix + eZ9N1C+giepygAaZ55mdZsGwAADAmmgDhKHyhn765tHEcwAHuA0WciggQB4HcjGQsZ8A + GvIbB24xxGnXxwG1Xx8gfoA/x5H2AkBxJ4GwWGzBaBpDhBXUoCa+ONY6yU8I8cM8w3am + iDj4HelUAgES8vCMsPgehyQEAMgWRCBp7nADtMgyZeTI4KuIgu8V0zw4ZnhVaPiHSbFq + Agh9DWCy2oanneJDhaLB1mxAIGLmJhaB6DoPmPQm4/x8EEAIPd6A8QDpcAWP45JiiCgO + BAs4CYBjxMlH6AAI0azLDTGAKYAAvxuFTB4CsyZkQCkkH43k45BWTEzJodBvaaE0m4WW + UMopRogs4byOQfiLAJqKAAAUeo5wADqXgAAexzAAATbm7sDwHljwgODCkpgsxLgAHcCA + JhBRmi9AAA0GoJXoi+ggBQDJ/QHD6ggBkJwYF/wUOzKYh8iwLIyHuAUrY8x1DrXoQcAi + LAOANPsNMaI33dgbS4AkfpBADADPyPoB5b3NSkKTMQiwy51STbuQgf4/m6ACPyqUes9Q + AA7nwUmIIFgEt5HuAqMw3RqwQQomsqiLAWAYSqM4b7jB8D+ZmAmeS4SpgPA8s4DwEZzF + GnQRU0YqkjACduO4dCVTIMzA0A4nY8gSBHAAEgFEwlMQ3n1DIvwH0sHLIKPQ+zTACJVH + sPcm6aUWOuQ6KqpAAImC5AAJOpzDV4ADqk9gA0ZqqxmInR1DtWmz02ZzSsCalxvjBGkv + QfTFQFAYLyPMAoMAABOB7KJBb1nrtkJ8BmvFUElD8SXGiqkZgFWBIgMoW4nFqgDBemgf + MUB1jwSq/4qcOmNgCAIVsEQNAer/AtRs0FXHDkCZuBsqY8mHJwAAlVdg6iZAaBEmgBCS + x3DkH0WxzVM4hESXrbOvzKlQjSGcAADYJgXF4Jics5qU0jD0XgPQd8LAFghBJKNPcRaa + 2gcS4txrj3yjuUiBICxPh9Q7HugUfQDgUVvB7dFHt1CJyDt43ePJCxeXziGQYkoRb8XV + H/Z5ETnV3gAkGBPAUKLqLfXBX6+CqL+TuptBi+rnYVrYLyAfChISRufr1YFNdUm8rTig + lRKuCXSNHKNPUndThJ1vCcE5X6wSDyHiTIrBsNHTKntzC2NNvCH1+xujVu07SFjfyFJo + exa1xIsA3kkwMD6/lwwqA3KBVKpl6YMSNdB0RfZZay1vASTyL4wkSeXG44syGpKEBrND + J0AmhJKSWQ8h8ZLQQEKjOhCAsZ3KSPgcVvxejVHiVQfx9gKgdaOAcfL5B6AQvUOZxgJw + dl3o0RHAwABw6VbCTRfC+TgpTSqks5JyS8nPIachJYDAIUymLldAWGMKJJeSzRaz0MfA + AAvrU7w6hsFfHKPItY+R/mTBYC8mg5xvvkHiPg/IBwLnGgTCfVOcr6kSxBT4m9/9J4an + ZfEi2EcTFslCzSviS5D4cIorQho9BzDiSMUIcY1BwSxAuVseo940gFAqXMDgCIWDyH4o + UEgHtUFL3DgBSCcLBHO2cRbbuHgAQ+TPuRWvA5BtiJoRfcxEtPV8SUPROpBznPASWjfh + K5r/6VYUBzlDu+Pq1yKWvbqaSt6tMFtAj+k8Maz1nxC+pJRwc9giVPI50WD6qIlIPKCM + s4FAKFEni5D+Bjv6hmrJyScE7R1jlJvLLHbnaPRDpJbvDjpVHePgm8HuRnDup03jHGsM + cD3JuTNxQsE4JkONoaYuAACnFMM8lwGUZAHA0lgew24oAIAhHkfw+y1gCAUoUHAPSzpJ + IrDqEnKyLZgWcR4bIzkijHGUa85JcwwBXBYSobIogACKGWagEA8M/gmBmS0aslgAAaAk + pcAw/YzBICpZngJ6O1FK0nf8fPxa9uQMZrPITSwEgFS4AcATGx4EskmSR7BlfEJKAOk9 + QhU7OGGwWiQY5VAKFXA4BI5vK4dj81FCLUtryVUmAKjdbH34bLa+CekYYwlBJUSWASAW + SkH4bi8SY8JaAWoAQ6v+M2sy80vYmG7S6IwUGk/GH0AC+8H2tUHcAaBGk6Hwig2UOMBC + R2q3AeIy6G5oOi8wJJAkVKL4W6ySSwQIx+IOSWHsHktmAUAcjyOYQC/gdatgHGSqAcAi + a6SUaYWy7OIqwWVK/yR6GkF+kuHYZmAyBCAoAAHOHQz+HeHWSqAYAMQCH2HWJSHqA4lE + ASHsXgA4BqcwAKHUOSACHUW6G7BwAABECIxYpiJBCYVBCcPKGZEA5VCUVg5aAABtEO2i + ZrBSVhD4umpoKNBQbeOskPD8PFEihqHjEyAABdE5EEPVBMU8L7ErESPMELFMdwcKC3FU + 4MTW6SIiGqGUUEH8TMAAG+GoOSCUCMloHeG2F0AAF2HWNQBGAWjMAsl2PmHsSSAURcJI + AIjyAcA6LOc0hOOJFHFIPcr826r81m1eww0m1mHMGoUEG8AMLuBCAMSSBSBMJoHoHcTe + GcHKJuAeH0fIHMY2TQAiTWHi12WPDMAAAyoucyc2IPGrBbGuTC1IaY1E1GOUk5IWO3FA + RHFFINIOPEHoG+/GGKG+XgAYACjSH4omHwHyZmAgA0uiA630JUAMLeBW4AwJEfAgN3Gt + IrFJEuO1EpIpJpJ0VqICAA8BAAADAAAAAQBAAAABAQADAAAAAQA/AAABAgADAAAABAAA + C74BAwADAAAAAQAFAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAAB + FQADAAAAAQAEAAABFgADAAAAAQA/AAABFwAEAAAAAQAACvwBHAADAAAAAQABAAABPQAD + AAAAAQACAAABUgADAAAAAQABAAABUwADAAAABAAAC8aHcwAHAAAYmAAAC84AAAAAAAgA + CAAIAAgAAQABAAEAAQAAGJhhcHBsAhAAAG1udHJSR0IgWFlaIAfaAAsADQALACQAMGFj + c3BBUFBMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWRlc2MAAAFQ + AAAAYmRzY20AAAG0AAAA8GNwcnQAAAKkAAAA0Hd0cHQAAAN0AAAAFHJYWVoAAAOIAAAA + FGdYWVoAAAOcAAAAFGJYWVoAAAOwAAAAFHJUUkMAAAPEAAAIDGFhcmcAAAvQAAAAIHZj + Z3QAAAvwAAAGEm5kaW4AABIEAAAGPmNoYWQAABhEAAAALG1tb2QAABhwAAAAKGJUUkMA + AAPEAAAIDGdUUkMAAAPEAAAIDGFhYmcAAAvQAAAAIGFhZ2cAAAvQAAAAIGRlc2MAAAAA + AAAACERpc3BsYXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAA + ABIAAAAMbmxOTAAAAAgAAADoZGFESwAAAAgAAADocGxQTAAAAAgAAADoZW5VUwAAAAgA + AADobmJOTwAAAAgAAADoZnJGUgAAAAgAAADocHRCUgAAAAgAAADocHRQVAAAAAgAAADo + emhDTgAAAAgAAADoZXNFUwAAAAgAAADoamFKUAAAAAgAAADocnVSVQAAAAgAAADoc3ZT + RQAAAAgAAADoemhUVwAAAAgAAADoZGVERQAAAAgAAADoZmlGSQAAAAgAAADoaXRJVAAA + AAgAAADoa29LUgAAAAgAAADoAGkATQBhAGN0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwg + SW5jLiwgMjAxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNSAAEAAAABFs9Y + WVogAAAAAAAAc1AAADrMAAAB0lhZWiAAAAAAAABgfAAAuFwAABQ3WFlaIAAAAAAAACMK + AAAM2AAAvSNjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBAAEUA + SgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDG + AMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB + YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQIm + Ai8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyED + LQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRj + BHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF + 5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZ + B6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8J + pAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvh + C/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQO + fw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP + EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoU + ixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3 + GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib + 2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/q + IBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0k + fCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4 + KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwu + gi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPx + NCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5 + +To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAj + QGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG + 8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03c + TiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShV + dVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n + XXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1l + kmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4S + bmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3 + VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4Co + gQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSK + yoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0 + lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf + +qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sC + q3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm2 + 8Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lb + w1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfP + uNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK + 3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDq + W+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ + +Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAAN + WQAAE9AAAArAdmNndAAAAAAAAAAAAAMBAAACAAAAEQBPAMABSwHvApUDWgQ+BTQGRgdl + CKYJ4Qs9DJkOAQ9tEOQSZBPrFWMW4RhkGd4bTRy2Hh0fciC6IfIjHyQ3JUEmRydDKDop + NSooKx4sES0ELfcu6C/aMMwxvzKyM6M0kjWCNnA3XThIOTU6HjsGO+481z3APqo/mkCP + QYpCiUOLRI9FkkaTR5RIlUmVSpRLkUyOTYtOiE+FUINRg1KEU4NUhFWEVoJXgVh/WXta + eFtzXG5daV5kX2NgZWFrYnVjgWSOZZtmp2ezaL5pyGrRa9ps423sbvZwA3ESciVzOXRQ + dWd2fXeReKd5unrOe+F88n4DfxCAGoEggiODIoQghRyGGIcUiA+JCooEiv2L9ozvjeiO + 4Y/ckNiR1ZLTk9KU0pXRls+XzZjKmciaxJvAnLyduJ61n7Sgt6G+osij1KTipe+m/agK + qRaqI6surDmtRK5Or1iwYLFnsm2zcrR3tXu2freBuIS5h7qJu4u8jb2Ovo+/ksCVwZrC + n8OkxKrFrsaxx7XIuMm7yr3LvszAzcHOwc+/0LvRtdKs06LUl9WM1oHXdthq2V3aUdtE + 3DfdKt4c3w3f/uDt4drixeOx5JvlheZv51noQukr6hTq/evm7M3tte6d74XwbvFY8kLz + LfQZ9QX18Pbc98b4sfmc+ob7cPxa/UP+Lf8W//8AAAARAE8AwAFCAdEChwNSBCUFGgYu + B0gIbgmzCwIMYg2+DyYQkxIKE4kVBBZ7F/oZZhrZHD4dmB7rIDQhaCKPI6kktSW4Jrcn + sSioKZ8qliuLLH4tcS5iL1UwRzE7Mi0zHzQRNQE18jbhN9A4vjmqOpY7gDxrPVU+Pz8q + QBpBDkIEQv1D9kTvRehG4UfYSM5JxEq4S6xMoE2SToZPeVBwUWlSZlNjVGJVX1ZdV1pY + VVlRWktbRVw+XTdeMV8rYChhJ2IoYypkLGUvZjBnMWgxaTFqMGsvbC1tLG4sby5wNXFB + clFzZHR6dY92pXe5eM554Xr1fAd9GX4pfzeAQ4FKgk+DUIRQhU+GTodMiEmJRopCiz+M + Oo02jjGPLZAqkSiSKJMnlCeVJ5YmlyWYJJkimiCbHZwanRaeE58RoBKhFKIYox+kJ6Uv + pjanPahEqUuqUqtXrF2tYq5nr26wdrF/somzlbShta22ubfEuM+52rrju+28974AvwjA + D8EWwhzDIcQlxSnGLccwyDPJNco3yznMO808zj3PPtBA0ULSRdNI1EvVT9ZS11TYV9lZ + 2lvbXNxe3V7eXd9a4FPhSOI44yXkEOT55eLmyuey6Jrpgepo60/sNu0d7gPu6+/U8MHx + sPKi85b0jPWB9nb3a/hg+VX6Svs+/DH9Jf4Z/wz//wAAABEATwDAAUIB0QJ4AzgECwUA + BgAHHwhSCYgKzAwpDYEO5hBTEc0TQBSzFiwXpBkYGoob8B1RHqcf7yEwIl8jfySVJaQm + riexKLMptSq1K7Ussi2vLq4vrDCoMaQyoDObNJc1kjaKN4M4fDlyOmY7WjxNPUA+ND8q + QCNBHkIcQx1EHUUgRiBHIEgeSR1KGUsWTBBNDE4HTwJP/1D8UftS+lP8VPxV/Fb7V/lY + 9lnyWu5b6VzkXd9e21/YYNZh12LZY91k4WXjZuVn52joaelq6WvobOdt527ob+1w9nIC + cxJ0JHU2dkl3W3hteXx6jHucfKp9t37Cf8mAy4HJgsSDu4SyhaeGnIeQiIWJeIpri12M + T41BjjOPJ5AckRSSDZMJlAaVA5YAlv2X+Zj1mfCa65vlnOCd2p7Tn8+gzKHKosqjy6TM + pc6mzqfPqM+pz6rNq82sy63KrsmvybDKsc2y0bPVtNq137bjt+e46rntuvC78rz0vfW+ + 97/3wPfB+ML4w/jE+MX3xvbH9cjzyfHK78vtzOrN5s7jz+DQ3NHY0tPTztTI1cLWvNe1 + 2K7Zp9qf25jcj92H3n3fc+Bn4VniSeM45CblE+YA5uzn2OjE6bDqm+uG7HHtXO5H7zTw + I/EX8g/zC/QK9Qr2CvcK+Ar5CfoI+wf8Bv0F/gP/Af//AABuZGluAAAAAAAABjYAAKZF + AABVtQAATMwAAJ5IAAAk8AAADQ4AAFANAABUOQACI9cAAgKPAAH9cAADAQAAAgAAAAUA + DAAVAB4AKAAyAD0ASABTAGAAbAB5AIcAlQCkALMAwwDTAOQA9QEIARsBLwFDAVkBbwGH + AaABugHVAfICEQIyAlYCfAKmAtQDBAM4A28DpwPjBCAEYASiBOYFLQV1BcAGDAZbBq0H + AQdYB7EIDghsCM4JMwmaCgMKbwrbC0cLsgwdDIkM9g1lDdcOSw7BDzoPtRAzELQRNhG7 + EkISyxNVE+AUbhT+FZAWJRa8F1YX8xiSGTQZ2RqAGykb0hx7HSMdyx50Hx4fyiB5ISoh + 3SKTI0wkByTEJYQmRScHJ8koiylNKhAq0yuZLGEtLC34LsgvmTBtMUQyHTL6M9w0wzWw + NqI3mTiUOZI6kzuXPJ09pz60P8RA10HsQwREHUU3RlJHbkiLSapKzEvxTRlORE9yUKNR + 11MOVEhVgla9V/ZZLFphW5Vcyl4BXzpgdmG1YvZkOmWBZstoF2lnarpsEW1sbspwLHGR + cvl0ZHXSd0N4t3oue6d9JH6kgCWBqIMrhK+GNYe9iUiK14xpjf6PlpExks+UcZYVl72Z + aZsbnNSek6BZoiSj9KXGp5ypdqtTrTOvF7D/sum02LbLuMO6wrzHvtPA48L4xRHHLclN + y3HNmc/F0fTUKNZf2Jna1t0U31LhkuPT5hfoX+qq7PrvTfGk8//2XvjA+yf9kf//AAAA + BQANABUAHwApADMAPgBKAFYAYgBvAHwAigCZAKgAuADIANkA6gD8AQ8BIwE3AUwBYwF6 + AZIBrAHHAeQCAgIiAkUCagKTAr4C7gMgA1UDjQPHBAMEQQSCBMUFCwVSBZwF5wY1BoUG + 1wcsB4MH3Qg5CJgI+glfCcYKMAqcCwoLeAvmDFYMxg05Da4OJQ6fDxwPmxAdEKIRKRG0 + EkASzxNeE+4UfhUQFaMWORbRF2wYChiqGU0Z8xqbG0Yb8xyhHVAd/x6wH2IgFiDMIYYi + QSMAI8EkhSVLJhQm3yerKHcpQSoKKtIrmixiLSwt+C7HL5gwazFBMhky9DPRNLI1lzaA + N284YzlcOlg7WDxaPWA+aD90QIJBk0KnQ75E10XyRw1IKklISmlLi0yxTdlPBFAyUWNS + l1POVQhWRVeDWMFZ/1s9XHpduF73YDlhfmLFZA9lXGarZ/5pU2qrbAVtX267cBZxc3LQ + dC91kXb1eFx5xnsyfKJ+FH+JgQGCfYP7hX2HA4iNihqLqo09jtSQbZIJk6mVS5bxmJma + RZvznaOfVaEIor2kdKYtp+mpqatrrTCu+LDEspK0ZLY7uBe5/Lvsvei/8cIDxBzGOshc + yoHMq87Y0QrTP9V417TZ8twt3mTgluLF5PLnIOlS64btv+/68jn0fPbD+Q37Wv2r//8A + AAAFAA0AFgAgACoANQBAAEsAWABkAHIAfwCOAJwArAC8AMwA3QDvAQIBFQEpAT4BUwFq + AYEBmgG0Ac8B7AIKAisCTQJyApoCxQLzAyMDVgOMA8MD/QQ4BHYEtgT4BTsFgQXJBhMG + XwatBv0HUAelB/wIVgizCRIJdAnYCj4KpQsNC3YL4AxLDLgNJg2YDgsOgg76D3YP8xB0 + EPYRexICEooTFBOfFCwUuhVLFd8WdRcOF6oYSBjpGY0aMxrbG4QcLxzbHYceNR7kH5Yg + SyECIbwieCM3I/kkviWEJkwnFSfcKKMpaSovKvYrvyyKLVcuJy76L88wpjGAMl4zPjQk + NRA2Azb7N/o4/DoCOws8GD0nPjo/UEBpQYVCpEPFROdGCEcqSEtJbUqQS7dM4E4MTztQ + bVGiUtpUFVVTVpRX1lkYWltbnlziXihfcGC8YgpjXGSwZghnYmi/ah9rgWzkbkhvrHEQ + cndz33VKdrh4KXmdexR8jn4Lf4uBDoKUhB2Fqoc5iMqKX4v2jZGPLpDPknOUGpXEl3GZ + IZrVnIueRKABocGjhaVMpxeo5Kq2rIquYrA9shyz/bXjt8y5urutvae/qMGxw7/F0cfo + ygPMIc5D0GnSk9TA1vHZJdta3YvftuHY4/TmDegm6kHsX+6B8KXyzfT49yb5WPuM/cT/ + /wAAc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAAwGxtbW9k + AAAAAAAABhAAAJy1AAAAAMZ644AAAAAAAAAAAAAAAAAAAAAA + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{869, 485}, {753, 756}} + ListView + + OutlineWidth + 142 + RightSidebar + + Sidebar + + SidebarWidth + 138 + VisibleRegion + {{-14, 4}, {601, 647}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + saveQuickLookFiles + YES + + Index: doc/next-tutorial/object-parameter.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/object-stack.graffle =================================================================== diff -u --- doc/next-tutorial/object-stack.graffle (revision 0) +++ doc/next-tutorial/object-stack.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,420 @@ + + + + + CanvasColor + + w + 1 + + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-01-08 09:39:13 +0100 + Creator + Gustaf A. Neumann + GraphDocumentVersion + 4 + GraphicsList + + + Class + LineGraphic + Head + + ID + 11 + + ID + 12 + Labels + + + FixedWidth + 58.32952880859375 + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + + LabelVisible + YES + Offset + 0.0 + Position + 0.50699383020401001 + + + Points + + {300.978, 138} + {311, 179} + {302.135, 207.346} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 10 + + + + Bounds + {{221, 207.346}, {136, 84}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 11 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 stack : nx::Object} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 things\ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 push\ +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural +\cf0 pop\ +} + + + TextPlacement + 0 + + + Bounds + {{221, 40}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 10 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Object} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 info\ +destroy\ +method\ +...} + + + TextPlacement + 0 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + IsPalette + NO + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + ChildOrdering + 0 + + LinksVisible + NO + MagnetsVisible + NO + ModificationDate + 2011-01-08 18:40:19 +0100 + Modifier + Gustaf A. Neumann + Orientation + 2 + PageBreaks + YES + PageSetup + + BAt0eXBlZHN0cmVhbYED6IQBQISEhAtOU1ByaW50SW5mbwGEhAhOU09iamVjdACFkoSE + hBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCUhAFpFpKEhIQITlNT + dHJpbmcBlIQBKxBOU0pvYkRpc3Bvc2l0aW9uhpKEmZkPTlNQcmludFNwb29sSm9ihpKE + mZkLTlNQYXBlclNpemWGkoSEhAdOU1ZhbHVlAJSEASqEhAx7X05TU2l6ZT1mZn2cgQJT + gQNKhpKEmZkUTlNWZXJ0aWNhbFBhZ2luYXRpb26GkoSEhAhOU051bWJlcgCdm4SXlwCG + koSZmQ9OU1BhZ2VzUGVyU2hlZXSGkoShm6KXAYaShJmZFE5TVmVydGljYWxseUNlbnRl + cmVkhpKkkoSZmRlOU1ByaW50UmV2ZXJzZU9yaWVudGF0aW9uhpKgkoSZmQ9OU1ByaW50 + QWxsUGFnZXOGkqCShJmZC05TUGFwZXJOYW1lhpKEmZkGaXNvLWE0hpKEmZkITlNDb3Bp + ZXOGkqSShJmZD05TU2NhbGluZ0ZhY3RvcoaShKGbhIQBZJ4BhpKEmZkOTlNQTVBhZ2VG + b3JtYXSGkoSEhA1OU011dGFibGVEYXRhAISEBk5TRGF0YQCUl4EVL4QHWzU0MjNjXTw/ + eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjwhRE9DVFlQRSBwbGlz + dCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cu + YXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lv + bj0iMS4wIj4KPGRpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBN + SG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8 + L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh + Z2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4K + CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ + CTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0 + PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9r + ZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwv + a2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJ + CTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVu + dGF0aW9uPC9rZXk+CgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwv + aW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5h + cHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNv + bS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50 + aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+CgkJCQk8cmVh + bD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh + Zzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJy + YXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVy + dGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl + dC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJp + bmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9y + bWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5 + PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+ + Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5 + PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29t + LmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxk + aWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2Fs + U2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxl + LnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVn + ZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUu + cHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk+Cgk8ZGljdD4KCQk8 + a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwv + a2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRv + cjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJ + PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJy + YXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0 + LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCQkJPHJl + YWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9hcnJheT4K + CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJ + CQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8 + L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVk + UGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp + Y2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwv + c3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50 + LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4K + CQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJ + CTxyZWFsPjgyNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc3PC9yZWFsPgoJCQkJCTwvYXJy + YXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5 + PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+ + CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVy + TmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + Y3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmlu + Zz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBl + ckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPmlzby1hNDwvc3RyaW5n + PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4K + CQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJ + CTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVz + dGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0 + PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8 + L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJp + bnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJPGFycmF5 + PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJ + CQkJPHJlYWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9h + cnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9r + ZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJh + eT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5h + ZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJ + PGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVh + bD4KCQkJCQkJPHJlYWw+ODI0PC9yZWFsPgoJCQkJCQk8cmVhbD41Nzc8L3JlYWw+CgkJ + CQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVG + bGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJ + PC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZv + LnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmlu + Zz5BNDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0 + ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJ + CQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + QVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNv + bS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxl + LnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8 + L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8 + c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+Cjwv + ZGljdD4KPC9wbGlzdD4KhpKEmZkNTlNSaWdodE1hcmdpboaShKGbrZ4AhpKEmZkWTlNI + b3Jpem9udGFsbHlDZW50ZXJlZIaSpJKEmZkVTlNIb3Jpem9uYWxQYWdpbmF0aW9uhpKg + koSZmQ1OU0pvYkZlYXR1cmVzhpKElpcAhpKEmZkMTlNMZWZ0TWFyZ2luhpKEoZutngCG + koSZmQtOU1RvcE1hcmdpboaShKGbrZ4AhpKEmZkSTlNSZXZlcnNlUGFnZU9yZGVyhpKg + koSZmQ5OU0JvdHRvbU1hcmdpboaShKGbrZ4AhpKEmZkKTlNMYXN0UGFnZYaShKGbopeC + f////4aShJmZC05TRmlyc3RQYWdlhpKkkoSZmQ1OU09yaWVudGF0aW9uhpKghoY= + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Frame + {{118, 346}, {574, 881}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{0, 0}, {559, 783}} + Zoom + 1 + + + Index: doc/next-tutorial/object-stack.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/per-class-mixin.graffle =================================================================== diff -u --- doc/next-tutorial/per-class-mixin.graffle (revision 0) +++ doc/next-tutorial/per-class-mixin.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,719 @@ + + + + + CanvasColor + + w + 1 + + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2009-12-29 16:06:59 +0100 + Creator + Gustaf A. Neumann + GraphDocumentVersion + 4 + GraphicsList + + + Class + LineGraphic + Head + + ID + 2 + + ID + 10 + Points + + {362.173, 304.106} + {362.173, 274.053} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 9 + + + + Bounds + {{294.173, 304.106}, {136, 38}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 9 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 SafeStack} + + + Align + 0 + + + Align + 0 + + + TextPlacement + 0 + + + Class + LineGraphic + Head + + ID + 7 + + ID + 8 + Labels + + + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + + LabelVisible + YES + Offset + 0.0 + Position + 0.55582332611083984 + + + Points + + {363.844, 342.106} + {367, 378} + {362.173, 387.692} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 9 + + + + Bounds + {{317.173, 387.692}, {90, 36}} + Class + ShapedGraphic + ID + 7 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 s3 : Stack} + + + + Class + LineGraphic + Head + + ID + 4 + + ID + 6 + Labels + + + FixedWidth + 72.10552978515625 + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 per-class mixin} + + LabelVisible + YES + Offset + 0.0 + Position + 0.62633061408996582 + + + Points + + {294.173, 319.941} + {231, 317} + {180.733, 277.519} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 9 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 5 + Points + + {178.281, 179.519} + {229.065, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 4 + + + + Bounds + {{50.3462, 179.519}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 4 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Safety} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 init\ +push\ +pop\ +} + + + TextPlacement + 0 + + + Class + LineGraphic + Head + + ID + 1 + + ID + 3 + Points + + {335.819, 176.053} + {315.354, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 2 + + + + Bounds + {{294.173, 176.053}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 2 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Stack} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 init\ +push\ +pop\ +} + + + TextPlacement + 0 + + + Bounds + {{221, 40}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 1 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Object} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 info\ +destroy\ +method\ +...} + + + TextPlacement + 0 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + IsPalette + NO + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + ChildOrdering + 0 + + LinksVisible + NO + MagnetsVisible + NO + ModificationDate + 2011-01-08 18:46:58 +0100 + Modifier + Gustaf A. Neumann + Orientation + 2 + PageBreaks + YES + PageSetup + + BAt0eXBlZHN0cmVhbYED6IQBQISEhAtOU1ByaW50SW5mbwGEhAhOU09iamVjdACFkoSE + hBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCUhAFpFpKEhIQITlNT + dHJpbmcBlIQBKxBOU0pvYkRpc3Bvc2l0aW9uhpKEmZkPTlNQcmludFNwb29sSm9ihpKE + mZkLTlNQYXBlclNpemWGkoSEhAdOU1ZhbHVlAJSEASqEhAx7X05TU2l6ZT1mZn2cgQJT + gQNKhpKEmZkUTlNWZXJ0aWNhbFBhZ2luYXRpb26GkoSEhAhOU051bWJlcgCdm4SXlwCG + koSZmQ9OU1BhZ2VzUGVyU2hlZXSGkoShm6KXAYaShJmZFE5TVmVydGljYWxseUNlbnRl + cmVkhpKkkoSZmRlOU1ByaW50UmV2ZXJzZU9yaWVudGF0aW9uhpKgkoSZmQ9OU1ByaW50 + QWxsUGFnZXOGkqCShJmZC05TUGFwZXJOYW1lhpKEmZkGaXNvLWE0hpKEmZkITlNDb3Bp + ZXOGkqSShJmZD05TU2NhbGluZ0ZhY3RvcoaShKGbhIQBZJ4BhpKEmZkOTlNQTVBhZ2VG + b3JtYXSGkoSEhA1OU011dGFibGVEYXRhAISEBk5TRGF0YQCUl4EVL4QHWzU0MjNjXTw/ + eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjwhRE9DVFlQRSBwbGlz + dCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cu + YXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lv + bj0iMS4wIj4KPGRpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBN + SG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8 + L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh + Z2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4K + CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ + CTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0 + PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9r + ZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwv + a2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJ + CTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVu + dGF0aW9uPC9rZXk+CgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwv + aW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5h + cHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNv + bS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50 + aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+CgkJCQk8cmVh + bD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh + Zzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJy + YXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVy + dGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl + dC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJp + bmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9y + bWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5 + PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+ + Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5 + PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29t + LmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxk + aWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2Fs + U2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxl + LnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVn + ZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUu + cHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk+Cgk8ZGljdD4KCQk8 + a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwv + a2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRv + cjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJ + PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJy + YXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0 + LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCQkJPHJl + YWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9hcnJheT4K + CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJ + CQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8 + L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVk + UGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp + Y2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwv + c3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50 + LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4K + CQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJ + CTxyZWFsPjgyNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc3PC9yZWFsPgoJCQkJCTwvYXJy + YXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5 + PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+ + CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVy + TmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + Y3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmlu + Zz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBl + ckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPmlzby1hNDwvc3RyaW5n + PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4K + CQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJ + CTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVz + dGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0 + PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8 + L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJp + bnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJPGFycmF5 + PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJ + CQkJPHJlYWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9h + cnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9r + ZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJh + eT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5h + ZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJ + PGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVh + bD4KCQkJCQkJPHJlYWw+ODI0PC9yZWFsPgoJCQkJCQk8cmVhbD41Nzc8L3JlYWw+CgkJ + CQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVG + bGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJ + PC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZv + LnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmlu + Zz5BNDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0 + ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJ + CQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + QVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNv + bS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxl + LnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8 + L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8 + c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+Cjwv + ZGljdD4KPC9wbGlzdD4KhpKEmZkNTlNSaWdodE1hcmdpboaShKGbrZ4AhpKEmZkWTlNI + b3Jpem9udGFsbHlDZW50ZXJlZIaSpJKEmZkVTlNIb3Jpem9uYWxQYWdpbmF0aW9uhpKg + koSZmQ1OU0pvYkZlYXR1cmVzhpKElpcAhpKEmZkMTlNMZWZ0TWFyZ2luhpKEoZutngCG + koSZmQtOU1RvcE1hcmdpboaShKGbrZ4AhpKEmZkSTlNSZXZlcnNlUGFnZU9yZGVyhpKg + koSZmQ5OU0JvdHRvbU1hcmdpboaShKGbrZ4AhpKEmZkKTlNMYXN0UGFnZYaShKGbopeC + f////4aShJmZC05TRmlyc3RQYWdlhpKkkoSZmQ1OU09yaWVudGF0aW9uhpKghoY= + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Frame + {{522, 419}, {537, 755}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{0, 3}, {522, 657}} + Zoom + 1 + + + Index: doc/next-tutorial/per-class-mixin.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/per-object-mixin.graffle =================================================================== diff -u --- doc/next-tutorial/per-object-mixin.graffle (revision 0) +++ doc/next-tutorial/per-object-mixin.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,722 @@ + + + + + CanvasColor + + w + 1 + + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2009-12-29 16:06:59 +0100 + Creator + Gustaf A. Neumann + GraphDocumentVersion + 4 + GraphicsList + + + Class + LineGraphic + Head + + ID + 9 + + ID + 10 + Labels + + + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + + LabelVisible + YES + Offset + 0.0 + Position + 0.53307443857192993 + + + Points + + {352.91, 277.519} + {381, 329} + {375.173, 338.692} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 2 + + + + Bounds + {{330.173, 338.692}, {90, 36}} + Class + ShapedGraphic + ID + 9 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 s1 : Stack} + + + + Class + LineGraphic + Head + + ID + 6 + + ID + 8 + Labels + + + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 per-object mixin} + + LabelVisible + YES + Offset + 0.0 + Position + 0.61400783061981201 + + + Points + + {173, 356.692} + {118, 329} + {118.177, 277.519} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 4 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 7 + Points + + {178.281, 179.519} + {229.065, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 6 + + + + Bounds + {{50.3462, 179.519}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 6 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Safety} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 init\ +push\ +pop\ +} + + + TextPlacement + 0 + + + Class + LineGraphic + Head + + ID + 4 + + ID + 5 + Labels + + + Label + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + + LabelVisible + YES + Offset + 0.0 + Position + 0.42326045036315918 + + + Points + + {317.81, 277.519} + {308, 335} + {263, 356.692} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 2 + + + + Bounds + {{173, 338.692}, {90, 36}} + Class + ShapedGraphic + ID + 4 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 s2 : Stack} + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 3 + Points + + {313.118, 179.519} + {302.055, 138} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 2 + + + + Bounds + {{258.173, 179.519}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 2 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Stack} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 init\ +push\ +pop\ +} + + + TextPlacement + 0 + + + Bounds + {{221, 40}, {136, 98}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 1 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Object} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 info\ +destroy\ +method\ +...} + + + TextPlacement + 0 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + IsPalette + NO + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + ChildOrdering + 0 + + LinksVisible + NO + MagnetsVisible + NO + ModificationDate + 2011-01-08 18:46:32 +0100 + Modifier + Gustaf A. Neumann + Orientation + 2 + PageBreaks + YES + PageSetup + + BAt0eXBlZHN0cmVhbYED6IQBQISEhAtOU1ByaW50SW5mbwGEhAhOU09iamVjdACFkoSE + hBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCUhAFpFpKEhIQITlNT + dHJpbmcBlIQBKxBOU0pvYkRpc3Bvc2l0aW9uhpKEmZkPTlNQcmludFNwb29sSm9ihpKE + mZkLTlNQYXBlclNpemWGkoSEhAdOU1ZhbHVlAJSEASqEhAx7X05TU2l6ZT1mZn2cgQJT + gQNKhpKEmZkUTlNWZXJ0aWNhbFBhZ2luYXRpb26GkoSEhAhOU051bWJlcgCdm4SXlwCG + koSZmQ9OU1BhZ2VzUGVyU2hlZXSGkoShm6KXAYaShJmZFE5TVmVydGljYWxseUNlbnRl + cmVkhpKkkoSZmRlOU1ByaW50UmV2ZXJzZU9yaWVudGF0aW9uhpKgkoSZmQ9OU1ByaW50 + QWxsUGFnZXOGkqCShJmZC05TUGFwZXJOYW1lhpKEmZkGaXNvLWE0hpKEmZkITlNDb3Bp + ZXOGkqSShJmZD05TU2NhbGluZ0ZhY3RvcoaShKGbhIQBZJ4BhpKEmZkOTlNQTVBhZ2VG + b3JtYXSGkoSEhA1OU011dGFibGVEYXRhAISEBk5TRGF0YQCUl4EVL4QHWzU0MjNjXTw/ + eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjwhRE9DVFlQRSBwbGlz + dCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cu + YXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lv + bj0iMS4wIj4KPGRpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBN + SG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8 + L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh + Z2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4K + CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ + CTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0 + PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9r + ZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwv + a2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJ + CTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVu + dGF0aW9uPC9rZXk+CgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwv + aW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5h + cHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNv + bS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50 + aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+CgkJCQk8cmVh + bD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh + Zzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJy + YXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVy + dGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl + dC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJp + bmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9y + bWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5 + PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+ + Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5 + PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29t + LmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxk + aWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2Fs + U2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxl + LnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVn + ZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUu + cHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk+Cgk8ZGljdD4KCQk8 + a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwv + a2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRv + cjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJ + PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJy + YXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0 + LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCQkJPHJl + YWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9hcnJheT4K + CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJ + CQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8 + L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVk + UGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp + Y2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwv + c3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50 + LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4K + CQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJ + CTxyZWFsPjgyNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc3PC9yZWFsPgoJCQkJCTwvYXJy + YXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5 + PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+ + CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVy + TmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + Y3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmlu + Zz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBl + ckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPmlzby1hNDwvc3RyaW5n + PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4K + CQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJ + CTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVz + dGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0 + PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8 + L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJp + bnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJPGFycmF5 + PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJ + CQkJPHJlYWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9h + cnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9r + ZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJh + eT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5h + ZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJ + PGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVh + bD4KCQkJCQkJPHJlYWw+ODI0PC9yZWFsPgoJCQkJCQk8cmVhbD41Nzc8L3JlYWw+CgkJ + CQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVG + bGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJ + PC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZv + LnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmlu + Zz5BNDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0 + ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJ + CQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + QVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNv + bS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxl + LnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8 + L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8 + c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+Cjwv + ZGljdD4KPC9wbGlzdD4KhpKEmZkNTlNSaWdodE1hcmdpboaShKGbrZ4AhpKEmZkWTlNI + b3Jpem9udGFsbHlDZW50ZXJlZIaSpJKEmZkVTlNIb3Jpem9uYWxQYWdpbmF0aW9uhpKg + koSZmQ1OU0pvYkZlYXR1cmVzhpKElpcAhpKEmZkMTlNMZWZ0TWFyZ2luhpKEoZutngCG + koSZmQtOU1RvcE1hcmdpboaShKGbrZ4AhpKEmZkSTlNSZXZlcnNlUGFnZU9yZGVyhpKg + koSZmQ5OU0JvdHRvbU1hcmdpboaShKGbrZ4AhpKEmZkKTlNMYXN0UGFnZYaShKGbopeC + f////4aShJmZC05TRmlyc3RQYWdlhpKkkoSZmQ1OU09yaWVudGF0aW9uhpKghoY= + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Frame + {{823, 408}, {537, 755}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{0, 3}, {522, 657}} + Zoom + 1 + + + Index: doc/next-tutorial/per-object-mixin.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/person-student.graffle =================================================================== diff -u --- doc/next-tutorial/person-student.graffle (revision 0) +++ doc/next-tutorial/person-student.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,1750 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 138.17.0.133677 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {571, 818}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2009-12-29 16:06:59 +0100 + Creator + Gustaf A. Neumann + DisplayScale + 1.000 cm = 1.000 cm + GraphDocumentVersion + 6 + GraphicsList + + + Bounds + {{240.5, 474.88}, {90, 36}} + Class + ShapedGraphic + ID + 27 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 s1 : Student} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 4 + + ID + 26 + Points + + {258.64, 332.132} + {305.698, 259.384} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 22 + + + + Class + TableGroup + Graphics + + + Bounds + {{162, 332.132}, {148, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 23 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Student} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{162, 346.132}, {148, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 24 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 matnr\ +oncampus true} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{162, 374.132}, {148, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 25 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 matnr <<property>>\ +oncampus <<property>>} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 23 + 24 + 25 + + + GroupConnect + YES + ID + 22 + + + Bounds + {{372.002, 318.405}, {75, 24}} + Class + ShapedGraphic + ID + 9 + Line + + ID + 8 + Position + 0.57259494066238403 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 7 + + ID + 8 + Points + + {364.665, 259.384} + {412, 305} + {384.96, 405} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 4 + + + + Bounds + {{339.96, 405}, {90, 36}} + Class + ShapedGraphic + ID + 7 + Magnets + + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + + Shape + Rectangle + Style + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 p1 : Person} + VerticalPad + 0 + + + + Class + TableGroup + Graphics + + + Bounds + {{260.346, 189.384}, {136, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 11 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Person} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{260.346, 203.384}, {136, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 12 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 name\ +birthday} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{260.346, 231.384}, {136, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 40 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 name <<property>>\ +birthday <<property>>} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 11 + 12 + 40 + + + GroupConnect + YES + ID + 4 + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 27 + + ID + 36 + Points + + {214.222, 402.132} + {194, 434.632} + {240.5, 492.88} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 22 + + + + Bounds + {{145.838, 435.657}, {75, 24}} + Class + ShapedGraphic + ID + 37 + Line + + ID + 36 + Offset + -15 + Position + 0.42781621217727661 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2011-09-12 19:39:19 +0200 + Modifier + Gustaf A. Neumann + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 12 + + NSJobFeatures + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCEhAhOU09iamVjdACFhAFpAIY= + + NSLeftMargin + + float + 12 + + NSPagesPerSheet + + int + 1 + + NSPaperSize + + size + {595, 842} + + NSPrintAllPages + + int + 0 + + NSReversePageOrder + + int + 0 + + NSRightMargin + + float + 12 + + NSTopMargin + + float + 12 + + + PrintOnePage + + QuickLookPreview + + JVBERi0xLjMKJcTl8uXrp/Og0MTGCjUgMCBvYmoKPDwgL0xlbmd0aCA2IDAgUiAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGdWMtuGzcU3fMruJQWpvm4fBVBFnVb + oF4ltYEsjCxcRUIcWHEs2QXy9z2XM+SMRpKtGMJAI5qP+zj3nEs/yo/yUWp8fDQymSQ3 + S/lJfpfnF1sjF1tpyme7kGdaecnPaOJKnn9YbhbLH0/Pt/dic4etjE/ddlpayspRkJ6c + CibIxVqe/7028o+HcmibaYaZUfNM0c2005kuDDNzHu3p2kxju9OTdDapHKQLtt+O2qTI + /sJjDWuNJK1VCjH29vlj07AfT+t325sG48puPox3C223wTJrM8Jos1XGZL9r3fk/y/vb + p7v/lhcP9w+bu/XyaXO3kIisIa+ci/DLww5yJCP2IE4XsnCxtUiW0BKJQg6Ke2dIXXL9 + IgTW8SJE9vdrmbsJWZ45C1Mcnmsk5y+jEBJ5vZI3YnY355RbOfteX7ZPcwAAI7d1pP1p + saxDsp/zUAdWc/FZXl/KP6+RdSMv8XyTN5Lw+QwzvnRIu7gqJml5dTF2QBdIwmirowrZ + ZkEawYvaSB7TShuXJJmgorXwN2sVtcWIdcqSR0oyDnKkgrNOLvAzKRezlQRsRu+9sNYr + rYFOik5RCISgMsoJ6UlJeyy6guG1HDrkIMrWWMAr8eGkyOUk2CCP14DFRivSIct7jGWV + 2RL8VkQpYOzr/mq4s0IELvF8EzddYEaJHOLQjtXIWtC2xKEeiyD57MzoWEHGKO8NTY4d + VrN3iBw+7FVgnKBkATIuWcMlVzhhJWruDprVr7POKJdotK4PHsMTvu3Ck0u0nBZtLXuA + sy+UM3yfBQeITrE5gmRD4noCQDGrQDz2/e7djwrRTQNrG2rbbZ7mooD+5/v3cyC2InkU + hYkbfY1N3DCoq7UYl5ic/VsNaLWG07oS+1r/9KW+NFd/dh6J2ekedHtOPKiQNsjsbvJT + mCb/cE3WpANMQ9IFGOmUpAdUb68KR5I+iVYjmxYJTvqLGRnOEPtnlIzskN6pGREdMTY7 + fo7NaGGd1lQAUdSaQj0W4n5E7JlSwNVDifdhNQny2ddSN/+ksFpzvJaoKyXbaF7OPgxI + r0jb1heUBaAvWAGGMO/55xwYDkILBc0aett7BvennvUzCaxaZr4KlURl5wwWLro1rinS + UJCiWnAHYWTVkjMUcKlWU32o5f9bffllh8daNar6li8H9nLeR5CnV8EaD0p2KSlwIeQl + oh3QgBrrljExg05JOWgVwRlX9IUMpD1Z/ERjYANkw2WncoS6u4hsRmzHgYD2HZUjF4Iy + kBgwd1RkoHAwAqJPgRzGIJSUWY5cJAiji8J7Uuj4WIwOrW1iJF8Qo7pQsGz4pNP4UBui + yh5CPRyKCEGW2YzRoaO1wHfhosJG7DqWZwhzUDr7Qw0PELarKKU7KIsSS6En7q5Oanjk + CQ1PqYSu9l9seF6qFhPQfCDhpeM0lIAHLoMVyqVrjQ5BjBdx5gx3Md0irrJ9PhjoxKIQ + CXiqne2U/zK6HvQ9B+V13TObmFU5aty7qWX0a9/7cvxm8RKlkRxF6VRP9/lezJrwNwcX + jdXXrRl4rmSyrV4fsF4w93TgGCi1xu+Y9FaNKKjANWkPFSM/G+EUNBDq/TU0DBRcYgRm + qBeYt6BBHkDDuLcfmTo+7gB1hwq+nZSIjsHfmpIa6s3zvNfnne5gT7ZKyMExLeRNk4ew + lZAzhZSQ467UQv66IJcYxO7O+FIMSFQRw7ldCK6egLgiY+j+yndDFHBaBuDtIMmjyDeL + LXfwhAJ31WzcT/j2E3BBt1CGyCJxXzikv3ccavKE04R7kMNdExwPMSG+cOBuRBjEWFDZ + RN6H50FYcH0CT3mLzBaWn67GLalnrd3/LnSXLocLDN+Jx43EMV7ktPRXNZxYrmqt/dgn + xiGnNnm+8uLaV04q+iCONhYtJ60pOt5ZcNq6u8Jpafv4P4V9m7sKZW5kc3RyZWFtCmVu + ZG9iago2IDAgb2JqCjE0MzkKZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1Bh + cmVudCA0IDAgUiAvUmVzb3VyY2VzIDcgMCBSIC9Db250ZW50cyA1IDAgUiAvTWVkaWFC + b3ggWzAgMCA1NzEgODE4XQo+PgplbmRvYmoKNyAwIG9iago8PCAvUHJvY1NldCBbIC9Q + REYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXSAvQ29sb3JTcGFjZSA8PCAv + Q3MyIDIxIDAgUgovQ3MxIDggMCBSID4+IC9Gb250IDw8IC9GMi4wIDIzIDAgUiAvRjEu + MCAyMiAwIFIgPj4gL1hPYmplY3QgPDwgL0ltMyAxMyAwIFIKL0ltNCAxNSAwIFIgL0lt + NSAxNyAwIFIgL0ltMiAxMSAwIFIgL0ltNiAxOSAwIFIgL0ltMSA5IDAgUiA+PiA+Pgpl + bmRvYmoKMTMgMCBvYmoKPDwgL0xlbmd0aCAxNCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1 + YnR5cGUgL0ltYWdlIC9XaWR0aCAzMTYgL0hlaWdodCA3MiAvSW50ZXJwb2xhdGUKdHJ1 + ZSAvQ29sb3JTcGFjZSAyNCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgMjUg + MCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry + ZWFtCngB7dAxAQAAAMKg9U9tDQ+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwY+BoYCq8AAQplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjMyMQpl + bmRvYmoKMTUgMCBvYmoKPDwgL0xlbmd0aCAxNiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1 + YnR5cGUgL0ltYWdlIC9XaWR0aCAyMjQgL0hlaWdodCAxMTYgL0ludGVycG9sYXRlCnRy + dWUgL0NvbG9yU3BhY2UgMjQgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDI3 + IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0 + cmVhbQp4Ae3QgQAAAADDoPlTH+EChVBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwb+wAAwjwABCmVuZHN0cmVhbQplbmRvYmoKMTYgMCBvYmoKMzY0CmVuZG9iagox + NyAwIG9iago8PCAvTGVuZ3RoIDE4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAv + SW1hZ2UgL1dpZHRoIDM0MCAvSGVpZ2h0IDEwMCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29s + b3JTcGFjZSAyNCAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgMjkgMCBSIC9C + aXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB + 7dAxAQAAAMKg9U9tCj+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + wGtgjn8AAQplbmRzdHJlYW0KZW5kb2JqCjE4IDAgb2JqCjQ2OAplbmRvYmoKMTEgMCBv + YmoKPDwgL0xlbmd0aCAxMiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdl + IC9XaWR0aCAzMTYgL0hlaWdodCAxMDIgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3Bh + Y2UgMjQgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDMxIDAgUiAvQml0c1Bl + ckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0A + AADCoPdPbQ8HESgMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwMDPwAB5xwABCmVuZHN0cmVhbQplbmRvYmoKMTIg + MCBvYmoKNDQ1CmVuZG9iagoxOSAwIG9iago8PCAvTGVuZ3RoIDIwIDAgUiAvVHlwZSAv + WE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDM0MCAvSGVpZ2h0IDcyIC9JbnRl + cnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDI0IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFs + IC9TTWFzayAzMyAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURl + Y29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20ON4hAYcCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAgY+BAR7v + AAEKZW5kc3RyZWFtCmVuZG9iagoyMCAwIG9iagozNDQKZW5kb2JqCjkgMCBvYmoKPDwg + L0xlbmd0aCAxMCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0 + aCAzMTYgL0hlaWdodCAxMDAgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgMjQg + MCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDM1IDAgUiAvQml0c1BlckNvbXBv + bmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVP + bQsviEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMvAcGcl8AAQplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjQzNwplbmRv + YmoKMjUgMCBvYmoKPDwgL0xlbmd0aCAyNiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5 + cGUgL0ltYWdlIC9XaWR0aCAzMTYgL0hlaWdodCA3MiAvQ29sb3JTcGFjZQovRGV2aWNl + R3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIg + L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c+1NSWxTHtVDkDYqgPAIPIAIinSuGaAYO + jo/UW/kKSx2VasIo0pFi8pGNGcXk6ybjY9LMsrejjWlT95+7a4OpKE6e+0O/nP39iV/4 + YX/mu9baZ++1dlISFiaACWACmAAmgAn8eQLJWFEClMjDP07s6SRttcfgBCA5BsIYN+DF + YKRgAQEGA2AgjL/DFyUXw5bKZKbFxKKldhbPZKbGAP6G3g65lJRUwMZiszkcDpfL5dFU + sHQAwGaz0tIQPwYy35HeQ+hOQqQCOMDG5fH5AqFQRGMJhQI+nwcE2YAvRu8IeFF04DlE + jscXiETpGWJxZqZEIqWlJJLMTLE4I10kEvB5iB54D6yXGB5yHTIdIicEbhJpVrZMJlco + lLSUQiGXybKzpBLgJ4zSA+sheAkKbhQdJDoOF8gBOKCmVKnVOYSGpiJy1GqVEggCPqDH + 5aC0lxheMsp1TBaYTpQhyZIBN0Kjy9XnGQxGo4l2MhoNhjx9rk5DAD9ZliRDBNZjMVHF + OGw8sB2gS+PwBCKxVKZUE9pcgzHfbLGQJPkXDQXLtljM+UZDrpZQK2VSsUjAA+elMBJE + LdgOygQ7ik6uInR5JrOFLCw6Y7OXgEppJrRmu+1MUSFpMZvydIRKHoXHhoKRwHjJYLs0 + NpcvEmfJVRq9qYC02uylZQ5nucvlqqCdYNHlTkdZqd1mJQtMeo1KniUW8bnsNDDewaCN + 2Y4D6KRytdZgJq3FpY7yisrqmtq6+r9pqPq62prqyopyR2mxlTQbtGrkPD4nkfEQO4hY + IaBTaQ2WQttZp6vqfP2FhsbmFjct1dLc2HCh/nyVy3nWVmgxaFHYCnlgvENBCyGbmsbh + p0tkKo2hwFriqKipu9Tkvtre0dnt8VyjnTye7s6O9qvupkt1NRWOEmuBQaOSSdKR8Q4F + bfIJ2J+A7bKUhN5cWOKsrL3Y3Nre6bnhveW7fcdPO9257bvlveHpbG9tvlhb6SwpNOsJ + ZRYYD/YpBxMeClnIdhKZWmcibY7KugZ3W9d1r8/f1x+4H6Sh7gf6+/w+7/WuNndDXaXD + Rpp0apkEZTwI2vhPiyg7QYZUSeQVWM9WALoOj/d2byA4MDQ88oiGGhkeGggGem97PR0A + r+KstSCPUEozBAnZpbK4QnG2Smsii501F90d13r8geDQyOhY6FmYhnoWGhsdGQoG/D3X + OtwXa5zFpEmryhYLuazUQ75jpLJ4KGRzzdZSV31zm6fnbmBg5HEoPD459Q8NNTU5Hg49 + HhkI3O3xtDXXu0qt5lwUtDwWFIsDMctgsvnpUgWRZ7Gdq7rU2nXTHxh49CQ8MT0TmZub + p53m5iIz0xPhJ48GAv6bXa2Xqs7ZLHmEQprOZzMTsOPwId1pjKS9/HxT+3UfoAs9n5qZ + XXi59GqZdnq19HJhdmbqeQjg+a63N50vt5NGDSQ8PicBOyiz4uxTuvxCCFl3p7c3+PDJ + 8+nI/OLyytvVd7TT6tuV5cX5yPTzJw+Dvd5ONwRtYb7uVLYYCu0h38EWRSBG6a6orPLC + FY8vMDganoosLL1eff/x02fa6dPH96uvlxYiU+HRwYDPc+VCZVkRSnhiVGgP5jtgJwR2 + eovNUd3QfsMfHAlNzMwvrbz79HltfYN2Wl/7/OndytL8zERoJOi/0d5Q7bBZ9MBOmJAd + V5gpy4FS4axp7PD2PRgNT88uArq1ja+bNNTXjTWAtzg7HR590OftaKxxQrHIkWUKuYl8 + xxVlygnDaXt5bXNnT//g2PiLheXVj2sbm1vb32mn7a3NjbWPq8sLL8bHBvt7Optry+2n + DYQ8U3QEO4mCMJAlrrqWbl9gODQRebny/sv65tb3HzTU963N9S/vV15GJkLDAV93S52r + hDQQCsnR7GCLAuwue3z3Hj6dnF1882Ft49v2j5//0k4/f2x/21j78GZxdvLpw3s+z2XE + zqjB7I7hhP/BDsfsr/RENWZxrditiVRrBd6j7NuLUduj4L3xvi8Aintj/E2278uT0jcZ + A58F7D/woHQWwGDiM6h9J23UzqDw2ef+A15qZ5/4zD3uZoHKmftJfNcTd6NF5a4H3c/i + O8a9y1RKd4z4bjvuBp/C3TbuqYhvG6HSU4F7eeLblaj18uAesvhWOSo9ZKhlFvcu7nZp + UuhdTMI9s3F9wVR6ZoEd7tXea0in2quNZwT2j0JQmRFAxsOzKbszOJRmU4Adilo8E7U7 + AUZhJioGD8/i/Ro8pDKLl4RnQONmXSnNgMbg4dnjvWHr488eJ0XhRSe38cw7zPlTmnmH + LtqdFwPQExX4rYXoawvHfWsBtSBH6Z3Ab3zsvm9y7Dc+og3c+G2Z2HM66FGUHR3vbZko + vV8I4S9Ye0TwL0wAE8AEMAFMABP4cwT+AyLrlvIKZW5kc3RyZWFtCmVuZG9iagoyNiAw + IG9iagoxNzkxCmVuZG9iagoyOSAwIG9iago8PCAvTGVuZ3RoIDMwIDAgUiAvVHlwZSAv + WE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDM0MCAvSGVpZ2h0IDEwMCAvQ29s + b3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBv + bmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3d+1PSWRQAcE0U + eYMiKI+FvvgCQpakJaUWHBjL1B6WLT10LKxZXIytiYlZq8Vxi4kp01bHx5S5Ttqo62jD + mONUs//ani8SoQLeu7/uOb90qTv+8Jlz7/eL3XtOQQEGCqAACqAACqAAChRi5BWgyhD4 + SYe+RRHGHoFvNoeAioB2xxN+CodTjJFHgMMBJJb3INak6A5nCZdbuhM8jAyBFAqXWwLg + AHuAakq0uLgEOHl8vkAgEAqFIoxdAkACMHw+r7SUdc2vypIWwYoHUOAUisRiiVQqw9gn + IJVKxGIRyPKBdUc1xwaQJIUcZUVFYolMVlYul1dUKBRKjAwBhaKiQi4vL5PJJGIRqwq5 + ChtAdlQ2S9kkZUWl4KlQVlapVGqNRouRIaDRqFWqqkqlAlylSVVIVRY1ywtAkhQ2UoEQ + RAEUNLU6vf4wY8DYJcAc1ut1WpAFVlAVCthtNTtqIbuXcnmQpLJyRaUKPBlDTW1dvdFo + MpkxUgImk9FYX1dbY2DAVVWpKJdBqvK47JNqf6JCmgJpqUAkkcmVKq2eqa41mo5YrFab + zXYUIy0AHFar5YjJWFvN6LUqpVwmEUGmFnOyrH5IU3g88ZOkah1TU2+2WG2Nx35wNDVD + ODGSAqxFk+OHY402q8VcX8Po1ElUPjyosiRqIaRpKV8olskr1TpDnbnBZnc0OU+63C0e + j8eLkRIAjBa366SzyWG3NZjrDDp1pVwmFvJLIVH3Lv6dNBUAqVKtrzZabPbjTleLt/V0 + W3tH51mMtEBnR3vb6VZvi8t53G6zGKv1bKaKBdkSlTWFlS8FUl210droOOH2nDrTea7r + YvdlH0aGwOXui13nOs+c8rhPOBqtxmp2+UtFkKj7Fj8s/ZJSgbhModIZjA32Zpe3rePC + Jd+1nt6+m35/P0ZKwO+/2dfbc8136UJHm9fVbG8wGnQqRRmbqPsWf+EheI+CNK3UMnWW + xmZ3a/v57is9ff7bgV+Cg3dCGCmBO4PBXwK3/X09V7rPt7e6mxstdYy2EhIV3qf2bqjs + 0ofdVKHS15htDldrR5fv+o1bgWDo3v3wgwhGWuBB+P69UDBw68Z1X1dHq8thM9foVQp2 + R4XFv/urVNJUUq7UMvUN9hNeIO31BwbvhiNDjx5HhzHSAtHHj4Yi4buDAX8voHpP2Bvq + Ga2yXJLVtIQnlMqrdNVm23F323lfb/9AKBx5FB15EnsWx0gLPIs9GYk+ioRDA/29vvNt + 7uM2c7WuSi4V8kr25SmnhCdil36txe70dHZf9w/8Gh6K/hGLv3g59gojLTD28kU89kd0 + KPzrgP96d6fHabfUsotfxIOH1J61z+HyxWVKDVNvdfx46sKVGz+HwkPDT+Oj4xOT09Mz + GCmB6enJifHR+NPhoXDo5xtXLpz60WGtZzTKMjGfm8VUIIbt1GCyNbWcudRzKwiksedj + E1Ozr+fezmOkBN7OvZ6dmhh7HgPU4K2eS2dammwmA2yoYkEWU3jsy6u+qznSCEvf1xe4 + G/n96fPxyZk38wvvFpcwUgKL7xbm38xMjj9/+nvkbqDPB4u/8UjNd1VyePDvy1N4lZLI + 2e302MnWc1f9wfDDkfjY5OzcX4vvl1dWMVICK8vvF/+am50ci488DAf9V8+1njzGbqhy + 9sG/dz8FUymY1lkdrtNdPbdDkWhsdGJmbmFpZXVtfQMjJbC+trqytDA3MzEai0ZCt3u6 + Trsc1jowlWY1FUorVIfhEeVuu9gbuPfbSHx86g2Qrm18SGCkBT5srAHqm6nx+Mhv9wK9 + F9vc8JA6rKqQCrPlqVBWoWaM3ze1tHf3Ddx/+OTFn7Pzi8trG4nNj1sYKYGPm4mNteXF + +dk/Xzx5eH+gr7u9pel7I6OukOUwVWgYo63Z03H5ZjD8ODY6+Xrh/d/ric2tbYy0wNZm + Yv3v9wuvJ0djj8PBm5c7PM02I6NR5DaFVykw/ck/+CD67OXU3LvltQ9A+ukzRkrg0/bW + 5oe15XdzUy+fRR8M+n9iTU2GA007ff47keH4+PTbxZX1xEcg/YKREvj8aftjYn1l8e30 + eHw4cscPL1O5TOFXfaVCmUKTzNMspv9gJAW+5Dfd9b8nhUXF8HUfvkaZjzq9Z339IcjT + VzPzS6sbia3tz19Q9KvAl8/bW4mN1aX5mVeQp6F+31mv86gZvkjBF/7iIjT96kTzJ5rS + aJHNRVMyJ5pZaEqjRTYXTcmcaGahKY0W2Vw0JXOimYWmNFpkc9GUzIlmFprSaJHNRVMy + J5pZaEqjRTYXTcmcaGahKY0W2Vw0JXOimYWmNFpkc9GUzIlmFprSaJHNRVMyJ5pZaEqj + RTYXTcmcaGahKY0W2Vw0JXOimUVjimcmiGRpzkwUHGCKZ3voz/bsMsUzaLmP3P2HM2h4 + VjJ9KDLHgPasJJ7pPfDsMu2ZXjx7nj5hnntAd/Yc70gQ3AShvCOBd3kIbixR3eXh4J0z + kot1VHfOOFy8G0lwA5TubiTe4SW5qEx3hxfvmqfvk+cb0Nw1L8KaCOm6B/kGNDUR2Hoo + WLsjXaIj54CqdgfWmEnXkck3oKgxg7WQyMo90dRCwppdZGXJ6Gp2YW25jAJyeYY0teXY + Up1YAzFd6zDXgKIGYgHW6iSqR0pTqxNMsabswYVzaWvKYu3jdIHjPAOa2sdsomKN7gNr + kVPV6AZTdvVjLflddeOzfaCoJb+Dij0PMtobZB3S9DwowN4cGR04cg+penPsoGIPmX0t + Y/b9BXkPmYIkarIzD/Y62tXdaPcHql5HUL0z1UGKbXGGPbkyGnFlDCl7crElUZOqh7B3 + XJ6ucTv/RNw7LlloFnsc7mlquOcjdY/DpOpXWtDFyCXwTQpHKIACKIACKIAC/1+BfwFW + ye/8CmVuZHN0cmVhbQplbmRvYmoKMzAgMCBvYmoKMjE1OAplbmRvYmoKMzMgMCBvYmoK + PDwgL0xlbmd0aCAzNCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9X + aWR0aCAzNDAgL0hlaWdodCA3MiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJw + b2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2Rl + ID4+CnN0cmVhbQp4Ae2c+1NSWxTHzVDkDYqgIBc8+Dog0rlihFbA4KCm3kqjqNRRqSYM + o5ooJrVsrCimTG86PibNLHs72thj6v5zdx3knlABOff+eNf3p03N+MNnvmvtffZea2Vl + oZAAEkACSAAJIAEksAeVlgArh8Bfyv6lvahtBH6xyQZUGaDd5Al/hcPJQaUhwOEAJBrv + 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 + b2JqCjM0IDAgb2JqCjE4NjIKZW5kb2JqCjM1IDAgb2JqCjw8IC9MZW5ndGggMzYgMCBS + IC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWlnaHQg + MTAwIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRz + UGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7Z3r + T1NpEMZBCqX3FkoLvdh6yq2tpR6pVqjakjYoAl5Q3LoKQYvGssWuxsZG1C1htbFRBIVw + iSJLBAMsAdMgIWL2X9s5rQKV8sr54pczzyeSCR/OLzPvew7MPJOTg0ICSAAJIAEkgAR+ + PYFcVIoAK/LwG/u2lMdZbTHYB0j2gDDNDXjxePkoIMDjAQwG48/wpcilsRXw+YVpCTip + bw/P5xekAf6E3jdy+fkFgE0gFIpEIrFYLOGo4NEBgFAoKCxk+PGY5Ns19xh0eVCpAA6w + iSVSqUwuV3BYcrlMKpUAQSHgS9PbBV4KHeQcQ04ilSkURcVKZUmJSqXmpFSqkhKlsrhI + oZBJJQw9yD1IvezwmKxjko4hJwduKnVpmUaj1en0nJROp9VoykrVKuAnT9GD1GPgZblw + U+jgoBOJgRyAA2p6g9F4gDJxVNQBo9GgB4KAD+iJRcyxlx1eLnPW8QWQdIpiVakGuFGm + isqqarPZYrFyThaL2VxdVVlhooCfplRVrIDUE/CZG2Nn4kHaAbpCkUSmUKo1eiNVXmm2 + HLTZ7TRNH+ag4LHtdttBi7mynDLqNWqlQiaBzMvnZalaSDu4JoQpdFoDVVFttdnp2iNH + nXX1IBfHxDxznfPokVrabrNWV1AGbQqeEC6MLImXC2lXKBRLFcpSrcFUZa2hHc461wm3 + p8Hr9fo4J3joBo/7hKvO6aBrrFUmg7ZUqZCKhYWQeD8WbTrtRIBOrTWWm22045jL3eBr + PN3U3NJ6loNqbWluOt3oa3C7jjlom7ncyGSeVJQt8Rh2ULFyQGcoN9trncc93lNnWs+1 + XWy/7OekLrdfbDvXeuaU13PcWWs3lzNlK5dA4u0oWijZgkKRtEilMZjMNY56t6+p5cIl + /9WOzq4bgUA35xQI3Ojq7Ljqv3ShpcnnrnfUmE0GjaqISbwdRZu7D95PIO1K9VSVrbbe + 09h8vv1KR1fgVvCPUO+dMOd0pzf0R/BWoKvjSvv55kZPfa2titKXQuLBe8qPBx5TsnDa + qTTGCivtdDe2tPmvXb8ZDIXv3Y88iHJQDyL374VDwZvXr/nbWhrdTtpaYdSomBMPijbz + 0yLFTlas1lPVNY7jPkDXGQj23o1E+x4/ifVzULEnj/uikbu9wUAnwPMdd9RUU3p1sSwr + uwKBWK4sM5Rb6WOepvP+zu6ecCT6ODbwNP48wUE9jz8diD2ORsI93Z3+802eY7S13FCm + lIsFBTvyjlcgkDAlW2lzuLyt7dcCPX9G+mJ/xxMvXw295qCGXr1MxP+O9UX+7Alca2/1 + uhy2SqZoJQK4LH6oWR5fKC1S66hqu/PkqQtXrt8OR/r6nyUGh0dGx8cnOKfx8dGR4cHE + s/6+SPj29SsXTp102qspnbpIKuRnYSeSwnFnstB1DWcuddwMAbr4i6GRscm3U++nOaf3 + U28nx0aGXsQBXuhmx6UzDXW0xQQHnlSUhR1cs8qy/RUHa6Fk/V3Bu9G/nr0YHp14Nz3z + YXaOc5r9MDP9bmJ0+MWzv6J3g11+KNragxX7y5Rw0e7IO3hFkSmZ4+7IicZzvwdCkUcD + iaHRyal/Zj/OLyxyTgvzH2f/mZocHUoMPIqEAr+fazxxhDnwlMxF++N5B+zkwK7K7nSf + buu4FY7G4oMjE1MzcwuLS8srnNPy0uLC3MzUxMhgPBYN3+poO+122quAnTwrO7G8RHMA + rgpP08XO4L2HA4nhsXeAbmnlU5KD+rSyBPDejQ0nBh7eC3ZebPLAZXFAUyIXZ8s7saJE + S5kP1TU0t3f13H/09OWbyenZ+aWV5OrnNc7p82pyZWl+dnryzcunj+73dLU3N9QdMlPa + EsUu7FQ6ykzXe1su3whFnsQHR9/OfPx3Obm6ts5Bra0ml//9OPN2dDD+JBK6cbnFW0+b + KZ1qd3bwigLsfgv0Pog9fzU29WF+6ROg+7LBOX1ZX1v9tDT/YWrs1fPYg97Abww7i+mn + 7Fr9gTvR/sTw+PvZheXkZ0D3lXPa+LL+Obm8MPt+fDjRH70TgJeU3djBn6AKxQqVLpV3 + Wdj9xzF9JbPL+Kt7bl4+fM7CZ4X1sMt31t8dhrx7PTE9t7iSXFvf+MoxcvC4XzfW15Ir + i3PTE68h78Ld/rM+12ErfFjAB21+HrIjZQSyI9Ehx5AdmQ8piuxIdMgxZEfmQ4oiOxId + cgzZkfmQosiORIccQ3ZkPqQosiPRIceQHZkPKYrsSHTIMWRH5kOKIjsSHXIM2ZH5kKLI + jkSHHEN2ZD6kKLIj0SHHkB2ZDymK7Eh0yDFkR+ZDiiI7Eh1yDNmR+ZCibNjh/7YzSLL5 + 33bOT9hhT8XuPRUZ7LCXZwNaKlj38mAP2fd2ObY9ZNi7uNmjybZ3EXtmt/UGs+uZxV7t + bR3pLHu1cUZg2yQEqxkBHs6mbB/AYTWbwuPjTNS2yS92M1E4i7d94JDdLB7OgGZMurKZ + Ac3D2eOMCWs2s8eMXwDOvG8N97OaeUevhQxHCRZeC+jxkWljwsbjA71lMu1z2HnLoKdR + pnUTG08jxsINvbQ2XcNYeGnloIdbhk8dGw83YIfegVsGiWy9A9Gzcrs1JxvPSibx0Ct1 + 0xOWlVcqsGOqFj16Nx2JWXj0puGhN/R3I2w23tA56Eme4b3OypM8DQ+98LfM//fuhZ+T + gpfaJIA7GGDvBKsdDODq9m2DBbMyBXd/pLZ/7HX3B2OJl6K3D3fObO7b2fPOmZShIO46 + Sq93Ypb0fNPedh2l6H1HCL+C2iKCPyEBJIAEkAASQAK/jsD/PYfo4AplbmRzdHJlYW0K + ZW5kb2JqCjM2IDAgb2JqCjIwODUKZW5kb2JqCjI3IDAgb2JqCjw8IC9MZW5ndGggMjgg + MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMjI0IC9IZWln + aHQgMTE2IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9C + aXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB + 7ZzpTxNbGMZZCqV7C6WFLrZMgdKWUkeKBaq2pA1QFhcQrQsEKBqLhQqxsRHUEoSGBhEU + whKoSAQDSIA0SIia+6/dd4r3GmGQexODw+Q8n8h8mfM7z/ucmTLnvAkJSGgG0AygGUAz + 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 + idb9heOE/2AC6enQj1Gjv9AMoBlAM4Bm4PfMwN+IzvBHCmVuZHN0cmVhbQplbmRvYmoK + MjggMCBvYmoKMTg3MQplbmRvYmoKMzEgMCBvYmoKPDwgL0xlbmd0aCAzMiAwIFIgL1R5 + cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMTYgL0hlaWdodCAxMDIg + L0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJD + b21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnetPU2kQ + xkEKpfcWSgu92HrKra2lHqlWqNqSNigCXlDcuisELRrLFrsaGxtRt4TVxkYRFMIlikgE + AywB0yAhYvZf2zmtApXyyvmyH/bM84lkwofzy8z7ngMzz+TkoJAAEkACSAAJIIH/nkAu + KkWAFXn4jX1byuOsthjsAyR7QJjmBrx4vHwUEODxAAaD8Wf4UuTS2Ar4/MK0BJzUt4fn + 8wvSAH9C7xu5/PwCwCYQCkUikVgslnBU8OgAQCgUFBYy/HhM8u2aewy6PKhUAAfYxBKp + VCaXKzgsuVwmlUqAoBDwpentAi+FDnKOISeRyhSKomKlsqREpVJzUipVSYlSWVykUMik + EoYe5B6kXnZ4TNYxSceQkwM3lbq0TKPR6nR6Tkqn02o0ZaVqFfCTp+hB6jHwsly4KXRw + 0InEQA7AATW9wWg8QJk4KuqA0WjQA0HAB/TEIubYyw4vlznr+AJIOkWxqlQD3ChTRWVV + tdlssVg5J4vFbK6uqqwwUcBPU6oqVkDqCfjMjbEz8SDtAF2hSCJTKNUavZEqrzRbDtrs + dpqmD3NQ8Nh2u+2gxVxZThn1GrVSIZNA5uXzslQtpB1cE8IUOq2Bqqi22ux07ZGjzrp6 + kItjYp65znn0SC1tt1mrKyiDNgVPCBdGlsTLhbQrFIqlCmWp1mCqstbQDmed64Tb0+D1 + en2cEzx0g8d9wlXndNA11iqTQVuqVEjFwkJIvB+LNp12IkCn1hrLzTbacczlbvA1nm5q + bmk9y0G1tjQ3nW70Nbhdxxy0zVxuZDJPKsqWeAw7qFg5oDOUm+21zuMe76kzrefaLrZf + 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 + tXb79j21lWVgIeottrcQ+iGRZgAfmZ8oZYCzwB2Wr9g+ATxYDqwa8COiAw+auTDT0Zx0 + pbItkVPmoigqr2I7Sa77+bnGvou1iYP+XI9m1o69s+qq0UzUtPdEobwPrkQZz19U9mw1 + FKcN45xIQxop8q7V3ytMxxGRKxBKBlI1ZLmfak6ddeB1GLtdupPj+PYQpT7JYKiJtemy + mR2FfQB2KsvsEPAF6PGyYg/ngXth/1tRw5PAJ2E/ZId51q0f9heuU+B7hD014M4UrsXx + 2oofXi0BQ/dUI2iMc03E09c5c6SI7zHUGZj3RjmmCzF3lqoTN4A7YR9ZqmYKsV37ruol + 7nsCd9PjO9GbOQtcoBxJcrEV2RTQPAlYFH2LsEkOPD7OHlXgd6iYwBy5idzNKPce1REb + Z6NSgVZ6jVfGT+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5jXrcOa69nRtVYVZxZQvd + /8cyhI/ZJzmmwdOhWVhr2HbkD5rMTLAMKMR/BT6X+pITVdzV7u24RRLMUD4sbCW6S1Ru + KdTqPYNKrBwr2AB2cJLELFocuFNrujl4d9giem35TVey64b++vZ6+9ryHm3KqCkoE82z + RGaUsVuj5N142/1mkRGfODq+572KWsn+SUUQP4U5WiryFFX0VlDWxG9nDn4btn5cP6Xn + 9UH9PAk9rZ/Rr+ijEb4MdEnPwnNRH6NJ8LBpIeISoIqDM9ROVGONA+Ip8fK0W2SR/Q9A + Gf1mCmVuZHN0cmVhbQplbmRvYmoKMzggMCBvYmoKNzA0CmVuZG9iagoyMSAwIG9iagpb + IC9JQ0NCYXNlZCAzNyAwIFIgXQplbmRvYmoKMzkgMCBvYmoKPDwgL0xlbmd0aCA0MCAw + IFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUg + Pj4Kc3RyZWFtCngBhVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXUNv0RYmsM2x+2RZBk + M0nWbjbr7ia1pYjk4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct8c1uTLal6sDOfvPe + N+99b3bfAA1y0jT1gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4kBkGDc/l759h6D4Fb + VsN7+3eyd62a0raaB4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j2PLsjzlOeXjBtQ8r + PcRZInxANS3Of024U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9T5Cmu8zuq2KhnE72 + DpC9nfR+TrPePsIhwgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19PhgFbcaqfg1whRfEE0n + olRx2S4N8Ziu/VbySoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3VlHheY8TZ97U3e9F + 2gKvMA4dDBoMmg1IUBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRqu3RiRLFBezbcPbdR + pN08/igicZRDtQiS/EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZuRoe19PI43NNXnyV + 1HaTV0eWrHl6vJrsGj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz6kuEdVoxN9+fbH87 + PeIuzy611nOtiYs3VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikxJnaK5yGJl8Uu8ZLY + S6sL4mBtxwidlYYp0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJUifd/wipkNJ25Dm/6 + j9vH/Bfk94rnnygCL2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmujfjj8BFg8qxatUjWf + ILwBHHaHeh7oKZjTlpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxazmVVi6XbYmdMdbhyh + OUL3xKdKZZP6r/ERsP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0cmVhbQplbmRvYmoK + NDAgMCBvYmoKNzM3CmVuZG9iago4IDAgb2JqClsgL0lDQ0Jhc2VkIDM5IDAgUiBdCmVu + ZG9iago0MSAwIG9iago8PCAvTGVuZ3RoIDQyIDAgUiAvTiAzIC9BbHRlcm5hdGUgL0Rl + dmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHVWGVUVV23Xnuf + 5ATdeejuBuku6RTpLmkRMEBCQlFKSlFAEVBElBCVEkRCEFDBBlEBRUWQkJC78R36veOO + e//dP3eNsdd5zlzzrL3Oftbac84HANYiz/DwEJgWgNCw6EgbI12Kk7MLBfcS4AAPIAEJ + wOfpHRWuY2VlDv7XtvoMQLuD45K7c/2vbv/zAJ2Pb5Q3AJAVMuzlE+UdiuBbCF70Do+M + BgCuQvDjg9HhCEYhF2CMRBaI4BO72P8fXLaLvf7BDb997Gz0EJ8eAPAkT89IfwCIjxE7 + JdbbH5mDuAgAlj7MJzAMAHo0gjW9Azx9AGDVR3wkQkMP7OJwBIt4/Wse/39hT0+vv3N6 + evr/xf/8F+SXyI31A6PCQzwP/f7yf9mFhsQgz+t3o0d6UljI3l1u8Mg15+Opb/YHh4f8 + 5uy33TfM3vaPPcxrr+Uf7BdpaPMHh0fr/gtb2f2xxwfo7f2DfaMM/s4T5Glq9cceGWNj + /wdHxdoa/MHxAXaOf7CPr/5fu1+gockfe2C0yd97BR8w+7sGEAgsgCfwjvaN2+Ud6B0I + PxQZ6B8QTdFBdpmvBMUkzFtKgiInIyu7O/z/pu2er38Wu2zz+9xAzCP/sUUhz1RtCDkD + Y/+xeSQC0OqKbHHl/9j4CQj1kwDc4/eOiYz9Zz5kKwOAAQRAAxgBG+AG/EAESAI5oATU + gTYwAKbAEtgBZ+AGvEEACAWR4CBIBEkgDWSB06AAlIByUAmugGugEbSAu6ALPACD4DF4 + Cl6CKfABfAaLYBVsQhCEg8gQA8QG8UCCkDgkB6lAmpABZA7ZQM6QB+QPhUExUCJ0HMqC + cqES6CJUA92AbkNdUD80Cj2HpqF5aAnagFEwCWaEuWAhWBpWgXVgM9gO3g/7wxFwPJwC + n4KL4Ar4KtwMd8GD8FN4Cv4Mr6AAiohiRvGiJFEqKD2UJcoF5YeKRB1BZaIKURWoelQb + qg81jppCLaB+orFoBjQFLYlWRxuj7dHe6Aj0EXQ2ugR9Bd2M7kGPo6fRi+hfGDKGEyOO + UcOYYJww/piDmDRMIeYypgnTi3mK+YBZxWKxzFhhrDLWGOuMDcImYLOx57DXsZ3YUewM + dgWHw7HhxHEaOEucJy4al4Yrxl3FdeDGcB9w63gingcvhzfEu+DD8Mn4Qnwtvh0/hp/F + b1LRUglSqVFZUvlQHaLKoaqiaqMaofpAtUmgIwgTNAh2hCBCEqGIUE/oJbwiLBOJRD6i + KtGaGEg8RiwiNhAfEqeJP0n0JDGSHsmVFEM6RaomdZKek5bJZLIQWZvsQo4mnyLXkO+T + 35DXqRmopahNqH2oj1KXUjdTj1F/paGiEaTRoXGjiacppLlJM0KzQEtFK0SrR+tJe4S2 + lPY27QTtCh0DnSydJV0oXTZdLV0/3Rw9jl6I3oDehz6FvpL+Pv0MA4qBn0GPwZvhOEMV + Qy/DB0YsozCjCWMQYxbjNcZhxkUmeiYFJgemOKZSpntMU8woZiFmE+YQ5hzmRuZnzBss + XCw6LL4sGSz1LGMsa6wcrNqsvqyZrNdZn7JusFHYDNiC2c6wtbC9Zkezi7Fbsx9kP8/e + y77AwcihzuHNkcnRyPGCE+YU47ThTOCs5BziXOHi5jLiCucq5rrPtcDNzK3NHcSdz93O + Pc/DwKPJE8iTz9PB84nCRNGhhFCKKD2URV5OXmPeGN6LvMO8m3zCfPZ8yXzX+V7zE/hV + +P348/m7+RcFeAQsBBIF6gReCFIJqggGCJ4V7BNcExIWchRKF2oRmhNmFTYRjheuE34l + QhbREokQqRB5IooVVRENFj0n+lgMFlMUCxArFRsRh8WVxAPFz4mPSmAkVCXCJCokJiRJ + kjqSsZJ1ktNSzFLmUslSLVJfpQWkXaTPSPdJ/5JRlAmRqZJ5KUsvayqbLNsmuyQnJuct + Vyr3RJ4sbyh/VL5V/ruCuIKvwnmFSUUGRQvFdMVuxW0lZaVIpXqleWUBZQ/lMuUJFUYV + K5VslYeqGFVd1aOqd1V/qimpRas1qn1Tl1QPVq9Vn9sjvMd3T9WeGQ0+DU+NixpTmhRN + D80LmlNavFqeWhVa77T5tX20L2vP6ojqBOlc1fmqK6Mbqduku6anpndYr1MfpW+kn6k/ + bEBvYG9QYvDGkM/Q37DOcNFI0SjBqNMYY2xmfMZ4woTLxNukxmTRVNn0sGmPGcnM1qzE + 7J25mHmkeZsFbGFqkWfxaq/g3rC9LZbA0sQyz/K1lbBVhNUda6y1lXWp9UcbWZtEmz5b + Blt321rbVTtduxy7l/Yi9jH23Q40Dq4ONQ5rjvqOuY5TTtJOh50GndmdA51bXXAuDi6X + XVb2Gewr2PfBVdE1zfXZfuH9cfv73djdQtzuudO4e7rf9MB4OHrUemx5WnpWeK54mXiV + eS1663mf9f7so+2T7zPvq+Gb6zvrp+GX6zfnr+Gf5z8foBVQGLAQqBdYEvg9yDioPGgt + 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 + yZHCKc35kiudW5H7PU8hxYwX5r3LF8evzP9ToB05/+bCTEh9XykaKCYttireIZEp6Sgl + LLUhPSJzWfaYnJu8poKAIq0SSmlTeUNlSw1WJ+5h1RDWVNOy0g7USdWt0uvVnzXEG4kZ + m5mEmp42azGf2kuyVLcKta6weWHHZG/rkO/4zJnVZd++867v3ETcwz3uehG8XX0a/PD+ + XgEdQTzBSSHvw4wPXI2gjTwY9TbGNLY1TvTQuQTGxFNHiEezkqiT81O4UmvTVU8MZLpn + rZ48kyN1eiQ3Kp+9oOdsRDFvydOyrPP6F6CLXZWpl8yrWa68r22+mlnv1aDRyHlzu2mm + Zeh2251r96o7rnTduN/RO9o3N4Aa4h3Wexw4lvek89n354IvXV5nvW2enpz58ZE8J/RJ + Z8H9a9LipaVHP9bXhH46bWZv9+zyH+UnL7cbPQBE0kXkxzc7O8tCAOByAdh9P2xW7Oxs + VyLFxisAOkP+0dZ3nbG0AJQhcQaAB/Ezx3Y//93+Cw9iRH4KZW5kc3RyZWFtCmVuZG9i + ago0MiAwIG9iago1NzA4CmVuZG9iagoyNCAwIG9iagpbIC9JQ0NCYXNlZCA0MSAwIFIg + XQplbmRvYmoKNCAwIG9iago8PCAvVHlwZSAvUGFnZXMgL01lZGlhQm94IFswIDAgNjEy + IDc5Ml0gL0NvdW50IDEgL0tpZHMgWyAzIDAgUiBdID4+CmVuZG9iago0MyAwIG9iago8 + PCAvVHlwZSAvQ2F0YWxvZyAvT3V0bGluZXMgMiAwIFIgL1BhZ2VzIDQgMCBSIC9WZXJz + aW9uIC8xLjQgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0xhc3QgNDQgMCBSIC9GaXJzdCA0 + NSAwIFIgPj4KZW5kb2JqCjQ1IDAgb2JqCjw8IC9QYXJlbnQgNDYgMCBSIC9Db3VudCAw + IC9EZXN0IFsgMyAwIFIgL1hZWiAwIDgxOCAwIF0gL1RpdGxlIChDYW52YXMgMSkKPj4K + ZW5kb2JqCjQ2IDAgb2JqCjw8ID4+CmVuZG9iago0NCAwIG9iago8PCAvUGFyZW50IDQ2 + IDAgUiAvQ291bnQgMCAvRGVzdCBbIDMgMCBSIC9YWVogMCA4MTggMCBdIC9UaXRsZSAo + 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 + zWsnHfvEKbwk9p9r6sLQXRPXVp3C2C1sbnTlaR5A/U6pyypI+9k8O8ZvTV1p8yDTSQge + T1Rfza6JK0zd8715CwWbKFz79/BeLQyF4IEd/HK5RpJrTqPljF2pbFQsVi6y+20N+W/T + MmuOTaVgDIWMweLxZEgZT57S40nXK2xWQ1OOVO+VNrksRSqwNqV7oanQ7C3a+6VjjOPm + mwrLWjEIp5xk4qTmJAbn0pJbum4hkyFZDE0uMSD7yqcHZGGz6jMlDlsuxuNueXbFD1Z2 + 5+UlkseWLo2//SohusQfJebizV3LCwqSR9pW/u1aInkZLxk7l9qqyspKzOb5RQH/4IF3 + H3+p0jZ3rrvUYJyTt6Jl+49PvvtTGjcCAX3yz9SdbA/u0yVHNZ50TuXRPkM2A0M6eYMU + OiVEYsKlSZeMM3I3/BDXyRQj6jF7SFieU9VnJ6rHq4X1+UuT+BISr8FwjAe4+I5Qrndo + MwXfqtRLJXjYaPUHiWVkJOemNKt678tLSujeV0hJ4rVXJo4vtBPyJittKl1LHRL8PXme + acPYYcb77qV8kcJgMRQY5hjapRGpxCJVgMSgTlOwzkylJU3htpiUllnEZzJnzfoyeAj7 + MqOqaeKUiHlVVU11jXAEEq3o7HgCTp4NUuF4EExzkccM7i0/9OE1buICYzMsHFj5ycpi + cpGpm9jUVdzaz6+jVlx9fpgt01V7fh56lnrQinaKT1K4tf6qJx0LacjEs60cb/sXQQPe + cbdAK96bt8NNeNstoJ+BJDwS/G8CtLfWNq1YVNgQ2dAf2bquO+yt27RhjdDqi8ePmWak + EFIf0iDSA0iPIkWRjiO9hvQh0l9THYkGuS05+WA5TOUJRpPpcukMee4MuXmG3DpDRmOn + jS/icp2+jTPqN82Q+2bIW2bIt82Qxf83Xzf+7UL9/wHi4Hy0CmVuZHN0cmVhbQplbmRv + YmoKNDggMCBvYmoKNDk0MgplbmRvYmoKNDkgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNj + cmlwdG9yIC9Bc2NlbnQgNzcwIC9DYXBIZWlnaHQgNzIwIC9EZXNjZW50IC0yMzAgL0Zs + YWdzIDMyCi9Gb250QkJveCBbLTEwMTggLTQ4MSAxNDM2IDExNTldIC9Gb250TmFtZSAv + VlNBTVFHK0hlbHZldGljYS1Cb2xkIC9JdGFsaWNBbmdsZQowIC9TdGVtViAwIC9NYXhX + aWR0aCAxNTAwIC9YSGVpZ2h0IDY0NCAvRm9udEZpbGUyIDQ3IDAgUiA+PgplbmRvYmoK + NTAgMCBvYmoKWyAyNzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NTYg + MCAwIDAgMCAwIDAgMCAwIDMzMyAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMCAwIDAgMCA2NjcgMCAwIDY2NyAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwCjYxMSA1NTYgMCAwIDAgMCAwIDAgMCAwIDYxMSA2MTEgNjExIDAgMzg5IDU1NiAz + MzMgNjExIF0KZW5kb2JqCjIzIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9U + cnVlVHlwZSAvQmFzZUZvbnQgL1ZTQU1RRytIZWx2ZXRpY2EtQm9sZCAvRm9udERlc2Ny + aXB0b3IKNDkgMCBSIC9XaWR0aHMgNTAgMCBSIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFy + IDExNyAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjUxIDAgb2Jq + Cjw8IC9MZW5ndGggNTIgMCBSIC9MZW5ndGgxIDEwMDg4IC9GaWx0ZXIgL0ZsYXRlRGVj + b2RlID4+CnN0cmVhbQp4Ab1aC3STVbbe538nadMkzbtJk5Amafp+0BctNJS2lEdraXm0 + SKEtFFoEQSxVdOBWhQGqoog89TqiDhQQCaVCAOUyXBR1nBEdxcc4zjiiw8y1y7lz1VGh + yd3nT6nQNeNizXLN/+c89nnu85199j7n/OlcsbINYqEbWKid3bJ8IciP5zQA6Z2/tGV5 + lI6XMHx9flenM0rzyQDskoXLFy2N0tKjAEr7oiWrhurrMVlb297WsiCaD1cwzG/HhChN + RmOY1L60884orevHcPqSZfOH8uPfRjptacudQ/3Dh0g7b21Z2hYt73kcw6Tly27vHKJr + MZy6fEXbUHnSgPy9AQRTDbAMFHALiMCABt8mAPGS0g4c5tJ8fBakqbbMiyv5CrR0mADz + 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 + YB0YjhPcfV9Pl4ygx42gKZfX1m8dQc8fQS8YQcs4XtP/whH5yPN17XeMoOX/qF1T/9YR + +ctG0MtH0CtG0LePoOX/oF3T/soR+aso/f/NSSmdCmVuZHN0cmVhbQplbmRvYmoKNTIg + MCBvYmoKNjQ0MgplbmRvYmoKNTMgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9y + IC9Bc2NlbnQgNzcwIC9DYXBIZWlnaHQgNzE3IC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMy + Ci9Gb250QkJveCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0ZvbnROYW1lIC9HVUxOWFQr + SGVsdmV0aWNhIC9JdGFsaWNBbmdsZSAwCi9TdGVtViAwIC9NYXhXaWR0aCAxNTAwIC9Y + SGVpZ2h0IDYzNyAvRm9udEZpbGUyIDUxIDAgUiA+PgplbmRvYmoKNTQgMCBvYmoKWyAy + NzggMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwIDAgNTg0IDAgNTg0IDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDU1NiA1MDAKNTU2IDU1 + NiAyNzggMCA1NTYgMjIyIDAgMCAwIDgzMyA1NTYgNTU2IDU1NiAwIDMzMyA1MDAgMjc4 + IDU1NiAwIDAgMCA1MDAgXQplbmRvYmoKMjIgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1 + YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvR1VMTlhUK0hlbHZldGljYSAvRm9udERl + c2NyaXB0b3IKNTMgMCBSIC9XaWR0aHMgNTQgMCBSIC9GaXJzdENoYXIgMzIgL0xhc3RD + aGFyIDEyMSAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjU1IDAg + b2JqCihNYWMgT1MgWCAxMC42LjggUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iago1NiAw + IG9iagooRDoyMDExMDkxMjE3MzkyNVowMCcwMCcpCmVuZG9iagoxIDAgb2JqCjw8IC9Q + cm9kdWNlciA1NSAwIFIgL0NyZWF0aW9uRGF0ZSA1NiAwIFIgL01vZERhdGUgNTYgMCBS + ID4+CmVuZG9iagp4cmVmCjAgNTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDM5ODY5 + IDAwMDAwIG4gCjAwMDAwMjY2NDEgMDAwMDAgbiAKMDAwMDAwMTU1NSAwMDAwMCBuIAow + MDAwMDI2NDc4IDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwMTUzNSAw + MDAwMCBuIAowMDAwMDAxNjU5IDAwMDAwIG4gCjAwMDAwMjA1NzMgMDAwMDAgbiAKMDAw + MDAwNTAzOCAwMDAwMCBuIAowMDAwMDA1Njk1IDAwMDAwIG4gCjAwMDAwMDM3NjggMDAw + MDAgbiAKMDAwMDAwNDQzNCAwMDAwMCBuIAowMDAwMDAxODkzIDAwMDAwIG4gCjAwMDAw + MDI0MzQgMDAwMDAgbiAKMDAwMDAwMjQ1NCAwMDAwMCBuIAowMDAwMDAzMDM5IDAwMDAw + IG4gCjAwMDAwMDMwNTkgMDAwMDAgbiAKMDAwMDAwMzc0OCAwMDAwMCBuIAowMDAwMDA0 + NDU0IDAwMDAwIG4gCjAwMDAwMDUwMTggMDAwMDAgbiAKMDAwMDAxOTY3NiAwMDAwMCBu + IAowMDAwMDM5NjAwIDAwMDAwIG4gCjAwMDAwMzI0MDEgMDAwMDAgbiAKMDAwMDAyNjQ0 + MSAwMDAwMCBuIAowMDAwMDA1NzE1IDAwMDAwIG4gCjAwMDAwMDc2OTcgMDAwMDAgbiAK + MDAwMDAxNDQ2MSAwMDAwMCBuIAowMDAwMDE2NTI0IDAwMDAwIG4gCjAwMDAwMDc3MTgg + MDAwMDAgbiAKMDAwMDAxMDA2OCAwMDAwMCBuIAowMDAwMDE2NTQ1IDAwMDAwIG4gCjAw + MDAwMTg4MjcgMDAwMDAgbiAKMDAwMDAxMDA4OSAwMDAwMCBuIAowMDAwMDEyMTQyIDAw + MDAwIG4gCjAwMDAwMTIxNjMgMDAwMDAgbiAKMDAwMDAxNDQ0MCAwMDAwMCBuIAowMDAw + MDE4ODQ4IDAwMDAwIG4gCjAwMDAwMTk2NTYgMDAwMDAgbiAKMDAwMDAxOTcxMyAwMDAw + MCBuIAowMDAwMDIwNTUzIDAwMDAwIG4gCjAwMDAwMjA2MDkgMDAwMDAgbiAKMDAwMDAy + NjQyMCAwMDAwMCBuIAowMDAwMDI2NTYxIDAwMDAwIG4gCjAwMDAwMjY4MDQgMDAwMDAg + biAKMDAwMDAyNjY4OSAwMDAwMCBuIAowMDAwMDI2NzgyIDAwMDAwIG4gCjAwMDAwMjY4 + OTcgMDAwMDAgbiAKMDAwMDAzMTkyOSAwMDAwMCBuIAowMDAwMDMxOTUwIDAwMDAwIG4g + CjAwMDAwMzIxODEgMDAwMDAgbiAKMDAwMDAzMjU4MSAwMDAwMCBuIAowMDAwMDM5MTE0 + IDAwMDAwIG4gCjAwMDAwMzkxMzUgMDAwMDAgbiAKMDAwMDAzOTM2MCAwMDAwMCBuIAow + MDAwMDM5Nzc1IDAwMDAwIG4gCjAwMDAwMzk4MjcgMDAwMDAgbiAKdHJhaWxlcgo8PCAv + U2l6ZSA1NyAvUm9vdCA0MyAwIFIgL0luZm8gMSAwIFIgL0lEIFsgPGY1OTk0NjNhNDBh + MjI0MzM4YmM1MmRlOTJjNjc4MTQ4Pgo8ZjU5OTQ2M2E0MGEyMjQzMzhiYzUyZGU5MmM2 + NzgxNDg+IF0gPj4Kc3RhcnR4cmVmCjM5OTQ0CiUlRU9GCjEgMCBvYmoKPDwvQXV0aG9y + IChHdXN0YWYgQS4gTmV1bWFubikvQ3JlYXRpb25EYXRlIChEOjIwMDkxMjI5MTUwNjAw + WikvQ3JlYXRvciAoT21uaUdyYWZmbGUgUHJvZmVzc2lvbmFsIDUuMi4zKS9Nb2REYXRl + IChEOjIwMTEwOTEyMTczOTAwWikvUHJvZHVjZXIgNTUgMCBSIC9UaXRsZSAocGVyc29u + LXN0dWRlbnQuZ3JhZmZsZSk+PgplbmRvYmoKeHJlZgoxIDEKMDAwMDA0MTI0MiAwMDAw + MCBuIAp0cmFpbGVyCjw8L0lEIFs8ZjU5OTQ2M2E0MGEyMjQzMzhiYzUyZGU5MmM2Nzgx + NDg+IDxmNTk5NDYzYTQwYTIyNDMzOGJjNTJkZTkyYzY3ODE0OD5dIC9JbmZvIDEgMCBS + IC9QcmV2IDM5OTQ0IC9Sb290IDQzIDAgUiAvU2l6ZSA1Nz4+CnN0YXJ0eHJlZgo0MTQz + OQolJUVPRgo= + + QuickLookThumbnail + + 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 + bW9kAAAYcAAAAChiVFJDAAADxAAACAxnVFJDAAADxAAACAxhYWJnAAAL0AAAACBhYWdn + AAAL0AAAACBkZXNjAAAAAAAAAAhEaXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAbWx1YwAAAAAAAAASAAAADG5sTkwAAAAIAAAA6GRhREsAAAAIAAAA6HBsUEwA + AAAIAAAA6GVuVVMAAAAIAAAA6G5iTk8AAAAIAAAA6GZyRlIAAAAIAAAA6HB0QlIAAAAI + AAAA6HB0UFQAAAAIAAAA6HpoQ04AAAAIAAAA6GVzRVMAAAAIAAAA6GphSlAAAAAIAAAA + 6HJ1UlUAAAAIAAAA6HN2U0UAAAAIAAAA6HpoVFcAAAAIAAAA6GRlREUAAAAIAAAA6GZp + RkkAAAAIAAAA6Gl0SVQAAAAIAAAA6GtvS1IAAAAIAAAA6ABpAE0AYQBjdGV4dAAAAABD + b3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAA + AAAAAADzUgABAAAAARbPWFlaIAAAAAAAAHNQAAA6zAAAAdJYWVogAAAAAAAAYHwAALhc + AAAUN1hZWiAAAAAAAAAjCgAADNgAAL0jY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4A + IwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCf + AKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUB + KwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHh + AekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC + 1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5 + BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgF + ZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcH + BxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI + +wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsi + CzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4N + qQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBh + EH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MT + gxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbW + FvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGnca + nhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6U + Hr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0j + CiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneier + J9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs + 1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIq + MmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4 + FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4g + PmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpE + zkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0ua + S+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdT + E1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqm + WvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi + 8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tP + a6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0 + cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2h + fgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuH + n4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5Go + khGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByc + iZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adu + p+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKz + OLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/ + v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbL + tsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk + 2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTm + DeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn + 9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJhAAAA + AAADAAAAAmZmAADypwAADVkAABPQAAAKDnZjZ3QAAAAAAAAAAAADAQAAAgAAABEATwDA + AUsB7wKVA1oEPgU0BkYHZQimCeELPQyZDgEPbRDkEmQT6xVjFuEYZBneG00cth4dH3Ig + uiHyIx8kNyVBJkcnQyg6KTUqKCseLBEtBC33Lugv2jDMMb8ysjOjNJI1gjZwN104SDk1 + Oh47BjvuPNc9wD6qP5pAj0GKQolDi0SPRZJGk0eUSJVJlUqUS5FMjk2LTohPhVCDUYNS + hFODVIRVhFaCV4FYf1l7Wnhbc1xuXWleZF9jYGVha2J1Y4FkjmWbZqdns2i+achq0Wva + bONt7G72cANxEnIlczl0UHVndn13kXinebp6znvhfPJ+A38QgBqBIIIjgyKEIIUchhiH + FIgPiQqKBIr9i/aM743ojuGP3JDYkdWS05PSlNKV0ZbPl82YypnImsSbwJy8nbietZ+0 + oLehvqLIo9Sk4qXvpv2oCqkWqiOrLqw5rUSuTq9YsGCxZ7Jts3K0d7V7tn63gbiEuYe6 + ibuLvI29jr6Pv5LAlcGawp/DpMSqxa7Gsce1yLjJu8q9y77MwM3BzsHPv9C70bXSrNOi + 1JfVjNaB13bYatld2lHbRNw33SreHN8N3/7g7eHa4sXjseSb5YXmb+dZ6ELpK+oU6v3r + 5uzN7bXune+F8G7xWPJC8y30GfUF9fD23PfG+LH5nPqG+3D8Wv1D/i3/Fv//AAAAEQBP + AMABQgHRAocDUgQlBRoGLgdICG4JswsCDGINvg8mEJMSChOJFQQWexf6GWYa2Rw+HZge + 6yA0IWgijyOpJLUluCa3J7EoqCmfKpYriyx+LXEuYi9VMEcxOzItMx80ETUBNfI24TfQ + OL45qjqWO4A8az1VPj8/KkAaQQ5CBEL9Q/ZE70XoRuFH2EjOScRKuEusTKBNkk6GT3lQ + cFFpUmZTY1RiVV9WXVdaWFVZUVpLW0VcPl03XjFfK2AoYSdiKGMqZCxlL2YwZzFoMWkx + ajBrL2wtbSxuLG8ucDVxQXJRc2R0enWPdqV3uXjOeeF69XwHfRl+KX83gEOBSoJPg1CE + UIVPhk6HTIhJiUaKQos/jDqNNo4xjy2QKpEokiiTJ5QnlSeWJpclmCSZIpogmx2cGp0W + nhOfEaASoRSiGKMfpCelL6Y2pz2oRKlLqlKrV6xdrWKuZ69usHaxf7KJs5W0obWttrm3 + xLjPudq647vtvPe+AL8IwA/BFsIcwyHEJcUpxi3HMMgzyTXKN8s5zDvNPM49zz7QQNFC + 0kXTSNRL1U/WUtdU2FfZWdpb21zcXt1e3l3fWuBT4UjiOOMl5BDk+eXi5srnsuia6YHq + aOtP7DbtHe4D7uvv1PDB8bDyovOW9Iz1gfZ292v4YPlV+kr7Pvwx/SX+Gf8M//8AAAAR + AE8AwAFCAdECeAM4BAsFAAYABx8IUgmICswMKQ2BDuYQUxHNE0AUsxYsF6QZGBqKG/Ad + UR6nH+8hMCJfI38klSWkJq4nsSizKbUqtSu1LLItry6uL6wwqDGkMqAzmzSXNZI2ijeD + OHw5cjpmO1o8TT1APjQ/KkAjQR5CHEMdRB1FIEYgRyBIHkkdShlLFkwQTQxOB08CT/9Q + /FH7UvpT/FT8VfxW+1f5WPZZ8lruW+lc5F3fXttf2GDWYddi2WPdZOFl42blZ+do6Gnp + aulr6Gznbedu6G/tcPZyAnMSdCR1NnZJd1t4bXl8eox7nHyqfbd+wn/JgMuByYLEg7uE + soWnhpyHkIiFiXiKa4tdjE+NQY4zjyeQHJEUkg2TCZQGlQOWAJb9l/mY9Znwmuub5Zzg + ndqe05/PoMyhyqLKo8ukzKXOps6nz6jPqc+qzavNrMutyq7Jr8mwyrHNstGz1bTatd+2 + 47fnuOq57brwu/K89L31vve/98D3wfjC+MP4xPjF98b2x/XI88nxyu/L7czqzebO48/g + 0NzR2NLT087UyNXC1rzXtdiu2afan9uY3I/dh95933PgZ+FZ4knjOOQm5RPmAObs59jo + xOmw6pvrhuxx7VzuR+808CPxF/IP8wv0CvUK9gr3CvgK+Qn6CPsH/Ab9Bf4D/wH//wAA + bmRpbgAAAAAAAAY2AACmRQAAVbUAAEzMAACeSAAAJPAAAA0OAABQDQAAVDkAAiPXAAIC + jwAB/XAAAwEAAAIAAAAFAAwAFQAeACgAMgA9AEgAUwBgAGwAeQCHAJUApACzAMMA0wDk + APUBCAEbAS8BQwFZAW8BhwGgAboB1QHyAhECMgJWAnwCpgLUAwQDOANvA6cD4wQgBGAE + ogTmBS0FdQXABgwGWwatBwEHWAexCA4IbAjOCTMJmgoDCm8K2wtHC7IMHQyJDPYNZQ3X + DksOwQ86D7UQMxC0ETYRuxJCEssTVRPgFG4U/hWQFiUWvBdWF/MYkhk0GdkagBspG9Ic + ex0jHcsedB8eH8ogeSEqId0ikyNMJAckxCWEJkUnByfJKIspTSoQKtMrmSxhLSwt+C7I + L5kwbTFEMh0y+jPcNMM1sDaiN5k4lDmSOpM7lzydPac+tD/EQNdB7EMERB1FN0ZSR25I + i0mqSsxL8U0ZTkRPclCjUddTDlRIVYJWvVf2WSxaYVuVXMpeAV86YHZhtWL2ZDplgWbL + aBdpZ2q6bBFtbG7KcCxxkXL5dGR10ndDeLd6LnunfSR+pIAlgaiDK4SvhjWHvYlIiteM + aY3+j5aRMZLPlHGWFZe9mWmbG5zUnpOgWaIko/SlxqecqXarU60zrxew/7LptNi2y7jD + usK8x77TwOPC+MURxy3JTctxzZnPxdH01CjWX9iZ2tbdFN9S4ZLj0+YX6F/qquz6703x + pPP/9l74wPsn/ZH//wAAAAUADQAVAB8AKQAzAD4ASgBWAGIAbwB8AIoAmQCoALgAyADZ + AOoA/AEPASMBNwFMAWMBegGSAawBxwHkAgICIgJFAmoCkwK+Au4DIANVA40DxwQDBEEE + ggTFBQsFUgWcBecGNQaFBtcHLAeDB90IOQiYCPoJXwnGCjAKnAsKC3gL5gxWDMYNOQ2u + DiUOnw8cD5sQHRCiESkRtBJAEs8TXhPuFH4VEBWjFjkW0RdsGAoYqhlNGfMamxtGG/Mc + oR1QHf8esB9iIBYgzCGGIkEjACPBJIUlSyYUJt8nqyh3KUEqCirSK5osYi0sLfguxy+Y + MGsxQTIZMvQz0TSyNZc2gDdvOGM5XDpYO1g8Wj1gPmg/dECCQZNCp0O+RNdF8kcNSCpJ + SEppS4tMsU3ZTwRQMlFjUpdTzlUIVkVXg1jBWf9bPVx6Xbhe92A5YX5ixWQPZVxmq2f+ + aVNqq2wFbV9uu3AWcXNy0HQvdZF29XhcecZ7MnyifhR/iYEBgn2D+4V9hwOIjYoai6qN + PY7UkG2SCZOplUuW8ZiZmkWb852jn1WhCKK9pHSmLafpqamra60wrviwxLKStGS2O7gX + ufy77L3ov/HCA8QcxjrIXMqBzKvO2NEK0z/VeNe02fLcLd5k4JbixeTy5yDpUuuG7b/v + +vI59Hz2w/kN+1r9q///AAAABQANABYAIAAqADUAQABLAFgAZAByAH8AjgCcAKwAvADM + AN0A7wECARUBKQE+AVMBagGBAZoBtAHPAewCCgIrAk0CcgKaAsUC8wMjA1YDjAPDA/0E + OAR2BLYE+AU7BYEFyQYTBl8GrQb9B1AHpQf8CFYIswkSCXQJ2Ao+CqULDQt2C+AMSwy4 + DSYNmA4LDoIO+g92D/MQdBD2EXsSAhKKExQTnxQsFLoVSxXfFnUXDheqGEgY6RmNGjMa + 2xuEHC8c2x2HHjUe5B+WIEshAiG8IngjNyP5JL4lhCZMJxUn3CijKWkqLyr2K78sii1X + Licu+i/PMKYxgDJeMz40JDUQNgM2+zf6OPw6AjsLPBg9Jz46P1BAaUGFQqRDxUTnRghH + KkhLSW1KkEu3TOBODE87UG1RolLaVBVVU1aUV9ZZGFpbW55c4l4oX3BgvGIKY1xksGYI + Z2Jov2ofa4Fs5G5Ib6xxEHJ3c991Sna4eCl5nXsUfI5+C3+LgQ6ClIQdhaqHOYjKil+L + 9o2Rjy6Qz5JzlBqVxJdxmSGa1ZyLnkSgAaHBo4WlTKcXqOSqtqyKrmKwPbIcs/2147fM + ubq7rb2nv6jBscO/xdHH6MoDzCHOQ9Bp0pPUwNbx2SXbWt2L37bh2OP05g3oJupB7F/u + gfCl8s30+Pcm+Vj7jP3E//8AAHNmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui + ///9owAAA9wAAMBsbW1vZAAAAAAAAAYQAACctQAAAADGeuOAAAAAAAAAAAAAAAAAAAAA + AA== + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{319, 486}, {753, 756}} + ListView + + OutlineWidth + 142 + RightSidebar + + Sidebar + + SidebarWidth + 138 + VisibleRegion + {{-14, 4}, {601, 647}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + saveQuickLookFiles + YES + + Index: doc/next-tutorial/person-student.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/slots.graffle =================================================================== diff -u --- doc/next-tutorial/slots.graffle (revision 0) +++ doc/next-tutorial/slots.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,4033 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGrafflePro + 138.17.0.133677 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {571, 818}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2010-01-29 10:48:33 +0100 + Creator + Gustaf A. Neumann + DisplayScale + 1.000 cm = 1.000 cm + GraphDocumentVersion + 6 + GraphicsList + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 79 + + ID + 129 + Points + + {317.222, 429.548} + {196.139, 309.359} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 81 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 79 + + ID + 128 + Points + + {106.886, 432.883} + {106.886, 409} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 80 + + + + Bounds + {{361.333, 79.826}, {90.2857, 22}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + ID + 97 + Shape + HorizontalArrow + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs18 \cf0 type == datatype} + VerticalPad + 0 + + Wrap + NO + + + Class + TableGroup + Graphics + + + Bounds + {{51.5012, 635.9}, {144.638, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 98 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 mixin : RelationSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{51.5012, 649.9}, {144.638, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 99 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 98 + 99 + + + GroupConnect + YES + ID + 96 + + + Class + TableGroup + Graphics + + + Bounds + {{24.1547, 597.483}, {165.462, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 100 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 superclass : RelationSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{24.1547, 611.483}, {165.462, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 101 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 100 + 101 + + + GroupConnect + YES + ID + 95 + + + Bounds + {{370.454, 212.248}, {58.3295, 24}} + Class + ShapedGraphic + ID + 102 + Line + + ID + 94 + Position + 0.50699383020401001 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 89 + + ID + 94 + Points + + {375.169, 186.301} + {404.671, 233.65} + {409.907, 261.122} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 86 + + + + Bounds + {{179.298, 697.333}, {30.8571, 22}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 10 + + HFlip + YES + ID + 93 + Shape + HorizontalArrow + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs18 \cf0 . . . } + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{102.61, 571.959}, {58.3295, 24}} + Class + ShapedGraphic + ID + 103 + Line + + ID + 92 + Offset + -3.908935546875 + Position + 0.20789507031440735 + RotationType + 0 + + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs18 \cf0 instance of} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 91 + + ID + 92 + Points + + {127.195, 558.883} + {146.701, 619.394} + {151.346, 674.265} + + Style + + stroke + + HeadArrow + 0 + LineType + 1 + Pattern + 1 + TailArrow + FilledArrow + + + Tail + + ID + 80 + + + + Class + TableGroup + Graphics + + + Bounds + {{80.1271, 674.265}, {144.638, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 104 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 filter : RelationSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{80.1271, 688.265}, {144.638, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 105 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 104 + 105 + + + GroupConnect + YES + ID + 91 + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 80 + + ID + 90 + Points + + {122.382, 635.9} + {113.858, 558.883} + + Style + + stroke + + HeadArrow + StickArrow + Pattern + 1 + TailArrow + 0 + + + Tail + + ID + 96 + + + + Class + TableGroup + Graphics + + + Bounds + {{264.81, 261.122}, {295.148, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 106 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx:methodParameterSlot : MethodParameterSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{264.81, 275.122}, {295.148, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 107 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 106 + 107 + + + GroupConnect + YES + ID + 89 + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 80 + + ID + 88 + Points + + {106.886, 597.483} + {106.886, 558.883} + + Style + + stroke + + HeadArrow + StickArrow + Pattern + 1 + TailArrow + 0 + + + Tail + + ID + 95 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 84 + + ID + 87 + Points + + {352.011, 148.301} + {287.245, 39.5841} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 86 + + + + Class + TableGroup + Graphics + + + Bounds + {{281.667, 148.301}, {163.327, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 108 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::MethodParameterSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{281.667, 162.301}, {163.327, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 109 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{281.667, 174.301}, {163.327, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 110 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 108 + 109 + 110 + + + GroupConnect + YES + ID + 86 + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 84 + + ID + 85 + Points + + {196.139, 120.003} + {267.917, 39.5841} + + Style + + stroke + + HeadArrow + UMLInheritance + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 79 + + + + Class + TableGroup + Graphics + + + Bounds + {{211.673, 13.5841}, {135.654, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 111 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::Slot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{211.673, 27.5841}, {135.654, 12}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 113 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 111 + 113 + + + GroupConnect + YES + ID + 84 + + + Class + TableGroup + Graphics + + + Bounds + {{317.222, 336.143}, {178.507, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 114 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::VariableSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{317.222, 350.143}, {178.507, 112}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 115 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 arg ??\ +convert false\ +incremental ??\ +multiplicity 1..1\ +accessor true\ +defaultcmd\ +valuecmd\ +valuechangedcmd} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{317.222, 462.143}, {178.507, 238}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 116 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 getParameterSpec\ +reconfigure\ +add\ +assign\ +get\ +delete\ +? __default_from_cmd\ +? __value_changed_cmd\ +? __value_from_cmd\ +- init\ +- checkInstVar\ +- getParameterOptions\ +- isMultivalued\ +- needsForwarder\ +- makeSetter\ +- makeIncrementalOperations\ +- handleTraces} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 114 + 115 + 116 + + + GroupConnect + YES + ID + 81 + + + Class + TableGroup + Graphics + + + Bounds + {{39.0587, 432.883}, {135.654, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 117 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::RelationSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{39.0587, 446.883}, {135.654, 28}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 118 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 nosetter false\ +multiplicity 1..n} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{39.0587, 474.883}, {135.654, 84}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 119 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 add\ +assign\ +delete\ +get\ +- delete_value\ +- init} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 117 + 118 + 119 + + + GroupConnect + YES + ID + 80 + + + Class + TableGroup + Graphics + + + Bounds + {{17.6322, 31}, {178.507, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 120 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 nx::ObjectParameterSlot} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{17.6322, 45}, {178.507, 280}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 121 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 name\ +domain\ +manager\ +per-object false\ +methodname\ +forwardername\ +defaultmethods \{get assign)\ +accessor false\ +config true\ +noarg\ +noleadingdash\ +disposition alias\ +required false\ +default\ +initcmd\ +substdefault false \ +position 0\ +positional\ +elementtype\ +multiplicity 1..1} + VerticalPad + 0 + + TextPlacement + 0 + + + Bounds + {{17.6322, 325}, {178.507, 84}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 122 + Shape + Rectangle + Style + + fill + + GradientCenter + {-0.294118, -0.264706} + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 getParameterSpec\ +destroy\ +- init\ +- makeForwarder\ +- getParameterOptions\ +- unknown} + VerticalPad + 0 + + TextPlacement + 0 + + + GridH + + 120 + 121 + 122 + + + GroupConnect + YES + ID + 79 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2011-09-26 12:17:23 +0200 + Modifier + Gustaf A. Neumann + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 12 + + NSJobFeatures + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCEhAhOU09iamVjdACFhAFpAIY= + + NSLeftMargin + + float + 12 + + NSPagesPerSheet + + int + 1 + + NSPaperSize + + size + {595, 842} + + NSPrintAllPages + + int + 0 + + NSReversePageOrder + + int + 0 + + NSRightMargin + + float + 12 + + NSTopMargin + + float + 12 + + + PrintOnePage + + QuickLookPreview + + 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 + 4LrhAfBfUcA7XsA0xEdI/F2FJMGLs0QNKUCRNHywOPkALJETAY7D57bBf68AVyu+SGoS + wDnORm2ZswXtb/8HRtQzDAplbmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKNDMyNAplbmRv + YmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMg + NyAwIFIgL0NvbnRlbnRzIDUgMCBSIC9NZWRpYUJveCBbMCAwIDU3MSA4MThdCj4+CmVu + ZG9iago3IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFn + ZUMgL0ltYWdlSSBdIC9Db2xvclNwYWNlIDw8IC9DczIgNDMgMCBSCi9DczEgOCAwIFIg + Pj4gL0ZvbnQgPDwgL0YxLjAgNDQgMCBSIC9GMi4wIDQ1IDAgUiA+PiAvWE9iamVjdCA8 + PCAvSW0xMiAzMSAwIFIKL0ltMTMgMzMgMCBSIC9JbTE1IDM3IDAgUiAvSW05IDI1IDAg + UiAvSW04IDIzIDAgUiAvSW03IDIxIDAgUiAvSW0zIDEzIDAgUgovSW0xMCAyNyAwIFIg + L0ltMSA5IDAgUiAvSW02IDE5IDAgUiAvSW0xMSAyOSAwIFIgL0ltMTcgNDEgMCBSIC9J + bTIgMTEgMCBSCi9JbTE0IDM1IDAgUiAvSW0xNiAzOSAwIFIgL0ltNSAxNyAwIFIgL0lt + NCAxNSAwIFIgPj4gPj4KZW5kb2JqCjMxIDAgb2JqCjw8IC9MZW5ndGggMzIgMCBSIC9U + eXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNjM2IC9IZWlnaHQgNjgg + L0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNDYgMCBSIC9JbnRlbnQgL1BlcmNl + cHR1YWwgL1NNYXNrIDQ3IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0ZXIgL0Zs + YXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0AAADCoPdPbQ8HESgMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwMD/wAD63wABCmVu + ZHN0cmVhbQplbmRvYmoKMzIgMCBvYmoKNTg5CmVuZG9iagozMyAwIG9iago8PCAvTGVu + Z3RoIDM0IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDYz + NiAvSGVpZ2h0IDcyIC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDQ2IDAgUiAv + SW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA0OSAwIFIgL0JpdHNQZXJDb21wb25lbnQK + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20MH4hA + YcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAgc/AABi+AAEKZW5kc3Ry + ZWFtCmVuZG9iagozNCAwIG9iago2MjMKZW5kb2JqCjM3IDAgb2JqCjw8IC9MZW5ndGgg + MzggMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzM0IC9I + ZWlnaHQgNzIgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNDYgMCBSIC9JbnRl + bnQgL1BlcmNlcHR1YWwgL1NNYXNrIDUxIDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9G + aWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQ0PiEBhwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMvA8MGd8AAQplbmRzdHJlYW0KZW5kb2JqCjM4IDAgb2JqCjMzOAplbmRvYmoKMjUg + MCBvYmoKPDwgL0xlbmd0aCAyNiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0lt + YWdlIC9XaWR0aCAzMTYgL0hlaWdodCA2OCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JT + cGFjZSA0NiAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNTMgMCBSIC9CaXRz + UGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAB + DQAAAMKg909tDwcRKAwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBp4HBvvQAAEKZW5kc3Ry + ZWFtCmVuZG9iagoyNiAwIG9iagozMDQKZW5kb2JqCjIzIDAgb2JqCjw8IC9MZW5ndGgg + MjQgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNDAyIC9I + ZWlnaHQgMjY4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNlIDQ2IDAgUiAvSW50 + ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA1NSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAv + RmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0AENAAAAwqD3T20ON4hAYcCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAge+BAe7EAAEKZW5kc3RyZWFtCmVuZG9i + agoyNCAwIG9iagoxNDMzCmVuZG9iagoyMSAwIG9iago8PCAvTGVuZ3RoIDIyIDAgUiAv + VHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDQwMiAvSGVpZ2h0IDUy + MCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA0NiAwIFIgL0ludGVudCAvUGVy + Y2VwdHVhbCAvU01hc2sgNTcgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAv + RmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABDQAAAMKg909tDjeIQGHAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBv4GBpI3AAEKZW5kc3RyZWFtCmVuZG9iagoyMiAwIG9i + agoyNzU4CmVuZG9iagoxMyAwIG9iago8PCAvTGVuZ3RoIDE0IDAgUiAvVHlwZSAvWE9i + amVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDQwMiAvSGVpZ2h0IDcyIC9JbnRlcnBv + bGF0ZQp0cnVlIC9Db2xvclNwYWNlIDQ2IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9T + TWFzayA1OSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29k + ZSA+PgpzdHJlYW0KeAHt0DEBAAAAwqD1T20ND4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBj4 + GhhTPwABCmVuZHN0cmVhbQplbmRvYmoKMTQgMCBvYmoKNDAyCmVuZG9iagoyNyAwIG9i + ago8PCAvTGVuZ3RoIDI4IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2Ug + L1dpZHRoIDM3MiAvSGVpZ2h0IDY4IC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNwYWNl + IDQ2IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA2MSAwIFIgL0JpdHNQZXJD + b21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0IEAAAAA + w6D5Ux/hAoVQYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG/sAAKH8AAQplbmRzdHJlYW0K + ZW5kb2JqCjI4IDAgb2JqCjM1NQplbmRvYmoKOSAwIG9iago8PCAvTGVuZ3RoIDEwIDAg + UiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDQwMiAvSGVpZ2h0 + IDIxMiAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA0NiAwIFIgL0ludGVudCAv + UGVyY2VwdHVhbCAvU01hc2sgNjMgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRl + ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dCBAAAAAMOg+VMf5IVQYcCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGfgcG5uUAAQplbmRzdHJlYW0K + ZW5kb2JqCjEwIDAgb2JqCjExMzcKZW5kb2JqCjE5IDAgb2JqCjw8IC9MZW5ndGggMjAg + MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWln + aHQgNzIgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNDYgMCBSIC9JbnRlbnQg + L1BlcmNlcHR1YWwgL1NNYXNrIDY1IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQ0PiEBhwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgaGAqvAAEKZW5kc3RyZWFt + CmVuZG9iagoyMCAwIG9iagozMjEKZW5kb2JqCjI5IDAgb2JqCjw8IC9MZW5ndGggMzAg + MCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzcyIC9IZWln + aHQgNzIgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3BhY2UgNDYgMCBSIC9JbnRlbnQg + L1BlcmNlcHR1YWwgL1NNYXNrIDY3IDAgUiAvQml0c1BlckNvbXBvbmVudAo4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QMQEAAADCoPVPbQsviEBhwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMvAcGOe8AAQplbmRzdHJl + YW0KZW5kb2JqCjMwIDAgb2JqCjM3NAplbmRvYmoKNDEgMCBvYmoKPDwgL0xlbmd0aCA0 + MiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNzYgL0hl + aWdodCA3MiAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA0NiAwIFIgL0ludGVu + dCAvUGVyY2VwdHVhbCAvU01hc2sgNjkgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0Zp + bHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dABDQAAAMKg909tDwcRKAwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgz8DAw9TwABCmVu + ZHN0cmVhbQplbmRvYmoKNDIgMCBvYmoKMzc3CmVuZG9iagoxMSAwIG9iago8PCAvTGVu + Z3RoIDEyIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDQw + MiAvSGVpZ2h0IDYwNCAvSW50ZXJwb2xhdGUKdHJ1ZSAvQ29sb3JTcGFjZSA0NiAwIFIg + L0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sgNzEgMCBSIC9CaXRzUGVyQ29tcG9uZW50 + CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7dAxAQAAAMKg9U9tCj+I + QGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgy8BgYeDQABCmVuZHN0cmVhbQplbmRvYmoKMTIgMCBvYmoKMzIw + MAplbmRvYmoKMzUgMCBvYmoKPDwgL0xlbmd0aCAzNiAwIFIgL1R5cGUgL1hPYmplY3Qg + L1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzQgL0hlaWdodCA2OCAvSW50ZXJwb2xhdGUK + dHJ1ZSAvQ29sb3JTcGFjZSA0NiAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sg + NzMgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K + c3RyZWFtCngB7dCBAAAAAMOg+VNf4AiFUGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwY+AMDCjcAAQplbmRzdHJlYW0KZW5kb2JqCjM2IDAgb2JqCjMy + MQplbmRvYmoKMzkgMCBvYmoKPDwgL0xlbmd0aCA0MCAwIFIgL1R5cGUgL1hPYmplY3Qg + L1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNzYgL0hlaWdodCA2OCAvSW50ZXJwb2xhdGUK + dHJ1ZSAvQ29sb3JTcGFjZSA0NiAwIFIgL0ludGVudCAvUGVyY2VwdHVhbCAvU01hc2sg + NzUgMCBSIC9CaXRzUGVyQ29tcG9uZW50CjggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4K + c3RyZWFtCngB7dAxAQAAAMKg9U9tCU+IQGHAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAED + BgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA + gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY + MPAcGCuvAAEKZW5kc3RyZWFtCmVuZG9iago0MCAwIG9iagozNTgKZW5kb2JqCjE3IDAg + b2JqCjw8IC9MZW5ndGggMTggMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFn + ZSAvV2lkdGggMzE2IC9IZWlnaHQgMTAwIC9JbnRlcnBvbGF0ZQp0cnVlIC9Db2xvclNw + YWNlIDQ2IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFzayA3NyAwIFIgL0JpdHNQ + ZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt0DEB + AAAAwqD1T20LL4hAYcCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG + DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA + AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw + YMCAAQMGDBgwYMCAAQMGDLwHBnJfAAEKZW5kc3RyZWFtCmVuZG9iagoxOCAwIG9iago0 + MzcKZW5kb2JqCjE1IDAgb2JqCjw8IC9MZW5ndGggMTYgMCBSIC9UeXBlIC9YT2JqZWN0 + IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWlnaHQgMjEyIC9JbnRlcnBvbGF0 + ZQp0cnVlIC9Db2xvclNwYWNlIDQ2IDAgUiAvSW50ZW50IC9QZXJjZXB0dWFsIC9TTWFz + ayA3OSAwIFIgL0JpdHNQZXJDb21wb25lbnQKOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+ + PgpzdHJlYW0KeAHt0IEAAAAAw6D5Ux/khVBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg4HdgET0AAQplbmRzdHJlYW0K + ZW5kb2JqCjE2IDAgb2JqCjg5OAplbmRvYmoKNTEgMCBvYmoKPDwgL0xlbmd0aCA1MiAw + IFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMzQgL0hlaWdo + dCA3MiAvQ29sb3JTcGFjZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0 + c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c + +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 + Tmp6Ak6iCDR9g94kCmh6IdEOPMm4GZySsmc4DN0pKaSHiOIZjhN8As3u8f3s5yf4UD1Z + OF3qxzipPR+0p0tRPL9DBa4oPwK7iPALCSABJIAEkAAS+EUJ/As7FhSeCmVuZHN0cmVh + bQplbmRvYmoKNTIgMCBvYmoKMTgzMQplbmRvYmoKNTUgMCBvYmoKPDwgL0xlbmd0aCA1 + NiAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA0MDIgL0hl + aWdodCAyNjggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUg + L0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K + eAHtmftPU+nWx0WuvbdQWih0Wne5lVo6HcpULk5LaFAERkVx6owlaNGcMsUeiT02B3HK + i9rYKIID4RJFhogGHAKGIDFqzr/2rl3Ne84MdTkns2f98GatH8wkX5kv+Xxcz7N3e+AA + DxNgAkyACTABJsAEmAA9gRyev47Af6cTfo+D/55cHikJ/BvsQeD8R8R8sAG/Q15ePs9f + RSAvDwiLcj4rJePjg4yCwsKiDyPjkYrAR6KFhQXgGrR8zslHH/n5BSBDJpcrFAqlUqni + kY4A8ASqcrmsqEi08hknopBcOKtAB8hQqtRqjVar45GWgFarUatV4EUOUj44+dTRlREC + +yH6UKk1Ol1xiV5fWmowGHmkImAwlJbq9SXFOp1GrRKdwJ7A0fUJJeKGiAsi+tCCDYOx + rNxkqqisNPNIRaCyssJkKi8zGvT6Ym3GCayJqCTbQ1dGCFwgCiX4AB3gwmyxWg8JNh7p + CAiHrFaLGbyUGUQnSoV4nXxCSY54hxTKYEF0JYYyE9gQbNU1tXV2e329g0cKAvX1dntd + bU21TQAr4KREB2siKxTv9yxLAisCQooUKo1ObzSZrUJVjb3+sNPlcrvdX/FIQwBYulzO + w/X2mirBajYZ9TqNCrYkPy/buQUrApe6PCOkwiJU1zmcLndj09fe5haYVp4/T0AE2ez9 + uqnR7XI66qoFS0VGiRyu92xLkgMrUiRXqnX6sgqLrdbR4PZ4m1uP+vztHR0dAR4pCADJ + dr/vaGuz1+N2OWptlooyvU6tlBfBkuw7tj6siAKEGCusVXan23Ok1dce6Dze1d3T+y2P + NAR6e7q7jncG2n1tR5rcTnuVVdwStSLrkohG4MzSghBLld3V6G3zdxw70Xuy70z/uSCP + VATO9Z/pO9l74ljA3+ZtdNmrxINLq4Il2X9swaFVUKRQFxtMFpu9wdPiC3T1nD4b/CE0 + MHgpHB7ikYJAOHxpcCD0Q/Ds6d6ugK/F02C3WUyGYnFJ9h9bOQfhyRdWpMws1DobW/yd + 3af6z4cGw1ciP0ZHrsZ4pCBwdST6Y+RKeDB0vv9UT6e/pdFZK5jLYEngCXjfRSIeWnCL + GEzWaofb6+vs6QteuHg5Eo2NXo/fSPBIQ+BG/PpoLBq5fDEU7Ovp9HndjmqrySDeJHBs + /e61PWNEU2I0C3UNnrYACBkIR0auxRNj47eSEzzSEEjeGh9LxK+NRIYGQEmgzdNQJ5iN + JZrsRgpkSq2+3FLlcB/xd50KDgwNx+KJ8eTkndS9NI80BO6l7kwmxxPx2DAoOdXlP+J2 + VFnK9VqlrGD/juQVyFTioVXj9LR29PZfCA//PT6WvJ1KP3g4/YhHGgLTDx+kU7eTY/Fr + w0MX+ns7Wj3OGvHYUsngav/9qZVXKFcXGyuFOpf3m2Onz1/8Wyw+NnE3PTUzO7ewsMgj + BYGFhbnZman03Ymxf8QiF8+fPvaN11UnVBqL1fLCbEYUarhGbPXu5vYTZ0OXoyAkdX96 + dn7p8fLTFR4pCDxdfrw0Pzt9PzUxFh+5HDp7or3ZXW+Di0StyGYEHrX05V9UH26EQys4 + GLmW+Onu/Zm5xScrq8/WnvNIQWDt2erKk8W5mft3k4nRyGAQjq3Gw9VflOvhYWv/jsDD + r0YvXiNNRztPfh+Oxm9OpqfnlpZ/WXuxvvGSRwoCG+sv1n5ZXpqbTt++GY+Gvz/ZebRJ + vEj04sPWvnsEjGjBSK3L6zveF7oSSyRTU7OLy6vPN15ubm3zSEFga/PlxvPV5cXZqVQy + EbsS6jvu87pqwYg2uxGlttR0CC52f9eZgcjoPyfTM/NPQMjm9qsdHmkIvNreBCVP5mfS + k2OjkYEzXX642g+ZSrXKrDui1JVWCPYvm9u7+weHr9+88+DnpZW19c3tnd3XezxSEHi9 + u7O9ub62svTzgzvj14cH+7vbm7+0CxWluk8ZMVQKdndLR8+5S9H4rdTU3OPVF79u7ezu + veGRhsDe7s7Wry9WH889TP0Uj14619PR4rYLlQbECDz8gpHvwiM3kvcezi8/W998BULe + vuORgsDbN3u7rzbXny3PT9+buDES/k40Um/7vJHeYPhqYiI9s/B0bWNr5zUIec8jBYF3 + b9+83tnaWHu68Cg9kbgahsffTxqBD+OLlDpDZWZHshj5F8+fJ/AeN/Lb73VzcvPhYy14 + ZXd81Rr4NjgUgx15tLjy/OX2zt6bd+///G/D/wcg8P7dm72d7ZfPVxYfpf8nERsKfhto + /coBL+3wwVZ+Lhuh/0fCRuiZ441sBOdDn7IReuZ4IxvB+dCnbISeOd7IRnA+9CkboWeO + N7IRnA99ykbomeONbATnQ5+yEXrmeCMbwfnQp2yEnjneyEZwPvQpG6FnjjeyEZwPfcpG + 6JnjjWwE50OfshF65ngjG8H50KdshJ453shGcD70KRuhZ443shGcD33KRuiZ441sBOdD + n7IReuZ4IxvB+dCnbISeOd7IRnA+9CkboWeON7IRnA99ykbomeONbATnQ5+yEXrmeCMb + wfnQp2yEnjneyEZwPvQpG6FnjjeyEZwPfcpG6JnjjWwE50OfshF65ngjG8H50KdshJ45 + 3shGcD70KRuhZ443shGcD33KRuiZ441sBOdDn7IReuZ4IxvB+dCnbISeOd7IRnA+9Ckb + oWeON7IRnA99ykbomeONbATnQ5+yEXrmeCMbwfnQp2yEnjneyEZwPvQpG6FnjjeyEZwP + fcpG6JnjjWwE50OfshF65ngjG8H50KdshJ453shGcD70KRuhZ443shGcD33KRuiZ441s + BOdDn7IReuZ4IxvB+dCnbISeOd7IRnA+9CkboWeON7IRnA99ykbomeONbATnQ5+yEXrm + eCMbwfnQp2yEnjneyEZwPvQpG6FnjjeyEZwPfcpG6JnjjWwE50OfshF65ngjG8H50Kds + hJ453shGcD70KRuhZ443shGcD33KRuiZ441sBOdDn7IReuZ4IxvB+dCnbISeOd7IRnA+ + 9CkboWeON7IRnA99ykbomeONbATnQ5+yEXrmeCMbwfnQp2yEnjneyEZwPvQpG6Fnjjey + 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 + EPHMyrYiH5XAwSWHNdEWl4CUsnITeKk080hFoBJcmMrLjAa96EOlkMOR9UkhB3IyW5Jf + UJRxotHpwIq+tNRgMPJIRcBgKC3V60uKdTpNxgdc6hkhv38Z+fide0ZJXj6sCThRKFVq + tUar1fFIS0Cr1ajVKqUC9kNcELhDDuZ8QgicW7Al4v0uXidFMjloUSiVShWPdASAJ1CV + y2WgA/ZD9IEIEa/3D05AClgBLZmR8UhF4CPRQtFGft7nfWQeuUQnB3Nzc/NELTx/DQGQ + kSuuB74fH28TcVEyVsQfgIEf5ZGOwAeomT+B8/8x/0P/AT/A81cR+EMG+C8xASbABJgA + E2ACTIAJSE3gfwH+g8iSCmVuZHN0cmVhbQplbmRvYmoKNTYgMCBvYmoKNDI5OQplbmRv + YmoKNjkgMCBvYmoKPDwgL0xlbmd0aCA3MCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5 + cGUgL0ltYWdlIC9XaWR0aCAzNzYgL0hlaWdodCA3MiAvQ29sb3JTcGFjZQovRGV2aWNl + R3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0ZXIg + L0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c+1dSWRTHrVDeL0VQEEHwAfigmxQ+KjEc + nziZ+WzURVEtMYpsZGKNljZmTJSv0tQmrRzN0XKyHG1q/rnZF2o1k4D32G+t/f2JH/Zd + d60Pe33PuefsvePiUEgACSABJIAEkAAS+FYJ7EN9LQGy1IC37f+sAyhyAp/x7QeaTPCH + mcObWKx41NcRYLGAI/0X7Io+RD2MPIHN5oTFRZER+MiNzU6A/w3g70b+I/X4+ARAzuXx + +Hy+QCAQokgJADVgx+NxORya/S7kaewHwF0AOiAXCEUisUQiRe2FgEQiFomEQJ/H4Xwk + H81sQtgh12nqQpFYKk1MksmSk+VyBYqMgFyenCyTJSVKAb4wTJ5O+Sjg6Wynk52mLgHm + ckVKqlKpSktTo8gIpKlUSmVqikIuS5JKgDyXw46Pp8FH2tiEsIOx8wVAHaADcbVGq83Q + 6VGkBHQZWq1GnaZKBfSJEpGAFwP8Ptrb2VxIdmmSPEUJzHX6rOwcg9FoMuWiGBMwmUxG + oyEnO0uv06arlSnyJKlIwAfwYDUREh7SHbBz+EKxVKZQqrW6zGyjKS/fbKYo6hCKhABF + HTSb8/NMxuxMnVatVMik4jD4SE4D6Q5LKi+EXaXRZRly881U4eEj1uISUCmKKQEaV5H1 + iKWQMuebDFm6dBo8bTUJYPE7E34fpDuHJxBJZSkqjT4nt4CyWItLj5XZyu12ewWKMQHA + ZS+3lR0rLbZaqILcHL1GRYOHxTWetZN7ON35gF2h0mYa8ylLUWlZeUVldU2do/57FAGB + +npHXU11pb38eGmRhco3fgIPCb/TaGju4DISwK7JNJoLrUdt9qra+pONp5tb2lBkBFqa + TzeerK+tstuOWgsLALxSkSQGp4lgNGAzCRy+KFGu1OiNBZaSsooax6mmth86u5znXK7z + KMYEXC7XOWdX55nWpgZHTUVZiaXAoE9XysFpOAk7jWbffthDQrqnqHU5+YUltsq6hub2 + TqfrovuS5/IVL4oxgStXLnt63Bddzs725oa6SlvJobwcnTpFJhFy2Tu50zYD7i5XarNy + KWtZpaOxrePsBbfHe63Pd92PIiFw3dd3zetxX3B2tDY6KsuslClLo0ymEx6M5otP1hB3 + cZJCrTMUWI5WAPYul/tyr8/ff+Pm0C0UCYGhmzf6/b5eT7erq62xzl4KTpORpkgUR+ae + wBVIZKmazFyqyFbT0NZ1vsfr898YGh4J3A2iCAjcvRsYGR4a8Pd5e853tTZU2yDh9emp + MomAGyHfWQlcIW0z2fmWUnt9c4er56qvf+h2IDg6PvEARUBgcmJ8NBgYHuz3XXW7Opod + kPB52VowGiEXFtYvfYbF5okSFWk6g9l6vOpU+9lur6//1p3g2OTU9OzsHIoxgdnZ2emH + k2PBkVv9Pm+3s62h8vgRs0GXJk8U8SJy54vA3vUmqri8tqnzggewB+5PTM08frLw9BmK + MYGnCwtP5mamxu/dudXf5znf0VRjK6KMerUiScSHDc2OfIftjCw1PSuvEGymzenu9Q/e + uT85PTf/bHFp+QWKMYHlpaXFp/Nz0xP3Rgb9vd3OVoe9pDA3Mz1FFpE7bCPFMtreDx+r + PHnG5fENDAcnph8vPF9eWV17iWJMYG1tdWXp+cLc9HhweMDncbWf/O4YGLwmVSbms+N3 + 5DtwlwD3HLO1rLqx86LXPxQYm5pbWHyx9nL99QaKMYHXf66/XH2xuDD7cDQw6Pde7DhV + dfxIASysMglsJCNwF0iSlRmwrNpqTne5r/08HJycmQfs6xtvNlEEBN6+2Vhfe/H8yaOJ + 4C8/93Z3NdbYrOYc2NBIBJG5S5NVOuPB4vK6ZmdP38DI6MPHz5ZX1zc2t7bfoRgT2N7e + 2txYX116Ovdg9PbAj25nU62tyGzIgI1kNO7yNJ2RKrE7Ws55fDcDY9NPFldevd7cevce + RUDg73dbb1+/Wnn+2/RY4Kbv0tnmuhPFB40ZKnkM7rCNBO6tLs9Pg7+Oz8z//sf6xl/b + 7z/8g2JM4MP799uQ8CuL84/GA4M+z7kWx4liyqhD7owR7ilwT9zRZwgMJUoouc/gusp4 + 9YweSL6u4j6SYLcYPZR0H4nfTYy/jWIFEn834TkB47OAWIGE5wQsPBdjfPQVM5DwXIzF + xnNgxme9sQJJz4Hx3oPx1UbMQNJ7D7znI7jLixVKds93AO+1Ce6uY4WS3WvT9TNYx0FS + rhE1lqyOA+uWSGqTYsWS1C1hnR7jQrxdAsnq9LAulXHh6S6BpHWpWIdNVmwdI5qoDptu + s8G+A4L+gmihRH0Hcdhnw7iTJnYgWZ8NcMe+MqatYzHjiPvKsI+SpFkyRixRHyWd8Ng3 + zLg7OHogYd8wcKedBvvkSXviI8WT9MmHweNcCLIREBGjieZCxOEcFLJpJ9GjyeaghMHj + 3J+9jPnZ8QzB3J+4EPjQxCWcc0U62er/8WRzrqAVgfYaIE+P0sO5bmTD3P4TTTrXje4B + CZHfj3MMv26CYfhp5nMMQ903OLeTfFDnF0/QQyM/iuHczhD5T/jhGdRXEPgME38hASSA + BJAAEkACSOCbI/AvZAKr2QplbmRzdHJlYW0KZW5kb2JqCjcwIDAgb2JqCjE5MzEKZW5k + b2JqCjc1IDAgb2JqCjw8IC9MZW5ndGggNzYgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0 + eXBlIC9JbWFnZSAvV2lkdGggMzc2IC9IZWlnaHQgNjggL0NvbG9yU3BhY2UKL0Rldmlj + ZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVy + IC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnP1TUmkUx9VQ3t8EAUEEQUVQZEkSXzJw + cElTVzNNLWUo1NQl0UZGWyt1XbMoUys27UXT0S11rXT/wT0XbNoNxPvob835/sQP586d + +XDm+zz3ec45SUkoJIAEkAASQAJIAAn8qASSUaclQJYa8LaUbzqDIifwDV8K0KSDP8oc + 3sRgpKJOR4DBAI7UX3As+gj1KPI0JpMVFRtFRuCQG5OZBv8bwD+O/CH11NQ0QM7mcLhc + Lo/H46NICQA1YMfhsFksiv0x5CnsZ8BdADog5/EFAqFIJEadhIBIJBQI+ECfw2Idkj/K + bCLYIdcp6nyBUCxOl0ilGRkymRxFRkAmy8iQSiXpYoDPj5KnUv4I8FS2U8lOURcBc5lc + kalUqrKy1CgyAlkqlVKZqZDLpBKxCMizWczUVAp8vI1NBDsYO5cH1AE6EFdrtNocnR5F + SkCXo9Vq1FmqTECfLhLwOAnAJ1PezmRDsoslMoUSmOv0efmGAqPRZCpE0SZgMpmMxgJD + fp5ep81WKxUyiVjA4wJ4sJo4CQ/pDthZXL5QLJUr1Vpdbr7RVGS2WKxW61kUCQGr9SeL + xVxkMubn6rRqpVwqFkbBx3MaSHdYUjkR7CqNLq+g0GyxlpwrtZdXgCpRdAlQuMrspbYS + q8VsKsjTZVPgKatJA4uPTfhkSHcWhycQSxUqjd5QWGy12csrqxzOapfLVYOiTQBwuaqd + jqrKcrvNWlxo0GtUFHhYXFMZsdyj6c4F7HKVNtdottrKKh3VNe7auvqGxl9QBAQaGxvq + 62rdruoLlWU2q9n4FTwkfKzRUNzBZUSAXZNrtJTYzztdFy81NrVcabvagSIjcLXtSktT + 46WLLud5e0kxgFfKJUJwmjhGAzaTxuIK0mVKjd5YbKtw1NQ1XG7tuN7t8d70+XpQtAn4 + fL6bXk/3tfbW5oa6GkeFrbhAn62UgdOw0mKNJjkF9pCQ7gq1zmAuqXC665vbOru9vr6B + X/23hwIo2gSGhm77Bwf6fN7uzrbmerez4myRQadWSEV8NjOWO2Uz4O4ypTav0Gp3uBta + Orpu9A74A3dGg2PjKBICY8HROwH/QK+3q72lwe2wW015GmUGlfBgNN99ska4CyVyta6g + 2Ha+BrB7fAO3R4LjE/cfTE2jSAhMPbg/MR4c8ff7PB0t9a5KcJqcLHm6MD73NDZPJM3U + 5BZay5x1zR2ensFAcPz+1Mzs3OMQioDA48dzszNT98ZHA4M9nvbmWickvD47UyrisePk + OyONzadsJt9sq3Q1tnX5BoeDE1N/zIXmFxafowgILC0uzIfmZiYngsMDvq62Bkj4onwt + GA2fDQvr9z7DYHIE6fIsXYHFfuHi5c4b/YHgxPTD0LOll+Hl5RUUbQLLy8vhF0vPQrPT + E8FAv7ej2X2h1FKgy5KlCzhxuXMFYO96k7W8+lJrd68fsM89XXz56vXb1bX3KNoE1lZX + 3668ernw5OH0xKi/p6u1zllmNerVcomACxuamHyH7Yw0MzuvqARspsM7MDI++fDpUnjl + 3fuNza2/ULQJbG1ubqy9WwkvPpmdHB/p97Y3uCpKCnOzFdK43GEbKZRS9n6uyt10zecP + 3psJLYZfr65vfdje2UXRJrCzs/1hc311JbwQmrkX9Ps6m36uAoPXZEqFXGZqTL4DdxFw + NxSXgr139QXGJufmX6ysbmxt7+59+oyiTeDT3t7ux62Nd8vP5+cejA31Xm92V50zw8Iq + FcFGMi73DKUWllVnXYvn1vDd6UcL4TfvNz/u7n3ZP0DRJrD/5cvezofNtTfhhUfTdwN9 + 3S21jtJiA2xoEnDPiXC/4ukf+e330OKrt+tb23uf9w/+QdEmcHCw//nv7a31N38uhKZ/ + G77laalz2C3InTbAEwaeiDv6DG0/OSrwBD6D6yrt1fPoQPJ1FfeRtDeLCQIJ95EM/G6i + /WmUMJDwu4nBxHMC2mcBiQJJzwnwXIz20VfCQNJzMTwHJjjrTRRKdg58Bu89CO42EoWS + 3XtQ96t4z0dynXdkLNk9H95rk9xdJ4oludfGOg7ahRrHBJLVcWDdEu3CpGMCSeuWsE6P + rBgvQTRRnR5Vho11qQT1p0eFEtWlJmEdNu1K68SBZHXYwB37Dui2FiSMI+47wD4bkmaa + BLFEfTZUwmNfGe3usaMDCfvKgDvlNNhHSdozGS+epI8yCh77hslahONGE/UNJ2GfPFk3 + /NHRZH3yUfA4F+IkYyBiniGYC5EUAR+ZyIFzUEgnn/w/nmwOCpSqUl4D5KlRSzj3h2zY + z3+iSef+UDXCEfIpOOfqdBOuok/Tn3MVqc7GuW7kg9y+e4IaKnYomnPdIuS/4odnUKcg + 8A0m/kICSAAJIAEkgASQwA9H4F/AmtUJCmVuZHN0cmVhbQplbmRvYmoKNzYgMCBvYmoK + MTc4NQplbmRvYmoKNjcgMCBvYmoKPDwgL0xlbmd0aCA2OCAwIFIgL1R5cGUgL1hPYmpl + Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzNzIgL0hlaWdodCA3MiAvQ29sb3JTcGFj + ZQovRGV2aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4 + IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2c+1OSaRTHTVHkDvICykUQ + FQVRepNEMRUXV6MwTdO1UtekXG1JN4vNzTIry3JMs3Kym1lpF83V3cq23X9uzwvNXhTo + edyfduZ8f/AXD8PMhzPf53bOSUhAIQEkgASQABJAAkjg/05gB+o/EKD89eGbEv9WEoqO + wN/ouJ+MhH2EN3wLj5eM2jYBHo+XlMTR/zL2MPEI7hQ+PzUiAYqYwGdkfH5KCvxeEe5x + k/0z8eTkFMAtEApFIpFYLJagKAgAMMAmEgoEqal84M7jsj02dQ55EjgKAAfcYolUKpPL + FShaAnKZTCqVAHrBX9RjQQ8jhxzniEukMoUiTckwKpVarUGRE1CrVQzDKNMUcplULBJy + 1LlUj7GWclnOJTlHXA681Zr0DK1Wp9cbUMQE9HqdTqvN0GhUjFIhB+qC1DjQw8jByEVi + IA7AgbbBaDJlmbNRNATMWSZjpkEP3FWMQibhUj1mpu/gvJwvgCRXKNXpWuBtzs615OVb + rTZbAYqIgM1ms1rz8yw52WZTpl6rUaVBqoehR3UXSHNAniqSyBSMRmswmXMsVpu90OFg + WXYXipQAy+50FNnt1nxLdpZRn6FWKjjoKclJ0Rwd0hyWT2EYuc5ozs0vKHSwxbtLXGVu + UDmKgABHqqzUVeLcxTrs1rycLINWwyiknKfzoiX6DkjzVKFYqmDSdcbsvIIi1ukqK6+o + 8lR7vd4aFBEBQPVVtaeywl1aUryz0GYxZ0agg6VHSfRImosAuUZnyrEWss7S8qrqmtq9 + vv3++gMoQgL1fv8+X93XXk+F2+Xcac/joCvlEnAX3lZz4ZiDs8gBuTHH6ih27fF46/bV + NzQ1t7S2oYgJfNPa0nywwe+r9Va5S9gwdFUauAuX6Juvu8BaUlJF0jS11phtLXK6q2p8 + /oOH2o52dHZ1BwLHUUQEAoHAsa7O9sOtzQ3+Om9F6S67xWxIZxQSUWoUc9mRCPtESPN0 + gzmvsNjtqd3f2HK4oyvQ0/d98FT/AIqIQH//qWBfb0/3t+1tzQ2+mkoXW2Ax6TRKqSia + uXDWAm6u1ppyC1hXVa2/qa392Im+4MDg2dC5IRQpgXOhM6cHvu893nW0pXGft2K3w5pt + yGDkEgF/q6GHmcuUGoM5v8i5pwaQdwb6Tp0ODQ1fHBm9jCIlMDpy4adzZwaC33W3tzb6 + qt3gLiatWiEV8pO3LKKJSSkCsZzJMOYUsKUeX2Nb5/GTA6Ghi6NXr43fnEARErh5Y3zs + 8sjwucH+3u72lgO1XKKbDRqljDP0zfdcsIQKJJy1WAqd5d76lvbAyR9Cw6Nj4xO3pm/f + QRESmJmemrx5/crIT2f7e48dafJ5ytiCnEwwl/AiumnjksjjC6VpGr053+GqrDt4+Fjv + QGj48vWJqZl7s3NzD1BEBObm7s/emb51Y+zS+bOnejpb62vKnYVgLiqFmNu4bGUukoKd + Z9vYsup9hzpOBAH5+OTte/cfPp5/uoAiIvB0fv7Rg9k7UxNjl4YGTwaONNZVuhx5WTq1 + QiJIicIcti1MRmauvRispa2r7/TQpeuTM7MPniw8X1x6iSIisLT44tn8o7m70xNjF3/s + 7+lo9nlKWdi5aNKkAjiJbs5z2CrKGM7Od1fUNhwJBEMXrk7cnn04/2zp1ZvlFRQRgeXl + 168WF57M3Z26cfn8YF9Xq9/r3mUD5kqpMDpzOTDPc7iq9jZ19AwMjY5P3Xsw//zl8srq + 2jqKiMDaz6srrxefPZ67Mzl2MRQMtB2o2eO052amA3PYoG/Nc7Fcpc2CJdTja+7sGzx/ + dWLm/hNAvrr+yzsUIYFf19fevl5ceDQ7PT46NHDiaGNthdNuMWYwUlF05gqVzmzdWVa9 + v6Xr5NkL127dfbiw9GZ1/d2HjY8oIgIbG+9/XVt59WJ+bmbiyvnTPe0H6ypLYOOSwchi + MVfrzVbW7fW3dgdDI+NTs4+fv3q79u7Dx08oQgK/bbz/5eflpYWHdyfHhgd7O5v2elxF + sFmMxxy2isD8m0Dwx0s3pu8/efF6df39xqff/0AREfj9028b79ZWXj57NHvr2oUzfZ2w + cYHNIjInore9oG0xR28hNJEYYfTegmso0UoZO4h+DcW9IuGOMHYY7V5RhGciooNPnCDq + MxGe/YnO9/GCKM/+PLzjIrrGihtEecfF4+NdLtF9bbwg2rtcfLMgepaIG0T7ZoFvc4Tv + b/HC6N7m8A2a8Jk5bhjdGzRX34K1FqQlFTHj6GotsKaItG4oXhxNTRHWzhEVx30hiK52 + DmtEiYpAvxBEWyOKtdDEBc9xAulqobnWFqz5J6ztjxVGVfOfgL0tRN0r8YPoeluAOfZw + EbRpxQ2h7+HCXkXShsQ4cVS9ilyiY08uUedt7CDKnlxgzrkL9p7T9JlHi6XpPY9AxxkL + xOMUogbSzVhIwFki5BNDYkfSzRKJQMeZObQjcrbEU8zMSQhDD08qwtlQFNOg/h1KORsK + SnU5fwHq3Mg5nIFGPPjsH4HUM9C4+ugw9USc9bftKX+RD1LM+gtXpcNIQG4y4GfRDXTE + 6PBUxQg7ALm5PzEMOPYf7hOo7RKIzRX/gwSQABJAAkgACSCB/w+BPwEQA01lCmVuZHN0 + cmVhbQplbmRvYmoKNjggMCBvYmoKMTk1MQplbmRvYmoKNjMgMCBvYmoKPDwgL0xlbmd0 + aCA2NCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA0MDIg + L0hlaWdodCAyMTIgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRy + dWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl + YW0KeAHtmf9Pk4f2x0W+9nsLpYVC1/qUb6WWrqOs8sW1hAZFYCqKq5slaNHcsmKvxF6b + i7jyQW1sFMFB+BJFRkQDjoAhSIya+699zlPN596NetzNnp0fPjnvH8ySIzvk9fKc8zzt + gQMcJsAEmAATYAJMgAkwAXoCOZy/jsB/pxN+j4P/Ti5HSgL/BnsQOP8RMR9swO+Ql5fP + +asI5OUBYVHOZ6VkfHyQUVBYWPQhMo5UBD4SLSwsANeg5XNOPvrIzy8AGTK5XKFQKJVK + FUc6AsATqMrlsqIi0cpnnIhCcmFXgQ6QoVSp1RqtVseRloBWq1GrVeBFDlI+OPnU6soI + gfkQfajUGp2uuESvLy01GIwcqQgYDKWlen1JsU6nUatEJzAnsLo+oUScEHFARB9asGEw + lpWbTBWVlWaOVAQqKytMpvIyo0GvL9ZmnMCYiEqyPXRlhMABUSjBB+gAF2aL1XpIsHGk + IyAcslotZvBSZhCdKBXiOfmEkhzxhhTKYEB0JYYyE9gQbNU1tXV2e329gyMFgfp6u72u + tqbaJoAVcFKigzGRFYr3PcuQwIiAkCKFSqPTG01mq1BVY68/7HS53G73VxxpCABLl8t5 + uN5eUyVYzSajXqdRwZTk52XbWzAicNTlGSEVFqG6zuF0uRubvvY2t0BaOX+egAiy2ft1 + U6Pb5XTUVQuWiowSOZz3bEOSAyNSJFeqdfqyCout1tHg9nibW4/6/O0dHR0BjhQEgGS7 + 33e0tdnrcbsctTZLRZlep1bKi2BI9q2tDyOiACHGCmuV3en2HGn1tQc6j3d19/R+y5GG + QG9Pd9fxzkC7r+1Ik9tpr7KKU6JWZB0S0QjsLC0IsVTZXY3eNn/HsRO9J/vO9J8LcqQi + cK7/TN/J3hPHAv42b6PLXiUuLq0KhmT/2oKlVVCkUBcbTBabvcHT4gt09Zw+G/whNDB4 + KRwe4khBIBy+NDgQ+iF49nRvV8DX4mmw2ywmQ7E4JPvXVs5BePKFESkzC7XOxhZ/Z/ep + /vOhwfCVyI/RkasxjhQEro5Ef4xcCQ+Gzvef6un0tzQ6awVzGQwJPAHvOyTi0oIrYjBZ + qx1ur6+zpy944eLlSDQ2ej1+I8GRhsCN+PXRWDRy+WIo2NfT6fO6HdVWk0G8JLC2fvfa + njGiKTGahboGT1sAhAyEIyPX4omx8VvJCY40BJK3xscS8WsjkaEBUBJo8zTUCWZjiSa7 + kQKZUqsvt1Q53Ef8XaeCA0PDsXhiPDl5J3UvzZGGwL3UncnkeCIeGwYlp7r8R9yOKku5 + XquUFeyfkbwCmUpcWjVOT2tHb/+F8PDf42PJ26n0g4fTjzjSEJh++CCdup0ci18bHrrQ + 39vR6nHWiGtLJYPT/vutlVcoVxcbK4U6l/ebY6fPX/xbLD42cTc9NTM7t7CwyJGCwMLC + 3OzMVPruxNg/YpGL508f+8brqhMqjcVqeWE2Iwo1nBFbvbu5/cTZ0OUoCEndn56dX3q8 + /HSFIwWBp8uPl+Znp++nJsbiI5dDZ0+0N7vrbXBI1IpsRuBRS1/+RfXhRlhawcHItcRP + d+/PzC0+WVl9tvacIwWBtWerK08W52bu300mRiODQVhbjYervyjXw8PW/hmBh1+NXjwj + TUc7T34fjsZvTqan55aWf1l7sb7xkiMFgY31F2u/LC/NTadv34xHw9+f7DzaJB4Svfiw + te+OgBEtGKl1eX3H+0JXYolkamp2cXn1+cbLza1tjhQEtjZfbjxfXV6cnUolE7Erob7j + Pq+rFoxosxtRaktNh+Cw+7vODERG/zmZnpl/AkI2t1/tcKQh8Gp7E5Q8mZ9JT46NRgbO + dPnhtB8ylWqVWWdEqSutEOxfNrd39w8OX79558HPSytr65vbO7uv9zhSEHi9u7O9ub62 + svTzgzvj14cH+7vbm7+0CxWluk8ZMVQKdndLR8+5S9H4rdTU3OPVF79u7ezuveFIQ2Bv + d2fr1xerj+cepn6KRy+d6+locduFSgNiBB5+wch34ZEbyXsP55efrW++AiFv33GkIPD2 + zd7uq831Z8vz0/cmboyEvxON1Ns+b6Q3GL6amEjPLDxd29jaeQ1C3nOkIPDu7ZvXO1sb + a08XHqUnElfD8Pj7SSPwYXyRUmeozMxIFiP/4vx5Au9xI7/9XjcnNx8+1oJXdsdXrYFv + g0MxmJFHiyvPX27v7L159/7P/zb8fwAC79+92dvZfvl8ZfFR+n8SsaHgt4HWrxzw0g4f + bOXnshH6fyRshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzo + q2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6R + jeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yE + njnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB8 + 6KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjne + kY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86Kts + hJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3g + fOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ45 + 3pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOir + bISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN + 4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISe + Od6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzo + q2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6R + jeB86KtshJ453pGN4Hzoq2yEnjnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq2yE + njnekY3gfOirbISeOd6RjeB86KtshJ453pGN4Hzoq/+VkYP5RUqdodJW727p6A2GryYm + 0jMLT9c2tnZev3n77j39b///sOP7d2/fvN7Z2lh7uvAoPZG4Gg72drS4622VBp2yKP9g + zoHf5DNG3nMkIIAb+Y2PAwf+00jPd+GRG8l7D+eXn61vvtrdgyHhSEHg7Zu93Veb68+W + 56fvTdwYCX/X858zkt2IYIet1XPuUjR+KzU193j1xa9bO6CEIw2Bvd2drV9frD6ee5j6 + KR69dE40Yhc+bq1sRkorBPuXze3d/YPD12/eefDz0sra+ub2zu7rPY4UBF7v7mxvrq+t + LP384M749eHB/u725i/tQkVp5o5kMaItNR2qc3n9XWcGIqP/nEzPzD9Zfb6xuf1qhyMN + gVfbmxvPV5/Mz6Qnx0YjA2e6/F5X3SFTqVa87PuNKLR6k7XW5fUd7wtdiSWSqanZxWVQ + 8nJza5sjBYGtzZcgZHlxdiqVTMSuhPqO+7yuWqtJr1VkN6IBIzXOpqOdJ78PR+M3J9PT + c0vLv6y9WN94yZGCwMb6i7VflpfmptO3b8aj4e9Pdh5tctaAEU02I3lFCrW+/Ivqw42t + 8EIyGLmW+Onu/Zm5xScrq8/WnnOkILD2bHXlyeLczP27ycRoZBBeR1obD1d/Ua5XK4ry + 9m2tvEKFusRohlfE5vYTZ0OXo/GxidT96dn5pcfLT1c4UhB4uvx4aX52+n5qYiw+cjl0 + 9kR7M7wgmo0lakVhNiNydbGxUoDT/s2x0+cv/i0GSu6mp2Zm5xYWFjlSEFhYmJudmUrf + nRj7Ryxy8fzpY9/AYRcqjcVqeTYjBTKVziAeEg+srf4L4eG/x8eSt1PpBw+nH3GkITD9 + 8EE6dTs5Fr82PHShH5aWRzwjBp1KVrB/RnILZEqtvtxS5XAf8XedCg4MDcfiifHk5J3U + vTRHGgL3Uncmk+OJeGx4aCB4qst/xO2ospTrtUpZQe6+O5KbX6TQwCER6ho8bYGevuBA + ODJyLZ4YG7+VnOBIQyB5a3wsEb82EgEhfT2BNk9DnQBnRHzUym5ELa6taofb6+sEJRcu + Xo5EY6PX4zcSHGkI3IhfH41FI5cvhkBIp8/rdlSLSwsetfYbyTmYXyhTafVlZqHW2dji + 7+w+1X8+NBi+EvkxOnI1xpGCwNWR6I+RK+HB0Pn+Uz2d/pZGZ61gLtNrVbLCfR/GH8g5 + mFcAbyTFBpPFZm/wtPgCXT2nzwZ/CA0MXgqHhzhSEAiHLw0OhH4Inj3d2xXwtXga7DaL + yVAMIwKH/Xdfj4AROCRyGBJjhaXK7mr0tvk7jp3oPdl3pv9ckCMVgXP9Z/pO9p44FvC3 + eRtd9ipLhRFGRC4urWxGxCHRgRJrld3p9hxp9bUHOo93dff0fsuRhkBvT3fX8c5Au6/t + SJPbaa+yghDxihRkMSKuLRgSJSgpq7DYah0Nbo+3ufWoz9/e0dER4EhBAEi2+31HW5u9 + HrfLUWuzVJSBECWMyP6ldSCztgpgb2nEKbEI1XUOp8vd2PS1t7kF0sr58wREkM3er5sa + 3S6no65aEFeWTgM7K+uIgBEYksIiRUaJyWwVqmrs9YedLpfb7f6KIw0BYOlyOQ/X22uq + BKvZlBGiKCqEEdl3RuDbErjtoESmUKl1JYYyk9liFWzVNbV1dnt9vYMjBYH6eru9rram + 2iZYLWZTmaFEp1Yp4Mk3b/9dF7++giHJzS+AKVGqtcV6g9FUUQlWrIcEG0c6AsIhK9io + rAAf+mKtWgkTIu6sbCPyUQksLjmMiba4BKSUlZvAS6WZIxWBSnBhKi8zGvSiD5VCDivr + k0IO5GSmJL+gKONEo9OBFX1pqcFg5EhFwGAoLdXrS4p1Ok3GBxz1jJDfv4x8/M49oyQv + H8YEnCiUKrVao9XqONIS0Go1arVKqYD5EAcEbsjBnE8Igb0FUyLed/GcFMnkoEWhVCpV + HOkIAE+gKpfLQAfMh+gDESKe9w9OQApYAS2ZyDhSEfhItFC0kZ/3eR+ZRy7RycHc3Nw8 + UQvnryEAMnLF8cDn4+M1EQclY0X8AQj8KEc6Ah+gZv4Ezv/H/A/9B/wA568i8IcM8F9i + AkyACTABJsAEmAATkJrA/wKUdD9sCmVuZHN0cmVhbQplbmRvYmoKNjQgMCBvYmoKMzk5 + NgplbmRvYmoKNzEgMCBvYmoKPDwgL0xlbmd0aCA3MiAwIFIgL1R5cGUgL1hPYmplY3Qg + L1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA0MDIgL0hlaWdodCA2MDQgL0NvbG9yU3BhY2UK + L0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAv + RmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtmftPlGfChj1wnmGYgWHAAQoO + xwFxOgWLgBYIBEWhKorFVgg6ahYLshpnJYta+DwQiQewEMQoWiMatQQNUWPU7L/2PS+a + b7cFb7vp2/uHL/fzQ7PJXfcy19XnfWdg1SodGZABGZABGZABGZABvoHVOn+dgf8up/l7 + rPn3Watjp4F/i11jPP+RMB9qmL9DTEyszl9lICbGGLbifDbKUo8PMeLi4xM+nEQduwx8 + NBofH2damyyfa/KxR2xsnImRmJTkcDicTmeyjn0GjE9jNSkpMSHBqvKZJlaQteZZZXKY + GM5klyvF7fbo2GvA7U5xuZJNlyQT5UOTTz26loKY+2H1SHaleDypaV5verrPl6FjlwGf + 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 + uGxjuLKqunZrXX1DY2Njk44dBozJhvq6rbXVVZXhUFlxfm5WpgniNFdk+UNr1dJjK848 + t1KsW5IbKCwpKw+FKzZ9XVVdY06tzp83YImsrvp6U0U4VF5WUhiwHlmeFPPMWvGKmCLm + ksQnOJaS+HPyAgVFwdIN5aFQOBz+SsceA8ZlKFS+oTRYVBDIy/EvBXEkxJsrsuw1Yn5b + Yt7tJkmiI9nlSfNl+nNy8wL5hUXFJcFgaWmZjh0GSkuDwZLiosL8QF5ujj/Tl+ZxJTvM + J9+Y5e9169dX5pKsjY0zt8Tpcqd6fRn+rGxTJW99IF/HPgOB9XmmRnaW6eFNdbuc5oZY + z6yVrsjHJObBlWSuiTs1zUTJXOc3XbJzdOwykG1a+NdlZvi8Vo9kR5J5ZH0yyKrVS7ck + Ni5hqUmKx2OqeNPTfb4MHbsM+Hzp6V5vWqrHk7LUw7zUl4L8/svIx9+5LyWJiTXXxDRx + OJNdrhS326NjrwG3O8XlSnY6zP2wLoh5h6xZ/Ykg5rllbon1frdeJwmJSSaLw+l0JuvY + Z8D4NFaTkhJNDnM/rB4giPV6/9DERDFVTJalk6hjl4GPRuOtGrExn++x9JHLarJm7dq1 + MVYWnb/GgImx1roe+H58fJtYF2WpivUHzDF/VMc+Ax+kLv3TeP4/53/of5g/oPNXGfhD + BfQvyYAMyIAMyIAMyIAM2G3gfwHEmv+jCmVuZHN0cmVhbQplbmRvYmoKNzIgMCBvYmoK + NjAxMgplbmRvYmoKNzkgMCBvYmoKPDwgL0xlbmd0aCA4MCAwIFIgL1R5cGUgL1hPYmpl + Y3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCAzMTYgL0hlaWdodCAyMTIgL0NvbG9yU3Bh + Y2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQg + OCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHt2PtTU1m2B3CFQAgJIYGQ + QB4kJBA44RECwUgACYKRN4qgEQTBKN1gEGU6khFFaERaBHkoA0gLaPMoUBooRmhHqfuv + 3XWCUzNbQjv7/jA/3LO+P1CuqhWrzqfW2vskJ05gUAAFUAAFUAAF/vsCJzGsAB08fCDo + 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 + gZvR6xN02niNShmrkEVLxYd0sLFHTjv2TRm2NjgE1jYcRk8SFQ18sXFKEFRruBi1WqVU + xsUq5DGyKGmkWBgeBlMHG3uM3SFeaJhfL1IqBT9ZTIxcruBk5KAmi46SSiXiCBHsKz/k + eDoYPBaPx44e6AlFEWJxpEQi5W4kkkixmIULB7nDoQs8df6tBTy/Hhx7YYJwABSKRKII + bgaeHJ6fdWPhYObYfQ142H39aYAdPdCD4YNrAwD9EXAxX5+dzw8FOP+2foeOvTFYvaDg + 4ENA+BjHw+P5J46F+7Oh+zp7wOf3Yw0hwMjRHD4/+/c/c/unn38C4SOYfxPBf6IACqAA + CqAACvz3BP4XggLjiQplbmRzdHJlYW0KZW5kb2JqCjgwIDAgb2JqCjM4NTYKZW5kb2Jq + CjczIDAgb2JqCjw8IC9MZW5ndGggNzQgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBl + IC9JbWFnZSAvV2lkdGggMzM0IC9IZWlnaHQgNjggL0NvbG9yU3BhY2UKL0RldmljZUdy + YXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9G + bGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnPlXkmkUx11QlB1FdgRBUXBBFMU1cYlcUIu0 + TNM0yknFTItkcjQpS6Mcl8nRrDQta7SsbP7Buc9L5Tmy2NuPzf3+9B7P0R8+fu+9z3Lv + ExWFQgJIAAkgASSABH5tAtGo0ATo/dvhb8QcKhb1ncAhFWD0I1ADJOH3GYw4VCgCDAYj + NpZwPZYoxTIAMp7JTAgoEUUIfKXBZMbHA2TGV6DhHfqVZVxcPIBMZLHYbDaHw+GiAgSA + BRBhs4ArE4BSDg0f8ARmLMQ3oASQHC6PxxcIhKhDAgIBn8fjcTmEKACl/Bkmf1IwwZeE + JZfHFwqTkkWilBSxWIKiCIjFKSJRcpJQyCdAgWcg3kPjJM4kxiQsBUBSLJHK5HKFUqlC + EQJKpUIul0klwDRJyOeyWd/sGQonBRMSJpsDLAElcFSpNZo0rQ4VIKDVajTqVJVCLpWI + koU8Yk+IdqjtISpRNMmZzEQwpjBZLJUDSa0uQ5+ZZTAYjdkoo9FgMGTq9em6NLVKIZOI + iD0JTqjtwTjBmgAzgc3lC0USuUqjTdcbjDm5JpPZbC5AFRQAh3xTXk62ITNDp1EpJClJ + AsDJJKUoFM1YKEAsCqZCrc3Iys41mQuLiq2lZaDy/7sIhNISa5GlID8vx6DXaZQyCieU + Ioj1oFCPBmsmsDg8oUiqUOsys/PMFmtpeWWVrbq2trYOBRRqbFWVFWVWS4Epx5ChUQFO + PpdFxfpRc0LWBGuyAaZEoUk35JotJeVV1XX2+oYmR3MLqqWl2eFobLCfrLFVlhUXmIwU + TiGPxHpwqBOaEOcCgKlON5gKrRW22lONza3Os+3nOlCEwPn2Nufplqb6k9WVpRaCUykV + Ac6EeEZQ4oRAJ9ZMEsvVOkOepayqrsFxpq2jq7un97LLdQXlcl3uu9Td1dHubGm028qL + 8wGnQpLM51DmPJI4o2NgdQTWlKq0mbmFZTZ70+n2C929rv6BIffw9RHU9WH30ED/lb6e + rnPO5vqaCovJoEuVpxBzQqgfoUkCHbKmWK7JyDZbq+wOZ8fFvqsD7pGxW55xL8rrHb/t + GbsxPNjv6rnQ1lJfXVaYo09TSpIJTUZImvxkiUqblWepqAOYPa6B4VGPd2JyatqH8vmm + 705NeG+PXR+82tvZ1mw/Yc0Hc8pEAk5icOKMiY1P5AhEMnV6trnE1nC6o+fK4IjHOzl9 + /8HsIz/K7380+3DGN3XHM+ru7+10NtUQc2oUKUIuixl3tAxBEUrkkkDX51rKa5vbL7oG + b3gmpmdm/fMLi8uo5eXFhfnHcw98f3jH3P2XOlrtJ4pNWVqVJInHDkWTyeIlSZTaLJP1 + xKkzF/qujXgmfA/9fy49XVlbe4ZaW/t7ZXnh8ey9Ke/YkKvrbEN1idmoS5VSiTPYm0w2 + D9KmzmgurW5s677qBpizTxafrq6/2Nh8hdrcePl8bWVpfu7+5O2Ra73nHbXlhTkZapmI + T4r6kc1QDANKukiWmpFTCIHe0Tsw6r378MnSyrOXr7bf7LxF7bzZ3tpYX12en/VN3HS7 + OlvtlUV5eo0cylAImrBA4otI2iyqtLd2utyeP+77F1fWN7Z23u3uvUft7b57+3rz+erS + kwdT4yP93c6GKqspKw1WnNzQNAVAMzOvGNLmxf6R8buz838929je2X2///ET6uP+h713 + 25vrKwtzvjtjA5faGm0lsEZSiIFmfFCkgzcFKXINFCFbg7Pntxu/++YWVp6/evPP+/3P + B19QB58/ftjd2XqxuuSfmbg52NvuqCk1G3RKoJkYjmYaRfNsz7XRO/f8i6svtnZ29z8d + fPkX9eXg8/7e29cba8uPZyZvDfWdc9SUEZoSpPkT5vgZmhjp4XIa/UjHKhS+2tKuQrhC + irAQpLdCwtV75B0KvdU7A3eWEbfPNHeWeOoR8WiH5qkHnshFPnekdSKHp8XHHInTOi0m + 90J4kxHhyobeTQbeskW+S6Rzy4Y3wMdcctO6AcbuhGMaMGh2J2DnzDENQrQ6Z7CrK3Lv + Gp2urijsOIzcVUmr4xBoYjdshJZf2t2w2KkdsSGdVqc2MSdOEYSflqA3RQA0SazjhEv4 + eR46Ey4BnDh9FXbUjNb0VRROBh4zAUlrMjCAE6dWD4dUg75oTK1GUTipKWCcqA41RU5v + ohqat0m0A0/ybAJO+x955IDutD/phad4xuBLFKHeoAj87MdfoqBmC/CVlO/Pohz5oP1K + CsXzG1TgigoicIgIv5AAEkACSAAJIIFflMB/JdS42AplbmRzdHJlYW0KZW5kb2JqCjc0 + IDAgb2JqCjE2OTMKZW5kb2JqCjY1IDAgb2JqCjw8IC9MZW5ndGggNjYgMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzE2IC9IZWlnaHQgNzIgL0Nv + bG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRydWUgL0JpdHNQZXJDb21w + b25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtnOk/W1kYxy0h + IjuRRBaJJMKNJUIIQSWNpnaqlFJKU6Y0mtY06KitqmmVWlqDKlW1DK1Wx+DTzj83z03s + YsadF31zz+9V3uTF+X6e5dxznt/x8UFCBBABRAARQAQQgZ9PwBcJJ0AMPPzB71D+pNUh + g3Mi9HADXhRKAFJAAIVC8ffHKf4nPzc5D7ZAKjXIIxoZtbd2KjUwEEKIsofv7ATeIxcQ + EAjYaMHBdDqdwWAwySlYOayfHkwLCqICPnf0nV39cHT+kKkADrAxmCwWm8PhklccDpvF + YjEZOD/A5469M1qHGx3EHE6OyWJzuSGhPF5YGJ8vIKX4/DAeLzSEy+Xg+ICeJ3O9w8Oj + Dg86nBwHuPEFwnCRSCyRSMkoiUQsEoULBUAwhMtm0YODgjyh5w2eGx0UOjoDyAE4oCaV + yeWRCiU5pVBEymURUrFIKOCFcllMCD2AB/3WS7/wxWsdlQZBxw3lC0XATaGMUkfHYJhG + E0s2aTQYhsWo1SplpEwqDhfwuGwPPOi3p+FB2AG6IDqTzeUJRFK5QqXGNHHxWq1Op0si + n2DVidqEuFgsOkopl4qFYSEcFh550DC8sfOHNhHsRieWKaJiYuO1uuSUVEO6EZRBLuFL + Tk8zpOiTEhPiMLVSLgn3wKPiWXsqaX0h7IKCGSwuTyiWKaNjE3R6Q3pGVrbJbLFYcsgm + WPNFkykr02jQJ2njsCi5FOBB2kLJOx14UO0g7OiATiCWq7B4nT4tI9ucY83NKygsKiaf + igoL8/Osly6asoypSVqN2g2PxaBRz2AHGcsBdDIVpk02ZJosl/OLSsquVlyrIqMqK8rL + SosLci+Zs9L1Wk2UXCLkcVkQeJRTBQ9SFg+7EL5IpsQS9MbsnLzCK+VVNbV19bdstttk + k812q+FmXU1VRVlxvtWUkZoI8MSCUI4n8E4UPF8/2J9A2Amliuj4ZKPJWlBacb223tbU + fNfees9BNt1rtd9t/uV2Q13NtbKi3IuZKVpMGSEKwwMPkvYEOyh3eLXji+RRsTpDtrWw + rOpGQ2Oz3dH20NnRST51tDvb7re2NNnqrpcX55qNyfHqSIkglA3sKF7ZsUMFUkVMgj4z + B9DV2ZpbHzg7u7p7+vrJp77enq5H7W33Whrrq8uLrBcMiZgqIpzHZdBOFzw//0Aag8ML + l6lidWmmvNKqutstDmdnd9/AoOvFEPn0wvXsaX/Pb84H9qb66rICizE5Ti0X87nMYGrA + yWYBrYLGxFNWHa/PsBRV3LC13Hd29T11DY2Mjk2QT2OjIy+fD/Y/7myzN92sKrFeSNVi + CqkglEX3xo4azAoRSBQxWsOFy1euN9xxOLv6nw29Gn8zOT09QzZNT/8+OTH60vWkp7Pt + rq3mar45XRerihDy8GZxOu6odBaUO6VGl27OL69ttAM61/DYm6m37+bfL5BN7+fnZqcn + x0eeD3S3O+7UVxZZMvRxapmIhzcL/xNftH4UaLO88IiouGRI2ar65gedvc+Gxydn5hYW + l5ZXyKblpcUP87NTEyOu/q5f7bbqUmtWSkK0XBTGYXhhB1sUNg8vdylZ1pJqm935eGBo + bPLt/Ifl1bX1T2TT+trqysf3s1Pjw4M9HY6m2rI8k0GLReLNwjs7DrCL1hqyc8tqmxyd + fa5Xb2bmF1fWP2183SSbvm58Xl9dWpidHH3xpKut+WZFgTlNhyklAmAXeCpnA4IYnDBR + JLQKU97Vuua23waGxqfmAN3G5rct8unb5pdPqx/np18PD3Y77Q2VhRZjkkYpBXY0r+y4 + YWIFlphuLqiob3n4eHDk9duF5bWNza3tnV2yaWd769uX9ZUPEHiu3o5WW1VxTkZyrEoq + CGGdwY4vUWA6o6Xw2i27s8f1avLd4urnr1vbu9/Jp92drc2NtaX56bGh/k5HY3XJpUx9 + HGxS/oUdbFGAXaXN3t77fHRq7uMfG5t/7Xz/8TfZ9OP77vafX9aX5mcmhp48cjTVlFiB + XRRid45A+D/sUM7ulSfCOYt6xX5PJNwr0B7lcC9GcI9CR3vjg08Aontj9E12+OVJ7JsM + nQUcPe8gdhZAQWdQRw7aCJ5BobPPIwe8BM8+0Zn70ZsFQmfu6K7n2IUWobse/H4W3TEe + XKYSu2NEd9tHb/CJ3G2jmYpjYyOEZirQLM+xcSWCszxQ8NAM2eG0HKEZMjS7eHRCk8js + og+amT06F0xoZhbYoVntg4F0wrPayCNwxApByCOABx7ypux7cIh5U4AdnrXIE7XvACPi + ifLAQ168PeMhIS+eD/KAHvO6EvKAeuAh7/GB2ZqA99jHDc/t3EaedyaTmOcdbAN43gI9 + /IkK9NYC/tzCud9awD0Xbnp+6I2P/fdNzv/Gh9uxgt6W8TynQ/htGTe9fYRAkfQ6BIJ+ + IQKIACKACCACiMBPJPAPg+eHygplbmRzdHJlYW0KZW5kb2JqCjY2IDAgb2JqCjE4MTYK + ZW5kb2JqCjQ5IDAgb2JqCjw8IC9MZW5ndGggNTAgMCBSIC9UeXBlIC9YT2JqZWN0IC9T + dWJ0eXBlIC9JbWFnZSAvV2lkdGggNjM2IC9IZWlnaHQgNzIgL0NvbG9yU3BhY2UKL0Rl + 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 + 9kOAP+ZircGYTyPVPwH+WgN7LKx9BCT7J8DdY5Fgb5mxfYrUAATYe8v4psb4aoTUQASY + 39RwloDxrRypgQkwzxKIcIaKcUgIqQEJcM9Q4ewo43AkUgMS4J4dxZl51qlwJAciwDsz + j7tCrMswSA5IgHdXSLifizuSrIuASPZLgHlHEnfDWbefkRyIAOtuON7EYDz5gNSPEOC9 + iYG3gBhP3SD1IwS4bwHRhA9voDFf+kK6PwK8N9Dw9iPrdUMkByLAevsxCG/eMt50RWpg + Arw3b8k9vPX9yY9ZIzEgAf5b3+hxwHrGH8kBCPB6HAiFD71dGP1LkOqfALO3C7knjLro + acXu3oQf+CLA6mm1JR96+TGb1iHdJwFeL78g9DDl9ulEvn8CvB6mW/Khd/OeGhXjR7sI + cHo3B3nl83YOR896do92/ODvBJg966nvgTDukn1U/GjZQb3rvRGJAAEmgW11xOLwcHLJ + 268+JHjng6M7G2147QsJDd0SkH6HAIG9ExCJRKHUNJfa5n7UPK+JlCZkbwdpiAABPoE/ + BPpk7/5SBklBBAh8JoG/CIV/ggAIgAAIgAAIgAAIgAAIgAAIgMD/NIHfAWrWCbIKZW5k + c3RyZWFtCmVuZG9iago1MCAwIG9iagoyMTExCmVuZG9iago1OSAwIG9iago8PCAvTGVu + Z3RoIDYwIDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDQw + MiAvSGVpZ2h0IDcyIC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0 + cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry + ZWFtCngB7Zz7U5JpFMetSOQOiqBcFnzxBoj0rhh5KXB0NFPXW5pdcFS0WQxjc6KYJYvG + kmK8bjqmk2aWmZajjWVT+8/tebGddhOwtx776Xx/8qczzvcz55yH533OSUpCoQPoADqA + DqAD6AA6gA78fAcOoQ7OAXY44f84/EVHUCQd+GLsYfD5W8Ds0oD/gcM5ijooBzgccJiB + sy+UKI9dGMlcbsqueChSDnx2lMtNBtaAZT8mn3kcPZoMMHh8vkAgEAqFIhQ5B8BPcJXP + 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 + dHJlYW0KZW5kb2JqCjYwIDAgb2JqCjE5MjkKZW5kb2JqCjUzIDAgb2JqCjw8IC9MZW5n + dGggNTQgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggMzE2 + IC9IZWlnaHQgNjggL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9sYXRlIHRy + dWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl + YW0KeAHtnNtbUmkUxj2gyGkDsuWMICi6QUUURVETxchzRlqkSRplqZhpkZZ5KkuzHA+T + o2VpVtZYWdn8g7M2eEDBZ9xz0c3+3itvvPh+z7vW+vb61iIqCgkRQAQQAUQAEUAEfj+B + aCSSADXw8A8xB4qlrQ4YnBBhkBvwYjDikOLiGAxGbCxJ8T/5BcgFscUzmQlBseio3bMz + mfHxYCHGLr7jA3iXXFxcPGBjsdkcDofL5fLoKTg5nJ/DZiUkMAFfwH3HZz8SXSxEKoAD + bFwehvEFAiF9JRDwMQzjcUl+gC/gvWNKRwAdeI4kx8P4QmGiCMeTksRiCS0lFifhuChR + KBSQ+IBeMHIjwyNdR5qOJCcAbmKJVCaXK5RKFR2lVCrkcplUAgQThXyMw05ICFovErwA + Okh0HC6QA3BATaXWaFK0OnpKq03RqJNVCrlUgouEGA+sB/Cg3kaoF9FkrmOywHRCkVgq + B25aXZo+PYMgDAYj3WQwEASRoden6lLUKoVMggv5QXhQb8Phge0AXQKHxxfiErlKo03V + E4bMLJPJbDbn0k9w6hxTdqaRSE/TaVQKaVKiACOdBwUjErtYKBPsADqFWpuWYcwymfPy + C6xFNlAxvUQeuajQmm/JzcnOJPQ6jVIWhMckozYsaKPBdglsLibEpQq1Lt2YbbZYi4pL + y+zlDoejkm6CM1fY7aUlNqsl15RJpGlUAA/CFlJeuPEg24HtOIBOotCkEllmS2FxWXml + s6q6tq6+gX6qr6urqXaerrCX2gpyTQZ9AB7GZTGPYQcRKwB06lTClGctsTvO1NSfdZ1v + vuCmoy42N7kaG2qrTpeXFllMhjSNUooLMTAeIyzhQciStksUy9U6IttiK6usrjvX5G5t + 87Rf9Xqv0U1e79WOK55Wd7OrocZpLy7IAXgKiUgQNN6RhBcdA/cTsJ1UpU3PyrPZnbWN + zZfa2r2dXT2+3lt9dNOtXl9P141rHZ7WC676qoqSfBOhS5YnkcaDoD3CDtIdme3Eck2a + 0Wwtc9a53Jc7rnf5+gbu+geH6KfBe/6B273dnV7PpaaGqnJbXpY+RSkR8YEdIyI7vkii + 0mZkW0oqAZ3H29Xb7x8aHhkdn6CfxsdGh+/fG7jVfb29paneecqaQ6Qmy3AhlxWe8GJi + 41lcAS5TpxrNhfbqRrfnWneff2hk/PGTqWcz9NOzqaeTE6MP/P2+zvYWV63Dlpep1yjE + Qh6bGXe0WECpYPHIkNVnWYod9c2Xvd23/cPjk1Mzs3Pzi/TT/Nzs8+knEw+HBnydV9xn + nacKTIRWJRFhnEjsmGwsUaLUZpisp86cu9Rxs88/PPF05o+Fl0srK6/oppWVv5YW555P + PRodGujxtp6vKS8yG1OTpThZLMJ9x+RgkO50BnNReU1T23UfoJt6Mf9y+fWbtfV3dNP6 + 2tvVlaWF2enHI/f6brZfrHcUWzL1ajlOFovYI1+0MQwos7gsOS0zD0LW3d7VPzT29MXC + 0qu3795/3PxEN21+fL+xtrq8ODs1MXzH521pdJbmZ6dr5EkCbgR2cEXh42S6yy91nm3x + +vwPH8/ML71e29j8vPXlK930Zevzpw/rq8sLL56MDvZ1trmq7VYTkUIWi8jsBMAuPbsA + 0t3lzr7BsanZP1+tvd/c+rr9/Qfd9H3725fPH9ZfL81NTzwY6LrSXFNeaCZ0Sgmwiw+L + WfCdIEmugVJhr3Z5bty+PzE9t7T67uPfX7d/7vyim3Z+fv+29WnjzfLCzOTwne72C3UV + RWaDTgXsWMexSwmwO++52f/g0cz88puNza3tHzu//qGbfu383Abjra0sPp8cudvTcbHO + YUPsTuaC/8MOxWwwO1GPWVQr9moi5VqB7ij7VzFqdxR0Nw69/1O7GzPQN1nIhyfFbzLU + CwhpeFDsBaAeVGinjVIPCvU+DzV4KfU+yfcK1HPff1yg1nNHbz2hL1pU3nrQG+OhZ1RK + b4zobfvQ8z3Ft21IeGim4mB6hNJMBZrlCZ1YojLLE4VmyELn5CjNkAE7NLu4P6BJeXYR + zcyGjAZTmpkljYdmtfdm0qnNagM7MmrRjsDeRgSVHYEgPLSbsruIQ2k3JQrtRB3a/aK0 + ExWEh3bx9pcPKeziRQXgBTYZ0Q4oj0dtBxTGaMm4BXrkyjbaPSbXj0+8e0zOIAfoxaCd + 9719/5PvvAcmuNFvLQR/XoLyby0E6O0hBIq01wEQ9BcigAggAogAIoAI/EYC/wI/KmEr + CmVuZHN0cmVhbQplbmRvYmoKNTQgMCBvYmoKMTY4MAplbmRvYmoKNzcgMCBvYmoKPDwg + L0xlbmd0aCA3OCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0 + aCAzMTYgL0hlaWdodCAxMDAgL0NvbG9yU3BhY2UKL0RldmljZUdyYXkgL0ludGVycG9s + YXRlIHRydWUgL0JpdHNQZXJDb21wb25lbnQgOCAvRmlsdGVyIC9GbGF0ZURlY29kZSA+ + PgpzdHJlYW0KeAHtnfs3W9sWxz1CyDtEQh4SCWEnIUI09aooTb21SptSStM6h0bTuifl + Vqsc1Zwq9Whd1Cna4zFoHQy3nN4y7r92506obOK265fzy17fn6wxlh/2Z8y51k4y53cG + BWFhApgAJoAJYAKYwN9PIBiLJIAGHv4h5EihtNURgx9E6OMGvBiMMKywMAaDERpKUvwu + Py85H7ZwJjPCp0g66uDZmczwcAghxgG+0xP4gFxYWDhgi2Sx2Gw2h8Ph0lPw5PD8bFZk + RAQT8Hmj7/TTj0QXCpkK4AAbh8vj8QUCIX0lEPB5PB6XQ/IDfN7YO+Xq8KKDmCPJcXl8 + oTAqWiSKiRGLJbSUWBwjEkVHCYUCEh/Q82VuYHhk1JFBR5ITADexJDZOKpXJ5Qo6Si6X + SaVxsRIgGCXk89isiAhf6AWC50UHBx2bA+QAHFBTKFWqBLWGnlKrE1TKeIVMGisRRQt5 + XAg9gAf3bYD7Ipg865iREHTCaHGsFLipNUna5BSC0On0dJNORxBEilabqElQKmRxEpGQ + 74MH9+1JeBB2gC6CzeULRRKpQqVO1BI6Q6rRaDKZMugneOp0Y5pBTyQnaVQKWWxMlIBH + Rh5cGIHYhcI1wfKikynVSSn6VKMpM+uMJTsHlEsvkY+cfdaSZc5ITzMQWo1KHueDxySz + 9kTSBkPYRbA4PKEoVqbUJOvTTGZLdm5+gbWwqKiomG6CZz5vtebn5VjMGUYDkaRSADxI + WzjyTgYenHYQdmxAJ5GpEolUk/lsbkFhsa2ktLyisop+qqyoKCu1XThvzc85k2HUab3w + eJxI5insIGMFgE6ZSBgzLXnWootlldU1V+qu2umoa3W1NZeqyksuFOZnm426JJU8ViTk + QeAxThx4kLJk2EWJpUoNkWbOKSgurbhca29obGq+5XDcppscjlstN5sa7HU1VWU2a+6Z + dIAnk0QLfIF37MALDoH3Ewi7WIU6OTUzx2orv1R3vbHZ0dp219lxz0U33etw3m376XZL + U8PVmsqS83lZRkITL40hAw+S9hg7OO7I004sVSXpTZYCW0WN/UbLnTanq/MXd1c3/dT1 + 0N15v6O91dF0vbaqpDAnM1WbIJdE84EdIyA7frREoU5JM+cVA7omR1vHA3d3z5Pevn76 + qe9pb88/H3bea7/TXF9baTtnSScS4+NEQk7kyQMvJDQ8kiMQxSkT9aaz1tJL9qbb7S53 + 95O+gUHPiyH66YXn+bP+3kfuB87W5vqa8qKcTINWJRMLuSxm2PHLAq6KSC6ZstpUc25R + Zd0NR/t9d0/fM8/QyOjYBP00Njry8rfB/sfdnc7Wm/Zq27kzRkKtkETz2IHYMVm8KIlc + nWK0nLt4+XrLzy53T//zoVfjbyanp2fopunpf01OjL70/Nrb3XnX0XClrDDbpE+MjxWR + l8XJuGOyeXDcaXSm7MKy2sY7TkDnGR57M/X297n5Bbppfu7d7PTk+MhvA08eun5uvlZZ + lGs2aJVSEXlZhB77RBvCgGtWFBefZMiElLU3tz3ofvp8eHxy5t3Ch8WlZbppafHD+7nZ + qYkRT3/PP5yO+ku2/Ky0ZJU0RsAJwA5eUfgi8rjLyrdV1zuc7scDQ2OTb+feL62srn2k + m9ZWV5b/mJ+dGh8e7O1ytTbWlFotRiKBvCwCsxMAu2SjpaCkprHV1d3nefVmZu7D8trH + 9Y1Numlj/dPayuLC7OToi197Ottu1pUXnjURGrkE2IWfyNmwCI4gRpoAV4W19EpTW+ej + gaHxqXeAbn1za5t+2tr88+PKH3PTr4cHn7idLdcqinIydBoFsIsMyE4YI1MT6dmF5XXN + 7b88Hhx5/XZhaXV9c/vzzi7dtPN5e+vPteX3EHiep10dDntVcW6mPlEhieKdwk4sVxOm + nKKKq7ec7l7Pq8nfP6x82tj+vPuFftrd2d5cX12cmx4b6u923amvvpBnNsBLyv9hB68o + wO6ao6Or78Xo1Nzi6voWoPu6Rzd9/fLXzvbG2tL8zMTLgUf3WxuqbflmQ9L32VXaHfe6 + +4fGp+eX1ja2dwDdPt209/XL7r83P628n309/KznQWsDvKScxg6+gorgCMVyb9wFYPdf + eml/fw+BXWgYfJyFjxX6jNziKvttF8TdxMzC8sfN7d0ve/v0IgdPu7/3n78+b61D3L0Z + edbT+dONyxfzs1K1yrhoHot57EuoYMyOEh+YHQUH0gKzQ8JF2YzZUXAgLTA7JFyUzZgd + BQfSArNDwkXZjNlRcCAtMDskXJTNmB0FB9ICs0PCRdmM2VFwIC0wOyRclM2YHQUH0gKz + Q8JF2YzZUXAgLTA7JFyUzZgdBQfSArNDwkXZjNlRcCAtMDskXJTNmB0FB9ICs0PCRdmM + xA7/tu3PDum37aDvsMM1FafXVFDY4VoeKEdBr+XBNWQH5XLINWS4dvGwRhO5dhHXzB7V + BiPWzLJxrfa3knTUWm3cI3DUCYHWI4B7U/z7b9B6Uxi4J8qv8QuxJwr34vk1HCL24uEe + UP9OV6QeUNx7TGmwRuo9Jv0CcM/7t+Z+tJ537LXg7yiB4rWAPT4oNiZIHh/YW4Zin4Po + LQMHHvY0OnJvQvI0wl5a/o5hKF5aQdjDzd+nDsnDDdhh78BvBonI3oHYs9LPmhPJs5IM + POyVeugJi+aVCuzIrMUevYeOxCgevT542Bv6wAgbyRs6CHuSU7zXkTzJffCwF/43838E + L/wgLzzvJAE8g4HLRZvBADaWZN4CPXJkCp79QY7/+OHZH6QHqJdeCJ45czhv58dnzngd + VPGsI994J+RZR156hwiBIu11BAT/hQlgApgAJoAJYAJ/I4H/AT2sy2IKZW5kc3RyZWFt + CmVuZG9iago3OCAwIG9iagoyMTIzCmVuZG9iago2MSAwIG9iago8PCAvTGVuZ3RoIDYy + IDAgUiAvVHlwZSAvWE9iamVjdCAvU3VidHlwZSAvSW1hZ2UgL1dpZHRoIDM3MiAvSGVp + Z2h0IDY4IC9Db2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9C + aXRzUGVyQ29tcG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB + 7Zz5NxtYFMctIfsmG5FIJCQSIQ2pEFUxUSYapZRBMYgqraW0SmtsrUFNbVUH1Soto2V0 + Mf/gvJd0pjMk6Xvmp55zvz/4xc3JOZ/c833bvTciAgQEgAAQAAJAAAgAge+dQCTofxCg + /PXRN0V9VTSIjsBXdPgnI2Ef4I2+hcGIAZ2ZAIPBiI7G9L+N3U88gDuWyWQFxAYRE/iC + jMmMjUW/V4B72GT/QjwmJhbhZnM4XC6Xx+PxQRQEEDCEjcths1ksJuLOwNkemjpGHo0c + BQFHuHl8gUAoEolBtAREQqFAwEfo2f9QDwXdjxzlOCbOFwjF4jiJVCqTyeUKEDkBuVwm + lUolcWKRUMDjcjB1nOoh1lKc5TjJMXER4i1XxCcolYkqlRpETEClSkxUKhMUCplUIhYh + 6mxWGOh+5MjIuTxEHAFHtNUarTZZpwfRENAlazVJahXiLpOKhXyc6iEzPRJ7OZONklws + kccrEW+dPtVgTDOZzOZ0EBEBs9lsMqUZDSl6nTZJpVTI4lCq+6EHdReU5gg5i8sXiqUK + pVqrSzGYzJYMq9Vms2WBSAnYbOesmRaLKc2gT9aoEuQSMYYeGxMdzNFRmqPlk+NHnqjR + paalZ1ht2edzHHlOpHwQAQFMKi/XkWPPslktJmNKslqpkIoF2NMZwRI9EqU5i8MTiKXx + iRq9MT3TZnfk5RcUuorcbncxiIgAQvVDketigTM3J/tchtmgSwpAR5YeJNEDac5FyBWJ + 2hRThs2em19YVFzyo+eyt/wKiJBAuddb5im95HYVOB32cxYjhi4R8ZG7ME6bC2aOnEWE + kGtSTNZsxwWXu7SsvKKquqa2DkRM4KfamuqrFV5PibvQmWPzQ5fFIXfBiX7yugtZSyyL + K4iTKzV6U6bdWVjs8V69Vne9qbmlzedrBxER8Pl8rS3NjfW11RXeUndBbpbFoFPHS8V8 + LiuIuURGoX0iSvN4tc6Yke10lVyurKlvavF1dN3u7untAxER6O3t6e7q7Gj7ubGuusJT + fNFhSzdoExUSATeYuWBrQW4uV2pT022OwhJvVV1j642u7r6Be4NDwyBSAkODd/v7bne2 + t1yvqSxzF5y3mvTqBKmIz2aeNnQ/c6FEodalZdovFCPkzb6unv7B4ZHRsYlJECmBibFf + Hgzd7eu+2dZYW+kpciJ30SrlYgGHGXNqEY2KjmXzRNIETUq6Ldflqaxrbr/VNzg8OvH4 + 15kncyBCAk9mZ6Ymx0aGBno72xprrpTgRNepFRIhNvST91xoCWXzsbUYMuz57vKaRt+t + O4MjE1Mzc/OLS89AhASWFxeePpl+NPbgXm9na0OVx5VnS09JQubiX0RPbFyiGEyOIE6h + 0qVZHRdLr9a3dvYNjkxOzy0sP19dX98AERFYX19bfbY4Pzs1/vBeT0dzbXlxvj0DmYtM + zMMbl9PMuQJk53qzLa+o7FrTjW6EfObp0vO1Fy+3Xm+DiAi83tra3Fh9tjA3NT48cMvX + UFl60WE1JifKxXx2bBDmaNsiTUhKtWQja6lr6eofHp9+ury68Wr7ze7e7yAiAnu7b3e2 + NtdXFuemRu/3djRVe1y5NrRzUcQJ2OgkejLP0VZRKMV2fr6gpKLB1z34y+O5pdUXWzt7 + ++8PDkFEBA4O3u3vbr9aX1mYnXw40NVS63U7s8yIuUTACc5chJgbM3OQnTd29A2Nz8yv + bGy92Xt/ePThI4iIwIejPw72d3c215Z/mxod7G6ru1J8wW5JSYpHzNEGPUiei2RKLVpC + XZ6q5pt3HkzOLq5ubu++Ozz69PkYRETg86ePRwf7b7c2Vuanx+73+uorLhXYLamaeGkY + 5sl+5tXNnf0PH80trb3c2Xt/9PHz8Z8gIgLHx58+HO7vvn6xujAzPtTX3lBR8jdzbsg8 + B+ZEbEMFnYk5eAuRh4QKOoO3wBpKtFKGDqJfQ2GvSLQhDBNEuVdkwJmI6NgTNojyTMRg + wtmf6HwfLoj27A93XETXWGGDaO+44C6X8L42XBjdXS68WRA+S4QNo3uzwO+h8DZH+gQX + Mo7ubQ7eoEnfmcPF0bxBQ60FUTHFN4Loai2gpoioaOgbQbQ1RVA7R1wgFyaQrnYOl0JD + jShhLWioMKoa0QiohSaqdg4fRFcLjZhDzT9BWX/YEPqaf+htIW1gCRNH1duCEx16uIg6 + tUIHUfZwIebYXaBXkaYvMVgsTa9iADr05BK33wYNpOvJjYDec/IO89CRdL3nAegwY4F2 + pMKpeIoZCxF+6P7JFjBLhGJ6yH9DKWeJoNIu7C+IOh5RBDNziAfl/CuQemYOrqfzU4+C + 2VBnngoV+CDFbCh/FSMaIYUnSX0R3QAwiPZP4QqwQyBP9rP4AYf+gz8BOiuB0FzhP0AA + CAABIAAEgAAQ+H4I/AWqp4M5CmVuZHN0cmVhbQplbmRvYmoKNjIgMCBvYmoKMTgwNQpl + bmRvYmoKNDcgMCBvYmoKPDwgL0xlbmd0aCA0OCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1 + YnR5cGUgL0ltYWdlIC9XaWR0aCA2MzYgL0hlaWdodCA2OCAvQ29sb3JTcGFjZQovRGV2 + aWNlR3JheSAvSW50ZXJwb2xhdGUgdHJ1ZSAvQml0c1BlckNvbXBvbmVudCA4IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae2d6VfSaRTHTUlUdkVAlkBQFFyQRHHJ + wixK0xbTskXTKMst07Isy7LNshy1ydE2W62xsm3+wbk/sNNMAnX13cz3vvCF53I853M+ + 3ud5fjy/e2NiECAAAiAAAiAAAiAAAiAAAiAAAiDwfyCwBgECqybA/E+hvxf7PeIQILAS + At8VIqF+ScGQd/S3RKK1CBBYJQGRSBQXJ1j4c/+C5oW0ixeLE0KRiAABJoEldcTi+Hiy + V7SkX5Tqt2Te2rXxpF1iUpJEIpFKpTIECLAJkDikjyQpMSFBTPoFq1+UpVdQL45WWhKP + tJPK5HKFUqlCgMCKCCiVCrlcLpMK/pF+wdoXad8XVI9qnmCeTK5QqZJT1OrUVI1GiwAB + LgGNJlWtTklWqRSCfmRfaOWNIJ9Q9YSiJ5inJO80Wl2aXm8wGk0IEGASMBoNen2aTksG + JpN+kqRvpS+sfEH1aKMnkZJ5JB5ZZzJbLOlWGwIE2ASs1nSLeZ3JoNdp1SkquYxKH627 + dN4Nd95YI+z1xIlU9FQpGp2evLPaMu1Z2Q6H05mDAAEGAafT4XBk2+0ZtnSzyZCmVasU + IfnovBtGPip7pF6CRKZQqbV6k8WaYXc4c/NcLrfbvR4BAiwCJE2BKz83x5GVabOYDLrU + ZKUgn3DgCOteHB0zkoLqGczWzOycPJe7sKjYW1pGUY4AgV8mIBhTWuIt8qwvyM912G0W + YxrJJ5ckioVVd/miu4bKXkKSVK5S6wxmW1ZOvtvjLS2v2OSrrKqq2oIAAQYBUmazz1ex + oczrWe/KdWRaTCQfLbu05QtT+Gi3R2VPQuppDZYMR57bU1K+qXKLf3v1jtq6nQgQYBGo + q62tqfZv3eyrKCte73Lag/LJpVT4IrhHK66S1DNnOFyF3g2+qm01dbvq9zbua0KAAJPA + /saG+t07d2zfWllR6nE5My1GnVolp8InWr7hoyVXKHvJGr3Z5sj3lG3aUl27p6HpUHNL + 69FA4BgCBBgEAoGjbUdaDjU11u+s8fvKiwtIPoM2RRkqfD9u+NbE0vMVKns6kzUrr7DM + 59+xu/FAc2ugvaOru+dULwIEGARO9XR3dZw41tZyaF993fbNG4pcDts6fapQ+GjR/dE9 + 2u4Juz2N3pKZ4/Zu8tfWNx1uO97R3dt/duD8IAIEWATOnxvoP93T2R5oOdCwc3tlWWGe + Pd2oTRHcE4V3T5GiNVmz8z0btpB6LYGOnr6BwaHLw1dHECDAInD1yvDQhXP9pzqPtx5s + qPNv9BZQ4UtT06IbZsMXGxefKFWq08wZOe4SX/XuppZjnb0Dg5evXr85emcMAQIsAndG + b90YGb440Nfd3nqwfkdVWWGu3WLQqGRJ4rXLDht01EiUCUuuPc9TXlXXeDjQeXpg6OqN + 0bHxicn7CBBgEZicGL97++bIpcH+7vYjTbv8G4td2VaTNlkuCeueOEmerDVas13ejdv2 + HGg72TswNHJr7LepB9Ozsw8RIMAgMDv7x/T9ibuj14YH+7sCh/bWVJa6nRnrdMENX5i6 + J5bIabtnc7pLK2samo93k3qj9yYfzDx6MvfsOQIEGASezT19PDs9NX77+uVzvSdb99dV + lXty7Wa9WiEcdH/8RjdWRMdcddq6zNxCWnKbWjv6Bq/cujc1/fDp85ev598gQIBBYP71 + yxdzj2fuj4+ODJ3pDhzc7a8oys+y6OmwEc49esSiUAvbvaIK/66Dge6BS9fHJqcfzb2Y + f7vw7j0CBBgE3i28ffPq2eOZqXs3h8/3tjfXV/u8Lke6IVUli+CektzLyi+m7d7h9t7z + V0bHf38493J+4f3ix08IEGAQ+Lj44d3bV88eTU/cHrnY33GksaayhJ6yGOmgmxC/fM2l + uqdM1VvoqOGrrm85cfrCyO2J6cfPX//5fvHzl68IEGAQ+PL544eFNy+ezEyN3Rg609m6 + r3YzHTZsJnIvMaJ76UH39rac7Lt4bWxy5smL+YXFT1++/oUAAQaBr18+L1Lhm5u9f/fG + 5bNdbftrq8oE97Rwj0ERqSshsCL3sOYyVhakRiKwgjUXZw3GfhqpkQnwzxp4xsJ4jIDU + KASYz1jwbJnx7BSp0Qkwny2L8J0a40sjpEYlwP1ODXcJGF+WIzUqAe5dAtyhYt0SQnI0 + Arw7VLg7yrocieSoBHh3R4X3NXBnnnUxHMkRCTDvzONdIdbbMEiORoD1rhDekWS8AojU + nxDgvSOJd8MZrz4j9ScEuO+G04YPPTGYnR+QHokArycGegGxut0gORoBVi+gGPRAY/T4 + Qmp0ArweaOQeej/+cnNDJEYlwO/9iJ63rLauSI5CgNfzVih86PXN6GeN1MgEmL2+yT1h + 1cWMA3Y3f3wgHAHWjIOQfJjtwhxigvSwBHizXWIw04o7twn5kQnwZlqF5MMsvxUNrsOH + lhHgzPKLCcoXnCSJGabsmZ34wL8JMGeYUh9cYd0l+4SR4ZjdzBxXjPR/EGDPbhaaMAft + i8XM+lXOasfHQwQYM+uDLcBptL0w4X4pSEMECPAJfBOIxvdFGRgeNG7ZD/oEAgRWSWCZ + VvgFCIAACIAACIAACIAACIAACIAACPxHCfwNbZM01QplbmRzdHJlYW0KZW5kb2JqCjQ4 + IDAgb2JqCjE5NDMKZW5kb2JqCjU3IDAgb2JqCjw8IC9MZW5ndGggNTggMCBSIC9UeXBl + IC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGggNDAyIC9IZWlnaHQgNTIwIC9D + b2xvclNwYWNlCi9EZXZpY2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29t + cG9uZW50IDggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7Zn7T5Tn2oU9 + cJ5hmIFhwAEKDscBcToFi4AWCARFoSqKxVYIOmo2FmRrnC3ZqIXPA5F4AAtBjKI1olFL + 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 + jGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOM + YD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xg + PvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+ + /FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78 + VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxU + RvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG + +Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4 + zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjM + caOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxx + o4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGj + jGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOM + YD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xg + PvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+ + /FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78 + VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxU + RvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG + +Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4 + zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjM + caOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxx + o4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGj + jGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOM + YD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xg + PvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+ + /FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78 + VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxU + RvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG + +Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4 + zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjM + caOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxx + o4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGj + jGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOM + YD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xg + PvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+ + /FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78 + VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxU + RvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG + +Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4 + zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjM + caOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxx + o4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGj + jGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOM + YD78VEb4zHGjjGA+/FRG+Mxxo4xgPvxURvjMcaOMYD78VEb4zHGjjGA+/FRG+Mxxo4xg + PvxURvjMcaOMYD78VEb4zHGjjGA+/PS/MrImNsHp8WXnl4ZrGts6IycGR8Ymbt2be7qw + +OrN23fv+b/9/8PG9+/evnm1uPB07t6tm2MjgycinW2NNeHS/Gyfx5kQu2b1qt/MZ4y8 + 19hAABv5jY9Vq/7TSOt3kf4zw1duTM8+fDL/4uVrsyQaOwi8ffP65Yv5Jw9np8evjJzp + j3zX+p87srKRQNCcWq37D/dFz49en7rz4PGvC4tGicYeAq9fLi78+vjBnakboz9F+w7v + t4wEAx9PrZWMpGcFgl9WN+zs6Dl++uylaz/fvj/3ZP754stXrzV2EHj1cvH5/JO5+7d/ + vnbp3OnjPR07G6q/DAay0pfukRWMuNP960tCVfUte7t7T/3zwtjE9N0Hj57OP3+xqLGH + wIvn808fPbg7PTF2YehUb/felvqqUMl6f7rbutmXG3G4vf684lBV3fb2rmMDg8Oj1ydn + Zo2SZ/MLzzV2EFiYf2aEzM5MXh8dHhw41tW+va4qVJzn97odKxtJMUaKyjdtbd71faQv + evbC2PjU7dlf5h4/efpMYweBp08ez/0ye3tqfOzi2Whf5PtdzVs3lRcZIykrGYlJcLi8 + 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 + sRXZFNA8CVgUfYuwSQ48Ps4eVeB3qJjAHLmJ3M0o9x7VERtno1KBVnqNV8ZP47nxxfhl + bBjPgH6sdtd7fP/p4xV117Y+PPmNetw5rr2dG1VhVnFlC93/xzKEj9knOabB06FZWGvY + duQPmsxMsAwoxH8FPpf6khNV3NXu7bhFEsxQPixsJbpLVG4p1Oo9g0qsHCvYAHZwksQs + Why4U2u6OXh32CJ6bflNV7Lrhv769nr72vIebcqoKSgTzbNEZpSxW6Pk3Xjb/WaREZ84 + Or7nvYpayf5JRRA/hTlaKvIUVfRWUNbEb2cOfhu2flw/pef1Qf08CT2tn9Gv6KMRvgx0 + Sc/Cc1Efo0nwsGkh4hKgioMz1E5UY40D4inx8rRbZJH9D0AZ/WYKZW5kc3RyZWFtCmVu + ZG9iago4MiAwIG9iago3MDQKZW5kb2JqCjQzIDAgb2JqClsgL0lDQ0Jhc2VkIDgxIDAg + UiBdCmVuZG9iago4MyAwIG9iago8PCAvTGVuZ3RoIDg0IDAgUiAvTiAzIC9BbHRlcm5h + dGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHVWGVU + VV23Xnuf5ATdeejuBuku6RTpLmkRMEBCQlFKSlFAEVBElBCVEkRCEFDBBlEBRUWQkJC7 + 8R36veOOe//dP3eNsdd5zlzzrL3Oftbac84HANYiz/DwEJgWgNCw6EgbI12Kk7MLBfcS + 4AAPIAEJwOfpHRWuY2VlDv7XtvoMQLuD45K7c/2vbv/zAJ2Pb5Q3AJAVMuzlE+UdiuBb + CF70Do+MBgCuQvDjg9HhCEYhF2CMRBaI4BO72P8fXLaLvf7BDb997Gz0EJ8eAPAkT89I + fwCIjxE7JdbbH5mDuAgAlj7MJzAMAHo0gjW9Azx9AGDVR3wkQkMP7OJwBIt4/Wse/39h + T0+vv3N6evr/xf/8F+SXyI31A6PCQzwP/f7yf9mFhsQgz+t3o0d6UljI3l1u8Mg15+Op + b/YHh4f85uy33TfM3vaPPcxrr+Uf7BdpaPMHh0fr/gtb2f2xxwfo7f2DfaMM/s4T5Glq + 9cceGWNj/wdHxdoa/MHxAXaOf7CPr/5fu1+gockfe2C0yd97BR8w+7sGEAgsgCfwjvaN + 2+Ud6B0IPxQZ6B8QTdFBdpmvBMUkzFtKgiInIyu7O/z/pu2er38Wu2zz+9xAzCP/sUUh + z1RtCDkDY/+xeSQC0OqKbHHl/9j4CQj1kwDc4/eOiYz9Zz5kKwOAAQRAAxgBG+AG/EAE + SAI5oATUgTYwAKbAEtgBZ+AGvEEACAWR4CBIBEkgDWSB06AAlIByUAmugGugEbSAu6AL + PACD4DF4Cl6CKfABfAaLYBVsQhCEg8gQA8QG8UCCkDgkB6lAmpABZA7ZQM6QB+QPhUEx + UCJ0HMqCcqES6CJUA92AbkNdUD80Cj2HpqF5aAnagFEwCWaEuWAhWBpWgXVgM9gO3g/7 + wxFwPJwCn4KL4Ar4KtwMd8GD8FN4Cv4Mr6AAiohiRvGiJFEqKD2UJcoF5YeKRB1BZaIK + URWoelQbqg81jppCLaB+orFoBjQFLYlWRxuj7dHe6Aj0EXQ2ugR9Bd2M7kGPo6fRi+hf + GDKGEyOOUcOYYJww/piDmDRMIeYypgnTi3mK+YBZxWKxzFhhrDLWGOuMDcImYLOx57DX + sZ3YUewMdgWHw7HhxHEaOEucJy4al4Yrxl3FdeDGcB9w63gingcvhzfEu+DD8Mn4Qnwt + vh0/hp/Fb1LRUglSqVFZUvlQHaLKoaqiaqMaofpAtUmgIwgTNAh2hCBCEqGIUE/oJbwi + LBOJRD6iKtGaGEg8RiwiNhAfEqeJP0n0JDGSHsmVFEM6RaomdZKek5bJZLIQWZvsQo4m + nyLXkO+T35DXqRmopahNqH2oj1KXUjdTj1F/paGiEaTRoXGjiacppLlJM0KzQEtFK0Sr + R+tJe4S2lPY27QTtCh0DnSydJV0oXTZdLV0/3Rw9jl6I3oDehz6FvpL+Pv0MA4qBn0GP + wZvhOEMVQy/DB0YsozCjCWMQYxbjNcZhxkUmeiYFJgemOKZSpntMU8woZiFmE+YQ5hzm + RuZnzBssXCw6LL4sGSz1LGMsa6wcrNqsvqyZrNdZn7JusFHYDNiC2c6wtbC9Zkezi7Fb + sx9kP8/ey77AwcihzuHNkcnRyPGCE+YU47ThTOCs5BziXOHi5jLiCucq5rrPtcDNzK3N + HcSdz93OPc/DwKPJE8iTz9PB84nCRNGhhFCKKD2URV5OXmPeGN6LvMO8m3zCfPZ8yXzX + +V7zE/hV+P348/m7+RcFeAQsBBIF6gReCFIJqggGCJ4V7BNcExIWchRKF2oRmhNmFTYR + jheuE34lQhbREokQqRB5IooVVRENFj0n+lgMFlMUCxArFRsRh8WVxAPFz4mPSmAkVCXC + JCokJiRJkjqSsZJ1ktNSzFLmUslSLVJfpQWkXaTPSPdJ/5JRlAmRqZJ5KUsvayqbLNsm + uyQnJuctVyr3RJ4sbyh/VL5V/ruCuIKvwnmFSUUGRQvFdMVuxW0lZaVIpXqleWUBZQ/l + MuUJFUYVK5VslYeqGFVd1aOqd1V/qimpRas1qn1Tl1QPVq9Vn9sjvMd3T9WeGQ0+DU+N + ixpTmhRND80LmlNavFqeWhVa77T5tX20L2vP6ojqBOlc1fmqK6Mbqduku6anpndYr1Mf + pW+kn6k/bEBvYG9QYvDGkM/Q37DOcNFI0SjBqNMYY2xmfMZ4woTLxNukxmTRVNn0sGmP + GcnM1qzE7J25mHmkeZsFbGFqkWfxaq/g3rC9LZbA0sQyz/K1lbBVhNUda6y1lXWp9Ucb + WZtEmz5bBlt321rbVTtduxy7l/Yi9jH23Q40Dq4ONQ5rjvqOuY5TTtJOh50GndmdA51b + XXAuDi6XXVb2Gewr2PfBVdE1zfXZfuH9cfv73djdQtzuudO4e7rf9MB4OHrUemx5WnpW + eK54mXiVeS1663mf9f7so+2T7zPvq+Gb6zvrp+GX6zfnr+Gf5z8foBVQGLAQqBdYEvg9 + yDioPGgt2DK4OngnxDHkeig+1CP0dhh9WHBYzwHuA3EHRsPFw9PCpyLUIgoiFiPNIi9H + QVH7o1qjGZFEZihGJCY1ZjpWM7Y0dv2gw8GbcXRxYXFDh8QOZRyajTeMv5SATvBO6E7k + TUxKnD6sc/jiEeiI15Huo/xHU45+OGZ07EoSISk46VGyTHJu8o/jjsfbUrhSjqXMpBql + 1qVRp0WmTaSrp5efQJ8IPDGcIZ9RnPEr0ydzIEsmqzBrK9s7e+Ck7Mmikzun/E4N5yjl + nD+NPR12+tkZrTNXculy43Nn8izymvMp+Zn5PwrcC/oLFQrLzxLOxpydKjIvai0WKD5d + vFUSUPK0VLf0ehlnWUbZ2jmfc2Pntc/Xl3OVZ5VvXAi8MHnR6GJzhVBFYSW2MrbyY5VD + Vd8llUs1l9kvZ13erg6rnrpic6WnRrmmppazNqcOroupm7/qevXxNf1rrfWS9RevM1/P + agANMQ2fbnjceNZo1th9U+Vm/S3BW2VNDE2ZzVDzoebFloCWqVbn1tHbpre729Tbmu5I + 3am+y3u39B7TvZx2QntK+05HfMdKZ3jnQpd/10y3e/fL+073n/RY9wz3mvU+fGD44H6f + Tl/HQ42Hd/vV+m8PqAy0DCoNNg8pDjU9UnzUNKw03DyiPNL6WPVx2+ie0fYxrbGucf3x + B09Mngw+3ft09Jn9s8kJ14mpSZ/Juechz7+/iH2x+fLYK8yrzNe0rwvfcL6peCv69vqU + 0tS9af3poXe2717OeM98fh/1futDykfyx8JZntmaObm5u/OG848/7fv04XP4582FtC90 + X8q+iny99U3729Ci0+KH75Hfd5ayl9mWq38o/OhesVp5sxq6urmWuc62fuWnys++DceN + 2c2DW7itom3R7bZfZr9e7YTu7IR7Rnr+zgVQSA/7+QGwVA0A2RkAhscAEKj/yX9/eyDp + MZK0wwimQ7KCTsgM+gYXoFzQmhgFrCHOF3+ZapqoQSqmhmhCad/T+zB8ZvJmnmb1YXvD + YcHZzM3FE0lp413i5xFQFtQRMhLWE1ETVRQTEeeWoJNES65JzUm/kBmS7ZBrlK9UyFVM + VgpX3q9irKqoxq2OVf+6Z0KjU7NWq0Q7RydTN0MvSz/HINcwzyjfuMCkwDTf7Iz5KYus + vScsU62OWx+3SbE9bpdin+KQ7JjkdNQ5wSVuX5Rr2P5ANx93bw9fz2CvGO8kn1O+pX7V + /jcD2gMfBo0GvwiZCV0IWw1HRdBHCkapRlvF+McePngmrvpQW/xwwnTi0hHUUdpj7EmU + ZP7jfCmUVM401nTGEzQZhEx05nbWava3k3OnpnNenZ488zR3PG8sf6xgtHDk7KOigeKH + JT2lnWV3z7Webyq/daHlYnvFw8onVe8ufbu8fYVQw1zLXyd1VfWafv3e604NHjf8G0Nv + Rt462JTQfKQlqTXldnpbxp2suyfvnWrP6cjtLOgq6S6/X9VT21v/4EZf08PW/jsD9wbb + hzofdQ13jXQ8vjPaNHZ1vOLJ2afZz5ImYieDnu9/Yf1S/5Xya7E3nG/Jb39NfZl+8a53 + 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 + 8ZE8J/RJZ8H9a9LipaVHP9bXhH46bWZv9+zyH+UnL7cbPQBE0kXkxzc7O8tCAOByAdh9 + P2xW7OxsVyLFxisAOkP+0dZ3nbG0AJQhcQaAB/Ezx3Y//93+Cw9iRH4KZW5kc3RyZWFt + CmVuZG9iago4NCAwIG9iago1NzA4CmVuZG9iago0NiAwIG9iagpbIC9JQ0NCYXNlZCA4 + MyAwIFIgXQplbmRvYmoKODUgMCBvYmoKPDwgL0xlbmd0aCA4NiAwIFIgL04gMyAvQWx0 + ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB + hVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXUNv0RYmsM2x+2RZBkM0nWbjbr7ia1pYjk + 4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct8c1uTLal6sDOfvPeN+99b3bfAA1y0jT1 + gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4kBkGDc/l759h6D4FbVsN7+3eyd62a0raa + B4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j2PLsjzlOeXjBtQ8rPcRZInxANS3Of024 + U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9T5Cmu8zuq2KhnE72DpC9nfR+TrPePsIh + wgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19PhgFbcaqfg1whRfEE0nolRx2S4N8Ziu/Vby + SoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3VlHheY8TZ97U3e9F2gKvMA4dDBoMmg1I + UBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRqu3RiRLFBezbcPbdRpN08/igicZRDtQiS + /EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZuRoe19PI43NNXnyV1HaTV0eWrHl6vJrs + Gj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz6kuEdVoxN9+fbH87PeIuzy611nOtiYs3 + VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikxJnaK5yGJl8Uu8ZLYS6sL4mBtxwidlYYp + 0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJUifd/wipkNJ25Dm/6j9vH/Bfk94rnnygC + L2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmujfjj8BFg8qxatUjWfILwBHHaHeh7oKZjT + lpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxazmVVi6XbYmdMdbhyhOUL3xKdKZZP6r/ER + sP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0cmVhbQplbmRvYmoKODYgMCBvYmoKNzM3 + CmVuZG9iago4IDAgb2JqClsgL0lDQ0Jhc2VkIDg1IDAgUiBdCmVuZG9iago0IDAgb2Jq + Cjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvQ291bnQgMSAv + S2lkcyBbIDMgMCBSIF0gPj4KZW5kb2JqCjg3IDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9n + IC9PdXRsaW5lcyAyIDAgUiAvUGFnZXMgNCAwIFIgL1ZlcnNpb24gLzEuNCA+PgplbmRv + YmoKMiAwIG9iago8PCAvTGFzdCA4OCAwIFIgL0ZpcnN0IDg5IDAgUiA+PgplbmRvYmoK + ODkgMCBvYmoKPDwgL1BhcmVudCA5MCAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAv + WFlaIDAgODE4IDAgXSAvVGl0bGUgKENhbnZhcyAxKQo+PgplbmRvYmoKOTAgMCBvYmoK + PDwgPj4KZW5kb2JqCjg4IDAgb2JqCjw8IC9QYXJlbnQgOTAgMCBSIC9Db3VudCAwIC9E + ZXN0IFsgMyAwIFIgL1hZWiAwIDgxOCAwIF0gL1RpdGxlIChDYW52YXMgMSkKPj4KZW5k + b2JqCjkxIDAgb2JqCjw8IC9MZW5ndGggOTIgMCBSIC9MZW5ndGgxIDE1MTU2IC9GaWx0 + ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ad17eXyU1dX/vfdZZ83s+2RmMpmZTPaF + hIQEMoRsLEF2EiSYAIGAooAhiBXeqCgSEUVWgaqoZRUzhAgBxFKNAmoVlEVxqa1o7ZLa + t79oLZCZ99xnQoTU9uMf/fSP38ycuz7Lveeee873nOeZpsVLGpAKtSAGjZtWv3AOkj6D + TyDENM1aUL8wVtfPRghvmtXc5I7VuSTov2POwrkLYnVxA0Jy59w7lvWdb6xGyHOqsaEe + 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 + 7/CMHF8z9ZbylMqGO5obmubNqoeeWC89BFxw+r4AOgd0GagHOlkgA1AiEDxjwaVAk4Bm + AzUBrQTaAPQCUAdQF9A5oMtAPbCZWSADUCLQIKBSoElAs4GagFYCbQB6AagDqAvoHNBl + oB5gDAtkAEoEGgRUCjQJaHa07wPjRP1lDNy7uU7fOLqxn0ZibqynD6hnDqhnDagPHVAv + HlAvH1AHp+2m+1UNqN8yoD5uQH3igDrM/abrTRlQv21Ana7wjfOdOaA+a0B99oC6JLM3 + 8HfOgP65A+qNA+rzBtTnD6jfPqBO/9dx43gXDKjTyMeN/XcNqC8cUF80oL54QB3e4rvp + ek0D6ksG1JsH1JcOqC8bUP/ZzfWr0m77P0gnWYIKZW5kc3RyZWFtCmVuZG9iago5MiAw + IG9iago5OTk5CmVuZG9iago5MyAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3Ig + L0FzY2VudCA3NzAgL0NhcEhlaWdodCA3MzcgL0Rlc2NlbnQgLTIzMCAvRmxhZ3MgMzIK + L0ZvbnRCQm94IFstOTUxIC00ODEgMTQ0NSAxMTIyXSAvRm9udE5hbWUgL0lRWVdPRitI + ZWx2ZXRpY2EgL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDAgL01heFdpZHRoIDE1MDAgL1hI + ZWlnaHQgNjM3IC9Gb250RmlsZTIgOTEgMCBSID4+CmVuZG9iago5NCAwIG9iagpbIDI3 + OCAwIDAgMCAwIDAgMCAwIDAgMzMzIDAgMCAwIDMzMyAyNzggMCA1NTYgNTU2IDAgMCAw + IDAgMCAwIDAgMCAwIDAgMCA1ODQKMCA1NTYgMCAwIDAgMCAwIDAgNjExIDAgMCAyNzgg + MCAwIDAgODMzIDAgNzc4IDY2NyAwIDAgNjY3IDYxMSAwIDY2NyAwIDAgMAowIDAgMCAw + IDAgNTU2IDAgNTU2IDU1NiA1MDAgNTU2IDU1NiAyNzggNTU2IDU1NiAyMjIgMjIyIDUw + MCAyMjIgODMzIDU1NiA1NTYKNTU2IDU1NiAzMzMgNTAwIDI3OCA1NTYgNTAwIDcyMiAw + IDUwMCAwIDMzNCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDAg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAw + IDAgNTAwIF0KZW5kb2JqCjQ0IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9U + cnVlVHlwZSAvQmFzZUZvbnQgL0lRWVdPRitIZWx2ZXRpY2EgL0ZvbnREZXNjcmlwdG9y + CjkzIDAgUiAvV2lkdGhzIDk0IDAgUiAvRmlyc3RDaGFyIDMyIC9MYXN0Q2hhciAyMjIg + L0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nCj4+CmVuZG9iago5NSAwIG9iago8PCAv + TGVuZ3RoIDk2IDAgUiAvTGVuZ3RoMSAxMTM1NiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+ + PgpzdHJlYW0KeAHdent8U1W28NrnkZNHmyZp3m2apEmaNn239F3atLSlpQ2UlkKLrbZA + uYUBLYogMDgIKFBw1BkFRe5FR+aq+JhQHAgycrlM5/pAvk8FBwdRdAYQBzvMeKsMQk6+ + tU9Khf78zef3+/zNH/ecrLOfZ++111p7PfbJ0jvv7oVYWAMsNM/u6Z8P0uVLBWAmzF3c + 0x8tx9cAkK1zly11RMs8trMPzO//l8XRsjwIoHT/y6IVo+8bzAD6LX29PfOi7XAN08I+ + rIiWyQRM3X2Ll94TLetOYNq/6I65o+3601guXdxzz+j8QMuO23sW90b7+2iS2n/HXUuj + 5bRdmHb239k72p+0I37/GwjWJsJCUMAikAMDGrw7AYQLSjdw2ErbEaoy2566La78K9DK + peF+4c1aQzP/5fzNlcunr3lV9yrqsJ9C6k8b8B1ZmpgGEEOw/UPVvWMttJVeiSFoSQ9B + PUIFwgQEX/oeuf9V8jDou0b8CmLnQGX/wPKXQyQL6X9eegZJlj8mFhRz15Xb565bV59W + pSCNUMQRsJNacEtpzaD7BXuIVAy6XZhMjCbMYJENS+BXFLnt4aI59mtFITnxJ9j/7v65 + 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 + OxUb9JcE6jJR1DzkaaP3zp8V4md68SLnME5aPePLGdnkC646fEdXdusy/wJm+tVD2/m8 + +PKMl7sPMo/YkHZ4BoenU/iZl7D+bXJUI4zAxXNWJR6cuLkUmU9ZyJUoa7kGZRvXoXyM + e0L5FPcr5SvcfuGgcoh7S/ke96HyHHeZM3GsmeNZr45hCMebOZb36tD9VCrMSpXCq8Nj + IKXKrFSovDqck3CCkgMZzzIyFR7dKBUCL1OxRKnkGBn+/ygWmSV/HiwxvTGxz0e5NBqw + RWO1QLZ5SDOE8oiBDQ3saWRPz3AwesPgVbMhXb4ao7eVHZrfmTX8hvTV8htLY238Bo35 + 257UTVhCuvIVxJlAnPhUEStZKu4gXfsGSau4HfP/+pvXmFTGLA6R8vBw+DiZLKIyoGex + 3Cz+XcwJqNkW+quamCY2oO5kOtkutUxlV7uVdgdh92A3md7SmaCTGQVlMq6QtxOvAPoB + pVHrNdkTf0Y1Hq521K8aQak8cfbj8vDZqOaQwlM83EPldzaM0hl1amgMg3rEQPWIzGSg + wurUugryaaSWz5YREw1ixLNiuNCmT0mYlMQcPCie3bkjUHuCPypeG7j6W/5djrlAyJRp + +jevPcLe8Wbdy23NUf1CnxCh/1b5roueQLNo3XMgD/KhAG0//edNLdThv1zq8R84TegD + TENrPx1aoBX/RTMTZuF/X27Bf2LQi6DvQKScjJ4JT50+ZcakmvT63kXLepcumNuTWX3H + onm01/WL/mdzPcKjCDQSeQVhCIGGiGcRRrAzh6BHcCNMQKhBmIEwD2EpwnqERxF2IbyC + MIRwAuEswggqVA5Bj+COjF44LozlCfL25nLpuHJgXHnauLJE1hvGaxnX3jquPHNcuWdc + ec648txx5XnjyhIfb5i/b1z7gnHlhePKi8aVpf/h3jDe7ePa7xhX7h9XvnNc+a5x5aXj + ynePK1OZuIE/VyVp+T/80K8yCmVuZHN0cmVhbQplbmRvYmoKOTYgMCBvYmoKNzI1MQpl + bmRvYmoKOTcgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9Bc2NlbnQgNzcw + IC9DYXBIZWlnaHQgNzQxIC9EZXNjZW50IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJveCBb + LTEwMTggLTQ4MSAxNDM2IDExNTldIC9Gb250TmFtZSAvTlFKVENEK0hlbHZldGljYS1C + b2xkIC9JdGFsaWNBbmdsZQowIC9TdGVtViAwIC9NYXhXaWR0aCAxNTAwIC9YSGVpZ2h0 + IDU0OSAvRm9udEZpbGUyIDk1IDAgUiA+PgplbmRvYmoKOTggMCBvYmoKWyAyNzggMCAw + IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAzMzMg + MCAwIDAgMCAwIDAgMAowIDAgMCAwIDAgMCAwIDAgMCAwIDAgODMzIDAgNzc4IDY2NyAw + IDcyMiA2NjcgMCAwIDY2NyAwIDAgMCAwIDAgMCAwIDAgMCAwCjU1NiA2MTEgNTU2IDYx + MSA1NTYgMCAwIDYxMSAyNzggMjc4IDAgMjc4IDg4OSA2MTEgNjExIDYxMSAwIDM4OSA1 + NTYgMzMzIDYxMQowIDAgNTU2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCjAgMCAwIDAgMCAwIDAgMCAw + IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMCAwIDAgMCAwIDAgMCA2MTEgXQplbmRvYmoKNDUgMCBvYmoKPDwgL1R5cGUgL0Zv + bnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvTlFKVENEK0hlbHZldGljYS1C + b2xkIC9Gb250RGVzY3JpcHRvcgo5NyAwIFIgL1dpZHRocyA5OCAwIFIgL0ZpcnN0Q2hh + ciAzMiAvTGFzdENoYXIgMjIyIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+Pgpl + bmRvYmoKOTkgMCBvYmoKKE1hYyBPUyBYIDEwLjYuOCBRdWFydHogUERGQ29udGV4dCkK + ZW5kb2JqCjEwMCAwIG9iagooRDoyMDExMDkyNjEwMTcyOFowMCcwMCcpCmVuZG9iagox + IDAgb2JqCjw8IC9Qcm9kdWNlciA5OSAwIFIgL0NyZWF0aW9uRGF0ZSAxMDAgMCBSIC9N + b2REYXRlIDEwMCAwIFIgPj4KZW5kb2JqCnhyZWYKMCAxMDEKMDAwMDAwMDAwMCA2NTUz + NSBmIAowMDAwMTAwNTcxIDAwMDAwIG4gCjAwMDAwODA5OTEgMDAwMDAgbiAKMDAwMDAw + NDQ0MCAwMDAwMCBuIAowMDAwMDgwODI4IDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAg + biAKMDAwMDAwNDQyMCAwMDAwMCBuIAowMDAwMDA0NTQ0IDAwMDAwIG4gCjAwMDAwODA3 + OTIgMDAwMDAgbiAKMDAwMDAxMzY0NCAwMDAwMCBuIAowMDAwMDE1MDAxIDAwMDAwIG4g + CjAwMDAwMTY4MTQgMDAwMDAgbiAKMDAwMDAyMDIzNSAwMDAwMCBuIAowMDAwMDEyNDA3 + IDAwMDAwIG4gCjAwMDAwMTMwMjkgMDAwMDAgbiAKMDAwMDAyMjA5MyAwMDAwMCBuIAow + MDAwMDIzMjEyIDAwMDAwIG4gCjAwMDAwMjE0MTUgMDAwMDAgbiAKMDAwMDAyMjA3MyAw + MDAwMCBuIAowMDAwMDE1MDIyIDAwMDAwIG4gCjAwMDAwMTU1NjMgMDAwMDAgbiAKMDAw + MDAwOTQwNyAwMDAwMCBuIAowMDAwMDEyMzg2IDAwMDAwIG4gCjAwMDAwMDc3MzIgMDAw + MDAgbiAKMDAwMDAwOTM4NiAwMDAwMCBuIAowMDAwMDA3MTg4IDAwMDAwIG4gCjAwMDAw + MDc3MTIgMDAwMDAgbiAKMDAwMDAxMzA0OSAwMDAwMCBuIAowMDAwMDEzNjI0IDAwMDAw + IG4gCjAwMDAwMTU1ODMgMDAwMDAgbiAKMDAwMDAxNjE3NyAwMDAwMCBuIAowMDAwMDA0 + OTE4IDAwMDAwIG4gCjAwMDAwMDU3MjcgMDAwMDAgbiAKMDAwMDAwNTc0NyAwMDAwMCBu + IAowMDAwMDA2NTkwIDAwMDAwIG4gCjAwMDAwMjAyNTYgMDAwMDAgbiAKMDAwMDAyMDc5 + NyAwMDAwMCBuIAowMDAwMDA2NjEwIDAwMDAwIG4gCjAwMDAwMDcxNjggMDAwMDAgbiAK + MDAwMDAyMDgxNyAwMDAwMCBuIAowMDAwMDIxMzk1IDAwMDAwIG4gCjAwMDAwMTYxOTcg + MDAwMDAgbiAKMDAwMDAxNjc5NCAwMDAwMCBuIAowMDAwMDc0MDI2IDAwMDAwIG4gCjAw + MDAwOTIwNzEgMDAwMDAgbiAKMDAwMDEwMDI5NiAwMDAwMCBuIAowMDAwMDc5ODk1IDAw + MDAwIG4gCjAwMDAwNjUyMzUgMDAwMDAgbiAKMDAwMDA2NzM2OSAwMDAwMCBuIAowMDAw + MDU0NTI2IDAwMDAwIG4gCjAwMDAwNTY4MjggMDAwMDAgbiAKMDAwMDAyMzIzMiAwMDAw + MCBuIAowMDAwMDI1MjU0IDAwMDAwIG4gCjAwMDAwNTg5OTAgMDAwMDAgbiAKMDAwMDA2 + MDg2MSAwMDAwMCBuIAowMDAwMDI1Mjc1IDAwMDAwIG4gCjAwMDAwMjk3NjYgMDAwMDAg + biAKMDAwMDA2NzM5MCAwMDAwMCBuIAowMDAwMDczMTc3IDAwMDAwIG4gCjAwMDAwNTY4 + NDkgMDAwMDAgbiAKMDAwMDA1ODk2OSAwMDAwMCBuIAowMDAwMDYzMjE4IDAwMDAwIG4g + CjAwMDAwNjUyMTQgMDAwMDAgbiAKMDAwMDAzNjA5MCAwMDAwMCBuIAowMDAwMDQwMjc4 + IDAwMDAwIG4gCjAwMDAwNTI0OTggMDAwMDAgbiAKMDAwMDA1NDUwNSAwMDAwMCBuIAow + MDAwMDMzOTI3IDAwMDAwIG4gCjAwMDAwMzYwNjkgMDAwMDAgbiAKMDAwMDAyOTc4NyAw + MDAwMCBuIAowMDAwMDMxOTA5IDAwMDAwIG4gCjAwMDAwNDAyOTkgMDAwMDAgbiAKMDAw + MDA0NjUwMyAwMDAwMCBuIAowMDAwMDUwNTkzIDAwMDAwIG4gCjAwMDAwNTI0NzcgMDAw + MDAgbiAKMDAwMDAzMTkzMCAwMDAwMCBuIAowMDAwMDMzOTA2IDAwMDAwIG4gCjAwMDAw + NjA4ODIgMDAwMDAgbiAKMDAwMDA2MzE5NyAwMDAwMCBuIAowMDAwMDQ2NTI0IDAwMDAw + IG4gCjAwMDAwNTA1NzIgMDAwMDAgbiAKMDAwMDA3MzE5OCAwMDAwMCBuIAowMDAwMDc0 + MDA2IDAwMDAwIG4gCjAwMDAwNzQwNjMgMDAwMDAgbiAKMDAwMDA3OTg3NCAwMDAwMCBu + IAowMDAwMDc5OTMyIDAwMDAwIG4gCjAwMDAwODA3NzIgMDAwMDAgbiAKMDAwMDA4MDkx + MSAwMDAwMCBuIAowMDAwMDgxMTU0IDAwMDAwIG4gCjAwMDAwODEwMzkgMDAwMDAgbiAK + MDAwMDA4MTEzMiAwMDAwMCBuIAowMDAwMDgxMjQ3IDAwMDAwIG4gCjAwMDAwOTEzMzcg + MDAwMDAgbiAKMDAwMDA5MTM1OCAwMDAwMCBuIAowMDAwMDkxNTgzIDAwMDAwIG4gCjAw + MDAwOTIyNDYgMDAwMDAgbiAKMDAwMDA5OTU4OCAwMDAwMCBuIAowMDAwMDk5NjA5IDAw + MDAwIG4gCjAwMDAwOTk4NDAgMDAwMDAgbiAKMDAwMDEwMDQ3NiAwMDAwMCBuIAowMDAw + MTAwNTI4IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgMTAxIC9Sb290IDg3IDAgUiAv + SW5mbyAxIDAgUiAvSUQgWyA8NDU0MjAwYTdlOWQ3YmNjZTNjYzQ0MDg5YjVlOGNlNGM+ + Cjw0NTQyMDBhN2U5ZDdiY2NlM2NjNDQwODliNWU4Y2U0Yz4gXSA+PgpzdGFydHhyZWYK + MTAwNjQ4CiUlRU9GCjEgMCBvYmoKPDwvQXV0aG9yIChHdXN0YWYgQS4gTmV1bWFubikv + Q3JlYXRpb25EYXRlIChEOjIwMTAwMTI5MDk0ODAwWikvQ3JlYXRvciAoT21uaUdyYWZm + bGUgUHJvZmVzc2lvbmFsIDUuMi4zKS9Nb2REYXRlIChEOjIwMTEwOTI2MTAxNzAwWikv + UHJvZHVjZXIgOTkgMCBSIC9UaXRsZSAoc2xvdHMuZ3JhZmZsZSk+PgplbmRvYmoKeHJl + ZgoxIDEKMDAwMDEwMjgyOSAwMDAwMCBuIAp0cmFpbGVyCjw8L0lEIFs8NDU0MjAwYTdl + OWQ3YmNjZTNjYzQ0MDg5YjVlOGNlNGM+IDw0NTQyMDBhN2U5ZDdiY2NlM2NjNDQwODli + NWU4Y2U0Yz5dIC9JbmZvIDEgMCBSIC9QcmV2IDEwMDY0OCAvUm9vdCA4NyAwIFIgL1Np + emUgMTAxPj4Kc3RhcnR4cmVmCjEwMzAxNwolJUVPRgo= + + QuickLookThumbnail + + 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 + AADocHRQVAAAAAgAAADoemhDTgAAAAgAAADoZXNFUwAAAAgAAADoamFKUAAAAAgAAADo + cnVSVQAAAAgAAADoc3ZTRQAAAAgAAADoemhUVwAAAAgAAADoZGVERQAAAAgAAADoZmlG + SQAAAAgAAADoaXRJVAAAAAgAAADoa29LUgAAAAgAAADoAGkATQBhAGN0ZXh0AAAAAENv + cHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAA + AAAAAPNSAAEAAAABFs9YWVogAAAAAAAAc1AAADrMAAAB0lhZWiAAAAAAAABgfAAAuFwA + ABQ3WFlaIAAAAAAAACMKAAAM2AAAvSNjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAj + ACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8A + owCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQEr + ATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB + 6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLV + AuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kE + BgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn + BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcH + GQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7 + CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyIL + OQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2p + DcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQ + fhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxOD + E6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW + +hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqe + GsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQe + vh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMK + IzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn + 3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizX + LQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioy + YzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgU + OFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+ + YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTO + RRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL + 4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MT + U19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa + 9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLw + Y0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09r + p2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRw + dMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+ + AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4ef + iASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiS + EZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJ + nPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n + 4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4 + s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/ + er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2 + zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY + 6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN + 5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0 + NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAA + AAMAAAACZmYAAPKnAAANWQAAE9AAAAoOdmNndAAAAAAAAAAAAAMBAAACAAAAEQBPAMAB + SwHvApUDWgQ+BTQGRgdlCKYJ4Qs9DJkOAQ9tEOQSZBPrFWMW4RhkGd4bTRy2Hh0fciC6 + IfIjHyQ3JUEmRydDKDopNSooKx4sES0ELfcu6C/aMMwxvzKyM6M0kjWCNnA3XThIOTU6 + HjsGO+481z3APqo/mkCPQYpCiUOLRI9FkkaTR5RIlUmVSpRLkUyOTYtOiE+FUINRg1KE + U4NUhFWEVoJXgVh/WXtaeFtzXG5daV5kX2NgZWFrYnVjgWSOZZtmp2ezaL5pyGrRa9ps + 423sbvZwA3ESciVzOXRQdWd2fXeReKd5unrOe+F88n4DfxCAGoEggiODIoQghRyGGIcU + iA+JCooEiv2L9ozvjeiO4Y/ckNiR1ZLTk9KU0pXRls+XzZjKmciaxJvAnLyduJ61n7Sg + t6G+osij1KTipe+m/agKqRaqI6surDmtRK5Or1iwYLFnsm2zcrR3tXu2freBuIS5h7qJ + u4u8jb2Ovo+/ksCVwZrCn8OkxKrFrsaxx7XIuMm7yr3LvszAzcHOwc+/0LvRtdKs06LU + l9WM1oHXdthq2V3aUdtE3DfdKt4c3w3f/uDt4drixeOx5JvlheZv51noQukr6hTq/evm + 7M3tte6d74XwbvFY8kLzLfQZ9QX18Pbc98b4sfmc+ob7cPxa/UP+Lf8W//8AAAARAE8A + wAFCAdEChwNSBCUFGgYuB0gIbgmzCwIMYg2+DyYQkxIKE4kVBBZ7F/oZZhrZHD4dmB7r + IDQhaCKPI6kktSW4JrcnsSioKZ8qliuLLH4tcS5iL1UwRzE7Mi0zHzQRNQE18jbhN9A4 + vjmqOpY7gDxrPVU+Pz8qQBpBDkIEQv1D9kTvRehG4UfYSM5JxEq4S6xMoE2SToZPeVBw + UWlSZlNjVGJVX1ZdV1pYVVlRWktbRVw+XTdeMV8rYChhJ2IoYypkLGUvZjBnMWgxaTFq + MGsvbC1tLG4sby5wNXFBclFzZHR6dY92pXe5eM554Xr1fAd9GX4pfzeAQ4FKgk+DUIRQ + hU+GTodMiEmJRopCiz+MOo02jjGPLZAqkSiSKJMnlCeVJ5YmlyWYJJkimiCbHZwanRae + E58RoBKhFKIYox+kJ6UvpjanPahEqUuqUqtXrF2tYq5nr26wdrF/somzlbShta22ubfE + uM+52rrju+28974AvwjAD8EWwhzDIcQlxSnGLccwyDPJNco3yznMO808zj3PPtBA0ULS + RdNI1EvVT9ZS11TYV9lZ2lvbXNxe3V7eXd9a4FPhSOI44yXkEOT55eLmyuey6Jrpgepo + 60/sNu0d7gPu6+/U8MHxsPKi85b0jPWB9nb3a/hg+VX6Svs+/DH9Jf4Z/wz//wAAABEA + TwDAAUIB0QJ4AzgECwUABgAHHwhSCYgKzAwpDYEO5hBTEc0TQBSzFiwXpBkYGoob8B1R + Hqcf7yEwIl8jfySVJaQmriexKLMptSq1K7Ussi2vLq4vrDCoMaQyoDObNJc1kjaKN4M4 + fDlyOmY7WjxNPUA+ND8qQCNBHkIcQx1EHUUgRiBHIEgeSR1KGUsWTBBNDE4HTwJP/1D8 + UftS+lP8VPxV/Fb7V/lY9lnyWu5b6VzkXd9e21/YYNZh12LZY91k4WXjZuVn52joaelq + 6WvobOdt527ob+1w9nICcxJ0JHU2dkl3W3hteXx6jHucfKp9t37Cf8mAy4HJgsSDu4Sy + haeGnIeQiIWJeIpri12MT41BjjOPJ5AckRSSDZMJlAaVA5YAlv2X+Zj1mfCa65vlnOCd + 2p7Tn8+gzKHKosqjy6TMpc6mzqfPqM+pz6rNq82sy63KrsmvybDKsc2y0bPVtNq137bj + t+e46rntuvC78rz0vfW+97/3wPfB+ML4w/jE+MX3xvbH9cjzyfHK78vtzOrN5s7jz+DQ + 3NHY0tPTztTI1cLWvNe12K7Zp9qf25jcj92H3n3fc+Bn4VniSeM45CblE+YA5uzn2OjE + 6bDqm+uG7HHtXO5H7zTwI/EX8g/zC/QK9Qr2CvcK+Ar5CfoI+wf8Bv0F/gP/Af//AABu + ZGluAAAAAAAABjYAAKZFAABVtQAATMwAAJ5IAAAk8AAADQ4AAFANAABUOQACI9cAAgKP + AAH9cAADAQAAAgAAAAUADAAVAB4AKAAyAD0ASABTAGAAbAB5AIcAlQCkALMAwwDTAOQA + 9QEIARsBLwFDAVkBbwGHAaABugHVAfICEQIyAlYCfAKmAtQDBAM4A28DpwPjBCAEYASi + BOYFLQV1BcAGDAZbBq0HAQdYB7EIDghsCM4JMwmaCgMKbwrbC0cLsgwdDIkM9g1lDdcO + Sw7BDzoPtRAzELQRNhG7EkISyxNVE+AUbhT+FZAWJRa8F1YX8xiSGTQZ2RqAGykb0hx7 + HSMdyx50Hx4fyiB5ISoh3SKTI0wkByTEJYQmRScHJ8koiylNKhAq0yuZLGEtLC34Lsgv + mTBtMUQyHTL6M9w0wzWwNqI3mTiUOZI6kzuXPJ09pz60P8RA10HsQwREHUU3RlJHbkiL + SapKzEvxTRlORE9yUKNR11MOVEhVgla9V/ZZLFphW5Vcyl4BXzpgdmG1YvZkOmWBZsto + F2lnarpsEW1sbspwLHGRcvl0ZHXSd0N4t3oue6d9JH6kgCWBqIMrhK+GNYe9iUiK14xp + jf6PlpExks+UcZYVl72ZaZsbnNSek6BZoiSj9KXGp5ypdqtTrTOvF7D/sum02LbLuMO6 + wrzHvtPA48L4xRHHLclNy3HNmc/F0fTUKNZf2Jna1t0U31LhkuPT5hfoX+qq7PrvTfGk + 8//2XvjA+yf9kf//AAAABQANABUAHwApADMAPgBKAFYAYgBvAHwAigCZAKgAuADIANkA + 6gD8AQ8BIwE3AUwBYwF6AZIBrAHHAeQCAgIiAkUCagKTAr4C7gMgA1UDjQPHBAMEQQSC + BMUFCwVSBZwF5wY1BoUG1wcsB4MH3Qg5CJgI+glfCcYKMAqcCwoLeAvmDFYMxg05Da4O + JQ6fDxwPmxAdEKIRKRG0EkASzxNeE+4UfhUQFaMWORbRF2wYChiqGU0Z8xqbG0Yb8xyh + HVAd/x6wH2IgFiDMIYYiQSMAI8EkhSVLJhQm3yerKHcpQSoKKtIrmixiLSwt+C7HL5gw + azFBMhky9DPRNLI1lzaAN284YzlcOlg7WDxaPWA+aD90QIJBk0KnQ75E10XyRw1IKklI + SmlLi0yxTdlPBFAyUWNSl1POVQhWRVeDWMFZ/1s9XHpduF73YDlhfmLFZA9lXGarZ/5p + U2qrbAVtX267cBZxc3LQdC91kXb1eFx5xnsyfKJ+FH+JgQGCfYP7hX2HA4iNihqLqo09 + jtSQbZIJk6mVS5bxmJmaRZvznaOfVaEIor2kdKYtp+mpqatrrTCu+LDEspK0ZLY7uBe5 + /Lvsvei/8cIDxBzGOshcyoHMq87Y0QrTP9V417TZ8twt3mTgluLF5PLnIOlS64btv+/6 + 8jn0fPbD+Q37Wv2r//8AAAAFAA0AFgAgACoANQBAAEsAWABkAHIAfwCOAJwArAC8AMwA + 3QDvAQIBFQEpAT4BUwFqAYEBmgG0Ac8B7AIKAisCTQJyApoCxQLzAyMDVgOMA8MD/QQ4 + BHYEtgT4BTsFgQXJBhMGXwatBv0HUAelB/wIVgizCRIJdAnYCj4KpQsNC3YL4AxLDLgN + Jg2YDgsOgg76D3YP8xB0EPYRexICEooTFBOfFCwUuhVLFd8WdRcOF6oYSBjpGY0aMxrb + G4QcLxzbHYceNR7kH5YgSyECIbwieCM3I/kkviWEJkwnFSfcKKMpaSovKvYrvyyKLVcu + Jy76L88wpjGAMl4zPjQkNRA2Azb7N/o4/DoCOws8GD0nPjo/UEBpQYVCpEPFROdGCEcq + SEtJbUqQS7dM4E4MTztQbVGiUtpUFVVTVpRX1lkYWltbnlziXihfcGC8YgpjXGSwZghn + Ymi/ah9rgWzkbkhvrHEQcndz33VKdrh4KXmdexR8jn4Lf4uBDoKUhB2Fqoc5iMqKX4v2 + jZGPLpDPknOUGpXEl3GZIZrVnIueRKABocGjhaVMpxeo5Kq2rIquYrA9shyz/bXjt8y5 + urutvae/qMGxw7/F0cfoygPMIc5D0GnSk9TA1vHZJdta3YvftuHY4/TmDegm6kHsX+6B + 8KXyzfT49yb5WPuM/cT//wAAc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L/ + //2jAAAD3AAAwGxtbW9kAAAAAAAABhAAAJy1AAAAAMZ644AAAAAAAAAAAAAAAAAAAAAA + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{930, 212}, {1021, 1193}} + ListView + + OutlineWidth + 142 + RightSidebar + + Sidebar + + SidebarWidth + 138 + VisibleRegion + {{-145.023, -120.023}, {862.832, 1059.24}} + Zoom + 1.0233739614486694 + ZoomValues + + + Canvas 1 + 1.0233739614486694 + 1 + + + + saveQuickLookFiles + YES + + Index: doc/next-tutorial/slots.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/stack2.graffle =================================================================== diff -u --- doc/next-tutorial/stack2.graffle (revision 0) +++ doc/next-tutorial/stack2.graffle (revision e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e) @@ -0,0 +1,294 @@ + + + + + CanvasColor + + w + 1 + + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2009-12-29 16:06:59 +0100 + Creator + Gustaf A. Neumann + GraphDocumentVersion + 4 + GraphicsList + + + Bounds + {{221, 179.053}, {136, 112}} + Class + MultiTextGraphic + FitText + Vertical + Flow + Resize + ID + 145 + ListOrientation + Vertical + Style + + fill + + GradientAngle + 304 + GradientCenter + {-0.294118, -0.264706} + + + TextList + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\b\fs24 \cf0 Stack2} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ +} + + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 \ul \ulc0 available-stacks\ulnone \ +init\ +push\ +pop\ +} + + + TextPlacement + 0 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + IsPalette + NO + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + ChildOrdering + 0 + + LinksVisible + NO + MagnetsVisible + NO + ModificationDate + 2011-01-08 18:45:19 +0100 + Modifier + Gustaf A. Neumann + Orientation + 2 + PageBreaks + YES + PageSetup + + BAt0eXBlZHN0cmVhbYED6IQBQISEhAtOU1ByaW50SW5mbwGEhAhOU09iamVjdACFkoSE + hBNOU011dGFibGVEaWN0aW9uYXJ5AISEDE5TRGljdGlvbmFyeQCUhAFpFpKEhIQITlNT + dHJpbmcBlIQBKxBOU0pvYkRpc3Bvc2l0aW9uhpKEmZkPTlNQcmludFNwb29sSm9ihpKE + mZkLTlNQYXBlclNpemWGkoSEhAdOU1ZhbHVlAJSEASqEhAx7X05TU2l6ZT1mZn2cgQJT + gQNKhpKEmZkUTlNWZXJ0aWNhbFBhZ2luYXRpb26GkoSEhAhOU051bWJlcgCdm4SXlwCG + koSZmQ9OU1BhZ2VzUGVyU2hlZXSGkoShm6KXAYaShJmZFE5TVmVydGljYWxseUNlbnRl + cmVkhpKkkoSZmRlOU1ByaW50UmV2ZXJzZU9yaWVudGF0aW9uhpKgkoSZmQ9OU1ByaW50 + QWxsUGFnZXOGkqCShJmZC05TUGFwZXJOYW1lhpKEmZkGaXNvLWE0hpKEmZkITlNDb3Bp + ZXOGkqSShJmZD05TU2NhbGluZ0ZhY3RvcoaShKGbhIQBZJ4BhpKEmZkOTlNQTVBhZ2VG + b3JtYXSGkoSEhA1OU011dGFibGVEYXRhAISEBk5TRGF0YQCUl4EVL4QHWzU0MjNjXTw/ + eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CjwhRE9DVFlQRSBwbGlz + dCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cu + YXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lv + bj0iMS4wIj4KPGRpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBN + SG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8 + L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh + Z2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4K + CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ + CTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0 + PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9r + ZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwv + a2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJ + CTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVu + dGF0aW9uPC9rZXk+CgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwv + aW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5h + cHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNv + bS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50 + aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+ + Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+CgkJCQk8cmVh + bD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh + Zzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJy + YXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVy + dGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl + dC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJp + bmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9y + bWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtl + eT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5 + PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+ + Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5 + PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29t + LmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxk + aWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2Fs + U2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxl + LnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVn + ZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUu + cHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk+Cgk8ZGljdD4KCQk8 + a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwv + a2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRv + cjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJ + PGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJy + YXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0 + LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPGludGVn + ZXI+MDwvaW50ZWdlcj4KCQkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCQkJPHJl + YWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9hcnJheT4K + CQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJ + CQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8 + L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVk + UGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp + Y2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwv + c3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r + ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50 + LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4K + CQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJ + CTxyZWFsPjgyNDwvcmVhbD4KCQkJCQkJPHJlYWw+NTc3PC9yZWFsPgoJCQkJCTwvYXJy + YXk+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5 + PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+ + CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVy + TmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + Y3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmlu + Zz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ + CQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBl + ckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPmlzby1hNDwvc3RyaW5n + PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4K + CQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJ + CTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVz + dGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQu + dGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0 + PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8 + L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJp + bnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJPGFycmF5 + PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJ + CQkJPHJlYWw+NzgzPC9yZWFsPgoJCQkJCQk8cmVhbD41NTk8L3JlYWw+CgkJCQkJPC9h + cnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9r + ZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJh + eT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5h + ZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJ + PGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVh + bD4KCQkJCQkJPHJlYWw+ODI0PC9yZWFsPgoJCQkJCQk8cmVhbD41Nzc8L3JlYWw+CgkJ + CQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVG + bGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJ + PC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZv + LnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5w + cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0 + aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1B + cnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBs + ZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmlu + Zz5BNDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0 + ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJ + CQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu + QVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNv + bS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxl + LnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20u + YXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8 + L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8 + c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+Cjwv + ZGljdD4KPC9wbGlzdD4KhpKEmZkNTlNSaWdodE1hcmdpboaShKGbrZ4AhpKEmZkWTlNI + b3Jpem9udGFsbHlDZW50ZXJlZIaSpJKEmZkVTlNIb3Jpem9uYWxQYWdpbmF0aW9uhpKg + koSZmQ1OU0pvYkZlYXR1cmVzhpKElpcAhpKEmZkMTlNMZWZ0TWFyZ2luhpKEoZutngCG + koSZmQtOU1RvcE1hcmdpboaShKGbrZ4AhpKEmZkSTlNSZXZlcnNlUGFnZU9yZGVyhpKg + koSZmQ5OU0JvdHRvbU1hcmdpboaShKGbrZ4AhpKEmZkKTlNMYXN0UGFnZYaShKGbopeC + f////4aShJmZC05TRmlyc3RQYWdlhpKkkoSZmQ1OU09yaWVudGF0aW9uhpKghoY= + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Frame + {{522, 419}, {537, 755}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{0, 3}, {522, 657}} + Zoom + 1 + + + Index: doc/next-tutorial/stack2.png =================================================================== diff -u Binary files differ Index: doc/next-tutorial/value-checkers.graffle =================================================================== diff -u Binary files differ Index: doc/next-tutorial/value-checkers.png =================================================================== diff -u Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/object-class-appclass.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/object-class-appclass.png =================================================================== diff -u -r172b35a1009234b4cf2900f5e3c01d257b4cb369 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/object-parameter.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/object-parameter.png =================================================================== diff -u -r57570354bfebc1bc24f1ba3d7976c44b2c2bd3e9 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/object-stack.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/object-stack.png =================================================================== diff -u -r172b35a1009234b4cf2900f5e3c01d257b4cb369 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/per-class-mixin.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/per-class-mixin.png =================================================================== diff -u -r172b35a1009234b4cf2900f5e3c01d257b4cb369 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/per-object-mixin.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/per-object-mixin.png =================================================================== diff -u -r172b35a1009234b4cf2900f5e3c01d257b4cb369 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/person-student.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/person-student.png =================================================================== diff -u -rfdecdc39d01dbc9fc816e432e793aeff2a78d82e -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/slots.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/slots.png =================================================================== diff -u -r3414ccfa091a4a77645e6e385c9824bc4070040f -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/stack2.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/stack2.png =================================================================== diff -u -r172b35a1009234b4cf2900f5e3c01d257b4cb369 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ Fisheye: Tag e1a3b4786ffd146bbc52f4ac2276df3f9bc9122e refers to a dead (removed) revision in file `doc/value-checkers.graffle'. Fisheye: No comparison available. Pass `N' to diff? Index: doc/value-checkers.png =================================================================== diff -u -r172b35a1009234b4cf2900f5e3c01d257b4cb369 -re1a3b4786ffd146bbc52f4ac2276df3f9bc9122e Binary files differ