diff --git a/classpros_1_1v5_1_1Motor.html b/classpros_1_1v5_1_1Motor.html index abb107a..2cedd32 100644 --- a/classpros_1_1v5_1_1Motor.html +++ b/classpros_1_1v5_1_1Motor.html @@ -76,7 +76,7 @@
These functions allow programmers to make motors move
These functions allow programmers to collect telemetry from motors
+These functions allow programmers to collect telemetry from motors
-These functions allow programmers to configure the behavior of motors
These functions allow for motors and motor groups to be used interchangeably
Gets the actual velocity of the motor.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's actual velocity in RPM or PROS_ERR_F if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - while (true) { - motor = controller_get_analog(E_CONTROLLER_MASTER, E_CONTROLLER_ANALOG_LEFT_Y); - printf("Actual velocity: %lf\n", motor.get_actual_velocity()); - pros::delay(2); - } -}-
Gets the current drawn by the motor in mA.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's current in mA or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Current Draw: " << motor.get_current_draw(); - pros::delay(2); - } -}-
Gets the direction of movement for the motor.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 for moving in the positive direction, -1 for moving in the negative direction, and PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Direction: " << motor.get_direction(); - pros::delay(2); - } -}-
Gets the efficiency of the motor in percent.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's efficiency in percent or PROS_ERR_F if the operation failed, setting errno. | -
An efficiency of 100% means that the motor is moving electrically while drawing no electrical power, and an efficiency of 0% means that the motor is drawing power but not moving.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Efficiency: " << motor.get_efficiency(); - pros::delay(2); - } -}-
Gets the faults experienced by the motor.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -A bitfield containing the motor's faults. | -
Compare this bitfield to the bitmasks in pros::motor_fault_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Faults: " << motor.get_faults();pros::delay(2); - } -}-
Gets the flags set by the motor's operation.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -A bitfield containing the motor's flags. | -
Compare this bitfield to the bitmasks in pros::motor_flag_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Faults: " << motor.get_faults(); - pros::delay(2); - } -}-
Gets the absolute position of the motor in its encoder units.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's absolute position in its encoder units or PROS_ERR_F if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Position: " << motor.get_position(); - pros::delay(2); - } -}-
Gets the power drawn by the motor in Watts.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's power draw in Watts or PROS_ERR_F if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Power: " << motor.get_power(); - pros::delay(2); - } -}-
Gets the raw encoder count of the motor at a given timestamp.
-Parameters | |
---|---|
timestamp | -A pointer to a time in milliseconds for which the encoder count will be returned. If NULL, the timestamp at which the encoder count was read will not be supplied | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The raw encoder count at the given timestamp or PROS_ERR if the operation failed. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - std::uint32_t now = pros::millis(); - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Position: " << motor.get_raw_position(&now); - pros::delay(2); - } -}-
Gets the temperature of the motor in degrees Celsius.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's temperature in degrees Celsius or PROS_ERR_F if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Temperature: " << motor.get_temperature(); - pros::delay(2); - } -}-
Gets the torque generated by the motor in Newton Meters (Nm).
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's torque in Nm or PROS_ERR_F if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Torque: " << motor.get_torque(); - pros::delay(2); - } -}-
Gets the voltage delivered to the motor in millivolts.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's voltage in mV or PROS_ERR_F if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Voltage: " << motor.get_voltage(); - pros::delay(2); - } -}-
Checks if the motor is drawing over its current limit.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the motor's current limit is being exceeded and 0 if the current limit is not exceeded, or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Is the motor over its current limit?: " << motor.is_over_current(); - pros::delay(2); - } -}-
Gets the temperature limit flag for the motor.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the temperature limit is exceeded and 0 if the temperature is below the limit, or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Is the motor over its temperature limit?: " << motor.is_over_temp(); - pros::delay(2); - } -}-
Gets the brake mode that was set for the motor.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -One of MotorBrake, according to what was set for the motor, or E_MOTOR_BRAKE_INVALID if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); - std::cout << "Brake Mode: " << motor.get_brake_mode(); -}-
Gets the current limit for the motor in mA.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -The motor's current limit in mA or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - while (true) { - std::cout << "Motor Current Limit: " << motor.get_current_limit(); - pros::delay(2); - } -}-
Gets the encoder units that were set for the motor.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -One of MotorUnits according to what is set for the motor or E_MOTOR_ENCODER_INVALID if the operation failed. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); - std::cout << "Motor Encoder Units: " << motor.get_encoder_units(); -}-
Gets the gearset that was set for the motor.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -One of MotorGears according to what is set for the motor, or pros::MotorGears::invalid if the operation failed. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); - std::cout << "Motor Gearing: " << motor.get_gearing(); -}-
Gets the voltage limit set by the user.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Default value is 0V, which means that there is no software limitation imposed on the voltage.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - std::cout << "Motor Voltage Limit: " << motor.get_voltage_limit(); -}-
Gets whether the motor is reversed or not.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the motor has been reversed and 0 if the motor was not reversed, or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - std::cout << "Is the motor reversed? " << motor.is_reversed(); - // Prints "0" -}-
Sets one of Motor_Brake to the motor.
-Parameters | |
---|---|
mode | -The MotorBrake to set for the motor | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); - std::cout << "Brake Mode: " << motor.get_brake_mode(); -}-
Sets one of MotorBrake to the motor.
-Parameters | |
---|---|
mode | -The MotorBrake to set for the motor | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); - std::cout << "Brake Mode: " << motor.get_brake_mode(); -}-
Sets the current limit for the motor in mA.
-Parameters | |
---|---|
limit | -The new current limit in mA | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - -motor.set_current_limit(1000); -while (true) { - motor = controller_get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - // The motor will reduce its output at 1000 mA instead of the default 2500 mA - pros::delay(2); - } -}-
Sets one of MotorUnits for the motor encoder.
-Parameters | |
---|---|
units | -The new motor encoder units | -
index | -- |
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - motor.set_encoder_units(E_MOTOR_ENCODER_DEGREES); - std::cout << "Encoder Units: " << motor.get_encoder_units(); -}-
Sets one of MotorUnits for the motor encoder.
-Parameters | |
---|---|
units | -The new motor encoder units | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_encoder_units(E_MOTOR_ENCODER_DEGREES); - std::cout << "Encoder Units: " << motor.get_encoder_units(); -}
Sets one of the gear cartridge (red, green, blue) for the motor.
-Parameters | |
---|---|
gearset | -The new motor gearset | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_gearing(E_MOTOR_GEARSET_06); - std::cout << "Gearset: " << motor.get_gearing(); -}-
Sets one of the gear cartridge (red, green, blue) for the motor.
-Parameters | |
---|---|
gearset | -The new motor gearset | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_gearing(E_MOTOR_GEARSET_06); - std::cout << "Gearset: " << motor.get_gearing(); -}-
Sets the reverse flag for the motor.
-Parameters | |
---|---|
reverse | -True reverses the motor, false is default direction | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This will invert its movements and the values returned for its position.
This function uses the following values of errno when an error state is reached:
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_reversed(true); - std::cout << "Is this motor reversed? " << motor.is_reversed(); -}-
Sets the voltage limit for the motor in Volts.
-Parameters | |
---|---|
limit | -The new voltage limit in Volts | -
index | -- |
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - - motor.set_voltage_limit(10000); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - // The motor will not output more than 10 V - pros::delay(2); - } -}-
Sets the position for the motor in its encoder units.
-Parameters | |
---|---|
position | -The new reference position in its encoder units | -
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This will be the future reference point for the motor's "absolute" position.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void autonomous() { - pros::Motor motor (1); - motor.move_absolute(100, 100); // Moves 100 units forward - motor.move_absolute(100, 100); // This does not cause a movement - - motor.set_zero_position(80); - motor.move_absolute(100, 100); // Moves 80 units forward -}-
Sets the "absolute" zero position of the motor to its current position.
-Parameters | |
---|---|
index | -Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void autonomous() { - pros::Motor motor (1); - motor.move_absolute(100, 100); // Moves 100 units forward - motor.move_absolute(100, 100); // This does not cause a movement - - motor.tare_position(); - motor.move_absolute(100, 100); // Moves 100 units forward -}-
Gets the number of motors.
-Returns | -Always returns 1 | -
---|
gets the port number of the motor
-Returns | -The signed port of the motor. (negative if the motor is reversed) | -
---|
Gets the brake mode that was set for the motor.
-Returns | -One of MotorBrake, according to what was set for the motor, or E_MOTOR_BRAKE_INVALID if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); - std::cout << "Brake Mode: " << motor.get_brake_mode(); -}-
Gets a vector containing the target position set for the motor by the user.
-Returns | -A vector containing the target position in its encoder units or PROS_ERR_F if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { - pros::Motor motor (1); - motor.move_absolute(100, 100); - std::cout << "Motor Target: " << motor.get_target_position_all()[0]; - // Prints 100 -}-
Gets a vector containing the velocity commanded to the motor by the user.
-Returns | -A vector containing the commanded motor velocity from +-100, +-200, or +-600, or PROS_ERR if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor.move_velocity(master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y)); - std::cout << "Motor Velocity: " << motor.get_target_velocity_all()[0]; - // Prints the value of E_CONTROLLER_ANALOG_LEFT_Y - pros::delay(2); - } -}-
Gets a vector containing the actual velocity commanded of the motor.
-Returns | -A vector containing the motor's actual velocity in RPM or PROS_ERR_F if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor.move_velocity(master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y)); - std::cout << "Motor Velocity: " << motor.get_actual_velocity_all()[0]; - // Prints the value of E_CONTROLLER_ANALOG_LEFT_Y - pros::delay(2); - } -}-
Gets a vector containing the current drawn by the motor in mA.
-Returns | -A vector containing the motor's current in mA or PROS_ERR if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Current Draw: " << motor.get_current_draw_all()[0]; - pros::delay(2); - } -}-
Gets a vector containing the direction of movement for the motor.
-Returns | -A vector containing 1 for moving in the positive direction, -1 for moving in the negative direction, and PROS_ERR if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Direction: " << motor.get_direction_all()[0]; - pros::delay(2); - } -}-
Gets a vector containing the efficiency of the motor in percent.
-Returns | -A vector containing The motor's efficiency in percent or PROS_ERR_F if the operation failed, setting errno. | -
---|
An efficiency of 100% means that the motor is moving electrically while drawing no electrical power, and an efficiency of 0% means that the motor is drawing power but not moving.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Efficiency: " << motor.get_efficiency(); - pros::delay(2); - } -}-
Gets a vector of the faults experienced by the motor.
-Returns | -A bitfield containing the motor's faults. | -
---|
Compare this bitfield to the bitmasks in pros::motor_fault_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Faults: " << motor.get_faults_all()[0]; - pros::delay(2); - } -}-
Gets a vector of the flags set by the motor's operation.
-Returns | -A bitfield containing the motor's flags. | -
---|
Compare this bitfield to the bitmasks in pros::motor_flag_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Faults: " << motor.get_faults_all()[0]; - pros::delay(2); - } -}-
Gets a vector containing the absolute position of the motor in its encoder units.
-Returns | -A vector containing the motor's absolute position in its encoder units or PROS_ERR_F if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Position: " << motor.get_position_all()[0]; - pros::delay(2); - } -}-
Gets a vector containing the power drawn by the motor in Watts.
-Returns | -A vector containing the motor's power draw in Watts or PROS_ERR_F if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Power: " << motor.get_power_all()[0]; - pros::delay(2); - } -}-
Gets a vector of the raw encoder count of the motor at a given timestamp.
-Parameters | |
---|---|
timestamp | -A pointer to a time in milliseconds for which the encoder count will be returned. If NULL, the timestamp at which the encoder count was read will not be supplied | -
Returns | -A vector containing the raw encoder count at the given timestamp or PROS_ERR if the operation failed. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - std::uint32_t now = pros::millis(); - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Position: " << motor.get_raw_position(&now); - pros::delay(2); - } -}-
Gets a vector of the temperature of the motor in degrees Celsius.
-Returns | -A vector contaioning the motor's temperature in degrees Celsius or PROS_ERR_F if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Temperature: " << motor.get_temperature_all()[0]; - pros::delay(2); - } -}-
Gets a vector of the torque generated by the motor in Newton Meters (Nm).
-Returns | -A vector containing the motor's torque in Nm or PROS_ERR_F if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Torque: " << motor.get_torque(); - pros::delay(2); - } -}-
Gets a vector of the voltage delivered to the motor in millivolts.
-Returns | -A vector of the motor's voltage in mV or PROS_ERR_F if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Motor Voltage: " << motor.get_voltage_all()[0]; - pros::delay(2); - } -}-
Checks if the motor is drawing over its current limit.
-Returns | -A vector containing 1 if the motor's current limit is being exceeded and 0 if the current limit is not exceeded, or PROS_ERR if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Is the motor over its current limit?: " << motor.is_over_current_all()[0]; - pros::delay(2); - } -}-
Gets the temperature limit flag for the motor.
-Returns | -A vector containing 1 if the temperature limit is exceeded and 0 if the temperature is below the limit, or PROS_ERR if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - std::cout << "Is the motor over its temperature limit?: " << motor.is_over_temp_all(); - pros::delay(2); - } -}-
Gets a vector containing the brake mode that was set for the motor.
-Returns | -One of Motor_Brake, according to what was set for the motor, or E_MOTOR_BRAKE_INVALID if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); - std::cout << "Brake Mode: " << motor.get_brake_mode(); -}-
Gets a vector containing the current limit for the motor in mA.
-Returns | -A vector containing the motor's current limit in mA or PROS_ERR if the operation failed, setting errno. | -
---|
The default value is 2500 mA.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - while (true) { - std::cout << "Motor Current Limit: " << motor.get_current_limit_all()[0]; - pros::delay(2); - } -}-
Gets a vector containing the encoder units that were set for the motor.
-Returns | -A vector containing One of Motor_Units according to what is set for the motor or E_MOTOR_ENCODER_INVALID if the operation failed. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); - std::cout << "Motor Encoder Units: " << motor.get_encoder_units_all()[0]; -}-
Gets a vector containing the gearset that was set for the motor.
-Returns | -A vector containing one of Motor_Gears according to what is set for the motor, or pros::Motor_Gears::invalid if the operation failed. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); - std::cout << "Motor Gearing: " << motor.get_gearing_all()[0]; -}-
Gets returns a vector with all the port numbers in the motor group.
-Returns | -A vector containing the signed port of the motor. (negative if the motor is reversed) | -
---|
Gets a vector of the voltage limit set by the user.
-Returns | -A vector containing the motor's voltage limit in V or PROS_ERR if the operation failed, setting errno. | -
---|
Default value is 0V, which means that there is no software limitation imposed on the voltage.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - std::cout << "Motor Voltage Limit: " << motor.get_voltage_limit_all()[0]; -}-
Gets a vector containg whether the motor is reversed or not.
-Returns | -A vector containing 1 if the motor has been reversed and 0 if the motor was not reversed, or PROS_ERR if the operation failed, setting errno. | -
---|
Example
void initialize() { - pros::Motor motor (1); - std::cout << "Is the motor reversed? " << motor.is_reversed_all()[0]; - // Prints "0" -}-
Sets one of Motor_Brake to the motor.
-Parameters | |
---|---|
mode | -The Motor_Brake to set for the motor | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - motor.set_brake_mode_all(pros::E_MOTOR_BRAKE_HOLD); - std::cout << "Brake Mode: " << motor.get_brake_mode(); -}-
Sets one of Motor_Brake to the motor.
-Parameters | |
---|---|
mode | -The Motor_Brake to set for the motor | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - motor.set_brake_mode_all(pros::E_MOTOR_BRAKE_HOLD); - std::cout << "Brake Mode: " << motor.get_brake_mode(); -}-
Sets the current limit for the motor in mA.
-Parameters | |
---|---|
limit | -The new current limit in mA | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - -motor.set_current_limit_all(1000); -while (true) { - motor = controller_get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - // The motor will reduce its output at 1000 mA instead of the default 2500 mA - pros::delay(2); - } -}-
Sets one of Motor_Units for the motor encoder.
-Parameters | |
---|---|
units | -The new motor encoder units | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { - pros::Motor motor (1); - motor.set_encoder_units_all(E_MOTOR_ENCODER_DEGREES); - std::cout << "Encoder Units: " << motor.get_encoder_units(); -}
Sets one of Motor_Units for the motor encoder.
-Parameters | |
---|---|
units | -The new motor encoder units | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - motor.set_encoder_units_all(E_MOTOR_ENCODER_DEGREES); - std::cout << "Encoder Units: " << motor.get_encoder_units(); -}-
Sets one of the gear cartridge (red, green, blue) for the motor.
-Parameters | |
---|---|
gearset | -The new motor gearset | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - motor.set_gearing_all(E_MOTOR_GEARSET_06); - std::cout << "Gearset: " << motor.get_gearing(); -}-
Sets one of the gear cartridge (red, green, blue) for the motor.
-Parameters | |
---|---|
gearset | -The new motor gearset | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { - pros::Motor motor (1); - motor.set_gearing_all(E_MOTOR_GEARSET_06); - std::cout << "Gearset: " << motor.get_gearing(); -}-
Sets the reverse flag for the motor.
-Parameters | |
---|---|
reverse | -True reverses the motor, false is default direction | -
Returns | -1 | -
This will invert its movements and the values returned for its position.
Example
void initialize() { - pros::Motor motor (1); - motor.set_reversed_all(true); - std::cout << "Is this motor reversed? " << motor.is_reversed(); -}-
Sets the voltage limit for the motor in Volts.
-Parameters | |
---|---|
limit | -The new voltage limit in Volts | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void autonomous() { - pros::Motor motor (1); - pros::Controller master (E_CONTROLLER_MASTER); - - motor.set_voltage_limit_all(10000); - while (true) { - motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); - // The motor will not output more than 10 V - pros::delay(2); - } -}-
Sets the position for the motor in its encoder units.
-Parameters | |
---|---|
position | -The new reference position in its encoder units | -
Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
This will be the future reference point for the motor's "absolute" position.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { - pros::Motor motor (1); - motor.move_absolute(100, 100); // Moves 100 units forward - motor.move_absolute(100, 100); // This does not cause a movement - - motor.set_zero_position_all(80); - motor.move_absolute(100, 100); // Moves 80 units forward -}-
Sets the "absolute" zero position of the motor to its current position.
-Returns | -1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | -
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { - pros::Motor motor (1); - motor.move_absolute(100, 100); // Moves 100 units forward - motor.move_absolute(100, 100); // This does not cause a movement - - motor.tare_position_all(); - motor.move_absolute(100, 100); // Moves 100 units forward -}-
These functions allow programmers to make motors move
+These functions allow programmers to collect telemetry from motors
+These functions allow programmers to configure the behavior of motors
+These functions allow for motors and motor groups to be used interchangeably
+
+
+
This function sets motor velocity to zero, which will cause it to act according to the set brake mode. If brake mode is set to MOTOR_BRAKE_HOLD, this function may behave differently than calling move_absolute(0) or motor_move_relative(0).
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { - Motor motor(1); + Motor motor(1); motor.move_voltage(12000); pros::delay(1000); // Move at max voltage for 1 second motor.brake(); @@ -475,6 +818,1941 @@} }
Gets the actual velocity of the motor.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's actual velocity in RPM or PROS_ERR_F if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + while (true) { + motor = controller_get_analog(E_CONTROLLER_MASTER, E_CONTROLLER_ANALOG_LEFT_Y); + printf("Actual velocity: %lf\n", motor.get_actual_velocity()); + pros::delay(2); + } +}+
Gets the current drawn by the motor in mA.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's current in mA or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Current Draw: " << motor.get_current_draw(); + pros::delay(2); + } +}+
Gets the direction of movement for the motor.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 for moving in the positive direction, -1 for moving in the negative direction, and PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Direction: " << motor.get_direction(); + pros::delay(2); + } +}+
Gets the efficiency of the motor in percent.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's efficiency in percent or PROS_ERR_F if the operation failed, setting errno. | +
An efficiency of 100% means that the motor is moving electrically while drawing no electrical power, and an efficiency of 0% means that the motor is drawing power but not moving.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Efficiency: " << motor.get_efficiency(); + pros::delay(2); + } +}+
Gets the faults experienced by the motor.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +A bitfield containing the motor's faults. | +
Compare this bitfield to the bitmasks in pros::motor_fault_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Faults: " << motor.get_faults();pros::delay(2); + } +}+
Gets the flags set by the motor's operation.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +A bitfield containing the motor's flags. | +
Compare this bitfield to the bitmasks in pros::motor_flag_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Faults: " << motor.get_faults(); + pros::delay(2); + } +}+
Gets the absolute position of the motor in its encoder units.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's absolute position in its encoder units or PROS_ERR_F if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Position: " << motor.get_position(); + pros::delay(2); + } +}+
Gets the power drawn by the motor in Watts.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's power draw in Watts or PROS_ERR_F if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Power: " << motor.get_power(); + pros::delay(2); + } +}+
Gets the raw encoder count of the motor at a given timestamp.
+Parameters | |
---|---|
timestamp | +A pointer to a time in milliseconds for which the encoder count will be returned. If NULL, the timestamp at which the encoder count was read will not be supplied | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The raw encoder count at the given timestamp or PROS_ERR if the operation failed. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + std::uint32_t now = pros::millis(); + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Position: " << motor.get_raw_position(&now); + pros::delay(2); + } +}+
Gets the temperature of the motor in degrees Celsius.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's temperature in degrees Celsius or PROS_ERR_F if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Temperature: " << motor.get_temperature(); + pros::delay(2); + } +}+
Gets the torque generated by the motor in Newton Meters (Nm).
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's torque in Nm or PROS_ERR_F if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Torque: " << motor.get_torque(); + pros::delay(2); + } +}+
Gets the voltage delivered to the motor in millivolts.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's voltage in mV or PROS_ERR_F if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Voltage: " << motor.get_voltage(); + pros::delay(2); + } +}+
Checks if the motor is drawing over its current limit.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the motor's current limit is being exceeded and 0 if the current limit is not exceeded, or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Is the motor over its current limit?: " << motor.is_over_current(); + pros::delay(2); + } +}+
Gets the temperature limit flag for the motor.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the temperature limit is exceeded and 0 if the temperature is below the limit, or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Is the motor over its temperature limit?: " << motor.is_over_temp(); + pros::delay(2); + } +}+
Gets the brake mode that was set for the motor.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +One of MotorBrake, according to what was set for the motor, or E_MOTOR_BRAKE_INVALID if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); + std::cout << "Brake Mode: " << motor.get_brake_mode(); +}+
Gets the current limit for the motor in mA.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +The motor's current limit in mA or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + while (true) { + std::cout << "Motor Current Limit: " << motor.get_current_limit(); + pros::delay(2); + } +}+
Gets the encoder units that were set for the motor.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +One of MotorUnits according to what is set for the motor or E_MOTOR_ENCODER_INVALID if the operation failed. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); + std::cout << "Motor Encoder Units: " << motor.get_encoder_units(); +}+
Gets the gearset that was set for the motor.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +One of MotorGears according to what is set for the motor, or pros::MotorGears::invalid if the operation failed. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); + std::cout << "Motor Gearing: " << motor.get_gearing(); +}+
Gets the voltage limit set by the user.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Default value is 0V, which means that there is no software limitation imposed on the voltage.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + std::cout << "Motor Voltage Limit: " << motor.get_voltage_limit(); +}+
Gets whether the motor is reversed or not.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the motor has been reversed and 0 if the motor was not reversed, or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + std::cout << "Is the motor reversed? " << motor.is_reversed(); + // Prints "0" +}+
Sets one of Motor_Brake to the motor.
+Parameters | |
---|---|
mode | +The MotorBrake to set for the motor | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); + std::cout << "Brake Mode: " << motor.get_brake_mode(); +}+
Sets one of MotorBrake to the motor.
+Parameters | |
---|---|
mode | +The MotorBrake to set for the motor | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); + std::cout << "Brake Mode: " << motor.get_brake_mode(); +}+
Sets the current limit for the motor in mA.
+Parameters | |
---|---|
limit | +The new current limit in mA | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + +motor.set_current_limit(1000); +while (true) { + motor = controller_get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + // The motor will reduce its output at 1000 mA instead of the default 2500 mA + pros::delay(2); + } +}+
Sets one of MotorUnits for the motor encoder.
+Parameters | |
---|---|
units | +The new motor encoder units | +
index | ++ |
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + motor.set_encoder_units(E_MOTOR_ENCODER_DEGREES); + std::cout << "Encoder Units: " << motor.get_encoder_units(); +}+
Sets one of MotorUnits for the motor encoder.
+Parameters | |
---|---|
units | +The new motor encoder units | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_encoder_units(E_MOTOR_ENCODER_DEGREES); + std::cout << "Encoder Units: " << motor.get_encoder_units(); +}
Sets one of the gear cartridge (red, green, blue) for the motor.
+Parameters | |
---|---|
gearset | +The new motor gearset | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_gearing(E_MOTOR_GEARSET_06); + std::cout << "Gearset: " << motor.get_gearing(); +}+
Sets one of the gear cartridge (red, green, blue) for the motor.
+Parameters | |
---|---|
gearset | +The new motor gearset | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_gearing(E_MOTOR_GEARSET_06); + std::cout << "Gearset: " << motor.get_gearing(); +}+
Sets the reverse flag for the motor.
+Parameters | |
---|---|
reverse | +True reverses the motor, false is default direction | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This will invert its movements and the values returned for its position.
This function uses the following values of errno when an error state is reached:
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_reversed(true); + std::cout << "Is this motor reversed? " << motor.is_reversed(); +}+
Sets the voltage limit for the motor in Volts.
+Parameters | |
---|---|
limit | +The new voltage limit in Volts | +
index | ++ |
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + + motor.set_voltage_limit(10000); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + // The motor will not output more than 10 V + pros::delay(2); + } +}+
Sets the position for the motor in its encoder units.
+Parameters | |
---|---|
position | +The new reference position in its encoder units | +
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This will be the future reference point for the motor's "absolute" position.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void autonomous() { + pros::Motor motor (1); + motor.move_absolute(100, 100); // Moves 100 units forward + motor.move_absolute(100, 100); // This does not cause a movement + + motor.set_zero_position(80); + motor.move_absolute(100, 100); // Moves 80 units forward +}+
Sets the "absolute" zero position of the motor to its current position.
+Parameters | |
---|---|
index | +Optional parameter. The zero-indexed index of the motor to get the target position of. By default index is 0, and will return an error for a non-zero index | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void autonomous() { + pros::Motor motor (1); + motor.move_absolute(100, 100); // Moves 100 units forward + motor.move_absolute(100, 100); // This does not cause a movement + + motor.tare_position(); + motor.move_absolute(100, 100); // Moves 100 units forward +}+
Gets the number of motors.
+Returns | +Always returns 1 | +
---|
Gets the brake mode that was set for the motor.
+Returns | +One of MotorBrake, according to what was set for the motor, or E_MOTOR_BRAKE_INVALID if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); + std::cout << "Brake Mode: " << motor.get_brake_mode(); +}+
gets the port number of the motor
+Returns | +The signed port of the motor. (negative if the motor is reversed) | +
---|
Gets a vector containing the target position set for the motor by the user.
+Returns | +A vector containing the target position in its encoder units or PROS_ERR_F if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { + pros::Motor motor (1); + motor.move_absolute(100, 100); + std::cout << "Motor Target: " << motor.get_target_position_all()[0]; + // Prints 100 +}+
Gets a vector containing the velocity commanded to the motor by the user.
+Returns | +A vector containing the commanded motor velocity from +-100, +-200, or +-600, or PROS_ERR if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor.move_velocity(master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y)); + std::cout << "Motor Velocity: " << motor.get_target_velocity_all()[0]; + // Prints the value of E_CONTROLLER_ANALOG_LEFT_Y + pros::delay(2); + } +}+
Gets a vector containing the actual velocity commanded of the motor.
+Returns | +A vector containing the motor's actual velocity in RPM or PROS_ERR_F if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor.move_velocity(master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y)); + std::cout << "Motor Velocity: " << motor.get_actual_velocity_all()[0]; + // Prints the value of E_CONTROLLER_ANALOG_LEFT_Y + pros::delay(2); + } +}+
Gets a vector containing the current drawn by the motor in mA.
+Returns | +A vector containing the motor's current in mA or PROS_ERR if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Current Draw: " << motor.get_current_draw_all()[0]; + pros::delay(2); + } +}+
Gets a vector containing the direction of movement for the motor.
+Returns | +A vector containing 1 for moving in the positive direction, -1 for moving in the negative direction, and PROS_ERR if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Direction: " << motor.get_direction_all()[0]; + pros::delay(2); + } +}+
Gets a vector containing the efficiency of the motor in percent.
+Returns | +A vector containing The motor's efficiency in percent or PROS_ERR_F if the operation failed, setting errno. | +
---|
An efficiency of 100% means that the motor is moving electrically while drawing no electrical power, and an efficiency of 0% means that the motor is drawing power but not moving.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Efficiency: " << motor.get_efficiency(); + pros::delay(2); + } +}+
Gets a vector of the faults experienced by the motor.
+Returns | +A bitfield containing the motor's faults. | +
---|
Compare this bitfield to the bitmasks in pros::motor_fault_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Faults: " << motor.get_faults_all()[0]; + pros::delay(2); + } +}+
Gets a vector of the flags set by the motor's operation.
+Returns | +A bitfield containing the motor's flags. | +
---|
Compare this bitfield to the bitmasks in pros::motor_flag_e_t.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Faults: " << motor.get_faults_all()[0]; + pros::delay(2); + } +}+
Gets a vector containing the absolute position of the motor in its encoder units.
+Returns | +A vector containing the motor's absolute position in its encoder units or PROS_ERR_F if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Position: " << motor.get_position_all()[0]; + pros::delay(2); + } +}+
Gets a vector containing the power drawn by the motor in Watts.
+Returns | +A vector containing the motor's power draw in Watts or PROS_ERR_F if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Power: " << motor.get_power_all()[0]; + pros::delay(2); + } +}+
Gets a vector of the raw encoder count of the motor at a given timestamp.
+Parameters | |
---|---|
timestamp | +A pointer to a time in milliseconds for which the encoder count will be returned. If NULL, the timestamp at which the encoder count was read will not be supplied | +
Returns | +A vector containing the raw encoder count at the given timestamp or PROS_ERR if the operation failed. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + std::uint32_t now = pros::millis(); + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Position: " << motor.get_raw_position(&now); + pros::delay(2); + } +}+
Gets a vector of the temperature of the motor in degrees Celsius.
+Returns | +A vector contaioning the motor's temperature in degrees Celsius or PROS_ERR_F if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Temperature: " << motor.get_temperature_all()[0]; + pros::delay(2); + } +}+
Gets a vector of the torque generated by the motor in Newton Meters (Nm).
+Returns | +A vector containing the motor's torque in Nm or PROS_ERR_F if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Torque: " << motor.get_torque(); + pros::delay(2); + } +}+
Gets a vector of the voltage delivered to the motor in millivolts.
+Returns | +A vector of the motor's voltage in mV or PROS_ERR_F if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Motor Voltage: " << motor.get_voltage_all()[0]; + pros::delay(2); + } +}+
Checks if the motor is drawing over its current limit.
+Returns | +A vector containing 1 if the motor's current limit is being exceeded and 0 if the current limit is not exceeded, or PROS_ERR if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Is the motor over its current limit?: " << motor.is_over_current_all()[0]; + pros::delay(2); + } +}+
Gets the temperature limit flag for the motor.
+Returns | +A vector containing 1 if the temperature limit is exceeded and 0 if the temperature is below the limit, or PROS_ERR if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + std::cout << "Is the motor over its temperature limit?: " << motor.is_over_temp_all(); + pros::delay(2); + } +}+
Gets a vector containing the brake mode that was set for the motor.
+Returns | +One of Motor_Brake, according to what was set for the motor, or E_MOTOR_BRAKE_INVALID if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + motor.set_brake_mode(pros::E_MOTOR_BRAKE_HOLD); + std::cout << "Brake Mode: " << motor.get_brake_mode(); +}+
Gets a vector containing the current limit for the motor in mA.
+Returns | +A vector containing the motor's current limit in mA or PROS_ERR if the operation failed, setting errno. | +
---|
The default value is 2500 mA.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + while (true) { + std::cout << "Motor Current Limit: " << motor.get_current_limit_all()[0]; + pros::delay(2); + } +}+
Gets a vector containing the encoder units that were set for the motor.
+Returns | +A vector containing One of Motor_Units according to what is set for the motor or E_MOTOR_ENCODER_INVALID if the operation failed. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); + std::cout << "Motor Encoder Units: " << motor.get_encoder_units_all()[0]; +}+
Gets a vector containing the gearset that was set for the motor.
+Returns | +A vector containing one of Motor_Gears according to what is set for the motor, or pros::Motor_Gears::invalid if the operation failed. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1, E_MOTOR_GEARSET_06, E_MOTOR_ENCODER_COUNTS); + std::cout << "Motor Gearing: " << motor.get_gearing_all()[0]; +}+
Gets returns a vector with all the port numbers in the motor group.
+Returns | +A vector containing the signed port of the motor. (negative if the motor is reversed) | +
---|
Gets a vector of the voltage limit set by the user.
+Returns | +A vector containing the motor's voltage limit in V or PROS_ERR if the operation failed, setting errno. | +
---|
Default value is 0V, which means that there is no software limitation imposed on the voltage.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + std::cout << "Motor Voltage Limit: " << motor.get_voltage_limit_all()[0]; +}+
Gets a vector containg whether the motor is reversed or not.
+Returns | +A vector containing 1 if the motor has been reversed and 0 if the motor was not reversed, or PROS_ERR if the operation failed, setting errno. | +
---|
Example
void initialize() { + pros::Motor motor (1); + std::cout << "Is the motor reversed? " << motor.is_reversed_all()[0]; + // Prints "0" +}+
Sets one of Motor_Brake to the motor.
+Parameters | |
---|---|
mode | +The Motor_Brake to set for the motor | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + motor.set_brake_mode_all(pros::E_MOTOR_BRAKE_HOLD); + std::cout << "Brake Mode: " << motor.get_brake_mode(); +}+
Sets one of Motor_Brake to the motor.
+Parameters | |
---|---|
mode | +The Motor_Brake to set for the motor | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + motor.set_brake_mode_all(pros::E_MOTOR_BRAKE_HOLD); + std::cout << "Brake Mode: " << motor.get_brake_mode(); +}+
Sets the current limit for the motor in mA.
+Parameters | |
---|---|
limit | +The new current limit in mA | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void opcontrol() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + +motor.set_current_limit_all(1000); +while (true) { + motor = controller_get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + // The motor will reduce its output at 1000 mA instead of the default 2500 mA + pros::delay(2); + } +}+
Sets one of Motor_Units for the motor encoder.
+Parameters | |
---|---|
units | +The new motor encoder units | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void initialize() { + pros::Motor motor (1); + motor.set_encoder_units_all(E_MOTOR_ENCODER_DEGREES); + std::cout << "Encoder Units: " << motor.get_encoder_units(); +}
Sets one of Motor_Units for the motor encoder.
+Parameters | |
---|---|
units | +The new motor encoder units | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Works with the C enum and the C++ enum class.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + motor.set_encoder_units_all(E_MOTOR_ENCODER_DEGREES); + std::cout << "Encoder Units: " << motor.get_encoder_units(); +}+
Sets one of the gear cartridge (red, green, blue) for the motor.
+Parameters | |
---|---|
gearset | +The new motor gearset | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + motor.set_gearing_all(E_MOTOR_GEARSET_06); + std::cout << "Gearset: " << motor.get_gearing(); +}+
Sets one of the gear cartridge (red, green, blue) for the motor.
+Parameters | |
---|---|
gearset | +The new motor gearset | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
Usable with the C++ enum class and the C enum.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void initialize() { + pros::Motor motor (1); + motor.set_gearing_all(E_MOTOR_GEARSET_06); + std::cout << "Gearset: " << motor.get_gearing(); +}+
Sets the reverse flag for the motor.
+Parameters | |
---|---|
reverse | +True reverses the motor, false is default direction | +
Returns | +1 | +
This will invert its movements and the values returned for its position.
Example
void initialize() { + pros::Motor motor (1); + motor.set_reversed_all(true); + std::cout << "Is this motor reversed? " << motor.is_reversed(); +}+
Sets the voltage limit for the motor in Volts.
+Parameters | |
---|---|
limit | +The new voltage limit in Volts | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This function uses the following values of errno when an error state is reached:
ENODEV - The port cannot be configured as a motor
EOVERFLOW - The index is non 0
Example
void autonomous() { + pros::Motor motor (1); + pros::Controller master (E_CONTROLLER_MASTER); + + motor.set_voltage_limit_all(10000); + while (true) { + motor = master.get_analog(E_CONTROLLER_ANALOG_LEFT_Y); + // The motor will not output more than 10 V + pros::delay(2); + } +}+
Sets the position for the motor in its encoder units.
+Parameters | |
---|---|
position | +The new reference position in its encoder units | +
Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
This will be the future reference point for the motor's "absolute" position.
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { + pros::Motor motor (1); + motor.move_absolute(100, 100); // Moves 100 units forward + motor.move_absolute(100, 100); // This does not cause a movement + + motor.set_zero_position_all(80); + motor.move_absolute(100, 100); // Moves 80 units forward +}+
Sets the "absolute" zero position of the motor to its current position.
+Returns | +1 if the operation was successful or PROS_ERR if the operation failed, setting errno. | +
---|
This function uses the following values of errno when an error state is reached: ENODEV - The port cannot be configured as a motor
Example
void autonomous() { + pros::Motor motor (1); + motor.move_absolute(100, 100); // Moves 100 units forward + motor.move_absolute(100, 100); // This does not cause a movement + + motor.tare_position_all(); + motor.move_absolute(100, 100); // Moves 100 units forward +}+
+
-
-
DY8QV0Rfo>D7Hg@00CvZLjV8)ZNx(W00L!UtV00GLjVB)Qw9J5DcVB-0Rd75DBeSW00C{}LjV8)ckDv|00D6FLjV8)U-&}+00CtFLjV8)WduY30RRdJ00AiwL;wK+2?!_@M1TMRWg0{P00CnnL;wH*ZYV?m00ChxL;wH*Y&1jw00Ch-L;wH*Vn9Ry00Cb{L;wH*WlTf>00DGTL;wH*X;?%600MGod@BH6L;wI3barrIV`OD!a$;w1X=rhIb8c*RC@%mYF#wu00BSY>Bsc(6IRFMb0NOhMB0T``J^)-m0FprfxIq9iLI8e30H8tuXhQ(dLjVdy0Axe}0RW)^00Ak$L;wK*B?15eWy(YV00CsqL;wH*Y1Bjj00DK{L;wH*XW&Et00AK8L;wH*bL>O_00DCHL;wH*W%xt@00DFUL;wH*bp%BK00AHhMF0Q+We`OG00C_lMF0Q+X&glW00DF&MF0Q+ASguu00DF^MF0Q+b2LQ&00DA3MF0Q+X+T8)00Cx3MF0Q+AWTI700DDSMF0Q+Z&*bD00DAdMF0T+76t$Tb81BZ00DPyMF0Q+Z*)Zf00CrrMF0Q+Zh%Dq00C)+MF0T+AO-*dc#=f`00DKDMF0Q+Zk$B`00C*DMF0T+)&>9pbFM`I00D2ZMF0Q+W4J{C00CjXMF0Q;cWiBpMF6Np0K`QA00AJ%MF0Q+ZrDWt00D2_MF0Q+Aml{=00C#}MF0Q+Ztz6_00C+CMF0Q+Z2Uz400C?QMgRZ-VF*S500DFkMgRZ-a}-7Z00C|qMgRZ;aA{;k03b#H00AH-MgRZ-yD&xo00F`_MgRc;{RJRAMt}eTWI{#&00Cu6MgRZ-bWlbB00DAVMgRZ-VO&N400DGjMgRZ-b7)2Y00JN_ZbkqS0RR92XLLpY00C}(MgRZ-X@o`q0Rx}`Unq2LL;%D@fQm){00M4wEG+<#MgRf;mjKcT00DHWMgRZ-U$90100DEhMgRZ-U%W;D00C~oMgRZ-Z^%Xf00C*vMgRZ-bks%w00C**MgRZ-bKph*00D32MgRf;EdkI700DIJMgRZ-U-(7<00DFUMgRZ-Uj#=000C?YM*si;We`UI00CnbM*si;V;n~S0svzJ(+B_obSOsv00CbvM*si;b2LW)00Cb*M*si;b3jJ`00DJIM*si;bWBG800CiAM*sl;-3R~yDPBha0Rh|yC}Kx|00DGpM*si;WpGCT00DD$M*si;W_(8g00Cx#M*sl;;RpZ$DUL?~0Ri9$D3V8j00C~8M*si;Z=gp200C*HM*si;bgV}J00C*TM*si;bGSzU00D2lM*sl;;|Kr&DauCx0RiF&D9%TK00CvxM*si;blgV(00Cj*M*si;a_C0@00Cd_M*si;Vf04;00DIRM*si;VE{+~00VDuWQa!q#76)INB{rW^&j_03b;K0RZI)00Aj5NdN%> 00D18NdN!=a!5%400DANNdN%==Li4+DOyPY0RiR+C|*f`00C}fNdN!=Z)`~b00C)oNdN!=ba+Vs00CisNdN!=bc9I&00C}_NdN!=Wspe#00C*1NdN!=a-2y300D2JNdN!=U#Lj{00CsKNdN!=ZnQ}N0RZa=00Ak$NdN%>>If*rNq_+W?Faw?Dbh&*0Rij?DAq}U00UuodAdme%1Hp+NdN%==?DM;De_4G0Rrd bQDSe00C(lN&o->b0A6p0RZs`00Aj1N&o=?@CYa{N`L?XXf{d!00Cn@N&o->bVN!300M7mCQ1NGN&o=>^9TR|DOySZ0Ri#|C|*i{00C@dN&o->Y-~yZ00D1uN&o=>^#}j~DSk=-0Ri*~D1u6W00DQ1N&o->VUS7y0RZ<100AkSN&o=>`3L|3DW*yQ0Ri|3D5^?;00DQfN&o->VYo^F00DBoN&o=@_6R6nph|$mN&o->XUa+d00C~+N&o->Y1~Qx00Cs;N&o->VdzQ#00Cw0N&o=>`v?F5Df&tP0Ra6700AikO8@}@{0JxrOMn3Y{|Ep9DHclr0RjF9C>l$E0RRCB00Ai|O8@}@00}58OMn0aczJpbO8_8C05VGe0Rs96C|~|cfI3S600Cu4O8@`?bW}?K00CiIO8@`?a$rjU00CcSO8@`?Z){5d00DAxO8@`?d3Z|z0RRID00Ak4O8@}?1qlEFDUM430RaRFD3VKn0RRUH00AkWO8@}@1_>ynOMn3Y2?+oJDY8od0RadJD7H(000Ve=dYDT9s!IU8O8@}^0tqNzh)aOPO8@`?Y|={r00Cv*O8@`?W8_N!00Cp_O8@`}Z)I?Dd1z;0CP@HPNdQnv0C-9OmP!EhN&tRK0Psry00Ce2O8@`?bQnwk00Mbsu1EkLOaK7@+Xw&wDK1O^0Rh?wC^Afd00C?`OaK4@Y(Pu^00DJIOaK4@W=u=~00Cc8OaK4@WmrrA00DYlOaK4@X=F?Q00C@jOaK4@VQ@?U00C)sOaK4@bbL$z00C)&OaK4@Ziq|(00wYjb8ly9>_z}0M*t>B0E9>YBuoH~OaK7@(ggqkaIQ=M0RbckaI#DQ00C&YOaKJ{UkY6cV+vskWeNZRDaK3y2m@yVUJ6_aVhUgiWD0Q!ehFVLD3nY9z)S$rOn?9ZbJ$D(0RRRA00DRWOaK4@ZvagI00C?UO#lD^Yz$2R00CtZO#lD^c^FLq1Oayf1q00m><3>SO#lD^ZX`_r0RRL800L!sGED$DO#lG^0|Nj7c}7hD00L!UJWT*fO#lG^{{jF3Z(2 $00Ct#P5=M_XEaU#00BBWP5=V}R0RwL4h1MW_)UO7PJjRbZ$?f400DAVP5=P_z6AgQDPm3l0Rg=QC}vK800CueP5=M_c63ev00?Dpa$#t1d1;_V0QO7(P)z`WO#r-20PIZwTuuObP5=P_0RR92Wui_100DHSP5=M_d8|$V0RRF300CvVP5=M_bi7Ug00DWzP5=M_V#rPa00CdlP5=P_1ONa7Vlrm3P5{(S0NPFf0s#X6&;?)KP5=M_a_mk300DCLP5=P_1poj6a{^BQ00DCbPXGV`WeiUM00CnXPXGV`V;D~W00DI#PXGY`H~;_vb1F{&00Ct#PXGV`Z8T2+00Ch-PXGV`Za_}}00Cb{PXGV`WlT>100C@LPXGV`a9B?O00C`YPXGV`X=G0T0RTAw00DDwPXGV`Y;;cm00CioPXGV`a)3_&00Cu&PXGV`bc{~`00C)|PXGV{b8Ko)0GLkz00Cc~PXGV`WvEX800DEZPXGY`YyPyhe{Z-`I;00DB2Pyhh{nE(I*Xqr#}00AzZPyhe{X{1m900CsGPyhe{VX#mD00CdNPyhe{bi7ai00MG&lu!V|Pyhh{HUIztaMDl!0RhwoaMn-&00C&+Pyhe{F62-E00D05Pyhe{Z}3n600C+CPyhe{bNo;M00C(NQ2+q|MF0Q+a1K!b0Ri#_a1v1f00C$iQ2+n|E+A0=00DC*Q2+n|ax75*00D0@Q2+n|Y&cN>00D14Q2+q|MgRZ-a7s}C0Rb=pa86MG00C%JQ2+n|E?iLn00DDiQ2+n|Z)i~f0RZU=00D4xQ2+q}nh9`tQ2+n|Xns)u00AzBQ2+n|Zj4a?00D23Q2+n|X_!#}00DHKQ2+n|VWd$200DHWQ2+n}bZ>4^0I*R20RTq;00D5oQ2+q}CI)cCQ2+n|Xv$Fl00A!2Q2+n|Y}io%00Cj%Q2+n|W8_f)00C+0Q2+n|bnsCC00D6JQ2+n|F1!T*00CtJQUCw}V+c|J00C(ZQUCw}b`(+o00AyC0ssI3Wgt=j00CnrQUCw}ZY)v&00Ch#QUCw}bU0D~00DD8QUCw~Woa5x07Oy%0RXN600D4RQUCw}a9C0R00C%TQUCw}E@V;w00D4nQUCw}b#PJu00D1yQUCw}a(q$%00C!$QUCz}X$1fQaE?*{0Rd_TaFS9000C&2QUCw}E}&8X00Ligh*AKiQUCw}a;#DS00D2dQUCw}bi7gk0RZR<00D5wQUCz~Vg_)`QUCw}Xwp&u00A!AQUCw}W8hK%00DF6QUCw~Z)w6(0PIo#0RRgE00D6PQUCz~7zc0wQvd(~Xa-XN00AxzQvd(~bre$o00C_pQvd(~Wgt@k0RT`100D3;Qvd-0TMBS6Qvd(~Xf{&-00AyOQvd(~YeZ8300C}FQvd)0Y-uJ_08mo^0RWE!00D4dQvd-0(FJg1Qvd(~Xlhdc00Ay?Qvd(~X?Rlr0Ra3300C%(Qvd(~E{IbA00DT8Qvd(~X_Qj{0RR*R00D5IQvd(~aHLZJ00C&KQvd(~F0fMo00DBgQvd(~Z@g0g00DHuQvd(~Z^%;s00C{zQvd(~U({0o00DH`Qvd(~W8hN&00Cj 3#g00DAxQ~&@1V`V~A0C-dY0RWr{00D4_Q~&`1$^~$YQ~&@0Xp&R_00AzVQ~&@0b)ZxL00C{LQ~&@0F2GCx00DEdQ~&@0aJW b4L{R{?Q2_i=07_B-@=^d+Qvd{10De>etW*HLQ~&`0NB{r B+K00CbdRR911UnErk00CtxRR911bTCx_00DJ2RR911Vmws<00C)2RR911a!6GG00DGPRR911bW~LU00CiIRR911Utm=L00CcSRR911I&4({00BC3Re%5iaClV!00D4*RR911XoOV&0RSNe00DE5RR911UzAk<00DEFRR911b)Z!M00DHSRR911VXRdE00DHeRR911bGTIi00CdVRR911Xv9?j00CplRR911b h(%Y(7>100Ch_RsaA2V@Os200C)ERsaA2bW~OV00D4XRsaD2m;e9)WoA|Y00CoaRsaA2Zg5rr00CikRsaA2bbM9-00DD?RsaD2E(QPrWsX(=00Co?RsaA2X_!_300DNMRsaA3X=R930Hjs`0RWl+00C~aRsaA2Z@5+f00C*fRsaA2bi`Hw00CjjRsaA2bkJ4+00D2-RsaD2qyPW`DdJWD0RZd(00AlNRsaD3>i{V5R)7EjZ1z?F00C_NRsaA2VFXtI0Rp1{C|~AQfC^Ut00DUrR{#J3bR1Uz00C(tR{#J3V<=Yu00D0 R{#J3c0gAE00Cb{R{#J3Y)n@G00CiAR{#J3by!yb00DGfR{#M3<^TWzDQZ^$0RiOzC~jAP00DD!R{#J3Wqelv00CoyR{#J3X^2+<00DN6R{#J3Wt3L{00Cs0R{#J3U!Ye200C^KR{#J4V{Bws0IXL40RW}|00AkyR{#M3?f?J*DaKa-0Rim*D9TrW00C^!R{#J3Y}i)-00Cj%R{#M5r2r^jz*m6eR{#J3cj{LF00Ck4R{#J3a{N~S0RX}P00AioSO5V43IPBCDH2!!0RagCC>B_N00C?qSO5S4Y$R9!00ChtSO5V6!2l><3|N3LSO5S4bT(K300C)2SO5S4ZAe%E00C)ESO5S5WNZRh0905200CcGSO5S4bYxfn00C}lSO5S4WpG#k00DA#SO5S4a(q|-00DJ^SO5V4r~m)~DUMhG0RZp-00AkOSO5V5?*J&ASbzWlY@%2I00C^OSO5S4VX#;L0RpE0C|{CTfVNlw00C~iSO5S4Z^&2x00C*vSO5S4bktY?00Cp#SO5S4W#Cu<00DC5SO5S4Y3x`40RXB100AlZSO5V4@&Et SpWb5c_vu^00Cn%SpWb5Za7&000Ct_SpWb5X+&8700Co4SpWb5X;4`J00CxJSpWe5!~g&RDPmaw0RRjE00Aj%SpWe63jru_S%3fmY<5`y00C@%SpWb5VT4%#0RqDSC|_n-fQnfF00DE5SpWb5bevfL00C*DSpWb5Zm3xR00DKbSpWb5U$j{O00DBkSpWb5Wx!bg00CsiSpWb5Z_HT$00CptSpWb6W^P De_qW0Ri&>DE3)^00C_LSpWb5Yy?^W00ChNS^xn8s{klp>{);iS^xk6a~4_v00DF&S^xk6Y$#d)00DI_S^xn6t^fc5DLPsJ0RZ*@00AjPS^xn7^#CYHT7UonY))DL00C@PS^xk6VO&}O0RpW6C|^EWfMQwz00DDoS^xk6XLMQs00CioS^xk7VQe&70DxKm0RXT700AkGS^xn6_y7O_DVkaU0Ri^_D4tq?00C^IS^xk6Y^+)U00CjLS^xn8uK*}tlv;qeS^xk6ZoXOo00D2xS^xk6Y0z2#00DH?S^xk6Y1~=>0RXZ900AlJS^xn6`Tzg{De_tX0Ri~{DE3-_00C_LS^xk6Yy?{X00ChNTL1w9u>dGv>{@^jTL1t7au! TL1t7aNt`200Cd-TL1t7ckEjL00Ck0TL1w7wg3PDDgIjk0Ra9000AioTmS(9{QxKoTz~)pY!X}m00C?oTmS$8VIW)p0RpuEC|?3xfF@i300CtzTmS$8ayVQ700DJATmS$8bVOVL00Ci2TmS$8a!_0V00CuITmS$8a9msf00C`cTmS(8xBvhFDQ;W<0RR9200Aj@TmS(9{{Sd_Tz~)pY=T?>00C@@TmS$8VUSz^0Rp!GC|`11fR t<9ZwOrg0RZX%00Ai!T>t?A=>RAgU4Q@qY#v t<9VJuw$00CbzT>t<9c{p7F00DG9T>t<9X+&KB00Co4T>t<9Z%|zT00C@PT>t<9Wn5hV00MA!4qX6ZT>t<9Uuazb00DGzT>t<9Wq4fx00C!yT>t<9a)ey~00U)jVQ5?cx?BK?T>t?9x&QzHDV|*b0RYGV00AkeT>t?95&-}KDY9Jv0Ra&KD7IaI00C^gT>t<9Y{Xpv00CjjT>t?B#{ei_tX+W6T>t<9bk t<9ZRlM900C+4T>t?90s#O4Df(Ri0RaI4DE?i500C?SUH||AYz$ri00L}b^j!cFUH}0Cxd13%qFsO(UH||AWg=bx00Cz%UH||AVKiO<00DG5UH||AY(QQB00D1CUH}0AzyJUNDN NUH||AVX$5R00DBgUH}0A#sB~TDZ*X=0RRpG00Ak?UH}0B4FM?7UVs1rY}Q@?00C^?UH||AVdP!_0RqJUC||~2fa+cV00C$4UH||AZv0*V00C(NUjP6BatL1l00ChRUjP6BWfWfk01IJbWMyV>a&&fLXR=oSh*$vfSODHx0ESusd|LqcTL6$<08Cy0yj}nrUjP6BUm#xq00DGPUjP6BWmI1P0RX%J00AjrUjP9B1OWg6DQaH;0RaO6C~jYX00C@tUjP6BY u<00C^;UjP6BVc=f?0Rp`MC||-~faYHS00D69UjP6BZTMdR00CwGUjP6CV|2J*00dwF00CbLU;qFCaui?y00CthU;qFCb|7E?0RYMX00Aj1U;qIC6afGMDK=mL0Ra;MC^}$(00C@3U;qFCY)D`L00Ci6U;qIE$p9!{FkpaGU;qFCWLjVV00CuYU;qFCb8KJ$00DAxU;qFCWq4o!00DM>U;qFCWrSb=00M7vCSU-HU;qFCUyxt`00DEFU;qLD%mB^+00AkcU;qLD76BLm00AkoU;qLE6#*9kD7avN00C^iU;qFCY{*~$00CjnU;qLF%K*&)C||5#fYe|B00Cv%U;qFCWawZ300D3AU;qFCZS-IO00Ce6U;qFCWdLCS00C cDVkyc0RbZcD4t?~00C^IVgLXEY^-7c00CjLVgLaG*#IbClwyFmVgLXEWWHhm00CvnVgLXEbI@V{00DB=VgLXEW!z!_00DO5VgLXEW$0o60RY?p00AlVVgLaECIJ8eDgI&r0RbfeC<0@E00C?WV*mgFY!G7r00ChZV*mjH+W;tE_+o$@V*mgFbRuH_00C((V*mgFZ8T#500C(_V*mgFY(QfG00Cb{V*mgFWlUoL00C!GV*mgFVOV1T00DGfV*mgFY-D2q00D1mV*mjF-T(jrDRyH30RSig00Ak0V*mjGCjlsgV}JkwY>Hz500C^0V*mgFVVGk80Rr6sC|`PGfSzLj00C~KV*mgFZ?Izk00C*XV*mgFbi88#00C*jV*mgFbI4-=00D2#V*mgFaMWV}00CdxV*mgFZ{TA900DC5V*mgFW$a@B00&}YWoL4BdKh5 sG;s5{vDI#P50RiCvC?;fp00CtzWB>pGdNgDJ00L!c9Ap4GWB>sG-~a#tDN1Aj0RSoi00AjfWB>sHDFG;0WPktxY+hsl00C@fWB>pGVQgdo0RrCuC|^!wfO2F200C}zWB>pGZ-it300C)=WB>pGbdY2K00C*1WB>pGbDU%V00D2JWB>pGaHwPe00CdFWB>pGWwc}f00DBkWB>pGVZdYn00d`gb97o?0H9z1Kx6>MWB>pGI?QAM0RU(M00DI5WB>pGbLeCM00Cj{WB>pGZ}emU0RU+N00CtHWdHyHYXoHg00ChNWdHyHau8(z0RU WdHyHY&>NE00Ch_WdHyHc1UFa00C}JWdHyKV`6A&`eXnWWdJN?090iF00BB$WdH#IYyvuLWq<$yWpZTz00C=yWdHyHVSr@-00DA_WdHyHXPgKC00Cu^WdH#HZvp@TbDm`Y00C~IWdHyHZ>VJe00C*PWdHyHbhKpv00CjTWdHyHbiic*00D2tWdH#HZ~_1UbJAr100DH?WdHyHZro)600DL4WdHyHZ|G$J0RV9V00Ct5WdHyHY4~LT00C_NWdHyHVFYFX00DLiW&i*IZV+Yw00d-mV`-RW0L*0o?qvWLW&i*IIvi#I0ReIXIxc2_00DC}W&i*IbUbDN00C)2W&i*IZb)VT00DJQW&i*Ia#Usj00CuMW&i*IWMF0h00D1iW&i*IV{B#s00C}tW&i;Ia{>SXF@9zM00CcuW&i*IZ-{0900DH4W&i*IUzBD500B0dW&i;Ib^-taF{Wk!00CdBW&i*IZ?I+n00DHiW&i*IU%X}j00B6{W&i;Ic>(|dG0tWH00CdpW&i*IZ`fu400DH~W&i*IU*u*000T2IHlStz$YucQW&i*IU+`uC00D3QW&i*IX#{5g00DFgX8-{JbOHbYWEN)t0RVLZ00A%{X8-^JFeGOH0RVUc00A&CX8-^JFf?ZX0RVdf00A&SX8-^JFhpkn00S{HHY#TTI%fb%X8-^JUr=WN00C`YX8-^LVP$X-X8;;!0AyzX0RVRb00C}zX8-^JWqfA<00Cu!X8-^Ja)@UD0RVae00Cu`X8-^Jb(m)W00C^CX8-{Jd;$OgWU6NX00C*PX8-^JY_w+p00CjTX8-^JcED!<00C~sX8-^Ma%W;`YG(kBX8@#U0L*6q00BDEX8-{Je*ypjbn0gS0RnvjI%VW%fbM4i0Re&nbM$8b00D9UXaE2KVF+jd0RWT<00D3mXaE2Kbr@&>00D0vXaE2LWpWN^03>Jt0RVmi00DC}XaE2KbU0`L00C(}XaE2KZbWDR0RVvl00CuCXaE2KXH;ka00CrLXaE2KX<%po0Reyla%N}%00DGtXaE2Ka&%|_00CioXaE5QD*-xUWoLC`-eiD`WdL|)04itzN@xIpXaE2Ka)xLC00D2JXaE2Kbf{ 1nDH>@20Rb%nC?08m00D9&X#fBLbS!BA0RS=r00AjDX#fEMF#;$&X@CF$bV6wW00M1qGHC!xX#fELFaiJpDOza&0Rb-pC|+rR00DGlX#fBLaBOJ+00m@cZE|neXaM$T02FBeP-y^iX#fBLUwCN%00AP7X#fBLB9v(W00DBEX#fBLZ=h)a00DHSX#fBLVXSEY00DBcX#fBLWw>bo00D5mX#fBLZ^UT;00BD6X#fEMGXgr$X@CF$bJl4900C^?X#fBLVdQB500DC9X#fBLW$ YXATNc0_9c00DSPYXATNWl(DX00DGXYXATNbzExz0sw9Wa0LJXDQIf|0s(CWZv`lBYk&X&YjkS>00CouYXATNZ-i?A00C@@YXATNUyy4600DWHYXATNa-3@b0RVCZ00AkeYXAWOaRn%>Yk&X&YqDzq00CpVYXATNZ@_B+00V7wY+`EwqH6%gYXATNI?QVT0RW~300AlBYXAWOr3NVEYk&a&s0IK5De`Lo0Rg85DE4cB00BPyYXATODlO`300e9R00D9eYybcOZxn0*00DFwYybcOVIXV(00D9)YybcOWh`s}00D3^YybfOss;c7DL!lf0RgE7C_-$200C=AYybcOV^C}W00D1SYybcOY+P&r00DAhYybcOVQ6ds00DMxYybcOcyw$400CusYybcObbxFC00DJ|YybcOZH#OH00M7*IBWotYybcOI+$z#0RgK9I-+cV00C>LYybcOW3X%h00D2dYybfQa|JqV+G~KkYybcOa>8r?00CjnYybfP@CSC(YybcOc-m|L00Cv ^p00C@PZ2$lPVO(th00DMlZ2$lPUubOr00DGvZ2$lPWpr%-0RWx=00Ak0Z2$oQod76=ZGZp)Wr}S800DK9Z2$lPY?y5T00Cj1Z2$oPpa1{?DXMJ%0Rf)?D6VaQ00DHgZ2$lPa=dK-00D2pZ2$lQc5tL^0LX0s00CdlZ2$lPbl7bG00Cv*Z2$lQb7y*O0OV}|00BDcZ2$oQp#VDcZGZp)a{6rm00D0TZU6uQbO>$$00D0fZU6xQ1_A&9DH?770RaU9C?0Nr00CtrZU6uQbu4ZG00C?=ZU6uQVK{C800DMBZU6uQUqo&I00DGLZU6uQWl(Ma0RRXB00AjnZU6xR2LdQyZh!y*bY^Y<00DAtZU6uQZ**<|00D4%ZU6uQUx01^00DG{ZU6uQWsGhB00MJoR&D^2ZU6uQI+$(%0RagDI-+iX00DHUZU6uQb+B##0RT`600AkyZU6xRPYNi&Zh!y*WyWp*00DK*ZU6uQY}9T500CjzZU6xQQVIY8Dduhf0Rd48DC%y200DIHZU6uQa` ;mN00Cu|ZvX%RW1MdQ00M4fTyFrPZvX)S$pku_1b_emZnAFx0RdkHI#>mO00DHsZvX%Rb;xf300L=mx^Do^ZvX%RY}9W600Cj%ZvX%RbmVUU00C+0ZvX%RXYg+T00C+CZvX)RP6Yq~DFSc+0Rc?~C D00DC{aR2}TZa8rO00Ct_aR2}Tb3}0f00DGLaR2}TXi#wg00M4jB5?p#aR2}UWoh(q09 gaZZdKJ00D0{asU7UbUbnZ00DGDasU7Ubx3jm0RXNB00DGVasUAUCI|olDPD2_0RSop00AjzasUAVDF`TRa)1B asU7UX_#^V00C^CasU7UVWe^Z00CpFasUAWB?u^AVse16asU7UWwvqv00DKvasU7UY{+r|00CjnasUAUEC>JrDcW)X0RbxrDBf~_00DI5asU7Ua_n*d00D3EasU7Vc5u{k0QhnM00CeAasU7UbO>_*00CtVa{vJVC Us7}c00CcGbN~PWWngpw00DGnbN~PWb!>D100ClhbN~PWX?S!100DA-bN~PWbcA#O00DH0bN~PWVUTnH00Cc?bN~SWH30wtDWY@$0Rc1tD5i9P00C~SbN~PWZ?tp(00C*bbN~PWbii}~00C*nbN~PWbIf!A00D2(bN~PWaM*MJ00Cd#bN~PWZ{&0U00DC9bN~PWW$<(W0RTAx00AldbN~SXH~}aCb$|c?Wd?Ns00CqUbpQYXZxnR^00C_pbpQYXUm$e=00CttbpQYXYb
*00C*XbpQYXZoG8>00DKvbpQYXU&wU;00DB&bpQYXWz=;500Cs$bpQYXZ{T$R00Cp>bpQYXZtQgc0RTS%00AlZbpQbYJ^?8Fb$|c?X99Kr00C|ab^rhYX%Kb*00D9qb^rhYVH|b<00Ctpb^rkYK>+{(DK2&Z0Rcb(C^B|{00DG3b^rhYX+U-W00C`Ab^rhYX-swi00C@Lb^rhYUs!ek00CuQb^rhYXJmE&00CiYb^rhYbZ~Y600C@vb^rhYZ+vzD00w$uV`XP{_H+O~bpV)k0P=MJD0TpXb^rhYUx;=900DHOb^rhYWvF%l0RT4v00Akqb^rkZHUTKOc7Ol@ZoYN^00D2tb^rhYY0P#200DH;b^rhYY1noE00DE}b^rhYZ{&6W00D67b^rhYU+{JS00Cw8b^rhYa{P7x00ChFcK`tZLjeE*DGql40Rch*C=z#o00CtfcK`qZWFU6{00D0%cK`qZZ7g>H00CbzcK`qZWjJ>L00C=0cK`qZVMKQT00DAJcK`tZMF9W-DOPs?0Rcn-C|Y-b00DGhcK`qZX=rx<00C`ocK`qZX>@l000C@zcK`qZUx0T200DG{cK`qZZj5&T00Cu^cK`qZa+r4j00DBIcK`qZb) DGGQ10Rcz>C=Pgl00CzdcmMzaZX9?300C(tcmMzaawvEJ00ChxcmMzaWi)sI0RT$@00AjLcmM$bN&zTDcz^%_bV_&t00C)IcmMzaZCH2!00C)UcmMzaY-D%<00CcWcmMzaWpH=^00C!qcmMzaVSIQ100DG@cmMzaY>0RO00D1~cmMzeVq;}zc2IW!s&@bccmO(h0F-zD00Cc`cmMzabg*~;00CvTcmMzcb985}b^r)>0K9kr00CdZcmMzaa?p4H00D2-cmMzabli9V00D2}cmM$azXSjQa_)El00DLKcmMzaZ}@ls0RX@R00C|Uc>n+bX$W}$0RX}T00Cqac>n+bZWwt000DI#c>n+bXe4<60Rh1TUn+S300Cn#c>n+bWjJ{N00U@kbN+Y$4tW4Rc>n+bIz)K@0Rh7VI#PLn00DGZc>n+bUtoCv00DDmc>n+bUu<~*00Cukc>n+bZFqSA00C)!c>nn+bWt4dU00C^8c>nn@7fZnk*<00CvXc>n+bWx#m=00DBwc>nn+bY}|PO00d)lXJVjv0I+!g%y|Ifc>n+bI_P--0RhhiI{JBl00DCVdH?_cUkG{t00DOndH?|c>jwY <0h=ZYp{J00Ct#dH?_cWi)yK00DA3dH?|c?FRq>Wkz}c00DJMdH?|c?gsz?b5?o)00DDadH?_cWng*$00C}hdH?_cbZmM600C%ndH?_cXLx!500C)!dH?_dY;sU~0EBt~00VMoVkCM1Kzaa*dH?_cI+S_<0Ris^I-+`j00DETdH?_cU$A-r00CmQdH?_dVP_P20K9qt0RZy_00CjldH?_cbkKSL00CjvdH?_cWZZfH00Crh3;+QD^#uR{VeWbW00DIJdH?_cVfcCg00CtFdH?|c_5}a|VG4Ty00DFkdjJ3dVHA4+00CqgdjJ6d`UL<1WhQ$700C_(djJ3ed1)*s05E$10RZ>~00Cq`djJ3dVMKcX0RZ_000DGRdjJ3dZd7{!00DJcdjJ3dZ(w@>00(tsY;tsPW8!)M=z0JIdjKGN05*F7N_zlidjJ3dI&6CY0Rj63I*NOM00DE5djJ3dUzmFU00Cv5djJ3da-@3z00DKXdjJ3dbg+8>00DEhdjJ3dWxRU;00MGn!g>J0djJ3dU&wm^00C^$djJ3dVc2^B00Cp(djJ3dY2 J00D0 00CuYegFUgX>5J~00d!UWM(RT0Ni~57=8e9egFUgUwD2100DD~egFUhXKCVm0FZtF00BCdegFXhyaqa;et-Z0Zl-5N000Cige*gdhba;ON00C}(e*gdhZ-jpU00Co)e*ggh{s902UvrRu0G59M00C~Ae*gdhbfkX(0RaC200DEbe*gdhYqWm=00CpVe*gdhVZeU?00Cmge*gdhY|MWE00C^$e*gdhVc35F00CmMApigYU*vxP00C&~e*gdhWAJ|f00DLOe*gdhZ~T7%00w4rY+_?{27dr3e*jj00IGig-hTiBfB*miItYLO0RaI5IwF980RV#s00DF`fB*miUo?OK00C|~fB*miW DL00D9$fdBvjZzzEP00DF^fdBvjVKjjN00DA3fdBvjWk7)d00D4DfdBvjZ%lyz00BBufdBykWCc1{fq(!3b6$Y}00C@ffdBvjVQhf_00DAxfdBvjWq5%A0RW)}00C=+fdBvkbZ&lu0EmGA5&)M6r3a@6g$I!bj|ZU#lLv oClZ(o(Cwtfq(!3X2gL200Cw0fdBvjWb}am00CwCfdBvjZ~%e;00DUhf&c&kbPR$300CbTf&c&kc^HBK00Cnjf&c&kVI+b800Czzf&c&mV`*jVfB=qx05F080RV9X00DDEf&c&kUr2%g00DPSf&c&kVN`+u00DAZf&c&kUtod&00DJof&c&kZES)70RR;S00DD&f&c&kUwnc900DP`f&c&kVTghN00DB2f&c&kUzCCX00DEFf&c&kaG-(!0RY$r0RY(s0RY+t0RY lWe|e^00D3og8%>la~y*J00D3!g8%>lZzzKR00L=m0D}N7g8%>la=;}300C$|g8%>oYi4Y8yn+Dgf&esw07QcT00BBmg8%^m;08KegMa`5b7F%400CcWg8%>lY;c1B00C@vg8%>lb$o*W0RU7A0RUAB0RUDC0RUGD00d@mX=I3l0E~kGkb?k}g8%>lYnX!o00BCxg8%^mSPD9@gMa`6W^;mr0Jehw00CdVg8%>lWXOX600C*vg8%^lV+Q~MbJ~Ld00DH~g8%>lY~+Ig00DLCg8%>lVeo?h00Cz9g8%>lU;Kjr00D0Tga82mWCs8Na1Mk300C_hga7~mWf+7200DF!ga7~mUnGP800D9;ga7~mWiW&Q00DM3ga7~mZ#;wm00Cb@ga7~ma!7;#00D1Kga7~mbX0@@00D1Wga82mWd{HObY_GA00C@jga7~mb#R0L00Cikga7~mW_*MI00Ccuga7~ma)^Wg00Cu=ga7~mc9etw0RU$Q00DHMga7~mZlr_&00CvHga7~ma WK00DN|ga7~mZ{UOg00Cd-ga7~nX?B`~0PKVS00DCHga82mW(NQPbOMC{00C|Wg#Z8nWekM?00D9mg#Z8nau|gG00DI#g#Z8nV BhX4TpZU+DXbQXsI00DCvhX4QpVIYS900D0%hX4TpZwCMYWip2V00C<@hX4QpVLXQb00DABhX4Tpa0dVZWKM?w00C@LhX4QpZ&-%_0RV9a00CrVhX4QpX=sN400C@nhX4QpVRVN800DM-hX4QpZh(gX00d)VXlX2m07!=bUWWjNhX4QpUyO$U00Cv5hX4QpYovz&00CjDhX4Qpa z00CtNhyVZqWDJM^00D0jhyVZqZ5W6E00CbfhyVZqWh96I00C<%hyVZqVK9gQ00D9~hyVcqa|Zwcb3%v!00Cu2hyVZqWlV?w00DARhyVZqXIO{;00CuQhyVcqbO!(db83hH00C}phyVZqZ*+(N00C)whyVZqbbyEe00Ci!hyVZqbc~1q00D23hyVcqbq4?ebDoF*00DHOhyVZqZm5U=00DKbhyVZqZ?uR20RVOf00CschyVZqX~c*C00C^uhyVZqVbF*G00DN^hyVZqZrq3f00d-mV`*fF0GNmXx`+VchyVZqU+9Pc00DCPhyVZqWdMl)00CqMi2wirZw!e500CnXi2wirZWxIG00Ctli2wirUnGeD00D9;i2wirZ!n1f00DG1i2wirZ#; EqWZH=U00C* iU0rsbl{2r00D32iU0rsZS0Bw00Cd}iU0rsW%!B!00BDwiU0utf(JSTi+}(DWeSS`00CbTivR!tbQp^O00CtlivR!tb0muZ00D9;ivR!tVK9pT00Ct-ivR!xaAsm U06dET00Cb@ivR!ta#)K100D1aivR!tbYzPF00D1mivR%tmI(j>DRzqh0Rfc>D0+*400CrxivR!tWr&La00C@{ivR!tY?O-t00Ci|ivR!tbfAj>00DERivR!tZmf#{00C*TivR!tU$~0^00DEpivR%tm7!c01S)(00BA@i~s=vnF%@^jDP?EWFm|J00DC4*i~s=u%Lo7gWS)!w00C{Hi~s-uE~tzE00CvLi~s-ua DHM$W0RR#R00Ai=jQ{}w5eO(Gjer0FWh#vT00D9`jQ{`vbvTUx00DG9jQ{`vVML7p00C}FjQ{`vXHbm*00C)MjQ{`vb6kx80s^T6M*=8c8jXNrjQ{`vbZCtL00C}xjQ{}v=m!7+bb^fl00C}>jQ{`vb&QPw00D23jQ{`vW0;Kq00Cc~jQ{`vbEJ&`00DEVjQ{`xZ)s%)jR1U&0I-b!0RTD!00CsgjQ{`vZ^(@R00DB&jQ{`vZq$tc00Cv%jQ{`vWZ;be00C^~jQ{}vI|Bd#Zt{%)00Cw8jQ{`vW&Di*00M7v?2P~djsO7wJOcm$WfG1600DCrjsO4wX&jCK00D0zjsO4wbtsMi00D6>jsO4wax{(r00DJ6jsO7wJp%v%WJZnv00Cu6jsO4wa!`%{00CcCjsO4wbX<-A00CuUjsO4wY-o-E00D1qjsO4wX>^VN00U=qb_k9DK#l-(X4Z}X00Cy&jsO4wb>NNw00D63jsO4wU+j(m00C(7jsO4wWB85$0RTV)0RVLc00CqOj{pDxZw!wB00MPs1djj`j{pDzVRB{ujsO^s0Msi00RTY*00C<-j{pDxZZwYo0RTb+00C`4j{pDxbwrN<0RTe-00CuCj{pDxbySZ400C@Tj{pDxVqlK|00CcSj{pDxa%_(P00Cukj{pDxWO$DN0szqj(*ytkDTI#z0|BlE&;-&1D2k7O00DH6j{pJy6$KXs00AkYj{pM#EeI3^76m9esE>eVbASK=a;}d600Cvbj{pDxbi|JU00Cvnj{pDxZP1SZ00D2-j{pDxY21$h00DI3j{pDxZs?By00Cw0j{pDzcXD)oj{uyH0Q8Rl0RTh;00CtPkN^MyYz&Y900D3kkN^Myau|>R0st)qF9iSrDI|~p0|875ECntFC@PSE00DC_kN^MyV?2-m00C)2kN^MybV!f@00Ci6kN^MyZB&o|00DJckN^MyWnhp100?qnWoc}0b#Ate0LYF2B98z%j{r)K0Q!#r9*_WLkN^S!wgF%VE__e`00DB2kN^MyZ DbkPt0RcY>DAtgG00DH|kN^Mya^#Qz00L=m%#Z-;kN^Py1_uBEDf*BA0RaUEDE^Ru00CtLkpKVzZVZtC00C(dkpKYz3I_lIDISpk0RagIC?b)700DF;kpKVzV=$2b00Ct-kpKYz5C;GODMFC|0RayOC`OTh00Cu8kpKVzY*di|00CoKkpKVza$u1F00C)ckpKV$aBOm8@Q?r)kpMiA0Bn%}0Rs01C|{_MfO3%l00Cu$kpKVzbC8h$00MGho{#{RkpKYzW&i*Id8Uy700CsGkpKVzVX%<^00CvTkpKYzX8-^JXTp&H00C~skpKVzY0QxT00DH;kpKVzVc3xX00DB|kpKVzV&stk00C+0kpKVzZ19l)00Ck4kpKYzXaE2KasrY700D0Xk^le!atx9H00D9mk^le$a${w@kpTRW02q=000Cbfk^le!b1aeo00DI}k^le!bU2a#00Ch>k^le!bVQN>0RU 00Cw8k^le!U;L5)00C|SlK=n#ZwQkB00C(ZlK=n#bQF^S00ChdlK=n#bRd%e00C|$lK=n#Wh|2b00C(-lK=n#ayXL!00nb;czJJ1k^p*=0IHGz+L8c1lK=n#Uqq7t00DJclK=n#ZD5lC0RVvk00DArlK=n#WpI-K00DM(lK=n#WqgwW00C)&lK=n#V~CRg0RV#m00L!rj*|eClK=q#f&l;la-x#}00CvDlK=n#bgYvA00DHelK=n#X}FUB00C{jlK=n#bHtMX00C~wlK=n#VbGHR0RV&n00MG&){_9-lK=n$a&(xJ0N|4V00Cd>lK=n#YxI)<00D0LlK=n#X#kV}0RZ0z00CqSlmGw$We}7A00DCrlmGw$VH}hI00CtplmGw$Y$%if00Ct#lmGz$;0FK!WIB`p00Ct_lmGw$b3~K?00DDKlmGw$Wl)p=00DAVlmGz$;RgT#WMY&600C@flmGw$Wo(oH0RZ9$00DA%lmGw$Z+w&h00DA>lmGw$a)^`w00eSyXk|2%09=#+a+Cm$lmGw$UzC&p00C&GlmGw$W2}?_00DKflmGw&VP$Uy8vp<$0JxL@0RWW(00CvplmGz$nF0U-W!97c00DH`lmGw$Y2cIq00DC5lmGw$ckGk^00D3ElmGw%ZeP%p0Qi&u00D3QlmGz$mI43)a}JdN00DFol>h(%X&99N0RWc*00D9&l>h(%Vh+%m;wL+Wjd7r00DG9l>h(%X+)I(00DAJl>h(%cTkl800eGgX>SOX03MY9G?f5Wl>h(%UtE;{00C}pl>h(%Z*-La00C)wl>h(%bbyrr00Co$l>h(%VT_dk00Cc;l>h(%d6<;|00Cy6l>h(%X{40^00DHWl>h(%Z?KgB0RWH#00CvZl>h(%ZoriQ00D2tl>h+%kpln$a?+Im00D2-l>h(%bljBy00D2}l>h+%k^=w%Ztj%;00D3El>h(%Y50`@00DIVl>h(%VFZ={00DFgmH+_&l>-0)Zx)sS00C(lmH+?&WFVFR00M7e5S9QYmH+_&lLG(&bvBj&00C_}mH+_&lmh?(Wk!|&00Co4mH+?&Zcvs000CiEmH+?&bX=AI00DDimH+?&X=s)J0RWZ*00C}vmH+?&Z+Mmf00C)!mH+?&bA*-v00C)=mH+_&mjeI+X_l4%00Cs0mH+_&m;(R-Y^Ig~00CjDmH+?&W3ZM000C*XmH+?&bi9@T00D5qmH+_&nF9a;bIz6k00D5)mH+_&ngaj 00CqGmjD0(WdxT100C|amjD0(X%LqH00CwemjD0(WgM3P00CqomjD0(ZYY-k01Iwya%p6CVQ*)1b C0mH 0N9oQ`j!ALmjD0(Uo@8h00CuUmjD0(V`!HE00C)kmjD0(c665j00CusmjD3(%L4!bZibft0RYSc00DH6mjD0(b(EI?00L=mikASImjD0(U!a!&00C#JmjD0(Z?KmD00C^amjD0(VZ4_B00C~omjD3(%>w`dZqAng0RYYe00DH^mjD0(b=;Q#00L=m(w6|@mjD0(U+9+r00C_BmjD0(VfdE-00DIVmjD0(X#|)600CzTm;e9)X%LtI0RYzn00D0tm;e9)av+!h00DU>m;eC)*#iIpZ!(ww00DM3m;e9)ay*y-00Ct}m;eC)+5-RqZBCc~00DPWm;eC)+XDara$cAK00CuUm;e9)WN4TG00D1qm;e9)V|17R00C}#m;eC)+yejsV}_Uj00C)=m;e9)ZjhJ&00D27m;e9)bDWp}00Cj5m;e9)a;TU900DHam;e9)Y_ymF00n1raAkEYm;gwa09cp+fS3Tfm;e9)U%;3E00DW{m;e9)W89bk00Cj*m;e9)XXuy!00Cw0m;eC)-2(stWcru@00CwGm;e9)ZUmVC00C(VnE(I*W)PVG00CtdnE(I*WE`0Q00C|ynE(I*btstt00CbvnE(I*Wi*)p00D41nE(I*c|e%}0RY|u00DALnE(I*a!{E70RZ3w00DAbnE(I*WMG*90RZ6x00A;=nE(I+Wp-wn0C1TA00CcinE(I*bby%v00D1?nE(I=VPtG{WpK!s02Y`4^q2rfnE+Oq0F0Rc00Cc;nE(I*X{?z500CsOnE(L*G6nzvY`&QQ00CjbnE(I*ZOEAb00DB&nE(I*Z`7Fp0RS@w00Cv-nE(I*WaOCu00D36nE(I*WAK>(00Ce2nE(I*a{QS900D0Tng9R+YzUeF00D0fng9U+GzI_xWg40Q00C|ung9R+X(XBe00VAgY}%Os6q*1kng9R+Uoe^g00DG9ng9R+V?>$&00Cu6ng9R+YEYU000ClFng9U+HU 00MMlgqi@Rng9R+U#yw{00D2dng9R+a=e-V00Cvfng9R-Z+cvs0LYpE00Cdlng9R+ZrGXt00D2_ng9R+Y2=y!00DFAng9R+Y4Dl=00LobY=r=%h5!HrW@2S${F(r^hX5Xl0LY2}00CbHn*aa-au}Nc00D0vn*aa-bR?Sq00D0*n*aa^X>4?EWMOt~W|II0lmNbz0JfC?fR_NcnE>{h05F>X0svYCcmMzabXc1J00CcKn*aa-b7Y$U00CcWn*aa-a&Vgf00Cuon*aa-YDbAY!0Rfr>DAJpN00DH^n*aa-W#F3t00DF6n*aa-W$c>(0RWu@00AlZn*ad;oCGNRn}7fTZUUSD00DOjoB#j;ZxEaS00CqcoB#j;bR3)j00DI(oB#j;XegWj00nesX>xOjn*gMn0LYsF@|yrIoB#j;Uo@Nm00DAJoB#j;Wl)>|00CrHoB#j;Z(N)J00CoSoB#j;ZfKkU0RVIa0RW!_00Aj@oB#m y4?00C&~oB#j>bZ2REbesT?oB*_(0Pvgu00Ce2oB#j;V+fr900C(Zod5s xN!od95+0EC?YuAKntod5s00DHOo&W#=WvHG200C{To&W#=Z?v8O00C*bo&W#=bikef00C~so&W#=Wz3!c0RVXf00Al3o&W&>cmycio`3)WXX2g!00C+0o&W#=X7HW>00D0Ho&W#=Z~UGB0RVdh00Aiop8x>?dITs8pMU@XWfGqN00DIxp8x;>Y#^Ti00Chpp8x;?V|D_c04$#X00Cbzp8x;>bUdE`00Ct}p8x>>eFOjjDNdgN0RemjC{mw*00C!Mp8x;>X<(lK00CxZp8x;>Zfu_b00D1up8x>>e*^#lDSn>-0ReslD1x7W00Cu)p8x;>bI`00C^4p8x;>VVs`;00Lunc%J~Gp8x;>U#On|00DHep8x;>Ww@UJ00d`qaCAtY0KT69jBx<8aR2}TU&NmP00DH?p8x;?baK+30NkGd0RWE#00AlNp8x>?jsz(1pMU@XW%i!{00CtFp8x;>Zv>zK00C_Zpa1{?Ul5=G00C|mpa1{@Z)xJ6034tI0RVRd0RXWC00Aj5pa1~@ummVHpnw1YbUL5_00C)2pa1{?Zb+a20RXcE00Ajfpa1~@vIHntpnw1YY+j%M00C@fpa1~?y959MDRQ6y0Rg%MD0ZNL00C@#pa1{?WrUyr00DT4pa1{?X^@}*00LofY@h&^pa1{?U!0%-00DBQpa1{?VXUA400CvPpa1{?Y`CBR0RXiG00Ak)pa1~?w*&wIDbAn(0RgrIDAJ&S00C^+pa1{?Y~Y{(0RXuK00AlNpa1~@xCAKhpnw1YZ1$i400CwGpa1{?cm$yU00C(Vp#T5^VQ}W401%-70RprHC|}5+fEJ+u00DF$p#T5@Wh|ip00eYtV{ c4*00Ci=p#T8@g9HEpDW0JK0RV*r00Akep#T8@hXeotDYBse0Re^tD7K-100DBmp#T5@XvCoa0Rn^sC||6hfXbl&00Cssp#T5@W!#|v00DI3p#T5@Vd$X%00DCDp#T5@V)UT^00C+Gp#T5@YyhGF00ChJq5uE^V+^7I0Rn;qC|{zXfD)nr00Cqeq5uE^VI-me00Ctxq5uE_V{(|G05GBe00Cb%q5uE^XF#F=00D1Cq5uE^Y)qm600CiAq5uE^ZdjrK0RV{v00Ajvq5uH_hy*BTqJRJaWNxAW00Cikq5uE^WqhIl0RW2x00Ak8q5uH_iUcT(qJRJabCRL}00DEFq5uE^WuT$}00DBQq5uE^aIB&L00CdJq5uE^cetVe00Cvbq5uE^Zp5Mh00Cdhq5uE^bkL#z00Cvzq5uH^jRXJzDdM640RfBzDCVMo00Cv}q5uE^bo8PC00C+Gq5uE^asZ k-+@b&mqW}N_UksxF00C?oqW}N_VIZRb00DF+qW}N_X)L1v00Cz*qW}N_X*i<*0RWK%00AjPqW}Q`kOU}5qksSbbWWoH0RWW*00AjnqW}Q`lmsYXqksSbaAu >20RYbg00DOhqyPW`Zw#aW00C?gqyPW`Ul^nS00DCzqyPW`X(Xfo0RRmN0RSio00Aj9qyPZ{CkZGxq<{bcWj>?;00DGHqyPW`VN9d|00CuEqyPW`a#*AQ0RSoq00AjvqyPZ{DG4ZOq<{bcWNxGY00C}xqyPW`WqhOn00D4 _<00C@9r2qf{Voap~00CiAr2qf{Y*?iL00C)Ur2qf{VPvHM00DMtr2qf|cVRB20C1%M00Ccir2qf{bbzG*00Cu&r2qi{GzkC!DUziC0Rb}!D3+yw00Cv3r2qf{bfl#K00CvHr2qf{Y_O#O00CvTr2qg2bYo#~a%W^PqyS!|0FI;pvZMg`qyUVi0KBCD00CdZr2qf{W#FX%00DL8r2qf{W$dK@00DLKr2qi{4haDO90>pcDFUVd0RbBcC `00Ct>rvLy4bYo; X3wx$5urU3q?06?bz00Cb{rvLx}ZDgka00CucrvLx}clI0r00CcirvLx}d3>h;00Cx#rvLx}X^5u)00DH4rvLx}Z NrvLx}bFilX00CjPrvL!}6bS$UDZ-}!0Ra;UD8{FN00CvprvLx}bkwH+00CjzrvLx}W#Fd(00DC5rvL!}76||WDe|WP0Ra^WDE6m-00CwErvLx}YXqnO00ChNr~m-~7zqFYDHf;z0Ra~YC>p4M00Ctnr~m)~b||O-00C((r~m*1V{~WirvMPB05qro00Cb*r~m)~Wk{$100DMRr~m)~X;i2H00DDar~m)~a$u+c00DJor~m)~V{E7Z00Cukr~m-~8VLXaDSoH`0Rb5aD1xYf00DA{r~m)~Wss-<00C~6r~m)~cbupI00D2Jr~m)~U#O@600DHar~m)~WwfXO00MGnc&Grnr~m)~U%;pU00DT)r~m)~WzeVq00DH?r~m-~LJ0r?DdMOA0Rce?DCVeu00Cs|r~m)~W%Q^300DFQr~m)~asa6S00CtNsQ>^0b_}Ti00CtZsQ>^0au}%q00CbfsQ>^0bR?+&00CtxsQ>{0L ^0Wk{(200DDOsQ>^0a#X1R00CuMsQ>^0c3`Oh00CuYsQ>^0a%`yp00CcesQ>^0b9ku$00MJqFsT53sQ>^0UxcXu00DB2sQ>^0Z ^1b#L6L0HCP=0RT7&00AkmsQ>{1Hwh@Tsek|hbh@bk00DBssQ>^0Z^)?t00D5$sQ>^0U(~4p00Cs$sQ>^0Zs4f^00C*{sQ>{0Itc&)De|cR0RcG)DE6s<00DITsQ>^0as;XX00D0bssI21a1g2h00CbXssI21WE`ph00C|yssI21X(*}y00CkyssI21ZZxU@0RTJ+00AjLssI52I|(R6s(=6iWlE|500D4PssI21d046d00DGfssI21Uu3EP00CrbssI21Zg8pq00DJ&ssI21Z+xl%0RTP;00Ak8ssI52Jqaj`s(=6iWs<4@00D5CssI21d7!EQ00DHSssI21U#zMC00CsOssI21Ww@#U00C#dssI21XT+)i00DK%ssI21Y|yFz00Lrgf~o-4ssI21U)-ty00DI7ssI21W$dZ|00UxmXY8o}I;sHjssI21U-+s300DUhs{jB2atx~g00DFos{jB2a~P`t00C(ps{jB2XC$it00Ctxs{jE2KnVZ=DK@JB0RcY=C_1Zv00C@3s{jB2bV#cJ00Co8s{jB2WK^pF00wb$bZv5G_@w}FrvSXC0H&z`FslGss{jB2I$)~+0Rc`4I(n;s00C)$s{jB2aEPk_00Ci+s{jB3Umz-^0FD0RRX900Ak0tN;N34gdfFDT=HB0RasFD2}Xv00C~4tN;K3Z=9?E00C*DtN;K3bf~NV00C*PtN;K3bF{1g00D2htN;K3aKNkp0RjgAC|`uEfX1u<00DH&tN;K3W!S6$0RR{P00AlFtN;N47XT>etbhOkW$vs100DFMtN;K3a{R0S00CtJtpET5b9UaW00^xB00CtVtpEW43IG5BDITo=0RagBC?c(Z00CtvtpET4bTF*|00Ch(tpET4ay+d700Cb@tpET4VMwh200DGPtpET4VN|UE0RRjD00AjrtpEW53jio&t$+XlZfdOn00D1utpET4X?U#w00DG N00AkStpEW56#yupt$+XlWTveE00CvLtpET4bF{4h00DBktpET4Wx%Zf00DN!tpET4Wz4Mr00U%ja$2nbmaPENtpET4U)Zex00DI7tpET4W$dj00RRvH00AlZtpEW54*)3qt$+XlZUU|V00D0bt^fc5X%Mae00DFst^fc5X&kNq00DC%t^fc5Zz!$+0RR#J00Aj9t^ff65dbJSu7Cgmc|NWH00DGHt^fc5X-uvF00CoCt^fc5Z& 00CsAt^fc5Wvs3M00DEdt^fc5a=5Ml00Cvbt^fc5cEqj#00Cvnt^fc8aCTvGF0KG-t^ky-0MM=g00Cdtt^fc5bm*=C00Cw0t^ff58UO$RDf+Ge0Rb5RDE_X100CtLuK)l6a}2Kl00D9muK)l6Wf-pj00DL$uK)l6WhAcv00D9;uK)l6Uofu#00DG1uK)l6X*{n000C}7uK)l9a&u>C7_9*EtpN0{07$O@00Cc4uK)l6ZeXtf00D1iuK)l6X>6|m00DGzuK)l6VR)|q00DG $L00C~ouK)l6Z_KX%00C*zuK)l6bl9%|00Cj%uK)l6bmXr90RRyK00AlRuK)o67XknQDf+Jf0Ra{QDE_a200C|UumAu7Zw#;i00C(dumAu7bQrJz00C(pumAu7b0n|;00D0*umAu7a4@g{0Rj*LC|~rifHtrI00DG7umAu7Wk|390RSNa00AjfumAx8AOa{@uz&yoWnQoV00DDmumAu7a%`{w00CukumAu8b9PR!0C=zf00M7i>aPHPumAx769NDMDUz@N0Ra*MD3-8*00Cv3umAu7bfmBV00CjDumAu7a b)99s(#7v48*pWE!ym00Ctpu>b%8b11O@00D9?u>b%8Wi+t>00DM7u>b%8Wk9h200U%ja?Y>-3b6o2u>b%8Urez800DGbu>b%8Wni%Y0RR~S00Aj%u>b)97y>A8v48*pZg#N%00D1)u>b%8X@s!=00DH0u>b%8X^^o100DEBu>b%8Z=A6J00Cw2FaQAn9RdIWDXy^q0RbEWD6+AD00CvVu>b%8Y{0Pq00C#lu>b%8Zp^U&00DOTJOBUzW!SL*00eM$VRE9e0I0D5(y;*Eu>b%8U*xd>00DINu>b%8W&E)K00VM!XNa%>X0ZSQvH$=9Ita1=0RbceIu^2k00C(nvH$=9a3rz-00ChtvH$=9ATY8300ApDvH$=AAS FDT00C?qvj6}BbZiW>03@>j00D0*vj71APXGV`DLS(N0Rc_`C_b}*00C%3vj6}AV@$IE00DGTvj6}AX;`xW0RU3~00Ajvvj71BQUEAuvw#2rcW$!)00Cikvj71ARR911DT1>A0RdD1D2B6u00DB0vj6}AWt6i300C^8vj6}Ab)d5V00n4raCv3ivH&!*0A8~Ie6s+ivj71AR{#J3DZ;Y=0RmP4Uns1z0LHU`00Cvpvj6}Aa@ex~00Cj%vj71ASpWb5DeAKT0RdP5DDJa>00DCJvj6}AW&E=M00C?Qv;Y7BbqKTo0RUS700Ai!v;YACS^y{*w15BsZXUD%00D0%v;Y7BX)Lq=00DF|v;Y7BVK}q^0RUkD00AjPv;YACU;rpcw15BsY)-TQ00MMuKC}Q >!00D1ywg3PDX?(T-00DG@wg3PDVTiT>0RWHy00AkKwg3SEj{qo`wtxTuY@W6N00MMuj +We0RVyk00Akywg3SEfdDALwtxTuXU4Vw00C~!wg3PDY1Fm=00Cs$wg3PDVc@m^00Cv@wg3SDga7~mDe|@e0Re*mDE79100D0Nwg3PDZv?jh00C(Vw*UYEZV oC_cA<00DADw*UYEWlXmK00C@Lw*UYEby&9m0RV^q00Ajvw*UbFhX5#Ow}1cvWp1|s00DG%w*UYEVSKj$00DA>w*UYEUx>E=00D1~w*UYEa+J3K00DWLw*UbEiU0rsDW pM1M!A59xc~qGbdI?I00Cv1xc~qGbD+5Z00CvDxc~qLbaQ8KVRGcN0IszFc(?!vxd1%50IazH00CdJxc~qGb E0Ri&?D1y6y00C!+y8r+IZjieG00C*1y8r+Ibey{Y00Cj5y8r+Ia;Uoi00CmIy8r+IX|%fl00C^ey8r+IVZgfp00Cphy8r+IU(CAz00M1uc)I}7y8r00DFCy8r+IW%RoM00CqAy8r+IX#l(c00DLeyZ`_JWemIk00CqYyZ`_JUl_aq00C?syZ`|J@Bsh;DJr}G0Ris;C@#E!00C??yZ`_JWjwq900Cn{yZ`_KY-1$607$$50RYee00AjjyZ`|K&jBc0ynp}!Y+}3s00MMuq&xs>yZ`_JZ*aT-0RYGW00Ak0yZ`|K#{npWynp}!XNtT400C~2yZ`_JX_&kK00Cs4yZ`_JVWhkO00CvHyZ`_Jb$&Vk0RYYc00AkyyZ`|K%>gLDynp}!XvVw%00CppyZ`_Jbkw{600L=f+Pna^GXMbq(g6SgDeAlc0RhngDDJ#~00DROyZ`_JVf?%R0RYqi00Aioy#N6L(*Y<9y?_7#WfHvr00DFwy#N3KVIaK#00D9)y#N3KUo5=<00D0@y#N3KayY#J00DVEy#N6K@&Nz=DN4Nn0Riy=C{DeA00DDUy#N3KbzHpw00DGjy#N3KVQ9So00DGvy#N3TX<>3`ab<9MXLGng08YFBdb|Lzya0Ye0JgjU;Jg3=y#PeL0Cc?o00Ccmy#N3Kbfmoi00CvHy#N6KzySaODYm@;0Rg`OD7w9X00DHsy#N3KWyrk%00DE(y#N3KWz@X@0RX}Q00AlBy#N6L!2u}by?_7#W$L{E00DIJy#N3KVfeiO00DCTy#N3KUj)7Y00ChNz5oCLbP&D(00ChZz5oFL vu00Cz#z5oCLZZy6C00C(_z5oCLWI( h&(00DG%z5oCLVSK&-0RZd)00Ak8z5oFM>j5Z?zJLG$Y?8hJ00MMug1!Knz5oCLZ=k*a0RZR$00Akmz5oFM=K(0RzJLG$ce=g+00Cjbz5oFL>Hz=&DbBtC0Ria&DAK-w00C&&z5oCLW8l6300DI7z5oCLY3#lL0RZj+00AlZz5oFM?ExtKzJLG$ass~q00CtRzW@LMY!JTy00DItzW@LRWN31EaAh3608+jHs=ffoz5w#R035#n00CbjzW@LMbUeQR00Ct}zW@LMX}}i%00nYraCv1S7ywup08YOEb{GJl7ytnR-vM7JRKEbg7=Qo)Woo|w00DA#zW@LMVSK*;0RZ>`00Ak8zW@ON_W>x3zkmP%b&|gT00C{9zW@LMX`sIV00Cd7zW@LMBCNjv00APhzW@LMa=5<$00D2lzW@LMbi}^^00CjjzW@LMa?rm300CvzzW@LMaNNHD00wDia&vTV*t-C*y#U(107$<8g1-RbzW@LMI_SRu0Ri~|Is(9e00C(TzyJUNa1g)%00ChZzyJUNARNE|00Ao^zyJUOAS `B<00DG*zyJUNa)7`900Cu&zyJUNZj8VH00C?UlmGw$UzorE00Cv5zyJUNI;6k=0Re>pI;y~c00CvNzyJUNU%0>k00CvbzyJUNaKyj>0RWK!00Ak`zyJXOkO3&vz<>Y&ciO-J00Cj*zyJUNa_GPS0RWW&00AlVzyJXPlmTBT?!W-}z<>Y&bpF5q00C(V!2kdOZ4ki#00DCr!2kdOZXCe?00Chl!2kdPd2-6Y04Tu#0RV>q00AjD!2kgOi2(osDMG;j0Re~sC`Q4600Cu8!2kdOWK_Wb00C)Q!2kdOa$vy#00DAl!2kdOWo*F!00DM#!2kdOZ+O7~0Rn~rC|^9mfPTRM00DG_!2kdOX^_DH00C~6!2kgOiva)uDWbsu0Rf5uD5k-H00CsI!2kdOWwgNn00DHm!2kdOW5B@x00Cvj!2kdOZp^^|00C~&!2kgOnE?O+Dc->V0Rfl+DB{6@00Cy`!2kdOb@0Ie00Cn5!2kdOU;M!U00CtJ!T 7s(00DDy!T h>00C|q!vFvQVIac*00D9)!vFvRa&)x904&1*00Cbz!vFvQcRa%Y0RWQ$00AjT!vFyRk^v}8!+-z*cT&Ru00CiI!vFvQa$v&%0RWc)00Aj%!vFySmH}TVX2Sq*!+-z*Wp={=00DM_!vFvQX^6uB00Cu=!vFvQW0b=H00LoULc;)>!vFvTbZKL9F2Mkt!2n9a0HDJF00CdB!vFvQYrMk%00C~o!vFvQX~@F>00C^y!vFvQI@H4e0Rfu!vFvQaOlGT00Cj{!vFyQJOuy&Df+_z0RcM&DE`BM00C SVGP9p00DLq#Q*>SX&A)-00Ctl#Q*>SV SaxldJ00Cb%#Q*>ScRa-a0RTh=00AjT#Q*^TLj@>I#ee_-cT&Xw00CiI#Q*>Sa$v;(0RTt^00Aj%#Q*^UM+ILfX2k$-#ee_-Wp>2?00DM_#Q*>SX^6!D00Cu=#Q*>SW0b`J00LoULd5`@#Q*>SVIn2~00DBU#Q*>VY-4hC7{ma^!~meh0I SVcf+400AK4#Q*>SE9k`l00JN@^uqw|#Q*>SWAw!U00AKW#Q*>SYXrss00C|a#sB~TX%NN$0s)=@oB=2r0)PMkWgNx;00Cnr#sB~TZY;(C00Ch##sB~TbU4NU00DD8#sB~TX+*{V0RW=`00Ajb#sC2Uq5&vW#()3;b6Um#00CuU#sB~TV`# dVL00C^0#sB~TbILdX00C*9#sB~TWSBPq00C*L#sB~TX0XNp00C~c#sB~TZ@k6;00MJ%h(G|uKmY&%U&zJ)00DH;#sB~TW7x(300Cv*#sB~TYUIWM00Cm^#sB~WVPs=(n8pC4#sI>`0Pw~D0Ro@_C||@xfcC}!00DFe#{d8UWfaE%00LxZO2z;h#{d8UIv~dY0RgN5Ix5G200C(*#{d8Ua5%>R00Ch>#{d8UAVkLi00ApX#{d8UUpfN-00CuI#{d8UV_e4o00C}d#{d8UVQ9wy00DGv#{d8Ub9Bc500C)w#{d8UWPry200BCN#{dBVWCA*j$AAC DL%;n00DDG$p8QWa!knp00CuE$p8QWb6Cj$00DJg$p8QWAY{n^00Crb$p8QWWpK#=00Com$p8QWZhXlA00Ciw$p8QWc8JLU00Cr<$p8QWVU)=L00AJH$p8QWa-hio00D2N$p8QWW~|8o00Ahn$p8QWAh^i@00C*f$p8QWaKy;~00Cjj$p8WZgb9!dbSRt$0H_Cm00Cvz$p8QWW8}#I00C+0$p8QWcJRpn00Cw8$p8TWf(ZZtbOOo%00D9a$^ZZXZw$%+0RV#u00Ctf$^ZZXa2(1200DU-$^ZZXbSTOI00Ct#$^ZZXV>HSD00C(_$^ZZXc0kGi00Cu2$^ZZYaAXq708GjN0RV>y00Ajn$^ZcYh6yNO%76d?bY{u`00DAt$^ZfYiwTVh00Aj_$^ZfZiV2JfD1gd<00Cu&$^ZZXaFEIX00DWH$^ZZXbezfn00Cd3$^ZZXWT?sj00CvL$^ZZXXSB)y00C#Z$^ZZXb->C100M7pbjkq6$^ZcXj|l()Db~sW0RfH)DB8+^00DF0$^ZZXW$4NP00Cp}$^ZZXY4pkf00DOT$^ZZXWdO?n00CqM%K!iYUku9t00C?g%K!iYY#7S`00MAf%*p^B%K!iYUnI)_00DF^%K!iYWi-nG0RV{!00AjL%K!lZhzTe}%YXm@WJ=2b00CuE%K!iYY*@ 7~@00DM#%m4rZWq8a000Crv%m4rZAcV{S00Co)%m4rZX^_kS00DBA%m4rZWt_|a00C~I%m4uZ& V!aUl`2*00DCz%>V!aUnI={00C|)%>V!aZ!paO00C(>%>V!abUe)f00C)2%>V!ab4bkq00D1K%>V%a(+B_obXv^-00CcK%>V!ab7ai`00CcW%>V!ab8yW700DJ&%>V!abbQSK00Ciw%>V!bbY+Om03b*J0RYqp00DHE%>V!aU!2VV00DEN%>V!aU#QIh00C~U%>V!aZ?w$-00C*b%>V!abimC300Cjf%>V!abj-~F00C~&%>V!aW!TLC00C*<%>V!aa^%eb00v=aaC2{I+{^$9%>Y!*0FKQ7>dgR-OaKJ}UJ6_aVhUgiWC~v>@XY|yOn?9Za|+G?0RU?X00Ai^&Hw=cY6>VQ&VT>`b1u#R00Ct-&Hw-bV?53P00C)2&Hw-bc1X?u00CuA&Hw-bWK_-o00CcG&Hw-bY+%j+0RWK-00Aj%&Hw=dkP0YYaL#~;H2?qsY `Zqm*G00D2_&Hw-bY2?lT00DIB&Hw-bY4FYf00DFM&Hw=be+mErDFV*`0ResrC X00C@5&j0`cZ%EGo0RV#v00Ajf&j0}df(j^D&wu~{cV5o`00CiU&j0}cg$e)xDRR#M0Rn^yC|`EZfapO000C!w&j0`cZivqS00C)^&j0`cWR%YU00Ci|&j0`cWuVUh0RV{#00Aki&j0}ehzclQu+M=0KL7v$Wwy@%00DHu&j0`cVaU$_00DB&&j0`cU)0Y400D2>&j0`ca^TMZ00Mb%=Fb3DKmY&;VQ*z{a(QTHl+FO2&H%2?04C1>PR{^r&j6;+0PN2I00Ce2&j0`cbQsV800MAj9?k$B&;S7d)d&Fq)(8Or*9ZXs*$4muDLT*q0Rh+uC_d1D00Cb_&;S4dUrf*d00CuE&;S4dbXd>;00DJg&;S4dVr0+&00C)g&;S4da&XW900DG%&;S4dbbQbN00Ciw&;S4dUx?5E0RU$T00AkK&;S7eW(p{n(0~8|Y@W~n00C^K&;S4db*#_;00CyQ&;S4dU%1c!00Cvb&;S4ddc@EG00C*r&;S4dY|zjE00Cjv&;S4dY245N00DI3&;S4dY3R@Z00D09&;S7dX$k-VDf-X=0Rd Ze00C)2(EtDebV$(v00C)E(EtDeb5zj)00D1W(EtGeaS8wdDQ3|C0ReCdC~DDw00Cui(EtDeba>GK00Cis(EtDea)i+U00Cc$(EtDeVUW=P00DHC(EtDeVVuzb00VDuWF*l5V9@}g(EtDeU#QUl00DHi(EtDeWxUY<00(Dyd3s-Ib0p9JF3 ^xg0s#sMnhHAR(SQH}Y3$Je00D6J(EtDeVf@hm00AHZ(f|MfV+hg!00AHl(f|Mfaum`400D0r(f|Mfb0E?H00C|$(f|MfWh~MF00DC{(f|MfAUM(h00DD8(f|MgWpJp>07TLN0sut@Lk0i=DOAz`0s%w@LIx;W(trQ~Y+%v=00CiY(f|MfV{p;{00C)s(f|MfbbQhP00D4<(f|PfM+N`^DUQ+r0Rct^D3a2E00DED(f|MfWuVdk00CpB(f|MfX{^!!00DNg(f|MfWw_D+00Csa(f|MfU&PV?00C^u(f|MfY|zpG00DI@LI3~(VJ1TW00C* 0189^4$}Z0(*OVgUnJ8200DGH(*OVgWlYlm0RT}300Ajj(*OYhPzESm(|`a0ZDP{^00DPu(*OVgaB$NA00Cci(*OVgWPH;A00Cu!(*OVgY>3kU00Cc)(*OVgbd=Ko00Cv1(*OVgVOp#J00C~M(*OVgU-AI}00CvP(*OVgY`D_^00CmY(*OVgVZ_q_00DE#(*OVgY0%RE00nPnb7f?R(g0G^0HD(VtkVG2(*OVgI^5F$0RdnJI`Y$i00C+E(*OVgZ~)W*00ChJ)BpehAPm$100Ao!)Bphh8V3LYDIU}S0Rb5YC?eE=00Ctv)BpehbuiQb0RS8a00AjH)Bphi8wV&r)PMj1ZbsAq00D1K)BpehX;jnz00DGb)BpehVPMn%00DAl)Bpehb!^lC00DGz)BpehVR+O40RSEc00Ak4)Bphi9S10g)PMj1bB@#i00DEB)BpehWt`Li00C~I)Bpehbg0w-00C&O)BpehXSCD+00C*b)Bpeha=_F80RSKe00Ak?)Bphi9|tJV)PMj1dDheb00DH~)BpehY2?%Z00C|4)BpehY4Fql00DUR)BpehZ~W8%00D9W)c^qiBnJQiDGt>D0RbZiC=%6x00C_n)c^nicOcaO00D3&)c^niUo6!C00Cq&)c^niWjNIU0RSck00AjP)c^qjB?l--)qns2Voucn0RSim00Ajn)c^qjCkH5C)qns2cV^W900L)WR@DG*)c^qiDhB`oDSp)e0RSuq00Ak8)c^qjD+efy)qns2caqfr00Ci|)c^nia-h`!0RkxpC|`orfTq;|00CvJ)c^nia=6t100DKr)c^nibi~yF00DE#)c^niWzf|C00(GuVsLD7XExLTe$)WQ)Bp(806x_KbkzXX)c^niU) VP00DD;)&KwjWrWrM00C!;)&KwjUy#-S00Cu|)&KwjY@F5r00Cm6)&KwjVW`#s00C~U)&KzjFb4nuDZ17G0Rb-uD8AN!00Cvh)&Kwja?I8M00DK<)&KwjblBDa00DE})&KwjW#rZX00C#})&KwjU+~rd00Cw8)&KwjZ2Z;$00CkG*8l(kVF=d%0RUSE00Ctb*8l(kav0YD00DI#*8l(kbR^dR00DC<*8l(kWiZzO00Cz<*8l(kUp&_U00D18*8l+kTn7LFa8B0%00DQF0RR92Z&=p=0RUbH00DGl*8l(kXlT~}00C!i*8l(kX>`{B0RUeI00DG>*8l(kW`x%O00Cu+*8l+kU s9V00C(}*Z=?lbVS$y00D4H*Z=_lG6w(wDOT730Rb@wC|cNn00CrR*Z=?lWoXy{00C@n*Z=?lUv$_200DA(*Z=?lVSv~G00Cu&*Z=_lHU|I!DU#R#0Rc4!D3;iO00Cv3*Z=?lWTe;t00D2R*Z=?lW3bo&00CdN*Z=?la=h3800D2p*Z=?lY{=LE00D2#*Z=?lW7OCH00Cdx*Z=?lW#HHV00DI7*Z=?lVeHrd00Cw4*Z=?mY;ug)0QlGd0RS`y00Aio*#H3nGY2RP*?<56c@o(G00DFw*#H0mX&~7E00C?!*#H0mX)M_Q00DF|*#H0mbvW4o00Cb<*#H0mZA94s00D1G*#H0ma!}a-00CxJ*#H0mUtHM$00CuU*#H0ma%kBA00DJw*#H0mbadGO00Cio*#H0mZh+YU00C!)*#H3mP6q%1DU#U$0Rc@1D3;lP00Cv3*#H0ma-`V+00DKX*#H0mbg*#H0mZtU3r00Ck0*#H0mZ1~v#00CkC*#H0mVg%X%00CbL+5i9nWf0l`00DFs+5i9nX&l-B00C$s+5i9ncPQEb00Cbv+5i9nZ#3Ef00DG5+5i9nbwJtx0RU1500AjX+5iCoQ3ohc+JFE7Wmeh%00DAd+5i9nb!6HA00DDq+5i9nZ*bZG00D4z+5i9nczoIb0RU7700Ak8+5iCoQwJ!F+JFE7WRltd00Cv1+5iCnRtEq9DW=*00RdG9D5~0k00CvN+5i9nW4PJ?00C~k+5i9nVZ_=100C^u+5i9nVbIzD00Cmw+5i9nU) X0RTP+00Aj1+yDUqJqIW-+<*W9Wj5RZ00DA7+yDRpbwu0%00DDK+yDRpZ&2I-00D4T+yDRpcwF270RTV;00Ajz+yDUqKL;pm+<*W9baLDP00C}#+yDRpb%5Le00D1?+yDRpV~pGY00Cc;+yDRpbeP-#00Cp3+yDRpWu)8y00C;M+yDRpVzAr*0RTb=00Aky+yDUqK?f+n+<*W9Wyah900Cpp+yDRpZq(cW00Cjz+yDRpY~b7g00Cj<+yDRpV(i=i00Cd}+yDRpW%%3x00DIV+yDRpX$0K>00C$U-2edqOa}k~DHh!T0Rc+~C>q^>00Ctn-2eaqawy#Z00DI_-2eaqbTr)n00Ch--2eaqZb01t00C!4-2eaqX-wS!00m-YZ+CMh+yG+S0Jhu!5ZwS$-2eaqUs&A$00DGv-2eaqWpv#D0RTh?00Ak0-2edrLkB2?-GBfAWs2PZ00DB6-2eaqb(q}%00DHK-2eaqVWiyv00C~Q-2eaqXRzG>00C*X-2eaqbG+RE00CdZ-2eaqbjaNR00C~!-2eaqY1G{S00DB^-2edqMh5@^Ddyb(0Rcq^DC*sS00Cw2-2edqNCyA`DgNC60Rcw`C<5Mq00Mev_}u^q-T(jrX%OB30RTz|00Ai=-T(msNe3t--hcoBWh&kP00Cq&-T(jrZ#don00MJk8r}dt-T(jrUqs#j00DVU-T(jrVpQG$00CcG-T(jrWMJL^00CiU-T(jrWo+I600m=nXK-@<*Z{8E0D9d3;N1Xn-T(jrUwGaC00C}}-T(jrZ 00D0P-T(jrWdz><00DCf-v9ssAQ0aG00C?k-v9ssVI1E800Cnn-v9ssX(- }200C#d-~a#tX~f_F00Cvn-~a#ucWAEQ0MOt700Cdt-~a#tcHrOu00D32-~a#tddQjp00Cd}-~a#tZusB;00D3Q-~a#tX$0W_00DCf;Q#;uX%OK600DLu;Q#;uUmW2800Ctp;Q#;uIw;`)0RcD$IxgXW00D0_;Q#;uay;Px00Ct};Q#>uIR*d$bWY&_00Cc8;Q#;uWmw?=00CrP;Q#;uZ)D*B00Coa;Q#;uUvS|700DA#;Q#;uZ+zhZ00C@*;Q#;wZ)|di;Q)--0QlGd00?t$W_n|1aB{}q0FvMU?BD=M;Q)@|0D9d3;N1Xn-T(mrI|cv&biUyL00CdZ;Q#;vbaPJN0LbA000Cdl;Q#;ublBkl00Cp(;Q#;uW#r)i00C<1;Q#;uV({Sr00D1^;Q#>uItBm%bOPc400CbH;s5{va}44D00CbT;s5{vWf 8&E00DDy;s5{vX?WrQ00DM>;s5{vI)vf?0RcP)I*Q_e00C)`;s5{vaG2r%00Cj1;s62w^at_>00Akg;s62x^9S( @00CtV;{X8w`Ue03DH`Jd0Rj03C?4a000Ctr;{X5wWGv$V00D0@;{X5wV>sgg00Cb<;{X5wazx_*00D1G;{X5wY*6C>00D1S;{X5wV_f3^00CcO;{X5wWoY9700DGv;{X5wVRYjF00Cus;{X5xY;qLi0D$8F0RZ?100AkG;{X8x_XjAH 00C^S;{X5wX|&@200DHm;{X5wb-?2Q00Cdd;{X5wZOr2U00D2(;{X5wa@gYl00Cy+;{X5wU*zKe00Cv{;{X5wa`58-00DLO;{X5wbo}E000ChF B00C)Y 0Ra^VD3;`a00Cv3 qczUBbL<^am(0MO e=Kuf!X)xyi0RRvP00AjL=Kui#4+tnk=YRkKWlHA&00CrD=Kuf!Z&>F500MJkI_Cgh=Kuf!Uu5S100DV!=Kuf!Vsz&K00Ccm=Kuf!WPs-Y00Ci!=Kuf!WsK(l00CcOjQ{`vbeQJ=00C~E=Kuf!X{6@>00DBU=Kuf(c4KpAa&Xw<0EXiLHs$~T=KzxD0I=r(00BC-=Kui#BM3Us=YRkKY1Zce00D5`=Kuf!VdUok00AKC=Kuf!EAZz400JN@q~ZYf=Kuf!WBlg;0Rid?AO`3F00D9g=l}o#ZxrYN00DCv=l}o#ZXoCY00Ctt=l}o#b1dip1O)R3@ds`RdkHRIASiI(0G#0fGUx!X;(!1FZaC-w00D1O=l}o#X;|n00RUSA00DGl=l}o#WoYOC00C@n=l}o$b8lYg0Cea80Rw{qI$t3CYJjlF0IC!K00U)dHDKQWdguUz=l}r#9RL6UWuoW+00DHS=l}o#VXWu?00DBc=l}o#U%2Q100CjX=l}o#bj0WY00Cjj=l}o#WYFjU00Cdt=l}o#ZQSSp00DL4=l}o#ZRqF#00C+4=l}o#ZuIB?00C+G=l}o(a&u>CZ5XWp@~r^$t^i1{008L#1OyHO3<7EicL`r8b1nwy0KBh&o@D@rQ2+n|ZXD?V00D0{=>Px$X*}rw00DGD=>Px$VMyr!0RTn=00C}P=>Px$cUb8F00D1a=>Px$a%AZM00ClZ=>Px$UvTLF00DV+=>P!$M*{!>WrFDd00DJ|=>Px$Y>epu00Cl>=>Px$Uzq6t00C^C=>Px$VWjB*00VS$c~0p7eCYtH=>P!$ivj@vi~;}wbi(NX00Cdd=>Px$Zp`Tb00DGL8vp 8U!s2c#-8vp?Tp8_ae9e@A Px$VF2m?00CtN>Hq)%at!JK00U)oV@@0ZavT7h8~_0Vy8 Hq)%c_!)r00Cw)>Hq)%X*lWt00DG9>Hq)%Z$#<<010$vb7N#@a&BtA=>XE{0OaWa66ydx9sq OWUr_1*00C=u>Hq)%bA0Lm00Ciw>Hq-%$N~TXDURv@0RhJXD3a=c00Cu~>Hq)%YoO`?0RfEyVW#Q;0RYAV00Akq>Hq-R4d}>VN Hq)%Va)0P00Cvv>Hq)%a@gts0RYMZ00AlF>Hq-&$pR?o>VN Hq)%Y5eK{0RYSb00Aio>i_`(%K|72>wo|OWfJQE00DFw>i_@&WgzPS00C?!>i_@&Wi0Ce00eYnXJoAE0N&~V0_y-W>i_@&UpVUk00DSP>i_@&Wl-w?00DGX>i_`&oB{v=DPrpY0Rfu=C}!(`00DDs>i_@&X>{uV00C@z>i_`&o&o>?DTeC+0Rf!?D2nTV00DE5>i_@&Z i_@(Y-51y0Ho^x00MPsT i_@&Znl*G00CdV>i_@&WyI?M00BD6>i_`(ngTk|>wo|Obk^$t00Cd#>i_@&W#sDs00Cd>>i_@&Zt&{>00D3I>i_@&Y5eN|00DFY>;M1(V+ia300ChR>;M1(Uli;B00DU#>;M1(W+3bU00C(x>;M1(bS&%u00D0@>;M4(rUC!~DL(7~0Rg1~C_?Oj00DVO>;M1(VNmP<00C@P>;M1(WnAn400eYxZe)n+0JQ4>IP3so>;M1(I%w ;M1(aER;x00Ci+>;M4(bOiwbjs*Y#DW2>A0RfE#D5C6u00CvF>;M1(cChRK00D2d>;M4(m<0d ;M1(ZPe@l00DK{>;M1*aBXv%>;Sy%0O0HZ00Cv@>;M1(X%deB00DCP>;M1(WdQ8}0RX5400Ais?EnD+rv)fq5bc242mk;9c^2&e00Chl?EnA)Y$)vj00MPoS_}X#?EnA)UxXt700Ct_?EnA)ZA9$=1_6f!g#~>Dg9Up9cm*g%A%Fk@Yf$X~00MJsV(kEmApijY#03BWDRS)q0RqDXC|`E%fPN+b00C=!?EnA)V~Fhl00D1~?EnA)Y?SQ)00Cc`?EnA)d7$k800U`Za!Tz0Xzc)|?EnD)c?AFgdAjWY00Csa?EnA)VZ`kK00Cvn?EnA)bkOYp00DE>?EnA)U)=2g00DF2?EnJ+um!XQvIPJEDemn61OcxFdIhruu>~mh?SKFQc>L`E00CtR?f?J*bP( ?f?J*Wkl`(0RV~x00Ajb?f?M+i3KQB?tlORbXx8J00C}d?f?J*WoYgI00DAt?f?J*a&+zh00MG#O6~x9?f?S-j0Ly_wgmtIDT?j@0|AQ#w*|EYD3b1g0RWr@00Aka?f?M+n*}JS?tlORbgu3I00CdN?f?J*YrO6N00DEt?f?J*VaV aD90RW%{00Aku@Bje;p9Ltq@PGgTZo=>Y00C*r@Bjb-Z_w}n0RX@S00Al7@Bje;zXd4Z@PGgTYv%9(00Cp}@Bjb-Z}jj00RX}U00Aig@c;n@&Ew ;hF0RX@Q00Aku@&Ew=zXK?|@_+yVbHeff00C~w@&Et ;MD+bOJ>K%mwQQ0RXrI00Ajf^8f(>w*x3x^MC*WVqWtA00CoW^8f$=Uu^RL0RXxK00Aj@^8f(>xdSMC^MC*WVuJGk00Co)^8f$=Uy$ y8|eo^MC*WVy5!|00CpJ^8f$=U$pZ800S^FGIH|(mh%9*^8f$=Zou;Z00DH)^8f$=V$|~h00Cdx^8f$=a^Uj-00L!l=JNmys{jB2bnNp000DFM^8f$=Y5em50RS@v00Aio^Z)??G6g6M^nd^XbQ1Ic00Cnf^Z)<>VIcGX00D9)^Z)?>=?4G-bTae+00C|`^Z)<>bv*O{00D18^Z)<>V@UJ>00Cc4^Z)<>WmNP400DDa^Z)<>VPNzC00CuY^Z)<~VRLq5XLMt5ZEO ;Sy%0BrOC0RT_}00AkS^Z)??PXZ{Q^nd^XWv28100C^S^Z)<>Vzl%C00C{f^Z)<@ba!M5X8=6K04@dq0sy81UIzdHbky_!00C&)^Z)<>XW;Yz0RY1Y00AlN^Z)??!U!nv^nd^Xa`yB900D3Q^Z)<>Yy|ZH00D0b^#A|?V-WQK00A-<^#A|?VjT4V010n&Wp!b2X=G=x=>W3w0CMyI!1Msd^Z;aM0Os@n8hZdD^#B3@A^;!&00AjZ^#B6^ND4#>MhXA{DO&Xa0|7@0LkdL-C}Q=100D4l^#A|?b#(Or00D1$^#A|?a)9*!0s ^#A|?bKvy=00Cm=^#B3@C;+4h00AlT^#B3^Cjg@fDERe&00CwG^#A|?b_n(W00C(Z_5c6@bQJag00Chd_5c6@Y#{ak00Ctt_5cC^DgdSl00Aj7_5cC_DFCGjC^+_j00DVE_5c6@bV&9900C)E_5c6@V^sD400D1W_5c6@Y+&{P0st%ks0jc8DQxxt0s$)krwJ%>_J9BZWq9@g00C!$_5c6@VTkqs00DH4_5c6@Y?Sr@00L!iX7&J@_5c6_VRClt^#CmP0HF2&0s r>H00C?u_y7O_Y$*5u00Chx_y7U|GXSv(C|?lxfHe3300DVA_y7O_bV&FB00C)E_y7O_V^sJ600D1W_y7O_Y+(2R00CuY_y7O`aCQXv0BraG00Cce_y7O_bbR;#00Cu!_y7O_XNdR!00DB2_y7R_+6e#wDVq2I0RY?y00Aka_y7R`+X*PB_<#TbY_9kK00C^a_y7O_VZ8VN0Rq_xC|{oVfWr6y00Cvl_y7O_a@6<$00DK{_y7O_bl~^^00Cj<_y7O_a_sm300Cw4_y7O_aQOHD00C|O_y7R_-U$E!DGK=j0RZ3$00Ai!`2Ya{-w7xf`G5ccY##Xl00C?!`2YX`VJ!Io0Rr6#C|?fwfHL_200Ct<`2YX`bwv3900D7I`2YX`a!~mI00UuVZ *fRgzD00DWJ`2YX`bfozJ00C*L`2YX`W3c%E00D2d`2YX`Y`pmZ00Cvf`2YX`cF6ev00Cdl`2YX`Y}EMx00Cjz`2YX`b>R5`00DI7`2YX`W9<0=0RXxQ00AlZ`2Ya`ya@mSDFXTc0Rg)SC 00C@R`Tzg{Y+(8T00CiU`Tzj}@d+qjNcw SV`hWldY~K0+00C^~`Tzg{VeI+<0Rp`VC|}O{fb#kP00D0J`Tzg{Zv^`Q00C(V`v3p|bP)Rh00Cnb`v3p|WgPne00D9$`v3p|X(;;u0RX}Y00Aj9`v3s|#0dZaDL(rE0Rh7aC_?*y00C@B`v3p|Y*70E00CiE`v3s~!3ii|IQxKH`v3p|d1Ctj00Coe`v3p|Zgl$q00Cus`v3p|X@L6x00Co$`v3p|X^i^-00Cx_`v3s|_6Yz1DW3ZP0RZ?300Ake`v3s}_X#Mh`+xueY_j_R00C^e`v3p|VZi$U0Rr_2C|{!cfX4d(00DE%`v3p|blCd<00C*<`v3p|Zshv_00DLC`v3p|U-0_?00DCL`v3p|W&Ha900CqI`~Uy}ZwUMV00CnT`~Uy~W^S1K02KTH0RYAc00Ai^`~U#}$O!-eDK7i~0RhJeC^Gzj00C?``~Uy}Y(V?~00Ch}`~U$0#R({1DExp-`~Uy}b5i^O00DGf`~Uy}Y-IcZ00DJs`~U#}$_W4gDR%q-0RYSi00Ak0`~U#~%Lyoi{D1%fY>NB<00C^0`~Uy}VVL{?0RqVhC|`Q~fS&vS00DEP`~Uy}XR!PL00CjP`~Uy~VQg^x0KEJF0RYYk00Ak?`~U#}& b#A{r~|2;Rz^TKK_8T{r~_0WxoCZ00C#p{r~_0VbJ~n00DH?{r~_0Y~20;00D2}{r~|0?g;<^DenFN0RZp`00AlZ{r~|1?+GaU{(t}hYy$rP00C?Y{{R31VG#cS0Rrs_C|~mafEND%00Ctj{{R31WGMdt00D0<{{R31Z8ZM?00Cb*{{R31WkCM`00C=8{{R31VNCx300DAR{{R61`UwC5DPI2o0Ra3700Ajz{{R62`w1v)|9}7iY;ykq00C@z{{R31VSxVt0Rs66C|_d#fQJ7700C!={{R31ZkYc700C*9{{R31a-{zN00CjD{{R31Ww8GM01I?sV`OD!aB_BHXI%LJ^7#P7`T#Eb02=%N!u$ZZ{Qxxn0O Inb=DOvyl0RZd?00Ajv00993>j@}m0D%AjY;FJn00C@v00962VSE4q0Rrg>C|_Oxfr0=500D4_00962ZIl2300Cv100963V{}vi0iXZ@00Cd700962a F0RaF3VW p00C^`0s#O4Z0rI700Ck00s#a99|{`^AqpJ|C|}S5f%pOe00C$I0s#O4ZV&?j00C(h0|5X5avTEz00Chl0|5X5Whesy0RSip00Aj90|5a5DhdDrDLw-M0RbrrC_)2)00C@B0|5X5Y)}IM00CiE0|5a7CkiNEI0J!P0|5X5WMTsW00Cug0|5X5b94g%00DA(0|5X5Wq<<#00DM}0|5X5WsCy>0RSut00AkO0|5a5E(!nvDWU@b0Rb%vD5e8}00C^Q0|5X5Y_tOb00CjT0|5a7D+(xIoCATt0|5X5bjAY#00C*z0|5X5ZP)_=00C*<0|5X5Y~%w000Cd>0|5X5W$*(500C$A0|5X5Vf+ID00DFY1OWg6YzPDa00D0f1OWj6FbV(xDH;R;0RS=z00Ai^1OWj7F$yRs1c3knY%T-=00C?^1OWg6VLSu@0Rk@yC|@1~fkFfU00C}D1OWg6Z&U;U00C)Q1OWg6bYKJl00C)c1OWg6b8G|w00D1u1OWg6aCig(00Ccq1OWg6Z-fK^00DA}1OWg6Wsn2`00&}YWoL4Bdb9xnHUa^_0s$@q0g?j&6a)d51OWg6Uz`L100DHm1OWj6I0^s(DaHf=0RcA(D9QwZ00Cvt1OWg6de{U300L!czytx_1OWj6GztI#DeeRT0RT1%00AlZ1OWj7H3}&F1c3knYyt%V00C?Y1pxp7VGsoY0Rl4$C|~jffffY;00C|s1pxp7Zzu%;00C((1pxp7bTkD400C(_1pxp7b3g?F00D1C1pxp7a7+aO00Cc81pxp7Wmp9P00DAd1pxp7VPpjX0RTJ-00Aj*1pxs8I|?Xt1%UtoJ$eNJ00Aq41pxp7a)<>100D1~1pxp7bd&`F00Ci|1pxp7a-anP00CvD1pxp7aI6IZ0RTP<00Aku1pxs8Jqjqi1%UtoWWogj00C~w1pxp7WzYoy00D5;1pxp7aNGp}00D36kN^MyaOedA00Cd_1pxp7W%LCB00DFQ1pxp7VE_gJ00D9a1_1#8K?(o?a}ovt00DFs1_1y8avTN$00D0z1_1#8LJ9x@crFG300Ct(1_1y8bT|e900DJA1_1y8ZA1nE00Cc01_1y8a8L#T00DJY1_1y8Z(Ife00DAh1_1y8XJ`fi00DAt1_1y8Z*&F$00DG*1_1y8Z-52?00MArC b98TEWnXUh0G#_WuAp0RiL$0cr&SvIPO+1py2O0gMI#00BCd1_1&AH2_HpI=}{j00C*n1_1y8aL@(;00Cjv1_1y8AlwE400ArF1_1#8Zw3GXDeeXV0RVFb00AlZ1_1#9at0{;27v$pWda8Q00DFg2LS*9br1&u00C?k2LS*9ZyW~!00DC%2LS*9Vkidz0RVLd00Aj92LS;AbOtCm2Y~ 2d0RVRf00Aj*2LS;Ab_OVP2Y~ V2mt^AVYmnZ00DBo2mt{AeFgvlDar@|0RemlD9#9h00C~)2mt^AZ`=q000C*@2mt^Abm#~H00C+42mt^AbMy!S00D3M2mt{Ae+B>nDFz7v0ResnC<+OI00DUr2>}2BbQlQ%00C(p2>}2BV }2BY%mD{00Ct-2>}2CaCQI*0Xzu-00Cb@2>}2BbW8~W00CuE2>}2BXIKdV00DAd2>}5Bmj(a }2Ba(oE^00DJ^2>}2BbchK700Ci+2>}2Ba+C=H00Cv12>}2BaG(hR00C{L2>}5BnFas>DY6Lx0Rfl>D7FcK00CvZ2>}2Bb;Jn)00D8z2>}2Ba?l9@00UuVZ)6DptO)_u2>}5Bfd&8pDe4IU0ReypDDDY?00DXQ2>}2Bbo>bc00C(N3IPBCV+aZX00D0f3IPBCY!nIs00Cth3IPBCb|4A?00Cbn3IPBCY%B@^00Ch#3IPBCbvOzE00DG93IPBCV?+u80RV#r00Ajb3IPEDf(9s53V{FtcUlSo00CiQ3IPBCa%c(x00Crf3IPBCUvvrq00DG*3IPBCZh#5_00Cu&3IPBCa*PTA00DB63IPBCb(jhP0RV*t00Aka3IPEDga#<63V{FtZmtRe00D2d3IPBCX}k&n00DHu3IPBCW5@~t00Cvr3IPBCa?}a|00C**3IPEChXw!vDdq|R0Re^vDC!D<00DXM3IPBCWB3XI00D0P3IPBCWdsWW00C(V3jqKDV-O1g00C(h3jqKDW*iFv00Cwq3jqNDjRpV#DJ}~E0RfB#C^8Fy00DD23jqKDbU+IM00C@93jqKDbxaEZ0RWE%00Ajj3jqNEjs_@P3xNOub7Bht00C!e3jqKDVQ>op00LobQVRig3jqNDkp=((DTWIH0RfN(D2fY#00C~03jqKDZ 0VoRrdX00Cca3;_TEbd(GM00Cv13;_WEi3R`xDW(ho0Re~xD5?yB00DHc3;_TEZnz8q00Cvb3;_TEa>NV)00DB!3;_TEb >03r(k0Rox^UnpvL06YwV00Ct<4gmlGXG9JG00Ci24gmlGbWjcf00C@P4gmlGZ(I%m01IMcWoLGDVPs} 0elMq)C&PJ3;_TEUuX^i00MMjmJR_hivR!uWpbPj0en&b0RUzK00DHc4gmlGU$hPZ00DEl4gmlGU%(Cl00C^q4gmlGY|IV;00DK<4gmoGYz6=UblwgD00Cd(4gmlHW^>pM0q70^00Cd_4gmlGWcUsN00C+K4gmoIa0Vz}qzHi?hyVZqWeN`g00C uHVH^(u00D9$4*>uIZ*m+B0c@!N00Cbv4*>uHb2twH010z+XK-y|X=Y{g4FL#u0HzKB1P=k42mvS$0X`1_42J-=i2wisWpWN^0D$!X2MM77_5>jS_yivSX$f`-b0|7rVr6G_W3CMW#0`P;ZGc1%0gPn;cxC`<4*^PO0Dx!!00DAz4*>uHZ>SFe0{|odpb1h500Akq4*>%JCIF%dR0#k9DZ&o{0|6xfp$St7D9R6k00Cvt4*>uHbleXC00DL44*>uHZ0HXG00D3A4*>uHbMy}Z00Cn94*>%JC;+4hRtW$BDFzS$0|6%hqX|_BC=L*T00Ctb5CH%Ib|4S|00C(x5CH%IbSw}700Ch#5CH%IY&Z}B00Ct_5CH=KDgdSlSP1|DDM}Cl0|6-jr3qIFC{hrC00DVe5CH%IbYu_#00C)g5CH%IV{i}w00D1y5CH%IY D00C#B5CH%IVW66U00D1S5di=Ja$FGs00D4f5di=JUuY2l00DV!5di=JW^@q&00C)w5di@JF#`YrZiW#700C)=5di=JbC3}M00Ci^5di=JW1JBI00ne*WMgiw4*}>90e}$!q7eZod;kFeI{*LyDZUW_0RcJyD8dne00DEz5di=Jb 1Y!0RTY&00Aj@5&;1LKmaIw5`h2#Wr7j`00DZ65&-}KX^;{D00C^45&-}KVVn{H00C*D5&-}Kbf^*m00C*P5&-}KZnP2s00C*b5&-}KU%(Op00C~s5&-}KZ_E+_00C*z5&-}Kbl4IB00C*<5&-}KbmS5N00Cv{5&-}KaPSfV00C|G5&-}KZ~PJg0RTe)00Aio69EAMLI5ZX6M+B$Y!VXz00D0r69E7Lav&1{00DF+69E7LZY&c400D0@69E7LV>lB500D4569E7PVQFMzZvYYjND={Z5&;4e0Yno400BBm69EAML;yNq6M+B$Xl4@u00Ay;69E7LZgdj?0RSTd00Ciu69E7Lbc7QD00C}_69E7LWsnmA0RSWe00C~C69E7LZ=e$a00D2N69EALi~|4xWU> j7l8l)c~Tbv00DGb7XbhPXpQJ00Cu|7XbhPcAOUh00Cv97XbhQV{CpG0jL)N00CdF7XbhPdAJt=00DBo7XbhPWyBW&00DH$7XbhPbkG+800Cjv7XbkPX8`~KDdHCa0RU+M00AlN7XbkQXaOkj7l8l)bM_Yj00DFU7XbhPWds-j00D9e7y$qQa1a;)00CbX7y$qQcN`c200Ctp7y$qQZYUT50Rm Hm00UuSWI`7K+!p~}7y$qQUt|~o00DGz7y$qQWq23?0RU?O00Ak47y$tRY5^#S7=Zu*bdDGS00C~67y$qQX`C1V00DBM7y$tQZ2 00DAt8UX w?cDY_Z~0ReacD83qj00Cvh8UX+Sa?Bb500DK<8UX+Sbl4gJ00Cj%8UX+Sa^xBT00Cv{8UX+SaPS%d00C|G8UX+SW&9ce00VYobVM2fuo?jZ8vy_TUkDok00DFs8vy_TWgHs;00Czr8vy_TUnm;^00DU}8vy_Tax@zO00Ct>8vy_TbU+&c00L`t4jKVQ8vy_TVN4qV0RVjg00Ajn8vy|Ud;ut68-V};WM&%y00Cug8vy_TY;+p|00C@z8vy_TVSpO}00DG{8vy_TbBr4S00C~28vy_TX_y-U00Cc~8vy_TbEF#q0RVpi00Akm8vy|UegP=78-V};bGjP=00Cvf8vy_TY{(k{00C*v8vy_TX4D%200Cdx8vy_Tbl@8S00DF68vy_TY3v&T00L=jsv80F8vy_TU-%mV00CqI9033Ua|j#(00U!Ub;cP1RvQ5h9033UIuslM0ReykIwBl_00C(z9033Ua4;MJ00Ch(9036UGy(ttWI`MP00C)69036UHUa %y00C@j9033UY;YU_00D1y9033Ua(o;C0suq;Mgjl }9Dx7 J}00Cv_9033UZtxrd00C+C9033UZ2TMn0RU1000Aio9RUFXQ378m0v!Pi9f1G=auOW@00Chh9RUCVWh5N|00M7p*c<^W9RUFVI066xDLNei0RcAxC_Wv500Cq~9RUCVWlS9b00DGT9RUCVV^|#l00CuQ9RUCVZe$$+00C}l9RUCVZ*Uy}00Com9RUCVUwj<_00DD?9RUCVVOll-00C}}9RUCVVSGLS00Cz}IRF3wX`mee0RdG4C`31a00DHY9RUCVZnPZ%00CvX9RUCVa=;w{00DBw9RUCWVRarj0L&c$0RUJ600Al79RUFWR{|*D9f1G=W#%0L00DCD9RUCVb@Uwp00DIR9RUCVVE`Th00D9a9svLWWegqx00D3k9svLWZ5SQ_00Ctl9svOWS^@w8DJmWT0RdS8C@vm>00Ct*9svLWXFMJO00Ch_9svLWbVwcn00C@H9svLWZ&V%u00v=VWMg!8lpO(@9Ra2t0n!}-Bpv};9svLWUtk^q00DG*9svLWWq=+50RTt>00AkC9svOXM*=929)SP>be0|g00C~E9svLWX`~(j00DBU9svRXN&-v*00Aks9svRYNdij(D7+ql00DHu9svLWc+4IF00Cvv9svLWbl4sN00Cd#9svLWbmSfZ00Cv{9svLWb-?rh00&=VX=iYAa!ecnFdYGi9RY?O0k9qc@E!s79svLWI{Y310RdYAIvO8=00C(r9{~UXa3~)E00Chx9{~UXAT%EV00ApH9{~UYAS*l^0YD!C00Co09{~UXAW$Cx00DDW9{~UXbzC0-00D1e9{~UXWoRD(00C}p9{~UXVRRn>00C@z9{~UXY=9pD00Lz$h93diQUCz}FarPqWtJZS00DEF9{~UXZ=fFm00DBQ9{~UXU#uSi00DWj9{~UYV|0uk0k|Il0RS!o00Cvl9{~UXb<7_D00C^$9{~UXV%Q%600Cd#9{~UXbmSia00C&~9{~UXXYd~Z00C+C9{~UXZu}ns0RS%p00C_XAOQdYVGJMv00CtZAOQdYau^^100CnjAOQdYUnC#_0Rg}SbSfYL00nbwV`Of=9|3^t0Ho^x0w4h}AOQgYu>k-9WKJLf00C`MAOQgZ;s!2QAOQdYXI>xy00C}hAOQdYX>1??00C=qAOQdYb9f*D00CisAOQdYbc7%Q00C)=AOQdYbdVqc0s)NzW&>fS>Hq-%e**vkDW)I+0ReskD5@ZV00CpLAOQdYX}BN(00DHqAOQdYVZ 3G0RqJWC||hhfYu-Z00Cv(AOQdYbm$-f00Cj{AOQdYW%M8c00DCPAOQdZX=VKC0JNw800neoXJm4mAOQd&0R|xfGV1_%r~m{5uLXJqvjwpQUv?-EApt~d0QT*G00DR=AprmZWjrAP00L}umLLH_AprpZB?ABfWl|vl00C}RAprmZX Q600C?sA^`vaVk9B~00CbrA^`vaWiTQE00DG1A^`vaVLT!M0RSrl00C}DA^`vaWlSOg00CuEA^`vaa#$h(00C!SA^`vaUt}Ty00C!eA^`vaZg3(200C)sA^`vaa(p5I00U)ga1J5?LLvczA^`yaECT=mWtJiV00DEFA^`vaX`mtj00D2NA^`vab*v%*00D8bA^`vaa=0P^00DKrA^`yaEdu}nWXd7|00CvrA^`vaa?~OL00CdxA^`vabl@TZ00Cv@A^`vaZ0sTd00D3EA^`vaY4{=m00&`WZ*X&Tc7`DVoFM_eApzha0f-_2#3BLyA^`vaUj!oo00C_xBLM&bbtoeN00C((BLM&bWHciI00nPhX?10&5dqW_0XQH5NFf0_BLM>dE&!?tTnPXHDOMu^1OY7osR>&NX#yx-BY^+`Wn?1(00C=qBLM*b+5!LpZhj*H00DP`BLM&dVQ*=8BLRpb0e*S_0Rc$>Unm;^00DWNBLM&ba-<^x00CvHBLM&bbg&}<00MMtwj%)!8UXcZV)5^00D0nBmn>cZ5$*400C?wBmn>cVJIX400CbvBmn>cWHclJ00Ct>Bmn>cXh0+Z00Co0Bmn>dV{Qf{0Zb$T00MPk{38KUBmn^c)B*qjWo9G+00C!eBmn>cX>cR~0RYtk00CuuBmn>cb$}!R00D7^Bmn>cbBrVb0RYcZ=56n00D2JBmn>ccc>%*00CdFBmn>cd9)+}00C^eBmn>da&*8X0YY*B00(kmbZlj5b&eweydwdme*j!00d^z-k|Y7fBmn^dpavkO4uAjwbM7Po00C_FBmn>cVf-Wk00C(NB>?~datI{>00D0fB>?~dbQC2400DIxB>?~dbRZ=G0RcAvASNXN00C$$B>?~dXEY@N00DJ6B>?~dZ$Kph00DAFB>?~dXiOym00DGTB>?~dYgi=#0RU?Q00AjvB>@2eY6B=}C4m3|W^N?`00DG%B>?~dZhR#H00C)&B>?~da)>1X0RU|S00AkKB>@2eYy&8mC4m3|be<&v00C~MB>?~dX{;py00DBcB>?~daJVG_00MA#jwJ!UB>?~dU&JK=00C~!B>?~eY;s;D0n{Y{0RUVB00DI5B>?~dVdy0R0RUbD00Cw6B>?~dYxpGr00D3QB>?~dZ3HF(00DCfCIJBfT?1bbCIJ8eWfmp@00DF!CIJ8fWohmu0VE~?0RZs@00Cq)CIJ8eZ8# =z600CcmCjkHfXMiUG00D1?CjkHfY>X!X00Ci=CjkHfZkQ(l00LxTU?%~dCjkHfU!*4i00CvLCjkHfbhIY{00CjTCjkHfW56c?00CvjCjkHfa?B?I00D5)CjkHfW!NVH00Cs)CjkHgWnUsE0puqE00BDcCjkKg-vc`ICxHL~W%?%p00CbDC; H{cXD1iV0Wo9S=00DJwC; t`k00C_3C; *<{0lF&z-YWqbECB!kUmz?200Cn%ECB!kX*eta00C}3ECB!kZ$vBs00DDKECB!kVNfgq00DAVECB!kbX+U}00C@bECB%k QD0VD?00DG-ECB!kWrQpN0RR^S00AkGECB%l76d4iEP((4beb#y00C*DECB!kZm28)0RR~U00AkqECB%l7z8M|EP((4biOPB00CvjECB!kbIdFO00CvvECB%k8w3CWDc&pr0Rb8WDB>)E00D03ECB!kcknC$00D3IECB!kWc(}v00DFYEdc-lbqFm100C$YEdc-pbZ2RDb8ajFiYx)HECJXo0Te9(00CbbEdc-lZ!j$Z00D9~Edc-lc|0uv0RZO%0RSTe00AjXEdc=mA_OQ )00Lofh%EuKEdc-lU$`v+00DBsEdc-lVaP2300CvrEdc-lY}73Q0RSfi00AlBEdc=lDFgrkDe5f&0RbokDDEwR00C_DEdc-lZ2T<&0RSrm00AioE&%}nDg-DDE`b06Y!WU300CthE&%`mcpxqT00C(xE&%`nVQ>O20W2;70RkojC|~3)fif-u00DG7E&%`mWk@ao00eYtV{=F?0ctG)+ART2E&%`mUsNsu00CrXE&%`mWo#}10RZs>00Aj@E&%}n@B=7(E`b06Wr8jN00DH0E&%`mVUR8X00DBAE&%`mVw^4k00C*DE&%`mY^W{)00CjHE&%}m^8)|@DY`BJ0RZ&_00Ak)E&%}m_X7X{Db6kd0Ri>{DAF#000DB?E&%`mXy7gZ0Rr>`C|}4ff#xm&00Cs|E&%`mW%w=u00DIVE&%`mVFWJ$00D9eF984nVh}F@00C(hF984nY#c8E00ChlF984nV<;~H0Rr*^C||xVfi5or00Cq)F984nVL&ed00Cu2F984oV{)`E0ZcCe00Cc8F984nXIw7<00D1eF984nY-le500CicF984nZgejJ0RZ^}00Ak0F987o_yZ_}FM$97WQs2V00Ci=F984nWtcAk0Ra0000AkaF987o`U5DaFM$97bFMD|00DEhF984nWxOu|00DBsF984naL6wK00CdlF984nchoNd00Cv%F984nZs0Eg00Cd-F984nbnGty00Cw4F987n{R032DgG}30Rj92C;~8n00CtPFaZDobPzBB00C(hFaZDoavU%L00VMocb+c+_%8t>FaZDoUnnpE00C?^FaZDoVLUJa00DGDFaZDoX-F^u00C!CFaZDoX;d%)0RRC600AjrFaZGp00byxFo6I8bZRgG0RROA00Aj@FaZGp1OzC2Fo6I8aDp%a00D1`FaZDpWpr{d0gx~O0RRI800AkWFaZGp0t6_eFo6I8bgD1`00CvPFaZDpb7z(?0k|*$00CdVFaZDoa>y_N00D2#FaZDobkr~b00D2>FaZDvaAkF8Y++<=s44-ND* GJyaAa4IqZ00Loe8ZrSgG64Yq*#rOqDMB&<0Rh+qC`K}Y00C!AG64VqX;d-+00CxNG64VqZeTJ200D1iG64Yq+XMgsDRMFa0Rh?sD0VV|00CuuG64Vqb%Zhj00C@@G64VqVURKb0RSZh00AkSG64YrBn2p-GJyaAY^E{+00C^SG64YqCj|fjDY`NN0RbijD84d*00C^oG64VqWy~@G00DT?G64VqY1lFW00d)pVQ_3R0hTfWv@!wSG64VqU*s|Y00DING64VrbY(a)0sJxn00CbrqyPW`WDGL_0Rk`uWhfFe0j{fn00CqeGXVerZX`1S00CtxGXVerbTBgk0s;O6`~)cCtAGFjay&Bu00Cu2GXVerWK1&w00D1OGXVerV^}i*00MY!HZuWUGXVkt&;-&1D2k7O00DGvGXVkt6a^LqD5#Hs00DA-GXVerWr#BY00DH4GXVerWt1}k00C{9GXVerZ=f>)00C*HGXVerbgVN000C~YGXVerWwRL^OeNF8}}mWJ)vv00CuIGywnsbX+t600CiQGywnsa%eOG00CldGywnsX>>FJ00C@zGywnsVSqFN00Co$Gywzx)&v3t3Iz}aC|^1>fs8Z(00Cu^Gywnsb)+-_00C^OGywnsVX!m-0s!3v1qA>BDZDfR0s-6v1O+I e00CvJLjVB)83h0VDe5!<0Rb2VDDE_Y00Cw6GywnsZ2U9<00CzLH30wtZU{9200m=qaBg8LGy%3W0p2tL eH30wtUlcU~00DF=H30$v3 2H30$u-vr?V00AjhH30$v-UQ$TC|osx00C}dH30$u=>+Qp00Aj-H30$v=mhEnD0nr200DG l0_00C?uHUR(uWhgcQ00DR|HUR(uX*4zg00Lof5H 0c Wgs^J0ssjG2L%8DDKIwy0s#mG1_dZKH-P{FV>~wj00C)6Hvs?vZcH};00D1OHvs?vb67V400CiMHvs?va%49F00DGrHvs_vBLx5fDRwsj0RbWfD0(-600CuyHvs?vbci GyzOC0k$;(ay9|VHUaoH0V+2Epf>^THv#%L0Z2Fj00BBqH~|3xI0ZV0IDr5GX^uDn00D58H~|0wVVpPt00AJPH~|0wE2uaD00JN@IxzvRH~|0wW3)H{00AJrH~|0wDa1Gd00DH$H~|0wa?m&d00D2-H~|0waNIZn00C*@H~|0wa_Be#00ML~?l=Jy5&!@KXLCrO0KT6900CeAH~|0wbO<>C00MM!(w+bgIRO9yZ)p@c0UV$J00?DuXK-v`WNmJo06v`n7@hzgIRRFo0A8X1KBEA{qW}N_Unn^N00C)AIRO9xWKcN)00CiEIRO9xUtBo>00DGjIRO9xcxX8R00CugIRO9xI&?V!0Rg-OI(j*Q00C)$IRO9xaELhp00Ci+IRO9xAe1=)00Co~IRO9xAfPz`00DBQIRO9xWvn>?00CsOIRO9xZn!xC00CjXIRO9xaKt$Q00DT)IRO9yC}s3G0nj-C0|XxiZwY(}IxZkz9&~`}CIQwt0p>6P00C*>IROCxq5uE^W&Sw<00C_RIspIyZwNX800C$YIspLya0CDWXc{^J0Rv$LATD?mIsqO!0gh7u00L=nBsu}s1pxyB2?FQ@>I6C{qHchAHGu#DbUr!(00DJQIspR$QwrV$-~=c-Ts46#Z-4*+Zdy7400M7mR5}4_IspIyXK*?J00D1$IspIyY=Ale0RYef00Cu;IspIybdWj$00C*1IspIyXq-9$00DQRIspIyU#L0(00CvLIspIyb+kGG00D8jIspIyX}~%G00LojhB^VpIspLy&jJ7eW!5?Y00DK{IspIyY~VTp00Cm=IspIyU+g*o00Cw4IspIyWB57&00C+KIspLy(gFYhWePh100C|eI{^RzX%ssF00D9uI{^RzVIVsJ0RhnhZ6-Sb00ChvI{^Rzbu>Ex0RYni00Ct{I{^Rzazr};00DJMI{^R*b!2dEY;k&GWBL&R_&EVIIswc&0R%e%Iy(VSI|2Sv0HSXI0suV#t^)u8DSSHt0s=e$tpg}uf;)k@&;S4dWr#Zg00DZII{^RzX`DL&00C^GI{^RzVW>L+00C*PI{^RzbhJAG2LP=Bas(#^KL(=);|5R(00CscI{^RzZO}Ub00A!6I{^Rzc-%Vy0RRaD00Cs^I{^RzW$Zfv00DCHI{^RzU-&x#00D0PI{^Uz3IhNEZwfpC00LoW1Uvx_JOKa#WohC&0Tes|0|09Rd;)O-00CquJOKa!X)rti00C?^JOKa!VLUtm0RYJZ00C!6JOKa!Z%jM^00C@LJOKa!VOTr?00C}ZJOKa!VPrf30RhJYUurx700DGxJOKa!b$C1h0RS)r00DG_JOKa!a)>+u00D1~JOKa!aFjd&00Cc`JOKa!X`nm-00CsCJOKa!VXQm>00CdJJOKa!Y`8oD00CjXJOKa!Zp1tR00DB!JOKa!WzakU0RTY;00D5^JOKd#Xa#WKJOKa!Xy!Zt00A!UJOKa!b@V&|00C|KJOKa!WdJ<^00C?UJplj#Yz#dC0Rd_SFA_b000C?mJplj#XCOTR00DL;Jplj#Y%Dzi00Ck$Jplj#X*fLr00C@1Jplm$*9I>{J%IoLWlB8(00CrDJplj#byz(C00C@XJplj*X=HYAbYpY6I{_X%0YW?hemnuzJON}q0Tf060su?}asU7Ubcj6x00Cc)Jplj#bCf*+00Cc`Jplj#Z=gK^00DBQJplj$WqC@t0IWR$0sw0Ua{vGVbi6$Q00CdZJplj#bI3gb00CdlJplj#Y}7pg00Cv%Jplj#W8ggj00Cp>Jplm#lK=n#W%4}%00DINJplj#Vf;M-00D9WJ^=s$UkE+{00ChRJ^=s$bQC@T00ChdJ^=s$WFS5P00CbnJ^=s$Z7e UvnrfRz3k%y8vRlfSObQ00DJ$J^=#&<_Ww2WCQ>KDV9C~0|4j=1Oa9Q00AkaJ^=#(=LrJ=Wdta!K7jxMY_dK900C^iJ^=s$VZ=TG0|Mm lS300C?uKLG#%Y%D(k00Ch#KLG;*=?T36X9Or;3_pQ5KLG#%a6Uf)00C`IKLG#%WmG=_00Lul{yqU(KLG#%Utm8000DApKLG#%WpF 00C^OKLG#%VX!{|0|EmI$pEqnC|`;{fwn&Z00CsYKLG#%Wz0VT00DE-KLG#%a@aos00Cv*KLG#%cH}<+00Cv{KLG*&wFWo>00AlXKLG*(v<5c (s{<%VK!E@OWKKW<00CuIKmh;&dR#yO00C)YKmh;&Y-m6M00CicKmh;&X>>pV00DG*Kmh^(i3yeo00Ak6Kmh^)hzXSmD2zaX00Cr@Kmh;&Wt>0(00C^GKmh;&Y^Xp100CjHKmh;&bhJPL00L=qfItDdKmh;&ZoohR010n$V`*h`VPs}}KLPMR0Xjed%0K}&I04q}04jX|7=8e9egFUgU(i4S0RRgF00DXYKmh;&asWXA00D0XK>+{+Zf$dRYCQpvJ^}VX0SrL_00M4vv=RYy76AYPba@^X0hkm400wDuWMg4xBtZc#K>-dF0YVf3d=vp}6#)SPyar!7I6(oRet-Z0Zc;%300D1aK>+{(X=FhG00DGrK>+{(X>dUS00DG%K>+{(Wqd&a0RYVi00Cr(K>+{(ZHz$y00AzNK>+{(aF{^>00D5GK>+{(W28X=00AwkK>+{(W3WL100JN_q!0kMK>+{(XS_iH00C~sK>+{(Y0N +{(Y1lyl00MAgf +~(F9-kuW$r-%00DLKK>+{(Z1_O|00CnDK>+{(Uj#w{00CtRLID5)V-P|C00C(hLID8)FbDtvWg Kn)00D94LID5)bL>I^0RT1#00C?GLID8)HwXX$WCBA000C|WLjeE*Zwx~L00C_hLjeE*Y#2iU00ChhLjeE*UnD~T00CqwLjeE*WiUel00C$=LjeE*V?09v00Luf{6YajLjeH*IS2p&bW%eB00CuILjeE*Y+OSD00D1eLjeE*X=p KLjeE*WqLya00LokNJ9aFLjeH*ItTy(ZjwU*00DQFLjeE*Z=6E`0RTG)00CsELjeE*Z>&QB00D2ZLjeE*ceq0V00CdVLjeE*dBj5j00C^uLjeE*a?nEo00m`fY;twhLILtZ0f<8ZqC)}JLjeH*JO}^*W%5G-00DLOLjeE*Z2Ut300CkGL;(N+UkF4200DFkL;(N+WfVjK00CqgL;(Q+JqQ2+WhO)c00DC zL;(N+Y}7;n00C**L;(N-W^>9!0pLUd00LodibMhCL;(N+a_~d}0RTb>00C|QMF9W-Zv;gF00DCfMF9W-Z4gBP00C(hMF9Z-LkIu?ZX!hi00ChpMF9W>VQ6o1c_2gqd_)2IL;)N{0W3uU0RTh@00Cu4MF9W-bxcJ800C@LMF9Z-MF;=^ZeB$J00CiQMF9W-d1yre0RTn_00CrlMF9W-Z+Jxk00DA-MF9W-ZiGbv00Cu+MF9W-WROJx00C^4MF9Z-M+g7`d7?!D0RTt{0RTw|00C~WMF9W;d1b6c0klN{00LoUrbPj|MF9W;Z*rVP0mMZC0RTz}00C*(MF9W-YurTv00Cj*MF9W-Xy`=&0RT$~00Ck2MF9W-bofO900D0PMF9W-Wdue600CzTMgaf;VGu?E0RT)000C|sMgaf;WgtcY00CttMgaf;ax6vx00Cz*Mgaf;UpPhq00Ct_Mgaf;c0@)200C)AMgai;O$Y!1WmZN300C!OMgaf;ZeT_M0RT=200CrdMgaf;X>djX00C%rMgaf 700D2RMgaf;ZLmfG00C^aMgai;Q3wD5Zo) u0RU1600DXMMgai;QwRV7dHO~H00LoU^hN>xMgaf;as)>K00CzXM*#o VP$N*Mgi(Z0W3!W0RU7800Ct{M*#o 0M00DAhM*#oaC72E0T4(500CbXNC5x=a3Dwl00CttNC5!=SO@?Cc``@=0RUMD00DVCNC5x>VP!T*0YFFr00DAFNC5x=XHZB100CcCNC5x=ZCpqJ0RUPE00CuaNC5x=b! XNC5x=W4K5G00C*fNC5x=a>Pgh00CmkNC5x=U(iSa00CvzNC5x=a@ VGv0H00D9qNdW)>ZyZSh0RUYH00C|&NdW)>Wh_Yn00Ct(NdW)>ayUr=00Cz{NdW)>Uqnd(00DGLNdW)>b5KbE00CuINdW)>a$HFP0RUbI00CiWNdW)>X>3UW00DDyNdW)>Xn08h00CouNdW)^X>4zG;z$7^NdaO>0fb2b0RUeJ00D2DNdW)>a-c~800D2NNdW)>VysC400DEdNdW)>Zn#MS00C*fNdW->U Y1Byp00C&)NdW)>ci>3@00Cd-NdW)>bnHn100DFINdW)>Z}>?80RUnM00CqKN&x@?ZwN{O00D9iN&x@?ZWKxZ0RdqMWg1EW00CqmN&x@?Y$!?r0RUqN00DV4N&x`?WC#HOW(WWQcS1@500D1CN&x@?Y)nc400C@LN&x@?Wmrl900DVkN&x`@We8tnN&x@?ZfZ&a00MbsK1u;{N&x@@VP!Z<0eDIQ00d!ZZ*s&*0sct=E=mD{N&x`?X9xfRcb-ZC00Cv9N&x@?WT;9300DWfN&x@?Wwc5G0RU(S00C>jN&x@?Zp2Cf00C*rN&x@?aL`Ht00CdtN&x@@Zgjdz0o+Of00D2}N&x`?X$SxTWb#S@00Cw8N&x@?a{NjG00CbDO921@ZU{>O0RU z>o00C#tO921@U(`zh00C~=O921^c6YK%0pLpk0RV6a00D0BO921@Z}dw600CzDO921@W&lh900C(ROaTA^XbemN00CnXOaTA^Ul>dQ00C|uOaTA^ZzN0s00C_(OaTD^aR>kbWj0I!00DJ6OaTA^Y(Pu_0RVCc00C@FOaTA^VNgr~00DAVOaTD^a|i$dZemOU00CiUOaTA_Z+Toy0c=bG0RVIe00DP=OaTA^Z-7hz00C@ Z3+00Cu^OaTA^d6-NA00Cc~OaTA^WTZ?100D2ROaTA^a 0q{%#00M7v&P)OJOaTD^cnAOiYYI&P00C|eO#uJ_X%tNX0RVXj00C|wO#uJ_ZzN3t00C_(O#uJ_Y%om$0RVak00C}1O#uJ_Wk5{<00Cu2O#uJ_a!gGD00C!GO#uJ_Usz2600CiMO#uM_dk6plWok_U00DJwO#uJ_Y;;Wl00ClpO#uJ_Uw};k00DW1O#uM_d 50RVjn00DWNO#uJ`VP%$00iaC*00DBQO#uJ_XRu8H00CdNO#uJ_WxP!R00DHuO#uJ_VaQDZ0RVmo00CvxO#uJ_b=XY-00C^?O#uJ_V&qK$00Cd>O#uJ_Z17D100Cw8O#uJ_W&BM600m)XYix8jO#x(00gO!n&P@RVP5}V`e+U2pcOFgw00D0zP5}S`Y$#3v00C?+P5}S`Wi(C!00v@XXK-_QMoa;6OaTB*0UAvK2u=YyP5}S`UqDU)00DGbP5}S`XkbnO0RVvr00C}nP5}S`WpGXb00CuoP5}S`a(qq!00C!$P5}V{fCyiRP5}S`WsXh(0RVys00C~CP5}S`WuQ(000U=jZe~samQDetP5}S|VP$FNO93!U0jy2|0RV#t00CjhP5}S`bj(fx00C~&P5}S`W!O#u0RV&u00C~~P5}S`Z|F_|00D3AP5}S{XL8<70rXA*0RV*v00CtLPXPb{ZU|2S00C(ZPXPb{auiPi00ChdPXPb{Z6Hqp00ChpPXPb{bu3Q-00D6_PXPe{h6n%wWj;><00DJEPXPb{Y)DT50RV>x00CrFPXPb{X;@DI00C%TPXPb{V`NVO00DApPXPe{hzI}yWp+;i00C@zPXPb{aDYz%00DA_PXPb{b&O8|0RV{z00C~8PXPb{Wt>j|00Cv9PXPb{a;Q%M00C#NPXPb{U$jpF00CjTPXPe{iU U00CbXPyqk|XBd00DApPyqk|b#PDt0RW8%00CrtPyqk|Wq?ot00DA_Pyqk|UyM)z00DH8Pyqk|WtdO_00C^CPyqk|Z=_HG00C*LPyql3VPbD^b98n%PXSI(0dP+Nl1~9TPyu#O0kBX300CdNPyqk|ZPZW!00DK{Pyqk|Y2Z)+00Cs?Pyqn|jtBq&W%5t~00DLOPyqk|Z2V9G00CkGQ2_t}UkFhF00DFkQ2_t}XcSQa00CzjQ2_t}X&_Mn00C|$Q2_w}j|cz(Z8A{-00Ch(Q2_t}Wjs*<00DABQ2_t}V@Oc}00Cc4Q2_t}bW~9R0RWH)00CuSQ2_t}b7WBg00D1mQ2_t}a&S=r00CciQ2_t}d3;d;00DG@Q2_u0WNvdTQ2|;}0f a;Y0qjr#j!^-=Q2_w}k_Z3+W!6yv00DH`Q2_t}Y2Z--00C&`Q2_t}ckEFC00Cd}Q2_t}Z}?FG00C Y0RWT;00CtrQUL$~V<=Jq00ChxQUL$~Y&22<00Cb*QUL(~mIwd=Vn$K{00Ci2QUL$~a!^tM00CrHQUL)0l?Y#4QUL$~WnxkR00DMtQUL%0WNAQB0dP_Q0RWf?00CrxQUL$~WrR`z00DA}QUL)0mk3{wQUL$~WtLI_00C#7QUL$~ZlqEH0RWi@00CsMQUL$~X|z%S00C&aQUL%0VPmRN0l-oL00L}sc2WVxQUL(~ng{>^WZF^z00D2_QUL$~a^zA000D05QUL$~W$;n~00Ct7QUL$~Z2VFI0RWo_00C|YQvm=0WeigR00CtZQvm=1Z*l@t0T@#O0RWr`00CtvQvm=0b1YK<00C(-Qvm=0Z#Yu{00DJAQvm=0aYR!A00DAJQvm=0bx>0Q0RWu{00CrNQvm=0WnfbQ00DAlQvm=0Uu;tW00DGzQvm=0Wq4Bo00C@%Qvm=0Z-i3;00C)=Qvm=2XLNQRQvp^}0gzJx00Cc?Qvm=0Wu#L90RWx|00D5YQvm=0X|z)T00C&aQvm=0cfeBt00CddQvm=0dCXG*00CjrQvm=1Y;dYm0oYRk0RW!}00Cy`Qvm=0X6#b|00DLKQvm=0aQIUJ00CeAQvm=0XarON00CnPQ~?11pa=i~brw_s00Loh5L5vgQ~?11p$Gs0YbsO$00C|;Q~?11q6h#1Z8}r|00DJAQ~?11qX+;2WlB^500DJQQ~>}1Y*bVM00ClJQ~>}1Utm-L00DAlQ~>}1Wo%Rd00CrjQ~>}1cX(6*0RW^300Cu$Q~>}1Y=~3=00D50Q~>}1a+Fj700v=YX>4zG-ctb}Q~@+p0Yp>*epCUPQ~?11r3e54WV%!V0RW~500C~qQ~>}1cgR!$00D2#Q~>}1a@14-00Cm!Q~>}1U*J>$00DXCQ~?11rw9N6W%5)300DLOQ~>}1Z2VLK00CkGRRI72UkFtJ00C?cRRI72VH8yX00MJ)>{J07RRI73WpBPz0U%WY0RX5700C|^RRI72cQ{o600D14RRI72azs@D00Cl3RRI72Ur<#600CuIRRI72Y+O|V00CrTRRIA2sR#f8Zf;cp00D1uRRI72ZFp4y0RXB900C} r^hRsjG3U#wOE00CvTRsjG3bi7sp00CjbRsjJ3vj_kIcg|J;00D2(RsjJ3v 0L00C|WR{;P4X$)5Z00D9mR{;S4wFm$KWgb@n00DI(R{;P4Y$#U&00CkyR{;P4Uo=+%00C?|R{;P4Wk6Q}00Cu2R{;PBVP$D+Y;JILxK#lTRsld(0c=(Q$W{T^Rsk4S0Zdl`0RXlL00C}vR{;S4w+H|MY<^b(00CiwR{;S4xCj6NWsX+?00C^0R{;P4beLBG00DEJR{;P4X{1*H0RXuO00D2XR{;P4bhK9i00CjTR{;P4ZNOIn0RXxP00CvpR{;P4bI?}-00C*%R{;P4Z`@Y_00DL4R{;P4ap+e800DCDR{;P8VP$A00Cu^SOEY5a+p{F00C#7SOEb6zX)HXSOEY5cdA$c00D2ZSOEY5Y`9nf00C^iSOEY5WyDwk02E `DPjO95(20lH2B#8CkrQUTCX0iaX?DpdheR{{E00W4Snf>;5{SOEY5U(i?q00D9$Spfh6Zzx#-00C?+Spfh6Z!}o}00Cn RS00DIhS^)q7Y!F%j00CkaS^)q7UmRKi00DF&S^)q7Whhz!00Cq!S^)t7-2wmsWja~`00DD8S^)q7bwpYL00Cu6S^)q7a!^_U00DGXS^)q7a$H&g0RY|t00CuaS^)q7bZlAy00CigS^)q7Y 0RZ6w00C>{S^)q7Z0K4600C+4S^)q8W^>+J0rXk{00Lodo>~F=S^)q7as*oe0RZ9x00C|kTLAz8Zx~wv00DCzTLAz8Z6sR(00C(#TLA$8;{pHyZZ=y100Ch-TLAzCVQ6o1c{Ex9kXiu_TLCaz0YF;;00D9&3;+NDWljkI00C_#1ONa5WQ+j-00d!WX>VLx0b*MLXj=hpTLA$8`vL#~Yld3^00Co)TLAz8X^>k100DBATLAz8Vw_t600Cd3TLAz8WvE*L00DBYTLA$8`~m<0Wx87d00DHqTLAz8X~bIr00C&qTLAz8chFk_00CdtTLAz8Y}{J`00Cj*TLAz8a_CzD00D3ATLA$8{Q>|1Zu(mR00CwGTLAz8WdvLS00D9eTmb+9XAoQg00CbXTmb+9bR1j(00DC%Tmb+9Whh($00D9?Tmb<9{sI62VLDs^00C(}Tmb+9b3|ML00C%9Tmb+9V^CZH00e1lZ*{a=0rXn|G+Y5zTmb