Faster weapon base value calculation when not transformed.

This commit is contained in:
MobiusDevelopment 2021-03-17 00:32:19 +00:00
parent 2d987325eb
commit 0daaf43bf7
19 changed files with 38 additions and 38 deletions

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{

View File

@ -65,7 +65,7 @@ public interface IStatFunction
default double calcWeaponBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPet())
{
final PetInstance pet = (PetInstance) creature;
@ -85,7 +85,7 @@ public interface IStatFunction
default double calcWeaponPlusBaseValue(Creature creature, Stat stat)
{
final double baseTemplateValue = creature.getTemplate().getBaseValue(stat, 0);
double baseValue = creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue);
double baseValue = creature.isTransformed() ? creature.getTransformation().filter(transform -> !transform.isStance()).map(transform -> transform.getStats(creature, stat, baseTemplateValue)).orElse(baseTemplateValue) : baseTemplateValue;
if (creature.isPlayable())
{