2.5.75003775 • Published 8 months ago

@ggflutter/sumo v2.5.75003775

Weekly downloads
-
License
-
Repository
github
Last release
8 months ago

SuMo

SuMo is a mutation testing tool for Solidity Smart Contracts. It features 25 Solidity-specific mutation operators, as well as 19 traditional operators.

SuMo was designed to run mutation testing on Solidity projects in a NodeJS environment. It can run test using Truffle, Hardhat, Brownie and Forge. If needed, SuMo can also automatically spawn Ganache instances to guarantee a clean-room testing environment between mutants.

Table of Contents

Installation

To install sumo run npm install @morenabarboni/sumo

Configuration ⚙️

Before using SuMo you must specify your desired configuration in a sumo-config.js in the root directory of your project. The sumo-config.js is automatically generated upon installation.

Here's a simple example of sumo-config.js:

module.exports = {
  buildDir: 'build',
  contractsDir: 'contracts',
  testDir: 'test',
  skipContracts: ['contractName.sol'], // Relative paths from contractsDir
  skipTests: ['testFileName.js'], // Relative paths from testDir
  testingTimeOutInSec: 300,
  network: "none",
  testingFramework: "truffle",
  minimal: false,
  tce: false
}

1) SUT directories

These (optional) fields identify relevant project directories.

FieldDescriptionDefault Value
contractsDirrelative path to the directory of the contracts to be mutatedcontracts
testDirrelative path to the directory of the tests to be evaluatedtest/tests
buildDirrelative path to the directory of the compilation artifactsbuild/out/artifacts

2) Mutation Process

These fields allow to configure the mutation testing process:

FieldDescriptionDefault Value
minimaluse minimal mutation rulesfalse
skipContractsblacklist of relative paths to contract files (or folders)[]
skipTestsblacklist of relative paths to test files (or folders)[]
tceuse the Trivial Compiler Equivalencefalse
testingTimeOutInSecseconds after which a mutant is marked as timed-out during testing300

3) Testing Interface

These fields specify what testing framework and blockchain simulator SuMo should use to conduct mutation testing:

FieldDescriptionAvailable OptionsDefault Value
networkthe blockchain simulator to be usedganache, nonenone
testingFrameworkthe testing framework to be used for compiling and testing the smart contractsbrownie, forge, hardhat, truffle, customtruffle

Truffle and Hardhat

When choosing truffle or hardhat:

  • SuMo will rely on the local truffle or hardhat package installed in the project;
  • The smart contracts will be compiled with a minimal compile command (e.g., truffle compile );
  • The smart contracts will be tested with a minimal test command followed by the bail argument, and (optionally) by a list of test files to be executed (e.g., truffle test ...testFiles -b) .

Brownie

When choosing brownie:

  • SuMo will rely on a local/global brownie installation;
  • The smart contracts will be compiled with a minimal compile command (e.g., brownie compile );
  • The smart contracts will be tested with a minimal test command followed by the exitfirst argument, and (optionally) by a list of test files to be executed (e.g., brownie test ...testFiles --exitfirst) .

Forge

When choosing forge :

  • SuMo will rely on the global installation of foundry;
  • The smart contracts will be compiled with a minimal compile command (e.g., forge build);
  • The smart contracts will be tested with a minimal test command followed by the fail-fast argument, and (optionally) by a list of test files to be executed (e.g., forge test ...testFiles --fail-fast).
  • Make sure that your forge installation is up-to-date to enable --fail-fast.

Custom

  • When choosing custom:
    • SuMo will invoke the compile and test script defined in your package.json. This allows you to customize both scripts and have more control over the testing process;
    • The skipTests list will be overridden by the test script in your package.json. To skip some test files, you can either: 1) append the specific test files you want to run to your test script, or 2) remove the test files to be skipped from the test folder.
    • The --bail/--exitfirst/--fail-fast option should be added to the test script to speed up mutation testing.

CLI Usage

Selecting the Mutation Operators

Before starting the mutation process you can choose which mutation operators to use:

CommandDescriptionUsageExample
listShows the enabled mutation operators.npx/yarn sumo list$ npx sumo list
enableEnables one or more mutation operators. If no operator IDs are specified, all of them are enabled.npx/yarn sumo enable [...ID]$ npx sumo enable $ npx sumo enable AOR BOR
disableDisables one or more mutation operators. If no operator IDs are specified, all of them are disabled.npx/yarn sumo disable [...ID]$ npx sumo disable $ npx sumo disable FVR

Viewing the available mutations

CommandDescriptionUsageExample
lookupGenerates the mutations and saves them to ./sumo/generated.csv without starting mutation testing.npx/yarn sumo lookup$ npx sumo lookup
mutateGenerates the mutations and saves a copy of each .sol mutant to to ./sumo/mutants.npx/yarn sumo mutate$ npx sumo mutate

Running Mutation Testing

CommandDescriptionUsageExample
pretestRuns the test suite on the original smart contracts to check if all tests pass and can be successfully evaluated. Pretest is automatically run when sumo test is executed.npx/yarn sumo pretest$ npx sumo pretest
testStarts the mutation testing process. You can also choose a single mutant / an interval of mutants to be tested by sepcifying <startHash> and (optionally) <endHash>.npx/yarn sumo test <startHash> <endHash>$ npx sumo test $ npx sumo test mbc5e8f56 mbg5t86o6
restoreRestores the SUT files to a clean version. This should be executed if you suddenly interrupt the mutation process. Note that the restore command overwrites your codebase with the files stored in the sumo/baseline folder. If you need to restore the project files, make sure to do so before performing other operations as the baseline is automatically refreshed on subsequent preflight or test runs.$ npx/yarn sumo restore$ npx sumo restore

Viewing the results

SuMo automatically creates a sumo\results folder in the root directory of the project with the following reports:

  • operators.xlsx Results of the mutation testing process grouped by operator
  • results.csv Results of the mutation testing process for each mutant. This synchronous log is updated each time a mutant is assigned a status
  • sumo-log.txt Logs info about the mutation testing process
  • \mutants Mutated .sol contracts generated with sumo mutate

Trivial Compiler Equivalence

The Trivial Compiler Equivalence compares the smart contract bytecode to detect equivalences between mutants and it can only work if: 1. the solc compiler optimization is enabled; 2. no metadata hash is appended to the contract bytecode.

1) TCE for Truffle and Hardhat

If your testingFramework is truffle or hardhat, you must add the following to your truffle-config.js or hardhat.config.js file:

 compilers: {
    solc: {
        optimizer: {
            enabled: true,
            runs: 200
            ...
        },
        metadata: {
              bytecodeHash: "none"
        }
      }
  }

2)TCE for Brownie

If your testingFramework is brownie, you must add the following to your brownie-config.yaml file:

compiler:
    solc:
        optimize: true
        runs: 200

3) TCE for Forge

If your testingFramework is forge you must add the following to your foundry.toml file:

optimizer = true
optimizer-runs = 200

4) TCE for Hybrid Test Suites

If your testingFramework is custom but you still rely on a single testing framework you can refer to the previous sections.

However, if you are using custom to evaluate hybrid test suites (e.g., forge and hardhat) you must make sure that the sumo configuration is consistent.

For example, consider the following package.json scripts:

 scripts: {
    compile: "hardhat compile",
    test "hardhat test --bail && forge test --fail-fast"
 }

If you make SuMo use hardhat to compile the contracts, make sure that the buildDir points to the hardhat compiled artifacts and not to the forge ones, and vice versa.

Mutation Operators 👾

SuMo includes currently 25 Solidity-specific operators and 19 Traditional operators.

Minimal Mutation Rules

Some mutation operators foresee a minimal version:

  • The extended operators are composed of mutation rules capable of generating a more comprehensive collection of mutants. These operators guarantee higher reliability at the price of a more expensive and time-consuming mutation testing process.
  • The minimal operators consist of simplified rules that aim to limit the generation of likely subsumed mutants and speed up the testing process.

By default, SuMo employs the extended operators. However, you can enable the minimal rules from the sumo-config.js file.

Traditional Mutation Operators

OperatorNameMutation ExampleMinimal version available
ACMArgument Change of overloaded Method calloverloadedFunc(a,b); overloadedFunc(a,b,c);N
AORAssignment Operator Replacement+= =Y
BCRDBreak and Continue Replacement and Deletionbreak continue breakN
BLRBoolean Literal Replacementtrue falseN
BORBinary Operator Replacement+ - < >=Y
CBDCatch Block Deletioncatch{} N
CSCConditional Statement Changeif(condition) if(false) else{} N
EREnum Replacemetenum.member1 enum.member2Y
ECSExplicit Conversion to Smaller typeuint256 uint8N
HLRHexadecimal Literal Replacementhex\"01\" hex\"random\"N
ICMIncrements Mirror-= =-N
ILRInteger Literal Replacement1 0N
LCSLoop Statement Changewhile(condition) while(false)N
OLFDOverloaded Function Deletionfunction overloadedF(){} N
ORFDOverridden Function Deletionfunction f() override {} N
SKISuper Keyword Insertionx = getData() x = super.getData()N
SKDSuper Keyword Deletionx = super.getData() x = getData()N
SLRString Literal Replacement"string" ""N
UORDUnary Operator Replacement and Deletion++ -- ! N

Solidity Mutation Operators

OperatorNameMutation ExampleMinimal version available
AVRAddress Value Replacement0x67ED2e5dD3d0... address.this()N
CCDContract Constructor Deletionconstructor(){} N
DLRData Location Keyword Replacementmemory storageN
DODDelete Operator Deletiondelete N
ETREther Transfer function Replacementdelegatecall() call()N
EEDEvent Emission Deletionemit Deposit(...) /*emit Deposit(...)*/N
EHCException Handling Changerequire(...) /*require(...)*/N
FVRFunction Visibility Replacementfunction f() public function f() privateY
GVRGlobal Variable Replacementmsg.value() tx.gasprice()Y
MCRMathematical and Cryptographic function Replacementaddmod mulmod keccak256 basha256N
MODModifier Deletionfunction f() onlyOwner function f()Y
MOIModifier Insertionfunction f() function f() onlyOwnerY
MOCModifier Order Changefunction f() modA modB function f() modB modAY
MORModifier Replacementfunction f() onlyOwner function f() onlyAdminY
OMDOverridden Modifier Deletionmodifier m() override {} N
PKDPayable Keyword Deletionfunction f() payable function f()N
RSDReturn Statement Deletionreturn amount; //return amount;N
RVSReturn Values Swapreturn (1, "msg", 100); return (100, "msg", 1);Y
SFDSelfdestruct Deletionselfdestruct(); //selfdestruct();N
SFISelfdestruct InsertiondoSomething; selfdestruct(); selfdestruct(); doSomething;N
SFRSafeMath Function ReplacementSafeMath.add SafeMath.subY
SCECSwitch Call Expression CastingContract c = Contract(0x86C9...); Contract c = Contract(0x67ED...);N
TORTransaction Origin Replacementmsg.sender tx.originN
VURVariable Unit Replacementwei ether minutes hoursY
VVRVariable Visibility Replacementuint private data; uint public data;Y

Publications

To cite SuMo, please use the following:

@article{BARBONI2022111445,
  title = {SuMo: A mutation testing approach and tool for the Ethereum blockchain},
  journal = {Journal of Systems and Software},
  volume = {193},
  pages = {111445},
  year = {2022},
  issn = {0164-1212},
  doi = {https://doi.org/10.1016/j.jss.2022.111445},
  author = {Morena Barboni and Andrea Morichetta and Andrea Polini}
}
2.5.75003742

8 months ago

2.5.75003741

8 months ago

2.5.75003744

8 months ago

2.5.75003743

8 months ago

2.5.75003740

8 months ago

2.5.75003749

8 months ago

2.5.75003746

8 months ago

2.5.75003745

8 months ago

2.5.75003748

8 months ago

2.5.75003747

8 months ago

2.5.75003753

8 months ago

2.5.75003752

8 months ago

2.5.75003755

8 months ago

2.5.75003754

8 months ago

2.5.75003751

8 months ago

2.5.75003750

8 months ago

2.5.75003757

8 months ago

2.5.75003756

8 months ago

2.5.75003759

8 months ago

2.5.75003758

8 months ago

2.5.7500365

8 months ago

2.5.7500364

8 months ago

2.5.7500363

8 months ago

2.5.7500362

8 months ago

2.5.7500361

8 months ago

2.5.7500360

8 months ago

2.5.75003764

8 months ago

2.5.75003763

8 months ago

2.5.75003766

8 months ago

2.5.75003765

8 months ago

2.5.75003760

8 months ago

2.5.75003762

8 months ago

2.5.75003761

8 months ago

2.5.7500359

8 months ago

2.5.75003768

8 months ago

2.5.7500358

8 months ago

2.5.75003767

8 months ago

2.5.7500357

8 months ago

2.5.75003769

8 months ago

2.5.75003775

8 months ago

2.5.75003774

8 months ago

2.5.75003771

8 months ago

2.5.75003770

8 months ago

2.5.75003773

8 months ago

2.5.75003772

8 months ago

2.5.7500366

8 months ago

2.5.75003667

8 months ago

2.5.75003669

8 months ago

2.5.75003668

8 months ago

2.5.75003670

8 months ago

2.5.75003676

8 months ago

2.5.75003675

8 months ago

2.5.75003678

8 months ago

2.5.75003677

8 months ago

2.5.75003672

8 months ago

2.5.75003671

8 months ago

2.5.75003674

8 months ago

2.5.75003673

8 months ago

2.5.75003679

8 months ago

2.5.75003681

8 months ago

2.5.75003680

8 months ago

2.5.75003687

8 months ago

2.5.75003686

8 months ago

2.5.75003689

8 months ago

2.5.75003688

8 months ago

2.5.75003683

8 months ago

2.5.75003682

8 months ago

2.5.75003685

8 months ago

2.5.75003684

8 months ago

2.5.75003690

8 months ago

2.5.75003692

8 months ago

2.5.75003691

8 months ago

2.5.75003698

8 months ago

2.5.75003697

8 months ago

2.5.75003699

8 months ago

2.5.75003694

8 months ago

2.5.75003693

8 months ago

2.5.75003696

8 months ago

2.5.75003695

8 months ago

2.5.75003700

8 months ago

2.5.75003706

8 months ago

2.5.75003705

8 months ago

2.5.75003708

8 months ago

2.5.75003707

8 months ago

2.5.75003702

8 months ago

2.5.75003701

8 months ago

2.5.75003704

8 months ago

2.5.75003703

8 months ago

2.5.75003709

8 months ago

2.5.75003711

8 months ago

2.5.75003710

8 months ago

2.5.75003717

8 months ago

2.5.75003716

8 months ago

2.5.75003719

8 months ago

2.5.75003718

8 months ago

2.5.75003713

8 months ago

2.5.75003712

8 months ago

2.5.75003715

8 months ago

2.5.75003714

8 months ago

2.5.75003720

8 months ago

2.5.75003722

8 months ago

2.5.75003721

8 months ago

2.5.75003728

8 months ago

2.5.75003727

8 months ago

2.5.75003729

8 months ago

2.5.75003724

8 months ago

2.5.75003723

8 months ago

2.5.75003726

8 months ago

2.5.75003725

8 months ago

2.5.75003731

8 months ago

2.5.75003730

8 months ago

2.5.75003733

8 months ago

2.5.75003732

8 months ago

2.5.75003739

8 months ago

2.5.75003738

8 months ago

2.5.75003735

8 months ago

2.5.75003734

8 months ago

2.5.75003737

8 months ago

2.5.75003736

8 months ago

2.5.75003461

8 months ago

2.5.75003460

8 months ago

2.5.75003467

8 months ago

2.5.75003466

8 months ago

2.5.75003469

8 months ago

2.5.75003468

8 months ago

2.5.75003463

8 months ago

2.5.75003462

8 months ago

2.5.75003465

8 months ago

2.5.75003464

8 months ago

2.5.75003470

8 months ago

2.5.75003472

8 months ago

2.5.75003471

8 months ago

2.5.75003474

8 months ago

2.5.75003473

8 months ago

2.5.75003475

8 months ago

2.5.75003395

8 months ago

2.5.75003394

8 months ago

2.5.75003397

8 months ago

2.5.75003396

8 months ago

2.5.75003399

8 months ago

2.5.75003398

8 months ago

2.5.75003401

8 months ago

2.5.75003400

8 months ago

2.5.75003403

8 months ago

2.5.75003402

8 months ago

2.5.75003409

8 months ago

2.5.75003408

8 months ago

2.5.75003405

8 months ago

2.5.75003404

8 months ago

2.5.75003407

8 months ago

2.5.7500355

8 months ago

2.5.75003406

8 months ago

2.5.75003412

8 months ago

2.5.75003411

8 months ago

2.5.75003414

8 months ago

2.5.75003413

8 months ago

2.5.75003410

8 months ago

2.5.75003419

8 months ago

2.5.75003416

8 months ago

2.5.75003415

8 months ago

2.5.75003418

8 months ago

2.5.75003417

8 months ago

2.5.75003423

8 months ago

2.5.75003422

8 months ago

2.5.75003425

8 months ago

2.5.75003424

8 months ago

2.5.75003421

8 months ago

2.5.75003420

8 months ago

2.5.75003427

8 months ago

2.5.75003426

8 months ago

2.5.75003429

8 months ago

2.5.75003428

8 months ago

2.5.7500354

8 months ago

2.5.7500353

8 months ago

2.5.7500352

8 months ago

2.5.7500351

8 months ago

2.5.7500350

8 months ago

2.5.75003433

8 months ago

2.5.75003436

8 months ago

2.5.75003435

8 months ago

2.5.75003430

8 months ago

2.5.75003432

8 months ago

2.5.75003431

8 months ago

2.5.7500349

8 months ago

2.5.7500348

8 months ago

2.5.7500347

8 months ago

2.5.75003438

8 months ago

2.5.7500346

8 months ago

2.5.75003437

8 months ago

2.5.75003439

8 months ago

2.5.75003445

8 months ago

2.5.75003444

8 months ago

2.5.75003447

8 months ago

2.5.75003446

8 months ago

2.5.75003441

8 months ago

2.5.75003440

8 months ago

2.5.75003443

8 months ago

2.5.75003442

8 months ago

2.5.75003449

8 months ago

2.5.75003448

8 months ago

2.5.75003450

8 months ago

2.5.75003456

8 months ago

2.5.75003455

8 months ago

2.5.75003458

8 months ago

2.5.75003457

8 months ago

2.5.75003452

8 months ago

2.5.75003451

8 months ago

2.5.75003454

8 months ago

2.5.75003453

8 months ago

2.5.75003459

8 months ago

2.5.75003340

9 months ago

2.5.75003346

9 months ago

2.5.75003345

9 months ago

2.5.75003348

9 months ago

2.5.75003347

9 months ago

2.5.75003342

9 months ago

2.5.75003341

9 months ago

2.5.75003344

9 months ago

2.5.75003343

9 months ago

2.5.75003349

9 months ago

2.5.75003351

9 months ago

2.5.75003350

9 months ago

2.5.75003357

9 months ago

2.5.75003356

9 months ago

2.5.75003359

9 months ago

2.5.75003358

9 months ago

2.5.75003353

9 months ago

2.5.75003352

9 months ago

2.5.75003355

9 months ago

2.5.75003354

9 months ago

2.5.75003360

9 months ago

2.5.75003362

9 months ago

2.5.75003361

9 months ago

2.5.75003368

9 months ago

2.5.75003367

9 months ago

2.5.75003369

9 months ago

2.5.75003364

9 months ago

2.5.75003363

9 months ago

2.5.75003366

9 months ago

2.5.75003365

9 months ago

2.5.75003371

9 months ago

2.5.75003370

9 months ago

2.5.75003373

9 months ago

2.5.75003372

9 months ago

2.5.75003379

9 months ago

2.5.75003378

9 months ago

2.5.75003375

9 months ago

2.5.75003374

9 months ago

2.5.75003377

9 months ago

2.5.75003376

9 months ago

2.5.75003382

9 months ago

2.5.75003381

9 months ago

2.5.75003384

8 months ago

2.5.75003383

8 months ago

2.5.75003380

9 months ago

2.5.75003389

8 months ago

2.5.75003386

8 months ago

2.5.75003385

8 months ago

2.5.75003388

8 months ago

2.5.75003387

8 months ago

2.5.75003393

8 months ago

2.5.75003392

8 months ago

2.5.75003391

8 months ago

2.5.75003390

8 months ago

2.5.7500339

9 months ago

2.5.7500338

9 months ago

2.5.7500337

9 months ago

2.5.7500336

9 months ago

2.5.7500335

9 months ago

2.5.7500334

9 months ago

2.5.7500333

9 months ago

2.5.7500332

9 months ago

2.5.7500331

9 months ago

2.5.7500310

9 months ago

2.5.7500309

9 months ago

2.5.7500308

9 months ago

2.5.7500307

9 months ago

2.5.7500306

9 months ago

2.5.7500305

9 months ago

2.5.7500304

9 months ago

2.5.7500303

9 months ago

2.5.7500302

9 months ago

2.5.7500301

9 months ago

2.5.7500300

9 months ago

2.5.7500321

9 months ago

2.5.7500320

9 months ago

2.5.7500319

9 months ago

2.5.7500318

9 months ago

2.5.7500317

9 months ago

2.5.7500316

9 months ago

2.5.7500315

9 months ago

2.5.7500314

9 months ago

2.5.7500313

9 months ago

2.5.7500312

9 months ago

2.5.7500311

9 months ago

2.5.7500330

9 months ago

2.5.7500329

9 months ago

2.5.7500328

9 months ago

2.5.7500327

9 months ago

2.5.7500326

9 months ago

2.5.7500325

9 months ago

2.5.7500324

9 months ago

2.5.7500323

9 months ago

2.5.7500322

9 months ago

2.5.7500288

9 months ago

2.5.7500287

9 months ago

2.5.7500286

9 months ago

2.5.7500285

9 months ago

2.5.7500299

9 months ago

2.5.7500298

9 months ago

2.5.7500297

9 months ago

2.5.7500296

9 months ago

2.5.7500295

9 months ago

2.5.7500294

9 months ago

2.5.7500293

9 months ago

2.5.7500292

9 months ago

2.5.7500291

9 months ago

2.5.7500290

9 months ago

2.5.7500289

9 months ago

2.5.7500266

9 months ago

2.5.7500145

9 months ago

2.5.7500265

9 months ago

2.5.7500144

9 months ago

2.5.7500264

9 months ago

2.5.7500143

9 months ago

2.5.7500263

9 months ago

2.5.7500142

9 months ago

2.5.7500262

9 months ago

2.5.7500261

9 months ago

2.5.7500260

9 months ago

2.5.7500259

9 months ago

2.5.7500258

9 months ago

2.5.7500257

9 months ago

2.5.7500256

9 months ago

2.5.7500277

9 months ago

2.5.7500156

9 months ago

2.5.7500276

9 months ago

2.5.7500155

9 months ago

2.5.7500275

9 months ago

2.5.7500154

9 months ago

2.5.7500274

9 months ago

2.5.7500153

9 months ago

2.5.7500273

9 months ago

2.5.7500152

9 months ago

2.5.7500272

9 months ago

2.5.7500151

9 months ago

2.5.7500271

9 months ago

2.5.7500150

9 months ago

2.5.7500270

9 months ago

2.5.7500149

9 months ago

2.5.7500269

9 months ago

2.5.7500148

9 months ago

2.5.7500268

9 months ago

2.5.7500147

9 months ago

2.5.7500267

9 months ago

2.5.7500146

9 months ago

2.5.7500244

9 months ago

2.5.7500243

9 months ago

2.5.7500242

9 months ago

2.5.7500241

9 months ago

2.5.7500240

9 months ago

2.5.7500239

9 months ago

2.5.7500238

9 months ago

2.5.7500237

9 months ago

2.5.7500236

9 months ago

2.5.7500235

9 months ago

2.5.7500234

9 months ago

2.5.7500255

9 months ago

2.5.7500254

9 months ago

2.5.7500253

9 months ago

2.5.7500252

9 months ago

2.5.7500251

9 months ago

2.5.7500250

9 months ago

2.5.7500249

9 months ago

2.5.7500248

9 months ago

2.5.7500247

9 months ago

2.5.7500246

9 months ago

2.5.7500245

9 months ago

2.5.7500222

9 months ago

2.5.7500221

9 months ago

2.5.7500220

9 months ago

2.5.7500219

9 months ago

2.5.7500218

9 months ago

2.5.7500217

9 months ago

2.5.7500216

9 months ago

2.5.7500215

9 months ago

2.5.7500214

9 months ago

2.5.7500213

9 months ago

2.5.7500212

9 months ago

2.5.7500233

9 months ago

2.5.7500232

9 months ago

2.5.7500231

9 months ago

2.5.7500230

9 months ago

2.5.7500229

9 months ago

2.5.7500228

9 months ago

2.5.7500227

9 months ago

2.5.7500226

9 months ago

2.5.7500225

9 months ago

2.5.7500224

9 months ago

2.5.7500223

9 months ago

2.5.7500200

9 months ago

2.5.7500211

9 months ago

2.5.7500210

9 months ago

2.5.7500209

9 months ago

2.5.7500208

9 months ago

2.5.7500207

9 months ago

2.5.7500206

9 months ago

2.5.7500205

9 months ago

2.5.7500204

9 months ago

2.5.7500203

9 months ago

2.5.7500202

9 months ago

2.5.7500201

9 months ago

2.5.7500189

9 months ago

2.5.7500188

9 months ago

2.5.7500187

9 months ago

2.5.7500186

9 months ago

2.5.7500185

9 months ago

2.5.7500184

9 months ago

2.5.7500183

9 months ago

2.5.7500182

9 months ago

2.5.7500181

9 months ago

2.5.7500180

9 months ago

2.5.7500179

9 months ago

2.5.7500199

9 months ago

2.5.7500198

9 months ago

2.5.7500197

9 months ago

2.5.7500196

9 months ago

2.5.7500195

9 months ago

2.5.7500194

9 months ago

2.5.7500193

9 months ago

2.5.7500192

9 months ago

2.5.7500191

9 months ago

2.5.7500190

9 months ago

2.5.7500167

9 months ago

2.5.7500166

9 months ago

2.5.7500165

9 months ago

2.5.7500164

9 months ago

2.5.7500284

9 months ago

2.5.7500163

9 months ago

2.5.7500283

9 months ago

2.5.7500162

9 months ago

2.5.7500282

9 months ago

2.5.7500161

9 months ago

2.5.7500281

9 months ago

2.5.7500160

9 months ago

2.5.7500280

9 months ago

2.5.7500159

9 months ago

2.5.7500279

9 months ago

2.5.7500158

9 months ago

2.5.7500278

9 months ago

2.5.7500157

9 months ago

2.5.7500178

9 months ago

2.5.7500177

9 months ago

2.5.7500176

9 months ago

2.5.7500175

9 months ago

2.5.7500174

9 months ago

2.5.7500173

9 months ago

2.5.7500172

9 months ago

2.5.7500171

9 months ago

2.5.7500170

9 months ago

2.5.7500169

9 months ago

2.5.7500168

9 months ago

2.5.7500141

9 months ago

2.5.7500140

9 months ago

2.5.7500139

9 months ago

2.5.7500138

9 months ago

2.5.7500137

9 months ago

2.5.7500136

10 months ago

2.5.7500135

10 months ago

2.5.7500134

10 months ago

2.5.7500133

10 months ago

2.5.7500123

10 months ago

2.5.7500122

10 months ago

2.5.7500121

10 months ago

2.5.7500120

10 months ago

2.5.7500119

10 months ago

2.5.7500118

10 months ago

2.5.7500117

10 months ago

2.5.7500116

10 months ago

2.5.7500115

10 months ago

2.5.7500114

10 months ago

2.5.7500113

10 months ago

2.5.7500132

10 months ago

2.5.7500131

10 months ago

2.5.7500130

10 months ago

2.5.7500129

10 months ago

2.5.7500128

10 months ago

2.5.7500127

10 months ago

2.5.7500126

10 months ago

2.5.7500125

10 months ago

2.5.7500124

10 months ago

2.5.7500101

10 months ago

2.5.7500100

10 months ago

2.5.7500112

10 months ago

2.5.7500111

10 months ago

2.5.7500110

10 months ago

2.5.7500109

10 months ago

2.5.7500108

10 months ago

2.5.7500107

10 months ago

2.5.7500106

10 months ago

2.5.7500105

10 months ago

2.5.7500104

10 months ago

2.5.7500103

10 months ago

2.5.7500102

10 months ago

2.5.7500089

10 months ago

2.5.7500088

10 months ago

2.5.7500087

10 months ago

2.5.7500086

10 months ago

2.5.7500085

10 months ago

2.5.7500084

10 months ago

2.5.7500083

10 months ago

2.5.7500082

10 months ago

2.5.7500081

10 months ago

2.5.7500080

10 months ago

2.5.7500099

10 months ago

2.5.7500098

10 months ago

2.5.7500097

10 months ago

2.5.7500096

10 months ago

2.5.7500095

10 months ago

2.5.7500094

10 months ago

2.5.7500093

10 months ago

2.5.7500092

10 months ago

2.5.7500091

10 months ago

2.5.7500090

10 months ago

2.5.7500079

10 months ago

2.5.7500078

10 months ago

2.5.7500077

10 months ago

2.5.7500075

10 months ago

2.5.7500074

10 months ago

2.5.7500073

10 months ago

2.5.7500072

10 months ago

2.5.7500071

10 months ago

2.5.7500070

10 months ago

2.5.7500069

10 months ago

2.5.7500035

10 months ago

2.5.7500068

10 months ago

2.5.7500067

10 months ago

2.5.7500066

10 months ago

2.5.7500065

10 months ago

2.5.7500064

10 months ago

2.5.7500063

10 months ago

2.5.7500062

10 months ago

2.5.7500061

10 months ago

2.5.7500060

10 months ago

2.5.7500059

10 months ago

2.5.7500058

10 months ago

2.5.7500046

10 months ago

2.5.7500045

10 months ago

2.5.7500044

10 months ago

2.5.7500043

10 months ago

2.5.7500042

10 months ago

2.5.7500041

10 months ago

2.5.7500040

10 months ago

2.5.7500039

10 months ago

2.5.7500038

10 months ago

2.5.7500037

10 months ago

2.5.7500036

10 months ago

2.5.7500057

10 months ago

2.5.7500056

10 months ago

2.5.7500055

10 months ago

2.5.7500054

10 months ago

2.5.7500053

10 months ago

2.5.7500052

10 months ago

2.5.7500051

10 months ago

2.5.7500050

10 months ago

2.5.7500049

10 months ago

2.5.7500048

10 months ago

2.5.7500047

10 months ago

2.5.7500023

10 months ago

2.5.7500022

10 months ago

2.5.7500021

10 months ago

2.5.7500020

10 months ago

2.5.7500019

10 months ago

2.5.7500018

10 months ago

2.5.7500017

10 months ago

2.5.7500016

10 months ago

2.5.7500015

10 months ago

2.5.7500034

10 months ago

2.5.7500033

10 months ago

2.5.7500032

10 months ago

2.5.7500031

10 months ago

2.5.7500030

10 months ago

2.5.7500029

10 months ago

2.5.7500028

10 months ago

2.5.7500027

10 months ago

2.5.7500026

10 months ago

2.5.7500025

10 months ago

2.5.7500014

10 months ago

2.5.7500013

10 months ago

2.5.7500012

10 months ago

2.5.7500011

10 months ago

2.5.7500010

10 months ago

2.5.7500009

10 months ago

2.5.7500008

10 months ago

2.5.7500007

10 months ago

2.5.7500006

10 months ago

2.5.7500005

10 months ago

2.5.7500004

10 months ago

2.5.74995

10 months ago

2.5.74999

10 months ago

2.5.74998

10 months ago

2.5.74997

10 months ago

2.5.74996

10 months ago

2.5.749993

10 months ago

2.5.749994

10 months ago

2.5.749995

10 months ago

2.5.749996

10 months ago

2.5.749991

10 months ago

2.5.749992

10 months ago

2.5.7499991

10 months ago

2.5.749997

10 months ago

2.5.749998

10 months ago

2.5.749999

10 months ago

2.5.7500002

10 months ago

2.5.7500001

10 months ago

2.5.7499992

10 months ago

2.5.7499993

10 months ago

2.5.7499994

10 months ago

2.5.7499995

10 months ago

2.5.7499996

10 months ago

2.5.7499998

10 months ago

2.5.7500003

10 months ago

2.5.74994

10 months ago

2.5.7499

10 months ago

2.5.74993

10 months ago

2.5.7498

10 months ago

2.5.74992

10 months ago

2.5.7497

10 months ago

2.5.747

10 months ago

2.5.748

10 months ago

2.5.749

10 months ago

2.5.7492

10 months ago

2.5.7491

10 months ago

2.5.7496

10 months ago

2.5.7495

10 months ago

2.5.7494

10 months ago

2.5.7493

10 months ago

2.5.74991

10 months ago

2.5.746

11 months ago

2.5.745

11 months ago

2.5.744

11 months ago

2.5.743

11 months ago

2.5.742

11 months ago

2.5.741

11 months ago

2.5.740

11 months ago

2.5.739

11 months ago

2.5.738

11 months ago

2.5.737

11 months ago

2.5.736

11 months ago

2.5.735

11 months ago

2.5.734

11 months ago

2.5.733

11 months ago

2.5.732

11 months ago

2.5.731

11 months ago

2.5.730

11 months ago

2.5.729

11 months ago

2.5.728

11 months ago

2.5.727

11 months ago

2.5.726

11 months ago

2.5.725

11 months ago

2.5.724

11 months ago

2.5.723

11 months ago

2.5.722

11 months ago

2.5.721

11 months ago

2.5.720

11 months ago

2.5.719

11 months ago

2.5.718

11 months ago

2.5.717

11 months ago

2.5.716

11 months ago

2.5.715

11 months ago

2.5.714

11 months ago

2.5.713

11 months ago

2.5.712

11 months ago

2.5.711

11 months ago

2.5.710

11 months ago

2.5.709

11 months ago

2.5.708

11 months ago

2.5.707

11 months ago

2.5.706

11 months ago

2.5.704

11 months ago

2.5.703

11 months ago

2.5.702

11 months ago

2.5.701

11 months ago

2.5.7

11 months ago

2.5.6

12 months ago

2.5.5

12 months ago