from axelrod.action import Action
from axelrod.player import Player
from axelrod.strategy_transformers import FinalTransformer
llIIlIIlllllIIlIIII, lIIlIIllIllII = Action.C, Action.D
class IIIlIlIIl(Player):
    lllIIllIIIlIllIlI = "strategy"
    lIIIlIlIl = {
        "memory_depth": float("inf"),
        "stochastic": True,
        "long_run_time": False,
        "inspects_source": False,
        "manipulates_source": False,
        "manipulates_state": False,
    }
    def IIlIlIllIlIlIIlIl(lIllIlIIIlI):
        lIIIIllIIlIllI, llIlllIIIIl, lIlIIlllIIIlI, IIIlIlIIlllIIIIlllII = lIllIlIIIlI.match_attributes["game"].RPST()
        lIllIlIIIlI.IIIIIIlIIIIllllII = lIIIIllIIlIllI
        lIllIlIIIlI.lIIIllIll = llIlllIIIIl
        lIllIlIIIlI.IIIIIllIllIllIIIlIl = (lIIIIllIIlIllI + llIlllIIIIl) / 2
        lIllIlIIIlI.lllIllIIIIIIlIIIlIlI = 0
    def IIIlIllI(lIllIlIIIlI, IIlIlIIIIlI: Player):
        lIlIlIIIlIIlIl = lIllIlIIIlI.match_attributes["game"]
        IlIlIIIlIIIIll = (lIllIlIIIlI.history[-1], IIlIlIIIIlI.history[-1])
        lIlIlllIl = lIlIlIIIlIIlIl.score(IlIlIIIlIIIIll)
        lIllIlIIIlI.lllIllIIIIIIlIIIlIlI += lIlIlllIl[0]
    def IllIIIIIlII(lIllIlIIIlI, IIlIlIIIIlI: Player) -> Action:
        if len(lIllIlIIIlI.history) == 0:
            return llIIlIIlllllIIlIIII
        lIllIlIIIlI.IIIlIllI(IIlIlIIIIlI)
        IIllIIllIlIIl = lIllIlIIIlI.lllIllIIIIIIlIIIlIlI / len(lIllIlIIIlI.history)
        if IIllIIllIlIIl > lIllIlIIIlI.IIIIIIlIIIIllllII:
            return lIIlIIllIllII
        if (IIllIIllIlIIl > lIllIlIIIlI.IIIIIllIllIllIIIlIl) and (
            IIllIIllIlIIl < lIllIlIIIlI.IIIIIIlIIIIllllII
        ):
            return llIIlIIlllllIIlIIII
        if IIllIIllIlIIl > 2:
            return llIIlIIlllllIIlIIII
        if (IIllIIllIlIIl < 2) and (IIllIIllIlIIl > 1):
            return lIIlIIllIllII
        return lIllIlIIIlI._random.random_choice()