Skip to content

Conversation

@llbbl
Copy link

@llbbl llbbl commented Jun 27, 2025

Add Python Testing Infrastructure

Summary

This PR sets up a complete testing infrastructure for the Panoramix project using modern Python tools and best practices. The project now has a ready-to-use testing environment where developers can immediately start writing tests.

Changes Made

Package Management

  • Poetry configured as the package manager via pyproject.toml
  • Migrated existing dependencies from requirements.txt
  • Added development dependencies for testing

Testing Framework

  • pytest (v7.4.0) - Main testing framework
  • pytest-cov (v4.1.0) - Coverage reporting plugin
  • pytest-mock (v3.11.0) - Mocking utilities

Configuration

  • Comprehensive pytest configuration in pyproject.toml:
    • Test discovery patterns for flexible naming
    • Coverage settings with HTML and XML reporting
    • Custom test markers: unit, integration, slow
    • Strict mode enabled for better error detection

Directory Structure

tests/
├── __init__.py
├── conftest.py          # Shared fixtures and configuration
├── test_validation.py   # Infrastructure validation tests
├── unit/
│   └── __init__.py
└── integration/
    └── __init__.py

Shared Fixtures (in conftest.py)

  • temp_dir - Temporary directory for test files
  • mock_contract_bytecode - Sample Ethereum bytecode
  • mock_contract_address - Sample contract address
  • mock_cache_dir - Mock cache directory structure
  • mock_config - Configuration dictionary
  • mock_function_signature - Function signature mappings
  • mock_opcode_sequence - EVM opcode sequences
  • mock_storage_slot - Storage slot information
  • mock_abi - Contract ABI data
  • reset_environment - Environment cleanup
  • isolated_filesystem - Isolated file operations

Development Experience

  • Run tests with: poetry run test or poetry run tests
  • All pytest options available (e.g., -v, -k, -m)
  • Coverage reports generated automatically
  • HTML coverage report in htmlcov/ directory
  • XML coverage report as coverage.xml

Other Updates

  • Updated .gitignore with comprehensive testing entries
  • Added Claude-specific ignore patterns
  • Preserved existing cache and database ignores

How to Use

  1. Install dependencies:

    poetry install
  2. Run all tests:

    poetry run test
  3. Run specific test files:

    poetry run test tests/test_specific.py
  4. Run tests by marker:

    poetry run test -m unit        # Unit tests only
    poetry run test -m integration # Integration tests only
    poetry run test -m "not slow"  # Skip slow tests
  5. View coverage report:

    open htmlcov/index.html  # View HTML coverage report

Notes

  • Coverage threshold is currently commented out in the configuration. Once the codebase has sufficient test coverage, uncomment the --cov-fail-under=80 line in pyproject.toml to enforce 80% coverage.
  • The project uses a custom "tilde" encoding in some files, which causes coverage warnings. These can be safely ignored.
  • The poetry.lock file should be committed to ensure reproducible builds.
  • No actual unit tests for the codebase were written - this PR only sets up the infrastructure.

Next Steps

With this infrastructure in place, developers can now:

  1. Write unit tests for individual modules
  2. Add integration tests for the decompiler functionality
  3. Create performance benchmarks using the slow marker
  4. Gradually increase test coverage to meet the 80% threshold

- Set up Poetry as package manager with pyproject.toml configuration
- Add pytest, pytest-cov, and pytest-mock as dev dependencies
- Configure pytest with custom markers (unit, integration, slow)
- Set up coverage reporting with HTML/XML outputs
- Create test directory structure with shared fixtures
- Add validation tests to verify infrastructure works
- Update .gitignore with testing and development entries
- Configure test scripts as Poetry commands
@Anuphong23
Copy link

0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610122578063095ea7b3146101b057806318160ddd1461020a57806323b872dd14610233578063313ce567146102ac5780633eaaf86b146102db57806370a082311461030457806379ba5097146103515780638da5cb5b1461036657806395d89b41146103bb578063a293d1e814610449578063a9059cbb14610489578063b5931f7c146104e3578063cae9ca5114610523578063d05c78da146105c0578063d4ee1d9014610600578063dc39d06d14610655578063dd62ed3e146106af578063e6cb90131461071b578063ea44a89e1461075b578063f2fde38b146107f5575b600080fd5b341561012d57600080fd5b61013561082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017557808201518184015260208101905061015a565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101bb57600080fd5b6101f0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108cc565b604051808215151515815260200191505060405180910390f35b341561021557600080fd5b61021d6109be565b6040518082815260200191505060405180910390f35b341561023e57600080fd5b610292600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a09565b604051808215151515815260200191505060405180910390f35b34156102b757600080fd5b6102bf610c99565b604051808260ff1660ff16815260200191505060405180910390f35b34156102e657600080fd5b6102ee610cac565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b61033b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb2565b6040518082815260200191505060405180910390f35b341561035c57600080fd5b610364610cfb565b005b341561037157600080fd5b610379610e9a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103c657600080fd5b6103ce610ebf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040e5780820151818401526020810190506103f3565b50505050905090810190601f16801561043b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561045457600080fd5b6104736004808035906020019091908035906020019091905050610f5d565b6040518082815260200191505060405180910390f35b341561049457600080fd5b6104c9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f79565b604051808215151515815260200191505060405180910390f35b34156104ee57600080fd5b61050d6004808035906020019091908035906020019091905050611102565b6040518082815260200191505060405180910390f35b341561052e57600080fd5b6105a6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611126565b604051808215151515815260200191505060405180910390f35b34156105cb57600080fd5b6105ea6004808035906020019091908035906020019091905050611370565b6040518082815260200191505060405180910390f35b341561060b57600080fd5b6106136113a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066057600080fd5b610695600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506113c7565b604051808215151515815260200191505060405180910390f35b34156106ba57600080fd5b610705600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611513565b6040518082815260200191505060405180910390f35b341561072657600080fd5b610745600480803590602001909190803590602001909190505061159a565b6040518082815260200191505060405180910390f35b341561076657600080fd5b6107f3600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506115b6565b005b341561080057600080fd5b61082c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611666565b005b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055403905090565b6000610a54600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f5d565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b1d600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f5d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610be6600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361159a565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b60055481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d5757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f555780601f10610f2a57610100808354040283529160200191610f55565b820191906000526020600020905b815481529060010190602001808311610f3857829003601f168201915b505050505081565b6000828211151515610f6e57600080fd5b818303905092915050565b6000610fc4600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f5d565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361159a565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808211151561111257600080fd5b818381151561111d57fe5b04905092915050565b600082600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113035780820151818401526020810190506112e8565b50505050905090810190601f1680156113305780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b151561135157600080fd5b6102c65a03f1151561136257600080fd5b505050600190509392505050565b600081830290506000831480611390575081838281151561138d57fe5b04145b151561139b57600080fd5b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142457600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156114f057600080fd5b6102c65a03f1151561150157600080fd5b50505060405180519050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081830190508281101515156115b057600080fd5b92915050565b600080600080845186511415156115cc57600080fd5b60001515600860009054906101000a900460ff1615151415156115ee57600080fd5b85519350600092505b8383101561164357858381518110151561160d57fe5b906020019060200201519150848381518110151561162757fe5b90602001906020020151905080825582806001019350506115f7565b6001600860006101000a81548160ff021916908315150217905550505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820d5efdb6254c9f00cc1f0e7df0ba69434b42732c90e41af60218f80e87cc3a11e0029

@Anuphong23
Copy link

``0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610122578063095ea7b3146101b057806318160ddd1461020a57806323b872dd14610233578063313ce567146102ac5780633eaaf86b146102db57806370a082311461030457806379ba5097146103515780638da5cb5b1461036657806395d89b41146103bb578063a293d1e814610449578063a9059cbb14610489578063b5931f7c146104e3578063cae9ca5114610523578063d05c78da146105c0578063d4ee1d9014610600578063dc39d06d14610655578063dd62ed3e146106af578063e6cb90131461071b578063ea44a89e1461075b578063f2fde38b146107f5575b600080fd5b341561012d57600080fd5b61013561082e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017557808201518184015260208101905061015a565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101bb57600080fd5b6101f0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506108cc565b604051808215151515815260200191505060405180910390f35b341561021557600080fd5b61021d6109be565b6040518082815260200191505060405180910390f35b341561023e57600080fd5b610292600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a09565b604051808215151515815260200191505060405180910390f35b34156102b757600080fd5b6102bf610c99565b604051808260ff1660ff16815260200191505060405180910390f35b34156102e657600080fd5b6102ee610cac565b6040518082815260200191505060405180910390f35b341561030f57600080fd5b61033b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb2565b6040518082815260200191505060405180910390f35b341561035c57600080fd5b610364610cfb565b005b341561037157600080fd5b610379610e9a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103c657600080fd5b6103ce610ebf565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040e5780820151818401526020810190506103f3565b50505050905090810190601f16801561043b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561045457600080fd5b6104736004808035906020019091908035906020019091905050610f5d565b6040518082815260200191505060405180910390f35b341561049457600080fd5b6104c9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610f79565b604051808215151515815260200191505060405180910390f35b34156104ee57600080fd5b61050d6004808035906020019091908035906020019091905050611102565b6040518082815260200191505060405180910390f35b341561052e57600080fd5b6105a6600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611126565b604051808215151515815260200191505060405180910390f35b34156105cb57600080fd5b6105ea6004808035906020019091908035906020019091905050611370565b6040518082815260200191505060405180910390f35b341561060b57600080fd5b6106136113a1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066057600080fd5b610695600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506113c7565b604051808215151515815260200191505060405180910390f35b34156106ba57600080fd5b610705600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611513565b6040518082815260200191505060405180910390f35b341561072657600080fd5b610745600480803590602001909190803590602001909190505061159a565b6040518082815260200191505060405180910390f35b341561076657600080fd5b6107f3600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506115b6565b005b341561080057600080fd5b61082c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611666565b005b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b505050505081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460055403905090565b6000610a54600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f5d565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610b1d600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f5d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610be6600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361159a565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600460009054906101000a900460ff1681565b60055481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d5757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f555780601f10610f2a57610100808354040283529160200191610f55565b820191906000526020600020905b815481529060010190602001808311610f3857829003601f168201915b505050505081565b6000828211151515610f6e57600080fd5b818303905092915050565b6000610fc4600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610f5d565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361159a565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808211151561111257600080fd5b818381151561111d57fe5b04905092915050565b600082600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156113035780820151818401526020810190506112e8565b50505050905090810190601f1680156113305780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b151561135157600080fd5b6102c65a03f1151561136257600080fd5b505050600190509392505050565b600081830290506000831480611390575081838281151561138d57fe5b04145b151561139b57600080fd5b92915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142457600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156114f057600080fd5b6102c65a03f1151561150157600080fd5b50505060405180519050905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081830190508281101515156115b057600080fd5b92915050565b600080600080845186511415156115cc57600080fd5b60001515600860009054906101000a900460ff1615151415156115ee57600080fd5b85519350600092505b8383101561164357858381518110151561160d57fe5b906020019060200201519150848381518110151561162757fe5b90602001906020020151905080825582806001019350506115f7565b6001600860006101000a81548160ff021916908315150217905550505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820d5efdb6254c9f00cc1f0e7df0ba69434b42732c90e41af60218f80e87cc3a11e0029

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants