diff --git a/.env.docker-compose.example b/.env.docker-compose.example new file mode 100644 index 000000000..9a414d7e5 --- /dev/null +++ b/.env.docker-compose.example @@ -0,0 +1,71 @@ +# Docker Compose Environment Configuration +# Copy this file to .env and adjust as needed + +# ============================================================================ +# Authentication Mode +# ============================================================================ +# Set to "mock" for local development (no Privy account needed) +# Set to "privy" to test real Privy authentication flow +AUTH_MODE=mock + +# ============================================================================ +# Port Configuration +# ============================================================================ +# Anvil local blockchain RPC port +ANVIL_PORT=8545 + +# PostgreSQL database port +POSTGRES_PORT=5433 + +# API service port +API_PORT=3000 + +# API metrics/monitoring port +METRICS_PORT=3003 + +# Frontend (comps) port +COMPS_PORT=3001 + +# ============================================================================ +# API Configuration +# ============================================================================ +# API route prefix (e.g., /backend-api/api) +API_PREFIX=backend-api + +# ============================================================================ +# Privy Configuration (only needed if AUTH_MODE=privy) +# ============================================================================ +# Get these from https://dashboard.privy.io +# PRIVY_APP_ID=your_app_id_here +# PRIVY_APP_SECRET=your_app_secret_here +# PRIVY_JWKS_PUBLIC_KEY=your_jwks_key_here + +# ============================================================================ +# WalletConnect (optional) +# ============================================================================ +# Get project ID from https://cloud.walletconnect.com/ +# NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id_here + +# ============================================================================ +# Notes +# ============================================================================ +# +# Mock Mode (AUTH_MODE=mock): +# - No Privy account required +# - Users seeded with fake Privy IDs +# - Connect with any Anvil wallet address +# - Perfect for local development +# +# Privy Mode (AUTH_MODE=privy): +# - Requires Privy developer account +# - Configure PRIVY_* variables above +# - Link Anvil wallets to Privy users +# - Use for integration testing +# +# Database is automatically seeded with: +# - 10 users (mapped to Anvil wallets) +# - 15 agents (with API keys) +# - 6 competitions (completed, active, pending) +# - Various enrollments +# +# See LOCAL_DEV.md for complete setup guide diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4fc9b37cb..122259694 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,8 @@ jobs: - name: Start services via docker compose run: docker compose up -d --wait db anvil + env: + POSTGRES_PORT: 5432 - name: Create test environment for api app working-directory: apps/api diff --git a/LOCAL_DOCKER_DEV.md b/LOCAL_DOCKER_DEV.md new file mode 100644 index 000000000..263142cc7 --- /dev/null +++ b/LOCAL_DOCKER_DEV.md @@ -0,0 +1,306 @@ +# Local Docker Development + +This setup supports using Docker Compose to get a somewhat realistic dev environment running locally with an Anvil chain, contracts, mock data, etc... There are different Docker profiles configured for different dev goals. + +--- + +### Getting Started + +For first time use, you will want to start by building: +`docker compose --profile full build` + +NOTE: if you encounter errors, consider cleaning up docker. + +```bash +# nuclear option... +docker stop $(docker ps -q) +docker rm $(docker container ls -q -a) +docker image rm $(docker image ls -q) +docker volume rm $(docker volume ls -q) +docker system prune --volumes +``` + +### Basic Operations + +```bash +# Start in foreground (log to terminal), run comps app on host +docker compose --profile comps up + +# Start in background, logs available via docker tooling +docker compose --profile comps up -d + +# Stop services +docker compose down + +# Stop and remove volumes (reset database) +docker compose down -v + +# Rebuild a service after code changes +docker compose build api +docker compose up api +``` + +--- + +## Development profiles + +| Scenario | Command | +| --------------------------------------------------------------- | ----------------------------------- | +| **1. Explicitly running comps, with all other infra in Docker** | `docker compose --profile comps up` | +| **2. Explicitly running api + comps** | `docker compose up` | +| **3. Everything in Docker** | `docker compose --profile full up` | +| **4. Explicitly running api** | `docker compose --profile api up` | + +As an example, to work on `comps` in a normal next.js dev flow, i.e. hot reloading etc... You can do `docker compose --profile comps up` in one terminal window, then do `cd apps/comps && npm run dev` in another window. + +**NOTE: Docker exposes postgres on port 5433 so that you can keep the normal 5432 reserved for a separate postgres instance on the host machine. Update your .env as needed** + +--- + +## Seeded Data + +When you start the Docker Compose stack, the `db-seed` service automatically seeds the database with: + +- **10 Users** - Mapped to Anvil wallets (10,000 ETH each) +- **15 Agents** - With API keys (agents 11-13 left unenrolled for testing) +- **4 Arenas** - Spot Trading, Perpetuals, Cross-Chain, DeFi +- **5 Competitions**: + - Winter Perpetuals Championship (completed, 7 agents) + - Spring Spot Trading Challenge (active, 10 agents) + - Cross-Chain Masters Series (active, 6 agents) + - Summer Perpetuals Pro League (pending, 0 agents) + - Beginner Spot Trading (pending, 0 agents) +- **Airdrop/Conviction Staking** - Season 1 with 9 claimable allocations (1000 tokens each) + +### Anvil Test Wallets + +| User | Address | +| ---- | -------------------------------------------- | +| 0 | `0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266` | +| 1 | `0x70997970C51812dc3A010C7d01b50e0d17dc79C8` | +| 2 | `0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC` | +| 3 | `0x90F79bf6EB2c4f870365E785982E1f101E93b906` | +| 4 | `0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65` | +| 5 | `0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc` | +| 6 | `0x976EA74026E726554dB657fA54763abd0C3a0aa9` | +| 7 | `0x14dC79964da2C08b23698B3D3cc7Ca32193d9955` | +| 8 | `0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f` | +| 9 | `0xa0Ee7A142d267C1f36714E4a8F75612F20a79720` | + +Private keys available in `local/seed/src/anvil-wallets.ts` + +### Get Agent API Keys + +```bash +docker compose logs db-seed | grep "API Key" +# or +./local/seed/show-api-keys.sh +``` + +--- + +### Database Operations + +```bash +# Access database directly +psql postgresql://postgres:postgres@localhost:5433/postgres +# or +docker exec -it recall-db psql -U postgres +``` + +--- + +## MetaMask Setup + +1. **Add Local Network:** + + - Network name: Anvil Local + - RPC URL: http://localhost:8545 + - Chain ID: 31337 + - Currency symbol: ETH + +2. **Import Test Account:** + - Copy a private key from `local/seed/src/anvil-wallets.ts` + - Import into MetaMask + - You'll have 10,000 ETH to work with + +--- + +## Cron Jobs + +The `cron` container automatically calls comps app endpoints on a schedule (competition start/end, portfolio snapshots, etc.). + +**Setup:** Add to `apps/comps/.env.local` or `apps/comps/.env`: + +```env +CRON_SECRET=local-dev-secret +``` + +The cron container runs by default and silently retries if comps isn't ready yet. + +--- + +## Test Agent API + +```bash +# Get an API key from seed logs +API_KEY=$(docker compose logs db-seed | grep "API Key" | head -1 | awk '{print $NF}') + +# Make authenticated request +curl http://localhost:3000/backend-api/api/agents/me \ + -H "Authorization: Bearer $API_KEY" +``` + +--- + +## Smart Contracts + +The Anvil container includes pre-deployed smart contracts. Contract addresses are saved in: +`packages/staking-contracts/contracts/deployments/docker/` + +### Airdrop Contracts + +The local environment includes a fully functional airdrop system: + +- **FuulAirdropDistributorFactory** - Factory for creating airdrop distributors +- **FuulAirdropDistributor** - Handles token claims with conviction staking + +**Claimable Accounts:** Anvil wallets 1-9 (not wallet 0, which is the deployer) + +| Duration | Penalty | Receive % | +|----------|---------|-----------| +| No stake | 50% | 10% | +| 30 days | 30% | 20% | +| 90 days | 15% | 40% | +| 180 days | 5% | 60% | +| 365 days | 0% | 100% | + +**Contract Address:** +The airdrop distributor address is set via `NEXT_PUBLIC_AIRDROP_CONTRACT_ADDRESS`. +Default: `0x09635F643e140090A9A8Dcd712eD6285858ceBef` + +If you rebuild the Anvil state, verify the address in the deployment logs: +```bash +./local/anvil/rebuild-state.sh | grep "created at" +``` + +**Testing the Airdrop UI:** +1. Import an Anvil private key (wallets 1-9) into MetaMask +2. Connect wallet to the comps app +3. Navigate to the Stake page +4. The "Conviction Staking" section should appear with claimable rewards + +### Rebuild Anvil State + +If contracts change, rebuild the Anvil state: + +```bash +# Rebuild state with updated contracts +./local/anvil/rebuild-state.sh + +# Rebuild the Anvil image +docker compose build anvil + +# Restart with new state +docker compose up anvil +``` + +--- + +## Troubleshooting + +### Port Conflicts + +Override default ports in your `.env` file: + +```env +ANVIL_PORT=8546 +POSTGRES_PORT=5434 +API_PORT=3002 +COMPS_PORT=3002 +``` + +### Database Issues + +```bash +# Check database logs +docker compose logs db + +# Restart database +docker compose restart db + +# Complete database reset +docker compose down -v +docker compose up +``` + +### API Migration Issues + +```bash +# Check if migrations ran +docker compose logs api | grep migration + +# When running API locally, manually run migrations +cd apps/api +pnpm db:migrate +``` + +### Seeder Fails + +The db-seed service expects database migrations to be complete: + +- **With `--profile comps` or `--profile full`:** API container runs migrations automatically +- **Without profile (scenarios 2 & 4):** You MUST run `pnpm db:migrate` locally first + +```bash +# Check seeder logs +docker compose logs db-seed + +# Re-run seeder (idempotent) +docker compose up db-seed +``` + +### Stale Data + +```bash +# Complete reset +docker compose down -v +docker compose --profile full up +``` + +### Node/pnpm PATH Issues + +Add to your `~/.bashrc` or `~/.zshrc`: + +```bash +export PATH="/home/joe/.nvm/versions/node/v22.13.1/bin/:$PATH" +``` + +Then reload: `source ~/.bashrc` or `source ~/.zshrc` + +--- + +## Performance Tips + +1. **Run services in background:** Use `-d` flag for faster terminal access + + ```bash + docker compose --profile api up -d + ``` + +2. **Use Scenario 1 or 2 for active development:** Local execution is much faster than containers + +3. **Keep Docker Compose running:** No need to stop/start between code changes when running locally + +4. **Use Scenario 3 sparingly:** Only for testing full stack or when sharing setup + +--- + +## Quick Reference Table + +| What you're working on | Recommended Scenario | Command | +| ------------------------------- | -------------------- | -------------------------------------- | +| Frontend (comps) only | Scenario 1 | `docker compose --profile comps up` | +| Backend (API) only | Scenario 2 or 4 | `docker compose up` or `--profile api` | +| Full-stack development | Scenario 2 | `docker compose up` | +| Everything in Docker deployment | Scenario 3 | `docker compose --profile full up` | diff --git a/README.md b/README.md index 930222661..e3984c207 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,23 @@ The repository includes configurations for: - Cursor - Zed +### Local Development Setup + +The repository includes a `docker-compose.yml` that will start all of the needed services to test and develop against a full network + +To start you can do: `docker compose up` + +Services: + +- anvil: available on the host machine via ANVIL_PORT (default 8545) +- db: postgres instance available on the host machine via POSTGRES_PORT (default 5433) +- api: the api server and metrics server available on the host machine via API_PORT (default 3000) and METRICS_PORT (default 3003) +- comps: the next.js server available via COMPS_PORT (default 3001) + +See `.env.example` for the full list of env vars + +More details are available in LOCKER_DOCKER_DEV.md + ## Development with Cursor This project is optimized for development using [Cursor](https://cursor.sh/), a modern IDE built for AI-assisted development. The repository includes `.cursorrules` configuration to ensure consistent development experience across the team. diff --git a/apps/api/trade-simulator-docker/Dockerfile b/apps/api/trade-simulator-docker/Dockerfile index 1d7928be9..bd35d8bec 100644 --- a/apps/api/trade-simulator-docker/Dockerfile +++ b/apps/api/trade-simulator-docker/Dockerfile @@ -36,6 +36,10 @@ RUN npm install -g pnpm COPY --from=builder /workdir /workdir +# Copy entrypoint script +COPY apps/api/trade-simulator-docker/entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + # Set environment variables ENV NODE_ENV=production ENV PORT=3000 @@ -46,5 +50,5 @@ EXPOSE $PORT $METRICS_PORT WORKDIR /workdir/apps/api -# Start the application -CMD ["node", "dist/src/index.js"] +# Use entrypoint script that runs migrations before starting +ENTRYPOINT ["/entrypoint.sh"] diff --git a/apps/api/trade-simulator-docker/entrypoint.sh b/apps/api/trade-simulator-docker/entrypoint.sh new file mode 100755 index 000000000..03ea7e72c --- /dev/null +++ b/apps/api/trade-simulator-docker/entrypoint.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +echo "============================================" +echo "API Container Entrypoint" +echo "============================================" + +# Wait for database to be ready +echo "Waiting for database..." +until PGPASSWORD=postgres psql -h db -U postgres -d postgres -c '\q' 2>/dev/null; do + echo "Database is unavailable - sleeping" + sleep 2 +done +echo "✓ Database is ready" + +# Run migrations +echo "Running database migrations..." +cd /workdir/apps/api +pnpm db:migrate +echo "✓ Migrations complete" + +# Start the application +echo "Starting API server..." +exec node dist/src/index.js diff --git a/apps/comps/Dockerfile b/apps/comps/Dockerfile index 5e388be3f..2450b9b31 100644 --- a/apps/comps/Dockerfile +++ b/apps/comps/Dockerfile @@ -24,6 +24,12 @@ COPY . . # Build arguments for Next.js public environment variables ARG NEXT_PUBLIC_API_BASE_URL ARG NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID +ARG NEXT_PUBLIC_CHAIN_ID +ARG NEXT_PUBLIC_ETH_RPC_URL +ARG NEXT_PUBLIC_TOKEN_CONTRACT_ADDRESS +ARG NEXT_PUBLIC_STAKING_CONTRACT_ADDRESS +ARG NEXT_PUBLIC_REWARD_ALLOCATION_CONTRACT_ADDRESS +ARG NEXT_PUBLIC_AIRDROP_CONTRACT_ADDRESS # Build the application RUN pnpm --filter=@recallnet/fonts build && \ diff --git a/apps/comps/abi/FuulAirdropDistributorFactory.ts b/apps/comps/abi/FuulAirdropDistributorFactory.ts new file mode 100644 index 000000000..4dae6b894 --- /dev/null +++ b/apps/comps/abi/FuulAirdropDistributorFactory.ts @@ -0,0 +1,262 @@ +export const FuulAirdropDistributorFactoryABI = [ + { inputs: [], stateMutability: "nonpayable", type: "constructor" }, + { inputs: [], name: "AccessControlBadConfirmation", type: "error" }, + { + inputs: [ + { internalType: "address", name: "account", type: "address" }, + { internalType: "bytes32", name: "neededRole", type: "bytes32" }, + ], + name: "AccessControlUnauthorizedAccount", + type: "error", + }, + { inputs: [], name: "InvalidDurationPenalty", type: "error" }, + { inputs: [], name: "InvalidMerkleRoot", type: "error" }, + { inputs: [], name: "ZeroAddress", type: "error" }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "distributorId", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "distributorAddress", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "admin", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "currency", + type: "address", + }, + ], + name: "DistributorCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" }, + { + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, + ], + name: "RoleAdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: "bytes32", name: "role", type: "bytes32" }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + type: "event", + }, + { + inputs: [], + name: "DEFAULT_ADMIN_ROLE", + outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + components: [ + { internalType: "address", name: "admin", type: "address" }, + { internalType: "address", name: "pauser", type: "address" }, + { internalType: "address", name: "verifier", type: "address" }, + { + internalType: "uint256", + name: "nativeFeeAmount", + type: "uint256", + }, + { + internalType: "bytes32", + name: "distributorMerkleRoot", + type: "bytes32", + }, + { internalType: "address", name: "currency", type: "address" }, + { + internalType: "address", + name: "stakingContract", + type: "address", + }, + { + components: [ + { internalType: "uint256", name: "duration", type: "uint256" }, + { internalType: "uint256", name: "penalty", type: "uint256" }, + ], + internalType: + "struct IFuulAirdropDistributorFactory.DurationPenalty[]", + name: "durationPenalty", + type: "tuple[]", + }, + ], + internalType: "struct IFuulAirdropDistributorFactory.DistributorInitParams", + name: "params", + type: "tuple", + }, + ], + name: "createDistributor", + outputs: [ + { internalType: "address", name: "distributorAddress", type: "address" }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "distributorImplementation", + outputs: [{ internalType: "address", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "uint256", name: "distributorId", type: "uint256" }, + ], + name: "distributors", + outputs: [{ internalType: "address", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "uint256", name: "distributorId", type: "uint256" }, + ], + name: "getDistributor", + outputs: [{ internalType: "address", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "bytes32", name: "role", type: "bytes32" }], + name: "getRoleAdmin", + outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "bytes32", name: "role", type: "bytes32" }, + { internalType: "uint256", name: "index", type: "uint256" }, + ], + name: "getRoleMember", + outputs: [{ internalType: "address", name: "", type: "address" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [{ internalType: "bytes32", name: "role", type: "bytes32" }], + name: "getRoleMemberCount", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "bytes32", name: "role", type: "bytes32" }, + { internalType: "address", name: "account", type: "address" }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { internalType: "bytes32", name: "role", type: "bytes32" }, + { internalType: "address", name: "account", type: "address" }, + ], + name: "hasRole", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { internalType: "bytes32", name: "role", type: "bytes32" }, + { internalType: "address", name: "callerConfirmation", type: "address" }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { internalType: "bytes32", name: "role", type: "bytes32" }, + { internalType: "address", name: "account", type: "address" }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [{ internalType: "bytes4", name: "interfaceId", type: "bytes4" }], + name: "supportsInterface", + outputs: [{ internalType: "bool", name: "", type: "bool" }], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalDistributorsCreated", + outputs: [{ internalType: "uint256", name: "", type: "uint256" }], + stateMutability: "view", + type: "function", + }, +] as const; diff --git a/apps/comps/config/public.ts b/apps/comps/config/public.ts index bc4c79c33..55cc79411 100644 --- a/apps/comps/config/public.ts +++ b/apps/comps/config/public.ts @@ -1,13 +1,13 @@ -import { Chain, base, baseSepolia } from "viem/chains"; +import { Chain, base, baseSepolia, foundry } from "viem/chains"; import z from "zod/v4"; export const configSchema = z .strictObject({ frontendUrl: z.union([z.url(), z.literal("")]).default(""), blockchain: z.object({ - chainId: z.coerce.number().default(84532), - chain: z.custom().default(baseSepolia), - rpcUrl: z.url().optional(), + chainId: z.coerce.number().default(31337), + chain: z.custom().default(foundry), + rpcUrl: z.string().optional(), tokenContractAddress: z .string() .default("0x7323CC5c18DEcCD3e918bbccff80333961d85a88"), @@ -32,6 +32,8 @@ export const configSchema = z chain = base; } else if (config.blockchain.chainId === baseSepolia.id) { chain = baseSepolia; + } else if (config.blockchain.chainId === foundry.id) { + chain = foundry; } else { ctx.addIssue({ code: "custom", diff --git a/docker-compose.yml b/docker-compose.yml index 6698f65d2..4a500f6d6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,15 +7,16 @@ networks: services: anvil: - image: ghcr.io/foundry-rs/foundry:latest + build: + context: ./local/anvil + dockerfile: Dockerfile + image: recall-anvil container_name: recall-anvil restart: always networks: - recall-network ports: - - "8545:8545" - entrypoint: - ["anvil", "--host", "0.0.0.0", "--chain-id", "31337", "--block-time", "1"] + - "${ANVIL_PORT:-8545}:8545" healthcheck: test: ["CMD", "cast", "block-number", "--rpc-url", "http://localhost:8545"] @@ -30,7 +31,7 @@ services: networks: - recall-network ports: - - "5432:5432" + - "${POSTGRES_PORT:-5433}:5432" environment: POSTGRES_DB: postgres POSTGRES_USER: postgres @@ -44,6 +45,9 @@ services: retries: 5 api: + profiles: + - comps + - full build: context: . dockerfile: apps/api/trade-simulator-docker/Dockerfile @@ -57,19 +61,43 @@ services: - "${METRICS_PORT:-3003}:${METRICS_PORT:-3003}" environment: DATABASE_URL: postgresql://postgres:postgres@db/postgres - API_PREFIX: ${API_PREFIX:-} + API_PREFIX: ${API_PREFIX:-backend-api} PORT: ${API_PORT:-3000} METRICS_PORT: ${METRICS_PORT:-3003} depends_on: - db + db-seed: + build: + context: . + dockerfile: local/seed/Dockerfile + image: recall-db-seed + container_name: recall-db-seed + restart: "no" + networks: + - recall-network + environment: + DATABASE_URL: postgresql://postgres:postgres@db/postgres + depends_on: + db: + condition: service_healthy + comps: + profiles: + - api + - full build: context: . dockerfile: apps/comps/Dockerfile args: - NEXT_PUBLIC_API_BASE_URL: "http://api:${API_PORT:-3000}${API_PREFIX:+/${API_PREFIX}}/api" + NEXT_PUBLIC_API_BASE_URL: "http://localhost:${API_PORT:-3000}${API_PREFIX:+/${API_PREFIX}}/api" NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID: ${NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID:-} + NEXT_PUBLIC_CHAIN_ID: ${NEXT_PUBLIC_CHAIN_ID:-31337} + NEXT_PUBLIC_ETH_RPC_URL: ${NEXT_PUBLIC_ETH_RPC_URL:-http://anvil:8545} + NEXT_PUBLIC_TOKEN_CONTRACT_ADDRESS: ${NEXT_PUBLIC_TOKEN_CONTRACT_ADDRESS:-0x5FbDB2315678afecb367f032d93F642f64180aa3} + NEXT_PUBLIC_STAKING_CONTRACT_ADDRESS: ${NEXT_PUBLIC_STAKING_CONTRACT_ADDRESS:-0x9A676e781A523b5d0C0e43731313A708CB607508} + NEXT_PUBLIC_REWARD_ALLOCATION_CONTRACT_ADDRESS: ${NEXT_PUBLIC_REWARD_ALLOCATION_CONTRACT_ADDRESS:-0x68B1D87F95878fE05B998F19b66F4baba5De1aed} + NEXT_PUBLIC_AIRDROP_CONTRACT_ADDRESS: ${NEXT_PUBLIC_AIRDROP_CONTRACT_ADDRESS:-0x09635F643e140090A9A8Dcd712eD6285858ceBef} image: recall-comps container_name: recall-comps restart: always @@ -79,8 +107,34 @@ services: - "${COMPS_PORT:-3001}:${COMPS_PORT:-3001}" environment: PORT: ${COMPS_PORT:-3001} + DATABASE_URL: postgresql://postgres:postgres@db/postgres + NEXT_PUBLIC_API_BASE_URL: "${COMPS_API_URL:-http://localhost:${API_PORT:-3000}}${API_PREFIX:+/${API_PREFIX}}/api" + NEXT_PUBLIC_CHAIN_ID: ${NEXT_PUBLIC_CHAIN_ID:-31337} + NEXT_PUBLIC_ETH_RPC_URL: ${NEXT_PUBLIC_ETH_RPC_URL:-http://anvil:8545} + NEXT_PUBLIC_TOKEN_CONTRACT_ADDRESS: ${NEXT_PUBLIC_TOKEN_CONTRACT_ADDRESS:-0x5FbDB2315678afecb367f032d93F642f64180aa3} + NEXT_PUBLIC_STAKING_CONTRACT_ADDRESS: ${NEXT_PUBLIC_STAKING_CONTRACT_ADDRESS:-0x9A676e781A523b5d0C0e43731313A708CB607508} + NEXT_PUBLIC_REWARD_ALLOCATION_CONTRACT_ADDRESS: ${NEXT_PUBLIC_REWARD_ALLOCATION_CONTRACT_ADDRESS:-0x68B1D87F95878fE05B998F19b66F4baba5De1aed} + NEXT_PUBLIC_AIRDROP_CONTRACT_ADDRESS: ${NEXT_PUBLIC_AIRDROP_CONTRACT_ADDRESS:-0x09635F643e140090A9A8Dcd712eD6285858ceBef} + extra_hosts: + - "host.docker.internal:host-gateway" depends_on: - - api + - db-seed + - anvil + + cron: + build: + context: ./local/cron + dockerfile: Dockerfile + image: recall-cron + container_name: recall-cron + restart: always + networks: + - recall-network + environment: + COMPS_URL: ${COMPS_URL:-http://host.docker.internal:3001} + CRON_SECRET: ${CRON_SECRET:-local-dev-secret} + extra_hosts: + - "host.docker.internal:host-gateway" volumes: postgres-data: diff --git a/local/anvil/Dockerfile b/local/anvil/Dockerfile new file mode 100644 index 000000000..aa83792c0 --- /dev/null +++ b/local/anvil/Dockerfile @@ -0,0 +1,7 @@ +FROM ghcr.io/foundry-rs/foundry:latest + +COPY anvil-state.json /anvil-state.json + +EXPOSE 8545 + +ENTRYPOINT ["anvil", "--host", "0.0.0.0", "--chain-id", "31337", "--block-time", "1", "--load-state", "/anvil-state.json"] diff --git a/local/anvil/Dockerfile.stategen b/local/anvil/Dockerfile.stategen new file mode 100644 index 000000000..b0718f2e5 --- /dev/null +++ b/local/anvil/Dockerfile.stategen @@ -0,0 +1,32 @@ +FROM ghcr.io/foundry-rs/foundry:latest AS foundry + +FROM node:22 + +# Install procps for ps command +RUN apt-get update && apt-get install -y procps && rm -rf /var/lib/apt/lists/* + +# Copy foundry binaries from foundry image +COPY --from=foundry /usr/local/bin/forge /usr/local/bin/forge +COPY --from=foundry /usr/local/bin/cast /usr/local/bin/cast +COPY --from=foundry /usr/local/bin/anvil /usr/local/bin/anvil +COPY --from=foundry /usr/local/bin/chisel /usr/local/bin/chisel + +# Enable corepack for pnpm +RUN corepack enable + +# Set working directory +WORKDIR /workspace + +# Copy contract files +COPY packages/staking-contracts/contracts /contracts + +# Install dependencies +WORKDIR /contracts +RUN pnpm install --frozen-lockfile + +# Copy the state generation script +COPY local/anvil/generate-state.sh /generate-state.sh +RUN chmod +x /generate-state.sh + +# Run the state generation script +CMD ["/generate-state.sh"] diff --git a/local/anvil/anvil-state.json b/local/anvil/anvil-state.json new file mode 100644 index 000000000..91826d58d --- /dev/null +++ b/local/anvil/anvil-state.json @@ -0,0 +1 @@ +{"block":{"number":"0x23","beneficiary":"0x0000000000000000000000000000000000000000","timestamp":"0x695e8834","gas_limit":30000000,"basefee":13571185,"difficulty":"0x0","prevrandao":"0x0fc818f3455f9c46fc35d458a85dd462f6c1b9b993c145449435638764419a12","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x325ca78463310","code":"0x","storage":{}},"0x09635f643e140090a9a8dcd712ed6285858cebef":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101985760003560e01c80638a2ddd03116100e3578063b1ee828c1161008c578063d547741f11610066578063d547741f14610400578063e8ff793614610413578063fdea36571461042657600080fd5b8063b1ee828c1461037c578063b228c1c4146103da578063ca15c873146103ed57600080fd5b8063a217fddf116100bd578063a217fddf1461034c578063a3246ad314610354578063b187bd261461037457600080fd5b80638a2ddd03146102ed5780639010d07c146102f557806391d148541461030857600080fd5b8063595c6a67116101455780635c975abb1161011f5780635c975abb146102a45780637ba191b9146102af57806382eb1152146102c257600080fd5b8063595c6a671461027657806359c9eb901461027e5780635bb478081461029157600080fd5b80632f2ff15d116101765780632f2ff15d1461023b57806336568abe1461025057806355dff0e31461026357600080fd5b806301ffc9a71461019d578063222e9e82146101c5578063248a9ca31461020a575b600080fd5b6101b06101ab3660046114cc565b61042f565b60405190151581526020015b60405180910390f35b6004546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b61022d61021836600461150e565b60009081526020819052604090206001015490565b6040519081526020016101bc565b61024e610249366004611550565b61048b565b005b61024e61025e366004611550565b6104b6565b61024e61027136600461157c565b610514565b61024e6105e4565b61024e61028c36600461150e565b6105fa565b61024e61029f3660046115a6565b61067c565b60025460ff166101b0565b61024e6102bd3660046115c1565b61076c565b61022d6102d0366004611638565b600660209081526000928352604080842090915290825290205481565b61024e610a53565b6101e5610303366004611662565b610a66565b6101b0610316366004611550565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61022d600081565b61036761036236600461150e565b610a85565b6040516101bc9190611684565b6101b0610a9f565b6103bf61038a3660046115a6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600760205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016101bc565b61024e6103e83660046117cb565b610ab2565b61022d6103fb36600461150e565b610ca5565b61024e61040e366004611550565b610cbc565b61024e61042136600461157c565b610ce1565b61022d60055481565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610485575061048582610dcb565b92915050565b6000828152602081905260409020600101546104a681610e62565b6104b08383610e6c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610505576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050f8282610ea1565b505050565b600061051f81610e62565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040812054900361057d576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526007602052604090819020849055517f3a22865564a15e1d9be087fd90192483ce3d3e86d8784aba2dafd45f85221283906105d79085815260200190565b60405180910390a2505050565b60006105ef81610e62565b6105f7610ece565b50565b600061060581610e62565b6005548203610640576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527fcb7ee917d029d22a071ecb2b3db0556ca49424002997ae83d8a4fff552ef72f69060200160405180910390a15050565b600061068781610e62565b73ffffffffffffffffffffffffffffffffffffffff82166106d4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045473ffffffffffffffffffffffffffffffffffffffff1615610724576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610774610f53565b61077c610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064015b60405180910390fd5b3360005b82811015610a43573684848381811061081f5761081f6119cc565b905060200281019061083191906119fb565b9050600060078161084860408501602086016115a6565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080549091501561090a57600554816002015461088a9190611a68565b421061089e57600060018201554260028201555b805460018201546108b490604085013590611a68565b11156108ec576040517f7329a9df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81604001358160010160008282546109049190611a68565b90915550505b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084602001602081019061095f91906115a6565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002091909155610996908301836115a6565b73ffffffffffffffffffffffffffffffffffffffff1663dc63f6ae6109c160408501602086016115a6565b8660408601356109d46060880188611a7b565b6109e160808a018a611a7b565b6040518863ffffffff1660e01b8152600401610a039796959493929190611b35565b600060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b50506001909401935061080492505050565b5050610a4f6001600355565b5050565b6000610a5e81610e62565b6105f7610fd5565b6000828152600160205260408120610a7e908361102c565b9392505050565b600081815260016020526040902060609061048590611038565b6000610aad60025460ff1690565b905090565b610aba610f53565b610ac2610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064016107f7565b60045473ffffffffffffffffffffffffffffffffffffffff16635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190611ba8565b5060005b8251811015610c9a576000838281518110610c0e57610c0e6119cc565b60200260200101519050806000015173ffffffffffffffffffffffffffffffffffffffff1663564cd00b8260200151856040518363ffffffff1660e01b8152600401610c5b929190611bca565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505060019093019250610bf1915050565b50610a4f6001600355565b600081815260016020526040812061048590611045565b600082815260208190526040902060010154610cd781610e62565b6104b08383610ea1565b6000610cec81610e62565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205415610d49576040517fdd6f914400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606081018252838152600060208083018281524284860190815273ffffffffffffffffffffffffffffffffffffffff8916808552600784529386902094518555905160018501555160029093019290925591518481527f5cd914c3e9450bdc97363f4edb9c4e5abcd1ef53b7a14e0c6c6aea850975758391016105d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061048557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610485565b6105f7813361104f565b600080610e7984846110d5565b90508015610a7e576000848152600160205260409020610e9990846111d1565b509392505050565b600080610eae84846111f3565b90508015610a7e576000848152600160205260409020610e9990846112ae565b610ed6610f96565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f293390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600260035403610f8f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615610fd3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610fdd6112d0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610f29565b6000610a7e838361130c565b60606000610a7e83611336565b6000610485825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016107f7565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556111673390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610485565b506000610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff8416611392565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff84166113d9565b60025460ff16610fd3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826000018281548110611323576113236119cc565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561138657602002820191906000526020600020905b815481526020019060010190808311611372575b50505050509050919050565b60008181526001830160205260408120546111c957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610485565b600081815260018301602052604081205480156114c25760006113fd600183611cb1565b855490915060009061141190600190611cb1565b9050808214611476576000866000018281548110611431576114316119cc565b9060005260206000200154905080876000018481548110611454576114546119cc565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061148757611487611cc4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610485565b6000915050610485565b6000602082840312156114de57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a7e57600080fd5b60006020828403121561152057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461154b57600080fd5b919050565b6000806040838503121561156357600080fd5b8235915061157360208401611527565b90509250929050565b6000806040838503121561158f57600080fd5b61159883611527565b946020939093013593505050565b6000602082840312156115b857600080fd5b610a7e82611527565b600080602083850312156115d457600080fd5b823567ffffffffffffffff8111156115eb57600080fd5b8301601f810185136115fc57600080fd5b803567ffffffffffffffff81111561161357600080fd5b8560208260051b840101111561162857600080fd5b6020919091019590945092505050565b6000806040838503121561164b57600080fd5b61165483611527565b915061157360208401611527565b6000806040838503121561167557600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156116d257835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161169e565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561172f5761172f6116dd565b60405290565b60405160e0810167ffffffffffffffff8111828210171561172f5761172f6116dd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561179f5761179f6116dd565b604052919050565b600067ffffffffffffffff8211156117c1576117c16116dd565b5060051b60200190565b600080604083850312156117de57600080fd5b823567ffffffffffffffff8111156117f557600080fd5b8301601f8101851361180657600080fd5b8035611819611814826117a7565b611758565b8082825260208201915060208360051b85010192508783111561183b57600080fd5b602084015b838110156119b957803567ffffffffffffffff81111561185f57600080fd5b85016040818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561189357600080fd5b61189b61170c565b6118a760208301611527565b8152604082013567ffffffffffffffff8111156118c357600080fd5b6020818401019250508a601f8301126118db57600080fd5b81356118e9611814826117a7565b80828252602082019150602060e0840286010192508d83111561190b57600080fd5b6020850194505b8285101561199a5760e0858f03121561192a57600080fd5b611932611735565b61193b86611527565b815261194960208701611527565b602082015261195a60408701611527565b6040820152606086810135908201526080808701359082015260a0808701359082015260c08087013590820152825260e090940193602090910190611912565b8060208501525050508085525050602083019250602081019050611840565b5094506115739250505060208401611527565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112611a2f57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561048557610485611a39565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ab057600080fd5b83018035915067ffffffffffffffff821115611acb57600080fd5b6020019150600581901b3603821315611ae357600080fd5b9250929050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611b1c57600080fd5b8260051b80836020870137939093016020019392505050565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015260a060608201526000611b8760a083018688611aea565b8281036080840152611b9a818587611aea565b9a9950505050505050505050565b600060208284031215611bba57600080fd5b81518015158114610a7e57600080fd5b6040808252835190820181905260009060208501906060840190835b81811015611c8a57835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff6040820151166040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501525060e083019250602084019350600181019050611be6565b505073ffffffffffffffffffffffffffffffffffffffff851660208501529150610a7e9050565b8181038181111561048557610485611a39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122036c010d28b40fdfe09bd45eef1f74644b1bcd2f5179d931c1c4a46d8c06cec3d64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000003":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000004":"0x000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","0x0000000000000000000000000000000000000000000000000000000000000005":"0x0000000000000000000000000000000000000000000000000000000000015180","0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x25ef4724465a730631953512e5276faca131f1eb4d6aa575c6a27e5c8ffa020a":"0x0000000000000000000000000000000000000000000000000000000000000001","0x3471021a57ac06568e6a3064485bde7912220cf82f2e58df9da59a7ec8e62f11":"0x0000000000000000000000000000000000000000000000000000000000000001","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063842e29811161017b578063c0c53b8b116100d8578063e71180ae1161008c578063f188768411610071578063f188768414610759578063f2c3999214610762578063fb1bb9de1461076a57600080fd5b8063e71180ae1461073c578063eb4af0451461074657600080fd5b8063ca7c0af1116100bd578063ca7c0af1146106f5578063d547741f14610702578063e63ab1e91461071557600080fd5b8063c0c53b8b146106d9578063c1292cc3146106ec57600080fd5b80639e2c8a5b1161012f578063a217fddf11610114578063a217fddf1461069e578063ac9650d8146106a6578063b2fb30cb146106c657600080fd5b80639e2c8a5b1461066b5780639ed8e92d1461067e57600080fd5b806391d148541161016057806391d14854146105cc57806396dc1dc1146106315780639d28b5061461064457600080fd5b8063842e2981146105a45780638456cb59146105c457600080fd5b80633cbfe3a1116102295780635c975abb116101dd5780637488df89116101c25780637488df89146105615780637b0472f014610588578063817b1cd21461059b57600080fd5b80635c975abb146105245780637153fc331461054e57600080fd5b806344feed291161020e57806344feed29146103df5780634e533572146103f257806351ed6a30146104df57600080fd5b80633cbfe3a1146103ce5780633f4ba83a146103d757600080fd5b80632e17de78116102805780632f2ff15d116102655780632f2ff15d1461038857806336568abe1461039b5780633a107739146103ae57600080fd5b80632e17de78146103605780632e1a7d4d1461037557600080fd5b806301ffc9a7146102b25780630c51b88f146102da578063248a9ca3146102fb5780632da6fea61461033d575b600080fd5b6102c56102c036600461322c565b610791565b60405190151581526020015b60405180910390f35b6102ed6102e8366004613297565b61082a565b6040519081526020016102d1565b6102ed6103093660046132ca565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102c561034b3660046132ca565b60086020526000908152604090205460ff1681565b61037361036e3660046132ca565b610841565b005b6103736103833660046132ca565b610a3c565b6103736103963660046132e3565b610d64565b6103736103a93660046132e3565b610dae565b6102ed6103bc36600461330f565b60076020526000908152604090205481565b6102ed60055481565b610373610e0c565b6103736103ed3660046132ca565b610e7b565b6104896104003660046132ca565b60408051608080820183526000808352602080840182905283850182905260609384018290529481526009855283902083519182018452805482526001015467ffffffffffffffff808216958301959095526801000000000000000081048516938201939093527001000000000000000000000000000000009092049092169181019190915290565b6040516102d1919060006080820190508251825267ffffffffffffffff602084015116602083015267ffffffffffffffff604084015116604083015267ffffffffffffffff606084015116606083015292915050565b6000546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166102c5565b6102ed61055c36600461332a565b610f1f565b6102ed7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb9748981565b6102ed610596366004613356565b61135c565b6102ed60035481565b6105b76105b236600461330f565b611369565b6040516102d19190613378565b6103736115c2565b6102c56105da3660046132e3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61037361063f366004613409565b6115f4565b6102ed7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d81565b6102ed610679366004613356565b611628565b6001546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6102ed600081565b6106b96106b436600461343e565b611a52565b6040516102d191906134d9565b6102ed6106d4366004613356565b611b3a565b6103736106e7366004613595565b611ff0565b6102ed60025481565b6006546102c59060ff1681565b6103736107103660046132e3565b6122d9565b6102ed7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102ed62ed4e0081565b6103736107543660046132ca565b61231d565b6102ed60045481565b61037361237c565b6102ed7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610837848484612405565b90505b9392505050565b61084961275c565b6108516127ba565b6000818152600960205260409020600181015468010000000000000000900467ffffffffffffffff164210156108b3576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561090d576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610926908361283b565b610964576040517fcda6dd47000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6005546109719042613607565b6001820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff938416810291909117918290558354604080518781526020810192909252919092049092169181019190915233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a250610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b610a446127ba565b60065460ff16610a757fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1690565b8015610a7f575080155b15610ab6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff8082169383019390935268010000000000000000810483169382019390935270010000000000000000000000000000000090920416606082015281610b8157806060015167ffffffffffffffff16421080610b4a5750606081015167ffffffffffffffff16155b15610b81576040517f6f75487700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610b9a9084612879565b610bd3576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b600083815260096020908152604080832083815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055835133845260079092528220805491929091610c2d90849061361a565b9091555050805160038054600090610c4690849061361a565b90915550506001546040517f42966c680000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b50508251600054610cf6935073ffffffffffffffffffffffffffffffffffffffff1691503390612885565b805160405133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56891610d3191878252602082015260400190565b60405180910390a25050610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d9e81612906565b610da88383612910565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610dfd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e078282612a31565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a610e3681612906565b60065460ff1615610e73576040517f19aad37100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a39612b0f565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d610ea581612906565b62ed4e00821115610ee2576040517f6e49f34f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e0906020015b60405180910390a15050565b6000610f2961275c565b610f316127ba565b60008381526008602052604090205460ff16610f7c576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b6000848152600960205260409020821580610f98575060045483105b80610fa4575080548310155b15610fde576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b336000908152600a60205260409020610ff7908661283b565b611030576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810186905260240161095b565b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561108a576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015468010000000000000000900467ffffffffffffffff164210156110de576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160000160008282546110f2919061361a565b92505081905550600060026000815461110a9061362d565b9182905550336000908152600a6020526040902090915061112b9082612bac565b5060405180608001604052808581526020014267ffffffffffffffff16815260200186426111599190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505083546040513393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92506112d6918a8252602082015260400190565b60405180910390a2337f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28282864261130d8a82613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a338484612405565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604081206060919061139b90612bb8565b90506000815167ffffffffffffffff8111156113b9576113b9613665565b60405190808252806020026020018201604052801561143057816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113d75790505b50905060005b82518110156115ba576040518060a0016040528084838151811061145c5761145c613694565b602002602001015181526020016009600086858151811061147f5761147f613694565b60200260200101518152602001908152602001600020600001548152602001600960008685815181106114b4576114b4613694565b6020026020010151815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061150757611507613694565b6020026020010151815260200190815260200160002060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061155a5761155a613694565b6020026020010151815260200190815260200160002060010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168152508282815181106115a7576115a7613694565b6020908102919091010152600101611436565b509392505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6115ec81612906565b610a39612bc5565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61161e81612906565b610e078383612c3e565b600061163261275c565b61163a6127ba565b6000838152600960205260409020600181015468010000000000000000900467ffffffffffffffff1642101561169c576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff16156116f6576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a6020526040902061170f908561283b565b611748576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810185905260240161095b565b805460009061175890859061361a565b84835560055490915061176b9042613607565b8260010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550806000036117cf576040517f9d4212c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600081546117e09061362d565b9182905550336000908152600a602052604090209091506118019082612bac565b506040805160808101825283815260018581015467ffffffffffffffff8082166020808601918252680100000000000000009384900483168688019081526000606088018181528a825260099093528890209651875591519585018054925191518416700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9285169095027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931696909316959095171793909316179091555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561194257600080fd5b505af1158015611956573d6000803e3d6000fd5b505050506001830154604080518881526020810188905270010000000000000000000000000000000090920467ffffffffffffffff169082015233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a26001830154604080518381526020810185905267ffffffffffffffff808416828401526801000000000000000090930490921660608301525133917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a29250505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040805160008152602081019091526060908267ffffffffffffffff811115611a7d57611a7d613665565b604051908082528060200260200182016040528015611ab057816020015b6060815260200190600190039081611a9b5790505b50915060005b83811015611b3257611b0d30868684818110611ad457611ad4613694565b9050602002810190611ae691906136c3565b85604051602001611af99392919061372f565b604051602081830303815290604052612cae565b838281518110611b1f57611b1f613694565b6020908102919091010152600101611ab6565b505092915050565b6000611b4461275c565b611b4c6127ba565b60008281526008602052604090205460ff16611b97576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b336000908152600a60205260409020611bb09084612879565b611be9576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60008381526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff80821693830193909352680100000000000000008104831693820193909352700100000000000000000000000000000000909204166060820181905215611c89576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015167ffffffffffffffff16421015611cd1576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084815260096020526040812081815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055600280548290611d1a9061362d565b9182905550336000908152600a60205260409020909150611d3b9082612bac565b506040518060800160405280836000015181526020014267ffffffffffffffff1681526020018542611d6d9190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f42966c680000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611e9157600080fd5b505af1158015611ea5573d6000803e3d6000fd5b50506001546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b505060408051888152600060208201523393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92500160405180910390a2815133907f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28290839042611fa18982613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000611ffa612d31565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156120275750825b905060008267ffffffffffffffff1660011480156120445750303b155b905081158015612052575080155b15612089576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156120ea5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff88161580612121575073ffffffffffffffffffffffffffffffffffffffff8716155b80612140575073ffffffffffffffffffffffffffffffffffffffff8616155b15612177576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61217f612d5a565b612187612d62565b61218f612d5a565b612197612d5a565b6121a2600087612910565b506000805473ffffffffffffffffffffffffffffffffffffffff808b167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054928a1692909116919091178155612206906276a70090612c3e565b61221462ed4e006001612c3e565b612223630163f5006001612c3e565b6122326301e133806001612c3e565b62278d0060058190556040519081527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e09060200160405180910390a183156122cf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461231381612906565b610da88383612a31565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61234781612906565b60048290556040518281527f410826cbf76d8edeca70493453f5f17fe0c807683c2aab89a4b2b94f686a21dd90602001610f13565b612384612d72565b7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb974896123ae81612906565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc530b67f06e79967fafaa0f1af1af798443e42526f8a0ff054bd2bd075198cf490600090a150565b600061240f61275c565b6124176127ba565b60008281526008602052604090205460ff16612462576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b821580612470575060045483105b156124aa576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60006002600081546124bb9061362d565b918290555073ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260408120805492935086929091906124fa908490613607565b9250508190555083600360008282546125139190613607565b90915550600090506125258442613607565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090209091506125579083612bac565b506040805160808101825286815267ffffffffffffffff4281166020808401918252858316848601908152600060608601818152898252600990935286902094518555915160019485018054935192518516700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff93861668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516929095169190911792909217169190911790555490517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b50506000546126d1925073ffffffffffffffffffffffffffffffffffffffff169050333088612dcd565b6040805183815260208101879052428183015260608101839052905173ffffffffffffffffffffffffffffffffffffffff8816917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a250905061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127b8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612835576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000818152600183016020526040812054151561083a565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a8383612e13565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610e0791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612efc565b610a398133612fa0565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129c33390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610824565b6000915050610824565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610824565b612b17612d72565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b600061083a838361304b565b6060600061083a8361309a565b612bcd61275c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b81565b60008281526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091558251858152918201527f4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e8019101610f13565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612cd89190613756565b600060405180830381855af49150503d8060008114612d13576040519150601f19603f3d011682016040523d82523d6000602084013e612d18565b606091505b5091509150612d288583836130f6565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610824565b6127b8613185565b612d6a613185565b6127b86131c3565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127b8576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610da89186918216906323b872dd906084016128bf565b60008181526001830160205260408120548015612a27576000612e3760018361361a565b8554909150600090612e4b9060019061361a565b9050808214612eb0576000866000018281548110612e6b57612e6b613694565b9060005260206000200154905080876000018481548110612e8e57612e8e613694565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ec157612ec1613772565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610824565b600080602060008451602086016000885af180612f1f576040513d6000823e3d81fd5b50506000513d91508115612f37578060011415612f51565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610da8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16613047576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161095b565b5050565b600081815260018301602052604081205461309257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610824565b506000610824565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ea57602002820191906000526020600020905b8154815260200190600101908083116130d6575b50505050509050919050565b60608261310b57613106826131cb565b61083a565b815115801561312f575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561317e576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b508061083a565b61318d61320d565b6127b8576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612853613185565b8051156131db5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613217612d31565b5468010000000000000000900460ff16919050565b60006020828403121561323e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461083a57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461329257600080fd5b919050565b6000806000606084860312156132ac57600080fd5b6132b58461326e565b95602085013595506040909401359392505050565b6000602082840312156132dc57600080fd5b5035919050565b600080604083850312156132f657600080fd5b823591506133066020840161326e565b90509250929050565b60006020828403121561332157600080fd5b61083a8261326e565b60008060006060848603121561333f57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561336957600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156133fe578351805184526020810151602085015267ffffffffffffffff604082015116604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff60808201511660808501525060a083019250602084019350600181019050613392565b509095945050505050565b6000806040838503121561341c57600080fd5b823591506020830135801515811461343357600080fd5b809150509250929050565b6000806020838503121561345157600080fd5b823567ffffffffffffffff81111561346857600080fd5b8301601f8101851361347957600080fd5b803567ffffffffffffffff81111561349057600080fd5b8560208260051b84010111156134a557600080fd5b6020919091019590945092505050565b60005b838110156134d05781810151838201526020016134b8565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613589577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180518087526135488160208901602085016134b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101613501565b50929695505050505050565b6000806000606084860312156135aa57600080fd5b6135b38461326e565b92506135c16020850161326e565b91506135cf6040850161326e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610824576108246135d8565b81810381811115610824576108246135d8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361365e5761365e6135d8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136f857600080fd5b83018035915067ffffffffffffffff82111561371357600080fd5b60200191503681900382131561372857600080fd5b9250929050565b82848237600083820160008152835161374c8183602088016134b5565b0195945050505050565b600082516137688184602087016134b5565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122049cea8e2efc1a2573d70a9ac45ffe0e8f50c0fdc6ecefbb9b8665f7635a4004364736f6c634300081e0033","storage":{"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x1f708c24a0d3a740cd47cc0444e9480899f3da7d":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x4f57f9239efcbf43e5920f579d03b3849c588396":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106102535760003560e01c80639dd373b911610138578063cbeb88f6116100b0578063e63ab1e91161007f578063ee99205c11610064578063ee99205c14610722578063f58280d21461074f578063fb1bb9de1461076f57600080fd5b8063e63ab1e9146106ba578063e7705db6146106ee57600080fd5b8063cbeb88f614610627578063d32780d814610657578063d547741f1461066d578063e5a6b10f1461068d57600080fd5b8063a39f3f9d11610107578063b3cd4254116100ec578063b3cd4254146105d1578063c40ab4e1146105e7578063ca15c8731461060757600080fd5b8063a39f3f9d1461059b578063b391c738146105b157600080fd5b80639dd373b9146105195780639f862c5d14610539578063a217fddf14610559578063a3246ad31461056e57600080fd5b80633f4ba83a116101cb5780636b3b1c0f1161019a57806389fcf3bd1161017f57806389fcf3bd146104635780639010d07c1461048357806391d14854146104c857600080fd5b80636b3b1c0f146104215780638456cb591461044e57600080fd5b80633f4ba83a146103ba578063479ae9e3146103cf5780635c975abb146103e95780635e8822fa1461040157600080fd5b80632ac96e2a116102225780633150992e116102075780633150992e146103545780633248d3c91461036a57806336568abe1461039a57600080fd5b80632ac96e2a146103215780632f2ff15d1461033457600080fd5b806301ffc9a71461025f57806305e75bcb146102945780631eb01a70146102b6578063248a9ca3146102f157600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027f61027a366004612596565b6107a3565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102b46102af3660046125d8565b6107ff565b005b3480156102c257600080fd5b506102e36102d136600461261a565b600e6020526000908152604090205481565b60405190815260200161028b565b3480156102fd57600080fd5b506102e361030c3660046125d8565b60009081526020819052604090206001015490565b6102b461032f36600461268f565b610847565b34801561034057600080fd5b506102b461034f36600461276b565b610f60565b34801561036057600080fd5b506102e360055481565b34801561037657600080fd5b5061027f6103853660046125d8565b600c6020526000908152604090205460ff1681565b3480156103a657600080fd5b506102b46103b536600461276b565b610f8b565b3480156103c657600080fd5b506102b4610fe9565b3480156103db57600080fd5b50600a5461027f9060ff1681565b3480156103f557600080fd5b5060025460ff1661027f565b34801561040d57600080fd5b506102b461041c3660046127a5565b61101e565b34801561042d57600080fd5b506102e361043c3660046125d8565b600b6020526000908152604090205481565b34801561045a57600080fd5b506102b46110b4565b34801561046f57600080fd5b506102b461047e3660046127de565b6110e6565b34801561048f57600080fd5b506104a361049e3660046128bd565b61147d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028b565b3480156104d457600080fd5b5061027f6104e336600461276b565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561052557600080fd5b506102b461053436600461261a565b61149c565b34801561054557600080fd5b506102b46105543660046125d8565b61151a565b34801561056557600080fd5b506102e3600081565b34801561057a57600080fd5b5061058e6105893660046125d8565b61155a565b60405161028b91906128df565b3480156105a757600080fd5b506102e360085481565b3480156105bd57600080fd5b506102b46105cc3660046125d8565b611574565b3480156105dd57600080fd5b506102e361271081565b3480156105f357600080fd5b506102b4610602366004612938565b6115b4565b34801561061357600080fd5b506102e36106223660046125d8565b611708565b34801561063357600080fd5b5061027f6106423660046125d8565b600d6020526000908152604090205460ff1681565b34801561066357600080fd5b506102e360095481565b34801561067957600080fd5b506102b461068836600461276b565b61171f565b34801561069957600080fd5b506006546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c657600080fd5b506102e37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156106fa57600080fd5b506102e37f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0981565b34801561072e57600080fd5b506007546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075b57600080fd5b506102b461076a366004612974565b611744565b34801561077b57600080fd5b506102e37f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107f957506107f9826117df565b92915050565b600061080a81611876565b60088290556040518281527f0b2358c6423981418f7b3a3dcc05bed6b15708c9ec309197a63de3722ca75198906020015b60405180910390a15050565b61084f611880565b6108576118c3565b73ffffffffffffffffffffffffffffffffffffffff86166108a4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036108de576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015906108fc57506000838152600c602052604090205460ff16155b15610933576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8215801590610958575060075473ffffffffffffffffffffffffffffffffffffffff16155b1561098f576040517f970b74e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460ff16156109e35760008190036109d5576040517f229bfb1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109e3868686868686611902565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b166020820152603481018690527fff0000000000000000000000000000000000000000000000000000000000000060f886901b166054820152600090605501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600d90935291205490915060ff1615610acb576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8916602082015290810187905260ff86166060820152600090608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610b948a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506005549150849050611a9e565b610bca576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009548710158015610bde57506000600854115b15610c1e576008543414610c1e576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055868515610c98576000868152600b602052604081205490612710610c79838c6129c0565b610c8391906129d7565b9050610c8f818b612a12565b92505050610cf4565b60008052600b6020527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76548015610cf2576000612710610cd8838c6129c0565b610ce291906129d7565b9050610cee818b612a12565b9250505b505b73ffffffffffffffffffffffffffffffffffffffff89166000908152600e602052604081208054839290610d29908490612a25565b90915550508515610eca576006546007546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190612a38565b506007546040517f0c51b88f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018490526044820189905290911690630c51b88f906064016020604051808303816000875af1925050508015610e8e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e8b91810190612a55565b60015b610ec4576040517fa437293700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610eee565b600654610eee9073ffffffffffffffffffffffffffffffffffffffff168a83611ab4565b604080518981526020810183905260ff891681830152905173ffffffffffffffffffffffffffffffffffffffff8b16917ffba955b7124801955d5218289768d39688a6c2af7c54181f5bf3b0b0e7a4aa89919081900360600190a2505050610f566001600355565b5050505050505050565b600082815260208190526040902060010154610f7b81611876565b610f858383611b41565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610fda576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fe48282611b76565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61101381611876565b61101b611ba3565b50565b600061102981611876565b6000848152600b60209081526040808320869055600c82529182902080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915582518781529182018690528183015290517fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca79181900360600190a150505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110de81611876565b61101b611c20565b60045460ff1615611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff891615806111ba575073ffffffffffffffffffffffffffffffffffffffff8416155b156111f1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc60008a611b41565b5073ffffffffffffffffffffffffffffffffffffffff881615611270576112437f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b41565b5061126e7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a89611b41565b505b73ffffffffffffffffffffffffffffffffffffffff8716156112e3576112b67f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0988611b41565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600886905560058590556006805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600780549286169290911691909117905560005b8181101561141e57600083838381811061136157611361612a6e565b905060400201600001359050600084848481811061138157611381612a6e565b6000858152600b602090815260408083209381029590950181013592839055600c815290849020805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915584518781529182018390528185015292519093507fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7928190036060019150a15050600101611345565b5050600080525050600c60205250507f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050565b60008281526001602052604081206114959083611c7b565b9392505050565b60006114a781611876565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f6397f5b135542bb3f477cb346cfab5abdec1251d08dc8f8d4efb4ffe122ea0bf9060200161083b565b600061152581611876565b60098290556040518281527f0bdc5b50951daf28f83d3ccb05f68a48458a346738f725758d690acb72e5eba19060200161083b565b60008181526001602052604090206060906107f990611c87565b600061157f81611876565b60058290556040518281527f90004c04698bc3322499a575ed3752dd4abf33e0a7294c06a787a0fe01bea9419060200161083b565b60006115bf81611876565b73ffffffffffffffffffffffffffffffffffffffff841661160c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611646576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116865761168173ffffffffffffffffffffffffffffffffffffffff851684611c94565b6116a7565b6116a773ffffffffffffffffffffffffffffffffffffffff83168585611ab4565b8173ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff167f3c29f706dd8ad89f52baa05197bc9e1ab54a532923f8890b4c610641423f186060405160405180910390a450505050565b60008181526001602052604081206107f990611d4a565b60008281526020819052604090206001015461173a81611876565b610f858383611b76565b600061174f81611876565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683158015919091179091556117b1576040517f927afc1823834346e83b933a68384b62ba45245d11961d6c8b76a3553a93482490600090a15050565b6040517f7a3b4c944febd2c899d89daed15db8d2e0903a535f27b1c5f0ea8f3fd3e137da90600090a15b5050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107f9565b61101b8133611d54565b6002600354036118bc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615611900576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088811b82166020840152603483018890527fff0000000000000000000000000000000000000000000000000000000000000060f888901b1660548401526055830186905230901b16607582015260009060890160405160208183030381529060405280519060200120905060006119cc827f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b90506000611a1285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611dda9050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef81602052604090205490915060ff16611a93576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050565b600082611aab8584611e04565b14949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610fe4908490611e3f565b600080611b4e8484611ee3565b90508015611495576000848152600160205260409020611b6e9084611fdf565b509392505050565b600080611b838484612001565b90508015611495576000848152600160205260409020611b6e90846120bc565b611bab6120de565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611c286118c3565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bf63390565b6000611495838361211a565b6060600061149583612144565b80471015611cd7576040517fcf4791810000000000000000000000000000000000000000000000000000000081524760048201526024810182905260440161114f565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d32576040519150601f19603f3d011682016040523d82523d6000602084013e611d37565b606091505b509150915081610f8557610f85816121a0565b60006107f9825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166117db576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161114f565b600080600080611dea86866121e2565b925092509250611dfa828261222f565b5090949350505050565b600081815b8451811015611b6e57611e3582868381518110611e2857611e28612a6e565b6020026020010151612333565b9150600101611e09565b600080602060008451602086016000885af180611e62576040513d6000823e3d81fd5b50506000513d91508115611e7a578060011415611e94565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610f85576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161114f565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f753390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016107f9565b5060006107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff8416612362565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff84166123a9565b60025460ff16611900576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061213157612131612a6e565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561219457602002820191906000526020600020905b815481526020019060010190808311612180575b50505050509050919050565b8051156121b05780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000835160410361221c5760208401516040850151606086015160001a61220e8882858561249c565b955095509550505050612228565b50508151600091506002905b9250925092565b600082600381111561224357612243612a9d565b0361224c575050565b600182600381111561226057612260612a9d565b03612297576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156122ab576122ab612a9d565b036122e5576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b60038260038111156122f9576122f9612a9d565b036117db576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b600081831061234f576000828152602084905260409020611495565b6000838152602083905260409020611495565b6000818152600183016020526040812054611fd7575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f9565b600081815260018301602052604081205480156124925760006123cd600183612a12565b85549091506000906123e190600190612a12565b905080821461244657600086600001828154811061240157612401612a6e565b906000526020600020015490508087600001848154811061242457612424612a6e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061245757612457612acc565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f9565b60009150506107f9565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156124d7575060009150600390508261258c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561252b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166125825750600092506001915082905061258c565b9250600091508190505b9450945094915050565b6000602082840312156125a857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461149557600080fd5b6000602082840312156125ea57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461261557600080fd5b919050565b60006020828403121561262c57600080fd5b611495826125f1565b803560ff8116811461261557600080fd5b60008083601f84011261265857600080fd5b50813567ffffffffffffffff81111561267057600080fd5b60208301915083602082850101111561268857600080fd5b9250929050565b60008060008060008060008060c0898b0312156126ab57600080fd5b883567ffffffffffffffff8111156126c257600080fd5b8901601f81018b136126d357600080fd5b803567ffffffffffffffff8111156126ea57600080fd5b8b60208260051b84010111156126ff57600080fd5b602091820199509750612713908a016125f1565b95506040890135945061272860608a01612635565b93506080890135925060a089013567ffffffffffffffff81111561274b57600080fd5b6127578b828c01612646565b999c989b5096995094979396929594505050565b6000806040838503121561277e57600080fd5b8235915061278e602084016125f1565b90509250929050565b801515811461101b57600080fd5b6000806000606084860312156127ba57600080fd5b833592506020840135915060408401356127d381612797565b809150509250925092565b60008060008060008060008060006101008a8c0312156127fd57600080fd5b6128068a6125f1565b985061281460208b016125f1565b975061282260408b016125f1565b965060608a0135955060808a0135945061283e60a08b016125f1565b935061284c60c08b016125f1565b925060e08a013567ffffffffffffffff81111561286857600080fd5b8a01601f81018c1361287957600080fd5b803567ffffffffffffffff81111561289057600080fd5b8c60208260061b84010111156128a557600080fd5b60208201935080925050509295985092959850929598565b600080604083850312156128d057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b8181101561292d57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016128f9565b509095945050505050565b60008060006060848603121561294d57600080fd5b612956846125f1565b92506020840135915061296b604085016125f1565b90509250925092565b60006020828403121561298657600080fd5b813561149581612797565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107f9576107f9612991565b600082612a0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107f9576107f9612991565b808201808211156107f9576107f9612991565b600060208284031215612a4a57600080fd5b815161149581612797565b600060208284031215612a6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ac1af95c8b44d1d43ee08d68e86100483a6d8c9f9055caabc136f543254701df64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000003":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0x5e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100c95760003560e01c806340c10f1911610081578063a0712d681161005b578063a0712d6814610196578063a9059cbb146101a9578063dd62ed3e146101bc57600080fd5b806340c10f191461014357806370a082311461015857806395d89b411461018e57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610202565b6040516100e391906107eb565b60405180910390f35b6100ff6100fa366004610880565b610294565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046108aa565b6102ae565b604051601281526020016100e3565b610156610151366004610880565b6102d2565b005b6101136101663660046108e7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66102e0565b6101566101a4366004610909565b6102ef565b6100ff6101b7366004610880565b6102fc565b6101136101ca366004610922565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461021190610955565b80601f016020809104026020016040519081016040528092919081815260200182805461023d90610955565b801561028a5780601f1061025f5761010080835404028352916020019161028a565b820191906000526020600020905b81548152906001019060200180831161026d57829003601f168201915b5050505050905090565b6000336102a281858561030a565b60019150505b92915050565b6000336102bc85828561031c565b6102c78585856103f1565b506001949350505050565b6102dc828261049c565b5050565b60606004805461021190610955565b6102f9338261049c565b50565b6000336102a28185856103f1565b61031783838360016104f8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156103eb57818110156103dc576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103eb848484840360006104f8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610441576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8216610491576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b610317838383610640565b73ffffffffffffffffffffffffffffffffffffffff82166104ec576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b6102dc60008383610640565b73ffffffffffffffffffffffffffffffffffffffff8416610548576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8316610598576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103eb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161063291815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661067857806002600082825461066d91906109a8565b9091555061072a9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106fe576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103d3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166107535760028054829003905561077f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107de91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561081957602081860181015160408684010152016107fc565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087b57600080fd5b919050565b6000806040838503121561089357600080fd5b61089c83610857565b946020939093013593505050565b6000806000606084860312156108bf57600080fd5b6108c884610857565b92506108d660208501610857565b929592945050506040919091013590565b6000602082840312156108f957600080fd5b61090282610857565b9392505050565b60006020828403121561091b57600080fd5b5035919050565b6000806040838503121561093557600080fd5b61093e83610857565b915061094c60208401610857565b90509250929050565b600181811c9082168061096957607f821691505b6020821081036109a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212208d04eeb280ac3a47c96b066f674e96782d06d1a45565a7eb2fbd085935abec0164736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000002f6f10780d22cc00000","0x0000000000000000000000000000000000000000000000000000000000000003":"0x45524332304d6f636b0000000000000000000000000000000000000000000012","0x0000000000000000000000000000000000000000000000000000000000000004":"0x45524332304d6f636b0000000000000000000000000000000000000000000012","0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0x18bbf5fcf8fe870ecff419c4677497c08b2e6a5431bb94541d06c9da3f308e55":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0x215be5d23550ceb1beff54fb579a765903ba2ccc85b6f79bcf9bda4e8cb86034":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0x2a95ee547cef07a2fff0a68144824a0d9ded35ed87da118a53e1cda4aca8b944":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0x4d87043053f0c115d437d8c0a439aeb687545f7f59c3d2b50162c8c4f6acd66d":"0x0000000000000000000000000000000000000000000001e7e4171bf4d3a00000","0x6d1035fce6503985ab075a4ff3f7ce2e57cd5a9c5e6a0589dccacfea7bcb0af4":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0x6e3431b4e42570cb9e3d926eb26f9e54de2df536ae0741ae16350d17a6c16ddc":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0x7fcecd2a720442e9bc0cf1a8a6976f9fbddf6b996dc0d78af7e94dadf360d579":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","0xdb302bf24b1ad5f23949da8e6b05747dc699499a995361a7bf40ec7204696d6f":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}},"0x68b1d87f95878fe05b998f19b66f4baba5de1aed":{"nonce":2,"balance":"0x0","code":"0x608060405261000c61000e565b005b7f0000000000000000000000005e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c73ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","storage":{"0x032bf3d033fd4f85af1ea9531ec13fb1647e6cd5bc9fa93813e39f30fef91955":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x12ec1a7f35ba113d5892665823963bab9ad65fb77a28dc6bed520f978eff2dc7":"0x0000000000000000000000000000000000000000000000000000000000000001","0x1e346d14e43f226b386a1d928ca36db25f0c710796c6cd27b79d2e6e8889436c":"0x0000000000000000000000000000000000000000000000000000000000000000","0x2f12cdefc7e43a75a69b6d04cdb9a4933f5ea74b2165fcb9700489b92cb60d66":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x35fb679ccde267a74e2fe0853f3a66562f6f9abdffd8c46dba2632a167443d26":"0x0000000000000000000000000000000000000000000000000000000000000001","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","0x404be368b7c8b206e7c08d2609a04a23d4d1822374b9ba50a0ee3749da93a8d1":"0x0000000000000000000000000000000000000000000000000000000000000000","0x420d4b7f1f84a60baf521b41a392611417e1ec73d74cb3f4bec873750fd563e6":"0x0000000000000000000000000000000000000000000000000000000000000001","0x43b4337486255f824cbced80d5e4f022525e75886ac5a368395dea7cb3d5029c":"0x0000000000000000000000000000000000000000000000000000000000000001","0x475b312747b0505dfd322c59063ca43b615bb2e6d10fdf52fb58877bbcde4012":"0x0000000000000000000000000000000000000000000000000000000000000000","0x4f5eb2fc25c5dd1d98cd41a330449efddb441602835c590f3283dd3ef73e7f1d":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x5b789a035ea1a5723ef3e3892eb7edd1d6eb03ae2175a5bd1558ffe34206e866":"0x0000000000000000000000000000000000000000000000000000000000000001","0x615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44":"0x0000000000000000000000000000000000000000000000000000000000000001","0x61b317071ea1c4632f65e4f7c9a9966863ed08380131d3333b8c89cf660c50ca":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x74153744ebbe844ec0b660d67a16e1d83522ad36d26dcfe151506667259e27c2":"0x0000000000000000000000000000000000000000000000000000000000000001","0x75442b0a96088b5456bc4ed01394c96a4feec0f883c9494257d76b96ab1c9b6c":"0x0000000000000000000000000000000000000000000000000000000000000000","0x801b57e5fb319436979e32984c7a504424de715bebd10f5030af71b154fdf598":"0x0000000000000000000000000000000000000000000000000000000000000001","0x87497fe320e3a8f4d7c18ff266d85e7a64c3b4163a8b1227ff668f4957ced232":"0x0000000000000000000000000000000000000000000000000000000000000001","0x8929e2944c3f5ef392fd2423c50ed3086892036850e37b70d6212c7b9eb6f83c":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x984f3768b77915eaa70e0c3e1559a507c3b6faede727e89679af4eaa150595ee":"0x0000000000000000000000000000000000000000000000000000000000000001","0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb1a19e8f692735a632e88b47a4a0a4b12b38e82f8591422b073d3045beb00515":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000005e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c","0xbf8acdf26da4ec33657791ed6642b737f825280bc906e34be76ce44bf082e4d4":"0x0000000000000000000000000000000000000000000000000000000000000001","0xc5e50349484f3b3313220937914f5cb18c008efd07298ef46f9799edafcc01ea":"0x0000000000000000000000000000000000000000000000000000000000000001","0xee4f7b9a8a0c5e438e0435e6b3c45792a84494be5633a464a03c142d13b85bf3":"0x0000000000000000000000000000000000000000000000000000000000000001","0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x0000000000000000000000000000000000000000000000000000000000000001","0xf977a86a9c95fd20557a3be7c677da39c0dca2b78f40f9d7afbd4fc94914c91b":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x8e80ffe6dc044f4a766afd6e5a8732fe0977a493":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":2,"balance":"0x0","code":"0x608060405261000c61000e565b005b7f0000000000000000000000008e80ffe6dc044f4a766afd6e5a8732fe0977a49373ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3","0x0000000000000000000000000000000000000000000000000000000000000001":"0x000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0x0000000000000000000000000000000000000000000000000000000000000005":"0x0000000000000000000000000000000000000000000000000000000000278d00","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82","0x475b312747b0505dfd322c59063ca43b615bb2e6d10fdf52fb58877bbcde4012":"0x0000000000000000000000000000000000000000000000000000000000000000","0x48ed5befbd9497ee76e022a0d01762cf5db58a8fc9eb5a566a536ea6e44d9e6d":"0x0000000000000000000000000000000000000000000000000000000000000000","0x5423da741c6c1dcb13c19a80c7c95b1128509e3c29fa32fca5f90aca6f055dd4":"0x0000000000000000000000000000000000000000000000000000000000000001","0x5ccf628af05b775f13265af7ce60ff07e8964e830606f2ab3c1ce770c20c3d11":"0x0000000000000000000000000000000000000000000000000000000000000001","0x710833b5bb2eb79d0cd361965d2373a9a6d8e081b6ab1b16a33ecda4c017c4ef":"0x0000000000000000000000000000000000000000000000000000000000000001","0x73ed51d9a9ae97efc03e2e9403323ea0baee0445620c27462d3b489d9656f377":"0x0000000000000000000000000000000000000000000000000000000000000001","0x7419977860bd72ee6fb6c7156575c0535d165a0c8d9033e3b322dd975f5d44f9":"0x0000000000000000000000000000000000000000000000000000000000000001","0x75442b0a96088b5456bc4ed01394c96a4feec0f883c9494257d76b96ab1c9b6c":"0x0000000000000000000000000000000000000000000000000000000000000000","0x87497fe320e3a8f4d7c18ff266d85e7a64c3b4163a8b1227ff668f4957ced232":"0x0000000000000000000000000000000000000000000000000000000000000001","0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000008e80ffe6dc044f4a766afd6e5a8732fe0977a493","0xbf8acdf26da4ec33657791ed6642b737f825280bc906e34be76ce44bf082e4d4":"0x0000000000000000000000000000000000000000000000000000000000000001","0xc8a580489f4942f6c202d514a14e3efc525593cd457d79c4e568a5ae225295c8":"0x0000000000000000000000000000000000000000000000000000000000000001","0xd46fc2dd25820846c662a4cc1432b332983a92a96c7dead31819a46fd6c7fd52":"0x0000000000000000000000000000000000000000000000000000000000000000","0xee4f7b9a8a0c5e438e0435e6b3c45792a84494be5633a464a03c142d13b85bf3":"0x0000000000000000000000000000000000000000000000000000000000000001","0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639010d07c1161010f578063c4707a83116100a2578063e63ab1e911610071578063e63ab1e914610563578063fa5c4e991461058a578063fb1bb9de1461059d578063ff7932c0146105c457600080fd5b8063c4707a8314610503578063c4d66de81461052a578063ca15c8731461053d578063d547741f1461055057600080fd5b8063a3246ad3116100de578063a3246ad31461045f578063a9ab67ee1461047f578063ac9650d814610487578063bbca73b3146104a757600080fd5b80639010d07c1461039757806391d14854146103cf5780639e833d7814610434578063a217fddf1461045757600080fd5b80633f4ba83a116101875780637261fefb116101565780637261fefb146103545780637fc46a44146103675780638456cb591461037a5780638b67cb391461038257600080fd5b80633f4ba83a146102fc5780635c975abb146103045780636382d9ad1461032e5780636773d2541461034157600080fd5b80632f2ff15d116101c35780632f2ff15d1461028d578063354eca0e146102a257806336568abe146102c25780633a21ee4c146102d557600080fd5b806301ffc9a7146101ea5780630f8508d114610212578063248a9ca31461023d575b600080fd5b6101fd6101f8366004612859565b6105d7565b60405190151581526020015b60405180910390f35b6101fd61022036600461289b565b600060208181529281526040808220909352908152205460ff1681565b61027f61024b3660046128bd565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610209565b6102a061029b3660046128ff565b610633565b005b61027f6102b036600461292b565b60016020526000908152604090205481565b6102a06102d03660046128ff565b61067d565b61027f7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f81565b6102a06106db565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101fd565b6102a061033c366004612946565b610710565b6102a061034f3660046128bd565b61097e565b6102a0610362366004612970565b610be5565b61027f6103753660046128bd565b610f45565b6102a0610f52565b61038a610f84565b60405161020991906129e9565b6103aa6103a536600461289b565b610f95565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610209565b6101fd6103dd3660046128ff565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101fd61044236600461292b565b60026020526000908152604090205460ff1681565b61027f600081565b61047261046d3660046128bd565b610fd6565b60405161020991906129fc565b61027f61101a565b61049a610495366004612a55565b611026565b6040516102099190612af0565b6104ba6104b53660046128bd565b61110e565b6040516102099190815173ffffffffffffffffffffffffffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b61027f7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f981565b6102a061053836600461292b565b6111aa565b61027f61054b3660046128bd565b61137e565b6102a061055e3660046128ff565b6113b6565b61027f7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102a0610598366004612bdb565b6113fa565b61027f7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b6102a06105d2366004612cdb565b611826565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061062d575061062d82611c07565b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461066d81611c9e565b6106778383611ca8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106cc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d68282611cff565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61070581611c9e565b61070d611d4d565b50565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f961073a81611c9e565b610742611dea565b61074a611e47565b73ffffffffffffffffffffffffffffffffffffffff8316610797576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107e4576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108759190612d16565b9050806000036108855750610955565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160208181526040808420849055600290915290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556108ec908483611ec8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46272c80ceda248974fbd05f95180058562e15f06de2fed1741e2fcacf2cbc7c8360405161094b91815260200190565b60405180910390a3505b6106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f6109a881611c9e565b6109b0611e47565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff1680610a15576040517fa9ff98da000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b600282015415610a54576040517fa658270100000000000000000000000000000000000000000000000000000000815260048101859052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff1615610acc576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b60018083015473ffffffffffffffffffffffffffffffffffffffff8316600090815260209290925260408220805491928392610b09908490612d5e565b9091555050600085815260056020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810182905560028101829055600390810191909155610b639086611f7b565b508173ffffffffffffffffffffffffffffffffffffffff16857f5f1caff1bc42fe7aa28697b7d5290b1effc56662cda0b7b1bef596cb5de3339383604051610bad91815260200190565b60405180910390a3505050610be160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9610c0f81611c9e565b610c17611dea565b610c1f611e47565b73ffffffffffffffffffffffffffffffffffffffff8416610c6c576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610cb9576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003610cf3576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615610d6b576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090610e309083612d5e565b905080841115610e92576040517f455bb3af00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810182905260448101859052606401610a0c565b610eb373ffffffffffffffffffffffffffffffffffffffff87168686611ec8565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fec4eae2997a9f4fc017c94256dd07879f7b736f35bb153da3a6d9bee4086956886604051610f1291815260200190565b60405180910390a3505061067760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061062d600383611f87565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610f7c81611c9e565b61070d611f93565b6060610f90600361200c565b905090565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610fce9084611f87565b949350505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040909120606091906110139061200c565b9392505050565b6000610f906003612019565b6040805160008152602081019091526060908267ffffffffffffffff81111561105157611051612bac565b60405190808252806020026020018201604052801561108457816020015b606081526020019060019003908161106f5790505b50915060005b83811015611106576110e1308686848181106110a8576110a8612d71565b90506020028101906110ba9190612da0565b856040516020016110cd93929190612e0c565b604051602081830303815290604052612023565b8382815181106110f3576110f3612d71565b602090810291909101015260010161108a565b505092915050565b61114f6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b506000908152600560209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281015492820192909252600390910154606082015290565b60006111b46120a6565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156111e15750825b905060008267ffffffffffffffff1660011480156111fe5750303b155b90508115801561120c575080155b15611243576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112a45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff86166112f1576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f96120cf565b6113016120d7565b6113096120cf565b611314600087611ca8565b5083156113765784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040822061101390612019565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546113f081611c9e565b6106778383611cff565b611402611e47565b61140a6120e7565b81600003611444576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff16806114a4576040517fa9ff98da00000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561151c576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b81600301544210156115705760038201546040517fa13f08b0000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152426044820152606401610a0c565b6040517f726c00000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602282015260368101859052600090605601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600089815280845282812082825290935291205490915060ff161561166f576040517f522cef0d000000000000000000000000000000000000000000000000000000008152600481018790523360248201526044810186905260648101829052608401610a0c565b61167a848783612143565b6116b6578581856040517f1f89537c000000000000000000000000000000000000000000000000000000008152600401610a0c93929190612e33565b848360020160008282546116ca9190612e52565b909155505060018301546002840154111561172b57600283015460018401546040517f88c6d4740000000000000000000000000000000000000000000000000000000081526004810189905260248101929092526044820152606401610a0c565b600086815260208181526040808320848452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915573ffffffffffffffffffffffffffffffffffffffff861684529091528120805487929061179c908490612d5e565b909155506117c3905073ffffffffffffffffffffffffffffffffffffffff83163387611ec8565b604051858152339087907ffe236dfc7ce073698734b89da1aee0e7551c9c6d264404c502e6e8fefc1132a89060200160405180910390a35050506106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f61185081611c9e565b611858611e47565b73ffffffffffffffffffffffffffffffffffffffff84166118a5576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036118df576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615611957576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008581526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16156119b6576040517fb520d61200000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a479190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090611a7c908690612e52565b905080821015611ade576040517ff6508cc900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810183905260448101829052606401610a0c565b73ffffffffffffffffffffffffffffffffffffffff868116600081815260016020818152604080842087905580516080810182529485528482018b8152858201858152606087018c81528f8752600590945291909420945185547fffffffffffffffffffffffff0000000000000000000000000000000000000000169616959095178455915190830155915160028201559051600391820155611b819088612159565b50604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff88169189917f445b0c1846d34293892483b1dbd287a52d37e329a05ba5ea8f03f2b0b866d8d1910160405180910390a35050611c0060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061062d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461062d565b61070d8133612165565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611cd6858561220c565b90508015610fce576000858152602083905260409020611cf6908561232d565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611d2d858561234f565b90508015610fce576000858152602083905260409020611cf6908561242d565b611d55611dea565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611e45576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611ec2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526106d690849061244f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061101383836124f3565b600061101383836125dc565b611f9b6120e7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611dbf565b6060600061101383612606565b600061062d825490565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161204d9190612e65565b600060405180830381855af49150503d8060008114612088576040519150601f19603f3d011682016040523d82523d6000602084013e61208d565b606091505b509150915061209d858383612662565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061062d565b611e456126f1565b6120df6126f1565b611e4561272f565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611e45576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826121508584612737565b14949350505050565b6000611013838361277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610a0c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff166123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122bf3390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061062d565b600091505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff841661277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16156123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff84166124f3565b600080602060008451602086016000885af180612472576040513d6000823e3d81fd5b50506000513d9150811561248a5780600114156124a4565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008181526001830160205260408120548015612323576000612517600183612d5e565b855490915060009061252b90600190612d5e565b905080821461259057600086600001828154811061254b5761254b612d71565b906000526020600020015490508087600001848154811061256e5761256e612d71565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806125a1576125a1612e81565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062d565b60008260000182815481106125f3576125f3612d71565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561265657602002820191906000526020600020905b815481526020019060010190808311612642575b50505050509050919050565b60608261267757612672826127c9565b611013565b815115801561269b575073ffffffffffffffffffffffffffffffffffffffff84163b155b156126ea576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b5080611013565b6126f961280b565b611e45576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f556126f1565b600081815b8451811015612772576127688286838151811061275b5761275b612d71565b602002602001015161282a565b915060010161273c565b509392505050565b60008181526001830160205260408120546127c15750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561062d565b50600061062d565b8051156127d95780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128156120a6565b5468010000000000000000900460ff16919050565b6000818310612846576000828152602084905260409020611013565b6000838152602083905260409020611013565b60006020828403121561286b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461101357600080fd5b600080604083850312156128ae57600080fd5b50508035926020909101359150565b6000602082840312156128cf57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146128fa57600080fd5b919050565b6000806040838503121561291257600080fd5b82359150612922602084016128d6565b90509250929050565b60006020828403121561293d57600080fd5b611013826128d6565b6000806040838503121561295957600080fd5b612962836128d6565b9150612922602084016128d6565b60008060006060848603121561298557600080fd5b61298e846128d6565b925061299c602085016128d6565b929592945050506040919091013590565b600081518084526020840193506020830160005b828110156129df5781518652602095860195909101906001016129c1565b5093949350505050565b60208152600061101360208301846129ad565b602080825282518282018190526000918401906040840190835b81811015612a4a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612a16565b509095945050505050565b60008060208385031215612a6857600080fd5b823567ffffffffffffffff811115612a7f57600080fd5b8301601f81018513612a9057600080fd5b803567ffffffffffffffff811115612aa757600080fd5b8560208260051b8401011115612abc57600080fd5b6020919091019590945092505050565b60005b83811015612ae7578181015183820152602001612acf565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612ba0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051808752612b5f816020890160208501612acc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101612b18565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215612bf057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612c1557600080fd5b8401601f81018613612c2657600080fd5b803567ffffffffffffffff811115612c4057612c40612bac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff82111715612c8b57612c8b612bac565b604052918252602081840181019290810189841115612ca957600080fd5b6020850194505b83851015612ccc57843580825260209586019590935001612cb0565b50809450505050509250925092565b60008060008060808587031215612cf157600080fd5b84359350612d01602086016128d6565b93969395505050506040820135916060013590565b600060208284031215612d2857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561062d5761062d612d2f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612dd557600080fd5b83018035915067ffffffffffffffff821115612df057600080fd5b602001915036819003821315612e0557600080fd5b9250929050565b828482376000838201600081528351612e29818360208801612acc565b0195945050505050565b83815282602082015260606040820152600061209d60608301846129ad565b8082018082111561062d5761062d612d2f565b60008251612e77818460208701612acc565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122039de9a1a777e288153e8b2f1a13b4bf9fce8ca557755d5340f642772d8b7cdc364736f6c634300081e0033","storage":{"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":2,"balance":"0x0","code":"0x608060405261000c61000e565b005b7f0000000000000000000000001f708c24a0d3a740cd47cc0444e9480899f3da7d73ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000000":"0x0000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e","0x615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44":"0x0000000000000000000000000000000000000000000000000000000000000001","0x61b317071ea1c4632f65e4f7c9a9966863ed08380131d3333b8c89cf660c50ca":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300":"0x526563616c6c205374616b696e67204e46542052656365697074000000000034","0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301":"0x52534e465452000000000000000000000000000000000000000000000000000c","0x984f3768b77915eaa70e0c3e1559a507c3b6faede727e89679af4eaa150595ee":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x0000000000000000000000001f708c24a0d3a740cd47cc0444e9480899f3da7d","0xbf8acdf26da4ec33657791ed6642b737f825280bc906e34be76ce44bf082e4d4":"0x0000000000000000000000000000000000000000000000000000000000000001","0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102265760003560e01c80636352211e1161012a578063a22cb465116100bd578063c87b56dd1161008c578063cf76a15311610071578063cf76a1531461057a578063d547741f14610582578063e985e9c51461059557600080fd5b8063c87b56dd14610554578063ca15c8731461056757600080fd5b8063a22cb465146104fb578063a3246ad31461050e578063b88d4fde1461052e578063c4d66de81461054157600080fd5b80639010d07c116100f95780639010d07c1461047357806391d148541461048657806395d89b41146104eb578063a217fddf146104f357600080fd5b80636352211e1461041a57806370a082311461042d5780638462151c146104405780638ff390991461046057600080fd5b80632f2ff15d116101bd57806342842e0e1161018c5780634cf088d9116101715780634cf088d9146103d45780634f6ccce7146103f457806355f804b31461040757600080fd5b806342842e0e146103ae57806342966c68146103c157600080fd5b80632f2ff15d146103625780632f745c591461037557806336568abe1461038857806340c10f191461039b57600080fd5b806318160ddd116101f957806318160ddd146102b55780631c8f7c20146102e657806323b872dd1461030d578063248a9ca31461032057600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b3146102a0575b600080fd5b61023e610239366004612af2565b6105fd565b60405190151581526020015b60405180910390f35b61025b61061d565b60405161024a9190612b7d565b61027b610276366004612b90565b6106d3565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b6102b36102ae366004612bd2565b610728565b005b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02545b60405190815260200161024a565b6102d87f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a81565b6102b361031b366004612bfc565b610737565b6102d861032e366004612b90565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102b3610370366004612c39565b61082d565b6102d8610383366004612bd2565b610871565b6102b3610396366004612c39565b61092a565b6102b36103a9366004612bd2565b610988565b6102b36103bc366004612bfc565b6109e3565b6102b36103cf366004612b90565b6109fe565b60005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102d8610402366004612b90565b610a5b565b6102b3610415366004612d2c565b610b10565b61027b610428366004612b90565b610b82565b6102d861043b366004612d75565b610b8d565b61045361044e366004612d75565b610c2e565b60405161024a9190612d90565b6102b361046e366004612d75565b610cc6565b61027b610481366004612dd3565b610d5d565b61023e610494366004612c39565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61025b610d9e565b6102d8600081565b6102b3610509366004612df5565b610def565b61052161051c366004612b90565b610dfa565b60405161024a9190612e31565b6102b361053c366004612e7f565b610e3e565b6102b361054f366004612d75565b610e56565b61025b610562366004612b90565b611041565b6102d8610575366004612b90565b611075565b61025b6110ad565b6102b3610590366004612c39565b61113b565b61023e6105a3366004612efb565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b60006106088261117f565b806106175750610617826111d5565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061064f90612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461067b90612f25565b80156106c85780601f1061069d576101008083540402835291602001916106c8565b820191906000526020600020905b8154815290600101906020018083116106ab57829003601f168201915b505050505091505090565b60006106de8261122b565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff16610617565b6107338282336112a9565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661078c576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006107998383336112b6565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610827576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610783565b50505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546108678161136d565b6108278383611377565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0061089d84610b8d565b83106108f4576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101849052604401610783565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602091825260408082208583529092522054905092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610979576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098382826113ce565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d9576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610733828261141c565b61098383838360405180602001604052806000815250610e3e565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a4f576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a58816114cd565b50565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00610aa67f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed025490565b8310610ae8576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526000600482015260248101849052604401610783565b806002018381548110610afd57610afd612f78565b9060005260206000200154915050919050565b7f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a610b3a8161136d565b6001610b468382612fee565b507f0b5e7f3f12bb283d66c974a1d529f3e44f27edd4aad7748c1d0058241ec0077582604051610b769190612b7d565b60405180910390a15050565b60006106178261122b565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316610c00576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b60606000610c3b83610b8d565b905060008167ffffffffffffffff811115610c5857610c58612c65565b604051908082528060200260200182016040528015610c81578160200160208202803683370190505b50905060005b82811015610cbe57610c998582610871565b828281518110610cab57610cab612f78565b6020908102919091010152600101610c87565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1615610d16576040517fd4376c1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610d96908461152e565b949350505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161064f90612f25565b61073333838361153a565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320006020819052604090912060609190610e379061165b565b9392505050565b610e49848484610737565b6108273385858585611668565b6000610e6061185f565b805490915060ff68010000000000000000820416159067ffffffffffffffff16600081158015610e8d5750825b905060008267ffffffffffffffff166001148015610eaa5750303b155b905081158015610eb8575080155b15610eef576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f58611888565b610fcc6040518060400160405280601a81526020017f526563616c6c205374616b696e67204e465420526563656970740000000000008152506040518060400160405280600681526020017f52534e4654520000000000000000000000000000000000000000000000000000815250611892565b610fd7600087611377565b5083156110395784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6060600161104e836118a4565b60405160200161105f929190613107565b6040516020818303038152906040529050919050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610e379061190f565b600180546110ba90612f25565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612f25565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505081565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111758161136d565b61082783836113ce565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610617575061061782611919565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806106175750610617826119fc565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610617576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610783565b6109838383836001611a52565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690851615801590611322575073ffffffffffffffffffffffffffffffffffffffff811615155b15611359576040517f6527f30c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611364858585611c5e565b95945050505050565b610a588133611db7565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113a58585611e5e565b90508015610d965760008581526020839052604090206113c59085611f7f565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113fc8585611fa1565b90508015610d965760008581526020839052604090206113c5908561207f565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b600061147a838360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff811615610983576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b60006114dc60008360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff8116610733576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610783565b6000610e3783836120a1565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166115c0576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60606000610e37836120cb565b73ffffffffffffffffffffffffffffffffffffffff83163b15611858576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906116dd9088908890879087906004016131ab565b6020604051808303816000875af1925050508015611736575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261173391810190613206565b60015b6117c5573d808015611764576040519150601f19603f3d011682016040523d82523d6000602084013e611769565b606091505b5080516000036117bd576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611039576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b5050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610617565b611890612127565b565b61189a612127565b6107338282612165565b60606106178261190784600060076fffffffffffffffffffffffffffffffff8311901b9050600667ffffffffffffffff83831c11901b17600563ffffffff83831c11901b17600461ffff83831c11901b1760ff82821c1160039190911c17919050565b6001016121a8565b6000610617825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806119ac57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061061757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610617565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061061757506106178261117f565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611a94575073ffffffffffffffffffffffffffffffffffffffff831615155b15611c08576000611aa48561122b565b905073ffffffffffffffffffffffffffffffffffffffff841615801590611af757508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b55575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15611ba4576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b8215611c0657848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080611c6c8585856123c6565b905073ffffffffffffffffffffffffffffffffffffffff8116611d1457611d0f847f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b611d51565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d5157611d51818561258b565b73ffffffffffffffffffffffffffffffffffffffff8516611d7a57611d7584612646565b610d96565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9657610d968585612741565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610733576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610783565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f113390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610617565b6000915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff84166127bb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff841661280a565b60008260000182815481106120b8576120b8612f78565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561211b57602002820191906000526020600020905b815481526020019060010190808311612107575b50505050509050919050565b61212f6128f3565b611890576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61216d612127565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806121998482612fee565b50600181016108278382612fee565b60608260006121b8846002613252565b6121c3906002613269565b67ffffffffffffffff8111156121db576121db612c65565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db856002613252565b6122e6906001613269565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000083600f166010811061232757612327612f78565b1a60f81b82828151811061233d5761233d612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049290921c9161237c8161327c565b90506122e9565b508115610d96576040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610783565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff9081169084161561244157612441818587612912565b73ffffffffffffffffffffffffffffffffffffffff8116156124b95761246b600086600080611a52565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8616156125045773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0060006125b784610b8d565b600084815260018401602090815260408083205473ffffffffffffffffffffffffffffffffffffffff89168452918690529091209192509081831461261e576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02547f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090600090612699906001906132b1565b60008481526003840160205260408120546002850180549394509092849081106126c5576126c5612f78565b90600052602060002001549050808460020183815481106126e8576126e8612f78565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480612724576127246132c4565b600190038181906000526020600020016000905590555050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed006000600161276f85610b8d565b61277991906132b1565b73ffffffffffffffffffffffffffffffffffffffff90941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b600081815260018301602052604081205461280257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610617565b506000610617565b60008181526001830160205260408120548015611f7557600061282e6001836132b1565b8554909150600090612842906001906132b1565b90508082146128a757600086600001828154811061286257612862612f78565b906000526020600020015490508087600001848154811061288557612885612f78565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128b8576128b86132c4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610617565b60006128fd61185f565b5468010000000000000000900460ff16919050565b61291d8383836129c2565b6109835773ffffffffffffffffffffffffffffffffffffffff8316612971576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610783565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610783565b600073ffffffffffffffffffffffffffffffffffffffff831615801590610d9657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a6f575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b80610d9657505060009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a5857600080fd5b600060208284031215612b0457600080fd5b8135610e3781612ac4565b60005b83811015612b2a578181015183820152602001612b12565b50506000910152565b60008151808452612b4b816020860160208601612b0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e376020830184612b33565b600060208284031215612ba257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612bcd57600080fd5b919050565b60008060408385031215612be557600080fd5b612bee83612ba9565b946020939093013593505050565b600080600060608486031215612c1157600080fd5b612c1a84612ba9565b9250612c2860208501612ba9565b929592945050506040919091013590565b60008060408385031215612c4c57600080fd5b82359150612c5c60208401612ba9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115612caf57612caf612c65565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715612cfc57612cfc612c65565b604052838152905080828401851015612d1457600080fd5b83836020830137600060208583010152509392505050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff811115612d5557600080fd5b8201601f81018413612d6657600080fd5b610d9684823560208401612c94565b600060208284031215612d8757600080fd5b610e3782612ba9565b602080825282518282018190526000918401906040840190835b81811015612dc8578351835260209384019390920191600101612daa565b509095945050505050565b60008060408385031215612de657600080fd5b50508035926020909101359150565b60008060408385031215612e0857600080fd5b612e1183612ba9565b915060208301358015158114612e2657600080fd5b809150509250929050565b602080825282518282018190526000918401906040840190835b81811015612dc857835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612e4b565b60008060008060808587031215612e9557600080fd5b612e9e85612ba9565b9350612eac60208601612ba9565b925060408501359150606085013567ffffffffffffffff811115612ecf57600080fd5b8501601f81018713612ee057600080fd5b612eef87823560208401612c94565b91505092959194509250565b60008060408385031215612f0e57600080fd5b612f1783612ba9565b9150612c5c60208401612ba9565b600181811c90821680612f3957607f821691505b602082108103612f72577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561098357806000526020600020601f840160051c81016020851015612fce5750805b601f840160051c820191505b818110156118585760008155600101612fda565b815167ffffffffffffffff81111561300857613008612c65565b61301c816130168454612f25565b84612fa7565b6020601f82116001811461306e57600083156130385750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611858565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130bc578785015182556020948501946001909201910161309c565b50848210156130f857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600080845461311581612f25565b60018216801561312c576001811461315f5761318f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316865281151582028601935061318f565b87600052602060002060005b838110156131875781548882015260019091019060200161316b565b505081860193505b50505083516131a2818360208801612b0f565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006131fc6080830184612b33565b9695505050505050565b60006020828403121561321857600080fd5b8151610e3781612ac4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761061757610617613223565b8082018082111561061757610617613223565b60008161328b5761328b613223565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8181038181111561061757610617613223565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208c4aae2f7a484318b3b9e79fafec9a0f910f6f6aabe009b81f847d8c5b93834b64736f6c634300081e0033","storage":{"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"}},"0xc5a5c42992decbae36851359345fe25997f5c42d":{"nonce":2,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061025c5760003560e01c806391d1485411610145578063b20feaaf116100bd578063cfca31471161008c578063ec87621c11610071578063ec87621c146105a5578063f2e2e2aa146105cc578063f88139101461060657600080fd5b8063cfca31471461057f578063d547741f1461059257600080fd5b8063b20feaaf146104d0578063c36a470814610550578063c4c0453414610559578063ca15c8731461056c57600080fd5b8063a3246ad311610114578063aa405af9116100f9578063aa405af91461049e578063b013ab38146104a7578063b0e21e8a146104c757600080fd5b8063a3246ad314610475578063a5fd8edc1461049557600080fd5b806391d148541461040d57806399f8cbaf14610451578063a217fddf14610464578063a221c64a1461046c57600080fd5b806336568abe116101d857806366fbf11b116101a757806380cc90ed1161018c57806380cc90ed146103a2578063850a1501146103b55780639010d07c146103fa57600080fd5b806366fbf11b1461037c578063787dce3d1461038f57600080fd5b806336568abe1461033a57806339591b001461034d5780635026c826146103565780635e73fd761461036957600080fd5b80631c91ecb61161022f5780632a53ff5f116102145780632a53ff5f146102f95780632f2ff15d146103145780632f7d5c661461032757600080fd5b80631c91ecb6146102c4578063248a9ca3146102d657600080fd5b806301ffc9a714610261578063059129471461028957806306bdd7d51461029e5780631776a827146102b1575b600080fd5b61027461026f3660046118f2565b610619565b60405190151581526020015b60405180910390f35b61029c610297366004611934565b610675565b005b61029c6102ac366004611934565b6106f8565b61029c6102bf366004611976565b61077d565b6002545b604051908152602001610280565b6102c86102e4366004611934565b60009081526020819052604090206001015490565b600954600a5460408051928352602083019190915201610280565b61029c610322366004611991565b610850565b61029c610335366004611934565b61087b565b61029c610348366004611991565b6108f6565b6102c8600a5481565b610274610364366004611976565b610954565b61029c6103773660046119bd565b6109da565b61029c61038a366004611976565b610bb2565b61029c61039d366004611934565b610ca0565b61029c6103b0366004611934565b610d1b565b6003546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b6103d5610408366004611a64565b610da4565b61027461041b366004611991565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61045f366004611934565b610dc3565b6102c8600081565b6102c860075481565b610488610483366004611934565b610e3e565b6040516102809190611a86565b6102c860085481565b6102c860095481565b6004546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b6102c860065481565b6104d8610e58565b6040516102809190600060c08201905082518252602083015160208301526040830151604083015273ffffffffffffffffffffffffffffffffffffffff60608401511660608301526080830151608083015273ffffffffffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b6102c860055481565b6104d8610567366004611976565b610f13565b6102c861057a366004611934565b610f8a565b61029c61058d366004611976565b610fa1565b61029c6105a0366004611991565b611071565b6102c87f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b6105f86105da366004611976565b600b6020526000908152604090205460ff8082169161010090041682565b604051610280929190611b49565b61029c610614366004611b66565b611096565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061066f575061066f82611110565b92915050565b6000610680816111a7565b60055482036106bb576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f7a25f4d39c7ef2d9ff33e6304584e4c9fb1532bc39972e2cd34b074c1e40e02b906020015b60405180910390a15050565b6000610703816111a7565b600954821480610711575081155b15610748576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098290556040518281527f87948cba23b87f534057161b507f18cd7f69576b88a81a74c55d8f29dfb06452906020016106ec565b6000610788816111a7565b60045473ffffffffffffffffffffffffffffffffffffffff908116908316036107dd576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f372b5e772b71a68b761c4ac03b59a6a2322bd34ac161ba7029a6a418fe890051906020016106ec565b60008281526020819052604090206001015461086b816111a7565b61087583836111b4565b50505050565b6000610886816111a7565b60085482036108c1576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088290556040518281527f3a1dedaf5733100a92da764c2066bdc86b970e224ee473d515375645ce99a9d2906020016106ec565b73ffffffffffffffffffffffffffffffffffffffff81163314610945576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f82826111e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645602052604081205460ff166109d2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001919050565b73ffffffffffffffffffffffffffffffffffffffff85161580610a11575073ffffffffffffffffffffffffffffffffffffffff8416155b80610a30575073ffffffffffffffffffffffffffffffffffffffff8116155b15610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a927f000000000000000000000000f0d7de80a1c242fa3c738b083c422d65c6c7abf1611216565b6040517f09c26fb100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906309c26fb190610aef9089908990899089908990600401611bea565b600060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505060028054925090506000610b3283611c8d565b91905055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f68828e0b01cfe3740f67270e157a30f161e6531d36cd5db5797ec0e32d1f6911610b8f60025490565b878787604051610ba29493929190611cc5565b60405180910390a3505050505050565b6000610bbd816111a7565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090208054610100900460ff16610c22576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff8116825560405173ffffffffffffffffffffffffffffffffffffffff8516917f523fff9d18fef7247d13e67b28b58c6173cc8868a73b220fcebfd5887c1135b291610c939160ff1690611d06565b60405180910390a2505050565b6000610cab816111a7565b6006548203610ce6576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068290556040518281527fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de40906020016106ec565b6000610d26816111a7565b600a54821480610d3857506206978082105b15610d6f576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a8290556040518281527f2c941b29cbb54e4feeb31a83ebf90b2ffdd425f3970b341bf588a6ca88a8b56b906020016106ec565b6000828152600160205260408120610dbc9083611223565b9392505050565b6000610dce816111a7565b6007548203610e09576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078290556040518281527f6d3d82f4a368310fc477262ac1c98c96cf147c62b219e94a4acf691400922905906020016106ec565b600081815260016020526040902060609061066f9061122f565b610ebd6040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b506040805160c081018252600654815260085460208201526007549181019190915260035473ffffffffffffffffffffffffffffffffffffffff908116606083015260055460808301526004541660a082015290565b610f786040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b610f8182610954565b5061066f610e58565b600081815260016020526040812061066f9061123c565b6000610fac816111a7565b60035473ffffffffffffffffffffffffffffffffffffffff90811690831603611001576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f33837f672315b6cffcf11894714abfdec631a913c18d7738fcaf40c444376fb690600090a25050565b60008281526020819052604090206001015461108c816111a7565b61087583836111e9565b60006110a1816111a7565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b6020526040902054610100900460ff1615611106576040517f56b89dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f8383611246565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061066f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461066f565b6111b181336113d3565b50565b6000806111c18484611462565b90508015610dbc5760008481526001602052604090206111e1908461155e565b509392505050565b6000806111f68484611580565b90508015610dbc5760008481526001602052604090206111e1908461163b565b600061066f82600061165d565b6000610dbc8383611732565b60606000610dbc8361175c565b600061066f825490565b73ffffffffffffffffffffffffffffffffffffffff82161580159061127c5750600081600381111561127a5761127a611adf565b145b156112b3576040517fa1e9dd9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052808260038111156112d0576112d0611adf565b81526001602091820181905273ffffffffffffffffffffffffffffffffffffffff85166000908152600b9092526040909120825181549192909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600381111561134357611343611adf565b0217905550602091909101518154901515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617905560405173ffffffffffffffffffffffffffffffffffffffff8316907fbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8906113c7908490611d06565b60405180910390a25050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661145e576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114f43390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161066f565b50600061066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117b8565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117ff565b6000814710156116a2576040517fcf47918100000000000000000000000000000000000000000000000000000000815247600482015260248101839052604401611455565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff811661066f576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061174957611749611d14565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156117ac57602002820191906000526020600020905b815481526020019060010190808311611798575b50505050509050919050565b60008181526001830160205260408120546115565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561066f565b600081815260018301602052604081205480156118e8576000611823600183611d43565b855490915060009061183790600190611d43565b905080821461189c57600086600001828154811061185757611857611d14565b906000526020600020015490508087600001848154811061187a5761187a611d14565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806118ad576118ad611d56565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061066f565b600091505061066f565b60006020828403121561190457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dbc57600080fd5b60006020828403121561194657600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197157600080fd5b919050565b60006020828403121561198857600080fd5b610dbc8261194d565b600080604083850312156119a457600080fd5b823591506119b46020840161194d565b90509250929050565b6000806000806000608086880312156119d557600080fd5b6119de8661194d565b94506119ec6020870161194d565b9350604086013567ffffffffffffffff811115611a0857600080fd5b8601601f81018813611a1957600080fd5b803567ffffffffffffffff811115611a3057600080fd5b886020828401011115611a4257600080fd5b60209190910193509150611a586060870161194d565b90509295509295909350565b60008060408385031215611a7757600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015611ad457835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611aa0565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b45577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60408101611b578285611b0e565b82151560208301529392505050565b60008060408385031215611b7957600080fd5b611b828361194d565b9150602083013560048110611b9657600080fd5b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201526000611c36608083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cbe57611cbe611c5e565b5060010190565b848152606060208201526000611cdf606083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff8316604083015295945050505050565b6020810161066f8284611b0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561066f5761066f611c5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122004cc3d27435f63a9b2d95a3a11885d96b818e3a86df73530c60f192f0002bb3664736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000003":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x0000000000000000000000000000000000000000000000000000000000000004":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000005":"0x0000000000000000000000000000000000000000000000000de0b6b3a7640000","0x0000000000000000000000000000000000000000000000000000000000000006":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000007":"0x00000000000000000000000000000000000000000000000000000000000000c8","0x0000000000000000000000000000000000000000000000000000000000000008":"0x0000000000000000000000000000000000000000000000000000000000000258","0x0000000000000000000000000000000000000000000000000000000000000009":"0x0000000000000000000000000000000000000000000000000000000000278d00","0x000000000000000000000000000000000000000000000000000000000000000a":"0x0000000000000000000000000000000000000000000000000000000000278d00","0x0bf4b806eb372bd2b76cbe17b81dd971dfc417c544bb4c088136e3c011d29de7":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x25ef4724465a730631953512e5276faca131f1eb4d6aa575c6a27e5c8ffa020a":"0x0000000000000000000000000000000000000000000000000000000000000001","0x3471021a57ac06568e6a3064485bde7912220cf82f2e58df9da59a7ec8e62f11":"0x0000000000000000000000000000000000000000000000000000000000000001","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x0000000000000000000000000000000000000000000000000000000000000001","0xadc663cbf2a1fbefebe6e878a7cfbbc25a0abac4201b2cab70b2594c6c6cccc9":"0x0000000000000000000000000000000000000000000000000000000000000001","0xdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76":"0x0000000000000000000000000000000000000000000000000000000000000100","0xf767e2e802e65c21f7baafad4f891b5e085430189300f1a7d53f7e28fd074641":"0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","0xf7878640057651f368cfd0d174d7ed7504f0f3eb500b219bf6e6ab6b9a239354":"0x0000000000000000000000000000000000000000000000000000000000000101","0xfdb122eb892c6b3193f8499f050265ce5458caab5f6480270d8972921f24f429":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xe6e340d132b5f46d1e472debcd681b2abc16e57e":{"nonce":3,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80639010d07c11610097578063a3246ad311610066578063a3246ad314610286578063b09e1b1f146102a6578063ca15c873146102cd578063d547741f146102e057600080fd5b80639010d07c1461021f57806391d1485414610232578063946ccd5f14610276578063a217fddf1461027e57600080fd5b80632f2ff15d116100d35780632f2ff15d1461018b57806336568abe146101a057806350b492ba146101b357806360166fe3146101e957600080fd5b806301ffc9a7146100fa57806315fb764014610122578063248a9ca31461015a575b600080fd5b61010d610108366004610d71565b6102f3565b60405190151581526020015b60405180910390f35b610135610130366004610db3565b61034f565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61017d610168366004610def565b60009081526020819052604090206001015490565b604051908152602001610119565b61019e610199366004610e31565b61061e565b005b61019e6101ae366004610e31565b610649565b6101356101c1366004610def565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101356101f7366004610def565b60009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61013561022d366004610e5d565b6106a7565b61010d610240366004610e31565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b60025461017d565b61017d600081565b610299610294366004610def565b6106c6565b6040516101199190610e7f565b6101357f0000000000000000000000004f57f9239efcbf43e5920f579d03b3849c58839681565b61017d6102db366004610def565b6106e0565b61019e6102ee366004610e31565b6106f7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061034957506103498261071c565b92915050565b60008061035f6020840184610ed8565b73ffffffffffffffffffffffffffffffffffffffff1614806103a65750600061038e60c0840160a08501610ed8565b73ffffffffffffffffffffffffffffffffffffffff16145b156103dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820135610418576040517f9dd854d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104417f0000000000000000000000004f57f9239efcbf43e5920f579d03b3849c5883966107b3565b905073ffffffffffffffffffffffffffffffffffffffff81166389fcf3bd61046c6020850185610ed8565b61047c6040860160208701610ed8565b61048c6060870160408801610ed8565b606087013560808801356104a660c08a0160a08b01610ed8565b6104b660e08b0160c08c01610ed8565b6104c360e08c018c610ef3565b6040518a63ffffffff1660e01b81526004016104e799989796959493929190610f62565b600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b50506002805492509050600061052a8361102a565b9091555050600254600090815260036020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905561058d90830183610ed8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166002547fe2af5a9302169fb2b16d64ea3273f80104a5a67c94475b4c699ec467d9d2ec6f8560a00160208101906105f19190610ed8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a4919050565b600082815260208190526040902060010154610639816107c0565b61064383836107cd565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610698576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106a28282610802565b505050565b60008281526001602052604081206106bf908361082f565b9392505050565b60008181526001602052604090206060906103499061083b565b600081815260016020526040812061034990610848565b600082815260208190526040902060010154610712816107c0565b6106438383610802565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061034957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610349565b6000610349826000610852565b6107ca813361092c565b50565b6000806107da84846109b6565b905080156106bf5760008481526001602052604090206107fa9084610ab2565b509392505050565b60008061080f8484610ad4565b905080156106bf5760008481526001602052604090206107fa9084610b8f565b60006106bf8383610bb1565b606060006106bf83610bdb565b6000610349825490565b60008147101561089c576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018390526044015b60405180910390fd5b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff8116610349576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109b2576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610893565b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610a483390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610349565b506000610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c37565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c7e565b6000826000018281548110610bc857610bc8611062565b9060005260206000200154905092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015610c2b57602002820191906000526020600020905b815481526020019060010190808311610c17575b50505050509050919050565b6000818152600183016020526040812054610aaa57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610349565b60008181526001830160205260408120548015610d67576000610ca2600183611091565b8554909150600090610cb690600190611091565b9050808214610d1b576000866000018281548110610cd657610cd6611062565b9060005260206000200154905080876000018481548110610cf957610cf9611062565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610d2c57610d2c6110a4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610349565b6000915050610349565b600060208284031215610d8357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bf57600080fd5b600060208284031215610dc557600080fd5b813567ffffffffffffffff811115610ddc57600080fd5b820161010081850312156106bf57600080fd5b600060208284031215610e0157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2c57600080fd5b919050565b60008060408385031215610e4457600080fd5b82359150610e5460208401610e08565b90509250929050565b60008060408385031215610e7057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015610ecd57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e99565b509095945050505050565b600060208284031215610eea57600080fd5b6106bf82610e08565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610f2857600080fd5b83018035915067ffffffffffffffff821115610f4357600080fd5b6020019150600681901b3603821315610f5b57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8a8116825289811660208301528881166040830152606082018890526080820187905285811660a0830152841660c082015261010060e0820181905281018290526000836101208301825b85811015610fea57823582526020808401359083015260409283019290910190600101610fc2565b509c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361105b5761105b610ffb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561034957610349610ffb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220499971a6beedabcbe4a23ff1222fc9b85ea4ab7b4a69cdf2ceb7ce64ca8e131064736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x25ef4724465a730631953512e5276faca131f1eb4d6aa575c6a27e5c8ffa020a":"0x0000000000000000000000000000000000000000000000000000000000000001","0x3471021a57ac06568e6a3064485bde7912220cf82f2e58df9da59a7ec8e62f11":"0x0000000000000000000000000000000000000000000000000000000000000001","0xa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c":"0x000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xf0d7de80a1c242fa3c738b083c422d65c6c7abf1":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106102345760003560e01c80636d2401c811610138578063bd464115116100b0578063cb3a6b2c1161007f578063dc63f6ae11610064578063dc63f6ae1461078e578063f23a6e61146107ae578063f75166fc146107f357600080fd5b8063cb3a6b2c14610736578063d547741f1461076e57600080fd5b8063bd464115146106c1578063c2986b0e146106e1578063c7395be214610701578063ca15c8731461071657600080fd5b8063a217fddf11610107578063af06216f116100ec578063af06216f14610637578063bb19b4d31461064c578063bc197c811461067c57600080fd5b8063a217fddf146105f5578063a3246ad31461060a57600080fd5b80636d2401c8146105355780639010d07c1461055757806391d148541461057757806393e6c436146105c857600080fd5b8063248a9ca3116101cb5780634517863d1161019a57806359416e0e1161017f57806359416e0e146104ef57806361f438481461050f57806364cde8d21461052257600080fd5b80634517863d1461049b578063564cd00b146104cf57600080fd5b8063248a9ca3146104015780632f2ff15d1461043157806336568abe146104515780633dd781de1461047157600080fd5b8063150b7a0211610207578063150b7a02146102eb57806316ecfdf0146103605780631b8ec5d714610376578063222e9e82146103cd57600080fd5b806301ffc9a71461023957806309c26fb11461026e5780630be4d2b814610290578063147e7e66146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461330b565b610813565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046133b8565b610824565b005b34801561029c57600080fd5b5061028e6102ab366004613435565b610990565b3480156102bc57600080fd5b506102dd6102cb366004613477565b60076020526000908152604090205481565b604051908152602001610265565b3480156102f757600080fd5b5061032f6103063660046135c9565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610265565b34801561036c57600080fd5b506102dd60065481565b34801561038257600080fd5b506003546103a890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610265565b3480156103d957600080fd5b506103a87f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d81565b34801561040d57600080fd5b506102dd61041c366004613635565b60009081526020819052604090206001015490565b34801561043d57600080fd5b5061028e61044c36600461364e565b610a18565b34801561045d57600080fd5b5061028e61046c36600461364e565b610a43565b34801561047d57600080fd5b50610486610aa1565b60408051928352602083019190915201610265565b3480156104a757600080fd5b506102dd7f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b681565b3480156104db57600080fd5b5061028e6104ea36600461367e565b610b97565b3480156104fb57600080fd5b5061028e61050a36600461374c565b61131c565b61028e61051d366004613635565b6114fb565b61028e6105303660046137d4565b61182b565b34801561054157600080fd5b5061054a611ae5565b6040516102659190613800565b34801561056357600080fd5b506103a861057236600461386c565b611b73565b34801561058357600080fd5b5061025961059236600461364e565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105d457600080fd5b506102dd6105e3366004613477565b60096020526000908152604090205481565b34801561060157600080fd5b506102dd600081565b34801561061657600080fd5b5061062a610625366004613635565b611b92565b604051610265919061388e565b34801561064357600080fd5b50610259611bac565b34801561065857600080fd5b50610259610667366004613635565b60046020526000908152604090205460ff1681565b34801561068857600080fd5b5061032f61069736600461396a565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b3480156106cd57600080fd5b5061028e6106dc36600461374c565b611c0a565b3480156106ed57600080fd5b5061028e6106fc3660046137d4565b611e71565b34801561070d57600080fd5b5061028e611f8c565b34801561072257600080fd5b506102dd610731366004613635565b611fd3565b34801561074257600080fd5b506102dd610751366004613a24565b600860209081526000928352604080842090915290825290205481565b34801561077a57600080fd5b5061028e61078936600461364e565b611fea565b34801561079a57600080fd5b5061028e6107a9366004613a52565b61200f565b3480156107ba57600080fd5b5061032f6107c9366004613af6565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3480156107ff57600080fd5b5061028e61080e3660046137d4565b6123ab565b600061081e82612580565b92915050565b7f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d73ffffffffffffffffffffffffffffffffffffffff163314158061086b575060035460ff165b156108a2576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ad6000866125d6565b506108d87f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b6856125d6565b5061091883838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0073ffffffffffffffffffffffffffffffffffffffff90931661010002929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090921691909117600117905550505050565b600061099b81612652565b6109da83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b7f121f741ddf8ba42be07a0e28c2017398f83e3766e2f4bfa9ea925307c0c5d1378383604051610a0b929190613b53565b60405180910390a1505050565b600082815260208190526040902060010154610a3381612652565b610a3d83836125d6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a92576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a9c828261265f565b505050565b6006546000908190808203610ae2576040517fbb6aa2ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d73ffffffffffffffffffffffffffffffffffffffff16632a53ff5f6040518163ffffffff1660e01b81526004016040805180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190613ba0565b9092509050610b828284613bf3565b9450610b8e8186613bf3565b93505050509091565b610b9f61268c565b600073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d1663c4c04534336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240160c060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190613c06565b905060005b83811015611310576000858583818110610c8c57610c8c613c97565b905060e00201803603810190610ca29190613cc6565b60a081015160009081526004602052604090205490915060ff1615610cf3576040517fc41a375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160c08201516040805160208101929092527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16908201526054016040516020818303038152906040528051906020012014610d83576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516000610d90826126cd565b60a0840151600090815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055608085015160608601519293509091610de59190613bf3565b9050610df0816127c3565b610df86132ed565b6000808080866003811115610e0f57610e0f613d4a565b1480610e2c57506001866003811115610e2a57610e2a613d4a565b145b15610e5357610e448a89606001518a608001516127fd565b91955093509150869050610f3f565b6002866003811115610e6757610e67613d4a565b1480610e8457506003866003811115610e8257610e82613d4a565b145b15610f0d57610e928a6128ff565b606089015160808a015160a08d0151604084015160208501518551959950939750919550935091610ec39190613bf3565b610ecd9190613bf3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604081208054909190610f02908490613d79565b90915550610f3f9050565b6040517ff599342800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526007602052604081208054879290610f74908490613d79565b9091555050835160608b015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152604080832093861683529290529081208054909190610fc4908490613bf3565b9091555050602080850151600354610100900473ffffffffffffffffffffffffffffffffffffffff90811660009081526008845260408082209286168252919093528220805491929091611019908490613bf3565b909155505060408085015173ffffffffffffffffffffffffffffffffffffffff8d8116600090815260086020908152848220928616825291909152918220805491929091611068908490613bf3565b909155505060208089015173ffffffffffffffffffffffffffffffffffffffff9081166000908152600883526040808220928b16825291909252812080548592906110b4908490613bf3565b909155505060408089015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152838220928b168252919091529081208054849290611102908490613bf3565b925050819055508673ffffffffffffffffffffffffffffffffffffffff167f68509a400b7cc402898b7aacefe7cf662539f64e5a79d4234c58734256b5e224866040518060a001604052808e6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506040518060a001604052808960006003811061129157611291613c97565b60200201518152602001896001600381106112ae576112ae613c97565b60200201518152602001896002600381106112cb576112cb613c97565b60200201518152602001888152602001878152508c60a001516040516112f49493929190613d8c565b60405180910390a2505060019096019550610c70945050505050565b5050610a9c6001600255565b600061132781612652565b61132f61268c565b600061133a876126cd565b9050600281600381111561135057611350613d4a565b036113ff578461135f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611394908490613bf3565b909155506113a790508833308a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167fd6d003c3b12171676fc9412009c65e678368ee9deedce21d9efe7c9d9d34a1c18289896040516113f193929190613e59565b60405180910390a2506114e8565b600381600381111561141357611413613d4a565b03610f0d5760006114248585612a5c565b905061142f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611464908490613bf3565b9091555061147990508833308a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f4f7bc006fa3e8a3fde1c087dfff50e0cda2cc7791fa6343ee9f4c395e3da0d37838a8a8a8a6040516114de959493929190613e7c565b60405180910390a3505b506114f36001600255565b505050505050565b600061150681612652565b61150e61268c565b81611518816127c3565b60007f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d73ffffffffffffffffffffffffffffffffffffffff1663b013ab386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190613eb5565b9050600073ffffffffffffffffffffffffffffffffffffffff821661160857843414611601576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611793565b3415611640576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d19190613ed2565b90506116f573ffffffffffffffffffffffffffffffffffffffff8416333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117859190613ed2565b61178f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812080548392906117c8908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f85dd53a04234402c5e629c4ab3051ff7aa3d103e7d22804a9713094c50e6ca929060200160405180910390a35050506118276001600255565b5050565b600061183681612652565b61183e61268c565b81611848816127c3565b6000611853856126cd565b905060008082600381111561186a5761186a613d4a565b036118af578434146118a8576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611a53565b60018260038111156118c3576118c3613d4a565b03610f0d573415611900576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190613ed2565b90506119b573ffffffffffffffffffffffffffffffffffffffff8816333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8916906370a0823190602401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613ed2565b611a4f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff861660009081526007602052604081208054839290611a88908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8716907f78cae0ecd388607ec2d56e9b6f673cd0a042c8407cdfc7b578e9707223ee64b29060200160405180910390a2505050610a9c6001600255565b60058054611af290613eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1e90613eeb565b8015611b6b5780601f10611b4057610100808354040283529160200191611b6b565b820191906000526020600020905b815481529060010190602001808311611b4e57829003601f168201915b505050505081565b6000828152600160205260408120611b8b9083612bbd565b9392505050565b600081815260016020526040902060609061081e90612bc9565b6000806000611bb9610aa1565b9150915081421080611bca57508042115b15611c01576040517fbd95a86000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019250505090565b6000611c1581612652565b611c1d61268c565b611c25611bac565b506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526000917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d9091169063f2e2e2aa906024016040805180830381865afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda9190613f4d565b5090506002816003811115611cf157611cf1613d4a565b03611d925784611d00816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611d35908490613d79565b90915550611d4890508830338a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167f9345f22c71af54e80c416040732be09908da822fef94e166af33535f824c51c78289896040516113f193929190613e59565b6003816003811115611da657611da6613d4a565b03610f0d576000611db78585612a5c565b9050611dc2816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611df7908490613d79565b90915550611e0c90508830338a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f0dc54c2a40ababb385f82389a070a55b00cd3fae93fc5b1916924ade1633503b838a8a8a8a6040516114de959493929190613e7c565b6000611e7c81612652565b611e8461268c565b611e8c611bac565b5081611e97816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208054859290611ecc908490613d79565b909155505073ffffffffffffffffffffffffffffffffffffffff8416611f1357611f0e83335b73ffffffffffffffffffffffffffffffffffffffff1690612bd6565b611f34565b611f3473ffffffffffffffffffffffffffffffffffffffff85163385612c91565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907ff57fb8b8dfa150e93ac811898e14550baf3452656f9d4e8058a5c24efa9ecaad9060200160405180910390a350610a9c6001600255565b6000611f9781612652565b4260068190556040519081527f01909d53c76ffada2e8f99e82b9afa64e37cfe2bc2c1fa7ba5959fc62e4baa7f9060200160405180910390a150565b600081815260016020526040812061081e90612ccf565b60008281526020819052604090206001015461200581612652565b610a3d838361265f565b61201761268c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d16635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156120bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e19190613f86565b5073ffffffffffffffffffffffffffffffffffffffff8087166000908152600860209081526040808320938b1683529290529081208054879290612126908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526000917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d9091169063f2e2e2aa906024016040805180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190613f4d565b50905060008160038111156121f6576121f6613d4a565b036122205761221b73ffffffffffffffffffffffffffffffffffffffff881687612bd6565b61232a565b600181600381111561223457612234613d4a565b0361225a5761221b73ffffffffffffffffffffffffffffffffffffffff89168888612c91565b600281600381111561226e5761226e613d4a565b036122c057838681146122ad576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ba89308a8989612981565b5061232a565b60038160038111156122d4576122d4613d4a565b03610f0d576122e38383612a5c565b861461231b576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61221b88308988888888612a9d565b8773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0c3f6188054cfad2267b81cfd4ec43dcf3245a8b92e59cc44d6b4e85a5867264888888888860405161238f959493929190613e7c565b60405180910390a3506123a26001600255565b50505050505050565b60006123b681612652565b6123be61268c565b6123c6611bac565b50816123d1816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208054859290612406908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d9091169063f2e2e2aa906024016040805180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf9190613f4d565b50905060008160038111156124d6576124d6613d4a565b036124ea576124e58433611ef2565b612524565b60018160038111156124fe576124fe613d4a565b03610f0d576124e573ffffffffffffffffffffffffffffffffffffffff86163386612c91565b8473ffffffffffffffffffffffffffffffffffffffff167f2bde45b775c7b186ca5991ba05250885d44cad19752d5e84f715be315dc60ad08560405161256c91815260200190565b60405180910390a25050610a9c6001600255565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061081e575061081e82612cd9565b6000806125e38484612d2f565b90508015611b8b5760008481526001602052604090206126039084612e2b565b509392505050565b8051600003612646576040517fd07b00d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056118278282613fef565b61265c8133612e4d565b50565b60008061266c8484612ed3565b90508015611b8b5760008481526001602052604090206126039084612f8e565b60028054036126c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b6040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009182917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d169063f2e2e2aa906024016040805180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190613f4d565b9092509050806127bd576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b8060000361265c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128056132ed565b600080806128138587613bf3565b9050600081612823886064614108565b61282d919061411f565b90506040518060600160405280612710848b6000015161284d9190614108565b612857919061411f565b8152602001612710848b6040015161286f9190614108565b612879919061411f565b8152602001612710848b602001516128919190614108565b61289b919061411f565b90526040810151602082015182519297506000926128b99086613d79565b6128c39190613d79565b6128cd9190613d79565b905060646128db8383614108565b6128e5919061411f565b94506128f18582613d79565b935050505093509350939050565b6129076132ed565b60808201516040805160608101909152835181906127109061292a908590614108565b612934919061411f565b815260200161271083866040015161294c9190614108565b612956919061411f565b815260200161271083866020015161296e9190614108565b612978919061411f565b90529392505050565b60005b818110156114f3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e86868686868181106129bc576129bc613c97565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015612a3857600080fd5b505af1158015612a4c573d6000803e3d6000fd5b5050600190920191506129849050565b6000805b82811015612a9657838382818110612a7a57612a7a613c97565b9050602002013582612a8c9190613bf3565b9150600101612a60565b5092915050565b6040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690632eb2c2d690612af99089908990899089908990899060040161415a565b600060405180830381600087803b158015612b1357600080fd5b505af1158015612b27573d6000803e3d6000fd5b5050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a3d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612fb0565b6000611b8b8383613054565b60606000611b8b8361307e565b80471015612c1e576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114612c79576040519150601f19603f3d011682016040523d82523d6000602084013e612c7e565b606091505b509150915081610a3d57610a3d816130da565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610a9c91859182169063a9059cbb90606401612b76565b600061081e825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061081e575061081e8261311c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612dc13390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161081e565b50600061081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131b3565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611827576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401612c15565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131fa565b600080602060008451602086016000885af180612fd3576040513d6000823e3d81fd5b50506000513d91508115612feb578060011415613005565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610a3d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401612c15565b600082600001828154811061306b5761306b613c97565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ce57602002820191906000526020600020905b8154815260200190600101908083116130ba575b50505050509050919050565b8051156130ea5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061081e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081e565b6000818152600183016020526040812054612e235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561081e565b600081815260018301602052604081205480156132e357600061321e600183613d79565b855490915060009061323290600190613d79565b905080821461329757600086600001828154811061325257613252613c97565b906000526020600020015490508087600001848154811061327557613275613c97565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806132a8576132a86141d8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061081e565b600091505061081e565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561331d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b8b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461265c57600080fd5b60008083601f84011261338157600080fd5b50813567ffffffffffffffff81111561339957600080fd5b6020830191508360208285010111156133b157600080fd5b9250929050565b6000806000806000608086880312156133d057600080fd5b85356133db8161334d565b945060208601356133eb8161334d565b9350604086013567ffffffffffffffff81111561340757600080fd5b6134138882890161336f565b90945092505060608601356134278161334d565b809150509295509295909350565b6000806020838503121561344857600080fd5b823567ffffffffffffffff81111561345f57600080fd5b61346b8582860161336f565b90969095509350505050565b60006020828403121561348957600080fd5b8135611b8b8161334d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156134e6576134e6613494565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561353357613533613494565b604052919050565b600082601f83011261354c57600080fd5b813567ffffffffffffffff81111561356657613566613494565b61359760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016134ec565b8181528460208386010111156135ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156135df57600080fd5b84356135ea8161334d565b935060208501356135fa8161334d565b925060408501359150606085013567ffffffffffffffff81111561361d57600080fd5b6136298782880161353b565b91505092959194509250565b60006020828403121561364757600080fd5b5035919050565b6000806040838503121561366157600080fd5b8235915060208301356136738161334d565b809150509250929050565b60008060006040848603121561369357600080fd5b833567ffffffffffffffff8111156136aa57600080fd5b8401601f810186136136bb57600080fd5b803567ffffffffffffffff8111156136d257600080fd5b86602060e0830284010111156136e757600080fd5b6020918201945092508401356136fc8161334d565b809150509250925092565b60008083601f84011261371957600080fd5b50813567ffffffffffffffff81111561373157600080fd5b6020830191508360208260051b85010111156133b157600080fd5b60008060008060006060868803121561376457600080fd5b853561376f8161334d565b9450602086013567ffffffffffffffff81111561378b57600080fd5b61379788828901613707565b909550935050604086013567ffffffffffffffff8111156137b757600080fd5b6137c388828901613707565b969995985093965092949392505050565b600080604083850312156137e757600080fd5b82356137f28161334d565b946020939093013593505050565b602081526000825180602084015260005b8181101561382e5760208186018101516040868401015201613811565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6000806040838503121561387f57600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156138dc57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016138a8565b509095945050505050565b600082601f8301126138f857600080fd5b813567ffffffffffffffff81111561391257613912613494565b8060051b613922602082016134ec565b9182526020818501810192908101908684111561393e57600080fd5b6020860192505b83831015613960578235825260209283019290910190613945565b9695505050505050565b600080600080600060a0868803121561398257600080fd5b853561398d8161334d565b9450602086013561399d8161334d565b9350604086013567ffffffffffffffff8111156139b957600080fd5b6139c5888289016138e7565b935050606086013567ffffffffffffffff8111156139e257600080fd5b6139ee888289016138e7565b925050608086013567ffffffffffffffff811115613a0b57600080fd5b613a178882890161353b565b9150509295509295909350565b60008060408385031215613a3757600080fd5b8235613a428161334d565b915060208301356136738161334d565b600080600080600080600060a0888a031215613a6d57600080fd5b8735613a788161334d565b96506020880135613a888161334d565b955060408801359450606088013567ffffffffffffffff811115613aab57600080fd5b613ab78a828b01613707565b909550935050608088013567ffffffffffffffff811115613ad757600080fd5b613ae38a828b01613707565b989b979a50959850939692959293505050565b600080600080600060a08688031215613b0e57600080fd5b8535613b198161334d565b94506020860135613b298161334d565b93506040860135925060608601359150608086013567ffffffffffffffff811115613a0b57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60008060408385031215613bb357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561081e5761081e613bc4565b600060c0828403128015613c1957600080fd5b5060405160009060c0810167ffffffffffffffff81118282101715613c4057613c40613494565b6040908152845182526020808601519083015284810151908201526060840151613c698161334d565b60608201526080848101519082015260a08401519150613c888261334d565b60a08101919091529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060e0828403128015613cd957600080fd5b506000613ce46134c3565b8335613cef8161334d565b81526020840135613cff8161334d565b60208201526040840135613d128161334d565b6040820152606084810135908201526080808501359082015260a0808501359082015260c09384013593810193909352509092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8181038181111561081e5761081e613bc4565b8481526101808101602082018560005b6005811015613dd157815173ffffffffffffffffffffffffffffffffffffffff16835260209283019290910190600101613d9c565b50505060c082018460005b6005811015613dfb578151835260209283019290910190600101613ddc565b5050508261016083015295945050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613e4057600080fd5b8260051b80836020870137939093016020019392505050565b838152604060208201526000613e73604083018486613e0e565b95945050505050565b858152606060208201526000613e96606083018688613e0e565b8281036040840152613ea9818587613e0e565b98975050505050505050565b600060208284031215613ec757600080fd5b8151611b8b8161334d565b600060208284031215613ee457600080fd5b5051919050565b600181811c90821680613eff57607f821691505b6020821081036127bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80518015158114613f4857600080fd5b919050565b60008060408385031215613f6057600080fd5b825160048110613f6f57600080fd5b9150613f7d60208401613f38565b90509250929050565b600060208284031215613f9857600080fd5b611b8b82613f38565b601f821115610a9c57806000526020600020601f840160051c81016020851015613fc85750805b601f840160051c820191505b81811015613fe85760008155600101613fd4565b5050505050565b815167ffffffffffffffff81111561400957614009613494565b61401d816140178454613eeb565b84613fa1565b6020601f82116001811461406f57600083156140395750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613fe8565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156140bd578785015182556020948501946001909201910161409d565b50848210156140f957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b808202811582820484141761081e5761081e613bc4565b600082614155577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260a0604082015260006141a660a083018688613e0e565b82810360608401526141b9818587613e0e565b8381036080909401939093525050600081526020019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122045750a4f7b76b5361e7efd76223fd062b4f34721c207ae16a4ae5410c876dd0e64736f6c634300081e0033","storage":{"0x0000000000000000000000000000000000000000000000000000000000000002":"0x0000000000000000000000000000000000000000000000000000000000000001"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":35,"balance":"0x21e19d1ca5f63b26035","code":"0x","storage":{}},"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9":{"nonce":1,"balance":"0x0","code":"0x363d3d373d3d3d363d734f57f9239efcbf43e5920f579d03b3849c5883965af43d82803e903d91602b57fd5bf3","storage":{"0x0000000000000000000000000000000000000000000000000000000000000004":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0000000000000000000000000000000000000000000000000000000000000005":"0x99341db4a72623b4f268048ed9f02ff92894fc9a5fa6409107188ce968975a78","0x0000000000000000000000000000000000000000000000000000000000000006":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3","0x0000000000000000000000000000000000000000000000000000000000000007":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000000000000000000000000000000000000000000008":"0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000000000000000000000000000000000000000000a":"0x0000000000000000000000000000000000000000000000000000000000000000","0x0ea1e207dda072346d0ec8dbc69c075dcc6dbf6a2606f1245552e3e0f7c397a2":"0x0000000000000000000000000000000000000000000000000000000000000001","0x0eb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e8":"0x0000000000000000000000000000000000000000000000000000000000000001","0x25ef4724465a730631953512e5276faca131f1eb4d6aa575c6a27e5c8ffa020a":"0x0000000000000000000000000000000000000000000000000000000000000001","0x3471021a57ac06568e6a3064485bde7912220cf82f2e58df9da59a7ec8e62f11":"0x0000000000000000000000000000000000000000000000000000000000000001","0x39abff96e5dfad6da66066702dbc9c6ae78e938cfea1f07eae9c175103643ec5":"0x0000000000000000000000000000000000000000000000000000000000000001","0x3f319398107473f4d78a33b778d5c4cd122733ff0a14beaf005d8f99ab30ffa6":"0x00000000000000000000000000000000000000000000000000000000000001f4","0x467c37d92804ee45f5841c09dea18eb9d98eb5f4d85f278ef76c31584c51d0f9":"0x0000000000000000000000000000000000000000000000000000000000000bb8","0x5e75b065f6797b927c590cd39ac075782fb4e2f581255859ae15f52848f77eb2":"0x0000000000000000000000000000000000000000000000000000000000000001","0x6c82d3a57cebfec9927f2aabad409518216852df1f4c0220fd7ba03937e50ebc":"0x0000000000000000000000000000000000000000000000000000000000000001","0xa209fd95eea7e29bd8ccbac1d0c43c6c391cf2c5c2137685d8eada796deee10e":"0x00000000000000000000000000000000000000000000000000000000000005dc","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x0000000000000000000000000000000000000000000000000000000000000001","0xa725c470b01d2deec4ac044c6b704740b5a2f19c9c117562a452ee4b4e0be284":"0x0000000000000000000000000000000000000000000000000000000000000000","0xa88c7c1ec43ca7b89f828de86356ea828a037a1724597e3d0de9a4593d4862f9":"0x0000000000000000000000000000000000000000000000000000000000000001","0xaeb411f839d816dcc07602e0c9ef96c737968331a745f1dae7a9b4b82fb680da":"0x0000000000000000000000000000000000000000000000000000000000000001","0xb009fbc347bffd144efd545cc4b15a37592e1dd7063753564d9ecc6fea764b6f":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xb9cbbae02fe941283ec0eefd7b121e3bc7f89fae077b27bdd75a7fd4cf1543a8":"0x0000000000000000000000000000000000000000000000000000000000000001","0xbfa147a70a5798d8048269d86b835eedaa8a1f6bb2755de78e0b725d1663689c":"0x0000000000000000000000000000000000000000000000000000000000000001","0xc8ba9f5a50ee6d4104d64669bd4324e2ebdb06bdd75b23016ff261dd10e78428":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76":"0x0000000000000000000000000000000000000000000000000000000000001388","0xdf85b3b91db3fc0d5ce237a54e22266da0607fef5fbe5daeffa9610eb8ae119c":"0x0000000000000000000000000000000000000000000000000000000000000001","0xef0f79a2dbcdff9a8ebe19b620af73660a85b3df3e0778f807cdf83ae1e805c8":"0x0000000000000000000000000000000000000000000000000000000000000001"}}},"best_block_number":35,"blocks":[{"header":{"parentHash":"0x88079c1682bfe153b5b239dcced9f6efbf5a04601715021d1fc91fe92edc7746","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5f10f004520a62b0a3de60938d3167c034c7e5cde76a1f3b35783894325e38b8","transactionsRoot":"0x0b9771e29b26e04e091bd54cff6ffd0931da6d8e2db48c43a4c822d6417ff345","receiptsRoot":"0xe6817cbecfbb1155be0faedf29abd418bc150def24739c5e58abdebf1728c300","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000800000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000200000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0xc83c","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x2caeb1ceb22b6ad9797dc30a62e6d9573117e5d9aad4ac587cde597a177603ec","nonce":"0x0000000000000000","baseFeePerGas":"0x283a347f","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x3","gas":"0xc83c","maxFeePerGas":"0x32e9aa70","maxPriorityFeePerGas":"0xc34b70a","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f190000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0xe17068d6a73792612817d79ab2febf714d51b851893b4b580a551d408a942e44","s":"0x19551c91409045f3871d9dcd50f5fd91588a17e80360c48bc6177c3d0d6e72bb","yParity":"0x0","v":"0x0","hash":"0x80a49f142b7fbf3d0d318c3a45731bbe5375c457945305d13952e650e814b80b"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x5f58bea3a88b74489d0a7f11d754383bf4dd59dace57e89e83f1ae8053373ec1","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x2903f9a60a08e70132e7c747391ecf01acfefb5e22bacd581944334c802e7f0b","transactionsRoot":"0xd7f928331a78db091e0eb4b308fa049712dfeecfb83daa7cf900e6aa738e1d92","receiptsRoot":"0x0acf21d6b43c1d43ef058fe01f5dea79d9c53750ed37ba5599b7ec35f60bc7cc","logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000008000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042800000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x5ffa9204a385df4a492cf3f7441ddc27e24e09483fd2b544de19902ae4c23959","nonce":"0x0000000000000000","baseFeePerGas":"0x1afd1a7c","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x6","gas":"0xc848","maxFeePerGas":"0x22285584","maxPriorityFeePerGas":"0x83061fa","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f190000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0x79f62247c61a1fc614665a5bada74c5b62c4af8c67fbbb1fbb084a1da85409ac","s":"0x41123fda01002c6d8d634f3d0592735ff34b2d96448e95746deaebbe5b9bcd53","yParity":"0x0","v":"0x0","hash":"0x164cf74a6aa60d5e31da4b51b318ebcd86c6be76ea11bf45b30a964b5fbe723f"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x7d210d48f777e2513be370f671303ca8626d74c89ad07d7f83ed703fdf7c4240","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xba70d8c88f183bce9d02d55d4f4cce8d2bb3e69f26201de0f2da01b6a40980fd","transactionsRoot":"0x1a9fc879750959da69e510eb28d05ffc4644566e6221f7d7cd942c2066c218f8","receiptsRoot":"0xcea050217c7146b9c9659bda8095b83e121e6e2888c95c9ad2177837ded8fd17","logsBloom":"0x00000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000080000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x1776dfcc111f4534cd04261cd062e12120d1e89e699a7c4753ba6e581f6598e9","nonce":"0x0000000000000000","baseFeePerGas":"0x17a06ae5","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x7","gas":"0xc848","maxFeePerGas":"0x1de70749","maxPriorityFeePerGas":"0x72b3b08","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f19000000000000000000000000976ea74026e726554db657fa54763abd0c3a0aa900000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0x2a69622e0874ce96b1158fc43a3c637812ccbb0dfb02138d59c7dca894de17b","s":"0x1b27a2d301b54de91e38dd238071cd12019ea3d52747672a76b1eec7b00e0274","yParity":"0x0","v":"0x0","hash":"0xa560b7e02fbda2029d2008eb9080794b320eaa4fd0fd8bcba4497a55efcf0bd3"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x8787bc141c46c79e3d49509db0d9190b4ca6811b4f8efa18a634e5530b3c664a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x9e24a4cb3f7942f4f89bd7265f8ca36a401acf5d668ffc32777bcbaeb492579f","transactionsRoot":"0xe68eca0ebd5e937d4a22819230b34bfef2ae1e0427f864ca8c7a85b02a518093","receiptsRoot":"0x503fa364175e977eab36bdc70e3c6a3ff2c9ae33962eb3e63a4ddc7ae6256253","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000200000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000","difficulty":"0x0","number":"0xe","gasLimit":"0x1c9c380","gasUsed":"0x300087","timestamp":"0x695e8832","extraData":"0x","mixHash":"0x366227febe413d000c78ffdc4fa1a7b999be72dfdec11892728af7f3c416e306","nonce":"0x0000000000000000","baseFeePerGas":"0xb050968","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0xd","gas":"0x300087","maxFeePerGas":"0xdf25fe7","maxPriorityFeePerGas":"0x3506511","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6137d7806100d96000396000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063842e29811161017b578063c0c53b8b116100d8578063e71180ae1161008c578063f188768411610071578063f188768414610759578063f2c3999214610762578063fb1bb9de1461076a57600080fd5b8063e71180ae1461073c578063eb4af0451461074657600080fd5b8063ca7c0af1116100bd578063ca7c0af1146106f5578063d547741f14610702578063e63ab1e91461071557600080fd5b8063c0c53b8b146106d9578063c1292cc3146106ec57600080fd5b80639e2c8a5b1161012f578063a217fddf11610114578063a217fddf1461069e578063ac9650d8146106a6578063b2fb30cb146106c657600080fd5b80639e2c8a5b1461066b5780639ed8e92d1461067e57600080fd5b806391d148541161016057806391d14854146105cc57806396dc1dc1146106315780639d28b5061461064457600080fd5b8063842e2981146105a45780638456cb59146105c457600080fd5b80633cbfe3a1116102295780635c975abb116101dd5780637488df89116101c25780637488df89146105615780637b0472f014610588578063817b1cd21461059b57600080fd5b80635c975abb146105245780637153fc331461054e57600080fd5b806344feed291161020e57806344feed29146103df5780634e533572146103f257806351ed6a30146104df57600080fd5b80633cbfe3a1146103ce5780633f4ba83a146103d757600080fd5b80632e17de78116102805780632f2ff15d116102655780632f2ff15d1461038857806336568abe1461039b5780633a107739146103ae57600080fd5b80632e17de78146103605780632e1a7d4d1461037557600080fd5b806301ffc9a7146102b25780630c51b88f146102da578063248a9ca3146102fb5780632da6fea61461033d575b600080fd5b6102c56102c036600461322c565b610791565b60405190151581526020015b60405180910390f35b6102ed6102e8366004613297565b61082a565b6040519081526020016102d1565b6102ed6103093660046132ca565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102c561034b3660046132ca565b60086020526000908152604090205460ff1681565b61037361036e3660046132ca565b610841565b005b6103736103833660046132ca565b610a3c565b6103736103963660046132e3565b610d64565b6103736103a93660046132e3565b610dae565b6102ed6103bc36600461330f565b60076020526000908152604090205481565b6102ed60055481565b610373610e0c565b6103736103ed3660046132ca565b610e7b565b6104896104003660046132ca565b60408051608080820183526000808352602080840182905283850182905260609384018290529481526009855283902083519182018452805482526001015467ffffffffffffffff808216958301959095526801000000000000000081048516938201939093527001000000000000000000000000000000009092049092169181019190915290565b6040516102d1919060006080820190508251825267ffffffffffffffff602084015116602083015267ffffffffffffffff604084015116604083015267ffffffffffffffff606084015116606083015292915050565b6000546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166102c5565b6102ed61055c36600461332a565b610f1f565b6102ed7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb9748981565b6102ed610596366004613356565b61135c565b6102ed60035481565b6105b76105b236600461330f565b611369565b6040516102d19190613378565b6103736115c2565b6102c56105da3660046132e3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61037361063f366004613409565b6115f4565b6102ed7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d81565b6102ed610679366004613356565b611628565b6001546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6102ed600081565b6106b96106b436600461343e565b611a52565b6040516102d191906134d9565b6102ed6106d4366004613356565b611b3a565b6103736106e7366004613595565b611ff0565b6102ed60025481565b6006546102c59060ff1681565b6103736107103660046132e3565b6122d9565b6102ed7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102ed62ed4e0081565b6103736107543660046132ca565b61231d565b6102ed60045481565b61037361237c565b6102ed7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610837848484612405565b90505b9392505050565b61084961275c565b6108516127ba565b6000818152600960205260409020600181015468010000000000000000900467ffffffffffffffff164210156108b3576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561090d576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610926908361283b565b610964576040517fcda6dd47000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6005546109719042613607565b6001820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff938416810291909117918290558354604080518781526020810192909252919092049092169181019190915233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a250610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b610a446127ba565b60065460ff16610a757fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1690565b8015610a7f575080155b15610ab6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff8082169383019390935268010000000000000000810483169382019390935270010000000000000000000000000000000090920416606082015281610b8157806060015167ffffffffffffffff16421080610b4a5750606081015167ffffffffffffffff16155b15610b81576040517f6f75487700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610b9a9084612879565b610bd3576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b600083815260096020908152604080832083815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055835133845260079092528220805491929091610c2d90849061361a565b9091555050805160038054600090610c4690849061361a565b90915550506001546040517f42966c680000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b50508251600054610cf6935073ffffffffffffffffffffffffffffffffffffffff1691503390612885565b805160405133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56891610d3191878252602082015260400190565b60405180910390a25050610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d9e81612906565b610da88383612910565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610dfd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e078282612a31565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a610e3681612906565b60065460ff1615610e73576040517f19aad37100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a39612b0f565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d610ea581612906565b62ed4e00821115610ee2576040517f6e49f34f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e0906020015b60405180910390a15050565b6000610f2961275c565b610f316127ba565b60008381526008602052604090205460ff16610f7c576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b6000848152600960205260409020821580610f98575060045483105b80610fa4575080548310155b15610fde576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b336000908152600a60205260409020610ff7908661283b565b611030576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810186905260240161095b565b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561108a576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015468010000000000000000900467ffffffffffffffff164210156110de576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160000160008282546110f2919061361a565b92505081905550600060026000815461110a9061362d565b9182905550336000908152600a6020526040902090915061112b9082612bac565b5060405180608001604052808581526020014267ffffffffffffffff16815260200186426111599190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505083546040513393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92506112d6918a8252602082015260400190565b60405180910390a2337f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28282864261130d8a82613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a338484612405565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604081206060919061139b90612bb8565b90506000815167ffffffffffffffff8111156113b9576113b9613665565b60405190808252806020026020018201604052801561143057816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113d75790505b50905060005b82518110156115ba576040518060a0016040528084838151811061145c5761145c613694565b602002602001015181526020016009600086858151811061147f5761147f613694565b60200260200101518152602001908152602001600020600001548152602001600960008685815181106114b4576114b4613694565b6020026020010151815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061150757611507613694565b6020026020010151815260200190815260200160002060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061155a5761155a613694565b6020026020010151815260200190815260200160002060010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168152508282815181106115a7576115a7613694565b6020908102919091010152600101611436565b509392505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6115ec81612906565b610a39612bc5565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61161e81612906565b610e078383612c3e565b600061163261275c565b61163a6127ba565b6000838152600960205260409020600181015468010000000000000000900467ffffffffffffffff1642101561169c576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff16156116f6576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a6020526040902061170f908561283b565b611748576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810185905260240161095b565b805460009061175890859061361a565b84835560055490915061176b9042613607565b8260010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550806000036117cf576040517f9d4212c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600081546117e09061362d565b9182905550336000908152600a602052604090209091506118019082612bac565b506040805160808101825283815260018581015467ffffffffffffffff8082166020808601918252680100000000000000009384900483168688019081526000606088018181528a825260099093528890209651875591519585018054925191518416700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9285169095027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931696909316959095171793909316179091555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561194257600080fd5b505af1158015611956573d6000803e3d6000fd5b505050506001830154604080518881526020810188905270010000000000000000000000000000000090920467ffffffffffffffff169082015233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a26001830154604080518381526020810185905267ffffffffffffffff808416828401526801000000000000000090930490921660608301525133917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a29250505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040805160008152602081019091526060908267ffffffffffffffff811115611a7d57611a7d613665565b604051908082528060200260200182016040528015611ab057816020015b6060815260200190600190039081611a9b5790505b50915060005b83811015611b3257611b0d30868684818110611ad457611ad4613694565b9050602002810190611ae691906136c3565b85604051602001611af99392919061372f565b604051602081830303815290604052612cae565b838281518110611b1f57611b1f613694565b6020908102919091010152600101611ab6565b505092915050565b6000611b4461275c565b611b4c6127ba565b60008281526008602052604090205460ff16611b97576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b336000908152600a60205260409020611bb09084612879565b611be9576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60008381526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff80821693830193909352680100000000000000008104831693820193909352700100000000000000000000000000000000909204166060820181905215611c89576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015167ffffffffffffffff16421015611cd1576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084815260096020526040812081815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055600280548290611d1a9061362d565b9182905550336000908152600a60205260409020909150611d3b9082612bac565b506040518060800160405280836000015181526020014267ffffffffffffffff1681526020018542611d6d9190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f42966c680000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611e9157600080fd5b505af1158015611ea5573d6000803e3d6000fd5b50506001546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b505060408051888152600060208201523393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92500160405180910390a2815133907f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28290839042611fa18982613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000611ffa612d31565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156120275750825b905060008267ffffffffffffffff1660011480156120445750303b155b905081158015612052575080155b15612089576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156120ea5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff88161580612121575073ffffffffffffffffffffffffffffffffffffffff8716155b80612140575073ffffffffffffffffffffffffffffffffffffffff8616155b15612177576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61217f612d5a565b612187612d62565b61218f612d5a565b612197612d5a565b6121a2600087612910565b506000805473ffffffffffffffffffffffffffffffffffffffff808b167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054928a1692909116919091178155612206906276a70090612c3e565b61221462ed4e006001612c3e565b612223630163f5006001612c3e565b6122326301e133806001612c3e565b62278d0060058190556040519081527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e09060200160405180910390a183156122cf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461231381612906565b610da88383612a31565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61234781612906565b60048290556040518281527f410826cbf76d8edeca70493453f5f17fe0c807683c2aab89a4b2b94f686a21dd90602001610f13565b612384612d72565b7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb974896123ae81612906565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc530b67f06e79967fafaa0f1af1af798443e42526f8a0ff054bd2bd075198cf490600090a150565b600061240f61275c565b6124176127ba565b60008281526008602052604090205460ff16612462576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b821580612470575060045483105b156124aa576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60006002600081546124bb9061362d565b918290555073ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260408120805492935086929091906124fa908490613607565b9250508190555083600360008282546125139190613607565b90915550600090506125258442613607565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090209091506125579083612bac565b506040805160808101825286815267ffffffffffffffff4281166020808401918252858316848601908152600060608601818152898252600990935286902094518555915160019485018054935192518516700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff93861668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516929095169190911792909217169190911790555490517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b50506000546126d1925073ffffffffffffffffffffffffffffffffffffffff169050333088612dcd565b6040805183815260208101879052428183015260608101839052905173ffffffffffffffffffffffffffffffffffffffff8816917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a250905061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127b8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612835576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000818152600183016020526040812054151561083a565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a8383612e13565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610e0791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612efc565b610a398133612fa0565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129c33390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610824565b6000915050610824565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610824565b612b17612d72565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b600061083a838361304b565b6060600061083a8361309a565b612bcd61275c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b81565b60008281526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091558251858152918201527f4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e8019101610f13565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612cd89190613756565b600060405180830381855af49150503d8060008114612d13576040519150601f19603f3d011682016040523d82523d6000602084013e612d18565b606091505b5091509150612d288583836130f6565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610824565b6127b8613185565b612d6a613185565b6127b86131c3565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127b8576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610da89186918216906323b872dd906084016128bf565b60008181526001830160205260408120548015612a27576000612e3760018361361a565b8554909150600090612e4b9060019061361a565b9050808214612eb0576000866000018281548110612e6b57612e6b613694565b9060005260206000200154905080876000018481548110612e8e57612e8e613694565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ec157612ec1613772565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610824565b600080602060008451602086016000885af180612f1f576040513d6000823e3d81fd5b50506000513d91508115612f37578060011415612f51565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610da8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16613047576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161095b565b5050565b600081815260018301602052604081205461309257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610824565b506000610824565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ea57602002820191906000526020600020905b8154815260200190600101908083116130d6575b50505050509050919050565b60608261310b57613106826131cb565b61083a565b815115801561312f575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561317e576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b508061083a565b61318d61320d565b6127b8576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612853613185565b8051156131db5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613217612d31565b5468010000000000000000900460ff16919050565b60006020828403121561323e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461083a57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461329257600080fd5b919050565b6000806000606084860312156132ac57600080fd5b6132b58461326e565b95602085013595506040909401359392505050565b6000602082840312156132dc57600080fd5b5035919050565b600080604083850312156132f657600080fd5b823591506133066020840161326e565b90509250929050565b60006020828403121561332157600080fd5b61083a8261326e565b60008060006060848603121561333f57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561336957600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156133fe578351805184526020810151602085015267ffffffffffffffff604082015116604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff60808201511660808501525060a083019250602084019350600181019050613392565b509095945050505050565b6000806040838503121561341c57600080fd5b823591506020830135801515811461343357600080fd5b809150509250929050565b6000806020838503121561345157600080fd5b823567ffffffffffffffff81111561346857600080fd5b8301601f8101851361347957600080fd5b803567ffffffffffffffff81111561349057600080fd5b8560208260051b84010111156134a557600080fd5b6020919091019590945092505050565b60005b838110156134d05781810151838201526020016134b8565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613589577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180518087526135488160208901602085016134b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101613501565b50929695505050505050565b6000806000606084860312156135aa57600080fd5b6135b38461326e565b92506135c16020850161326e565b91506135cf6040850161326e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610824576108246135d8565b81810381811115610824576108246135d8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361365e5761365e6135d8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136f857600080fd5b83018035915067ffffffffffffffff82111561371357600080fd5b60200191503681900382131561372857600080fd5b9250929050565b82848237600083820160008152835161374c8183602088016134b5565b0195945050505050565b600082516137688184602087016134b5565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122049cea8e2efc1a2573d70a9ac45ffe0e8f50c0fdc6ecefbb9b8665f7635a4004364736f6c634300081e0033","r":"0x2848916e1c46c48f05477e1eccccf6aa5c38e7b39060a3c093866110854b0699","s":"0x17a63914b9689e68c89ae09adb89aeb83a7acad59957bf5f6cb3cec0b5c8b2ca","yParity":"0x0","v":"0x0","hash":"0x8719d8d5e6d032eab8adbe2b7481f746548c04121d390f65fe94c9becfbf7885"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x86f82f17606f02f04bdad632272be9110e6bae27e37101f67c22c45e4186ab6d","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xac1afd64902cc7d0970a646e3f66cc7bb901963cff1cd2f020d1eeb9c2d09a79","transactionsRoot":"0x67e559e984b6117be89a34f8b983d152f221d254a3d570ad02bc144cbcca605b","receiptsRoot":"0x2f9755d030eef36f4298ca02a9b33244041183da17cb37218405ebec89885192","logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000000001000000000000000000000000000200000000000000000000000002000000100002000000000000000000000000000000000000000000000000400000000000000000000000000","difficulty":"0x0","number":"0x16","gasLimit":"0x1c9c380","gasUsed":"0xdbe3","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x136d1872e65d3682f50844f96cfc94da8cb5a20c458938fbc820435c6bf1e717","nonce":"0x0000000000000000","baseFeePerGas":"0x41554b4","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x15","gas":"0xdd90","maxFeePerGas":"0x52aff33","maxPriorityFeePerGas":"0x13d299d","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","value":"0x0","accessList":[],"input":"0x2f2ff15d65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xc6ca0e87dd580aed98f8d960953c3e2df3df139290c565fe731922304e4e7c32","s":"0x4c228eb05740d81e032bbf1cac1986a7569fda6f75ee363cd47cadb1dc2c5904","yParity":"0x0","v":"0x0","hash":"0x94be7579f7126668eaf90dc02177d2833f920f80f595d6957b1bc631124aa397"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xeb84d27c3fe0d0bd5aa94f512291513cd48744ed4c4f993f3b15ce523be5bd6a","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xfd37751d063619955093a49c39de40e116cd49f9fa72c0684dc95827a1ed7d50","transactionsRoot":"0xfa3c46e3f0b0e2966a40232f092c3e8e68d3ff303720bccfd59cf600db654120","receiptsRoot":"0x8c08173c5437098865a4318f79fadcc5de05bcba41c75a919429e76ac76a6d68","logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000200000000000000000000000002000000100000200000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1f","gasLimit":"0x1c9c380","gasUsed":"0x35aaf8","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x3067a05f01692aa0a2e40e9deb28bf7a49c1d6fc8ed543301e5e4352dd351176","nonce":"0x0000000000000000","baseFeePerGas":"0x1535a7e","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x1e","gas":"0x35aaf8","maxFeePerGas":"0x1ad7e87","maxPriorityFeePerGas":"0x66f8f4","to":null,"value":"0x0","accessList":[],"input":"0x60a060405234801561001057600080fd5b5060405161001d90610190565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610051600033610057565b5061019d565b600080610064848461008f565b905080156100865760008481526001602052604090206100849084610139565b505b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610131576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100e93390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610089565b506000610089565b6000610086836001600160a01b038416600081815260018301602052604081205461013157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610089565b612b55806112c883390190565b6080516111096101bf600039600081816102ab015261041d01526111096000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80639010d07c11610097578063a3246ad311610066578063a3246ad314610286578063b09e1b1f146102a6578063ca15c873146102cd578063d547741f146102e057600080fd5b80639010d07c1461021f57806391d1485414610232578063946ccd5f14610276578063a217fddf1461027e57600080fd5b80632f2ff15d116100d35780632f2ff15d1461018b57806336568abe146101a057806350b492ba146101b357806360166fe3146101e957600080fd5b806301ffc9a7146100fa57806315fb764014610122578063248a9ca31461015a575b600080fd5b61010d610108366004610d71565b6102f3565b60405190151581526020015b60405180910390f35b610135610130366004610db3565b61034f565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61017d610168366004610def565b60009081526020819052604090206001015490565b604051908152602001610119565b61019e610199366004610e31565b61061e565b005b61019e6101ae366004610e31565b610649565b6101356101c1366004610def565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101356101f7366004610def565b60009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61013561022d366004610e5d565b6106a7565b61010d610240366004610e31565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b60025461017d565b61017d600081565b610299610294366004610def565b6106c6565b6040516101199190610e7f565b6101357f000000000000000000000000000000000000000000000000000000000000000081565b61017d6102db366004610def565b6106e0565b61019e6102ee366004610e31565b6106f7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061034957506103498261071c565b92915050565b60008061035f6020840184610ed8565b73ffffffffffffffffffffffffffffffffffffffff1614806103a65750600061038e60c0840160a08501610ed8565b73ffffffffffffffffffffffffffffffffffffffff16145b156103dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820135610418576040517f9dd854d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104417f00000000000000000000000000000000000000000000000000000000000000006107b3565b905073ffffffffffffffffffffffffffffffffffffffff81166389fcf3bd61046c6020850185610ed8565b61047c6040860160208701610ed8565b61048c6060870160408801610ed8565b606087013560808801356104a660c08a0160a08b01610ed8565b6104b660e08b0160c08c01610ed8565b6104c360e08c018c610ef3565b6040518a63ffffffff1660e01b81526004016104e799989796959493929190610f62565b600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b50506002805492509050600061052a8361102a565b9091555050600254600090815260036020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905561058d90830183610ed8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166002547fe2af5a9302169fb2b16d64ea3273f80104a5a67c94475b4c699ec467d9d2ec6f8560a00160208101906105f19190610ed8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a4919050565b600082815260208190526040902060010154610639816107c0565b61064383836107cd565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610698576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106a28282610802565b505050565b60008281526001602052604081206106bf908361082f565b9392505050565b60008181526001602052604090206060906103499061083b565b600081815260016020526040812061034990610848565b600082815260208190526040902060010154610712816107c0565b6106438383610802565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061034957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610349565b6000610349826000610852565b6107ca813361092c565b50565b6000806107da84846109b6565b905080156106bf5760008481526001602052604090206107fa9084610ab2565b509392505050565b60008061080f8484610ad4565b905080156106bf5760008481526001602052604090206107fa9084610b8f565b60006106bf8383610bb1565b606060006106bf83610bdb565b6000610349825490565b60008147101561089c576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018390526044015b60405180910390fd5b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff8116610349576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109b2576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610893565b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610a483390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610349565b506000610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c37565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c7e565b6000826000018281548110610bc857610bc8611062565b9060005260206000200154905092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015610c2b57602002820191906000526020600020905b815481526020019060010190808311610c17575b50505050509050919050565b6000818152600183016020526040812054610aaa57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610349565b60008181526001830160205260408120548015610d67576000610ca2600183611091565b8554909150600090610cb690600190611091565b9050808214610d1b576000866000018281548110610cd657610cd6611062565b9060005260206000200154905080876000018481548110610cf957610cf9611062565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610d2c57610d2c6110a4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610349565b6000915050610349565b600060208284031215610d8357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bf57600080fd5b600060208284031215610dc557600080fd5b813567ffffffffffffffff811115610ddc57600080fd5b820161010081850312156106bf57600080fd5b600060208284031215610e0157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2c57600080fd5b919050565b60008060408385031215610e4457600080fd5b82359150610e5460208401610e08565b90509250929050565b60008060408385031215610e7057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015610ecd57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e99565b509095945050505050565b600060208284031215610eea57600080fd5b6106bf82610e08565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610f2857600080fd5b83018035915067ffffffffffffffff821115610f4357600080fd5b6020019150600681901b3603821315610f5b57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8a8116825289811660208301528881166040830152606082018890526080820187905285811660a0830152841660c082015261010060e0820181905281018290526000836101208301825b85811015610fea57823582526020808401359083015260409283019290910190600101610fc2565b509c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361105b5761105b610ffb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561034957610349610ffb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220499971a6beedabcbe4a23ff1222fc9b85ea4ab7b4a69cdf2ceb7ce64ca8e131064736f6c634300081e00336080604052348015600f57600080fd5b506001600355612b31806100246000396000f3fe6080604052600436106102535760003560e01c80639dd373b911610138578063cbeb88f6116100b0578063e63ab1e91161007f578063ee99205c11610064578063ee99205c14610722578063f58280d21461074f578063fb1bb9de1461076f57600080fd5b8063e63ab1e9146106ba578063e7705db6146106ee57600080fd5b8063cbeb88f614610627578063d32780d814610657578063d547741f1461066d578063e5a6b10f1461068d57600080fd5b8063a39f3f9d11610107578063b3cd4254116100ec578063b3cd4254146105d1578063c40ab4e1146105e7578063ca15c8731461060757600080fd5b8063a39f3f9d1461059b578063b391c738146105b157600080fd5b80639dd373b9146105195780639f862c5d14610539578063a217fddf14610559578063a3246ad31461056e57600080fd5b80633f4ba83a116101cb5780636b3b1c0f1161019a57806389fcf3bd1161017f57806389fcf3bd146104635780639010d07c1461048357806391d14854146104c857600080fd5b80636b3b1c0f146104215780638456cb591461044e57600080fd5b80633f4ba83a146103ba578063479ae9e3146103cf5780635c975abb146103e95780635e8822fa1461040157600080fd5b80632ac96e2a116102225780633150992e116102075780633150992e146103545780633248d3c91461036a57806336568abe1461039a57600080fd5b80632ac96e2a146103215780632f2ff15d1461033457600080fd5b806301ffc9a71461025f57806305e75bcb146102945780631eb01a70146102b6578063248a9ca3146102f157600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027f61027a366004612596565b6107a3565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102b46102af3660046125d8565b6107ff565b005b3480156102c257600080fd5b506102e36102d136600461261a565b600e6020526000908152604090205481565b60405190815260200161028b565b3480156102fd57600080fd5b506102e361030c3660046125d8565b60009081526020819052604090206001015490565b6102b461032f36600461268f565b610847565b34801561034057600080fd5b506102b461034f36600461276b565b610f60565b34801561036057600080fd5b506102e360055481565b34801561037657600080fd5b5061027f6103853660046125d8565b600c6020526000908152604090205460ff1681565b3480156103a657600080fd5b506102b46103b536600461276b565b610f8b565b3480156103c657600080fd5b506102b4610fe9565b3480156103db57600080fd5b50600a5461027f9060ff1681565b3480156103f557600080fd5b5060025460ff1661027f565b34801561040d57600080fd5b506102b461041c3660046127a5565b61101e565b34801561042d57600080fd5b506102e361043c3660046125d8565b600b6020526000908152604090205481565b34801561045a57600080fd5b506102b46110b4565b34801561046f57600080fd5b506102b461047e3660046127de565b6110e6565b34801561048f57600080fd5b506104a361049e3660046128bd565b61147d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028b565b3480156104d457600080fd5b5061027f6104e336600461276b565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561052557600080fd5b506102b461053436600461261a565b61149c565b34801561054557600080fd5b506102b46105543660046125d8565b61151a565b34801561056557600080fd5b506102e3600081565b34801561057a57600080fd5b5061058e6105893660046125d8565b61155a565b60405161028b91906128df565b3480156105a757600080fd5b506102e360085481565b3480156105bd57600080fd5b506102b46105cc3660046125d8565b611574565b3480156105dd57600080fd5b506102e361271081565b3480156105f357600080fd5b506102b4610602366004612938565b6115b4565b34801561061357600080fd5b506102e36106223660046125d8565b611708565b34801561063357600080fd5b5061027f6106423660046125d8565b600d6020526000908152604090205460ff1681565b34801561066357600080fd5b506102e360095481565b34801561067957600080fd5b506102b461068836600461276b565b61171f565b34801561069957600080fd5b506006546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c657600080fd5b506102e37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156106fa57600080fd5b506102e37f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0981565b34801561072e57600080fd5b506007546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075b57600080fd5b506102b461076a366004612974565b611744565b34801561077b57600080fd5b506102e37f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107f957506107f9826117df565b92915050565b600061080a81611876565b60088290556040518281527f0b2358c6423981418f7b3a3dcc05bed6b15708c9ec309197a63de3722ca75198906020015b60405180910390a15050565b61084f611880565b6108576118c3565b73ffffffffffffffffffffffffffffffffffffffff86166108a4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036108de576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015906108fc57506000838152600c602052604090205460ff16155b15610933576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8215801590610958575060075473ffffffffffffffffffffffffffffffffffffffff16155b1561098f576040517f970b74e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460ff16156109e35760008190036109d5576040517f229bfb1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109e3868686868686611902565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b166020820152603481018690527fff0000000000000000000000000000000000000000000000000000000000000060f886901b166054820152600090605501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600d90935291205490915060ff1615610acb576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8916602082015290810187905260ff86166060820152600090608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610b948a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506005549150849050611a9e565b610bca576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009548710158015610bde57506000600854115b15610c1e576008543414610c1e576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055868515610c98576000868152600b602052604081205490612710610c79838c6129c0565b610c8391906129d7565b9050610c8f818b612a12565b92505050610cf4565b60008052600b6020527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76548015610cf2576000612710610cd8838c6129c0565b610ce291906129d7565b9050610cee818b612a12565b9250505b505b73ffffffffffffffffffffffffffffffffffffffff89166000908152600e602052604081208054839290610d29908490612a25565b90915550508515610eca576006546007546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190612a38565b506007546040517f0c51b88f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018490526044820189905290911690630c51b88f906064016020604051808303816000875af1925050508015610e8e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e8b91810190612a55565b60015b610ec4576040517fa437293700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610eee565b600654610eee9073ffffffffffffffffffffffffffffffffffffffff168a83611ab4565b604080518981526020810183905260ff891681830152905173ffffffffffffffffffffffffffffffffffffffff8b16917ffba955b7124801955d5218289768d39688a6c2af7c54181f5bf3b0b0e7a4aa89919081900360600190a2505050610f566001600355565b5050505050505050565b600082815260208190526040902060010154610f7b81611876565b610f858383611b41565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610fda576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fe48282611b76565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61101381611876565b61101b611ba3565b50565b600061102981611876565b6000848152600b60209081526040808320869055600c82529182902080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915582518781529182018690528183015290517fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca79181900360600190a150505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110de81611876565b61101b611c20565b60045460ff1615611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff891615806111ba575073ffffffffffffffffffffffffffffffffffffffff8416155b156111f1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc60008a611b41565b5073ffffffffffffffffffffffffffffffffffffffff881615611270576112437f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b41565b5061126e7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a89611b41565b505b73ffffffffffffffffffffffffffffffffffffffff8716156112e3576112b67f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0988611b41565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600886905560058590556006805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600780549286169290911691909117905560005b8181101561141e57600083838381811061136157611361612a6e565b905060400201600001359050600084848481811061138157611381612a6e565b6000858152600b602090815260408083209381029590950181013592839055600c815290849020805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915584518781529182018390528185015292519093507fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7928190036060019150a15050600101611345565b5050600080525050600c60205250507f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050565b60008281526001602052604081206114959083611c7b565b9392505050565b60006114a781611876565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f6397f5b135542bb3f477cb346cfab5abdec1251d08dc8f8d4efb4ffe122ea0bf9060200161083b565b600061152581611876565b60098290556040518281527f0bdc5b50951daf28f83d3ccb05f68a48458a346738f725758d690acb72e5eba19060200161083b565b60008181526001602052604090206060906107f990611c87565b600061157f81611876565b60058290556040518281527f90004c04698bc3322499a575ed3752dd4abf33e0a7294c06a787a0fe01bea9419060200161083b565b60006115bf81611876565b73ffffffffffffffffffffffffffffffffffffffff841661160c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611646576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116865761168173ffffffffffffffffffffffffffffffffffffffff851684611c94565b6116a7565b6116a773ffffffffffffffffffffffffffffffffffffffff83168585611ab4565b8173ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff167f3c29f706dd8ad89f52baa05197bc9e1ab54a532923f8890b4c610641423f186060405160405180910390a450505050565b60008181526001602052604081206107f990611d4a565b60008281526020819052604090206001015461173a81611876565b610f858383611b76565b600061174f81611876565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683158015919091179091556117b1576040517f927afc1823834346e83b933a68384b62ba45245d11961d6c8b76a3553a93482490600090a15050565b6040517f7a3b4c944febd2c899d89daed15db8d2e0903a535f27b1c5f0ea8f3fd3e137da90600090a15b5050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107f9565b61101b8133611d54565b6002600354036118bc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615611900576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088811b82166020840152603483018890527fff0000000000000000000000000000000000000000000000000000000000000060f888901b1660548401526055830186905230901b16607582015260009060890160405160208183030381529060405280519060200120905060006119cc827f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b90506000611a1285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611dda9050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef81602052604090205490915060ff16611a93576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050565b600082611aab8584611e04565b14949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610fe4908490611e3f565b600080611b4e8484611ee3565b90508015611495576000848152600160205260409020611b6e9084611fdf565b509392505050565b600080611b838484612001565b90508015611495576000848152600160205260409020611b6e90846120bc565b611bab6120de565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611c286118c3565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bf63390565b6000611495838361211a565b6060600061149583612144565b80471015611cd7576040517fcf4791810000000000000000000000000000000000000000000000000000000081524760048201526024810182905260440161114f565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d32576040519150601f19603f3d011682016040523d82523d6000602084013e611d37565b606091505b509150915081610f8557610f85816121a0565b60006107f9825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166117db576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161114f565b600080600080611dea86866121e2565b925092509250611dfa828261222f565b5090949350505050565b600081815b8451811015611b6e57611e3582868381518110611e2857611e28612a6e565b6020026020010151612333565b9150600101611e09565b600080602060008451602086016000885af180611e62576040513d6000823e3d81fd5b50506000513d91508115611e7a578060011415611e94565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610f85576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161114f565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f753390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016107f9565b5060006107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff8416612362565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff84166123a9565b60025460ff16611900576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061213157612131612a6e565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561219457602002820191906000526020600020905b815481526020019060010190808311612180575b50505050509050919050565b8051156121b05780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000835160410361221c5760208401516040850151606086015160001a61220e8882858561249c565b955095509550505050612228565b50508151600091506002905b9250925092565b600082600381111561224357612243612a9d565b0361224c575050565b600182600381111561226057612260612a9d565b03612297576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156122ab576122ab612a9d565b036122e5576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b60038260038111156122f9576122f9612a9d565b036117db576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b600081831061234f576000828152602084905260409020611495565b6000838152602083905260409020611495565b6000818152600183016020526040812054611fd7575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f9565b600081815260018301602052604081205480156124925760006123cd600183612a12565b85549091506000906123e190600190612a12565b905080821461244657600086600001828154811061240157612401612a6e565b906000526020600020015490508087600001848154811061242457612424612a6e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061245757612457612acc565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f9565b60009150506107f9565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156124d7575060009150600390508261258c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561252b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166125825750600092506001915082905061258c565b9250600091508190505b9450945094915050565b6000602082840312156125a857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461149557600080fd5b6000602082840312156125ea57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461261557600080fd5b919050565b60006020828403121561262c57600080fd5b611495826125f1565b803560ff8116811461261557600080fd5b60008083601f84011261265857600080fd5b50813567ffffffffffffffff81111561267057600080fd5b60208301915083602082850101111561268857600080fd5b9250929050565b60008060008060008060008060c0898b0312156126ab57600080fd5b883567ffffffffffffffff8111156126c257600080fd5b8901601f81018b136126d357600080fd5b803567ffffffffffffffff8111156126ea57600080fd5b8b60208260051b84010111156126ff57600080fd5b602091820199509750612713908a016125f1565b95506040890135945061272860608a01612635565b93506080890135925060a089013567ffffffffffffffff81111561274b57600080fd5b6127578b828c01612646565b999c989b5096995094979396929594505050565b6000806040838503121561277e57600080fd5b8235915061278e602084016125f1565b90509250929050565b801515811461101b57600080fd5b6000806000606084860312156127ba57600080fd5b833592506020840135915060408401356127d381612797565b809150509250925092565b60008060008060008060008060006101008a8c0312156127fd57600080fd5b6128068a6125f1565b985061281460208b016125f1565b975061282260408b016125f1565b965060608a0135955060808a0135945061283e60a08b016125f1565b935061284c60c08b016125f1565b925060e08a013567ffffffffffffffff81111561286857600080fd5b8a01601f81018c1361287957600080fd5b803567ffffffffffffffff81111561289057600080fd5b8c60208260061b84010111156128a557600080fd5b60208201935080925050509295985092959850929598565b600080604083850312156128d057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b8181101561292d57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016128f9565b509095945050505050565b60008060006060848603121561294d57600080fd5b612956846125f1565b92506020840135915061296b604085016125f1565b90509250925092565b60006020828403121561298657600080fd5b813561149581612797565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107f9576107f9612991565b600082612a0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107f9576107f9612991565b808201808211156107f9576107f9612991565b600060208284031215612a4a57600080fd5b815161149581612797565b600060208284031215612a6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ac1af95c8b44d1d43ee08d68e86100483a6d8c9f9055caabc136f543254701df64736f6c634300081e0033","r":"0xe533a6b26b31c60e6aa66a226af8c7d94d8cf3b85d2899ae6c64ca5ca825455f","s":"0xf447a670fffdf84078ef617d46c02816ac0fae6ea4fd1e938bd66ff29947e27","yParity":"0x1","v":"0x1","hash":"0xc8e025e303f1d56b5862f79a3abc2043b860c8de2f246a1bb7208e66b8f7c150"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x48935fef1396858aea8895103b5a9bad803ca32c9aa0d20d7f5d2caf27941ab0","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x4b20879c1e4d709557990ec4f76158a3b5edf95e028c3fa589df5a1ce6f68991","transactionsRoot":"0x817ddafc74546fc41bac2cfee578c1acf5bd1e4402ff2fca4515f6a2d43a57cb","receiptsRoot":"0xd260cb2fa64e6dffc3cb431017983993a5620346760d9c0cd6736c6253676aa7","logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000200000000000000000000000002000000100000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1c","gasLimit":"0x1c9c380","gasUsed":"0x1b6ffc","timestamp":"0x695e8833","extraData":"0x","mixHash":"0xd1ab99986635c08db49a2ead5195b5477bd205364147c5db314627882527fc91","nonce":"0x0000000000000000","baseFeePerGas":"0x1d7d9c2","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x1b","gas":"0x1b6ffc","maxFeePerGas":"0x2552f99","maxPriorityFeePerGas":"0x8f128f","to":null,"value":"0x0","accessList":[],"input":"0x60806040526201518060055534801561001757600080fd5b50600160035561002860003361002e565b50610167565b60008061003b8484610066565b9050801561005d57600084815260016020526040902061005b9084610110565b505b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610108576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100c03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610060565b506000610060565b600061005d836001600160a01b038416600081815260018301602052604081205461010857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610060565b611d29806101766000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80638a2ddd03116100e3578063b1ee828c1161008c578063d547741f11610066578063d547741f14610400578063e8ff793614610413578063fdea36571461042657600080fd5b8063b1ee828c1461037c578063b228c1c4146103da578063ca15c873146103ed57600080fd5b8063a217fddf116100bd578063a217fddf1461034c578063a3246ad314610354578063b187bd261461037457600080fd5b80638a2ddd03146102ed5780639010d07c146102f557806391d148541461030857600080fd5b8063595c6a67116101455780635c975abb1161011f5780635c975abb146102a45780637ba191b9146102af57806382eb1152146102c257600080fd5b8063595c6a671461027657806359c9eb901461027e5780635bb478081461029157600080fd5b80632f2ff15d116101765780632f2ff15d1461023b57806336568abe1461025057806355dff0e31461026357600080fd5b806301ffc9a71461019d578063222e9e82146101c5578063248a9ca31461020a575b600080fd5b6101b06101ab3660046114cc565b61042f565b60405190151581526020015b60405180910390f35b6004546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b61022d61021836600461150e565b60009081526020819052604090206001015490565b6040519081526020016101bc565b61024e610249366004611550565b61048b565b005b61024e61025e366004611550565b6104b6565b61024e61027136600461157c565b610514565b61024e6105e4565b61024e61028c36600461150e565b6105fa565b61024e61029f3660046115a6565b61067c565b60025460ff166101b0565b61024e6102bd3660046115c1565b61076c565b61022d6102d0366004611638565b600660209081526000928352604080842090915290825290205481565b61024e610a53565b6101e5610303366004611662565b610a66565b6101b0610316366004611550565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61022d600081565b61036761036236600461150e565b610a85565b6040516101bc9190611684565b6101b0610a9f565b6103bf61038a3660046115a6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600760205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016101bc565b61024e6103e83660046117cb565b610ab2565b61022d6103fb36600461150e565b610ca5565b61024e61040e366004611550565b610cbc565b61024e61042136600461157c565b610ce1565b61022d60055481565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610485575061048582610dcb565b92915050565b6000828152602081905260409020600101546104a681610e62565b6104b08383610e6c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610505576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050f8282610ea1565b505050565b600061051f81610e62565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040812054900361057d576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526007602052604090819020849055517f3a22865564a15e1d9be087fd90192483ce3d3e86d8784aba2dafd45f85221283906105d79085815260200190565b60405180910390a2505050565b60006105ef81610e62565b6105f7610ece565b50565b600061060581610e62565b6005548203610640576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527fcb7ee917d029d22a071ecb2b3db0556ca49424002997ae83d8a4fff552ef72f69060200160405180910390a15050565b600061068781610e62565b73ffffffffffffffffffffffffffffffffffffffff82166106d4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045473ffffffffffffffffffffffffffffffffffffffff1615610724576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610774610f53565b61077c610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064015b60405180910390fd5b3360005b82811015610a43573684848381811061081f5761081f6119cc565b905060200281019061083191906119fb565b9050600060078161084860408501602086016115a6565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080549091501561090a57600554816002015461088a9190611a68565b421061089e57600060018201554260028201555b805460018201546108b490604085013590611a68565b11156108ec576040517f7329a9df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81604001358160010160008282546109049190611a68565b90915550505b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084602001602081019061095f91906115a6565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002091909155610996908301836115a6565b73ffffffffffffffffffffffffffffffffffffffff1663dc63f6ae6109c160408501602086016115a6565b8660408601356109d46060880188611a7b565b6109e160808a018a611a7b565b6040518863ffffffff1660e01b8152600401610a039796959493929190611b35565b600060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b50506001909401935061080492505050565b5050610a4f6001600355565b5050565b6000610a5e81610e62565b6105f7610fd5565b6000828152600160205260408120610a7e908361102c565b9392505050565b600081815260016020526040902060609061048590611038565b6000610aad60025460ff1690565b905090565b610aba610f53565b610ac2610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064016107f7565b60045473ffffffffffffffffffffffffffffffffffffffff16635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190611ba8565b5060005b8251811015610c9a576000838281518110610c0e57610c0e6119cc565b60200260200101519050806000015173ffffffffffffffffffffffffffffffffffffffff1663564cd00b8260200151856040518363ffffffff1660e01b8152600401610c5b929190611bca565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505060019093019250610bf1915050565b50610a4f6001600355565b600081815260016020526040812061048590611045565b600082815260208190526040902060010154610cd781610e62565b6104b08383610ea1565b6000610cec81610e62565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205415610d49576040517fdd6f914400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606081018252838152600060208083018281524284860190815273ffffffffffffffffffffffffffffffffffffffff8916808552600784529386902094518555905160018501555160029093019290925591518481527f5cd914c3e9450bdc97363f4edb9c4e5abcd1ef53b7a14e0c6c6aea850975758391016105d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061048557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610485565b6105f7813361104f565b600080610e7984846110d5565b90508015610a7e576000848152600160205260409020610e9990846111d1565b509392505050565b600080610eae84846111f3565b90508015610a7e576000848152600160205260409020610e9990846112ae565b610ed6610f96565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f293390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600260035403610f8f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615610fd3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610fdd6112d0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610f29565b6000610a7e838361130c565b60606000610a7e83611336565b6000610485825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016107f7565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556111673390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610485565b506000610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff8416611392565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff84166113d9565b60025460ff16610fd3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826000018281548110611323576113236119cc565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561138657602002820191906000526020600020905b815481526020019060010190808311611372575b50505050509050919050565b60008181526001830160205260408120546111c957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610485565b600081815260018301602052604081205480156114c25760006113fd600183611cb1565b855490915060009061141190600190611cb1565b9050808214611476576000866000018281548110611431576114316119cc565b9060005260206000200154905080876000018481548110611454576114546119cc565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061148757611487611cc4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610485565b6000915050610485565b6000602082840312156114de57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a7e57600080fd5b60006020828403121561152057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461154b57600080fd5b919050565b6000806040838503121561156357600080fd5b8235915061157360208401611527565b90509250929050565b6000806040838503121561158f57600080fd5b61159883611527565b946020939093013593505050565b6000602082840312156115b857600080fd5b610a7e82611527565b600080602083850312156115d457600080fd5b823567ffffffffffffffff8111156115eb57600080fd5b8301601f810185136115fc57600080fd5b803567ffffffffffffffff81111561161357600080fd5b8560208260051b840101111561162857600080fd5b6020919091019590945092505050565b6000806040838503121561164b57600080fd5b61165483611527565b915061157360208401611527565b6000806040838503121561167557600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156116d257835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161169e565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561172f5761172f6116dd565b60405290565b60405160e0810167ffffffffffffffff8111828210171561172f5761172f6116dd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561179f5761179f6116dd565b604052919050565b600067ffffffffffffffff8211156117c1576117c16116dd565b5060051b60200190565b600080604083850312156117de57600080fd5b823567ffffffffffffffff8111156117f557600080fd5b8301601f8101851361180657600080fd5b8035611819611814826117a7565b611758565b8082825260208201915060208360051b85010192508783111561183b57600080fd5b602084015b838110156119b957803567ffffffffffffffff81111561185f57600080fd5b85016040818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561189357600080fd5b61189b61170c565b6118a760208301611527565b8152604082013567ffffffffffffffff8111156118c357600080fd5b6020818401019250508a601f8301126118db57600080fd5b81356118e9611814826117a7565b80828252602082019150602060e0840286010192508d83111561190b57600080fd5b6020850194505b8285101561199a5760e0858f03121561192a57600080fd5b611932611735565b61193b86611527565b815261194960208701611527565b602082015261195a60408701611527565b6040820152606086810135908201526080808701359082015260a0808701359082015260c08087013590820152825260e090940193602090910190611912565b8060208501525050508085525050602083019250602081019050611840565b5094506115739250505060208401611527565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112611a2f57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561048557610485611a39565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ab057600080fd5b83018035915067ffffffffffffffff821115611acb57600080fd5b6020019150600581901b3603821315611ae357600080fd5b9250929050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611b1c57600080fd5b8260051b80836020870137939093016020019392505050565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015260a060608201526000611b8760a083018688611aea565b8281036080840152611b9a818587611aea565b9a9950505050505050505050565b600060208284031215611bba57600080fd5b81518015158114610a7e57600080fd5b6040808252835190820181905260009060208501906060840190835b81811015611c8a57835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff6040820151166040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501525060e083019250602084019350600181019050611be6565b505073ffffffffffffffffffffffffffffffffffffffff851660208501529150610a7e9050565b8181038181111561048557610485611a39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122036c010d28b40fdfe09bd45eef1f74644b1bcd2f5179d931c1c4a46d8c06cec3d64736f6c634300081e0033","r":"0x61e0b4d4102076f709667c3655aea982816a96025e89660e9389a335848b9947","s":"0x14c178998e2a03601c2db0e14a30f48e2d069c40ef852665ad5efd7ee74c8df7","yParity":"0x1","v":"0x1","hash":"0x251a2783b4c94184ce04176a761ab7cec0c0e6c5a0f90a0eddb4877379f723d2"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2ea2ade84a7b2d0e6dd53d65a81fb66857109a1664abcb4e0b272aa60f297586","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xd0ec6ee088d61604fb5ac38cd00e3988882e9e81f91c16b8ca8bbd51f6acec17","transactionsRoot":"0x0a7063e399239155d8ea8d3c6c4ef24878ed2ca7305a84ee55840026cd679c40","receiptsRoot":"0x3490e9dcba785eeb34ba3af58f783089f545b1fb2af1c749445e6939ed195ac5","logsBloom":"0x00000000000000000000000000000000000000400000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000020000000000000000000000000000000040000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x22","gasLimit":"0x1c9c380","gasUsed":"0xc92e","timestamp":"0x695e8834","extraData":"0x","mixHash":"0xb79eff70c5cdb22ca328535348eab0026bc9ecf562b4e652c1baa51e820d8f63","nonce":"0x0000000000000000","baseFeePerGas":"0xec8bf1","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x21","gas":"0xc92e","maxFeePerGas":"0x12b611d","maxPriorityFeePerGas":"0x47c912","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0xa9059cbb000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c90000000000000000000000000000000000000000000001e7e4171bf4d3a00000","r":"0x202a8235e455a7dad404f96ced596df4dfdc176ede506e2717b607e595b2ec74","s":"0x78b1f5642a73eef83a686ba4bafdf10c379d3acece40f4fb7fb0ee2b1a6aa690","yParity":"0x0","v":"0x0","hash":"0x9699791933123f41bd5440e0d0b7b23d10074431fdb3c7301001c25e7fc743cf"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xf94c866d85361d518a91b672eba67b58532eb15f5f258c98006ab988e2b865f0","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x351c1b8838b9cd20fb6577efb2c8df5055e4c7659b97f6f8a2e2c260c61bdd49","transactionsRoot":"0x6044714280b5dd7c8f715f07ebac3fb6791728c792e481b61ce58698fefbbb1a","receiptsRoot":"0x3b60d40e8ef42bf463482d1110b3634e67e21e11dbd35a37f1ec37a0957ef676","logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x12","gasLimit":"0x1c9c380","gasUsed":"0x2887a7","timestamp":"0x695e8832","extraData":"0x","mixHash":"0x9310e743f712bbe883d6c0dfdf0f3b1ada76ae05a30bcaeab4d103350dbabc8b","nonce":"0x0000000000000000","baseFeePerGas":"0x6b99555","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x11","gas":"0x2887a7","maxFeePerGas":"0x882e0ff","maxPriorityFeePerGas":"0x20a612e","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612ee6806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639010d07c1161010f578063c4707a83116100a2578063e63ab1e911610071578063e63ab1e914610563578063fa5c4e991461058a578063fb1bb9de1461059d578063ff7932c0146105c457600080fd5b8063c4707a8314610503578063c4d66de81461052a578063ca15c8731461053d578063d547741f1461055057600080fd5b8063a3246ad3116100de578063a3246ad31461045f578063a9ab67ee1461047f578063ac9650d814610487578063bbca73b3146104a757600080fd5b80639010d07c1461039757806391d14854146103cf5780639e833d7814610434578063a217fddf1461045757600080fd5b80633f4ba83a116101875780637261fefb116101565780637261fefb146103545780637fc46a44146103675780638456cb591461037a5780638b67cb391461038257600080fd5b80633f4ba83a146102fc5780635c975abb146103045780636382d9ad1461032e5780636773d2541461034157600080fd5b80632f2ff15d116101c35780632f2ff15d1461028d578063354eca0e146102a257806336568abe146102c25780633a21ee4c146102d557600080fd5b806301ffc9a7146101ea5780630f8508d114610212578063248a9ca31461023d575b600080fd5b6101fd6101f8366004612859565b6105d7565b60405190151581526020015b60405180910390f35b6101fd61022036600461289b565b600060208181529281526040808220909352908152205460ff1681565b61027f61024b3660046128bd565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610209565b6102a061029b3660046128ff565b610633565b005b61027f6102b036600461292b565b60016020526000908152604090205481565b6102a06102d03660046128ff565b61067d565b61027f7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f81565b6102a06106db565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101fd565b6102a061033c366004612946565b610710565b6102a061034f3660046128bd565b61097e565b6102a0610362366004612970565b610be5565b61027f6103753660046128bd565b610f45565b6102a0610f52565b61038a610f84565b60405161020991906129e9565b6103aa6103a536600461289b565b610f95565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610209565b6101fd6103dd3660046128ff565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101fd61044236600461292b565b60026020526000908152604090205460ff1681565b61027f600081565b61047261046d3660046128bd565b610fd6565b60405161020991906129fc565b61027f61101a565b61049a610495366004612a55565b611026565b6040516102099190612af0565b6104ba6104b53660046128bd565b61110e565b6040516102099190815173ffffffffffffffffffffffffffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b61027f7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f981565b6102a061053836600461292b565b6111aa565b61027f61054b3660046128bd565b61137e565b6102a061055e3660046128ff565b6113b6565b61027f7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102a0610598366004612bdb565b6113fa565b61027f7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b6102a06105d2366004612cdb565b611826565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061062d575061062d82611c07565b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461066d81611c9e565b6106778383611ca8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106cc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d68282611cff565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61070581611c9e565b61070d611d4d565b50565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f961073a81611c9e565b610742611dea565b61074a611e47565b73ffffffffffffffffffffffffffffffffffffffff8316610797576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107e4576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108759190612d16565b9050806000036108855750610955565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160208181526040808420849055600290915290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556108ec908483611ec8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46272c80ceda248974fbd05f95180058562e15f06de2fed1741e2fcacf2cbc7c8360405161094b91815260200190565b60405180910390a3505b6106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f6109a881611c9e565b6109b0611e47565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff1680610a15576040517fa9ff98da000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b600282015415610a54576040517fa658270100000000000000000000000000000000000000000000000000000000815260048101859052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff1615610acc576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b60018083015473ffffffffffffffffffffffffffffffffffffffff8316600090815260209290925260408220805491928392610b09908490612d5e565b9091555050600085815260056020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810182905560028101829055600390810191909155610b639086611f7b565b508173ffffffffffffffffffffffffffffffffffffffff16857f5f1caff1bc42fe7aa28697b7d5290b1effc56662cda0b7b1bef596cb5de3339383604051610bad91815260200190565b60405180910390a3505050610be160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9610c0f81611c9e565b610c17611dea565b610c1f611e47565b73ffffffffffffffffffffffffffffffffffffffff8416610c6c576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610cb9576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003610cf3576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615610d6b576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090610e309083612d5e565b905080841115610e92576040517f455bb3af00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810182905260448101859052606401610a0c565b610eb373ffffffffffffffffffffffffffffffffffffffff87168686611ec8565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fec4eae2997a9f4fc017c94256dd07879f7b736f35bb153da3a6d9bee4086956886604051610f1291815260200190565b60405180910390a3505061067760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061062d600383611f87565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610f7c81611c9e565b61070d611f93565b6060610f90600361200c565b905090565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610fce9084611f87565b949350505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040909120606091906110139061200c565b9392505050565b6000610f906003612019565b6040805160008152602081019091526060908267ffffffffffffffff81111561105157611051612bac565b60405190808252806020026020018201604052801561108457816020015b606081526020019060019003908161106f5790505b50915060005b83811015611106576110e1308686848181106110a8576110a8612d71565b90506020028101906110ba9190612da0565b856040516020016110cd93929190612e0c565b604051602081830303815290604052612023565b8382815181106110f3576110f3612d71565b602090810291909101015260010161108a565b505092915050565b61114f6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b506000908152600560209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281015492820192909252600390910154606082015290565b60006111b46120a6565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156111e15750825b905060008267ffffffffffffffff1660011480156111fe5750303b155b90508115801561120c575080155b15611243576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112a45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff86166112f1576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f96120cf565b6113016120d7565b6113096120cf565b611314600087611ca8565b5083156113765784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040822061101390612019565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546113f081611c9e565b6106778383611cff565b611402611e47565b61140a6120e7565b81600003611444576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff16806114a4576040517fa9ff98da00000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561151c576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b81600301544210156115705760038201546040517fa13f08b0000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152426044820152606401610a0c565b6040517f726c00000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602282015260368101859052600090605601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600089815280845282812082825290935291205490915060ff161561166f576040517f522cef0d000000000000000000000000000000000000000000000000000000008152600481018790523360248201526044810186905260648101829052608401610a0c565b61167a848783612143565b6116b6578581856040517f1f89537c000000000000000000000000000000000000000000000000000000008152600401610a0c93929190612e33565b848360020160008282546116ca9190612e52565b909155505060018301546002840154111561172b57600283015460018401546040517f88c6d4740000000000000000000000000000000000000000000000000000000081526004810189905260248101929092526044820152606401610a0c565b600086815260208181526040808320848452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915573ffffffffffffffffffffffffffffffffffffffff861684529091528120805487929061179c908490612d5e565b909155506117c3905073ffffffffffffffffffffffffffffffffffffffff83163387611ec8565b604051858152339087907ffe236dfc7ce073698734b89da1aee0e7551c9c6d264404c502e6e8fefc1132a89060200160405180910390a35050506106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f61185081611c9e565b611858611e47565b73ffffffffffffffffffffffffffffffffffffffff84166118a5576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036118df576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615611957576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008581526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16156119b6576040517fb520d61200000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a479190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090611a7c908690612e52565b905080821015611ade576040517ff6508cc900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810183905260448101829052606401610a0c565b73ffffffffffffffffffffffffffffffffffffffff868116600081815260016020818152604080842087905580516080810182529485528482018b8152858201858152606087018c81528f8752600590945291909420945185547fffffffffffffffffffffffff0000000000000000000000000000000000000000169616959095178455915190830155915160028201559051600391820155611b819088612159565b50604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff88169189917f445b0c1846d34293892483b1dbd287a52d37e329a05ba5ea8f03f2b0b866d8d1910160405180910390a35050611c0060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061062d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461062d565b61070d8133612165565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611cd6858561220c565b90508015610fce576000858152602083905260409020611cf6908561232d565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611d2d858561234f565b90508015610fce576000858152602083905260409020611cf6908561242d565b611d55611dea565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611e45576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611ec2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526106d690849061244f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061101383836124f3565b600061101383836125dc565b611f9b6120e7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611dbf565b6060600061101383612606565b600061062d825490565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161204d9190612e65565b600060405180830381855af49150503d8060008114612088576040519150601f19603f3d011682016040523d82523d6000602084013e61208d565b606091505b509150915061209d858383612662565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061062d565b611e456126f1565b6120df6126f1565b611e4561272f565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611e45576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826121508584612737565b14949350505050565b6000611013838361277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610a0c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff166123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122bf3390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061062d565b600091505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff841661277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16156123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff84166124f3565b600080602060008451602086016000885af180612472576040513d6000823e3d81fd5b50506000513d9150811561248a5780600114156124a4565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008181526001830160205260408120548015612323576000612517600183612d5e565b855490915060009061252b90600190612d5e565b905080821461259057600086600001828154811061254b5761254b612d71565b906000526020600020015490508087600001848154811061256e5761256e612d71565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806125a1576125a1612e81565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062d565b60008260000182815481106125f3576125f3612d71565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561265657602002820191906000526020600020905b815481526020019060010190808311612642575b50505050509050919050565b60608261267757612672826127c9565b611013565b815115801561269b575073ffffffffffffffffffffffffffffffffffffffff84163b155b156126ea576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b5080611013565b6126f961280b565b611e45576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f556126f1565b600081815b8451811015612772576127688286838151811061275b5761275b612d71565b602002602001015161282a565b915060010161273c565b509392505050565b60008181526001830160205260408120546127c15750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561062d565b50600061062d565b8051156127d95780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128156120a6565b5468010000000000000000900460ff16919050565b6000818310612846576000828152602084905260409020611013565b6000838152602083905260409020611013565b60006020828403121561286b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461101357600080fd5b600080604083850312156128ae57600080fd5b50508035926020909101359150565b6000602082840312156128cf57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146128fa57600080fd5b919050565b6000806040838503121561291257600080fd5b82359150612922602084016128d6565b90509250929050565b60006020828403121561293d57600080fd5b611013826128d6565b6000806040838503121561295957600080fd5b612962836128d6565b9150612922602084016128d6565b60008060006060848603121561298557600080fd5b61298e846128d6565b925061299c602085016128d6565b929592945050506040919091013590565b600081518084526020840193506020830160005b828110156129df5781518652602095860195909101906001016129c1565b5093949350505050565b60208152600061101360208301846129ad565b602080825282518282018190526000918401906040840190835b81811015612a4a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612a16565b509095945050505050565b60008060208385031215612a6857600080fd5b823567ffffffffffffffff811115612a7f57600080fd5b8301601f81018513612a9057600080fd5b803567ffffffffffffffff811115612aa757600080fd5b8560208260051b8401011115612abc57600080fd5b6020919091019590945092505050565b60005b83811015612ae7578181015183820152602001612acf565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612ba0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051808752612b5f816020890160208501612acc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101612b18565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215612bf057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612c1557600080fd5b8401601f81018613612c2657600080fd5b803567ffffffffffffffff811115612c4057612c40612bac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff82111715612c8b57612c8b612bac565b604052918252602081840181019290810189841115612ca957600080fd5b6020850194505b83851015612ccc57843580825260209586019590935001612cb0565b50809450505050509250925092565b60008060008060808587031215612cf157600080fd5b84359350612d01602086016128d6565b93969395505050506040820135916060013590565b600060208284031215612d2857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561062d5761062d612d2f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612dd557600080fd5b83018035915067ffffffffffffffff821115612df057600080fd5b602001915036819003821315612e0557600080fd5b9250929050565b828482376000838201600081528351612e29818360208801612acc565b0195945050505050565b83815282602082015260606040820152600061209d60608301846129ad565b8082018082111561062d5761062d612d2f565b60008251612e77818460208701612acc565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122039de9a1a777e288153e8b2f1a13b4bf9fce8ca557755d5340f642772d8b7cdc364736f6c634300081e0033","r":"0x398524d23cf6295f09fa4a99ff89a8f9410f8f2bf928e5c640eea3ccbf1f8246","s":"0x23d222336885039fc18fc33069a0512407fba980831f219f95898d8aade84059","yParity":"0x1","v":"0x1","hash":"0xfc99058bf40f5032c95e8cffbc3c113406905c1827823bf443eb1421babf290f"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x143261b8f187d277b62ee65dd99b1f57e50de3764cea99be2f4d274aa7301434","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xbb0f9de033fb13b8f6ee45536e11e0b1c1b7c5a0c2e8a6d04bb06a807b2d3e9e","transactionsRoot":"0xe8f7a2c43677d1299ea3e8b08b147d5705eaf576b5320afcae9e3204d46af659","receiptsRoot":"0xf8b5f98136bbacd5c0b3dd3b778e1de67be84966bd46e27a6561201e90b0d8aa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0xa1357","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x0d2921bccd4e21343d69e9dfaa411e264f7f11c6315887be77a25d15c889f365","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x0","gas":"0xa1357","maxFeePerGas":"0x4b6fe7a8","maxPriorityFeePerGas":"0x3b9aca00","to":null,"value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5060408051808201825260098082526845524332304d6f636b60b81b60208084018290528451808601909552918452908301529060036100508382610104565b50600461005d8282610104565b5050506101c2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061008f57607f821691505b6020821081036100af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156100ff57806000526020600020601f840160051c810160208510156100dc5750805b601f840160051c820191505b818110156100fc57600081556001016100e8565b50505b505050565b81516001600160401b0381111561011d5761011d610065565b6101318161012b845461007b565b846100b5565b6020601f821160018114610165576000831561014d5750848201515b600019600385901b1c1916600184901b1784556100fc565b600084815260208120601f198516915b828110156101955787850151825560209485019460019092019101610175565b50848210156101b35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610a18806101d16000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806340c10f1911610081578063a0712d681161005b578063a0712d6814610196578063a9059cbb146101a9578063dd62ed3e146101bc57600080fd5b806340c10f191461014357806370a082311461015857806395d89b411461018e57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610202565b6040516100e391906107eb565b60405180910390f35b6100ff6100fa366004610880565b610294565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046108aa565b6102ae565b604051601281526020016100e3565b610156610151366004610880565b6102d2565b005b6101136101663660046108e7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66102e0565b6101566101a4366004610909565b6102ef565b6100ff6101b7366004610880565b6102fc565b6101136101ca366004610922565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461021190610955565b80601f016020809104026020016040519081016040528092919081815260200182805461023d90610955565b801561028a5780601f1061025f5761010080835404028352916020019161028a565b820191906000526020600020905b81548152906001019060200180831161026d57829003601f168201915b5050505050905090565b6000336102a281858561030a565b60019150505b92915050565b6000336102bc85828561031c565b6102c78585856103f1565b506001949350505050565b6102dc828261049c565b5050565b60606004805461021190610955565b6102f9338261049c565b50565b6000336102a28185856103f1565b61031783838360016104f8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156103eb57818110156103dc576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103eb848484840360006104f8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610441576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8216610491576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b610317838383610640565b73ffffffffffffffffffffffffffffffffffffffff82166104ec576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b6102dc60008383610640565b73ffffffffffffffffffffffffffffffffffffffff8416610548576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8316610598576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103eb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161063291815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661067857806002600082825461066d91906109a8565b9091555061072a9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106fe576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103d3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166107535760028054829003905561077f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107de91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561081957602081860181015160408684010152016107fc565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087b57600080fd5b919050565b6000806040838503121561089357600080fd5b61089c83610857565b946020939093013593505050565b6000806000606084860312156108bf57600080fd5b6108c884610857565b92506108d660208501610857565b929592945050506040919091013590565b6000602082840312156108f957600080fd5b61090282610857565b9392505050565b60006020828403121561091b57600080fd5b5035919050565b6000806040838503121561093557600080fd5b61093e83610857565b915061094c60208401610857565b90509250929050565b600181811c9082168061096957607f821691505b6020821081036109a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212208d04eeb280ac3a47c96b066f674e96782d06d1a45565a7eb2fbd085935abec0164736f6c634300081e0033","r":"0x7c7e6c5bec987e286e9fdc8f17d780db871754af1e1a8f4c371874932dea74d2","s":"0x23c6b757f80af1caff5382d7b57cc778cf7afd0f8df396c395f40cb6201b5f66","yParity":"0x0","v":"0x0","hash":"0xeaa80bb90bd6387f44ad09e0049e519dac0b7f3a32311660fc9f8352563170b4"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x1d5d01764ddcf116b2e0a8c9a69d68a6411d60f8e03fd363c41821a1790183f9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x8e8bce53cc7ae6b41ca95b2c8cc4c4ad4321acfc01f43e5d3653525f792a7fd9","transactionsRoot":"0x0dc28a5ad303d22cc74d7c053c586f31c4292df6e246539ee74c830060da8675","receiptsRoot":"0xae4d52f5f0536e069f6a2683f1818ab5b67978e973060da61b7d012eca8b0d78","logsBloom":"0x00000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000840020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000001000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x58a4eb2a2adfe2690a35b70276223f0ede9ff484806b809250dac594aa9fd498","nonce":"0x0000000000000000","baseFeePerGas":"0x2df3a20a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x2","gas":"0xc848","maxFeePerGas":"0x3a285914","maxPriorityFeePerGas":"0xdf0c76d","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f1900000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0x622514fdb3d7dd8eebb4d8031c4aa9438fd5aa0e5a66bdf6332ab011f216e6f5","s":"0x4edad25caf69552693402f5b63bd382ceae94e94461d1b593dc540b33f158fd2","yParity":"0x0","v":"0x0","hash":"0x10b989b730f059bb23b8308dbb28b4d715309317c4fb3a50fc95cbcab0eeacb1"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x422d68b21bb447f98f200562ff21fe213eb6b77050b1853cec504f28af11bd0f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xf08aa1be614c54a85a0ab13f9cf224dc325b706903385e49479a0bdfe38cd025","transactionsRoot":"0x74e5900a643ac252fff96baacb6b07930887acb680b5bbf1e810b3431eec58c4","receiptsRoot":"0x2674aab7195cf983901e8cd45f82d79ac429628b49b67b5a8c8a1b5413086b25","logsBloom":"0x00000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x4b7d8638ed10a0944b01ee84d0ae4eea6bfc4b71f45992f9a2e4787ed1082a11","nonce":"0x0000000000000000","baseFeePerGas":"0x1ed443af","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x5","gas":"0xc848","maxFeePerGas":"0x2704a5a9","maxPriorityFeePerGas":"0x95ab256","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f1900000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a6500000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0xca8eccce03b460cd08ce5718d2cc7f620f18a980459b00446c24d6d3c73bed09","s":"0x3ef6e393c7f80e9da46f6b0a66554c92f62b5133edcbf9fb1ae6d06a459b98de","yParity":"0x1","v":"0x1","hash":"0x6faa31a66788e6a63f8b3873254a1088bb99d19e52268d50324fa07e1b72c14a"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x84f761a3ded837ccc3877974e0a05b94ecfd5ab200e1ff4855fe8ce73ac83357","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x627966d8394cc32e265cc381d9c866a32102d5b5b71912fb5d1fd0723dea3965","transactionsRoot":"0x64bb229bb0991c5624ef7a844d4823ff6706629b40e2274db4081149403e4445","receiptsRoot":"0x52710a8293b1d386bd4ab0697e34071cd9b0c445a411bdd5aa67659e12561af0","logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000008000000000000000000000000000000001000000000000000000000000000200000000000000020000000002000000100000000000000000000000000000000000000000000000000000000000000000100000000000000","difficulty":"0x0","number":"0x1b","gasLimit":"0x1c9c380","gasUsed":"0x1e136","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x2431cfbf4786dc9256ac5f36384c292bdd659490d6201c0ad54b5b05cb267418","nonce":"0x0000000000000000","baseFeePerGas":"0x21aa03b","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x1a","gas":"0x1e708","maxFeePerGas":"0x2a9b2ca","maxPriorityFeePerGas":"0xa351df","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","value":"0x0","accessList":[],"input":"0x2f2ff15d427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xe39ce99e9ad7b4438698789f69c9991ed701f9684bbe25ba3521ab304ee488fc","s":"0x1dface90b181612d0c2f05daa87c0f3dd1137f1e79d71b184ce25f94130e2d82","yParity":"0x0","v":"0x0","hash":"0x6930ec53606afbdb723e6bfbe36b106a534708f98ce25b8de122f7f78c2c45a4"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x695e881e","extraData":"0x","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x8ee91e9295fdc6ce031670ab3aa472ef94d0c15f90c9c755a50e03beae0f0e86","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x5bac8899e1e915c5d5d68c52c513c97c675ad7a08353730ccfc9b78f44ff13e5","transactionsRoot":"0x7fa9ddc104b97f0a3ee5361347c68925dbdd6a664dcf4b830a294d692b4f8ea1","receiptsRoot":"0xd086a479a53fb9a41ce1221d83d52877a2c3c55706d6b363d66dc5f00794e384","logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000800000000000000000000000001000000000000000000000000000202000000000000000000000002000000100000000000000000000000000000000000000000000000000000000000000000000000000000002","difficulty":"0x0","number":"0x15","gasLimit":"0x1c9c380","gasUsed":"0xdbe3","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x33bc9131c313fa90ba5304bd7491810c3884aa9dc426019450b19251cd875b2c","nonce":"0x0000000000000000","baseFeePerGas":"0x4aa0613","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x14","gas":"0xdd90","maxFeePerGas":"0x5e72fb0","maxPriorityFeePerGas":"0x16a46fd","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","value":"0x0","accessList":[],"input":"0x2f2ff15ddc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb97489000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x4ae13918995d158f0dc865686bce7a422db842a65417db4c7d79e039a0e641f7","s":"0x1fe9f2453a5aefa5199e53744ae689a99ac973842d64e583af1295efa4ccdac4","yParity":"0x1","v":"0x1","hash":"0xa987f5173f13abbd87f88c6ff56b6ce3cb3daba0e9bafc574a5035a50e3a58d3"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x4e2ca00c7e807e8ae09e7c7a734c579b1a37db052ce36cf47bac96d271d067d0","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x1962eb114cc54d9d9eaef1666209fec759b4b53dcf5fadd912174c3833a1bbc8","transactionsRoot":"0x4ee3f78d18c1bb11dfc1a885d382e906024ddeafcb2b2993963bdcb1e36e3fc6","receiptsRoot":"0x664cf6c30a0c6ea5329b65e5d2330fea50bb554bc346ec318c7f8537a2dad24f","logsBloom":"0x00000000100000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xc","gasLimit":"0x1c9c380","gasUsed":"0x2c1fe9","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x94476c192428e795e1ea3465068fd7aeb5e391c76abf8ceb62467c4e4bfc6fd1","nonce":"0x0000000000000000","baseFeePerGas":"0xde066ca","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0xb","gas":"0x2c1fe9","maxFeePerGas":"0x11900217","maxPriorityFeePerGas":"0x435e19a","to":null,"value":"0x0","accessList":[],"input":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613329806100d96000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80636352211e1161012a578063a22cb465116100bd578063c87b56dd1161008c578063cf76a15311610071578063cf76a1531461057a578063d547741f14610582578063e985e9c51461059557600080fd5b8063c87b56dd14610554578063ca15c8731461056757600080fd5b8063a22cb465146104fb578063a3246ad31461050e578063b88d4fde1461052e578063c4d66de81461054157600080fd5b80639010d07c116100f95780639010d07c1461047357806391d148541461048657806395d89b41146104eb578063a217fddf146104f357600080fd5b80636352211e1461041a57806370a082311461042d5780638462151c146104405780638ff390991461046057600080fd5b80632f2ff15d116101bd57806342842e0e1161018c5780634cf088d9116101715780634cf088d9146103d45780634f6ccce7146103f457806355f804b31461040757600080fd5b806342842e0e146103ae57806342966c68146103c157600080fd5b80632f2ff15d146103625780632f745c591461037557806336568abe1461038857806340c10f191461039b57600080fd5b806318160ddd116101f957806318160ddd146102b55780631c8f7c20146102e657806323b872dd1461030d578063248a9ca31461032057600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b3146102a0575b600080fd5b61023e610239366004612af2565b6105fd565b60405190151581526020015b60405180910390f35b61025b61061d565b60405161024a9190612b7d565b61027b610276366004612b90565b6106d3565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b6102b36102ae366004612bd2565b610728565b005b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02545b60405190815260200161024a565b6102d87f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a81565b6102b361031b366004612bfc565b610737565b6102d861032e366004612b90565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102b3610370366004612c39565b61082d565b6102d8610383366004612bd2565b610871565b6102b3610396366004612c39565b61092a565b6102b36103a9366004612bd2565b610988565b6102b36103bc366004612bfc565b6109e3565b6102b36103cf366004612b90565b6109fe565b60005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102d8610402366004612b90565b610a5b565b6102b3610415366004612d2c565b610b10565b61027b610428366004612b90565b610b82565b6102d861043b366004612d75565b610b8d565b61045361044e366004612d75565b610c2e565b60405161024a9190612d90565b6102b361046e366004612d75565b610cc6565b61027b610481366004612dd3565b610d5d565b61023e610494366004612c39565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61025b610d9e565b6102d8600081565b6102b3610509366004612df5565b610def565b61052161051c366004612b90565b610dfa565b60405161024a9190612e31565b6102b361053c366004612e7f565b610e3e565b6102b361054f366004612d75565b610e56565b61025b610562366004612b90565b611041565b6102d8610575366004612b90565b611075565b61025b6110ad565b6102b3610590366004612c39565b61113b565b61023e6105a3366004612efb565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b60006106088261117f565b806106175750610617826111d5565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061064f90612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461067b90612f25565b80156106c85780601f1061069d576101008083540402835291602001916106c8565b820191906000526020600020905b8154815290600101906020018083116106ab57829003601f168201915b505050505091505090565b60006106de8261122b565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff16610617565b6107338282336112a9565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661078c576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006107998383336112b6565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610827576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610783565b50505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546108678161136d565b6108278383611377565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0061089d84610b8d565b83106108f4576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101849052604401610783565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602091825260408082208583529092522054905092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610979576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098382826113ce565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d9576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610733828261141c565b61098383838360405180602001604052806000815250610e3e565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a4f576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a58816114cd565b50565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00610aa67f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed025490565b8310610ae8576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526000600482015260248101849052604401610783565b806002018381548110610afd57610afd612f78565b9060005260206000200154915050919050565b7f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a610b3a8161136d565b6001610b468382612fee565b507f0b5e7f3f12bb283d66c974a1d529f3e44f27edd4aad7748c1d0058241ec0077582604051610b769190612b7d565b60405180910390a15050565b60006106178261122b565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316610c00576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b60606000610c3b83610b8d565b905060008167ffffffffffffffff811115610c5857610c58612c65565b604051908082528060200260200182016040528015610c81578160200160208202803683370190505b50905060005b82811015610cbe57610c998582610871565b828281518110610cab57610cab612f78565b6020908102919091010152600101610c87565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1615610d16576040517fd4376c1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610d96908461152e565b949350505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161064f90612f25565b61073333838361153a565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320006020819052604090912060609190610e379061165b565b9392505050565b610e49848484610737565b6108273385858585611668565b6000610e6061185f565b805490915060ff68010000000000000000820416159067ffffffffffffffff16600081158015610e8d5750825b905060008267ffffffffffffffff166001148015610eaa5750303b155b905081158015610eb8575080155b15610eef576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f58611888565b610fcc6040518060400160405280601a81526020017f526563616c6c205374616b696e67204e465420526563656970740000000000008152506040518060400160405280600681526020017f52534e4654520000000000000000000000000000000000000000000000000000815250611892565b610fd7600087611377565b5083156110395784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6060600161104e836118a4565b60405160200161105f929190613107565b6040516020818303038152906040529050919050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610e379061190f565b600180546110ba90612f25565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612f25565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505081565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111758161136d565b61082783836113ce565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610617575061061782611919565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806106175750610617826119fc565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610617576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610783565b6109838383836001611a52565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690851615801590611322575073ffffffffffffffffffffffffffffffffffffffff811615155b15611359576040517f6527f30c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611364858585611c5e565b95945050505050565b610a588133611db7565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113a58585611e5e565b90508015610d965760008581526020839052604090206113c59085611f7f565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113fc8585611fa1565b90508015610d965760008581526020839052604090206113c5908561207f565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b600061147a838360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff811615610983576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b60006114dc60008360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff8116610733576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610783565b6000610e3783836120a1565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166115c0576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60606000610e37836120cb565b73ffffffffffffffffffffffffffffffffffffffff83163b15611858576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906116dd9088908890879087906004016131ab565b6020604051808303816000875af1925050508015611736575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261173391810190613206565b60015b6117c5573d808015611764576040519150601f19603f3d011682016040523d82523d6000602084013e611769565b606091505b5080516000036117bd576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611039576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b5050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610617565b611890612127565b565b61189a612127565b6107338282612165565b60606106178261190784600060076fffffffffffffffffffffffffffffffff8311901b9050600667ffffffffffffffff83831c11901b17600563ffffffff83831c11901b17600461ffff83831c11901b1760ff82821c1160039190911c17919050565b6001016121a8565b6000610617825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806119ac57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061061757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610617565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061061757506106178261117f565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611a94575073ffffffffffffffffffffffffffffffffffffffff831615155b15611c08576000611aa48561122b565b905073ffffffffffffffffffffffffffffffffffffffff841615801590611af757508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b55575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15611ba4576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b8215611c0657848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080611c6c8585856123c6565b905073ffffffffffffffffffffffffffffffffffffffff8116611d1457611d0f847f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b611d51565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d5157611d51818561258b565b73ffffffffffffffffffffffffffffffffffffffff8516611d7a57611d7584612646565b610d96565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9657610d968585612741565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610733576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610783565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f113390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610617565b6000915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff84166127bb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff841661280a565b60008260000182815481106120b8576120b8612f78565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561211b57602002820191906000526020600020905b815481526020019060010190808311612107575b50505050509050919050565b61212f6128f3565b611890576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61216d612127565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806121998482612fee565b50600181016108278382612fee565b60608260006121b8846002613252565b6121c3906002613269565b67ffffffffffffffff8111156121db576121db612c65565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db856002613252565b6122e6906001613269565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000083600f166010811061232757612327612f78565b1a60f81b82828151811061233d5761233d612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049290921c9161237c8161327c565b90506122e9565b508115610d96576040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610783565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff9081169084161561244157612441818587612912565b73ffffffffffffffffffffffffffffffffffffffff8116156124b95761246b600086600080611a52565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8616156125045773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0060006125b784610b8d565b600084815260018401602090815260408083205473ffffffffffffffffffffffffffffffffffffffff89168452918690529091209192509081831461261e576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02547f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090600090612699906001906132b1565b60008481526003840160205260408120546002850180549394509092849081106126c5576126c5612f78565b90600052602060002001549050808460020183815481106126e8576126e8612f78565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480612724576127246132c4565b600190038181906000526020600020016000905590555050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed006000600161276f85610b8d565b61277991906132b1565b73ffffffffffffffffffffffffffffffffffffffff90941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b600081815260018301602052604081205461280257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610617565b506000610617565b60008181526001830160205260408120548015611f7557600061282e6001836132b1565b8554909150600090612842906001906132b1565b90508082146128a757600086600001828154811061286257612862612f78565b906000526020600020015490508087600001848154811061288557612885612f78565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128b8576128b86132c4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610617565b60006128fd61185f565b5468010000000000000000900460ff16919050565b61291d8383836129c2565b6109835773ffffffffffffffffffffffffffffffffffffffff8316612971576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610783565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610783565b600073ffffffffffffffffffffffffffffffffffffffff831615801590610d9657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a6f575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b80610d9657505060009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a5857600080fd5b600060208284031215612b0457600080fd5b8135610e3781612ac4565b60005b83811015612b2a578181015183820152602001612b12565b50506000910152565b60008151808452612b4b816020860160208601612b0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e376020830184612b33565b600060208284031215612ba257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612bcd57600080fd5b919050565b60008060408385031215612be557600080fd5b612bee83612ba9565b946020939093013593505050565b600080600060608486031215612c1157600080fd5b612c1a84612ba9565b9250612c2860208501612ba9565b929592945050506040919091013590565b60008060408385031215612c4c57600080fd5b82359150612c5c60208401612ba9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115612caf57612caf612c65565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715612cfc57612cfc612c65565b604052838152905080828401851015612d1457600080fd5b83836020830137600060208583010152509392505050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff811115612d5557600080fd5b8201601f81018413612d6657600080fd5b610d9684823560208401612c94565b600060208284031215612d8757600080fd5b610e3782612ba9565b602080825282518282018190526000918401906040840190835b81811015612dc8578351835260209384019390920191600101612daa565b509095945050505050565b60008060408385031215612de657600080fd5b50508035926020909101359150565b60008060408385031215612e0857600080fd5b612e1183612ba9565b915060208301358015158114612e2657600080fd5b809150509250929050565b602080825282518282018190526000918401906040840190835b81811015612dc857835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612e4b565b60008060008060808587031215612e9557600080fd5b612e9e85612ba9565b9350612eac60208601612ba9565b925060408501359150606085013567ffffffffffffffff811115612ecf57600080fd5b8501601f81018713612ee057600080fd5b612eef87823560208401612c94565b91505092959194509250565b60008060408385031215612f0e57600080fd5b612f1783612ba9565b9150612c5c60208401612ba9565b600181811c90821680612f3957607f821691505b602082108103612f72577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561098357806000526020600020601f840160051c81016020851015612fce5750805b601f840160051c820191505b818110156118585760008155600101612fda565b815167ffffffffffffffff81111561300857613008612c65565b61301c816130168454612f25565b84612fa7565b6020601f82116001811461306e57600083156130385750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611858565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130bc578785015182556020948501946001909201910161309c565b50848210156130f857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600080845461311581612f25565b60018216801561312c576001811461315f5761318f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316865281151582028601935061318f565b87600052602060002060005b838110156131875781548882015260019091019060200161316b565b505081860193505b50505083516131a2818360208801612b0f565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006131fc6080830184612b33565b9695505050505050565b60006020828403121561321857600080fd5b8151610e3781612ac4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761061757610617613223565b8082018082111561061757610617613223565b60008161328b5761328b613223565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8181038181111561061757610617613223565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208c4aae2f7a484318b3b9e79fafec9a0f910f6f6aabe009b81f847d8c5b93834b64736f6c634300081e0033","r":"0xc3854acb82462c987de6c54c1f0d02bea49f516cd3f497679417c67882f1aff1","s":"0x4b0c8a64bd3b191f00fdaaf50c2f609411dccb9e4993095640b3c14b46800a6e","yParity":"0x0","v":"0x0","hash":"0x668adcc326544cf592fcb19d60a8b3a8a283c8b9d237745e2f6f42764b551230"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x625f13cdc7304c7e3f2b331adabd4d3ec45dfcc133cdd0944fc999d7ccdb4cf4","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x21c636082a27448a5274b9327b872268689cc716f513b84d0c8d57ed4023ef68","transactionsRoot":"0x8e6dd0effedda7745c992c0d42163adc795a34755800f1dd56dab032e6894db1","receiptsRoot":"0xbb5507558eb1878798ff33668883c7bb01b3ea578c14bc0974a7a19da6a50bca","logsBloom":"0x00000004000000000000000000000000400000000000000000800000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000002000002000001000000000000000000000000000000000000020000000000000100000800000000a00000000000000c00000000400000000000000000000800000000000000000000000480000000000000800000000000000000000000000000000000000000000000000000001000000000000000000020000000200000000000000000000000002404000100000000000020000000000000000000000000000002000000000000000000000000400000000000","difficulty":"0x0","number":"0xd","gasLimit":"0x1c9c380","gasUsed":"0xf176a","timestamp":"0x695e8832","extraData":"0x","mixHash":"0xa131b2bc17629cf151c86db130448a38245887892ab1bf54832cb1494d061b6b","nonce":"0x0000000000000000","baseFeePerGas":"0xc79f4f8","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0xc","gas":"0xf176a","maxFeePerGas":"0xfca5a09","maxPriorityFeePerGas":"0x3af9b4d","to":null,"value":"0x0","accessList":[],"input":"0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000","r":"0x5dae121d6614d5096408750155ebea709d9127bb248ba4ef40b8b14fbc1a85da","s":"0x35ea778baab66f9c9f7db7c92b9215b57bbaf00a038773349e7ac798fcd7cda5","yParity":"0x1","v":"0x1","hash":"0xdabea5780b8592902197ab39501ced55f6e3e05b8f87d63fa7c7f64d490677db"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x5a1157ababfa2d72fc13003de25cdddf5fba3f3508db1efb3fda8a8a377b1cb6","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xf59e82abfdfa230ebea8795db75e713d8353d2cfe9000cf7e64c9c2aaf9cad7c","transactionsRoot":"0xa3728cb478c18e62bea0f33c9fee0380dcbfed7d60aac635ac873a23d4cf048b","receiptsRoot":"0xaf594dd063f940c6a23dbbae12a7d840607e070264d72be50bda218b6c61595e","logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000800000000000000000000000001000000000000000000000000000200000000000000020000000002000000100000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x17","gasLimit":"0x1c9c380","gasUsed":"0xdbe3","timestamp":"0x695e8833","extraData":"0x","mixHash":"0xb4480ed4ddedc22a6b209b10228ec2c4a25c076ede3f4d859e35b237d4cdca61","nonce":"0x0000000000000000","baseFeePerGas":"0x39327a6","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x16","gas":"0xdd90","maxFeePerGas":"0x4863e2e","maxPriorityFeePerGas":"0x115aa7f","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","value":"0x0","accessList":[],"input":"0x2f2ff15d427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x7b288ea2cda1a71589b5c1a83fb0d869dafbec143e886a65fa874161e6540f77","s":"0xf9615f36959916590cc462489a475778613ab141e8fc4a78b9409233edab8f0","yParity":"0x0","v":"0x0","hash":"0xa95670b27059c4c787bf417afde68549c3eb289dc06dbb2894418d929bf06dd1"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xbc391dbc898c535581050478b05f429cf2007ceb83f5538f117d075cb9c4dfee","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xfdd18f21a1d33bb9a50e7633e366b58080f614a9180ebe06614a30a7264b22d5","transactionsRoot":"0x3351633dce0b4d2af9d262975e9100e824462f9e6c566cb0504472c685bb0cf7","receiptsRoot":"0x8514713dfe45a925ae8ca08ebc4e902b17e315297888203382abc5284f28d0dd","logsBloom":"0x00000006000000000000000000000000000000400000200000000000000000000000000000008000000000000000000000000000000000000000000000040000080000000000000080000000000000800000020000042000000000000010000000000000020000000000000100000800000000000000000000000000080000000080000080000000400000000000008000000000000000000000000001000000000000000000000000000000000000000020000000000000001000000000000000000000000000200000000000000020800000002000000100002200000060000000000000000000000000000000000100000400000100000000000000000000","difficulty":"0x0","number":"0x20","gasLimit":"0x1c9c380","gasUsed":"0xa532d","timestamp":"0x695e8834","extraData":"0x","mixHash":"0x9838511890ce07f33f2715650c527e96e7296df1fd38c26f6573fdcb64715b47","nonce":"0x0000000000000000","baseFeePerGas":"0x132e175","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x1f","gas":"0xa532d","maxFeePerGas":"0x1846558","maxPriorityFeePerGas":"0x5a2409","to":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","value":"0x0","accessList":[],"input":"0x15fb76400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099341db4a72623b4f268048ed9f02ff92894fc9a5fa6409107188ce968975a780000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000000000000000000000000000000000000000005dc0000000000000000000000000000000000000000000000000000000000ed4e0000000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000000000000","r":"0x69fe1949350b9a7486bf97b4426dd1eba6ec95425b97e403752a205f745066f","s":"0xc3c605396a548039a6480e7063cd6b49127a8e854266db153865b6dc5e5080d","yParity":"0x0","v":"0x0","hash":"0x71fbd1e1a667ffb28323e825979632d2cdd4f53652beb8f04b09aa8a0c841aff"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xb9ca734e59a3c942b2f8a5c1d50e02ae45ad02edb3e822e4e83c1aa4ef66de62","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x66e2a11ebd899dee61c6b720a994b9095f7181012504f6381b446b7e12a2ab07","transactionsRoot":"0x53faeac4b92f28c39207e7100df5cab53f2e60657745e789380bfefc3e247f31","receiptsRoot":"0x75f1456b2449bca1e9ac9248034ef63f25c1ef0b1ecb9c7102fda47a86bf0e50","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x11","gasLimit":"0x1c9c380","gasUsed":"0xbf7f","timestamp":"0x695e8832","extraData":"0x","mixHash":"0x16dae2cb501ae2b2dba5993dca1319d139281f569699e85cd489f4ed09418858","nonce":"0x0000000000000000","baseFeePerGas":"0x7ae9b0a","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x10","gas":"0xc0c0","maxFeePerGas":"0x9b8fc38","maxPriorityFeePerGas":"0x254e17e","to":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","value":"0x0","accessList":[],"input":"0x8ff390990000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","r":"0xeac346580c8e6a965cd8d940d2b2ce101babfadc8911249623768bfc02dc7d68","s":"0x258f50375a62003d1f599541a470bd5c479e5b1a416ab409c1387ab723c7a67c","yParity":"0x0","v":"0x0","hash":"0x5267a0522e08445104d12b288deeaa278f9c416a3d66d6afac573ab7064c2bd9"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xc63a82d7ae046a5119c0fadaf3d8efab3159c77191bf47aaccd7a9d66229fd18","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xe965732cf6b9a75653cbeba24e43425b471084ff47ea6381031917605ba77073","transactionsRoot":"0xdd4b13d572febc54f4de73bb8e1ea0b936ee27c4e192986d86a34dd51b4be534","receiptsRoot":"0x2844f008d9444e62dfe8e9b6ec0986134f8dba9cebb08c309c66a41b613e2b38","logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000900000000000000000000000001000000000000000000000000000200000000000000000000000002000000100000000000000000000000000000000000000000004000000000000000000000000000000000000","difficulty":"0x0","number":"0x14","gasLimit":"0x1c9c380","gasUsed":"0xdbd7","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x63c76b1a5e624e1b30443552732920b8a1ada37cd79dd426c6f081e778304164","nonce":"0x0000000000000000","baseFeePerGas":"0x553de16","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x13","gas":"0xdd84","maxFeePerGas":"0x6be2513","maxPriorityFeePerGas":"0x19a4178","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","value":"0x0","accessList":[],"input":"0x2f2ff15d8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0xe1b81786b8530449d0ad760df80a56ba25dc620ee5026724eb4831ed2af75c68","s":"0x2503cafec5e379d3928a68284be16474ce18acc28052d92582b1f18a1dd699a5","yParity":"0x0","v":"0x0","hash":"0xb047ab8585320d25d811c7e9af0aaf7c7cfdfe54800167cfa78f49ee485a63b8"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2e6950a127790f4401f4fca2ddf1502f2e662bf16c5999c886c54ebf3257e72b","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x6b1cc8578dae379fd784b310c231f3c3a7d51fde1757681fd6bcf2f2bec2d2a3","transactionsRoot":"0x7fe738740180cae5b21ae6dc73874c99cdac4fb4be48e18daf78cf9a14e270ac","receiptsRoot":"0x6e9b5a7b2515d7f38c21bbeaf22abd2da50526f7042c928026db4ce429417d32","logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000001000000000000000000000000000200000000000000000000000002800000100000000000000000000000000000000000000000000000000000000000000000100000000000000","difficulty":"0x0","number":"0x18","gasLimit":"0x1c9c380","gasUsed":"0x1e136","timestamp":"0x695e8833","extraData":"0x","mixHash":"0xe5ab74f2cdf3e77107ab3552885fe5182954759d9d7d13f3c17f45ba49f59c9b","nonce":"0x0000000000000000","baseFeePerGas":"0x3213098","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x17","gas":"0x1e708","maxFeePerGas":"0x3f60180","maxPriorityFeePerGas":"0xf31688","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","value":"0x0","accessList":[],"input":"0x2f2ff15d6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x7ae44b8bcdcccd9ee67a2c5ca964fcc66f80c90816509f757824f574251b0b69","s":"0xfa47fb65061c777304b4bdd299fbd585f6f21c63c2647169afee377d212394d","yParity":"0x1","v":"0x1","hash":"0x2ab643f309bdebd978c29536ab510472d3fcec0596c5e7250939d4351ca56848"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2cea7f3006eae7dc16b9fd65624343f99c8c3dd8190502b7f50e573fdf046dc4","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x671284ef870d5921f41b941e9fcf21e66d691db128e3319b7dc015f6450e881f","transactionsRoot":"0x70b89d8eb42d41e6c9ec26f8fc34a4bfa5dd9919dbbed13e87b2911311ed0829","receiptsRoot":"0x972f7e220dd2e9ddef8d6485d74cd83ee31153f45544a88c7694ed48d6d5a4a0","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0x10b14","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x44b8526d7e805617cdac159cccae943c3a64cda18373de04c8427904e2889384","nonce":"0x0000000000000000","baseFeePerGas":"0x347b6740","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x1","gas":"0x10b14","maxFeePerGas":"0x426c2ead","maxPriorityFeePerGas":"0xfd51da8","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0x5b106fb96bfd198e24de9b3d29fc25528e625862b6bb98a278ab9558cda756c0","s":"0x33c773b7912e29e4ac1304895982806be3bc8e7049f9d1620da47e9af5e82afa","yParity":"0x0","v":"0x0","hash":"0xdaea7ebe37fa38ba8c58a1374e0e09e7010eedae1436167abd85a5cc59414656"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xfc5ba462bbcb060aeb35d969978ec845972c6d1e6903b8be1a9b73ebb8bff4c9","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x0a7c6afdb37a2641532f8acba589a86ae10f1b4994bb5e678dfc9c3a4c55c7e1","transactionsRoot":"0x0a98f3ba3678c6472c60a906665256d27c8f9741669594579097e900e5cf6083","receiptsRoot":"0xf3b45c4b70fe0f6221c90116c6e2b38158f648977e3ca51270a44066da3e5d25","logsBloom":"0x00000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000008000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000004000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0xb","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x4f2a14b82907c3f7d6a5ddfe9074a577c51a2a4b0ce1fa12e80a59fd836fbec2","nonce":"0x0000000000000000","baseFeePerGas":"0xfd9e7ec","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0xa","gas":"0xc848","maxFeePerGas":"0x140fc986","maxPriorityFeePerGas":"0x4cf4358","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f19000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0x104bae07bb4ea54ba6bbcc2c1334a1e752b013b2f0ea504af613dc4abfeb4582","s":"0x599173ff5d3e5958eed9e543948e4a72b804c42c2032de1b2972b5df6a540e9a","yParity":"0x1","v":"0x1","hash":"0xc285f91f57342319bcbd16274d54a620cac3495ba57fb6314e347c4ba23f1fc9"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xdd4338b2fb9d7fcb4cf96f41b8f7ff6676801bdacc5b63dc3601f4c73ad835ba","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x1820516714e6ce05693b663e099301eae8832f270c18d9b0209fdc6770c7fb81","transactionsRoot":"0x9b5ef1b2249647b2fccfc346de91da01ae23182e54fa4d17b5fb849f08a7693e","receiptsRoot":"0xaf29e89f0ea1dab6a0173455fd5a049fd87ec8dcaa3eb2aca8671344d88caa36","logsBloom":"0x00000004000080000000000000000000400000000000000000800000000000000000000000000000000000000000001000000000000000000000000000000000040000000100000000000000004002000001000000000010200000000000000000000000020000000000000100000808000000800000000000000000000000400000000000000000000800000000000000000000000080000000000000800000000000000000000000000000800000000000000000100000001000000000000000000020200000200000000000000000000000002404000100000000000028000000000000000000000000000400000000000000081000000000000000000000","difficulty":"0x0","number":"0xf","gasLimit":"0x1c9c380","gasUsed":"0x103707","timestamp":"0x695e8832","extraData":"0x","mixHash":"0x8f29604486b632c381419f252afdfcf3292458523cd1ad79c4f41e40b5e75bf7","nonce":"0x0000000000000000","baseFeePerGas":"0x9ee5cb4","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0xe","gas":"0x103707","maxFeePerGas":"0xc91ad53","maxPriorityFeePerGas":"0x2ed567f","to":null,"value":"0x0","accessList":[],"input":"0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000","r":"0x11664e0733f1842b14d6055feeb724c3d263aa765800ebcc9ee8ffc74d4794c2","s":"0x7478e8e39d4150dad766a7f7f6789eebde357621e2db14952299585413326eb8","yParity":"0x1","v":"0x1","hash":"0xaa1c38e8002e874e178d1eb3e3c9a423339b9a346d6fb3741b3c2d17580b181d"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x1ea902b902d26de16e93828b2123fed282c29075edad8561bdbaad14f3f774ba","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xefbf1550f249c8ed680d8e1585620719c154474c0099b7d68b2b11c019fce799","transactionsRoot":"0x8bdcb7278c93d90175c49d8b36ed20a2a5f67b6abc406525a90df05a614f0b51","receiptsRoot":"0x5ae287c949c6a99f17b9586db961b199b228ea80cd403ea3a8e0953675394c87","logsBloom":"0x00000004008000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000001200000000100000000000000000200000000000000000000000002000000100000000000000000000000000000000000000000000000000000000000000000100000000000000","difficulty":"0x0","number":"0x19","gasLimit":"0x1c9c380","gasUsed":"0x1e12a","timestamp":"0x695e8833","extraData":"0x","mixHash":"0xdaea1f41406a2a060151e9570c5dc847cb67198c441607eef9ef023c34baf35b","nonce":"0x0000000000000000","baseFeePerGas":"0x2bddd14","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x18","gas":"0x1e6fc","maxFeePerGas":"0x3784bcd","maxPriorityFeePerGas":"0xd4d0e8","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","value":"0x0","accessList":[],"input":"0x2f2ff15d9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x3bbb415db6452062919c26f8509db3166de91cd182f4482f01a0a46dd292028a","s":"0x5f134f55975e326840154251247058e50125863873c8631374282293ffa84369","yParity":"0x1","v":"0x1","hash":"0x5c76f4cdf4eb4f482a64238f519986c0a52a6fcab1de39c27bf6574158e57809"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2186969336213b5978f7f66bc4a9306097402d16582ca7c9df26d07939db4586","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x874a313f77728d33d1ae585d6ef77de8a46ef287d87a716c8309a615a1befe59","transactionsRoot":"0x660f806564f3e8c923f4f6d96349b82e6d7cacdd46fe60141fda82b56a4bae89","receiptsRoot":"0xb86d379c22494dfcd1a876cfe659c941047d59b5920266ff36d96da9147343c0","logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000008000000000000000000000000000000001000000000000000000000000000200000000000000000000000002000000100002000000000000000000000000000000000000000000000000400000000000100000000000000","difficulty":"0x0","number":"0x1a","gasLimit":"0x1c9c380","gasUsed":"0x1e136","timestamp":"0x695e8833","extraData":"0x","mixHash":"0xf8c8ebc74d106a7a710bf4e68a922128ebc4da1dd2a99b8d180a3fcee1a8022c","nonce":"0x0000000000000000","baseFeePerGas":"0x266d9e1","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x19","gas":"0x1e708","maxFeePerGas":"0x30a2bc0","maxPriorityFeePerGas":"0xba6eb9","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","value":"0x0","accessList":[],"input":"0x2f2ff15d65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","r":"0x40dc9f633e486b8724c7a8d1e0a5c43074f07d4128ac53dad248748450be32d6","s":"0x10c4a9c0101fa88de6d740e74287e3d57f98823e84e3ac037e6471dc94d5adb","yParity":"0x0","v":"0x0","hash":"0x8303404d8e012e921a8f35df4951b91fd40583bd4360f6403ecfba7ec41f1188"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x13be44d972b81f17ca9aa340c5f962de8145ee1d3468acad4fb33b2aa7699d4f","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xb6ece0de41704cde0ebefaf837e14732ba33ab688c5830f906f5815f32033842","transactionsRoot":"0x080140b6b0dfce6ae6da6132b663293dd5e367c9f9ce29bdc8649901895374ba","receiptsRoot":"0x6bb8ed72436701c20a4d185e49b6360d23718a09005ecbe13ea688098fe5ea40","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1e","gasLimit":"0x1c9c380","gasUsed":"0xb562","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x694879f6f0d1df870ab1368b249698a53455c33cba3001b2f2bfc06d185ddb1e","nonce":"0x0000000000000000","baseFeePerGas":"0x183a93e","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x1d","gas":"0xb562","maxFeePerGas":"0x1eaa232","maxPriorityFeePerGas":"0x6f8be7","to":"0x09635f643e140090a9a8dcd712ed6285858cebef","value":"0x0","accessList":[],"input":"0x5bb47808000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","r":"0x5452884a3a6e599d543a41da90af70a30222cbe66cccd141990d8d56f9eadf20","s":"0x7cae7dc9b5fa62fe7dfc104e59963dbc4d3a45893f5e06fe5dad9312cfcc46e7","yParity":"0x1","v":"0x1","hash":"0x4721f38322cfc7c2765e39da0cfff9b7b1cf4b870446cf6f6b47c407c63d1832"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x39e0df22110a138bcc7753a308c12ae3a870f8213907fa7145aa9644607f9677","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcfd91d0cfdc9476fbfaa56d47c335660e61727c037cffb11e768ef91ba9fc006","transactionsRoot":"0xfdff1b11564d4cfbd9af821e5201ade3d4ec72884d2573d889a16debb64c9a41","receiptsRoot":"0xd35515b70e96bd5ca1b733e5f8b1a639cfbddf631821d811593c303e155562ad","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x21","gasLimit":"0x1c9c380","gasUsed":"0x8588","timestamp":"0x695e8834","extraData":"0x","mixHash":"0x9d8b3f879f3df7c9e5e19cf1d4f4b4ca8ff198bcf6585e564492e8fdc5f68508","nonce":"0x0000000000000000","baseFeePerGas":"0x10e4044","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x20","gas":"0x8588","maxFeePerGas":"0x1560956","maxPriorityFeePerGas":"0x5183e3","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000001e7e4171bf4d3a00000","r":"0x131fde603bbb92c9b42f0548755b4bbbb8727d16db5b2df0721ab8092ae62a99","s":"0x73b3e481247af23ff26e3b7727006929021ed58c0e1b7374c7757ba473bfa022","yParity":"0x1","v":"0x1","hash":"0xa0b9e030bd9d00847f504d54c6b5fde28d5b3b8a4e688f0dffd941e59a2fd9f5"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x5a4b84d2dc859b45064bfcaafa1cbc63e713558a21898c00fce55faddcee0bb7","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xa9cacd327829243a548f679ebb0889bf100056b63533e1ad829e23d5da27e117","transactionsRoot":"0xdd81d276aa5e679c159b073b1332518ad14e5e8ab3fb666cc087a5b085a267e1","receiptsRoot":"0x779e8defdd834dbd6bc6bf87dc26727f6e27ad42f5a8bc0ed5b95eed889f3fd7","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000400000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000002000000000000000000000000000000000000042000000000000000000000000040000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x88b61de8fc47257cd3b4aa8a4ec92d04e07c3393db215cb5343c4a1da312a905","nonce":"0x0000000000000000","baseFeePerGas":"0x14aef31d","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x8","gas":"0xc848","maxFeePerGas":"0x1a2d6bb0","maxPriorityFeePerGas":"0x6469c64","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f1900000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d995500000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0xebc12776a38bde6d7af52ec5678516c209b9874780e51415e48a926709edaf6e","s":"0x3baf58d6b64e59ea3ce94b9d5eca697a78cfecdd529c7294cb419dfb51d61cbb","yParity":"0x0","v":"0x0","hash":"0xcff5b0f7f954dd4184f3e0263aa03bc577c595caa6c600ab9f13a232a03faa87"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x541e7cc62e06107e58f5aba97388f8750bfe472058253ffbe3a6a8c5628ee0a5","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x3a18f6bd9cd068ae626726d446153a01c3cad8b197c717e835b74978c25c81e3","transactionsRoot":"0x4de3e28a3ce8ded557d791d60cf33fdf59e074ed403e4f3f930dbc18b0499641","receiptsRoot":"0xc6632023ed6b515b9d0944dc889cd8b32f8e5ec61d036ec7987999ab952ac707","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000400000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000400000000000000000000000000020000000000000000000000010000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0x98f464f3b6be3fb40f240557c51769f453b882c0502ea5e1b4cae31bfb8afe38","nonce":"0x0000000000000000","baseFeePerGas":"0x23375418","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x4","gas":"0xc848","maxFeePerGas":"0x2c92066e","maxPriorityFeePerGas":"0xaaf75f1","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f1900000000000000000000000090f79bf6eb2c4f870365e785982e1f101e93b90600000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0xd2b50ef82cf162b0edd3ee0b3f53f6715639c0d6f7c226550c47cd257e59d72f","s":"0xf9f0f76805c5f11589e9ba86291ab8e7732fe059da5351aefa9674c1d1cd80b","yParity":"0x0","v":"0x0","hash":"0x04e2497890292cbed8f231fed1078c78f151909deab2796ea75d33517fb4ba5f"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xd75a5f75c2f237a5ed33ff11d7e82ad990bb8bda752ab404118d104f30a32081","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x3e0f122e7a92613d92abc9a79e4cf0566e4791efba0adf5106e122a51bdac558","transactionsRoot":"0x8aebb36edbf410adaad03a3493ae123615cb1746527896c0a2c4bd7f43028ff8","receiptsRoot":"0x81fbd7cc0c15b81b0e582474754f6a7b442e77bf511fa5b033da5afbc35593db","logsBloom":"0x00000004000000000000000000000000000004020000000000000000000000000000000000000000100000000000000000000000008000000004000000000000000000000020000000000000000000000000000000000000000000000000000000000000020000000004000100800800000004000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000080000200000020000000000000000002008000100000000000020000000000000000008000000000000000000000000000000008000000000000000","difficulty":"0x0","number":"0x1d","gasLimit":"0x1c9c380","gasUsed":"0x58234f","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x6c6c608db698c9dfd37afb442d82d2ebf16dba23544a6aff1f7a9eb3949c19ca","nonce":"0x0000000000000000","baseFeePerGas":"0x1a3f093","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x1c","gas":"0x58234f","maxFeePerGas":"0x2137c7a","maxPriorityFeePerGas":"0x7d55d7","to":null,"value":"0x0","accessList":[],"input":"0x60a0604052670de0b6b3a7640000600555600060065560c860075561025860085562278d0060095562278d00600a5534801561003a57600080fd5b506040516164f33803806164f3833981016040819052610059916103d5565b6001600160a01b038416158061007657506001600160a01b038316155b8061008857506001600160a01b038116155b156100a65760405163d92e233d60e01b815260040160405180910390fd5b6040516100b2906103ac565b604051809103906000f0801580156100ce573d6000803e3d6000fd5b506001600160a01b03166080526100e6600033610161565b506101117f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0885610161565b50600380546001600160a01b038086166001600160a01b031992831617909255600480549285169290911691909117905561014d600080610199565b610158816001610199565b50505050610467565b60008061016e84846102ab565b9050801561019057600084815260016020526040902061018e9084610355565b505b90505b92915050565b6001600160a01b038216158015906101c2575060008160038111156101c0576101c0610429565b145b156101e05760405163a1e9dd9d60e01b815260040160405180910390fd5b60405180604001604052808260038111156101fd576101fd610429565b8152600160209182018190526001600160a01b0385166000908152600b90925260409091208251815491929091839160ff199091169083600381111561024557610245610429565b02179055506020919091015181549015156101000261ff00199091161790556040516001600160a01b038316907fbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e89061029f90849061043f565b60405180910390a25050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1661034d576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556103053390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610193565b506000610193565b6000610190836001600160a01b038416600081815260018301602052604081205461034d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610193565b6142b68061223d83390190565b80516001600160a01b03811681146103d057600080fd5b919050565b600080600080608085870312156103eb57600080fd5b6103f4856103b9565b9350610402602086016103b9565b9250610410604086016103b9565b915061041e606086016103b9565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b602081016004831061046157634e487b7160e01b600052602160045260246000fd5b91905290565b608051611dbb6104826000396000610a6e0152611dbb6000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806391d1485411610145578063b20feaaf116100bd578063cfca31471161008c578063ec87621c11610071578063ec87621c146105a5578063f2e2e2aa146105cc578063f88139101461060657600080fd5b8063cfca31471461057f578063d547741f1461059257600080fd5b8063b20feaaf146104d0578063c36a470814610550578063c4c0453414610559578063ca15c8731461056c57600080fd5b8063a3246ad311610114578063aa405af9116100f9578063aa405af91461049e578063b013ab38146104a7578063b0e21e8a146104c757600080fd5b8063a3246ad314610475578063a5fd8edc1461049557600080fd5b806391d148541461040d57806399f8cbaf14610451578063a217fddf14610464578063a221c64a1461046c57600080fd5b806336568abe116101d857806366fbf11b116101a757806380cc90ed1161018c57806380cc90ed146103a2578063850a1501146103b55780639010d07c146103fa57600080fd5b806366fbf11b1461037c578063787dce3d1461038f57600080fd5b806336568abe1461033a57806339591b001461034d5780635026c826146103565780635e73fd761461036957600080fd5b80631c91ecb61161022f5780632a53ff5f116102145780632a53ff5f146102f95780632f2ff15d146103145780632f7d5c661461032757600080fd5b80631c91ecb6146102c4578063248a9ca3146102d657600080fd5b806301ffc9a714610261578063059129471461028957806306bdd7d51461029e5780631776a827146102b1575b600080fd5b61027461026f3660046118f2565b610619565b60405190151581526020015b60405180910390f35b61029c610297366004611934565b610675565b005b61029c6102ac366004611934565b6106f8565b61029c6102bf366004611976565b61077d565b6002545b604051908152602001610280565b6102c86102e4366004611934565b60009081526020819052604090206001015490565b600954600a5460408051928352602083019190915201610280565b61029c610322366004611991565b610850565b61029c610335366004611934565b61087b565b61029c610348366004611991565b6108f6565b6102c8600a5481565b610274610364366004611976565b610954565b61029c6103773660046119bd565b6109da565b61029c61038a366004611976565b610bb2565b61029c61039d366004611934565b610ca0565b61029c6103b0366004611934565b610d1b565b6003546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b6103d5610408366004611a64565b610da4565b61027461041b366004611991565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61045f366004611934565b610dc3565b6102c8600081565b6102c860075481565b610488610483366004611934565b610e3e565b6040516102809190611a86565b6102c860085481565b6102c860095481565b6004546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b6102c860065481565b6104d8610e58565b6040516102809190600060c08201905082518252602083015160208301526040830151604083015273ffffffffffffffffffffffffffffffffffffffff60608401511660608301526080830151608083015273ffffffffffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b6102c860055481565b6104d8610567366004611976565b610f13565b6102c861057a366004611934565b610f8a565b61029c61058d366004611976565b610fa1565b61029c6105a0366004611991565b611071565b6102c87f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b6105f86105da366004611976565b600b6020526000908152604090205460ff8082169161010090041682565b604051610280929190611b49565b61029c610614366004611b66565b611096565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061066f575061066f82611110565b92915050565b6000610680816111a7565b60055482036106bb576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f7a25f4d39c7ef2d9ff33e6304584e4c9fb1532bc39972e2cd34b074c1e40e02b906020015b60405180910390a15050565b6000610703816111a7565b600954821480610711575081155b15610748576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098290556040518281527f87948cba23b87f534057161b507f18cd7f69576b88a81a74c55d8f29dfb06452906020016106ec565b6000610788816111a7565b60045473ffffffffffffffffffffffffffffffffffffffff908116908316036107dd576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f372b5e772b71a68b761c4ac03b59a6a2322bd34ac161ba7029a6a418fe890051906020016106ec565b60008281526020819052604090206001015461086b816111a7565b61087583836111b4565b50505050565b6000610886816111a7565b60085482036108c1576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088290556040518281527f3a1dedaf5733100a92da764c2066bdc86b970e224ee473d515375645ce99a9d2906020016106ec565b73ffffffffffffffffffffffffffffffffffffffff81163314610945576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f82826111e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645602052604081205460ff166109d2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001919050565b73ffffffffffffffffffffffffffffffffffffffff85161580610a11575073ffffffffffffffffffffffffffffffffffffffff8416155b80610a30575073ffffffffffffffffffffffffffffffffffffffff8116155b15610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a927f0000000000000000000000000000000000000000000000000000000000000000611216565b6040517f09c26fb100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906309c26fb190610aef9089908990899089908990600401611bea565b600060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505060028054925090506000610b3283611c8d565b91905055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f68828e0b01cfe3740f67270e157a30f161e6531d36cd5db5797ec0e32d1f6911610b8f60025490565b878787604051610ba29493929190611cc5565b60405180910390a3505050505050565b6000610bbd816111a7565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090208054610100900460ff16610c22576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff8116825560405173ffffffffffffffffffffffffffffffffffffffff8516917f523fff9d18fef7247d13e67b28b58c6173cc8868a73b220fcebfd5887c1135b291610c939160ff1690611d06565b60405180910390a2505050565b6000610cab816111a7565b6006548203610ce6576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068290556040518281527fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de40906020016106ec565b6000610d26816111a7565b600a54821480610d3857506206978082105b15610d6f576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a8290556040518281527f2c941b29cbb54e4feeb31a83ebf90b2ffdd425f3970b341bf588a6ca88a8b56b906020016106ec565b6000828152600160205260408120610dbc9083611223565b9392505050565b6000610dce816111a7565b6007548203610e09576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078290556040518281527f6d3d82f4a368310fc477262ac1c98c96cf147c62b219e94a4acf691400922905906020016106ec565b600081815260016020526040902060609061066f9061122f565b610ebd6040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b506040805160c081018252600654815260085460208201526007549181019190915260035473ffffffffffffffffffffffffffffffffffffffff908116606083015260055460808301526004541660a082015290565b610f786040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b610f8182610954565b5061066f610e58565b600081815260016020526040812061066f9061123c565b6000610fac816111a7565b60035473ffffffffffffffffffffffffffffffffffffffff90811690831603611001576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f33837f672315b6cffcf11894714abfdec631a913c18d7738fcaf40c444376fb690600090a25050565b60008281526020819052604090206001015461108c816111a7565b61087583836111e9565b60006110a1816111a7565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b6020526040902054610100900460ff1615611106576040517f56b89dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f8383611246565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061066f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461066f565b6111b181336113d3565b50565b6000806111c18484611462565b90508015610dbc5760008481526001602052604090206111e1908461155e565b509392505050565b6000806111f68484611580565b90508015610dbc5760008481526001602052604090206111e1908461163b565b600061066f82600061165d565b6000610dbc8383611732565b60606000610dbc8361175c565b600061066f825490565b73ffffffffffffffffffffffffffffffffffffffff82161580159061127c5750600081600381111561127a5761127a611adf565b145b156112b3576040517fa1e9dd9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052808260038111156112d0576112d0611adf565b81526001602091820181905273ffffffffffffffffffffffffffffffffffffffff85166000908152600b9092526040909120825181549192909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600381111561134357611343611adf565b0217905550602091909101518154901515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617905560405173ffffffffffffffffffffffffffffffffffffffff8316907fbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8906113c7908490611d06565b60405180910390a25050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661145e576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114f43390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161066f565b50600061066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117b8565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117ff565b6000814710156116a2576040517fcf47918100000000000000000000000000000000000000000000000000000000815247600482015260248101839052604401611455565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff811661066f576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061174957611749611d14565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156117ac57602002820191906000526020600020905b815481526020019060010190808311611798575b50505050509050919050565b60008181526001830160205260408120546115565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561066f565b600081815260018301602052604081205480156118e8576000611823600183611d43565b855490915060009061183790600190611d43565b905080821461189c57600086600001828154811061185757611857611d14565b906000526020600020015490508087600001848154811061187a5761187a611d14565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806118ad576118ad611d56565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061066f565b600091505061066f565b60006020828403121561190457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dbc57600080fd5b60006020828403121561194657600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197157600080fd5b919050565b60006020828403121561198857600080fd5b610dbc8261194d565b600080604083850312156119a457600080fd5b823591506119b46020840161194d565b90509250929050565b6000806000806000608086880312156119d557600080fd5b6119de8661194d565b94506119ec6020870161194d565b9350604086013567ffffffffffffffff811115611a0857600080fd5b8601601f81018813611a1957600080fd5b803567ffffffffffffffff811115611a3057600080fd5b886020828401011115611a4257600080fd5b60209190910193509150611a586060870161194d565b90509295509295909350565b60008060408385031215611a7757600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015611ad457835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611aa0565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b45577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60408101611b578285611b0e565b82151560208301529392505050565b60008060408385031215611b7957600080fd5b611b828361194d565b9150602083013560048110611b9657600080fd5b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201526000611c36608083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cbe57611cbe611c5e565b5060010190565b848152606060208201526000611cdf606083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff8316604083015295945050505050565b6020810161066f8284611b0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561066f5761066f611c5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122004cc3d27435f63a9b2d95a3a11885d96b818e3a86df73530c60f192f0002bb3664736f6c634300081e003360c060405234801561001057600080fd5b50600160025533608081905260a08190528061423d61007960003960008181610ae701528181610bb80152818161151c01528181611c6e0152818161202e015281816121730152818161245301526127170152600081816103df0152610826015261423d6000f3fe6080604052600436106102345760003560e01c80636d2401c811610138578063bd464115116100b0578063cb3a6b2c1161007f578063dc63f6ae11610064578063dc63f6ae1461078e578063f23a6e61146107ae578063f75166fc146107f357600080fd5b8063cb3a6b2c14610736578063d547741f1461076e57600080fd5b8063bd464115146106c1578063c2986b0e146106e1578063c7395be214610701578063ca15c8731461071657600080fd5b8063a217fddf11610107578063af06216f116100ec578063af06216f14610637578063bb19b4d31461064c578063bc197c811461067c57600080fd5b8063a217fddf146105f5578063a3246ad31461060a57600080fd5b80636d2401c8146105355780639010d07c1461055757806391d148541461057757806393e6c436146105c857600080fd5b8063248a9ca3116101cb5780634517863d1161019a57806359416e0e1161017f57806359416e0e146104ef57806361f438481461050f57806364cde8d21461052257600080fd5b80634517863d1461049b578063564cd00b146104cf57600080fd5b8063248a9ca3146104015780632f2ff15d1461043157806336568abe146104515780633dd781de1461047157600080fd5b8063150b7a0211610207578063150b7a02146102eb57806316ecfdf0146103605780631b8ec5d714610376578063222e9e82146103cd57600080fd5b806301ffc9a71461023957806309c26fb11461026e5780630be4d2b814610290578063147e7e66146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461330b565b610813565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046133b8565b610824565b005b34801561029c57600080fd5b5061028e6102ab366004613435565b610990565b3480156102bc57600080fd5b506102dd6102cb366004613477565b60076020526000908152604090205481565b604051908152602001610265565b3480156102f757600080fd5b5061032f6103063660046135c9565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610265565b34801561036c57600080fd5b506102dd60065481565b34801561038257600080fd5b506003546103a890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610265565b3480156103d957600080fd5b506103a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561040d57600080fd5b506102dd61041c366004613635565b60009081526020819052604090206001015490565b34801561043d57600080fd5b5061028e61044c36600461364e565b610a18565b34801561045d57600080fd5b5061028e61046c36600461364e565b610a43565b34801561047d57600080fd5b50610486610aa1565b60408051928352602083019190915201610265565b3480156104a757600080fd5b506102dd7f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b681565b3480156104db57600080fd5b5061028e6104ea36600461367e565b610b97565b3480156104fb57600080fd5b5061028e61050a36600461374c565b61131c565b61028e61051d366004613635565b6114fb565b61028e6105303660046137d4565b61182b565b34801561054157600080fd5b5061054a611ae5565b6040516102659190613800565b34801561056357600080fd5b506103a861057236600461386c565b611b73565b34801561058357600080fd5b5061025961059236600461364e565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105d457600080fd5b506102dd6105e3366004613477565b60096020526000908152604090205481565b34801561060157600080fd5b506102dd600081565b34801561061657600080fd5b5061062a610625366004613635565b611b92565b604051610265919061388e565b34801561064357600080fd5b50610259611bac565b34801561065857600080fd5b50610259610667366004613635565b60046020526000908152604090205460ff1681565b34801561068857600080fd5b5061032f61069736600461396a565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b3480156106cd57600080fd5b5061028e6106dc36600461374c565b611c0a565b3480156106ed57600080fd5b5061028e6106fc3660046137d4565b611e71565b34801561070d57600080fd5b5061028e611f8c565b34801561072257600080fd5b506102dd610731366004613635565b611fd3565b34801561074257600080fd5b506102dd610751366004613a24565b600860209081526000928352604080842090915290825290205481565b34801561077a57600080fd5b5061028e61078936600461364e565b611fea565b34801561079a57600080fd5b5061028e6107a9366004613a52565b61200f565b3480156107ba57600080fd5b5061032f6107c9366004613af6565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3480156107ff57600080fd5b5061028e61080e3660046137d4565b6123ab565b600061081e82612580565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314158061086b575060035460ff165b156108a2576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ad6000866125d6565b506108d87f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b6856125d6565b5061091883838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0073ffffffffffffffffffffffffffffffffffffffff90931661010002929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090921691909117600117905550505050565b600061099b81612652565b6109da83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b7f121f741ddf8ba42be07a0e28c2017398f83e3766e2f4bfa9ea925307c0c5d1378383604051610a0b929190613b53565b60405180910390a1505050565b600082815260208190526040902060010154610a3381612652565b610a3d83836125d6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a92576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a9c828261265f565b505050565b6006546000908190808203610ae2576040517fbb6aa2ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632a53ff5f6040518163ffffffff1660e01b81526004016040805180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190613ba0565b9092509050610b828284613bf3565b9450610b8e8186613bf3565b93505050509091565b610b9f61268c565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c4c04534336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240160c060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190613c06565b905060005b83811015611310576000858583818110610c8c57610c8c613c97565b905060e00201803603810190610ca29190613cc6565b60a081015160009081526004602052604090205490915060ff1615610cf3576040517fc41a375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160c08201516040805160208101929092527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16908201526054016040516020818303038152906040528051906020012014610d83576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516000610d90826126cd565b60a0840151600090815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055608085015160608601519293509091610de59190613bf3565b9050610df0816127c3565b610df86132ed565b6000808080866003811115610e0f57610e0f613d4a565b1480610e2c57506001866003811115610e2a57610e2a613d4a565b145b15610e5357610e448a89606001518a608001516127fd565b91955093509150869050610f3f565b6002866003811115610e6757610e67613d4a565b1480610e8457506003866003811115610e8257610e82613d4a565b145b15610f0d57610e928a6128ff565b606089015160808a015160a08d0151604084015160208501518551959950939750919550935091610ec39190613bf3565b610ecd9190613bf3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604081208054909190610f02908490613d79565b90915550610f3f9050565b6040517ff599342800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526007602052604081208054879290610f74908490613d79565b9091555050835160608b015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152604080832093861683529290529081208054909190610fc4908490613bf3565b9091555050602080850151600354610100900473ffffffffffffffffffffffffffffffffffffffff90811660009081526008845260408082209286168252919093528220805491929091611019908490613bf3565b909155505060408085015173ffffffffffffffffffffffffffffffffffffffff8d8116600090815260086020908152848220928616825291909152918220805491929091611068908490613bf3565b909155505060208089015173ffffffffffffffffffffffffffffffffffffffff9081166000908152600883526040808220928b16825291909252812080548592906110b4908490613bf3565b909155505060408089015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152838220928b168252919091529081208054849290611102908490613bf3565b925050819055508673ffffffffffffffffffffffffffffffffffffffff167f68509a400b7cc402898b7aacefe7cf662539f64e5a79d4234c58734256b5e224866040518060a001604052808e6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506040518060a001604052808960006003811061129157611291613c97565b60200201518152602001896001600381106112ae576112ae613c97565b60200201518152602001896002600381106112cb576112cb613c97565b60200201518152602001888152602001878152508c60a001516040516112f49493929190613d8c565b60405180910390a2505060019096019550610c70945050505050565b5050610a9c6001600255565b600061132781612652565b61132f61268c565b600061133a876126cd565b9050600281600381111561135057611350613d4a565b036113ff578461135f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611394908490613bf3565b909155506113a790508833308a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167fd6d003c3b12171676fc9412009c65e678368ee9deedce21d9efe7c9d9d34a1c18289896040516113f193929190613e59565b60405180910390a2506114e8565b600381600381111561141357611413613d4a565b03610f0d5760006114248585612a5c565b905061142f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611464908490613bf3565b9091555061147990508833308a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f4f7bc006fa3e8a3fde1c087dfff50e0cda2cc7791fa6343ee9f4c395e3da0d37838a8a8a8a6040516114de959493929190613e7c565b60405180910390a3505b506114f36001600255565b505050505050565b600061150681612652565b61150e61268c565b81611518816127c3565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b013ab386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190613eb5565b9050600073ffffffffffffffffffffffffffffffffffffffff821661160857843414611601576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611793565b3415611640576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d19190613ed2565b90506116f573ffffffffffffffffffffffffffffffffffffffff8416333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117859190613ed2565b61178f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812080548392906117c8908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f85dd53a04234402c5e629c4ab3051ff7aa3d103e7d22804a9713094c50e6ca929060200160405180910390a35050506118276001600255565b5050565b600061183681612652565b61183e61268c565b81611848816127c3565b6000611853856126cd565b905060008082600381111561186a5761186a613d4a565b036118af578434146118a8576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611a53565b60018260038111156118c3576118c3613d4a565b03610f0d573415611900576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190613ed2565b90506119b573ffffffffffffffffffffffffffffffffffffffff8816333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8916906370a0823190602401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613ed2565b611a4f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff861660009081526007602052604081208054839290611a88908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8716907f78cae0ecd388607ec2d56e9b6f673cd0a042c8407cdfc7b578e9707223ee64b29060200160405180910390a2505050610a9c6001600255565b60058054611af290613eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1e90613eeb565b8015611b6b5780601f10611b4057610100808354040283529160200191611b6b565b820191906000526020600020905b815481529060010190602001808311611b4e57829003601f168201915b505050505081565b6000828152600160205260408120611b8b9083612bbd565b9392505050565b600081815260016020526040902060609061081e90612bc9565b6000806000611bb9610aa1565b9150915081421080611bca57508042115b15611c01576040517fbd95a86000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019250505090565b6000611c1581612652565b611c1d61268c565b611c25611bac565b506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda9190613f4d565b5090506002816003811115611cf157611cf1613d4a565b03611d925784611d00816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611d35908490613d79565b90915550611d4890508830338a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167f9345f22c71af54e80c416040732be09908da822fef94e166af33535f824c51c78289896040516113f193929190613e59565b6003816003811115611da657611da6613d4a565b03610f0d576000611db78585612a5c565b9050611dc2816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611df7908490613d79565b90915550611e0c90508830338a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f0dc54c2a40ababb385f82389a070a55b00cd3fae93fc5b1916924ade1633503b838a8a8a8a6040516114de959493929190613e7c565b6000611e7c81612652565b611e8461268c565b611e8c611bac565b5081611e97816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208054859290611ecc908490613d79565b909155505073ffffffffffffffffffffffffffffffffffffffff8416611f1357611f0e83335b73ffffffffffffffffffffffffffffffffffffffff1690612bd6565b611f34565b611f3473ffffffffffffffffffffffffffffffffffffffff85163385612c91565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907ff57fb8b8dfa150e93ac811898e14550baf3452656f9d4e8058a5c24efa9ecaad9060200160405180910390a350610a9c6001600255565b6000611f9781612652565b4260068190556040519081527f01909d53c76ffada2e8f99e82b9afa64e37cfe2bc2c1fa7ba5959fc62e4baa7f9060200160405180910390a150565b600081815260016020526040812061081e90612ccf565b60008281526020819052604090206001015461200581612652565b610a3d838361265f565b61201761268c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156120bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e19190613f86565b5073ffffffffffffffffffffffffffffffffffffffff8087166000908152600860209081526040808320938b1683529290529081208054879290612126908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190613f4d565b50905060008160038111156121f6576121f6613d4a565b036122205761221b73ffffffffffffffffffffffffffffffffffffffff881687612bd6565b61232a565b600181600381111561223457612234613d4a565b0361225a5761221b73ffffffffffffffffffffffffffffffffffffffff89168888612c91565b600281600381111561226e5761226e613d4a565b036122c057838681146122ad576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ba89308a8989612981565b5061232a565b60038160038111156122d4576122d4613d4a565b03610f0d576122e38383612a5c565b861461231b576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61221b88308988888888612a9d565b8773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0c3f6188054cfad2267b81cfd4ec43dcf3245a8b92e59cc44d6b4e85a5867264888888888860405161238f959493929190613e7c565b60405180910390a3506123a26001600255565b50505050505050565b60006123b681612652565b6123be61268c565b6123c6611bac565b50816123d1816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208054859290612406908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf9190613f4d565b50905060008160038111156124d6576124d6613d4a565b036124ea576124e58433611ef2565b612524565b60018160038111156124fe576124fe613d4a565b03610f0d576124e573ffffffffffffffffffffffffffffffffffffffff86163386612c91565b8473ffffffffffffffffffffffffffffffffffffffff167f2bde45b775c7b186ca5991ba05250885d44cad19752d5e84f715be315dc60ad08560405161256c91815260200190565b60405180910390a25050610a9c6001600255565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061081e575061081e82612cd9565b6000806125e38484612d2f565b90508015611b8b5760008481526001602052604090206126039084612e2b565b509392505050565b8051600003612646576040517fd07b00d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056118278282613fef565b61265c8133612e4d565b50565b60008061266c8484612ed3565b90508015611b8b5760008481526001602052604090206126039084612f8e565b60028054036126c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b6040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f2e2e2aa906024016040805180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190613f4d565b9092509050806127bd576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b8060000361265c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128056132ed565b600080806128138587613bf3565b9050600081612823886064614108565b61282d919061411f565b90506040518060600160405280612710848b6000015161284d9190614108565b612857919061411f565b8152602001612710848b6040015161286f9190614108565b612879919061411f565b8152602001612710848b602001516128919190614108565b61289b919061411f565b90526040810151602082015182519297506000926128b99086613d79565b6128c39190613d79565b6128cd9190613d79565b905060646128db8383614108565b6128e5919061411f565b94506128f18582613d79565b935050505093509350939050565b6129076132ed565b60808201516040805160608101909152835181906127109061292a908590614108565b612934919061411f565b815260200161271083866040015161294c9190614108565b612956919061411f565b815260200161271083866020015161296e9190614108565b612978919061411f565b90529392505050565b60005b818110156114f3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e86868686868181106129bc576129bc613c97565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015612a3857600080fd5b505af1158015612a4c573d6000803e3d6000fd5b5050600190920191506129849050565b6000805b82811015612a9657838382818110612a7a57612a7a613c97565b9050602002013582612a8c9190613bf3565b9150600101612a60565b5092915050565b6040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690632eb2c2d690612af99089908990899089908990899060040161415a565b600060405180830381600087803b158015612b1357600080fd5b505af1158015612b27573d6000803e3d6000fd5b5050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a3d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612fb0565b6000611b8b8383613054565b60606000611b8b8361307e565b80471015612c1e576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114612c79576040519150601f19603f3d011682016040523d82523d6000602084013e612c7e565b606091505b509150915081610a3d57610a3d816130da565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610a9c91859182169063a9059cbb90606401612b76565b600061081e825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061081e575061081e8261311c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612dc13390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161081e565b50600061081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131b3565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611827576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401612c15565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131fa565b600080602060008451602086016000885af180612fd3576040513d6000823e3d81fd5b50506000513d91508115612feb578060011415613005565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610a3d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401612c15565b600082600001828154811061306b5761306b613c97565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ce57602002820191906000526020600020905b8154815260200190600101908083116130ba575b50505050509050919050565b8051156130ea5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061081e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081e565b6000818152600183016020526040812054612e235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561081e565b600081815260018301602052604081205480156132e357600061321e600183613d79565b855490915060009061323290600190613d79565b905080821461329757600086600001828154811061325257613252613c97565b906000526020600020015490508087600001848154811061327557613275613c97565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806132a8576132a86141d8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061081e565b600091505061081e565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561331d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b8b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461265c57600080fd5b60008083601f84011261338157600080fd5b50813567ffffffffffffffff81111561339957600080fd5b6020830191508360208285010111156133b157600080fd5b9250929050565b6000806000806000608086880312156133d057600080fd5b85356133db8161334d565b945060208601356133eb8161334d565b9350604086013567ffffffffffffffff81111561340757600080fd5b6134138882890161336f565b90945092505060608601356134278161334d565b809150509295509295909350565b6000806020838503121561344857600080fd5b823567ffffffffffffffff81111561345f57600080fd5b61346b8582860161336f565b90969095509350505050565b60006020828403121561348957600080fd5b8135611b8b8161334d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156134e6576134e6613494565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561353357613533613494565b604052919050565b600082601f83011261354c57600080fd5b813567ffffffffffffffff81111561356657613566613494565b61359760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016134ec565b8181528460208386010111156135ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156135df57600080fd5b84356135ea8161334d565b935060208501356135fa8161334d565b925060408501359150606085013567ffffffffffffffff81111561361d57600080fd5b6136298782880161353b565b91505092959194509250565b60006020828403121561364757600080fd5b5035919050565b6000806040838503121561366157600080fd5b8235915060208301356136738161334d565b809150509250929050565b60008060006040848603121561369357600080fd5b833567ffffffffffffffff8111156136aa57600080fd5b8401601f810186136136bb57600080fd5b803567ffffffffffffffff8111156136d257600080fd5b86602060e0830284010111156136e757600080fd5b6020918201945092508401356136fc8161334d565b809150509250925092565b60008083601f84011261371957600080fd5b50813567ffffffffffffffff81111561373157600080fd5b6020830191508360208260051b85010111156133b157600080fd5b60008060008060006060868803121561376457600080fd5b853561376f8161334d565b9450602086013567ffffffffffffffff81111561378b57600080fd5b61379788828901613707565b909550935050604086013567ffffffffffffffff8111156137b757600080fd5b6137c388828901613707565b969995985093965092949392505050565b600080604083850312156137e757600080fd5b82356137f28161334d565b946020939093013593505050565b602081526000825180602084015260005b8181101561382e5760208186018101516040868401015201613811565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6000806040838503121561387f57600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156138dc57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016138a8565b509095945050505050565b600082601f8301126138f857600080fd5b813567ffffffffffffffff81111561391257613912613494565b8060051b613922602082016134ec565b9182526020818501810192908101908684111561393e57600080fd5b6020860192505b83831015613960578235825260209283019290910190613945565b9695505050505050565b600080600080600060a0868803121561398257600080fd5b853561398d8161334d565b9450602086013561399d8161334d565b9350604086013567ffffffffffffffff8111156139b957600080fd5b6139c5888289016138e7565b935050606086013567ffffffffffffffff8111156139e257600080fd5b6139ee888289016138e7565b925050608086013567ffffffffffffffff811115613a0b57600080fd5b613a178882890161353b565b9150509295509295909350565b60008060408385031215613a3757600080fd5b8235613a428161334d565b915060208301356136738161334d565b600080600080600080600060a0888a031215613a6d57600080fd5b8735613a788161334d565b96506020880135613a888161334d565b955060408801359450606088013567ffffffffffffffff811115613aab57600080fd5b613ab78a828b01613707565b909550935050608088013567ffffffffffffffff811115613ad757600080fd5b613ae38a828b01613707565b989b979a50959850939692959293505050565b600080600080600060a08688031215613b0e57600080fd5b8535613b198161334d565b94506020860135613b298161334d565b93506040860135925060608601359150608086013567ffffffffffffffff811115613a0b57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60008060408385031215613bb357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561081e5761081e613bc4565b600060c0828403128015613c1957600080fd5b5060405160009060c0810167ffffffffffffffff81118282101715613c4057613c40613494565b6040908152845182526020808601519083015284810151908201526060840151613c698161334d565b60608201526080848101519082015260a08401519150613c888261334d565b60a08101919091529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060e0828403128015613cd957600080fd5b506000613ce46134c3565b8335613cef8161334d565b81526020840135613cff8161334d565b60208201526040840135613d128161334d565b6040820152606084810135908201526080808501359082015260a0808501359082015260c09384013593810193909352509092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8181038181111561081e5761081e613bc4565b8481526101808101602082018560005b6005811015613dd157815173ffffffffffffffffffffffffffffffffffffffff16835260209283019290910190600101613d9c565b50505060c082018460005b6005811015613dfb578151835260209283019290910190600101613ddc565b5050508261016083015295945050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613e4057600080fd5b8260051b80836020870137939093016020019392505050565b838152604060208201526000613e73604083018486613e0e565b95945050505050565b858152606060208201526000613e96606083018688613e0e565b8281036040840152613ea9818587613e0e565b98975050505050505050565b600060208284031215613ec757600080fd5b8151611b8b8161334d565b600060208284031215613ee457600080fd5b5051919050565b600181811c90821680613eff57607f821691505b6020821081036127bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80518015158114613f4857600080fd5b919050565b60008060408385031215613f6057600080fd5b825160048110613f6f57600080fd5b9150613f7d60208401613f38565b90509250929050565b600060208284031215613f9857600080fd5b611b8b82613f38565b601f821115610a9c57806000526020600020601f840160051c81016020851015613fc85750805b601f840160051c820191505b81811015613fe85760008155600101613fd4565b5050505050565b815167ffffffffffffffff81111561400957614009613494565b61401d816140178454613eeb565b84613fa1565b6020601f82116001811461406f57600083156140395750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613fe8565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156140bd578785015182556020948501946001909201910161409d565b50848210156140f957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b808202811582820484141761081e5761081e613bc4565b600082614155577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260a0604082015260006141a660a083018688613e0e565b82810360608401526141b9818587613e0e565b8381036080909401939093525050600081526020019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122045750a4f7b76b5361e7efd76223fd062b4f34721c207ae16a4ae5410c876dd0e64736f6c634300081e003300000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3","r":"0xfcfc17334b642cfc5fcefd9119ceb27c4b8f869a7a4ede268f563bc193a67293","s":"0x760a00ce71022e7f58014f8a003a94e408ae8edd92384e41d37da9267c5811ea","yParity":"0x1","v":"0x1","hash":"0x7d0ae7753456b23cbe621db2fe667be368cad39809b4079abaef8ce28eb033f3"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xb8cbcab6ae642e8ae641c20fe1aed16ebde840c15e444b787c8acc6e2c3c8cd7","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0xcfe205c1232809a322fda049c7ec28a3cbcc1dd37858ef9136a28fea2532cb56","transactionsRoot":"0xca389d9badf4abc3cb816b9ad472c5f2aaa2f1f993eb28007ae4d3c2dd273d70","receiptsRoot":"0xcd43d8734ba56ad9fb59547244f1d98b06ed679dbad9d7f092ea0ea79e340a86","logsBloom":"0x00000004040000000000000000000000400000000000000000800000000000000000000000000000000000020000000000000000008000000000000000000000000000000000000000000000000002000001000000000000000000000000010000000000020000040000000100000800000000800000000000000000000000400000000000000000000800000000000000000000000080010000000000800000000000000000000008000000000000000000000000000000001000000000000000000020000000200000000000000000000000002404000100000000000020000000000000000000000000000000000000000000000000080100000000000000","difficulty":"0x0","number":"0x13","gasLimit":"0x1c9c380","gasUsed":"0xebe8f","timestamp":"0x695e8833","extraData":"0x","mixHash":"0x43229f52c5372ba6b97d663b0b4b5a656685b67e6ab5a2a9af2481cec23856b6","nonce":"0x0000000000000000","baseFeePerGas":"0x6087e00","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x12","gas":"0xebe8f","maxFeePerGas":"0x7a2bf78","maxPriorityFeePerGas":"0x1c94baa","to":null,"value":"0x0","accessList":[],"input":"0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000","r":"0xea53cc96865a5fcaceece4b0b95ab72266e814d8b4ae7ba1b4fada7b94697d29","s":"0x6bb3c312ce421e0f1940529460b10ba130178da59475feb17d71b9099462a8bb","yParity":"0x0","v":"0x0","hash":"0x23223c57a6666793ebddd9fd613ae7a7e76538c9b8387ff78f73037123e391ee"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x284fd0ca142d3800e6845c680dc92f86e1563d0f347fdc50c741616b67de7196","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x51e7ebc41624cf6bc8dd8544d42d767d55ace8c7b6b3e11a69ab5934fffc5714","transactionsRoot":"0x54ea177cf5662061fe4bab42331c5d0f2450d0f78a4bd61b3de9f7576f96ff56","receiptsRoot":"0x28d4d2476e1b244c4016b285ba8df54e69ca5d8b91277c11c8087a7d74fed749","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000001000000000000000000100000000000000000000","difficulty":"0x0","number":"0x23","gasLimit":"0x1c9c380","gasUsed":"0x7397","timestamp":"0x695e8834","extraData":"0x","mixHash":"0x0fc818f3455f9c46fc35d458a85dd462f6c1b9b993c145449435638764419a12","nonce":"0x0000000000000000","baseFeePerGas":"0xcf1471","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x22","gas":"0x7964","maxFeePerGas":"0x10615df","maxPriorityFeePerGas":"0x3ed52c","to":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","value":"0x0","accessList":[],"input":"0xf58280d20000000000000000000000000000000000000000000000000000000000000000","r":"0xd18c1078436ef94f51bd1b45ca692bc4288597a18d5ca3ae6db97e5790606305","s":"0x1f8073e445b05366a8e1f7649098d640bc2c114f0f987f3c95cb4bab430ba27b","yParity":"0x1","v":"0x1","hash":"0x6b7ebe88060a523d862c4481d896b8891066a3dd816e31f67e9593622dcff5e3"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x58d715b1290ab5061d0959e315106e85366d6e8945b194ea779cdc1801e65418","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x8a9101dad4c972cdbcb0e3010f51846a4b9b119ffe165272b18e21c038835a62","transactionsRoot":"0xc2cbf81e8faf1f47525efa581c5c2373e63cf5022d2537b948c01cc635ef5a72","receiptsRoot":"0x925cdadff1c3920525a223d7d368ab6d16ee7ab6e6291160f77286cc092ead88","logsBloom":"0x00800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000008000000000","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0xc848","timestamp":"0x695e8831","extraData":"0x","mixHash":"0xccc4b87d0fb363f914839f63bcd43100ed690cd40dce85cd3d1e1b758eabc222","nonce":"0x0000000000000000","baseFeePerGas":"0x121b57e4","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0x9","gas":"0xc848","maxFeePerGas":"0x16ea9b3c","maxPriorityFeePerGas":"0x57e7893","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","value":"0x0","accessList":[],"input":"0x40c10f1900000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","r":"0xc89b8cf6a24211e9eb45c25d9c612a260107eca27f34dba380f61ad7cf94af6b","s":"0x348f35999c474586c4073ca43c90177b4805260e59140e38c03b2359c34ffcd7","yParity":"0x1","v":"0x1","hash":"0x9339f947632797d272a80b2506bf6162466ec9cd6134e24e4fe9a212f62c820a"},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xb469cfb69eeb63930dd7020c10f4ec545d69539a0b6030c298c412692f024ef0","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","miner":"0x0000000000000000000000000000000000000000","stateRoot":"0x73a0e300894f97fe08c2ca114a246f9f30d725a165d18004e91cc3fc9cf502c1","transactionsRoot":"0x5997140a58bc1145efdcec2dc94d0de1327e070eefd16f0b36d5fb095f908065","receiptsRoot":"0xf203f2d1edde7be6f3d876eedc3231fb0b57b0ac335f92a34e91bbe214422723","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x10","gasLimit":"0x1c9c380","gasUsed":"0x5582","timestamp":"0x695e8832","extraData":"0x","mixHash":"0xc2893031ea66db967fc187de5276adaf9514685f930ddbfcf3b0c7d26fc517fd","nonce":"0x0000000000000000","baseFeePerGas":"0x8c714b0","withdrawalsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","blobGasUsed":"0x0","excessBlobGas":"0x0","parentBeaconBlockRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","requestsHash":"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},"transactions":[{"transaction":{"type":"0x2","chainId":"0x7a69","nonce":"0xf","gas":"0x5582","maxFeePerGas":"0xb1bf62e","maxPriorityFeePerGas":"0x2a3509f","to":"0x0000000000000000000000000000000000000000","value":"0x0","accessList":[],"input":"0x96dc1dc10000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000001","r":"0xc0dc50e47f5a2cd3e524b5047c91aa21076742ef913a2398187aea116f541efb","s":"0x74d870e5651ffa918c8fda34ea80edbb870cb70d1659705c0f772965cb1c34e2","yParity":"0x1","v":"0x1","hash":"0xafb80cd5541de0e39e0c08dd8316b3f2d5400607e4769455f0f19513fad4bc28"},"impersonated_sender":null}],"ommers":[]}],"transactions":[{"info":{"transaction_hash":"0xa987f5173f13abbd87f88c6ff56b6ce3cb3daba0e9bafc574a5035a50e3a58d3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15ddc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb97489000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":34347,"gas_limit":34776,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9a676e781a523b5d0c0e43731313a708cb607508","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15ddc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb97489000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":29423,"gas_limit":29423,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0xdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb97489","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":20,"gas_used":56291},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xdbe3","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0xdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb97489","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000800000000000000000000000001000000000000000000000000000202000000000000000000000002000000100000000000000000000000000000000000000000000000000000000000000000000000000000002"},"block_hash":"0x86f82f17606f02f04bdad632272be9110e6bae27e37101f67c22c45e4186ab6d","block_number":21},{"info":{"transaction_hash":"0x251a2783b4c94184ce04176a761ab7cec0c0e6c5a0f90a0eddb4877379f723d2","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x09635f643e140090a9a8dcd712ed6285858cebef","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60806040526201518060055534801561001757600080fd5b50600160035561002860003361002e565b50610167565b60008061003b8484610066565b9050801561005d57600084815260016020526040902061005b9084610110565b505b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610108576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100c03390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610060565b506000610060565b600061005d836001600160a01b038416600081815260018301602052604081205461010857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610060565b611d29806101766000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80638a2ddd03116100e3578063b1ee828c1161008c578063d547741f11610066578063d547741f14610400578063e8ff793614610413578063fdea36571461042657600080fd5b8063b1ee828c1461037c578063b228c1c4146103da578063ca15c873146103ed57600080fd5b8063a217fddf116100bd578063a217fddf1461034c578063a3246ad314610354578063b187bd261461037457600080fd5b80638a2ddd03146102ed5780639010d07c146102f557806391d148541461030857600080fd5b8063595c6a67116101455780635c975abb1161011f5780635c975abb146102a45780637ba191b9146102af57806382eb1152146102c257600080fd5b8063595c6a671461027657806359c9eb901461027e5780635bb478081461029157600080fd5b80632f2ff15d116101765780632f2ff15d1461023b57806336568abe1461025057806355dff0e31461026357600080fd5b806301ffc9a71461019d578063222e9e82146101c5578063248a9ca31461020a575b600080fd5b6101b06101ab3660046114cc565b61042f565b60405190151581526020015b60405180910390f35b6004546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b61022d61021836600461150e565b60009081526020819052604090206001015490565b6040519081526020016101bc565b61024e610249366004611550565b61048b565b005b61024e61025e366004611550565b6104b6565b61024e61027136600461157c565b610514565b61024e6105e4565b61024e61028c36600461150e565b6105fa565b61024e61029f3660046115a6565b61067c565b60025460ff166101b0565b61024e6102bd3660046115c1565b61076c565b61022d6102d0366004611638565b600660209081526000928352604080842090915290825290205481565b61024e610a53565b6101e5610303366004611662565b610a66565b6101b0610316366004611550565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61022d600081565b61036761036236600461150e565b610a85565b6040516101bc9190611684565b6101b0610a9f565b6103bf61038a3660046115a6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600760205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016101bc565b61024e6103e83660046117cb565b610ab2565b61022d6103fb36600461150e565b610ca5565b61024e61040e366004611550565b610cbc565b61024e61042136600461157c565b610ce1565b61022d60055481565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610485575061048582610dcb565b92915050565b6000828152602081905260409020600101546104a681610e62565b6104b08383610e6c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610505576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050f8282610ea1565b505050565b600061051f81610e62565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040812054900361057d576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526007602052604090819020849055517f3a22865564a15e1d9be087fd90192483ce3d3e86d8784aba2dafd45f85221283906105d79085815260200190565b60405180910390a2505050565b60006105ef81610e62565b6105f7610ece565b50565b600061060581610e62565b6005548203610640576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527fcb7ee917d029d22a071ecb2b3db0556ca49424002997ae83d8a4fff552ef72f69060200160405180910390a15050565b600061068781610e62565b73ffffffffffffffffffffffffffffffffffffffff82166106d4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045473ffffffffffffffffffffffffffffffffffffffff1615610724576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610774610f53565b61077c610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064015b60405180910390fd5b3360005b82811015610a43573684848381811061081f5761081f6119cc565b905060200281019061083191906119fb565b9050600060078161084860408501602086016115a6565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080549091501561090a57600554816002015461088a9190611a68565b421061089e57600060018201554260028201555b805460018201546108b490604085013590611a68565b11156108ec576040517f7329a9df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81604001358160010160008282546109049190611a68565b90915550505b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084602001602081019061095f91906115a6565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002091909155610996908301836115a6565b73ffffffffffffffffffffffffffffffffffffffff1663dc63f6ae6109c160408501602086016115a6565b8660408601356109d46060880188611a7b565b6109e160808a018a611a7b565b6040518863ffffffff1660e01b8152600401610a039796959493929190611b35565b600060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b50506001909401935061080492505050565b5050610a4f6001600355565b5050565b6000610a5e81610e62565b6105f7610fd5565b6000828152600160205260408120610a7e908361102c565b9392505050565b600081815260016020526040902060609061048590611038565b6000610aad60025460ff1690565b905090565b610aba610f53565b610ac2610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064016107f7565b60045473ffffffffffffffffffffffffffffffffffffffff16635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190611ba8565b5060005b8251811015610c9a576000838281518110610c0e57610c0e6119cc565b60200260200101519050806000015173ffffffffffffffffffffffffffffffffffffffff1663564cd00b8260200151856040518363ffffffff1660e01b8152600401610c5b929190611bca565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505060019093019250610bf1915050565b50610a4f6001600355565b600081815260016020526040812061048590611045565b600082815260208190526040902060010154610cd781610e62565b6104b08383610ea1565b6000610cec81610e62565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205415610d49576040517fdd6f914400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606081018252838152600060208083018281524284860190815273ffffffffffffffffffffffffffffffffffffffff8916808552600784529386902094518555905160018501555160029093019290925591518481527f5cd914c3e9450bdc97363f4edb9c4e5abcd1ef53b7a14e0c6c6aea850975758391016105d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061048557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610485565b6105f7813361104f565b600080610e7984846110d5565b90508015610a7e576000848152600160205260409020610e9990846111d1565b509392505050565b600080610eae84846111f3565b90508015610a7e576000848152600160205260409020610e9990846112ae565b610ed6610f96565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f293390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600260035403610f8f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615610fd3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610fdd6112d0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610f29565b6000610a7e838361130c565b60606000610a7e83611336565b6000610485825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016107f7565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556111673390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610485565b506000610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff8416611392565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff84166113d9565b60025460ff16610fd3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826000018281548110611323576113236119cc565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561138657602002820191906000526020600020905b815481526020019060010190808311611372575b50505050509050919050565b60008181526001830160205260408120546111c957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610485565b600081815260018301602052604081205480156114c25760006113fd600183611cb1565b855490915060009061141190600190611cb1565b9050808214611476576000866000018281548110611431576114316119cc565b9060005260206000200154905080876000018481548110611454576114546119cc565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061148757611487611cc4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610485565b6000915050610485565b6000602082840312156114de57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a7e57600080fd5b60006020828403121561152057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461154b57600080fd5b919050565b6000806040838503121561156357600080fd5b8235915061157360208401611527565b90509250929050565b6000806040838503121561158f57600080fd5b61159883611527565b946020939093013593505050565b6000602082840312156115b857600080fd5b610a7e82611527565b600080602083850312156115d457600080fd5b823567ffffffffffffffff8111156115eb57600080fd5b8301601f810185136115fc57600080fd5b803567ffffffffffffffff81111561161357600080fd5b8560208260051b840101111561162857600080fd5b6020919091019590945092505050565b6000806040838503121561164b57600080fd5b61165483611527565b915061157360208401611527565b6000806040838503121561167557600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156116d257835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161169e565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561172f5761172f6116dd565b60405290565b60405160e0810167ffffffffffffffff8111828210171561172f5761172f6116dd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561179f5761179f6116dd565b604052919050565b600067ffffffffffffffff8211156117c1576117c16116dd565b5060051b60200190565b600080604083850312156117de57600080fd5b823567ffffffffffffffff8111156117f557600080fd5b8301601f8101851361180657600080fd5b8035611819611814826117a7565b611758565b8082825260208201915060208360051b85010192508783111561183b57600080fd5b602084015b838110156119b957803567ffffffffffffffff81111561185f57600080fd5b85016040818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561189357600080fd5b61189b61170c565b6118a760208301611527565b8152604082013567ffffffffffffffff8111156118c357600080fd5b6020818401019250508a601f8301126118db57600080fd5b81356118e9611814826117a7565b80828252602082019150602060e0840286010192508d83111561190b57600080fd5b6020850194505b8285101561199a5760e0858f03121561192a57600080fd5b611932611735565b61193b86611527565b815261194960208701611527565b602082015261195a60408701611527565b6040820152606086810135908201526080808701359082015260a0808701359082015260c08087013590820152825260e090940193602090910190611912565b8060208501525050508085525050602083019250602081019050611840565b5094506115739250505060208401611527565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112611a2f57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561048557610485611a39565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ab057600080fd5b83018035915067ffffffffffffffff821115611acb57600080fd5b6020019150600581901b3603821315611ae357600080fd5b9250929050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611b1c57600080fd5b8260051b80836020870137939093016020019392505050565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015260a060608201526000611b8760a083018688611aea565b8281036080840152611b9a818587611aea565b9a9950505050505050505050565b600060208284031215611bba57600080fd5b81518015158114610a7e57600080fd5b6040808252835190820181905260009060208501906060840190835b81811015611c8a57835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff6040820151166040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501525060e083019250602084019350600181019050611be6565b505073ffffffffffffffffffffffffffffffffffffffff851660208501529150610a7e9050565b8181038181111561048557610485611a39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122036c010d28b40fdfe09bd45eef1f74644b1bcd2f5179d931c1c4a46d8c06cec3d64736f6c634300081e0033","output":"0x608060405234801561001057600080fd5b50600436106101985760003560e01c80638a2ddd03116100e3578063b1ee828c1161008c578063d547741f11610066578063d547741f14610400578063e8ff793614610413578063fdea36571461042657600080fd5b8063b1ee828c1461037c578063b228c1c4146103da578063ca15c873146103ed57600080fd5b8063a217fddf116100bd578063a217fddf1461034c578063a3246ad314610354578063b187bd261461037457600080fd5b80638a2ddd03146102ed5780639010d07c146102f557806391d148541461030857600080fd5b8063595c6a67116101455780635c975abb1161011f5780635c975abb146102a45780637ba191b9146102af57806382eb1152146102c257600080fd5b8063595c6a671461027657806359c9eb901461027e5780635bb478081461029157600080fd5b80632f2ff15d116101765780632f2ff15d1461023b57806336568abe1461025057806355dff0e31461026357600080fd5b806301ffc9a71461019d578063222e9e82146101c5578063248a9ca31461020a575b600080fd5b6101b06101ab3660046114cc565b61042f565b60405190151581526020015b60405180910390f35b6004546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b61022d61021836600461150e565b60009081526020819052604090206001015490565b6040519081526020016101bc565b61024e610249366004611550565b61048b565b005b61024e61025e366004611550565b6104b6565b61024e61027136600461157c565b610514565b61024e6105e4565b61024e61028c36600461150e565b6105fa565b61024e61029f3660046115a6565b61067c565b60025460ff166101b0565b61024e6102bd3660046115c1565b61076c565b61022d6102d0366004611638565b600660209081526000928352604080842090915290825290205481565b61024e610a53565b6101e5610303366004611662565b610a66565b6101b0610316366004611550565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61022d600081565b61036761036236600461150e565b610a85565b6040516101bc9190611684565b6101b0610a9f565b6103bf61038a3660046115a6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600760205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016101bc565b61024e6103e83660046117cb565b610ab2565b61022d6103fb36600461150e565b610ca5565b61024e61040e366004611550565b610cbc565b61024e61042136600461157c565b610ce1565b61022d60055481565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610485575061048582610dcb565b92915050565b6000828152602081905260409020600101546104a681610e62565b6104b08383610e6c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610505576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050f8282610ea1565b505050565b600061051f81610e62565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040812054900361057d576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526007602052604090819020849055517f3a22865564a15e1d9be087fd90192483ce3d3e86d8784aba2dafd45f85221283906105d79085815260200190565b60405180910390a2505050565b60006105ef81610e62565b6105f7610ece565b50565b600061060581610e62565b6005548203610640576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527fcb7ee917d029d22a071ecb2b3db0556ca49424002997ae83d8a4fff552ef72f69060200160405180910390a15050565b600061068781610e62565b73ffffffffffffffffffffffffffffffffffffffff82166106d4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045473ffffffffffffffffffffffffffffffffffffffff1615610724576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610774610f53565b61077c610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064015b60405180910390fd5b3360005b82811015610a43573684848381811061081f5761081f6119cc565b905060200281019061083191906119fb565b9050600060078161084860408501602086016115a6565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080549091501561090a57600554816002015461088a9190611a68565b421061089e57600060018201554260028201555b805460018201546108b490604085013590611a68565b11156108ec576040517f7329a9df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81604001358160010160008282546109049190611a68565b90915550505b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084602001602081019061095f91906115a6565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002091909155610996908301836115a6565b73ffffffffffffffffffffffffffffffffffffffff1663dc63f6ae6109c160408501602086016115a6565b8660408601356109d46060880188611a7b565b6109e160808a018a611a7b565b6040518863ffffffff1660e01b8152600401610a039796959493929190611b35565b600060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b50506001909401935061080492505050565b5050610a4f6001600355565b5050565b6000610a5e81610e62565b6105f7610fd5565b6000828152600160205260408120610a7e908361102c565b9392505050565b600081815260016020526040902060609061048590611038565b6000610aad60025460ff1690565b905090565b610aba610f53565b610ac2610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064016107f7565b60045473ffffffffffffffffffffffffffffffffffffffff16635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190611ba8565b5060005b8251811015610c9a576000838281518110610c0e57610c0e6119cc565b60200260200101519050806000015173ffffffffffffffffffffffffffffffffffffffff1663564cd00b8260200151856040518363ffffffff1660e01b8152600401610c5b929190611bca565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505060019093019250610bf1915050565b50610a4f6001600355565b600081815260016020526040812061048590611045565b600082815260208190526040902060010154610cd781610e62565b6104b08383610ea1565b6000610cec81610e62565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205415610d49576040517fdd6f914400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606081018252838152600060208083018281524284860190815273ffffffffffffffffffffffffffffffffffffffff8916808552600784529386902094518555905160018501555160029093019290925591518481527f5cd914c3e9450bdc97363f4edb9c4e5abcd1ef53b7a14e0c6c6aea850975758391016105d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061048557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610485565b6105f7813361104f565b600080610e7984846110d5565b90508015610a7e576000848152600160205260409020610e9990846111d1565b509392505050565b600080610eae84846111f3565b90508015610a7e576000848152600160205260409020610e9990846112ae565b610ed6610f96565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f293390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600260035403610f8f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615610fd3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610fdd6112d0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610f29565b6000610a7e838361130c565b60606000610a7e83611336565b6000610485825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016107f7565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556111673390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610485565b506000610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff8416611392565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff84166113d9565b60025460ff16610fd3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826000018281548110611323576113236119cc565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561138657602002820191906000526020600020905b815481526020019060010190808311611372575b50505050509050919050565b60008181526001830160205260408120546111c957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610485565b600081815260018301602052604081205480156114c25760006113fd600183611cb1565b855490915060009061141190600190611cb1565b9050808214611476576000866000018281548110611431576114316119cc565b9060005260206000200154905080876000018481548110611454576114546119cc565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061148757611487611cc4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610485565b6000915050610485565b6000602082840312156114de57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a7e57600080fd5b60006020828403121561152057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461154b57600080fd5b919050565b6000806040838503121561156357600080fd5b8235915061157360208401611527565b90509250929050565b6000806040838503121561158f57600080fd5b61159883611527565b946020939093013593505050565b6000602082840312156115b857600080fd5b610a7e82611527565b600080602083850312156115d457600080fd5b823567ffffffffffffffff8111156115eb57600080fd5b8301601f810185136115fc57600080fd5b803567ffffffffffffffff81111561161357600080fd5b8560208260051b840101111561162857600080fd5b6020919091019590945092505050565b6000806040838503121561164b57600080fd5b61165483611527565b915061157360208401611527565b6000806040838503121561167557600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156116d257835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161169e565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561172f5761172f6116dd565b60405290565b60405160e0810167ffffffffffffffff8111828210171561172f5761172f6116dd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561179f5761179f6116dd565b604052919050565b600067ffffffffffffffff8211156117c1576117c16116dd565b5060051b60200190565b600080604083850312156117de57600080fd5b823567ffffffffffffffff8111156117f557600080fd5b8301601f8101851361180657600080fd5b8035611819611814826117a7565b611758565b8082825260208201915060208360051b85010192508783111561183b57600080fd5b602084015b838110156119b957803567ffffffffffffffff81111561185f57600080fd5b85016040818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561189357600080fd5b61189b61170c565b6118a760208301611527565b8152604082013567ffffffffffffffff8111156118c357600080fd5b6020818401019250508a601f8301126118db57600080fd5b81356118e9611814826117a7565b80828252602082019150602060e0840286010192508d83111561190b57600080fd5b6020850194505b8285101561199a5760e0858f03121561192a57600080fd5b611932611735565b61193b86611527565b815261194960208701611527565b602082015261195a60408701611527565b6040820152606086810135908201526080808701359082015260a0808701359082015260c08087013590820152825260e090940193602090910190611912565b8060208501525050508085525050602083019250602081019050611840565b5094506115739250505060208401611527565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112611a2f57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561048557610485611a39565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ab057600080fd5b83018035915067ffffffffffffffff821115611acb57600080fd5b6020019150600581901b3603821315611ae357600080fd5b9250929050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611b1c57600080fd5b8260051b80836020870137939093016020019392505050565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015260a060608201526000611b8760a083018688611aea565b8281036080840152611b9a818587611aea565b9a9950505050505050505050565b600060208284031215611bba57600080fd5b81518015158114610a7e57600080fd5b6040808252835190820181905260009060208501906060840190835b81811015611c8a57835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff6040820151166040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501525060e083019250602084019350600181019050611be6565b505073ffffffffffffffffffffffffffffffffffffffff851660208501529150610a7e9050565b8181038181111561048557610485611a39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122036c010d28b40fdfe09bd45eef1f74644b1bcd2f5179d931c1c4a46d8c06cec3d64736f6c634300081e0033","gas_used":1630278,"gas_limit":1630278,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106101985760003560e01c80638a2ddd03116100e3578063b1ee828c1161008c578063d547741f11610066578063d547741f14610400578063e8ff793614610413578063fdea36571461042657600080fd5b8063b1ee828c1461037c578063b228c1c4146103da578063ca15c873146103ed57600080fd5b8063a217fddf116100bd578063a217fddf1461034c578063a3246ad314610354578063b187bd261461037457600080fd5b80638a2ddd03146102ed5780639010d07c146102f557806391d148541461030857600080fd5b8063595c6a67116101455780635c975abb1161011f5780635c975abb146102a45780637ba191b9146102af57806382eb1152146102c257600080fd5b8063595c6a671461027657806359c9eb901461027e5780635bb478081461029157600080fd5b80632f2ff15d116101765780632f2ff15d1461023b57806336568abe1461025057806355dff0e31461026357600080fd5b806301ffc9a71461019d578063222e9e82146101c5578063248a9ca31461020a575b600080fd5b6101b06101ab3660046114cc565b61042f565b60405190151581526020015b60405180910390f35b6004546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b61022d61021836600461150e565b60009081526020819052604090206001015490565b6040519081526020016101bc565b61024e610249366004611550565b61048b565b005b61024e61025e366004611550565b6104b6565b61024e61027136600461157c565b610514565b61024e6105e4565b61024e61028c36600461150e565b6105fa565b61024e61029f3660046115a6565b61067c565b60025460ff166101b0565b61024e6102bd3660046115c1565b61076c565b61022d6102d0366004611638565b600660209081526000928352604080842090915290825290205481565b61024e610a53565b6101e5610303366004611662565b610a66565b6101b0610316366004611550565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61022d600081565b61036761036236600461150e565b610a85565b6040516101bc9190611684565b6101b0610a9f565b6103bf61038a3660046115a6565b73ffffffffffffffffffffffffffffffffffffffff166000908152600760205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016101bc565b61024e6103e83660046117cb565b610ab2565b61022d6103fb36600461150e565b610ca5565b61024e61040e366004611550565b610cbc565b61024e61042136600461157c565b610ce1565b61022d60055481565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f000000000000000000000000000000000000000000000000000000001480610485575061048582610dcb565b92915050565b6000828152602081905260409020600101546104a681610e62565b6104b08383610e6c565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610505576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050f8282610ea1565b505050565b600061051f81610e62565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040812054900361057d576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660008181526007602052604090819020849055517f3a22865564a15e1d9be087fd90192483ce3d3e86d8784aba2dafd45f85221283906105d79085815260200190565b60405180910390a2505050565b60006105ef81610e62565b6105f7610ece565b50565b600061060581610e62565b6005548203610640576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527fcb7ee917d029d22a071ecb2b3db0556ca49424002997ae83d8a4fff552ef72f69060200160405180910390a15050565b600061068781610e62565b73ffffffffffffffffffffffffffffffffffffffff82166106d4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045473ffffffffffffffffffffffffffffffffffffffff1615610724576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610774610f53565b61077c610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610800576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064015b60405180910390fd5b3360005b82811015610a43573684848381811061081f5761081f6119cc565b905060200281019061083191906119fb565b9050600060078161084860408501602086016115a6565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080549091501561090a57600554816002015461088a9190611a68565b421061089e57600060018201554260028201555b805460018201546108b490604085013590611a68565b11156108ec576040517f7329a9df00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81604001358160010160008282546109049190611a68565b90915550505b42600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084602001602081019061095f91906115a6565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002091909155610996908301836115a6565b73ffffffffffffffffffffffffffffffffffffffff1663dc63f6ae6109c160408501602086016115a6565b8660408601356109d46060880188611a7b565b6109e160808a018a611a7b565b6040518863ffffffff1660e01b8152600401610a039796959493929190611b35565b600060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b50506001909401935061080492505050565b5050610a4f6001600355565b5050565b6000610a5e81610e62565b6105f7610fd5565b6000828152600160205260408120610a7e908361102c565b9392505050565b600081815260016020526040902060609061048590611038565b6000610aad60025460ff1690565b905090565b610aba610f53565b610ac2610f96565b60045473ffffffffffffffffffffffffffffffffffffffff16610b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4675756c4d616e616765723a20666163746f7279206e6f74207365740000000060448201526064016107f7565b60045473ffffffffffffffffffffffffffffffffffffffff16635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190611ba8565b5060005b8251811015610c9a576000838281518110610c0e57610c0e6119cc565b60200260200101519050806000015173ffffffffffffffffffffffffffffffffffffffff1663564cd00b8260200151856040518363ffffffff1660e01b8152600401610c5b929190611bca565b600060405180830381600087803b158015610c7557600080fd5b505af1158015610c89573d6000803e3d6000fd5b505060019093019250610bf1915050565b50610a4f6001600355565b600081815260016020526040812061048590611045565b600082815260208190526040902060010154610cd781610e62565b6104b08383610ea1565b6000610cec81610e62565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602052604090205415610d49576040517fdd6f914400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051606081018252838152600060208083018281524284860190815273ffffffffffffffffffffffffffffffffffffffff8916808552600784529386902094518555905160018501555160029093019290925591518481527f5cd914c3e9450bdc97363f4edb9c4e5abcd1ef53b7a14e0c6c6aea850975758391016105d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061048557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610485565b6105f7813361104f565b600080610e7984846110d5565b90508015610a7e576000848152600160205260409020610e9990846111d1565b509392505050565b600080610eae84846111f3565b90508015610a7e576000848152600160205260409020610e9990846112ae565b610ed6610f96565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f293390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600260035403610f8f576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615610fd3576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b610fdd6112d0565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610f29565b6000610a7e838361130c565b60606000610a7e83611336565b6000610485825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a4f576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016107f7565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556111673390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610485565b506000610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff8416611392565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156111c95760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610485565b6000610a7e8373ffffffffffffffffffffffffffffffffffffffff84166113d9565b60025460ff16610fd3576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826000018281548110611323576113236119cc565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561138657602002820191906000526020600020905b815481526020019060010190808311611372575b50505050509050919050565b60008181526001830160205260408120546111c957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610485565b600081815260018301602052604081205480156114c25760006113fd600183611cb1565b855490915060009061141190600190611cb1565b9050808214611476576000866000018281548110611431576114316119cc565b9060005260206000200154905080876000018481548110611454576114546119cc565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061148757611487611cc4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610485565b6000915050610485565b6000602082840312156114de57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610a7e57600080fd5b60006020828403121561152057600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461154b57600080fd5b919050565b6000806040838503121561156357600080fd5b8235915061157360208401611527565b90509250929050565b6000806040838503121561158f57600080fd5b61159883611527565b946020939093013593505050565b6000602082840312156115b857600080fd5b610a7e82611527565b600080602083850312156115d457600080fd5b823567ffffffffffffffff8111156115eb57600080fd5b8301601f810185136115fc57600080fd5b803567ffffffffffffffff81111561161357600080fd5b8560208260051b840101111561162857600080fd5b6020919091019590945092505050565b6000806040838503121561164b57600080fd5b61165483611527565b915061157360208401611527565b6000806040838503121561167557600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156116d257835173ffffffffffffffffffffffffffffffffffffffff1683526020938401939092019160010161169e565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561172f5761172f6116dd565b60405290565b60405160e0810167ffffffffffffffff8111828210171561172f5761172f6116dd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561179f5761179f6116dd565b604052919050565b600067ffffffffffffffff8211156117c1576117c16116dd565b5060051b60200190565b600080604083850312156117de57600080fd5b823567ffffffffffffffff8111156117f557600080fd5b8301601f8101851361180657600080fd5b8035611819611814826117a7565b611758565b8082825260208201915060208360051b85010192508783111561183b57600080fd5b602084015b838110156119b957803567ffffffffffffffff81111561185f57600080fd5b85016040818b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561189357600080fd5b61189b61170c565b6118a760208301611527565b8152604082013567ffffffffffffffff8111156118c357600080fd5b6020818401019250508a601f8301126118db57600080fd5b81356118e9611814826117a7565b80828252602082019150602060e0840286010192508d83111561190b57600080fd5b6020850194505b8285101561199a5760e0858f03121561192a57600080fd5b611932611735565b61193b86611527565b815261194960208701611527565b602082015261195a60408701611527565b6040820152606086810135908201526080808701359082015260a0808701359082015260c08087013590820152825260e090940193602090910190611912565b8060208501525050508085525050602083019250602081019050611840565b5094506115739250505060208401611527565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112611a2f57600080fd5b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561048557610485611a39565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ab057600080fd5b83018035915067ffffffffffffffff821115611acb57600080fd5b6020019150600581901b3603821315611ae357600080fd5b9250929050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611b1c57600080fd5b8260051b80836020870137939093016020019392505050565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015260a060608201526000611b8760a083018688611aea565b8281036080840152611b9a818587611aea565b9a9950505050505050505050565b600060208284031215611bba57600080fd5b81518015158114610a7e57600080fd5b6040808252835190820181905260009060208501906060840190835b81811015611c8a57835173ffffffffffffffffffffffffffffffffffffffff815116845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015273ffffffffffffffffffffffffffffffffffffffff6040820151166040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c08501525060e083019250602084019350600181019050611be6565b505073ffffffffffffffffffffffffffffffffffffffff851660208501529150610a7e9050565b8181038181111561048557610485611a39565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122036c010d28b40fdfe09bd45eef1f74644b1bcd2f5179d931c1c4a46d8c06cec3d64736f6c634300081e0033","nonce":27,"gas_used":1798140},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1b6ffc","logs":[{"address":"0x09635f643e140090a9a8dcd712ed6285858cebef","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000020000000010000100000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000200000000000000000000000002000000100000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xd75a5f75c2f237a5ed33ff11d7e82ad990bb8bda752ab404118d104f30a32081","block_number":28},{"info":{"transaction_hash":"0x04e2497890292cbed8f231fed1078c78f151909deab2796ea75d33517fb4ba5f","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f1900000000000000000000000090f79bf6eb2c4f870365e785982e1f101e93b90600000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000090f79bf6eb2c4f870365e785982e1f101e93b906"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":4,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000090f79bf6eb2c4f870365e785982e1f101e93b906"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000400000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000400000000000000000000000000020000000000000000000000010000000000000000000000000000000000000000000"},"block_hash":"0x422d68b21bb447f98f200562ff21fe213eb6b77050b1853cec504f28af11bd0f","block_number":5},{"info":{"transaction_hash":"0x7d0ae7753456b23cbe621db2fe667be368cad39809b4079abaef8ce28eb033f3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xc5a5c42992decbae36851359345fe25997f5c42d","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xc5a5c42992decbae36851359345fe25997f5c42d","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a0604052670de0b6b3a7640000600555600060065560c860075561025860085562278d0060095562278d00600a5534801561003a57600080fd5b506040516164f33803806164f3833981016040819052610059916103d5565b6001600160a01b038416158061007657506001600160a01b038316155b8061008857506001600160a01b038116155b156100a65760405163d92e233d60e01b815260040160405180910390fd5b6040516100b2906103ac565b604051809103906000f0801580156100ce573d6000803e3d6000fd5b506001600160a01b03166080526100e6600033610161565b506101117f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0885610161565b50600380546001600160a01b038086166001600160a01b031992831617909255600480549285169290911691909117905561014d600080610199565b610158816001610199565b50505050610467565b60008061016e84846102ab565b9050801561019057600084815260016020526040902061018e9084610355565b505b90505b92915050565b6001600160a01b038216158015906101c2575060008160038111156101c0576101c0610429565b145b156101e05760405163a1e9dd9d60e01b815260040160405180910390fd5b60405180604001604052808260038111156101fd576101fd610429565b8152600160209182018190526001600160a01b0385166000908152600b90925260409091208251815491929091839160ff199091169083600381111561024557610245610429565b02179055506020919091015181549015156101000261ff00199091161790556040516001600160a01b038316907fbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e89061029f90849061043f565b60405180910390a25050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff1661034d576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556103053390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610193565b506000610193565b6000610190836001600160a01b038416600081815260018301602052604081205461034d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610193565b6142b68061223d83390190565b80516001600160a01b03811681146103d057600080fd5b919050565b600080600080608085870312156103eb57600080fd5b6103f4856103b9565b9350610402602086016103b9565b9250610410604086016103b9565b915061041e606086016103b9565b905092959194509250565b634e487b7160e01b600052602160045260246000fd5b602081016004831061046157634e487b7160e01b600052602160045260246000fd5b91905290565b608051611dbb6104826000396000610a6e0152611dbb6000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806391d1485411610145578063b20feaaf116100bd578063cfca31471161008c578063ec87621c11610071578063ec87621c146105a5578063f2e2e2aa146105cc578063f88139101461060657600080fd5b8063cfca31471461057f578063d547741f1461059257600080fd5b8063b20feaaf146104d0578063c36a470814610550578063c4c0453414610559578063ca15c8731461056c57600080fd5b8063a3246ad311610114578063aa405af9116100f9578063aa405af91461049e578063b013ab38146104a7578063b0e21e8a146104c757600080fd5b8063a3246ad314610475578063a5fd8edc1461049557600080fd5b806391d148541461040d57806399f8cbaf14610451578063a217fddf14610464578063a221c64a1461046c57600080fd5b806336568abe116101d857806366fbf11b116101a757806380cc90ed1161018c57806380cc90ed146103a2578063850a1501146103b55780639010d07c146103fa57600080fd5b806366fbf11b1461037c578063787dce3d1461038f57600080fd5b806336568abe1461033a57806339591b001461034d5780635026c826146103565780635e73fd761461036957600080fd5b80631c91ecb61161022f5780632a53ff5f116102145780632a53ff5f146102f95780632f2ff15d146103145780632f7d5c661461032757600080fd5b80631c91ecb6146102c4578063248a9ca3146102d657600080fd5b806301ffc9a714610261578063059129471461028957806306bdd7d51461029e5780631776a827146102b1575b600080fd5b61027461026f3660046118f2565b610619565b60405190151581526020015b60405180910390f35b61029c610297366004611934565b610675565b005b61029c6102ac366004611934565b6106f8565b61029c6102bf366004611976565b61077d565b6002545b604051908152602001610280565b6102c86102e4366004611934565b60009081526020819052604090206001015490565b600954600a5460408051928352602083019190915201610280565b61029c610322366004611991565b610850565b61029c610335366004611934565b61087b565b61029c610348366004611991565b6108f6565b6102c8600a5481565b610274610364366004611976565b610954565b61029c6103773660046119bd565b6109da565b61029c61038a366004611976565b610bb2565b61029c61039d366004611934565b610ca0565b61029c6103b0366004611934565b610d1b565b6003546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b6103d5610408366004611a64565b610da4565b61027461041b366004611991565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61045f366004611934565b610dc3565b6102c8600081565b6102c860075481565b610488610483366004611934565b610e3e565b6040516102809190611a86565b6102c860085481565b6102c860095481565b6004546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b6102c860065481565b6104d8610e58565b6040516102809190600060c08201905082518252602083015160208301526040830151604083015273ffffffffffffffffffffffffffffffffffffffff60608401511660608301526080830151608083015273ffffffffffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b6102c860055481565b6104d8610567366004611976565b610f13565b6102c861057a366004611934565b610f8a565b61029c61058d366004611976565b610fa1565b61029c6105a0366004611991565b611071565b6102c87f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b6105f86105da366004611976565b600b6020526000908152604090205460ff8082169161010090041682565b604051610280929190611b49565b61029c610614366004611b66565b611096565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061066f575061066f82611110565b92915050565b6000610680816111a7565b60055482036106bb576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f7a25f4d39c7ef2d9ff33e6304584e4c9fb1532bc39972e2cd34b074c1e40e02b906020015b60405180910390a15050565b6000610703816111a7565b600954821480610711575081155b15610748576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098290556040518281527f87948cba23b87f534057161b507f18cd7f69576b88a81a74c55d8f29dfb06452906020016106ec565b6000610788816111a7565b60045473ffffffffffffffffffffffffffffffffffffffff908116908316036107dd576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f372b5e772b71a68b761c4ac03b59a6a2322bd34ac161ba7029a6a418fe890051906020016106ec565b60008281526020819052604090206001015461086b816111a7565b61087583836111b4565b50505050565b6000610886816111a7565b60085482036108c1576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088290556040518281527f3a1dedaf5733100a92da764c2066bdc86b970e224ee473d515375645ce99a9d2906020016106ec565b73ffffffffffffffffffffffffffffffffffffffff81163314610945576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f82826111e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645602052604081205460ff166109d2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001919050565b73ffffffffffffffffffffffffffffffffffffffff85161580610a11575073ffffffffffffffffffffffffffffffffffffffff8416155b80610a30575073ffffffffffffffffffffffffffffffffffffffff8116155b15610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a927f0000000000000000000000000000000000000000000000000000000000000000611216565b6040517f09c26fb100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906309c26fb190610aef9089908990899089908990600401611bea565b600060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505060028054925090506000610b3283611c8d565b91905055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f68828e0b01cfe3740f67270e157a30f161e6531d36cd5db5797ec0e32d1f6911610b8f60025490565b878787604051610ba29493929190611cc5565b60405180910390a3505050505050565b6000610bbd816111a7565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090208054610100900460ff16610c22576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff8116825560405173ffffffffffffffffffffffffffffffffffffffff8516917f523fff9d18fef7247d13e67b28b58c6173cc8868a73b220fcebfd5887c1135b291610c939160ff1690611d06565b60405180910390a2505050565b6000610cab816111a7565b6006548203610ce6576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068290556040518281527fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de40906020016106ec565b6000610d26816111a7565b600a54821480610d3857506206978082105b15610d6f576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a8290556040518281527f2c941b29cbb54e4feeb31a83ebf90b2ffdd425f3970b341bf588a6ca88a8b56b906020016106ec565b6000828152600160205260408120610dbc9083611223565b9392505050565b6000610dce816111a7565b6007548203610e09576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078290556040518281527f6d3d82f4a368310fc477262ac1c98c96cf147c62b219e94a4acf691400922905906020016106ec565b600081815260016020526040902060609061066f9061122f565b610ebd6040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b506040805160c081018252600654815260085460208201526007549181019190915260035473ffffffffffffffffffffffffffffffffffffffff908116606083015260055460808301526004541660a082015290565b610f786040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b610f8182610954565b5061066f610e58565b600081815260016020526040812061066f9061123c565b6000610fac816111a7565b60035473ffffffffffffffffffffffffffffffffffffffff90811690831603611001576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f33837f672315b6cffcf11894714abfdec631a913c18d7738fcaf40c444376fb690600090a25050565b60008281526020819052604090206001015461108c816111a7565b61087583836111e9565b60006110a1816111a7565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b6020526040902054610100900460ff1615611106576040517f56b89dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f8383611246565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061066f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461066f565b6111b181336113d3565b50565b6000806111c18484611462565b90508015610dbc5760008481526001602052604090206111e1908461155e565b509392505050565b6000806111f68484611580565b90508015610dbc5760008481526001602052604090206111e1908461163b565b600061066f82600061165d565b6000610dbc8383611732565b60606000610dbc8361175c565b600061066f825490565b73ffffffffffffffffffffffffffffffffffffffff82161580159061127c5750600081600381111561127a5761127a611adf565b145b156112b3576040517fa1e9dd9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052808260038111156112d0576112d0611adf565b81526001602091820181905273ffffffffffffffffffffffffffffffffffffffff85166000908152600b9092526040909120825181549192909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600381111561134357611343611adf565b0217905550602091909101518154901515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617905560405173ffffffffffffffffffffffffffffffffffffffff8316907fbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8906113c7908490611d06565b60405180910390a25050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661145e576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114f43390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161066f565b50600061066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117b8565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117ff565b6000814710156116a2576040517fcf47918100000000000000000000000000000000000000000000000000000000815247600482015260248101839052604401611455565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff811661066f576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061174957611749611d14565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156117ac57602002820191906000526020600020905b815481526020019060010190808311611798575b50505050509050919050565b60008181526001830160205260408120546115565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561066f565b600081815260018301602052604081205480156118e8576000611823600183611d43565b855490915060009061183790600190611d43565b905080821461189c57600086600001828154811061185757611857611d14565b906000526020600020015490508087600001848154811061187a5761187a611d14565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806118ad576118ad611d56565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061066f565b600091505061066f565b60006020828403121561190457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dbc57600080fd5b60006020828403121561194657600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197157600080fd5b919050565b60006020828403121561198857600080fd5b610dbc8261194d565b600080604083850312156119a457600080fd5b823591506119b46020840161194d565b90509250929050565b6000806000806000608086880312156119d557600080fd5b6119de8661194d565b94506119ec6020870161194d565b9350604086013567ffffffffffffffff811115611a0857600080fd5b8601601f81018813611a1957600080fd5b803567ffffffffffffffff811115611a3057600080fd5b886020828401011115611a4257600080fd5b60209190910193509150611a586060870161194d565b90509295509295909350565b60008060408385031215611a7757600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015611ad457835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611aa0565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b45577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60408101611b578285611b0e565b82151560208301529392505050565b60008060408385031215611b7957600080fd5b611b828361194d565b9150602083013560048110611b9657600080fd5b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201526000611c36608083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cbe57611cbe611c5e565b5060010190565b848152606060208201526000611cdf606083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff8316604083015295945050505050565b6020810161066f8284611b0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561066f5761066f611c5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122004cc3d27435f63a9b2d95a3a11885d96b818e3a86df73530c60f192f0002bb3664736f6c634300081e003360c060405234801561001057600080fd5b50600160025533608081905260a08190528061423d61007960003960008181610ae701528181610bb80152818161151c01528181611c6e0152818161202e015281816121730152818161245301526127170152600081816103df0152610826015261423d6000f3fe6080604052600436106102345760003560e01c80636d2401c811610138578063bd464115116100b0578063cb3a6b2c1161007f578063dc63f6ae11610064578063dc63f6ae1461078e578063f23a6e61146107ae578063f75166fc146107f357600080fd5b8063cb3a6b2c14610736578063d547741f1461076e57600080fd5b8063bd464115146106c1578063c2986b0e146106e1578063c7395be214610701578063ca15c8731461071657600080fd5b8063a217fddf11610107578063af06216f116100ec578063af06216f14610637578063bb19b4d31461064c578063bc197c811461067c57600080fd5b8063a217fddf146105f5578063a3246ad31461060a57600080fd5b80636d2401c8146105355780639010d07c1461055757806391d148541461057757806393e6c436146105c857600080fd5b8063248a9ca3116101cb5780634517863d1161019a57806359416e0e1161017f57806359416e0e146104ef57806361f438481461050f57806364cde8d21461052257600080fd5b80634517863d1461049b578063564cd00b146104cf57600080fd5b8063248a9ca3146104015780632f2ff15d1461043157806336568abe146104515780633dd781de1461047157600080fd5b8063150b7a0211610207578063150b7a02146102eb57806316ecfdf0146103605780631b8ec5d714610376578063222e9e82146103cd57600080fd5b806301ffc9a71461023957806309c26fb11461026e5780630be4d2b814610290578063147e7e66146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461330b565b610813565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046133b8565b610824565b005b34801561029c57600080fd5b5061028e6102ab366004613435565b610990565b3480156102bc57600080fd5b506102dd6102cb366004613477565b60076020526000908152604090205481565b604051908152602001610265565b3480156102f757600080fd5b5061032f6103063660046135c9565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610265565b34801561036c57600080fd5b506102dd60065481565b34801561038257600080fd5b506003546103a890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610265565b3480156103d957600080fd5b506103a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561040d57600080fd5b506102dd61041c366004613635565b60009081526020819052604090206001015490565b34801561043d57600080fd5b5061028e61044c36600461364e565b610a18565b34801561045d57600080fd5b5061028e61046c36600461364e565b610a43565b34801561047d57600080fd5b50610486610aa1565b60408051928352602083019190915201610265565b3480156104a757600080fd5b506102dd7f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b681565b3480156104db57600080fd5b5061028e6104ea36600461367e565b610b97565b3480156104fb57600080fd5b5061028e61050a36600461374c565b61131c565b61028e61051d366004613635565b6114fb565b61028e6105303660046137d4565b61182b565b34801561054157600080fd5b5061054a611ae5565b6040516102659190613800565b34801561056357600080fd5b506103a861057236600461386c565b611b73565b34801561058357600080fd5b5061025961059236600461364e565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105d457600080fd5b506102dd6105e3366004613477565b60096020526000908152604090205481565b34801561060157600080fd5b506102dd600081565b34801561061657600080fd5b5061062a610625366004613635565b611b92565b604051610265919061388e565b34801561064357600080fd5b50610259611bac565b34801561065857600080fd5b50610259610667366004613635565b60046020526000908152604090205460ff1681565b34801561068857600080fd5b5061032f61069736600461396a565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b3480156106cd57600080fd5b5061028e6106dc36600461374c565b611c0a565b3480156106ed57600080fd5b5061028e6106fc3660046137d4565b611e71565b34801561070d57600080fd5b5061028e611f8c565b34801561072257600080fd5b506102dd610731366004613635565b611fd3565b34801561074257600080fd5b506102dd610751366004613a24565b600860209081526000928352604080842090915290825290205481565b34801561077a57600080fd5b5061028e61078936600461364e565b611fea565b34801561079a57600080fd5b5061028e6107a9366004613a52565b61200f565b3480156107ba57600080fd5b5061032f6107c9366004613af6565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3480156107ff57600080fd5b5061028e61080e3660046137d4565b6123ab565b600061081e82612580565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314158061086b575060035460ff165b156108a2576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ad6000866125d6565b506108d87f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b6856125d6565b5061091883838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0073ffffffffffffffffffffffffffffffffffffffff90931661010002929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090921691909117600117905550505050565b600061099b81612652565b6109da83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b7f121f741ddf8ba42be07a0e28c2017398f83e3766e2f4bfa9ea925307c0c5d1378383604051610a0b929190613b53565b60405180910390a1505050565b600082815260208190526040902060010154610a3381612652565b610a3d83836125d6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a92576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a9c828261265f565b505050565b6006546000908190808203610ae2576040517fbb6aa2ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632a53ff5f6040518163ffffffff1660e01b81526004016040805180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190613ba0565b9092509050610b828284613bf3565b9450610b8e8186613bf3565b93505050509091565b610b9f61268c565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c4c04534336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240160c060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190613c06565b905060005b83811015611310576000858583818110610c8c57610c8c613c97565b905060e00201803603810190610ca29190613cc6565b60a081015160009081526004602052604090205490915060ff1615610cf3576040517fc41a375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160c08201516040805160208101929092527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16908201526054016040516020818303038152906040528051906020012014610d83576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516000610d90826126cd565b60a0840151600090815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055608085015160608601519293509091610de59190613bf3565b9050610df0816127c3565b610df86132ed565b6000808080866003811115610e0f57610e0f613d4a565b1480610e2c57506001866003811115610e2a57610e2a613d4a565b145b15610e5357610e448a89606001518a608001516127fd565b91955093509150869050610f3f565b6002866003811115610e6757610e67613d4a565b1480610e8457506003866003811115610e8257610e82613d4a565b145b15610f0d57610e928a6128ff565b606089015160808a015160a08d0151604084015160208501518551959950939750919550935091610ec39190613bf3565b610ecd9190613bf3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604081208054909190610f02908490613d79565b90915550610f3f9050565b6040517ff599342800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526007602052604081208054879290610f74908490613d79565b9091555050835160608b015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152604080832093861683529290529081208054909190610fc4908490613bf3565b9091555050602080850151600354610100900473ffffffffffffffffffffffffffffffffffffffff90811660009081526008845260408082209286168252919093528220805491929091611019908490613bf3565b909155505060408085015173ffffffffffffffffffffffffffffffffffffffff8d8116600090815260086020908152848220928616825291909152918220805491929091611068908490613bf3565b909155505060208089015173ffffffffffffffffffffffffffffffffffffffff9081166000908152600883526040808220928b16825291909252812080548592906110b4908490613bf3565b909155505060408089015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152838220928b168252919091529081208054849290611102908490613bf3565b925050819055508673ffffffffffffffffffffffffffffffffffffffff167f68509a400b7cc402898b7aacefe7cf662539f64e5a79d4234c58734256b5e224866040518060a001604052808e6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506040518060a001604052808960006003811061129157611291613c97565b60200201518152602001896001600381106112ae576112ae613c97565b60200201518152602001896002600381106112cb576112cb613c97565b60200201518152602001888152602001878152508c60a001516040516112f49493929190613d8c565b60405180910390a2505060019096019550610c70945050505050565b5050610a9c6001600255565b600061132781612652565b61132f61268c565b600061133a876126cd565b9050600281600381111561135057611350613d4a565b036113ff578461135f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611394908490613bf3565b909155506113a790508833308a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167fd6d003c3b12171676fc9412009c65e678368ee9deedce21d9efe7c9d9d34a1c18289896040516113f193929190613e59565b60405180910390a2506114e8565b600381600381111561141357611413613d4a565b03610f0d5760006114248585612a5c565b905061142f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611464908490613bf3565b9091555061147990508833308a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f4f7bc006fa3e8a3fde1c087dfff50e0cda2cc7791fa6343ee9f4c395e3da0d37838a8a8a8a6040516114de959493929190613e7c565b60405180910390a3505b506114f36001600255565b505050505050565b600061150681612652565b61150e61268c565b81611518816127c3565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b013ab386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190613eb5565b9050600073ffffffffffffffffffffffffffffffffffffffff821661160857843414611601576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611793565b3415611640576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d19190613ed2565b90506116f573ffffffffffffffffffffffffffffffffffffffff8416333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117859190613ed2565b61178f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812080548392906117c8908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f85dd53a04234402c5e629c4ab3051ff7aa3d103e7d22804a9713094c50e6ca929060200160405180910390a35050506118276001600255565b5050565b600061183681612652565b61183e61268c565b81611848816127c3565b6000611853856126cd565b905060008082600381111561186a5761186a613d4a565b036118af578434146118a8576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611a53565b60018260038111156118c3576118c3613d4a565b03610f0d573415611900576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190613ed2565b90506119b573ffffffffffffffffffffffffffffffffffffffff8816333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8916906370a0823190602401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613ed2565b611a4f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff861660009081526007602052604081208054839290611a88908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8716907f78cae0ecd388607ec2d56e9b6f673cd0a042c8407cdfc7b578e9707223ee64b29060200160405180910390a2505050610a9c6001600255565b60058054611af290613eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1e90613eeb565b8015611b6b5780601f10611b4057610100808354040283529160200191611b6b565b820191906000526020600020905b815481529060010190602001808311611b4e57829003601f168201915b505050505081565b6000828152600160205260408120611b8b9083612bbd565b9392505050565b600081815260016020526040902060609061081e90612bc9565b6000806000611bb9610aa1565b9150915081421080611bca57508042115b15611c01576040517fbd95a86000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019250505090565b6000611c1581612652565b611c1d61268c565b611c25611bac565b506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda9190613f4d565b5090506002816003811115611cf157611cf1613d4a565b03611d925784611d00816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611d35908490613d79565b90915550611d4890508830338a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167f9345f22c71af54e80c416040732be09908da822fef94e166af33535f824c51c78289896040516113f193929190613e59565b6003816003811115611da657611da6613d4a565b03610f0d576000611db78585612a5c565b9050611dc2816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611df7908490613d79565b90915550611e0c90508830338a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f0dc54c2a40ababb385f82389a070a55b00cd3fae93fc5b1916924ade1633503b838a8a8a8a6040516114de959493929190613e7c565b6000611e7c81612652565b611e8461268c565b611e8c611bac565b5081611e97816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208054859290611ecc908490613d79565b909155505073ffffffffffffffffffffffffffffffffffffffff8416611f1357611f0e83335b73ffffffffffffffffffffffffffffffffffffffff1690612bd6565b611f34565b611f3473ffffffffffffffffffffffffffffffffffffffff85163385612c91565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907ff57fb8b8dfa150e93ac811898e14550baf3452656f9d4e8058a5c24efa9ecaad9060200160405180910390a350610a9c6001600255565b6000611f9781612652565b4260068190556040519081527f01909d53c76ffada2e8f99e82b9afa64e37cfe2bc2c1fa7ba5959fc62e4baa7f9060200160405180910390a150565b600081815260016020526040812061081e90612ccf565b60008281526020819052604090206001015461200581612652565b610a3d838361265f565b61201761268c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156120bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e19190613f86565b5073ffffffffffffffffffffffffffffffffffffffff8087166000908152600860209081526040808320938b1683529290529081208054879290612126908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190613f4d565b50905060008160038111156121f6576121f6613d4a565b036122205761221b73ffffffffffffffffffffffffffffffffffffffff881687612bd6565b61232a565b600181600381111561223457612234613d4a565b0361225a5761221b73ffffffffffffffffffffffffffffffffffffffff89168888612c91565b600281600381111561226e5761226e613d4a565b036122c057838681146122ad576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ba89308a8989612981565b5061232a565b60038160038111156122d4576122d4613d4a565b03610f0d576122e38383612a5c565b861461231b576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61221b88308988888888612a9d565b8773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0c3f6188054cfad2267b81cfd4ec43dcf3245a8b92e59cc44d6b4e85a5867264888888888860405161238f959493929190613e7c565b60405180910390a3506123a26001600255565b50505050505050565b60006123b681612652565b6123be61268c565b6123c6611bac565b50816123d1816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208054859290612406908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf9190613f4d565b50905060008160038111156124d6576124d6613d4a565b036124ea576124e58433611ef2565b612524565b60018160038111156124fe576124fe613d4a565b03610f0d576124e573ffffffffffffffffffffffffffffffffffffffff86163386612c91565b8473ffffffffffffffffffffffffffffffffffffffff167f2bde45b775c7b186ca5991ba05250885d44cad19752d5e84f715be315dc60ad08560405161256c91815260200190565b60405180910390a25050610a9c6001600255565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061081e575061081e82612cd9565b6000806125e38484612d2f565b90508015611b8b5760008481526001602052604090206126039084612e2b565b509392505050565b8051600003612646576040517fd07b00d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056118278282613fef565b61265c8133612e4d565b50565b60008061266c8484612ed3565b90508015611b8b5760008481526001602052604090206126039084612f8e565b60028054036126c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b6040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f2e2e2aa906024016040805180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190613f4d565b9092509050806127bd576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b8060000361265c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128056132ed565b600080806128138587613bf3565b9050600081612823886064614108565b61282d919061411f565b90506040518060600160405280612710848b6000015161284d9190614108565b612857919061411f565b8152602001612710848b6040015161286f9190614108565b612879919061411f565b8152602001612710848b602001516128919190614108565b61289b919061411f565b90526040810151602082015182519297506000926128b99086613d79565b6128c39190613d79565b6128cd9190613d79565b905060646128db8383614108565b6128e5919061411f565b94506128f18582613d79565b935050505093509350939050565b6129076132ed565b60808201516040805160608101909152835181906127109061292a908590614108565b612934919061411f565b815260200161271083866040015161294c9190614108565b612956919061411f565b815260200161271083866020015161296e9190614108565b612978919061411f565b90529392505050565b60005b818110156114f3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e86868686868181106129bc576129bc613c97565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015612a3857600080fd5b505af1158015612a4c573d6000803e3d6000fd5b5050600190920191506129849050565b6000805b82811015612a9657838382818110612a7a57612a7a613c97565b9050602002013582612a8c9190613bf3565b9150600101612a60565b5092915050565b6040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690632eb2c2d690612af99089908990899089908990899060040161415a565b600060405180830381600087803b158015612b1357600080fd5b505af1158015612b27573d6000803e3d6000fd5b5050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a3d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612fb0565b6000611b8b8383613054565b60606000611b8b8361307e565b80471015612c1e576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114612c79576040519150601f19603f3d011682016040523d82523d6000602084013e612c7e565b606091505b509150915081610a3d57610a3d816130da565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610a9c91859182169063a9059cbb90606401612b76565b600061081e825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061081e575061081e8261311c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612dc13390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161081e565b50600061081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131b3565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611827576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401612c15565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131fa565b600080602060008451602086016000885af180612fd3576040513d6000823e3d81fd5b50506000513d91508115612feb578060011415613005565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610a3d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401612c15565b600082600001828154811061306b5761306b613c97565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ce57602002820191906000526020600020905b8154815260200190600101908083116130ba575b50505050509050919050565b8051156130ea5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061081e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081e565b6000818152600183016020526040812054612e235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561081e565b600081815260018301602052604081205480156132e357600061321e600183613d79565b855490915060009061323290600190613d79565b905080821461329757600086600001828154811061325257613252613c97565b906000526020600020015490508087600001848154811061327557613275613c97565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806132a8576132a86141d8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061081e565b600091505061081e565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561331d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b8b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461265c57600080fd5b60008083601f84011261338157600080fd5b50813567ffffffffffffffff81111561339957600080fd5b6020830191508360208285010111156133b157600080fd5b9250929050565b6000806000806000608086880312156133d057600080fd5b85356133db8161334d565b945060208601356133eb8161334d565b9350604086013567ffffffffffffffff81111561340757600080fd5b6134138882890161336f565b90945092505060608601356134278161334d565b809150509295509295909350565b6000806020838503121561344857600080fd5b823567ffffffffffffffff81111561345f57600080fd5b61346b8582860161336f565b90969095509350505050565b60006020828403121561348957600080fd5b8135611b8b8161334d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156134e6576134e6613494565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561353357613533613494565b604052919050565b600082601f83011261354c57600080fd5b813567ffffffffffffffff81111561356657613566613494565b61359760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016134ec565b8181528460208386010111156135ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156135df57600080fd5b84356135ea8161334d565b935060208501356135fa8161334d565b925060408501359150606085013567ffffffffffffffff81111561361d57600080fd5b6136298782880161353b565b91505092959194509250565b60006020828403121561364757600080fd5b5035919050565b6000806040838503121561366157600080fd5b8235915060208301356136738161334d565b809150509250929050565b60008060006040848603121561369357600080fd5b833567ffffffffffffffff8111156136aa57600080fd5b8401601f810186136136bb57600080fd5b803567ffffffffffffffff8111156136d257600080fd5b86602060e0830284010111156136e757600080fd5b6020918201945092508401356136fc8161334d565b809150509250925092565b60008083601f84011261371957600080fd5b50813567ffffffffffffffff81111561373157600080fd5b6020830191508360208260051b85010111156133b157600080fd5b60008060008060006060868803121561376457600080fd5b853561376f8161334d565b9450602086013567ffffffffffffffff81111561378b57600080fd5b61379788828901613707565b909550935050604086013567ffffffffffffffff8111156137b757600080fd5b6137c388828901613707565b969995985093965092949392505050565b600080604083850312156137e757600080fd5b82356137f28161334d565b946020939093013593505050565b602081526000825180602084015260005b8181101561382e5760208186018101516040868401015201613811565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6000806040838503121561387f57600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156138dc57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016138a8565b509095945050505050565b600082601f8301126138f857600080fd5b813567ffffffffffffffff81111561391257613912613494565b8060051b613922602082016134ec565b9182526020818501810192908101908684111561393e57600080fd5b6020860192505b83831015613960578235825260209283019290910190613945565b9695505050505050565b600080600080600060a0868803121561398257600080fd5b853561398d8161334d565b9450602086013561399d8161334d565b9350604086013567ffffffffffffffff8111156139b957600080fd5b6139c5888289016138e7565b935050606086013567ffffffffffffffff8111156139e257600080fd5b6139ee888289016138e7565b925050608086013567ffffffffffffffff811115613a0b57600080fd5b613a178882890161353b565b9150509295509295909350565b60008060408385031215613a3757600080fd5b8235613a428161334d565b915060208301356136738161334d565b600080600080600080600060a0888a031215613a6d57600080fd5b8735613a788161334d565b96506020880135613a888161334d565b955060408801359450606088013567ffffffffffffffff811115613aab57600080fd5b613ab78a828b01613707565b909550935050608088013567ffffffffffffffff811115613ad757600080fd5b613ae38a828b01613707565b989b979a50959850939692959293505050565b600080600080600060a08688031215613b0e57600080fd5b8535613b198161334d565b94506020860135613b298161334d565b93506040860135925060608601359150608086013567ffffffffffffffff811115613a0b57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60008060408385031215613bb357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561081e5761081e613bc4565b600060c0828403128015613c1957600080fd5b5060405160009060c0810167ffffffffffffffff81118282101715613c4057613c40613494565b6040908152845182526020808601519083015284810151908201526060840151613c698161334d565b60608201526080848101519082015260a08401519150613c888261334d565b60a08101919091529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060e0828403128015613cd957600080fd5b506000613ce46134c3565b8335613cef8161334d565b81526020840135613cff8161334d565b60208201526040840135613d128161334d565b6040820152606084810135908201526080808501359082015260a0808501359082015260c09384013593810193909352509092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8181038181111561081e5761081e613bc4565b8481526101808101602082018560005b6005811015613dd157815173ffffffffffffffffffffffffffffffffffffffff16835260209283019290910190600101613d9c565b50505060c082018460005b6005811015613dfb578151835260209283019290910190600101613ddc565b5050508261016083015295945050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613e4057600080fd5b8260051b80836020870137939093016020019392505050565b838152604060208201526000613e73604083018486613e0e565b95945050505050565b858152606060208201526000613e96606083018688613e0e565b8281036040840152613ea9818587613e0e565b98975050505050505050565b600060208284031215613ec757600080fd5b8151611b8b8161334d565b600060208284031215613ee457600080fd5b5051919050565b600181811c90821680613eff57607f821691505b6020821081036127bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80518015158114613f4857600080fd5b919050565b60008060408385031215613f6057600080fd5b825160048110613f6f57600080fd5b9150613f7d60208401613f38565b90509250929050565b600060208284031215613f9857600080fd5b611b8b82613f38565b601f821115610a9c57806000526020600020601f840160051c81016020851015613fc85750805b601f840160051c820191505b81811015613fe85760008155600101613fd4565b5050505050565b815167ffffffffffffffff81111561400957614009613494565b61401d816140178454613eeb565b84613fa1565b6020601f82116001811461406f57600083156140395750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613fe8565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156140bd578785015182556020948501946001909201910161409d565b50848210156140f957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b808202811582820484141761081e5761081e613bc4565b600082614155577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260a0604082015260006141a660a083018688613e0e565b82810360608401526141b9818587613e0e565b8381036080909401939093525050600081526020019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122045750a4f7b76b5361e7efd76223fd062b4f34721c207ae16a4ae5410c876dd0e64736f6c634300081e003300000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3","output":"0x608060405234801561001057600080fd5b506004361061025c5760003560e01c806391d1485411610145578063b20feaaf116100bd578063cfca31471161008c578063ec87621c11610071578063ec87621c146105a5578063f2e2e2aa146105cc578063f88139101461060657600080fd5b8063cfca31471461057f578063d547741f1461059257600080fd5b8063b20feaaf146104d0578063c36a470814610550578063c4c0453414610559578063ca15c8731461056c57600080fd5b8063a3246ad311610114578063aa405af9116100f9578063aa405af91461049e578063b013ab38146104a7578063b0e21e8a146104c757600080fd5b8063a3246ad314610475578063a5fd8edc1461049557600080fd5b806391d148541461040d57806399f8cbaf14610451578063a217fddf14610464578063a221c64a1461046c57600080fd5b806336568abe116101d857806366fbf11b116101a757806380cc90ed1161018c57806380cc90ed146103a2578063850a1501146103b55780639010d07c146103fa57600080fd5b806366fbf11b1461037c578063787dce3d1461038f57600080fd5b806336568abe1461033a57806339591b001461034d5780635026c826146103565780635e73fd761461036957600080fd5b80631c91ecb61161022f5780632a53ff5f116102145780632a53ff5f146102f95780632f2ff15d146103145780632f7d5c661461032757600080fd5b80631c91ecb6146102c4578063248a9ca3146102d657600080fd5b806301ffc9a714610261578063059129471461028957806306bdd7d51461029e5780631776a827146102b1575b600080fd5b61027461026f3660046118f2565b610619565b60405190151581526020015b60405180910390f35b61029c610297366004611934565b610675565b005b61029c6102ac366004611934565b6106f8565b61029c6102bf366004611976565b61077d565b6002545b604051908152602001610280565b6102c86102e4366004611934565b60009081526020819052604090206001015490565b600954600a5460408051928352602083019190915201610280565b61029c610322366004611991565b610850565b61029c610335366004611934565b61087b565b61029c610348366004611991565b6108f6565b6102c8600a5481565b610274610364366004611976565b610954565b61029c6103773660046119bd565b6109da565b61029c61038a366004611976565b610bb2565b61029c61039d366004611934565b610ca0565b61029c6103b0366004611934565b610d1b565b6003546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b6103d5610408366004611a64565b610da4565b61027461041b366004611991565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61045f366004611934565b610dc3565b6102c8600081565b6102c860075481565b610488610483366004611934565b610e3e565b6040516102809190611a86565b6102c860085481565b6102c860095481565b6004546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b6102c860065481565b6104d8610e58565b6040516102809190600060c08201905082518252602083015160208301526040830151604083015273ffffffffffffffffffffffffffffffffffffffff60608401511660608301526080830151608083015273ffffffffffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b6102c860055481565b6104d8610567366004611976565b610f13565b6102c861057a366004611934565b610f8a565b61029c61058d366004611976565b610fa1565b61029c6105a0366004611991565b611071565b6102c87f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b6105f86105da366004611976565b600b6020526000908152604090205460ff8082169161010090041682565b604051610280929190611b49565b61029c610614366004611b66565b611096565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061066f575061066f82611110565b92915050565b6000610680816111a7565b60055482036106bb576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f7a25f4d39c7ef2d9ff33e6304584e4c9fb1532bc39972e2cd34b074c1e40e02b906020015b60405180910390a15050565b6000610703816111a7565b600954821480610711575081155b15610748576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098290556040518281527f87948cba23b87f534057161b507f18cd7f69576b88a81a74c55d8f29dfb06452906020016106ec565b6000610788816111a7565b60045473ffffffffffffffffffffffffffffffffffffffff908116908316036107dd576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f372b5e772b71a68b761c4ac03b59a6a2322bd34ac161ba7029a6a418fe890051906020016106ec565b60008281526020819052604090206001015461086b816111a7565b61087583836111b4565b50505050565b6000610886816111a7565b60085482036108c1576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088290556040518281527f3a1dedaf5733100a92da764c2066bdc86b970e224ee473d515375645ce99a9d2906020016106ec565b73ffffffffffffffffffffffffffffffffffffffff81163314610945576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f82826111e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645602052604081205460ff166109d2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001919050565b73ffffffffffffffffffffffffffffffffffffffff85161580610a11575073ffffffffffffffffffffffffffffffffffffffff8416155b80610a30575073ffffffffffffffffffffffffffffffffffffffff8116155b15610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a927f000000000000000000000000f0d7de80a1c242fa3c738b083c422d65c6c7abf1611216565b6040517f09c26fb100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906309c26fb190610aef9089908990899089908990600401611bea565b600060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505060028054925090506000610b3283611c8d565b91905055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f68828e0b01cfe3740f67270e157a30f161e6531d36cd5db5797ec0e32d1f6911610b8f60025490565b878787604051610ba29493929190611cc5565b60405180910390a3505050505050565b6000610bbd816111a7565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090208054610100900460ff16610c22576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff8116825560405173ffffffffffffffffffffffffffffffffffffffff8516917f523fff9d18fef7247d13e67b28b58c6173cc8868a73b220fcebfd5887c1135b291610c939160ff1690611d06565b60405180910390a2505050565b6000610cab816111a7565b6006548203610ce6576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068290556040518281527fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de40906020016106ec565b6000610d26816111a7565b600a54821480610d3857506206978082105b15610d6f576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a8290556040518281527f2c941b29cbb54e4feeb31a83ebf90b2ffdd425f3970b341bf588a6ca88a8b56b906020016106ec565b6000828152600160205260408120610dbc9083611223565b9392505050565b6000610dce816111a7565b6007548203610e09576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078290556040518281527f6d3d82f4a368310fc477262ac1c98c96cf147c62b219e94a4acf691400922905906020016106ec565b600081815260016020526040902060609061066f9061122f565b610ebd6040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b506040805160c081018252600654815260085460208201526007549181019190915260035473ffffffffffffffffffffffffffffffffffffffff908116606083015260055460808301526004541660a082015290565b610f786040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b610f8182610954565b5061066f610e58565b600081815260016020526040812061066f9061123c565b6000610fac816111a7565b60035473ffffffffffffffffffffffffffffffffffffffff90811690831603611001576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f33837f672315b6cffcf11894714abfdec631a913c18d7738fcaf40c444376fb690600090a25050565b60008281526020819052604090206001015461108c816111a7565b61087583836111e9565b60006110a1816111a7565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b6020526040902054610100900460ff1615611106576040517f56b89dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f8383611246565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061066f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461066f565b6111b181336113d3565b50565b6000806111c18484611462565b90508015610dbc5760008481526001602052604090206111e1908461155e565b509392505050565b6000806111f68484611580565b90508015610dbc5760008481526001602052604090206111e1908461163b565b600061066f82600061165d565b6000610dbc8383611732565b60606000610dbc8361175c565b600061066f825490565b73ffffffffffffffffffffffffffffffffffffffff82161580159061127c5750600081600381111561127a5761127a611adf565b145b156112b3576040517fa1e9dd9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052808260038111156112d0576112d0611adf565b81526001602091820181905273ffffffffffffffffffffffffffffffffffffffff85166000908152600b9092526040909120825181549192909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600381111561134357611343611adf565b0217905550602091909101518154901515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617905560405173ffffffffffffffffffffffffffffffffffffffff8316907fbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8906113c7908490611d06565b60405180910390a25050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661145e576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114f43390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161066f565b50600061066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117b8565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117ff565b6000814710156116a2576040517fcf47918100000000000000000000000000000000000000000000000000000000815247600482015260248101839052604401611455565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff811661066f576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061174957611749611d14565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156117ac57602002820191906000526020600020905b815481526020019060010190808311611798575b50505050509050919050565b60008181526001830160205260408120546115565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561066f565b600081815260018301602052604081205480156118e8576000611823600183611d43565b855490915060009061183790600190611d43565b905080821461189c57600086600001828154811061185757611857611d14565b906000526020600020015490508087600001848154811061187a5761187a611d14565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806118ad576118ad611d56565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061066f565b600091505061066f565b60006020828403121561190457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dbc57600080fd5b60006020828403121561194657600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197157600080fd5b919050565b60006020828403121561198857600080fd5b610dbc8261194d565b600080604083850312156119a457600080fd5b823591506119b46020840161194d565b90509250929050565b6000806000806000608086880312156119d557600080fd5b6119de8661194d565b94506119ec6020870161194d565b9350604086013567ffffffffffffffff811115611a0857600080fd5b8601601f81018813611a1957600080fd5b803567ffffffffffffffff811115611a3057600080fd5b886020828401011115611a4257600080fd5b60209190910193509150611a586060870161194d565b90509295509295909350565b60008060408385031215611a7757600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015611ad457835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611aa0565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b45577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60408101611b578285611b0e565b82151560208301529392505050565b60008060408385031215611b7957600080fd5b611b828361194d565b9150602083013560048110611b9657600080fd5b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201526000611c36608083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cbe57611cbe611c5e565b5060010190565b848152606060208201526000611cdf606083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff8316604083015295945050505050565b6020810161066f8284611b0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561066f5761066f611c5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122004cc3d27435f63a9b2d95a3a11885d96b818e3a86df73530c60f192f0002bb3664736f6c634300081e0033","gas_used":5346739,"gas_limit":5346739,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":1,"index":0},{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08","0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":1,"index":1},{"raw_log":{"topics":["0xbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},"decoded":null,"position":1,"index":2},{"raw_log":{"topics":["0xbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":1,"index":3}],"ordering":[{"Call":0},{"Log":0},{"Log":1},{"Log":2},{"Log":3}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xc5a5c42992decbae36851359345fe25997f5c42d","address":"0xf0d7de80a1c242fa3c738b083c422d65c6c7abf1","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60c060405234801561001057600080fd5b50600160025533608081905260a08190528061423d61007960003960008181610ae701528181610bb80152818161151c01528181611c6e0152818161202e015281816121730152818161245301526127170152600081816103df0152610826015261423d6000f3fe6080604052600436106102345760003560e01c80636d2401c811610138578063bd464115116100b0578063cb3a6b2c1161007f578063dc63f6ae11610064578063dc63f6ae1461078e578063f23a6e61146107ae578063f75166fc146107f357600080fd5b8063cb3a6b2c14610736578063d547741f1461076e57600080fd5b8063bd464115146106c1578063c2986b0e146106e1578063c7395be214610701578063ca15c8731461071657600080fd5b8063a217fddf11610107578063af06216f116100ec578063af06216f14610637578063bb19b4d31461064c578063bc197c811461067c57600080fd5b8063a217fddf146105f5578063a3246ad31461060a57600080fd5b80636d2401c8146105355780639010d07c1461055757806391d148541461057757806393e6c436146105c857600080fd5b8063248a9ca3116101cb5780634517863d1161019a57806359416e0e1161017f57806359416e0e146104ef57806361f438481461050f57806364cde8d21461052257600080fd5b80634517863d1461049b578063564cd00b146104cf57600080fd5b8063248a9ca3146104015780632f2ff15d1461043157806336568abe146104515780633dd781de1461047157600080fd5b8063150b7a0211610207578063150b7a02146102eb57806316ecfdf0146103605780631b8ec5d714610376578063222e9e82146103cd57600080fd5b806301ffc9a71461023957806309c26fb11461026e5780630be4d2b814610290578063147e7e66146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461330b565b610813565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046133b8565b610824565b005b34801561029c57600080fd5b5061028e6102ab366004613435565b610990565b3480156102bc57600080fd5b506102dd6102cb366004613477565b60076020526000908152604090205481565b604051908152602001610265565b3480156102f757600080fd5b5061032f6103063660046135c9565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610265565b34801561036c57600080fd5b506102dd60065481565b34801561038257600080fd5b506003546103a890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610265565b3480156103d957600080fd5b506103a87f000000000000000000000000000000000000000000000000000000000000000081565b34801561040d57600080fd5b506102dd61041c366004613635565b60009081526020819052604090206001015490565b34801561043d57600080fd5b5061028e61044c36600461364e565b610a18565b34801561045d57600080fd5b5061028e61046c36600461364e565b610a43565b34801561047d57600080fd5b50610486610aa1565b60408051928352602083019190915201610265565b3480156104a757600080fd5b506102dd7f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b681565b3480156104db57600080fd5b5061028e6104ea36600461367e565b610b97565b3480156104fb57600080fd5b5061028e61050a36600461374c565b61131c565b61028e61051d366004613635565b6114fb565b61028e6105303660046137d4565b61182b565b34801561054157600080fd5b5061054a611ae5565b6040516102659190613800565b34801561056357600080fd5b506103a861057236600461386c565b611b73565b34801561058357600080fd5b5061025961059236600461364e565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105d457600080fd5b506102dd6105e3366004613477565b60096020526000908152604090205481565b34801561060157600080fd5b506102dd600081565b34801561061657600080fd5b5061062a610625366004613635565b611b92565b604051610265919061388e565b34801561064357600080fd5b50610259611bac565b34801561065857600080fd5b50610259610667366004613635565b60046020526000908152604090205460ff1681565b34801561068857600080fd5b5061032f61069736600461396a565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b3480156106cd57600080fd5b5061028e6106dc36600461374c565b611c0a565b3480156106ed57600080fd5b5061028e6106fc3660046137d4565b611e71565b34801561070d57600080fd5b5061028e611f8c565b34801561072257600080fd5b506102dd610731366004613635565b611fd3565b34801561074257600080fd5b506102dd610751366004613a24565b600860209081526000928352604080842090915290825290205481565b34801561077a57600080fd5b5061028e61078936600461364e565b611fea565b34801561079a57600080fd5b5061028e6107a9366004613a52565b61200f565b3480156107ba57600080fd5b5061032f6107c9366004613af6565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3480156107ff57600080fd5b5061028e61080e3660046137d4565b6123ab565b600061081e82612580565b92915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314158061086b575060035460ff165b156108a2576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ad6000866125d6565b506108d87f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b6856125d6565b5061091883838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0073ffffffffffffffffffffffffffffffffffffffff90931661010002929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090921691909117600117905550505050565b600061099b81612652565b6109da83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b7f121f741ddf8ba42be07a0e28c2017398f83e3766e2f4bfa9ea925307c0c5d1378383604051610a0b929190613b53565b60405180910390a1505050565b600082815260208190526040902060010154610a3381612652565b610a3d83836125d6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a92576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a9c828261265f565b505050565b6006546000908190808203610ae2576040517fbb6aa2ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632a53ff5f6040518163ffffffff1660e01b81526004016040805180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190613ba0565b9092509050610b828284613bf3565b9450610b8e8186613bf3565b93505050509091565b610b9f61268c565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663c4c04534336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240160c060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190613c06565b905060005b83811015611310576000858583818110610c8c57610c8c613c97565b905060e00201803603810190610ca29190613cc6565b60a081015160009081526004602052604090205490915060ff1615610cf3576040517fc41a375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160c08201516040805160208101929092527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16908201526054016040516020818303038152906040528051906020012014610d83576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516000610d90826126cd565b60a0840151600090815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055608085015160608601519293509091610de59190613bf3565b9050610df0816127c3565b610df86132ed565b6000808080866003811115610e0f57610e0f613d4a565b1480610e2c57506001866003811115610e2a57610e2a613d4a565b145b15610e5357610e448a89606001518a608001516127fd565b91955093509150869050610f3f565b6002866003811115610e6757610e67613d4a565b1480610e8457506003866003811115610e8257610e82613d4a565b145b15610f0d57610e928a6128ff565b606089015160808a015160a08d0151604084015160208501518551959950939750919550935091610ec39190613bf3565b610ecd9190613bf3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604081208054909190610f02908490613d79565b90915550610f3f9050565b6040517ff599342800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526007602052604081208054879290610f74908490613d79565b9091555050835160608b015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152604080832093861683529290529081208054909190610fc4908490613bf3565b9091555050602080850151600354610100900473ffffffffffffffffffffffffffffffffffffffff90811660009081526008845260408082209286168252919093528220805491929091611019908490613bf3565b909155505060408085015173ffffffffffffffffffffffffffffffffffffffff8d8116600090815260086020908152848220928616825291909152918220805491929091611068908490613bf3565b909155505060208089015173ffffffffffffffffffffffffffffffffffffffff9081166000908152600883526040808220928b16825291909252812080548592906110b4908490613bf3565b909155505060408089015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152838220928b168252919091529081208054849290611102908490613bf3565b925050819055508673ffffffffffffffffffffffffffffffffffffffff167f68509a400b7cc402898b7aacefe7cf662539f64e5a79d4234c58734256b5e224866040518060a001604052808e6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506040518060a001604052808960006003811061129157611291613c97565b60200201518152602001896001600381106112ae576112ae613c97565b60200201518152602001896002600381106112cb576112cb613c97565b60200201518152602001888152602001878152508c60a001516040516112f49493929190613d8c565b60405180910390a2505060019096019550610c70945050505050565b5050610a9c6001600255565b600061132781612652565b61132f61268c565b600061133a876126cd565b9050600281600381111561135057611350613d4a565b036113ff578461135f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611394908490613bf3565b909155506113a790508833308a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167fd6d003c3b12171676fc9412009c65e678368ee9deedce21d9efe7c9d9d34a1c18289896040516113f193929190613e59565b60405180910390a2506114e8565b600381600381111561141357611413613d4a565b03610f0d5760006114248585612a5c565b905061142f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611464908490613bf3565b9091555061147990508833308a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f4f7bc006fa3e8a3fde1c087dfff50e0cda2cc7791fa6343ee9f4c395e3da0d37838a8a8a8a6040516114de959493929190613e7c565b60405180910390a3505b506114f36001600255565b505050505050565b600061150681612652565b61150e61268c565b81611518816127c3565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b013ab386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190613eb5565b9050600073ffffffffffffffffffffffffffffffffffffffff821661160857843414611601576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611793565b3415611640576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d19190613ed2565b90506116f573ffffffffffffffffffffffffffffffffffffffff8416333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117859190613ed2565b61178f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812080548392906117c8908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f85dd53a04234402c5e629c4ab3051ff7aa3d103e7d22804a9713094c50e6ca929060200160405180910390a35050506118276001600255565b5050565b600061183681612652565b61183e61268c565b81611848816127c3565b6000611853856126cd565b905060008082600381111561186a5761186a613d4a565b036118af578434146118a8576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611a53565b60018260038111156118c3576118c3613d4a565b03610f0d573415611900576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190613ed2565b90506119b573ffffffffffffffffffffffffffffffffffffffff8816333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8916906370a0823190602401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613ed2565b611a4f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff861660009081526007602052604081208054839290611a88908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8716907f78cae0ecd388607ec2d56e9b6f673cd0a042c8407cdfc7b578e9707223ee64b29060200160405180910390a2505050610a9c6001600255565b60058054611af290613eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1e90613eeb565b8015611b6b5780601f10611b4057610100808354040283529160200191611b6b565b820191906000526020600020905b815481529060010190602001808311611b4e57829003601f168201915b505050505081565b6000828152600160205260408120611b8b9083612bbd565b9392505050565b600081815260016020526040902060609061081e90612bc9565b6000806000611bb9610aa1565b9150915081421080611bca57508042115b15611c01576040517fbd95a86000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019250505090565b6000611c1581612652565b611c1d61268c565b611c25611bac565b506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda9190613f4d565b5090506002816003811115611cf157611cf1613d4a565b03611d925784611d00816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611d35908490613d79565b90915550611d4890508830338a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167f9345f22c71af54e80c416040732be09908da822fef94e166af33535f824c51c78289896040516113f193929190613e59565b6003816003811115611da657611da6613d4a565b03610f0d576000611db78585612a5c565b9050611dc2816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611df7908490613d79565b90915550611e0c90508830338a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f0dc54c2a40ababb385f82389a070a55b00cd3fae93fc5b1916924ade1633503b838a8a8a8a6040516114de959493929190613e7c565b6000611e7c81612652565b611e8461268c565b611e8c611bac565b5081611e97816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208054859290611ecc908490613d79565b909155505073ffffffffffffffffffffffffffffffffffffffff8416611f1357611f0e83335b73ffffffffffffffffffffffffffffffffffffffff1690612bd6565b611f34565b611f3473ffffffffffffffffffffffffffffffffffffffff85163385612c91565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907ff57fb8b8dfa150e93ac811898e14550baf3452656f9d4e8058a5c24efa9ecaad9060200160405180910390a350610a9c6001600255565b6000611f9781612652565b4260068190556040519081527f01909d53c76ffada2e8f99e82b9afa64e37cfe2bc2c1fa7ba5959fc62e4baa7f9060200160405180910390a150565b600081815260016020526040812061081e90612ccf565b60008281526020819052604090206001015461200581612652565b610a3d838361265f565b61201761268c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156120bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e19190613f86565b5073ffffffffffffffffffffffffffffffffffffffff8087166000908152600860209081526040808320938b1683529290529081208054879290612126908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190613f4d565b50905060008160038111156121f6576121f6613d4a565b036122205761221b73ffffffffffffffffffffffffffffffffffffffff881687612bd6565b61232a565b600181600381111561223457612234613d4a565b0361225a5761221b73ffffffffffffffffffffffffffffffffffffffff89168888612c91565b600281600381111561226e5761226e613d4a565b036122c057838681146122ad576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ba89308a8989612981565b5061232a565b60038160038111156122d4576122d4613d4a565b03610f0d576122e38383612a5c565b861461231b576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61221b88308988888888612a9d565b8773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0c3f6188054cfad2267b81cfd4ec43dcf3245a8b92e59cc44d6b4e85a5867264888888888860405161238f959493929190613e7c565b60405180910390a3506123a26001600255565b50505050505050565b60006123b681612652565b6123be61268c565b6123c6611bac565b50816123d1816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208054859290612406908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f2e2e2aa906024016040805180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf9190613f4d565b50905060008160038111156124d6576124d6613d4a565b036124ea576124e58433611ef2565b612524565b60018160038111156124fe576124fe613d4a565b03610f0d576124e573ffffffffffffffffffffffffffffffffffffffff86163386612c91565b8473ffffffffffffffffffffffffffffffffffffffff167f2bde45b775c7b186ca5991ba05250885d44cad19752d5e84f715be315dc60ad08560405161256c91815260200190565b60405180910390a25050610a9c6001600255565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061081e575061081e82612cd9565b6000806125e38484612d2f565b90508015611b8b5760008481526001602052604090206126039084612e2b565b509392505050565b8051600003612646576040517fd07b00d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056118278282613fef565b61265c8133612e4d565b50565b60008061266c8484612ed3565b90508015611b8b5760008481526001602052604090206126039084612f8e565b60028054036126c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b6040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f2e2e2aa906024016040805180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190613f4d565b9092509050806127bd576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b8060000361265c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128056132ed565b600080806128138587613bf3565b9050600081612823886064614108565b61282d919061411f565b90506040518060600160405280612710848b6000015161284d9190614108565b612857919061411f565b8152602001612710848b6040015161286f9190614108565b612879919061411f565b8152602001612710848b602001516128919190614108565b61289b919061411f565b90526040810151602082015182519297506000926128b99086613d79565b6128c39190613d79565b6128cd9190613d79565b905060646128db8383614108565b6128e5919061411f565b94506128f18582613d79565b935050505093509350939050565b6129076132ed565b60808201516040805160608101909152835181906127109061292a908590614108565b612934919061411f565b815260200161271083866040015161294c9190614108565b612956919061411f565b815260200161271083866020015161296e9190614108565b612978919061411f565b90529392505050565b60005b818110156114f3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e86868686868181106129bc576129bc613c97565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015612a3857600080fd5b505af1158015612a4c573d6000803e3d6000fd5b5050600190920191506129849050565b6000805b82811015612a9657838382818110612a7a57612a7a613c97565b9050602002013582612a8c9190613bf3565b9150600101612a60565b5092915050565b6040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690632eb2c2d690612af99089908990899089908990899060040161415a565b600060405180830381600087803b158015612b1357600080fd5b505af1158015612b27573d6000803e3d6000fd5b5050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a3d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612fb0565b6000611b8b8383613054565b60606000611b8b8361307e565b80471015612c1e576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114612c79576040519150601f19603f3d011682016040523d82523d6000602084013e612c7e565b606091505b509150915081610a3d57610a3d816130da565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610a9c91859182169063a9059cbb90606401612b76565b600061081e825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061081e575061081e8261311c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612dc13390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161081e565b50600061081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131b3565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611827576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401612c15565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131fa565b600080602060008451602086016000885af180612fd3576040513d6000823e3d81fd5b50506000513d91508115612feb578060011415613005565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610a3d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401612c15565b600082600001828154811061306b5761306b613c97565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ce57602002820191906000526020600020905b8154815260200190600101908083116130ba575b50505050509050919050565b8051156130ea5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061081e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081e565b6000818152600183016020526040812054612e235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561081e565b600081815260018301602052604081205480156132e357600061321e600183613d79565b855490915060009061323290600190613d79565b905080821461329757600086600001828154811061325257613252613c97565b906000526020600020015490508087600001848154811061327557613275613c97565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806132a8576132a86141d8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061081e565b600091505061081e565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561331d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b8b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461265c57600080fd5b60008083601f84011261338157600080fd5b50813567ffffffffffffffff81111561339957600080fd5b6020830191508360208285010111156133b157600080fd5b9250929050565b6000806000806000608086880312156133d057600080fd5b85356133db8161334d565b945060208601356133eb8161334d565b9350604086013567ffffffffffffffff81111561340757600080fd5b6134138882890161336f565b90945092505060608601356134278161334d565b809150509295509295909350565b6000806020838503121561344857600080fd5b823567ffffffffffffffff81111561345f57600080fd5b61346b8582860161336f565b90969095509350505050565b60006020828403121561348957600080fd5b8135611b8b8161334d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156134e6576134e6613494565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561353357613533613494565b604052919050565b600082601f83011261354c57600080fd5b813567ffffffffffffffff81111561356657613566613494565b61359760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016134ec565b8181528460208386010111156135ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156135df57600080fd5b84356135ea8161334d565b935060208501356135fa8161334d565b925060408501359150606085013567ffffffffffffffff81111561361d57600080fd5b6136298782880161353b565b91505092959194509250565b60006020828403121561364757600080fd5b5035919050565b6000806040838503121561366157600080fd5b8235915060208301356136738161334d565b809150509250929050565b60008060006040848603121561369357600080fd5b833567ffffffffffffffff8111156136aa57600080fd5b8401601f810186136136bb57600080fd5b803567ffffffffffffffff8111156136d257600080fd5b86602060e0830284010111156136e757600080fd5b6020918201945092508401356136fc8161334d565b809150509250925092565b60008083601f84011261371957600080fd5b50813567ffffffffffffffff81111561373157600080fd5b6020830191508360208260051b85010111156133b157600080fd5b60008060008060006060868803121561376457600080fd5b853561376f8161334d565b9450602086013567ffffffffffffffff81111561378b57600080fd5b61379788828901613707565b909550935050604086013567ffffffffffffffff8111156137b757600080fd5b6137c388828901613707565b969995985093965092949392505050565b600080604083850312156137e757600080fd5b82356137f28161334d565b946020939093013593505050565b602081526000825180602084015260005b8181101561382e5760208186018101516040868401015201613811565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6000806040838503121561387f57600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156138dc57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016138a8565b509095945050505050565b600082601f8301126138f857600080fd5b813567ffffffffffffffff81111561391257613912613494565b8060051b613922602082016134ec565b9182526020818501810192908101908684111561393e57600080fd5b6020860192505b83831015613960578235825260209283019290910190613945565b9695505050505050565b600080600080600060a0868803121561398257600080fd5b853561398d8161334d565b9450602086013561399d8161334d565b9350604086013567ffffffffffffffff8111156139b957600080fd5b6139c5888289016138e7565b935050606086013567ffffffffffffffff8111156139e257600080fd5b6139ee888289016138e7565b925050608086013567ffffffffffffffff811115613a0b57600080fd5b613a178882890161353b565b9150509295509295909350565b60008060408385031215613a3757600080fd5b8235613a428161334d565b915060208301356136738161334d565b600080600080600080600060a0888a031215613a6d57600080fd5b8735613a788161334d565b96506020880135613a888161334d565b955060408801359450606088013567ffffffffffffffff811115613aab57600080fd5b613ab78a828b01613707565b909550935050608088013567ffffffffffffffff811115613ad757600080fd5b613ae38a828b01613707565b989b979a50959850939692959293505050565b600080600080600060a08688031215613b0e57600080fd5b8535613b198161334d565b94506020860135613b298161334d565b93506040860135925060608601359150608086013567ffffffffffffffff811115613a0b57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60008060408385031215613bb357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561081e5761081e613bc4565b600060c0828403128015613c1957600080fd5b5060405160009060c0810167ffffffffffffffff81118282101715613c4057613c40613494565b6040908152845182526020808601519083015284810151908201526060840151613c698161334d565b60608201526080848101519082015260a08401519150613c888261334d565b60a08101919091529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060e0828403128015613cd957600080fd5b506000613ce46134c3565b8335613cef8161334d565b81526020840135613cff8161334d565b60208201526040840135613d128161334d565b6040820152606084810135908201526080808501359082015260a0808501359082015260c09384013593810193909352509092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8181038181111561081e5761081e613bc4565b8481526101808101602082018560005b6005811015613dd157815173ffffffffffffffffffffffffffffffffffffffff16835260209283019290910190600101613d9c565b50505060c082018460005b6005811015613dfb578151835260209283019290910190600101613ddc565b5050508261016083015295945050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613e4057600080fd5b8260051b80836020870137939093016020019392505050565b838152604060208201526000613e73604083018486613e0e565b95945050505050565b858152606060208201526000613e96606083018688613e0e565b8281036040840152613ea9818587613e0e565b98975050505050505050565b600060208284031215613ec757600080fd5b8151611b8b8161334d565b600060208284031215613ee457600080fd5b5051919050565b600181811c90821680613eff57607f821691505b6020821081036127bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80518015158114613f4857600080fd5b919050565b60008060408385031215613f6057600080fd5b825160048110613f6f57600080fd5b9150613f7d60208401613f38565b90509250929050565b600060208284031215613f9857600080fd5b611b8b82613f38565b601f821115610a9c57806000526020600020601f840160051c81016020851015613fc85750805b601f840160051c820191505b81811015613fe85760008155600101613fd4565b5050505050565b815167ffffffffffffffff81111561400957614009613494565b61401d816140178454613eeb565b84613fa1565b6020601f82116001811461406f57600083156140395750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613fe8565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156140bd578785015182556020948501946001909201910161409d565b50848210156140f957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b808202811582820484141761081e5761081e613bc4565b600082614155577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260a0604082015260006141a660a083018688613e0e565b82810360608401526141b9818587613e0e565b8381036080909401939093525050600081526020019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122045750a4f7b76b5361e7efd76223fd062b4f34721c207ae16a4ae5410c876dd0e64736f6c634300081e0033","output":"0x6080604052600436106102345760003560e01c80636d2401c811610138578063bd464115116100b0578063cb3a6b2c1161007f578063dc63f6ae11610064578063dc63f6ae1461078e578063f23a6e61146107ae578063f75166fc146107f357600080fd5b8063cb3a6b2c14610736578063d547741f1461076e57600080fd5b8063bd464115146106c1578063c2986b0e146106e1578063c7395be214610701578063ca15c8731461071657600080fd5b8063a217fddf11610107578063af06216f116100ec578063af06216f14610637578063bb19b4d31461064c578063bc197c811461067c57600080fd5b8063a217fddf146105f5578063a3246ad31461060a57600080fd5b80636d2401c8146105355780639010d07c1461055757806391d148541461057757806393e6c436146105c857600080fd5b8063248a9ca3116101cb5780634517863d1161019a57806359416e0e1161017f57806359416e0e146104ef57806361f438481461050f57806364cde8d21461052257600080fd5b80634517863d1461049b578063564cd00b146104cf57600080fd5b8063248a9ca3146104015780632f2ff15d1461043157806336568abe146104515780633dd781de1461047157600080fd5b8063150b7a0211610207578063150b7a02146102eb57806316ecfdf0146103605780631b8ec5d714610376578063222e9e82146103cd57600080fd5b806301ffc9a71461023957806309c26fb11461026e5780630be4d2b814610290578063147e7e66146102b0575b600080fd5b34801561024557600080fd5b5061025961025436600461330b565b610813565b60405190151581526020015b60405180910390f35b34801561027a57600080fd5b5061028e6102893660046133b8565b610824565b005b34801561029c57600080fd5b5061028e6102ab366004613435565b610990565b3480156102bc57600080fd5b506102dd6102cb366004613477565b60076020526000908152604090205481565b604051908152602001610265565b3480156102f757600080fd5b5061032f6103063660046135c9565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610265565b34801561036c57600080fd5b506102dd60065481565b34801561038257600080fd5b506003546103a890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610265565b3480156103d957600080fd5b506103a87f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d81565b34801561040d57600080fd5b506102dd61041c366004613635565b60009081526020819052604090206001015490565b34801561043d57600080fd5b5061028e61044c36600461364e565b610a18565b34801561045d57600080fd5b5061028e61046c36600461364e565b610a43565b34801561047d57600080fd5b50610486610aa1565b60408051928352602083019190915201610265565b3480156104a757600080fd5b506102dd7f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b681565b3480156104db57600080fd5b5061028e6104ea36600461367e565b610b97565b3480156104fb57600080fd5b5061028e61050a36600461374c565b61131c565b61028e61051d366004613635565b6114fb565b61028e6105303660046137d4565b61182b565b34801561054157600080fd5b5061054a611ae5565b6040516102659190613800565b34801561056357600080fd5b506103a861057236600461386c565b611b73565b34801561058357600080fd5b5061025961059236600461364e565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105d457600080fd5b506102dd6105e3366004613477565b60096020526000908152604090205481565b34801561060157600080fd5b506102dd600081565b34801561061657600080fd5b5061062a610625366004613635565b611b92565b604051610265919061388e565b34801561064357600080fd5b50610259611bac565b34801561065857600080fd5b50610259610667366004613635565b60046020526000908152604090205460ff1681565b34801561068857600080fd5b5061032f61069736600461396a565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b3480156106cd57600080fd5b5061028e6106dc36600461374c565b611c0a565b3480156106ed57600080fd5b5061028e6106fc3660046137d4565b611e71565b34801561070d57600080fd5b5061028e611f8c565b34801561072257600080fd5b506102dd610731366004613635565b611fd3565b34801561074257600080fd5b506102dd610751366004613a24565b600860209081526000928352604080842090915290825290205481565b34801561077a57600080fd5b5061028e61078936600461364e565b611fea565b34801561079a57600080fd5b5061028e6107a9366004613a52565b61200f565b3480156107ba57600080fd5b5061032f6107c9366004613af6565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3480156107ff57600080fd5b5061028e61080e3660046137d4565b6123ab565b600061081e82612580565b92915050565b7f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d73ffffffffffffffffffffffffffffffffffffffff163314158061086b575060035460ff165b156108a2576040517fee90c46800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ad6000866125d6565b506108d87f184bcf7a4c0de7fb994ea3d6b639bfcbf8e00735a8168c18466903113c39a4b6856125d6565b5061091883838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0073ffffffffffffffffffffffffffffffffffffffff90931661010002929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090921691909117600117905550505050565b600061099b81612652565b6109da83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260b92505050565b7f121f741ddf8ba42be07a0e28c2017398f83e3766e2f4bfa9ea925307c0c5d1378383604051610a0b929190613b53565b60405180910390a1505050565b600082815260208190526040902060010154610a3381612652565b610a3d83836125d6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610a92576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a9c828261265f565b505050565b6006546000908190808203610ae2576040517fbb6aa2ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d73ffffffffffffffffffffffffffffffffffffffff16632a53ff5f6040518163ffffffff1660e01b81526004016040805180830381865afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b739190613ba0565b9092509050610b828284613bf3565b9450610b8e8186613bf3565b93505050509091565b610b9f61268c565b600073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d1663c4c04534336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240160c060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190613c06565b905060005b83811015611310576000858583818110610c8c57610c8c613c97565b905060e00201803603810190610ca29190613cc6565b60a081015160009081526004602052604090205490915060ff1615610cf3576040517fc41a375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a081015160c08201516040805160208101929092527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16908201526054016040516020818303038152906040528051906020012014610d83576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516000610d90826126cd565b60a0840151600090815260046020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055608085015160608601519293509091610de59190613bf3565b9050610df0816127c3565b610df86132ed565b6000808080866003811115610e0f57610e0f613d4a565b1480610e2c57506001866003811115610e2a57610e2a613d4a565b145b15610e5357610e448a89606001518a608001516127fd565b91955093509150869050610f3f565b6002866003811115610e6757610e67613d4a565b1480610e8457506003866003811115610e8257610e82613d4a565b145b15610f0d57610e928a6128ff565b606089015160808a015160a08d0151604084015160208501518551959950939750919550935091610ec39190613bf3565b610ecd9190613bf3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604081208054909190610f02908490613d79565b90915550610f3f9050565b6040517ff599342800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff871660009081526007602052604081208054879290610f74908490613d79565b9091555050835160608b015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152604080832093861683529290529081208054909190610fc4908490613bf3565b9091555050602080850151600354610100900473ffffffffffffffffffffffffffffffffffffffff90811660009081526008845260408082209286168252919093528220805491929091611019908490613bf3565b909155505060408085015173ffffffffffffffffffffffffffffffffffffffff8d8116600090815260086020908152848220928616825291909152918220805491929091611068908490613bf3565b909155505060208089015173ffffffffffffffffffffffffffffffffffffffff9081166000908152600883526040808220928b16825291909252812080548592906110b4908490613bf3565b909155505060408089015173ffffffffffffffffffffffffffffffffffffffff908116600090815260086020908152838220928b168252919091529081208054849290611102908490613bf3565b925050819055508673ffffffffffffffffffffffffffffffffffffffff167f68509a400b7cc402898b7aacefe7cf662539f64e5a79d4234c58734256b5e224866040518060a001604052808e6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c6040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506040518060a001604052808960006003811061129157611291613c97565b60200201518152602001896001600381106112ae576112ae613c97565b60200201518152602001896002600381106112cb576112cb613c97565b60200201518152602001888152602001878152508c60a001516040516112f49493929190613d8c565b60405180910390a2505060019096019550610c70945050505050565b5050610a9c6001600255565b600061132781612652565b61132f61268c565b600061133a876126cd565b9050600281600381111561135057611350613d4a565b036113ff578461135f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611394908490613bf3565b909155506113a790508833308a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167fd6d003c3b12171676fc9412009c65e678368ee9deedce21d9efe7c9d9d34a1c18289896040516113f193929190613e59565b60405180910390a2506114e8565b600381600381111561141357611413613d4a565b03610f0d5760006114248585612a5c565b905061142f816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611464908490613bf3565b9091555061147990508833308a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f4f7bc006fa3e8a3fde1c087dfff50e0cda2cc7791fa6343ee9f4c395e3da0d37838a8a8a8a6040516114de959493929190613e7c565b60405180910390a3505b506114f36001600255565b505050505050565b600061150681612652565b61150e61268c565b81611518816127c3565b60007f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d73ffffffffffffffffffffffffffffffffffffffff1663b013ab386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a99190613eb5565b9050600073ffffffffffffffffffffffffffffffffffffffff821661160857843414611601576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611793565b3415611640576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d19190613ed2565b90506116f573ffffffffffffffffffffffffffffffffffffffff8416333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117859190613ed2565b61178f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff8216600090815260096020526040812080548392906117c8908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff83169033907f85dd53a04234402c5e629c4ab3051ff7aa3d103e7d22804a9713094c50e6ca929060200160405180910390a35050506118276001600255565b5050565b600061183681612652565b61183e61268c565b81611848816127c3565b6000611853856126cd565b905060008082600381111561186a5761186a613d4a565b036118af578434146118a8576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5083611a53565b60018260038111156118c3576118c3613d4a565b03610f0d573415611900576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a0823190602401602060405180830381865afa15801561196d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119919190613ed2565b90506119b573ffffffffffffffffffffffffffffffffffffffff8816333089612b34565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8916906370a0823190602401602060405180830381865afa158015611a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a459190613ed2565b611a4f9190613d79565b9150505b73ffffffffffffffffffffffffffffffffffffffff861660009081526007602052604081208054839290611a88908490613bf3565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8716907f78cae0ecd388607ec2d56e9b6f673cd0a042c8407cdfc7b578e9707223ee64b29060200160405180910390a2505050610a9c6001600255565b60058054611af290613eeb565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1e90613eeb565b8015611b6b5780601f10611b4057610100808354040283529160200191611b6b565b820191906000526020600020905b815481529060010190602001808311611b4e57829003601f168201915b505050505081565b6000828152600160205260408120611b8b9083612bbd565b9392505050565b600081815260016020526040902060609061081e90612bc9565b6000806000611bb9610aa1565b9150915081421080611bca57508042115b15611c01576040517fbd95a86000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019250505090565b6000611c1581612652565b611c1d61268c565b611c25611bac565b506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526000917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d9091169063f2e2e2aa906024016040805180830381865afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda9190613f4d565b5090506002816003811115611cf157611cf1613d4a565b03611d925784611d00816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611d35908490613d79565b90915550611d4890508830338a8a612981565b8773ffffffffffffffffffffffffffffffffffffffff167f9345f22c71af54e80c416040732be09908da822fef94e166af33535f824c51c78289896040516113f193929190613e59565b6003816003811115611da657611da6613d4a565b03610f0d576000611db78585612a5c565b9050611dc2816127c3565b73ffffffffffffffffffffffffffffffffffffffff881660009081526007602052604081208054839290611df7908490613d79565b90915550611e0c90508830338a8a8a8a612a9d565b73ffffffffffffffffffffffffffffffffffffffff88163373ffffffffffffffffffffffffffffffffffffffff167f0dc54c2a40ababb385f82389a070a55b00cd3fae93fc5b1916924ade1633503b838a8a8a8a6040516114de959493929190613e7c565b6000611e7c81612652565b611e8461268c565b611e8c611bac565b5081611e97816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526009602052604081208054859290611ecc908490613d79565b909155505073ffffffffffffffffffffffffffffffffffffffff8416611f1357611f0e83335b73ffffffffffffffffffffffffffffffffffffffff1690612bd6565b611f34565b611f3473ffffffffffffffffffffffffffffffffffffffff85163385612c91565b60405183815273ffffffffffffffffffffffffffffffffffffffff85169033907ff57fb8b8dfa150e93ac811898e14550baf3452656f9d4e8058a5c24efa9ecaad9060200160405180910390a350610a9c6001600255565b6000611f9781612652565b4260068190556040519081527f01909d53c76ffada2e8f99e82b9afa64e37cfe2bc2c1fa7ba5959fc62e4baa7f9060200160405180910390a150565b600081815260016020526040812061081e90612ccf565b60008281526020819052604090206001015461200581612652565b610a3d838361265f565b61201761268c565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d16635026c826336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156120bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e19190613f86565b5073ffffffffffffffffffffffffffffffffffffffff8087166000908152600860209081526040808320938b1683529290529081208054879290612126908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526000917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d9091169063f2e2e2aa906024016040805180830381865afa1580156121bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121df9190613f4d565b50905060008160038111156121f6576121f6613d4a565b036122205761221b73ffffffffffffffffffffffffffffffffffffffff881687612bd6565b61232a565b600181600381111561223457612234613d4a565b0361225a5761221b73ffffffffffffffffffffffffffffffffffffffff89168888612c91565b600281600381111561226e5761226e613d4a565b036122c057838681146122ad576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122ba89308a8989612981565b5061232a565b60038160038111156122d4576122d4613d4a565b03610f0d576122e38383612a5c565b861461231b576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61221b88308988888888612a9d565b8773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f0c3f6188054cfad2267b81cfd4ec43dcf3245a8b92e59cc44d6b4e85a5867264888888888860405161238f959493929190613e7c565b60405180910390a3506123a26001600255565b50505050505050565b60006123b681612652565b6123be61268c565b6123c6611bac565b50816123d1816127c3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604081208054859290612406908490613d79565b90915550506040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526000917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d9091169063f2e2e2aa906024016040805180830381865afa15801561249b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bf9190613f4d565b50905060008160038111156124d6576124d6613d4a565b036124ea576124e58433611ef2565b612524565b60018160038111156124fe576124fe613d4a565b03610f0d576124e573ffffffffffffffffffffffffffffffffffffffff86163386612c91565b8473ffffffffffffffffffffffffffffffffffffffff167f2bde45b775c7b186ca5991ba05250885d44cad19752d5e84f715be315dc60ad08560405161256c91815260200190565b60405180910390a25050610a9c6001600255565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061081e575061081e82612cd9565b6000806125e38484612d2f565b90508015611b8b5760008481526001602052604090206126039084612e2b565b509392505050565b8051600003612646576040517fd07b00d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056118278282613fef565b61265c8133612e4d565b50565b60008061266c8484612ed3565b90508015611b8b5760008481526001602052604090206126039084612f8e565b60028054036126c7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028055565b6040517ff2e2e2aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015260009182917f000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d169063f2e2e2aa906024016040805180830381865afa15801561275d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127819190613f4d565b9092509050806127bd576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b8060000361265c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128056132ed565b600080806128138587613bf3565b9050600081612823886064614108565b61282d919061411f565b90506040518060600160405280612710848b6000015161284d9190614108565b612857919061411f565b8152602001612710848b6040015161286f9190614108565b612879919061411f565b8152602001612710848b602001516128919190614108565b61289b919061411f565b90526040810151602082015182519297506000926128b99086613d79565b6128c39190613d79565b6128cd9190613d79565b905060646128db8383614108565b6128e5919061411f565b94506128f18582613d79565b935050505093509350939050565b6129076132ed565b60808201516040805160608101909152835181906127109061292a908590614108565b612934919061411f565b815260200161271083866040015161294c9190614108565b612956919061411f565b815260200161271083866020015161296e9190614108565b612978919061411f565b90529392505050565b60005b818110156114f3578573ffffffffffffffffffffffffffffffffffffffff166342842e0e86868686868181106129bc576129bc613c97565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b158015612a3857600080fd5b505af1158015612a4c573d6000803e3d6000fd5b5050600190920191506129849050565b6000805b82811015612a9657838382818110612a7a57612a7a613c97565b9050602002013582612a8c9190613bf3565b9150600101612a60565b5092915050565b6040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881690632eb2c2d690612af99089908990899089908990899060040161415a565b600060405180830381600087803b158015612b1357600080fd5b505af1158015612b27573d6000803e3d6000fd5b5050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610a3d9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612fb0565b6000611b8b8383613054565b60606000611b8b8361307e565b80471015612c1e576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018290526044015b60405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114612c79576040519150601f19603f3d011682016040523d82523d6000602084013e612c7e565b606091505b509150915081610a3d57610a3d816130da565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610a9c91859182169063a9059cbb90606401612b76565b600061081e825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061081e575061081e8261311c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612dc13390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161081e565b50600061081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131b3565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16611827576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401612c15565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615612e235760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161081e565b6000611b8b8373ffffffffffffffffffffffffffffffffffffffff84166131fa565b600080602060008451602086016000885af180612fd3576040513d6000823e3d81fd5b50506000513d91508115612feb578060011415613005565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610a3d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401612c15565b600082600001828154811061306b5761306b613c97565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ce57602002820191906000526020600020905b8154815260200190600101908083116130ba575b50505050509050919050565b8051156130ea5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061081e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081e565b6000818152600183016020526040812054612e235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561081e565b600081815260018301602052604081205480156132e357600061321e600183613d79565b855490915060009061323290600190613d79565b905080821461329757600086600001828154811061325257613252613c97565b906000526020600020015490508087600001848154811061327557613275613c97565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806132a8576132a86141d8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061081e565b600091505061081e565b60405180606001604052806003906020820280368337509192915050565b60006020828403121561331d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611b8b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461265c57600080fd5b60008083601f84011261338157600080fd5b50813567ffffffffffffffff81111561339957600080fd5b6020830191508360208285010111156133b157600080fd5b9250929050565b6000806000806000608086880312156133d057600080fd5b85356133db8161334d565b945060208601356133eb8161334d565b9350604086013567ffffffffffffffff81111561340757600080fd5b6134138882890161336f565b90945092505060608601356134278161334d565b809150509295509295909350565b6000806020838503121561344857600080fd5b823567ffffffffffffffff81111561345f57600080fd5b61346b8582860161336f565b90969095509350505050565b60006020828403121561348957600080fd5b8135611b8b8161334d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156134e6576134e6613494565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561353357613533613494565b604052919050565b600082601f83011261354c57600080fd5b813567ffffffffffffffff81111561356657613566613494565b61359760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016134ec565b8181528460208386010111156135ac57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156135df57600080fd5b84356135ea8161334d565b935060208501356135fa8161334d565b925060408501359150606085013567ffffffffffffffff81111561361d57600080fd5b6136298782880161353b565b91505092959194509250565b60006020828403121561364757600080fd5b5035919050565b6000806040838503121561366157600080fd5b8235915060208301356136738161334d565b809150509250929050565b60008060006040848603121561369357600080fd5b833567ffffffffffffffff8111156136aa57600080fd5b8401601f810186136136bb57600080fd5b803567ffffffffffffffff8111156136d257600080fd5b86602060e0830284010111156136e757600080fd5b6020918201945092508401356136fc8161334d565b809150509250925092565b60008083601f84011261371957600080fd5b50813567ffffffffffffffff81111561373157600080fd5b6020830191508360208260051b85010111156133b157600080fd5b60008060008060006060868803121561376457600080fd5b853561376f8161334d565b9450602086013567ffffffffffffffff81111561378b57600080fd5b61379788828901613707565b909550935050604086013567ffffffffffffffff8111156137b757600080fd5b6137c388828901613707565b969995985093965092949392505050565b600080604083850312156137e757600080fd5b82356137f28161334d565b946020939093013593505050565b602081526000825180602084015260005b8181101561382e5760208186018101516040868401015201613811565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6000806040838503121561387f57600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156138dc57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016138a8565b509095945050505050565b600082601f8301126138f857600080fd5b813567ffffffffffffffff81111561391257613912613494565b8060051b613922602082016134ec565b9182526020818501810192908101908684111561393e57600080fd5b6020860192505b83831015613960578235825260209283019290910190613945565b9695505050505050565b600080600080600060a0868803121561398257600080fd5b853561398d8161334d565b9450602086013561399d8161334d565b9350604086013567ffffffffffffffff8111156139b957600080fd5b6139c5888289016138e7565b935050606086013567ffffffffffffffff8111156139e257600080fd5b6139ee888289016138e7565b925050608086013567ffffffffffffffff811115613a0b57600080fd5b613a178882890161353b565b9150509295509295909350565b60008060408385031215613a3757600080fd5b8235613a428161334d565b915060208301356136738161334d565b600080600080600080600060a0888a031215613a6d57600080fd5b8735613a788161334d565b96506020880135613a888161334d565b955060408801359450606088013567ffffffffffffffff811115613aab57600080fd5b613ab78a828b01613707565b909550935050608088013567ffffffffffffffff811115613ad757600080fd5b613ae38a828b01613707565b989b979a50959850939692959293505050565b600080600080600060a08688031215613b0e57600080fd5b8535613b198161334d565b94506020860135613b298161334d565b93506040860135925060608601359150608086013567ffffffffffffffff811115613a0b57600080fd5b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b60008060408385031215613bb357600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561081e5761081e613bc4565b600060c0828403128015613c1957600080fd5b5060405160009060c0810167ffffffffffffffff81118282101715613c4057613c40613494565b6040908152845182526020808601519083015284810151908201526060840151613c698161334d565b60608201526080848101519082015260a08401519150613c888261334d565b60a08101919091529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060e0828403128015613cd957600080fd5b506000613ce46134c3565b8335613cef8161334d565b81526020840135613cff8161334d565b60208201526040840135613d128161334d565b6040820152606084810135908201526080808501359082015260a0808501359082015260c09384013593810193909352509092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8181038181111561081e5761081e613bc4565b8481526101808101602082018560005b6005811015613dd157815173ffffffffffffffffffffffffffffffffffffffff16835260209283019290910190600101613d9c565b50505060c082018460005b6005811015613dfb578151835260209283019290910190600101613ddc565b5050508261016083015295945050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613e4057600080fd5b8260051b80836020870137939093016020019392505050565b838152604060208201526000613e73604083018486613e0e565b95945050505050565b858152606060208201526000613e96606083018688613e0e565b8281036040840152613ea9818587613e0e565b98975050505050505050565b600060208284031215613ec757600080fd5b8151611b8b8161334d565b600060208284031215613ee457600080fd5b5051919050565b600181811c90821680613eff57607f821691505b6020821081036127bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80518015158114613f4857600080fd5b919050565b60008060408385031215613f6057600080fd5b825160048110613f6f57600080fd5b9150613f7d60208401613f38565b90509250929050565b600060208284031215613f9857600080fd5b611b8b82613f38565b601f821115610a9c57806000526020600020601f840160051c81016020851015613fc85750805b601f840160051c820191505b81811015613fe85760008155600101613fd4565b5050505050565b815167ffffffffffffffff81111561400957614009613494565b61401d816140178454613eeb565b84613fa1565b6020601f82116001811461406f57600083156140395750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613fe8565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156140bd578785015182556020948501946001909201910161409d565b50848210156140f957868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b808202811582820484141761081e5761081e613bc4565b600082614155577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015260a0604082015260006141a660a083018688613e0e565b82810360608401526141b9818587613e0e565b8381036080909401939093525050600081526020019695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122045750a4f7b76b5361e7efd76223fd062b4f34721c207ae16a4ae5410c876dd0e64736f6c634300081e0033","gas_used":3417458,"gas_limit":5115189,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b506004361061025c5760003560e01c806391d1485411610145578063b20feaaf116100bd578063cfca31471161008c578063ec87621c11610071578063ec87621c146105a5578063f2e2e2aa146105cc578063f88139101461060657600080fd5b8063cfca31471461057f578063d547741f1461059257600080fd5b8063b20feaaf146104d0578063c36a470814610550578063c4c0453414610559578063ca15c8731461056c57600080fd5b8063a3246ad311610114578063aa405af9116100f9578063aa405af91461049e578063b013ab38146104a7578063b0e21e8a146104c757600080fd5b8063a3246ad314610475578063a5fd8edc1461049557600080fd5b806391d148541461040d57806399f8cbaf14610451578063a217fddf14610464578063a221c64a1461046c57600080fd5b806336568abe116101d857806366fbf11b116101a757806380cc90ed1161018c57806380cc90ed146103a2578063850a1501146103b55780639010d07c146103fa57600080fd5b806366fbf11b1461037c578063787dce3d1461038f57600080fd5b806336568abe1461033a57806339591b001461034d5780635026c826146103565780635e73fd761461036957600080fd5b80631c91ecb61161022f5780632a53ff5f116102145780632a53ff5f146102f95780632f2ff15d146103145780632f7d5c661461032757600080fd5b80631c91ecb6146102c4578063248a9ca3146102d657600080fd5b806301ffc9a714610261578063059129471461028957806306bdd7d51461029e5780631776a827146102b1575b600080fd5b61027461026f3660046118f2565b610619565b60405190151581526020015b60405180910390f35b61029c610297366004611934565b610675565b005b61029c6102ac366004611934565b6106f8565b61029c6102bf366004611976565b61077d565b6002545b604051908152602001610280565b6102c86102e4366004611934565b60009081526020819052604090206001015490565b600954600a5460408051928352602083019190915201610280565b61029c610322366004611991565b610850565b61029c610335366004611934565b61087b565b61029c610348366004611991565b6108f6565b6102c8600a5481565b610274610364366004611976565b610954565b61029c6103773660046119bd565b6109da565b61029c61038a366004611976565b610bb2565b61029c61039d366004611934565b610ca0565b61029c6103b0366004611934565b610d1b565b6003546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b6103d5610408366004611a64565b610da4565b61027461041b366004611991565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61045f366004611934565b610dc3565b6102c8600081565b6102c860075481565b610488610483366004611934565b610e3e565b6040516102809190611a86565b6102c860085481565b6102c860095481565b6004546103d59073ffffffffffffffffffffffffffffffffffffffff1681565b6102c860065481565b6104d8610e58565b6040516102809190600060c08201905082518252602083015160208301526040830151604083015273ffffffffffffffffffffffffffffffffffffffff60608401511660608301526080830151608083015273ffffffffffffffffffffffffffffffffffffffff60a08401511660a083015292915050565b6102c860055481565b6104d8610567366004611976565b610f13565b6102c861057a366004611934565b610f8a565b61029c61058d366004611976565b610fa1565b61029c6105a0366004611991565b611071565b6102c87f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b6105f86105da366004611976565b600b6020526000908152604090205460ff8082169161010090041682565b604051610280929190611b49565b61029c610614366004611b66565b611096565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061066f575061066f82611110565b92915050565b6000610680816111a7565b60055482036106bb576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f7a25f4d39c7ef2d9ff33e6304584e4c9fb1532bc39972e2cd34b074c1e40e02b906020015b60405180910390a15050565b6000610703816111a7565b600954821480610711575081155b15610748576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098290556040518281527f87948cba23b87f534057161b507f18cd7f69576b88a81a74c55d8f29dfb06452906020016106ec565b6000610788816111a7565b60045473ffffffffffffffffffffffffffffffffffffffff908116908316036107dd576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f372b5e772b71a68b761c4ac03b59a6a2322bd34ac161ba7029a6a418fe890051906020016106ec565b60008281526020819052604090206001015461086b816111a7565b61087583836111b4565b50505050565b6000610886816111a7565b60085482036108c1576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088290556040518281527f3a1dedaf5733100a92da764c2066bdc86b970e224ee473d515375645ce99a9d2906020016106ec565b73ffffffffffffffffffffffffffffffffffffffff81163314610945576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f82826111e9565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527fe84508f2c7fa9c351146748b3025cb78b45df37d868e48c6a75102fecdeee645602052604081205460ff166109d2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001919050565b73ffffffffffffffffffffffffffffffffffffffff85161580610a11575073ffffffffffffffffffffffffffffffffffffffff8416155b80610a30575073ffffffffffffffffffffffffffffffffffffffff8116155b15610a67576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a927f000000000000000000000000f0d7de80a1c242fa3c738b083c422d65c6c7abf1611216565b6040517f09c26fb100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906309c26fb190610aef9089908990899089908990600401611bea565b600060405180830381600087803b158015610b0957600080fd5b505af1158015610b1d573d6000803e3d6000fd5b505060028054925090506000610b3283611c8d565b91905055508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f68828e0b01cfe3740f67270e157a30f161e6531d36cd5db5797ec0e32d1f6911610b8f60025490565b878787604051610ba29493929190611cc5565b60405180910390a3505050505050565b6000610bbd816111a7565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090208054610100900460ff16610c22576040517f3aca788a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff8116825560405173ffffffffffffffffffffffffffffffffffffffff8516917f523fff9d18fef7247d13e67b28b58c6173cc8868a73b220fcebfd5887c1135b291610c939160ff1690611d06565b60405180910390a2505050565b6000610cab816111a7565b6006548203610ce6576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068290556040518281527fd10d75876659a287a59a6ccfa2e3fff42f84d94b542837acd30bc184d562de40906020016106ec565b6000610d26816111a7565b600a54821480610d3857506206978082105b15610d6f576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a8290556040518281527f2c941b29cbb54e4feeb31a83ebf90b2ffdd425f3970b341bf588a6ca88a8b56b906020016106ec565b6000828152600160205260408120610dbc9083611223565b9392505050565b6000610dce816111a7565b6007548203610e09576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078290556040518281527f6d3d82f4a368310fc477262ac1c98c96cf147c62b219e94a4acf691400922905906020016106ec565b600081815260016020526040902060609061066f9061122f565b610ebd6040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b506040805160c081018252600654815260085460208201526007549181019190915260035473ffffffffffffffffffffffffffffffffffffffff908116606083015260055460808301526004541660a082015290565b610f786040518060c00160405280600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b610f8182610954565b5061066f610e58565b600081815260016020526040812061066f9061123c565b6000610fac816111a7565b60035473ffffffffffffffffffffffffffffffffffffffff90811690831603611001576040517fa9cb9e0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f33837f672315b6cffcf11894714abfdec631a913c18d7738fcaf40c444376fb690600090a25050565b60008281526020819052604090206001015461108c816111a7565b61087583836111e9565b60006110a1816111a7565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b6020526040902054610100900460ff1615611106576040517f56b89dcc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61094f8383611246565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061066f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461066f565b6111b181336113d3565b50565b6000806111c18484611462565b90508015610dbc5760008481526001602052604090206111e1908461155e565b509392505050565b6000806111f68484611580565b90508015610dbc5760008481526001602052604090206111e1908461163b565b600061066f82600061165d565b6000610dbc8383611732565b60606000610dbc8361175c565b600061066f825490565b73ffffffffffffffffffffffffffffffffffffffff82161580159061127c5750600081600381111561127a5761127a611adf565b145b156112b3576040517fa1e9dd9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052808260038111156112d0576112d0611adf565b81526001602091820181905273ffffffffffffffffffffffffffffffffffffffff85166000908152600b9092526040909120825181549192909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169083600381111561134357611343611adf565b0217905550602091909101518154901515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911617905560405173ffffffffffffffffffffffffffffffffffffffff8316907fbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8906113c7908490611d06565b60405180910390a25050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661145e576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114f43390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161066f565b50600061066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117b8565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156115565760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161066f565b6000610dbc8373ffffffffffffffffffffffffffffffffffffffff84166117ff565b6000814710156116a2576040517fcf47918100000000000000000000000000000000000000000000000000000000815247600482015260248101839052604401611455565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff811661066f576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061174957611749611d14565b9060005260206000200154905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156117ac57602002820191906000526020600020905b815481526020019060010190808311611798575b50505050509050919050565b60008181526001830160205260408120546115565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561066f565b600081815260018301602052604081205480156118e8576000611823600183611d43565b855490915060009061183790600190611d43565b905080821461189c57600086600001828154811061185757611857611d14565b906000526020600020015490508087600001848154811061187a5761187a611d14565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806118ad576118ad611d56565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061066f565b600091505061066f565b60006020828403121561190457600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dbc57600080fd5b60006020828403121561194657600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461197157600080fd5b919050565b60006020828403121561198857600080fd5b610dbc8261194d565b600080604083850312156119a457600080fd5b823591506119b46020840161194d565b90509250929050565b6000806000806000608086880312156119d557600080fd5b6119de8661194d565b94506119ec6020870161194d565b9350604086013567ffffffffffffffff811115611a0857600080fd5b8601601f81018813611a1957600080fd5b803567ffffffffffffffff811115611a3057600080fd5b886020828401011115611a4257600080fd5b60209190910193509150611a586060870161194d565b90509295509295909350565b60008060408385031215611a7757600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015611ad457835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101611aa0565b509095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110611b45577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60408101611b578285611b0e565b82151560208301529392505050565b60008060408385031215611b7957600080fd5b611b828361194d565b9150602083013560048110611b9657600080fd5b809150509250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152608060408201526000611c36608083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611cbe57611cbe611c5e565b5060010190565b848152606060208201526000611cdf606083018587611ba1565b905073ffffffffffffffffffffffffffffffffffffffff8316604083015295945050505050565b6020810161066f8284611b0e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561066f5761066f611c5e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122004cc3d27435f63a9b2d95a3a11885d96b818e3a86df73530c60f192f0002bb3664736f6c634300081e0033","nonce":28,"gas_used":5776207},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x58234f","logs":[{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08","0x00000000000000000000000009635f643e140090a9a8dcd712ed6285858cebef","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000"},{"address":"0xc5a5c42992decbae36851359345fe25997f5c42d","topics":["0xbe433982945125798dc0fb45d2aedb711f3461ff28984baab1334b3bce20d5e8","0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x00000004000000000000000000000000000004020000000000000000000000000000000000000000100000000000000000000000008000000004000000000000000000000020000000000000000000000000000000000000000000000000000000000000020000000004000100800800000004000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000080000200000020000000000000000002008000100000000000020000000000000000008000000000000000000000000000000008000000000000000"},"block_hash":"0x13be44d972b81f17ca9aa340c5f962de8145ee1d3468acad4fb33b2aa7699d4f","block_number":29},{"info":{"transaction_hash":"0xa95670b27059c4c787bf417afde68549c3eb289dc06dbb2894418d929bf06dd1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15d427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":34347,"gas_limit":34776,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9a676e781a523b5d0c0e43731313a708cb607508","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15d427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":29423,"gas_limit":29423,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":22,"gas_used":56291},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xdbe3","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000800000000000000000000000001000000000000000000000000000200000000000000020000000002000000100000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2e6950a127790f4401f4fca2ddf1502f2e662bf16c5999c886c54ebf3257e72b","block_number":23},{"info":{"transaction_hash":"0x10b989b730f059bb23b8308dbb28b4d715309317c4fb3a50fc95cbcab0eeacb1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f1900000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c800000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":2,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000840020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000001000000000000000000000000000000"},"block_hash":"0x88079c1682bfe153b5b239dcced9f6efbf5a04601715021d1fc91fe92edc7746","block_number":3},{"info":{"transaction_hash":"0x4721f38322cfc7c2765e39da0cfff9b7b1cf4b870446cf6f6b47c407c63d1832","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x09635f643e140090a9a8dcd712ed6285858cebef","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x09635f643e140090a9a8dcd712ed6285858cebef","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x5bb47808000000000000000000000000c5a5c42992decbae36851359345fe25997f5c42d","output":"0x","gas_used":25002,"gas_limit":25002,"status":"Stop","steps":[],"decoded":null},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":29,"gas_used":46434},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xb562","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xeb84d27c3fe0d0bd5aa94f512291513cd48744ed4c4f993f3b15ce523be5bd6a","block_number":30},{"info":{"transaction_hash":"0xc8e025e303f1d56b5862f79a3abc2043b860c8de2f246a1bb7208e66b8f7c150","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561001057600080fd5b5060405161001d90610190565b604051809103906000f080158015610039573d6000803e3d6000fd5b506001600160a01b0316608052610051600033610057565b5061019d565b600080610064848461008f565b905080156100865760008481526001602052604090206100849084610139565b505b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16610131576000838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556100e93390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610089565b506000610089565b6000610086836001600160a01b038416600081815260018301602052604081205461013157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610089565b612b55806112c883390190565b6080516111096101bf600039600081816102ab015261041d01526111096000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80639010d07c11610097578063a3246ad311610066578063a3246ad314610286578063b09e1b1f146102a6578063ca15c873146102cd578063d547741f146102e057600080fd5b80639010d07c1461021f57806391d1485414610232578063946ccd5f14610276578063a217fddf1461027e57600080fd5b80632f2ff15d116100d35780632f2ff15d1461018b57806336568abe146101a057806350b492ba146101b357806360166fe3146101e957600080fd5b806301ffc9a7146100fa57806315fb764014610122578063248a9ca31461015a575b600080fd5b61010d610108366004610d71565b6102f3565b60405190151581526020015b60405180910390f35b610135610130366004610db3565b61034f565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61017d610168366004610def565b60009081526020819052604090206001015490565b604051908152602001610119565b61019e610199366004610e31565b61061e565b005b61019e6101ae366004610e31565b610649565b6101356101c1366004610def565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101356101f7366004610def565b60009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61013561022d366004610e5d565b6106a7565b61010d610240366004610e31565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b60025461017d565b61017d600081565b610299610294366004610def565b6106c6565b6040516101199190610e7f565b6101357f000000000000000000000000000000000000000000000000000000000000000081565b61017d6102db366004610def565b6106e0565b61019e6102ee366004610e31565b6106f7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061034957506103498261071c565b92915050565b60008061035f6020840184610ed8565b73ffffffffffffffffffffffffffffffffffffffff1614806103a65750600061038e60c0840160a08501610ed8565b73ffffffffffffffffffffffffffffffffffffffff16145b156103dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820135610418576040517f9dd854d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104417f00000000000000000000000000000000000000000000000000000000000000006107b3565b905073ffffffffffffffffffffffffffffffffffffffff81166389fcf3bd61046c6020850185610ed8565b61047c6040860160208701610ed8565b61048c6060870160408801610ed8565b606087013560808801356104a660c08a0160a08b01610ed8565b6104b660e08b0160c08c01610ed8565b6104c360e08c018c610ef3565b6040518a63ffffffff1660e01b81526004016104e799989796959493929190610f62565b600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b50506002805492509050600061052a8361102a565b9091555050600254600090815260036020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905561058d90830183610ed8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166002547fe2af5a9302169fb2b16d64ea3273f80104a5a67c94475b4c699ec467d9d2ec6f8560a00160208101906105f19190610ed8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a4919050565b600082815260208190526040902060010154610639816107c0565b61064383836107cd565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610698576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106a28282610802565b505050565b60008281526001602052604081206106bf908361082f565b9392505050565b60008181526001602052604090206060906103499061083b565b600081815260016020526040812061034990610848565b600082815260208190526040902060010154610712816107c0565b6106438383610802565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061034957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610349565b6000610349826000610852565b6107ca813361092c565b50565b6000806107da84846109b6565b905080156106bf5760008481526001602052604090206107fa9084610ab2565b509392505050565b60008061080f8484610ad4565b905080156106bf5760008481526001602052604090206107fa9084610b8f565b60006106bf8383610bb1565b606060006106bf83610bdb565b6000610349825490565b60008147101561089c576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018390526044015b60405180910390fd5b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff8116610349576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109b2576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610893565b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610a483390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610349565b506000610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c37565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c7e565b6000826000018281548110610bc857610bc8611062565b9060005260206000200154905092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015610c2b57602002820191906000526020600020905b815481526020019060010190808311610c17575b50505050509050919050565b6000818152600183016020526040812054610aaa57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610349565b60008181526001830160205260408120548015610d67576000610ca2600183611091565b8554909150600090610cb690600190611091565b9050808214610d1b576000866000018281548110610cd657610cd6611062565b9060005260206000200154905080876000018481548110610cf957610cf9611062565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610d2c57610d2c6110a4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610349565b6000915050610349565b600060208284031215610d8357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bf57600080fd5b600060208284031215610dc557600080fd5b813567ffffffffffffffff811115610ddc57600080fd5b820161010081850312156106bf57600080fd5b600060208284031215610e0157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2c57600080fd5b919050565b60008060408385031215610e4457600080fd5b82359150610e5460208401610e08565b90509250929050565b60008060408385031215610e7057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015610ecd57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e99565b509095945050505050565b600060208284031215610eea57600080fd5b6106bf82610e08565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610f2857600080fd5b83018035915067ffffffffffffffff821115610f4357600080fd5b6020019150600681901b3603821315610f5b57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8a8116825289811660208301528881166040830152606082018890526080820187905285811660a0830152841660c082015261010060e0820181905281018290526000836101208301825b85811015610fea57823582526020808401359083015260409283019290910190600101610fc2565b509c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361105b5761105b610ffb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561034957610349610ffb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220499971a6beedabcbe4a23ff1222fc9b85ea4ab7b4a69cdf2ceb7ce64ca8e131064736f6c634300081e00336080604052348015600f57600080fd5b506001600355612b31806100246000396000f3fe6080604052600436106102535760003560e01c80639dd373b911610138578063cbeb88f6116100b0578063e63ab1e91161007f578063ee99205c11610064578063ee99205c14610722578063f58280d21461074f578063fb1bb9de1461076f57600080fd5b8063e63ab1e9146106ba578063e7705db6146106ee57600080fd5b8063cbeb88f614610627578063d32780d814610657578063d547741f1461066d578063e5a6b10f1461068d57600080fd5b8063a39f3f9d11610107578063b3cd4254116100ec578063b3cd4254146105d1578063c40ab4e1146105e7578063ca15c8731461060757600080fd5b8063a39f3f9d1461059b578063b391c738146105b157600080fd5b80639dd373b9146105195780639f862c5d14610539578063a217fddf14610559578063a3246ad31461056e57600080fd5b80633f4ba83a116101cb5780636b3b1c0f1161019a57806389fcf3bd1161017f57806389fcf3bd146104635780639010d07c1461048357806391d14854146104c857600080fd5b80636b3b1c0f146104215780638456cb591461044e57600080fd5b80633f4ba83a146103ba578063479ae9e3146103cf5780635c975abb146103e95780635e8822fa1461040157600080fd5b80632ac96e2a116102225780633150992e116102075780633150992e146103545780633248d3c91461036a57806336568abe1461039a57600080fd5b80632ac96e2a146103215780632f2ff15d1461033457600080fd5b806301ffc9a71461025f57806305e75bcb146102945780631eb01a70146102b6578063248a9ca3146102f157600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027f61027a366004612596565b6107a3565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102b46102af3660046125d8565b6107ff565b005b3480156102c257600080fd5b506102e36102d136600461261a565b600e6020526000908152604090205481565b60405190815260200161028b565b3480156102fd57600080fd5b506102e361030c3660046125d8565b60009081526020819052604090206001015490565b6102b461032f36600461268f565b610847565b34801561034057600080fd5b506102b461034f36600461276b565b610f60565b34801561036057600080fd5b506102e360055481565b34801561037657600080fd5b5061027f6103853660046125d8565b600c6020526000908152604090205460ff1681565b3480156103a657600080fd5b506102b46103b536600461276b565b610f8b565b3480156103c657600080fd5b506102b4610fe9565b3480156103db57600080fd5b50600a5461027f9060ff1681565b3480156103f557600080fd5b5060025460ff1661027f565b34801561040d57600080fd5b506102b461041c3660046127a5565b61101e565b34801561042d57600080fd5b506102e361043c3660046125d8565b600b6020526000908152604090205481565b34801561045a57600080fd5b506102b46110b4565b34801561046f57600080fd5b506102b461047e3660046127de565b6110e6565b34801561048f57600080fd5b506104a361049e3660046128bd565b61147d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028b565b3480156104d457600080fd5b5061027f6104e336600461276b565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561052557600080fd5b506102b461053436600461261a565b61149c565b34801561054557600080fd5b506102b46105543660046125d8565b61151a565b34801561056557600080fd5b506102e3600081565b34801561057a57600080fd5b5061058e6105893660046125d8565b61155a565b60405161028b91906128df565b3480156105a757600080fd5b506102e360085481565b3480156105bd57600080fd5b506102b46105cc3660046125d8565b611574565b3480156105dd57600080fd5b506102e361271081565b3480156105f357600080fd5b506102b4610602366004612938565b6115b4565b34801561061357600080fd5b506102e36106223660046125d8565b611708565b34801561063357600080fd5b5061027f6106423660046125d8565b600d6020526000908152604090205460ff1681565b34801561066357600080fd5b506102e360095481565b34801561067957600080fd5b506102b461068836600461276b565b61171f565b34801561069957600080fd5b506006546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c657600080fd5b506102e37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156106fa57600080fd5b506102e37f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0981565b34801561072e57600080fd5b506007546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075b57600080fd5b506102b461076a366004612974565b611744565b34801561077b57600080fd5b506102e37f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107f957506107f9826117df565b92915050565b600061080a81611876565b60088290556040518281527f0b2358c6423981418f7b3a3dcc05bed6b15708c9ec309197a63de3722ca75198906020015b60405180910390a15050565b61084f611880565b6108576118c3565b73ffffffffffffffffffffffffffffffffffffffff86166108a4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036108de576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015906108fc57506000838152600c602052604090205460ff16155b15610933576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8215801590610958575060075473ffffffffffffffffffffffffffffffffffffffff16155b1561098f576040517f970b74e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460ff16156109e35760008190036109d5576040517f229bfb1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109e3868686868686611902565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b166020820152603481018690527fff0000000000000000000000000000000000000000000000000000000000000060f886901b166054820152600090605501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600d90935291205490915060ff1615610acb576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8916602082015290810187905260ff86166060820152600090608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610b948a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506005549150849050611a9e565b610bca576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009548710158015610bde57506000600854115b15610c1e576008543414610c1e576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055868515610c98576000868152600b602052604081205490612710610c79838c6129c0565b610c8391906129d7565b9050610c8f818b612a12565b92505050610cf4565b60008052600b6020527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76548015610cf2576000612710610cd8838c6129c0565b610ce291906129d7565b9050610cee818b612a12565b9250505b505b73ffffffffffffffffffffffffffffffffffffffff89166000908152600e602052604081208054839290610d29908490612a25565b90915550508515610eca576006546007546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190612a38565b506007546040517f0c51b88f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018490526044820189905290911690630c51b88f906064016020604051808303816000875af1925050508015610e8e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e8b91810190612a55565b60015b610ec4576040517fa437293700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610eee565b600654610eee9073ffffffffffffffffffffffffffffffffffffffff168a83611ab4565b604080518981526020810183905260ff891681830152905173ffffffffffffffffffffffffffffffffffffffff8b16917ffba955b7124801955d5218289768d39688a6c2af7c54181f5bf3b0b0e7a4aa89919081900360600190a2505050610f566001600355565b5050505050505050565b600082815260208190526040902060010154610f7b81611876565b610f858383611b41565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610fda576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fe48282611b76565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61101381611876565b61101b611ba3565b50565b600061102981611876565b6000848152600b60209081526040808320869055600c82529182902080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915582518781529182018690528183015290517fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca79181900360600190a150505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110de81611876565b61101b611c20565b60045460ff1615611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff891615806111ba575073ffffffffffffffffffffffffffffffffffffffff8416155b156111f1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc60008a611b41565b5073ffffffffffffffffffffffffffffffffffffffff881615611270576112437f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b41565b5061126e7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a89611b41565b505b73ffffffffffffffffffffffffffffffffffffffff8716156112e3576112b67f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0988611b41565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600886905560058590556006805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600780549286169290911691909117905560005b8181101561141e57600083838381811061136157611361612a6e565b905060400201600001359050600084848481811061138157611381612a6e565b6000858152600b602090815260408083209381029590950181013592839055600c815290849020805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915584518781529182018390528185015292519093507fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7928190036060019150a15050600101611345565b5050600080525050600c60205250507f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050565b60008281526001602052604081206114959083611c7b565b9392505050565b60006114a781611876565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f6397f5b135542bb3f477cb346cfab5abdec1251d08dc8f8d4efb4ffe122ea0bf9060200161083b565b600061152581611876565b60098290556040518281527f0bdc5b50951daf28f83d3ccb05f68a48458a346738f725758d690acb72e5eba19060200161083b565b60008181526001602052604090206060906107f990611c87565b600061157f81611876565b60058290556040518281527f90004c04698bc3322499a575ed3752dd4abf33e0a7294c06a787a0fe01bea9419060200161083b565b60006115bf81611876565b73ffffffffffffffffffffffffffffffffffffffff841661160c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611646576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116865761168173ffffffffffffffffffffffffffffffffffffffff851684611c94565b6116a7565b6116a773ffffffffffffffffffffffffffffffffffffffff83168585611ab4565b8173ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff167f3c29f706dd8ad89f52baa05197bc9e1ab54a532923f8890b4c610641423f186060405160405180910390a450505050565b60008181526001602052604081206107f990611d4a565b60008281526020819052604090206001015461173a81611876565b610f858383611b76565b600061174f81611876565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683158015919091179091556117b1576040517f927afc1823834346e83b933a68384b62ba45245d11961d6c8b76a3553a93482490600090a15050565b6040517f7a3b4c944febd2c899d89daed15db8d2e0903a535f27b1c5f0ea8f3fd3e137da90600090a15b5050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107f9565b61101b8133611d54565b6002600354036118bc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615611900576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088811b82166020840152603483018890527fff0000000000000000000000000000000000000000000000000000000000000060f888901b1660548401526055830186905230901b16607582015260009060890160405160208183030381529060405280519060200120905060006119cc827f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b90506000611a1285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611dda9050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef81602052604090205490915060ff16611a93576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050565b600082611aab8584611e04565b14949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610fe4908490611e3f565b600080611b4e8484611ee3565b90508015611495576000848152600160205260409020611b6e9084611fdf565b509392505050565b600080611b838484612001565b90508015611495576000848152600160205260409020611b6e90846120bc565b611bab6120de565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611c286118c3565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bf63390565b6000611495838361211a565b6060600061149583612144565b80471015611cd7576040517fcf4791810000000000000000000000000000000000000000000000000000000081524760048201526024810182905260440161114f565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d32576040519150601f19603f3d011682016040523d82523d6000602084013e611d37565b606091505b509150915081610f8557610f85816121a0565b60006107f9825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166117db576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161114f565b600080600080611dea86866121e2565b925092509250611dfa828261222f565b5090949350505050565b600081815b8451811015611b6e57611e3582868381518110611e2857611e28612a6e565b6020026020010151612333565b9150600101611e09565b600080602060008451602086016000885af180611e62576040513d6000823e3d81fd5b50506000513d91508115611e7a578060011415611e94565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610f85576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161114f565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f753390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016107f9565b5060006107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff8416612362565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff84166123a9565b60025460ff16611900576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061213157612131612a6e565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561219457602002820191906000526020600020905b815481526020019060010190808311612180575b50505050509050919050565b8051156121b05780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000835160410361221c5760208401516040850151606086015160001a61220e8882858561249c565b955095509550505050612228565b50508151600091506002905b9250925092565b600082600381111561224357612243612a9d565b0361224c575050565b600182600381111561226057612260612a9d565b03612297576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156122ab576122ab612a9d565b036122e5576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b60038260038111156122f9576122f9612a9d565b036117db576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b600081831061234f576000828152602084905260409020611495565b6000838152602083905260409020611495565b6000818152600183016020526040812054611fd7575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f9565b600081815260018301602052604081205480156124925760006123cd600183612a12565b85549091506000906123e190600190612a12565b905080821461244657600086600001828154811061240157612401612a6e565b906000526020600020015490508087600001848154811061242457612424612a6e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061245757612457612acc565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f9565b60009150506107f9565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156124d7575060009150600390508261258c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561252b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166125825750600092506001915082905061258c565b9250600091508190505b9450945094915050565b6000602082840312156125a857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461149557600080fd5b6000602082840312156125ea57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461261557600080fd5b919050565b60006020828403121561262c57600080fd5b611495826125f1565b803560ff8116811461261557600080fd5b60008083601f84011261265857600080fd5b50813567ffffffffffffffff81111561267057600080fd5b60208301915083602082850101111561268857600080fd5b9250929050565b60008060008060008060008060c0898b0312156126ab57600080fd5b883567ffffffffffffffff8111156126c257600080fd5b8901601f81018b136126d357600080fd5b803567ffffffffffffffff8111156126ea57600080fd5b8b60208260051b84010111156126ff57600080fd5b602091820199509750612713908a016125f1565b95506040890135945061272860608a01612635565b93506080890135925060a089013567ffffffffffffffff81111561274b57600080fd5b6127578b828c01612646565b999c989b5096995094979396929594505050565b6000806040838503121561277e57600080fd5b8235915061278e602084016125f1565b90509250929050565b801515811461101b57600080fd5b6000806000606084860312156127ba57600080fd5b833592506020840135915060408401356127d381612797565b809150509250925092565b60008060008060008060008060006101008a8c0312156127fd57600080fd5b6128068a6125f1565b985061281460208b016125f1565b975061282260408b016125f1565b965060608a0135955060808a0135945061283e60a08b016125f1565b935061284c60c08b016125f1565b925060e08a013567ffffffffffffffff81111561286857600080fd5b8a01601f81018c1361287957600080fd5b803567ffffffffffffffff81111561289057600080fd5b8c60208260061b84010111156128a557600080fd5b60208201935080925050509295985092959850929598565b600080604083850312156128d057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b8181101561292d57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016128f9565b509095945050505050565b60008060006060848603121561294d57600080fd5b612956846125f1565b92506020840135915061296b604085016125f1565b90509250925092565b60006020828403121561298657600080fd5b813561149581612797565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107f9576107f9612991565b600082612a0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107f9576107f9612991565b808201808211156107f9576107f9612991565b600060208284031215612a4a57600080fd5b815161149581612797565b600060208284031215612a6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ac1af95c8b44d1d43ee08d68e86100483a6d8c9f9055caabc136f543254701df64736f6c634300081e0033","output":"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80639010d07c11610097578063a3246ad311610066578063a3246ad314610286578063b09e1b1f146102a6578063ca15c873146102cd578063d547741f146102e057600080fd5b80639010d07c1461021f57806391d1485414610232578063946ccd5f14610276578063a217fddf1461027e57600080fd5b80632f2ff15d116100d35780632f2ff15d1461018b57806336568abe146101a057806350b492ba146101b357806360166fe3146101e957600080fd5b806301ffc9a7146100fa57806315fb764014610122578063248a9ca31461015a575b600080fd5b61010d610108366004610d71565b6102f3565b60405190151581526020015b60405180910390f35b610135610130366004610db3565b61034f565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61017d610168366004610def565b60009081526020819052604090206001015490565b604051908152602001610119565b61019e610199366004610e31565b61061e565b005b61019e6101ae366004610e31565b610649565b6101356101c1366004610def565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101356101f7366004610def565b60009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61013561022d366004610e5d565b6106a7565b61010d610240366004610e31565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b60025461017d565b61017d600081565b610299610294366004610def565b6106c6565b6040516101199190610e7f565b6101357f0000000000000000000000004f57f9239efcbf43e5920f579d03b3849c58839681565b61017d6102db366004610def565b6106e0565b61019e6102ee366004610e31565b6106f7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061034957506103498261071c565b92915050565b60008061035f6020840184610ed8565b73ffffffffffffffffffffffffffffffffffffffff1614806103a65750600061038e60c0840160a08501610ed8565b73ffffffffffffffffffffffffffffffffffffffff16145b156103dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820135610418576040517f9dd854d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104417f0000000000000000000000004f57f9239efcbf43e5920f579d03b3849c5883966107b3565b905073ffffffffffffffffffffffffffffffffffffffff81166389fcf3bd61046c6020850185610ed8565b61047c6040860160208701610ed8565b61048c6060870160408801610ed8565b606087013560808801356104a660c08a0160a08b01610ed8565b6104b660e08b0160c08c01610ed8565b6104c360e08c018c610ef3565b6040518a63ffffffff1660e01b81526004016104e799989796959493929190610f62565b600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b50506002805492509050600061052a8361102a565b9091555050600254600090815260036020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905561058d90830183610ed8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166002547fe2af5a9302169fb2b16d64ea3273f80104a5a67c94475b4c699ec467d9d2ec6f8560a00160208101906105f19190610ed8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a4919050565b600082815260208190526040902060010154610639816107c0565b61064383836107cd565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610698576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106a28282610802565b505050565b60008281526001602052604081206106bf908361082f565b9392505050565b60008181526001602052604090206060906103499061083b565b600081815260016020526040812061034990610848565b600082815260208190526040902060010154610712816107c0565b6106438383610802565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061034957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610349565b6000610349826000610852565b6107ca813361092c565b50565b6000806107da84846109b6565b905080156106bf5760008481526001602052604090206107fa9084610ab2565b509392505050565b60008061080f8484610ad4565b905080156106bf5760008481526001602052604090206107fa9084610b8f565b60006106bf8383610bb1565b606060006106bf83610bdb565b6000610349825490565b60008147101561089c576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018390526044015b60405180910390fd5b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff8116610349576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109b2576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610893565b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610a483390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610349565b506000610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c37565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c7e565b6000826000018281548110610bc857610bc8611062565b9060005260206000200154905092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015610c2b57602002820191906000526020600020905b815481526020019060010190808311610c17575b50505050509050919050565b6000818152600183016020526040812054610aaa57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610349565b60008181526001830160205260408120548015610d67576000610ca2600183611091565b8554909150600090610cb690600190611091565b9050808214610d1b576000866000018281548110610cd657610cd6611062565b9060005260206000200154905080876000018481548110610cf957610cf9611062565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610d2c57610d2c6110a4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610349565b6000915050610349565b600060208284031215610d8357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bf57600080fd5b600060208284031215610dc557600080fd5b813567ffffffffffffffff811115610ddc57600080fd5b820161010081850312156106bf57600080fd5b600060208284031215610e0157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2c57600080fd5b919050565b60008060408385031215610e4457600080fd5b82359150610e5460208401610e08565b90509250929050565b60008060408385031215610e7057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015610ecd57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e99565b509095945050505050565b600060208284031215610eea57600080fd5b6106bf82610e08565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610f2857600080fd5b83018035915067ffffffffffffffff821115610f4357600080fd5b6020019150600681901b3603821315610f5b57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8a8116825289811660208301528881166040830152606082018890526080820187905285811660a0830152841660c082015261010060e0820181905281018290526000836101208301825b85811015610fea57823582526020808401359083015260409283019290910190600101610fc2565b509c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361105b5761105b610ffb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561034957610349610ffb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220499971a6beedabcbe4a23ff1222fc9b85ea4ab7b4a69cdf2ceb7ce64ca8e131064736f6c634300081e0033","gas_used":3235226,"gas_limit":3235226,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":1,"index":0}],"ordering":[{"Call":0},{"Log":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","address":"0x4f57f9239efcbf43e5920f579d03b3849c588396","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b506001600355612b31806100246000396000f3fe6080604052600436106102535760003560e01c80639dd373b911610138578063cbeb88f6116100b0578063e63ab1e91161007f578063ee99205c11610064578063ee99205c14610722578063f58280d21461074f578063fb1bb9de1461076f57600080fd5b8063e63ab1e9146106ba578063e7705db6146106ee57600080fd5b8063cbeb88f614610627578063d32780d814610657578063d547741f1461066d578063e5a6b10f1461068d57600080fd5b8063a39f3f9d11610107578063b3cd4254116100ec578063b3cd4254146105d1578063c40ab4e1146105e7578063ca15c8731461060757600080fd5b8063a39f3f9d1461059b578063b391c738146105b157600080fd5b80639dd373b9146105195780639f862c5d14610539578063a217fddf14610559578063a3246ad31461056e57600080fd5b80633f4ba83a116101cb5780636b3b1c0f1161019a57806389fcf3bd1161017f57806389fcf3bd146104635780639010d07c1461048357806391d14854146104c857600080fd5b80636b3b1c0f146104215780638456cb591461044e57600080fd5b80633f4ba83a146103ba578063479ae9e3146103cf5780635c975abb146103e95780635e8822fa1461040157600080fd5b80632ac96e2a116102225780633150992e116102075780633150992e146103545780633248d3c91461036a57806336568abe1461039a57600080fd5b80632ac96e2a146103215780632f2ff15d1461033457600080fd5b806301ffc9a71461025f57806305e75bcb146102945780631eb01a70146102b6578063248a9ca3146102f157600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027f61027a366004612596565b6107a3565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102b46102af3660046125d8565b6107ff565b005b3480156102c257600080fd5b506102e36102d136600461261a565b600e6020526000908152604090205481565b60405190815260200161028b565b3480156102fd57600080fd5b506102e361030c3660046125d8565b60009081526020819052604090206001015490565b6102b461032f36600461268f565b610847565b34801561034057600080fd5b506102b461034f36600461276b565b610f60565b34801561036057600080fd5b506102e360055481565b34801561037657600080fd5b5061027f6103853660046125d8565b600c6020526000908152604090205460ff1681565b3480156103a657600080fd5b506102b46103b536600461276b565b610f8b565b3480156103c657600080fd5b506102b4610fe9565b3480156103db57600080fd5b50600a5461027f9060ff1681565b3480156103f557600080fd5b5060025460ff1661027f565b34801561040d57600080fd5b506102b461041c3660046127a5565b61101e565b34801561042d57600080fd5b506102e361043c3660046125d8565b600b6020526000908152604090205481565b34801561045a57600080fd5b506102b46110b4565b34801561046f57600080fd5b506102b461047e3660046127de565b6110e6565b34801561048f57600080fd5b506104a361049e3660046128bd565b61147d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028b565b3480156104d457600080fd5b5061027f6104e336600461276b565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561052557600080fd5b506102b461053436600461261a565b61149c565b34801561054557600080fd5b506102b46105543660046125d8565b61151a565b34801561056557600080fd5b506102e3600081565b34801561057a57600080fd5b5061058e6105893660046125d8565b61155a565b60405161028b91906128df565b3480156105a757600080fd5b506102e360085481565b3480156105bd57600080fd5b506102b46105cc3660046125d8565b611574565b3480156105dd57600080fd5b506102e361271081565b3480156105f357600080fd5b506102b4610602366004612938565b6115b4565b34801561061357600080fd5b506102e36106223660046125d8565b611708565b34801561063357600080fd5b5061027f6106423660046125d8565b600d6020526000908152604090205460ff1681565b34801561066357600080fd5b506102e360095481565b34801561067957600080fd5b506102b461068836600461276b565b61171f565b34801561069957600080fd5b506006546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c657600080fd5b506102e37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156106fa57600080fd5b506102e37f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0981565b34801561072e57600080fd5b506007546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075b57600080fd5b506102b461076a366004612974565b611744565b34801561077b57600080fd5b506102e37f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107f957506107f9826117df565b92915050565b600061080a81611876565b60088290556040518281527f0b2358c6423981418f7b3a3dcc05bed6b15708c9ec309197a63de3722ca75198906020015b60405180910390a15050565b61084f611880565b6108576118c3565b73ffffffffffffffffffffffffffffffffffffffff86166108a4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036108de576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015906108fc57506000838152600c602052604090205460ff16155b15610933576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8215801590610958575060075473ffffffffffffffffffffffffffffffffffffffff16155b1561098f576040517f970b74e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460ff16156109e35760008190036109d5576040517f229bfb1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109e3868686868686611902565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b166020820152603481018690527fff0000000000000000000000000000000000000000000000000000000000000060f886901b166054820152600090605501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600d90935291205490915060ff1615610acb576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8916602082015290810187905260ff86166060820152600090608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610b948a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506005549150849050611a9e565b610bca576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009548710158015610bde57506000600854115b15610c1e576008543414610c1e576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055868515610c98576000868152600b602052604081205490612710610c79838c6129c0565b610c8391906129d7565b9050610c8f818b612a12565b92505050610cf4565b60008052600b6020527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76548015610cf2576000612710610cd8838c6129c0565b610ce291906129d7565b9050610cee818b612a12565b9250505b505b73ffffffffffffffffffffffffffffffffffffffff89166000908152600e602052604081208054839290610d29908490612a25565b90915550508515610eca576006546007546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190612a38565b506007546040517f0c51b88f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018490526044820189905290911690630c51b88f906064016020604051808303816000875af1925050508015610e8e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e8b91810190612a55565b60015b610ec4576040517fa437293700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610eee565b600654610eee9073ffffffffffffffffffffffffffffffffffffffff168a83611ab4565b604080518981526020810183905260ff891681830152905173ffffffffffffffffffffffffffffffffffffffff8b16917ffba955b7124801955d5218289768d39688a6c2af7c54181f5bf3b0b0e7a4aa89919081900360600190a2505050610f566001600355565b5050505050505050565b600082815260208190526040902060010154610f7b81611876565b610f858383611b41565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610fda576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fe48282611b76565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61101381611876565b61101b611ba3565b50565b600061102981611876565b6000848152600b60209081526040808320869055600c82529182902080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915582518781529182018690528183015290517fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca79181900360600190a150505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110de81611876565b61101b611c20565b60045460ff1615611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff891615806111ba575073ffffffffffffffffffffffffffffffffffffffff8416155b156111f1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc60008a611b41565b5073ffffffffffffffffffffffffffffffffffffffff881615611270576112437f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b41565b5061126e7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a89611b41565b505b73ffffffffffffffffffffffffffffffffffffffff8716156112e3576112b67f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0988611b41565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600886905560058590556006805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600780549286169290911691909117905560005b8181101561141e57600083838381811061136157611361612a6e565b905060400201600001359050600084848481811061138157611381612a6e565b6000858152600b602090815260408083209381029590950181013592839055600c815290849020805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915584518781529182018390528185015292519093507fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7928190036060019150a15050600101611345565b5050600080525050600c60205250507f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050565b60008281526001602052604081206114959083611c7b565b9392505050565b60006114a781611876565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f6397f5b135542bb3f477cb346cfab5abdec1251d08dc8f8d4efb4ffe122ea0bf9060200161083b565b600061152581611876565b60098290556040518281527f0bdc5b50951daf28f83d3ccb05f68a48458a346738f725758d690acb72e5eba19060200161083b565b60008181526001602052604090206060906107f990611c87565b600061157f81611876565b60058290556040518281527f90004c04698bc3322499a575ed3752dd4abf33e0a7294c06a787a0fe01bea9419060200161083b565b60006115bf81611876565b73ffffffffffffffffffffffffffffffffffffffff841661160c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611646576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116865761168173ffffffffffffffffffffffffffffffffffffffff851684611c94565b6116a7565b6116a773ffffffffffffffffffffffffffffffffffffffff83168585611ab4565b8173ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff167f3c29f706dd8ad89f52baa05197bc9e1ab54a532923f8890b4c610641423f186060405160405180910390a450505050565b60008181526001602052604081206107f990611d4a565b60008281526020819052604090206001015461173a81611876565b610f858383611b76565b600061174f81611876565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683158015919091179091556117b1576040517f927afc1823834346e83b933a68384b62ba45245d11961d6c8b76a3553a93482490600090a15050565b6040517f7a3b4c944febd2c899d89daed15db8d2e0903a535f27b1c5f0ea8f3fd3e137da90600090a15b5050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107f9565b61101b8133611d54565b6002600354036118bc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615611900576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088811b82166020840152603483018890527fff0000000000000000000000000000000000000000000000000000000000000060f888901b1660548401526055830186905230901b16607582015260009060890160405160208183030381529060405280519060200120905060006119cc827f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b90506000611a1285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611dda9050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef81602052604090205490915060ff16611a93576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050565b600082611aab8584611e04565b14949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610fe4908490611e3f565b600080611b4e8484611ee3565b90508015611495576000848152600160205260409020611b6e9084611fdf565b509392505050565b600080611b838484612001565b90508015611495576000848152600160205260409020611b6e90846120bc565b611bab6120de565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611c286118c3565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bf63390565b6000611495838361211a565b6060600061149583612144565b80471015611cd7576040517fcf4791810000000000000000000000000000000000000000000000000000000081524760048201526024810182905260440161114f565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d32576040519150601f19603f3d011682016040523d82523d6000602084013e611d37565b606091505b509150915081610f8557610f85816121a0565b60006107f9825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166117db576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161114f565b600080600080611dea86866121e2565b925092509250611dfa828261222f565b5090949350505050565b600081815b8451811015611b6e57611e3582868381518110611e2857611e28612a6e565b6020026020010151612333565b9150600101611e09565b600080602060008451602086016000885af180611e62576040513d6000823e3d81fd5b50506000513d91508115611e7a578060011415611e94565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610f85576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161114f565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f753390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016107f9565b5060006107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff8416612362565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff84166123a9565b60025460ff16611900576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061213157612131612a6e565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561219457602002820191906000526020600020905b815481526020019060010190808311612180575b50505050509050919050565b8051156121b05780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000835160410361221c5760208401516040850151606086015160001a61220e8882858561249c565b955095509550505050612228565b50508151600091506002905b9250925092565b600082600381111561224357612243612a9d565b0361224c575050565b600182600381111561226057612260612a9d565b03612297576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156122ab576122ab612a9d565b036122e5576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b60038260038111156122f9576122f9612a9d565b036117db576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b600081831061234f576000828152602084905260409020611495565b6000838152602083905260409020611495565b6000818152600183016020526040812054611fd7575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f9565b600081815260018301602052604081205480156124925760006123cd600183612a12565b85549091506000906123e190600190612a12565b905080821461244657600086600001828154811061240157612401612a6e565b906000526020600020015490508087600001848154811061242457612424612a6e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061245757612457612acc565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f9565b60009150506107f9565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156124d7575060009150600390508261258c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561252b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166125825750600092506001915082905061258c565b9250600091508190505b9450945094915050565b6000602082840312156125a857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461149557600080fd5b6000602082840312156125ea57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461261557600080fd5b919050565b60006020828403121561262c57600080fd5b611495826125f1565b803560ff8116811461261557600080fd5b60008083601f84011261265857600080fd5b50813567ffffffffffffffff81111561267057600080fd5b60208301915083602082850101111561268857600080fd5b9250929050565b60008060008060008060008060c0898b0312156126ab57600080fd5b883567ffffffffffffffff8111156126c257600080fd5b8901601f81018b136126d357600080fd5b803567ffffffffffffffff8111156126ea57600080fd5b8b60208260051b84010111156126ff57600080fd5b602091820199509750612713908a016125f1565b95506040890135945061272860608a01612635565b93506080890135925060a089013567ffffffffffffffff81111561274b57600080fd5b6127578b828c01612646565b999c989b5096995094979396929594505050565b6000806040838503121561277e57600080fd5b8235915061278e602084016125f1565b90509250929050565b801515811461101b57600080fd5b6000806000606084860312156127ba57600080fd5b833592506020840135915060408401356127d381612797565b809150509250925092565b60008060008060008060008060006101008a8c0312156127fd57600080fd5b6128068a6125f1565b985061281460208b016125f1565b975061282260408b016125f1565b965060608a0135955060808a0135945061283e60a08b016125f1565b935061284c60c08b016125f1565b925060e08a013567ffffffffffffffff81111561286857600080fd5b8a01601f81018c1361287957600080fd5b803567ffffffffffffffff81111561289057600080fd5b8c60208260061b84010111156128a557600080fd5b60208201935080925050509295985092959850929598565b600080604083850312156128d057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b8181101561292d57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016128f9565b509095945050505050565b60008060006060848603121561294d57600080fd5b612956846125f1565b92506020840135915061296b604085016125f1565b90509250925092565b60006020828403121561298657600080fd5b813561149581612797565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107f9576107f9612991565b600082612a0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107f9576107f9612991565b808201808211156107f9576107f9612991565b600060208284031215612a4a57600080fd5b815161149581612797565b600060208284031215612a6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ac1af95c8b44d1d43ee08d68e86100483a6d8c9f9055caabc136f543254701df64736f6c634300081e0033","output":"0x6080604052600436106102535760003560e01c80639dd373b911610138578063cbeb88f6116100b0578063e63ab1e91161007f578063ee99205c11610064578063ee99205c14610722578063f58280d21461074f578063fb1bb9de1461076f57600080fd5b8063e63ab1e9146106ba578063e7705db6146106ee57600080fd5b8063cbeb88f614610627578063d32780d814610657578063d547741f1461066d578063e5a6b10f1461068d57600080fd5b8063a39f3f9d11610107578063b3cd4254116100ec578063b3cd4254146105d1578063c40ab4e1146105e7578063ca15c8731461060757600080fd5b8063a39f3f9d1461059b578063b391c738146105b157600080fd5b80639dd373b9146105195780639f862c5d14610539578063a217fddf14610559578063a3246ad31461056e57600080fd5b80633f4ba83a116101cb5780636b3b1c0f1161019a57806389fcf3bd1161017f57806389fcf3bd146104635780639010d07c1461048357806391d14854146104c857600080fd5b80636b3b1c0f146104215780638456cb591461044e57600080fd5b80633f4ba83a146103ba578063479ae9e3146103cf5780635c975abb146103e95780635e8822fa1461040157600080fd5b80632ac96e2a116102225780633150992e116102075780633150992e146103545780633248d3c91461036a57806336568abe1461039a57600080fd5b80632ac96e2a146103215780632f2ff15d1461033457600080fd5b806301ffc9a71461025f57806305e75bcb146102945780631eb01a70146102b6578063248a9ca3146102f157600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027f61027a366004612596565b6107a3565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102b46102af3660046125d8565b6107ff565b005b3480156102c257600080fd5b506102e36102d136600461261a565b600e6020526000908152604090205481565b60405190815260200161028b565b3480156102fd57600080fd5b506102e361030c3660046125d8565b60009081526020819052604090206001015490565b6102b461032f36600461268f565b610847565b34801561034057600080fd5b506102b461034f36600461276b565b610f60565b34801561036057600080fd5b506102e360055481565b34801561037657600080fd5b5061027f6103853660046125d8565b600c6020526000908152604090205460ff1681565b3480156103a657600080fd5b506102b46103b536600461276b565b610f8b565b3480156103c657600080fd5b506102b4610fe9565b3480156103db57600080fd5b50600a5461027f9060ff1681565b3480156103f557600080fd5b5060025460ff1661027f565b34801561040d57600080fd5b506102b461041c3660046127a5565b61101e565b34801561042d57600080fd5b506102e361043c3660046125d8565b600b6020526000908152604090205481565b34801561045a57600080fd5b506102b46110b4565b34801561046f57600080fd5b506102b461047e3660046127de565b6110e6565b34801561048f57600080fd5b506104a361049e3660046128bd565b61147d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028b565b3480156104d457600080fd5b5061027f6104e336600461276b565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561052557600080fd5b506102b461053436600461261a565b61149c565b34801561054557600080fd5b506102b46105543660046125d8565b61151a565b34801561056557600080fd5b506102e3600081565b34801561057a57600080fd5b5061058e6105893660046125d8565b61155a565b60405161028b91906128df565b3480156105a757600080fd5b506102e360085481565b3480156105bd57600080fd5b506102b46105cc3660046125d8565b611574565b3480156105dd57600080fd5b506102e361271081565b3480156105f357600080fd5b506102b4610602366004612938565b6115b4565b34801561061357600080fd5b506102e36106223660046125d8565b611708565b34801561063357600080fd5b5061027f6106423660046125d8565b600d6020526000908152604090205460ff1681565b34801561066357600080fd5b506102e360095481565b34801561067957600080fd5b506102b461068836600461276b565b61171f565b34801561069957600080fd5b506006546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106c657600080fd5b506102e37f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b3480156106fa57600080fd5b506102e37f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0981565b34801561072e57600080fd5b506007546104a39073ffffffffffffffffffffffffffffffffffffffff1681565b34801561075b57600080fd5b506102b461076a366004612974565b611744565b34801561077b57600080fd5b506102e37f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107f957506107f9826117df565b92915050565b600061080a81611876565b60088290556040518281527f0b2358c6423981418f7b3a3dcc05bed6b15708c9ec309197a63de3722ca75198906020015b60405180910390a15050565b61084f611880565b6108576118c3565b73ffffffffffffffffffffffffffffffffffffffff86166108a4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036108de576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015906108fc57506000838152600c602052604090205460ff16155b15610933576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8215801590610958575060075473ffffffffffffffffffffffffffffffffffffffff16155b1561098f576040517f970b74e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5460ff16156109e35760008190036109d5576040517f229bfb1f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109e3868686868686611902565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088901b166020820152603481018690527fff0000000000000000000000000000000000000000000000000000000000000060f886901b166054820152600090605501604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152600d90935291205490915060ff1615610acb576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8916602082015290810187905260ff86166060820152600090608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610b948a8a80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506005549150849050611a9e565b610bca576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009548710158015610bde57506000600854115b15610c1e576008543414610c1e576040517f26ea953d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600d6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055868515610c98576000868152600b602052604081205490612710610c79838c6129c0565b610c8391906129d7565b9050610c8f818b612a12565b92505050610cf4565b60008052600b6020527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f76548015610cf2576000612710610cd8838c6129c0565b610ce291906129d7565b9050610cee818b612a12565b9250505b505b73ffffffffffffffffffffffffffffffffffffffff89166000908152600e602052604081208054839290610d29908490612a25565b90915550508515610eca576006546007546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190612a38565b506007546040517f0c51b88f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b81166004830152602482018490526044820189905290911690630c51b88f906064016020604051808303816000875af1925050508015610e8e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e8b91810190612a55565b60015b610ec4576040517fa437293700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610eee565b600654610eee9073ffffffffffffffffffffffffffffffffffffffff168a83611ab4565b604080518981526020810183905260ff891681830152905173ffffffffffffffffffffffffffffffffffffffff8b16917ffba955b7124801955d5218289768d39688a6c2af7c54181f5bf3b0b0e7a4aa89919081900360600190a2505050610f566001600355565b5050505050505050565b600082815260208190526040902060010154610f7b81611876565b610f858383611b41565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610fda576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fe48282611b76565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61101381611876565b61101b611ba3565b50565b600061102981611876565b6000848152600b60209081526040808320869055600c82529182902080548515157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915582518781529182018690528183015290517fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca79181900360600190a150505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110de81611876565b61101b611c20565b60045460ff1615611158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff891615806111ba575073ffffffffffffffffffffffffffffffffffffffff8416155b156111f1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111fc60008a611b41565b5073ffffffffffffffffffffffffffffffffffffffff881615611270576112437f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a89611b41565b5061126e7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a89611b41565b505b73ffffffffffffffffffffffffffffffffffffffff8716156112e3576112b67f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea0988611b41565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b600886905560058590556006805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600780549286169290911691909117905560005b8181101561141e57600083838381811061136157611361612a6e565b905060400201600001359050600084848481811061138157611381612a6e565b6000858152600b602090815260408083209381029590950181013592839055600c815290849020805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909116811790915584518781529182018390528185015292519093507fab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7928190036060019150a15050600101611345565b5050600080525050600c60205250507f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550505050565b60008281526001602052604081206114959083611c7b565b9392505050565b60006114a781611876565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f6397f5b135542bb3f477cb346cfab5abdec1251d08dc8f8d4efb4ffe122ea0bf9060200161083b565b600061152581611876565b60098290556040518281527f0bdc5b50951daf28f83d3ccb05f68a48458a346738f725758d690acb72e5eba19060200161083b565b60008181526001602052604090206060906107f990611c87565b600061157f81611876565b60058290556040518281527f90004c04698bc3322499a575ed3752dd4abf33e0a7294c06a787a0fe01bea9419060200161083b565b60006115bf81611876565b73ffffffffffffffffffffffffffffffffffffffff841661160c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611646576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166116865761168173ffffffffffffffffffffffffffffffffffffffff851684611c94565b6116a7565b6116a773ffffffffffffffffffffffffffffffffffffffff83168585611ab4565b8173ffffffffffffffffffffffffffffffffffffffff16838573ffffffffffffffffffffffffffffffffffffffff167f3c29f706dd8ad89f52baa05197bc9e1ab54a532923f8890b4c610641423f186060405160405180910390a450505050565b60008181526001602052604081206107f990611d4a565b60008281526020819052604090206001015461173a81611876565b610f858383611b76565b600061174f81611876565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001683158015919091179091556117b1576040517f927afc1823834346e83b933a68384b62ba45245d11961d6c8b76a3553a93482490600090a15050565b6040517f7a3b4c944febd2c899d89daed15db8d2e0903a535f27b1c5f0ea8f3fd3e137da90600090a15b5050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107f957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107f9565b61101b8133611d54565b6002600354036118bc576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600355565b60025460ff1615611900576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088811b82166020840152603483018890527fff0000000000000000000000000000000000000000000000000000000000000060f888901b1660548401526055830186905230901b16607582015260009060890160405160208183030381529060405280519060200120905060006119cc827f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b90506000611a1285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508693925050611dda9050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef81602052604090205490915060ff16611a93576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050565b600082611aab8584611e04565b14949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610fe4908490611e3f565b600080611b4e8484611ee3565b90508015611495576000848152600160205260409020611b6e9084611fdf565b509392505050565b600080611b838484612001565b90508015611495576000848152600160205260409020611b6e90846120bc565b611bab6120de565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611c286118c3565b600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611bf63390565b6000611495838361211a565b6060600061149583612144565b80471015611cd7576040517fcf4791810000000000000000000000000000000000000000000000000000000081524760048201526024810182905260440161114f565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d32576040519150601f19603f3d011682016040523d82523d6000602084013e611d37565b606091505b509150915081610f8557610f85816121a0565b60006107f9825490565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166117db576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161114f565b600080600080611dea86866121e2565b925092509250611dfa828261222f565b5090949350505050565b600081815b8451811015611b6e57611e3582868381518110611e2857611e28612a6e565b6020026020010151612333565b9150600101611e09565b600080602060008451602086016000885af180611e62576040513d6000823e3d81fd5b50506000513d91508115611e7a578060011415611e94565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610f85576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161114f565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f753390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016107f9565b5060006107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff8416612362565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615611fd75760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016107f9565b60006114958373ffffffffffffffffffffffffffffffffffffffff84166123a9565b60025460ff16611900576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600001828154811061213157612131612a6e565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561219457602002820191906000526020600020905b815481526020019060010190808311612180575b50505050509050919050565b8051156121b05780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806000835160410361221c5760208401516040850151606086015160001a61220e8882858561249c565b955095509550505050612228565b50508151600091506002905b9250925092565b600082600381111561224357612243612a9d565b0361224c575050565b600182600381111561226057612260612a9d565b03612297576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156122ab576122ab612a9d565b036122e5576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b60038260038111156122f9576122f9612a9d565b036117db576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240161114f565b600081831061234f576000828152602084905260409020611495565b6000838152602083905260409020611495565b6000818152600183016020526040812054611fd7575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f9565b600081815260018301602052604081205480156124925760006123cd600183612a12565b85549091506000906123e190600190612a12565b905080821461244657600086600001828154811061240157612401612a6e565b906000526020600020015490508087600001848154811061242457612424612a6e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061245757612457612acc565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f9565b60009150506107f9565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156124d7575060009150600390508261258c565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561252b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166125825750600092506001915082905061258c565b9250600091508190505b9450945094915050565b6000602082840312156125a857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461149557600080fd5b6000602082840312156125ea57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461261557600080fd5b919050565b60006020828403121561262c57600080fd5b611495826125f1565b803560ff8116811461261557600080fd5b60008083601f84011261265857600080fd5b50813567ffffffffffffffff81111561267057600080fd5b60208301915083602082850101111561268857600080fd5b9250929050565b60008060008060008060008060c0898b0312156126ab57600080fd5b883567ffffffffffffffff8111156126c257600080fd5b8901601f81018b136126d357600080fd5b803567ffffffffffffffff8111156126ea57600080fd5b8b60208260051b84010111156126ff57600080fd5b602091820199509750612713908a016125f1565b95506040890135945061272860608a01612635565b93506080890135925060a089013567ffffffffffffffff81111561274b57600080fd5b6127578b828c01612646565b999c989b5096995094979396929594505050565b6000806040838503121561277e57600080fd5b8235915061278e602084016125f1565b90509250929050565b801515811461101b57600080fd5b6000806000606084860312156127ba57600080fd5b833592506020840135915060408401356127d381612797565b809150509250925092565b60008060008060008060008060006101008a8c0312156127fd57600080fd5b6128068a6125f1565b985061281460208b016125f1565b975061282260408b016125f1565b965060608a0135955060808a0135945061283e60a08b016125f1565b935061284c60c08b016125f1565b925060e08a013567ffffffffffffffff81111561286857600080fd5b8a01601f81018c1361287957600080fd5b803567ffffffffffffffff81111561289057600080fd5b8c60208260061b84010111156128a557600080fd5b60208201935080925050509295985092959850929598565b600080604083850312156128d057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b8181101561292d57835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016128f9565b509095945050505050565b60008060006060848603121561294d57600080fd5b612956846125f1565b92506020840135915061296b604085016125f1565b90509250925092565b60006020828403121561298657600080fd5b813561149581612797565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107f9576107f9612991565b600082612a0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b818103818111156107f9576107f9612991565b808201808211156107f9576107f9612991565b600060208284031215612a4a57600080fd5b815161149581612797565b600060208284031215612a6757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220ac1af95c8b44d1d43ee08d68e86100483a6d8c9f9055caabc136f543254701df64736f6c634300081e0033","gas_used":2235866,"gas_limit":3150084,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80639010d07c11610097578063a3246ad311610066578063a3246ad314610286578063b09e1b1f146102a6578063ca15c873146102cd578063d547741f146102e057600080fd5b80639010d07c1461021f57806391d1485414610232578063946ccd5f14610276578063a217fddf1461027e57600080fd5b80632f2ff15d116100d35780632f2ff15d1461018b57806336568abe146101a057806350b492ba146101b357806360166fe3146101e957600080fd5b806301ffc9a7146100fa57806315fb764014610122578063248a9ca31461015a575b600080fd5b61010d610108366004610d71565b6102f3565b60405190151581526020015b60405180910390f35b610135610130366004610db3565b61034f565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610119565b61017d610168366004610def565b60009081526020819052604090206001015490565b604051908152602001610119565b61019e610199366004610e31565b61061e565b005b61019e6101ae366004610e31565b610649565b6101356101c1366004610def565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101356101f7366004610def565b60009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61013561022d366004610e5d565b6106a7565b61010d610240366004610e31565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b60025461017d565b61017d600081565b610299610294366004610def565b6106c6565b6040516101199190610e7f565b6101357f0000000000000000000000004f57f9239efcbf43e5920f579d03b3849c58839681565b61017d6102db366004610def565b6106e0565b61019e6102ee366004610e31565b6106f7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061034957506103498261071c565b92915050565b60008061035f6020840184610ed8565b73ffffffffffffffffffffffffffffffffffffffff1614806103a65750600061038e60c0840160a08501610ed8565b73ffffffffffffffffffffffffffffffffffffffff16145b156103dd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6080820135610418576040517f9dd854d300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104417f0000000000000000000000004f57f9239efcbf43e5920f579d03b3849c5883966107b3565b905073ffffffffffffffffffffffffffffffffffffffff81166389fcf3bd61046c6020850185610ed8565b61047c6040860160208701610ed8565b61048c6060870160408801610ed8565b606087013560808801356104a660c08a0160a08b01610ed8565b6104b660e08b0160c08c01610ed8565b6104c360e08c018c610ef3565b6040518a63ffffffff1660e01b81526004016104e799989796959493929190610f62565b600060405180830381600087803b15801561050157600080fd5b505af1158015610515573d6000803e3d6000fd5b50506002805492509050600061052a8361102a565b9091555050600254600090815260036020908152604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905561058d90830183610ed8565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff166002547fe2af5a9302169fb2b16d64ea3273f80104a5a67c94475b4c699ec467d9d2ec6f8560a00160208101906105f19190610ed8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a4919050565b600082815260208190526040902060010154610639816107c0565b61064383836107cd565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610698576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106a28282610802565b505050565b60008281526001602052604081206106bf908361082f565b9392505050565b60008181526001602052604090206060906103499061083b565b600081815260016020526040812061034990610848565b600082815260208190526040902060010154610712816107c0565b6106438383610802565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061034957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610349565b6000610349826000610852565b6107ca813361092c565b50565b6000806107da84846109b6565b905080156106bf5760008481526001602052604090206107fa9084610ab2565b509392505050565b60008061080f8484610ad4565b905080156106bf5760008481526001602052604090206107fa9084610b8f565b60006106bf8383610bb1565b606060006106bf83610bdb565b6000610349825490565b60008147101561089c576040517fcf479181000000000000000000000000000000000000000000000000000000008152476004820152602481018390526044015b60405180910390fd5b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f0905073ffffffffffffffffffffffffffffffffffffffff8116610349576040517fb06ebf3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109b2576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610893565b5050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610a483390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610349565b506000610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c37565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1615610aaa5760008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610349565b60006106bf8373ffffffffffffffffffffffffffffffffffffffff8416610c7e565b6000826000018281548110610bc857610bc8611062565b9060005260206000200154905092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015610c2b57602002820191906000526020600020905b815481526020019060010190808311610c17575b50505050509050919050565b6000818152600183016020526040812054610aaa57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610349565b60008181526001830160205260408120548015610d67576000610ca2600183611091565b8554909150600090610cb690600190611091565b9050808214610d1b576000866000018281548110610cd657610cd6611062565b9060005260206000200154905080876000018481548110610cf957610cf9611062565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610d2c57610d2c6110a4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610349565b6000915050610349565b600060208284031215610d8357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bf57600080fd5b600060208284031215610dc557600080fd5b813567ffffffffffffffff811115610ddc57600080fd5b820161010081850312156106bf57600080fd5b600060208284031215610e0157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e2c57600080fd5b919050565b60008060408385031215610e4457600080fd5b82359150610e5460208401610e08565b90509250929050565b60008060408385031215610e7057600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b81811015610ecd57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e99565b509095945050505050565b600060208284031215610eea57600080fd5b6106bf82610e08565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610f2857600080fd5b83018035915067ffffffffffffffff821115610f4357600080fd5b6020019150600681901b3603821315610f5b57600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8a8116825289811660208301528881166040830152606082018890526080820187905285811660a0830152841660c082015261010060e0820181905281018290526000836101208301825b85811015610fea57823582526020808401359083015260409283019290910190600101610fc2565b509c9b505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361105b5761105b610ffb565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8181038181111561034957610349610ffb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220499971a6beedabcbe4a23ff1222fc9b85ea4ab7b4a69cdf2ceb7ce64ca8e131064736f6c634300081e0033","nonce":30,"gas_used":3517176},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x35aaf8","logs":[{"address":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000020000000000000100000800000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000200000000000000000000000002000000100000200000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xbc391dbc898c535581050478b05f429cf2007ceb83f5538f117d075cb9c4dfee","block_number":31},{"info":{"transaction_hash":"0x6faa31a66788e6a63f8b3873254a1088bb99d19e52268d50324fa07e1b72c14a","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f1900000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a6500000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":5,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000015d34aaf54267db7d7c367839aaf71a00a2c6a65"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x5f58bea3a88b74489d0a7f11d754383bf4dd59dace57e89e83f1ae8053373ec1","block_number":6},{"info":{"transaction_hash":"0x5c76f4cdf4eb4f482a64238f519986c0a52a6fcab1de39c27bf6574158e57809","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15d9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":101246,"gas_limit":102736,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15d9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":96322,"gas_limit":96322,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":24,"gas_used":123178},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1e12a","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004008000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000001200000000100000000000000000200000000000000000000000002000000100000000000000000000000000000000000000000000000000000000000000000100000000000000"},"block_hash":"0x2186969336213b5978f7f66bc4a9306097402d16582ca7c9df26d07939db4586","block_number":25},{"info":{"transaction_hash":"0xdaea7ebe37fa38ba8c58a1374e0e09e7010eedae1436167abd85a5cc59414656","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":46728,"gas_limit":46728,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":1,"gas_used":68372},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x10b14","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x1d5d01764ddcf116b2e0a8c9a69d68a6411d60f8e03fd363c41821a1790183f9","block_number":2},{"info":{"transaction_hash":"0x9699791933123f41bd5440e0d0b7b23d10074431fdb3c7301001c25e7fc743cf","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xa9059cbb000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c90000000000000000000000000000000000000000000001e7e4171bf4d3a00000","output":"0x0000000000000000000000000000000000000000000000000000000000000001","gas_used":29846,"gas_limit":29846,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c9"],"data":"0x0000000000000000000000000000000000000000000001e7e4171bf4d3a00000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x0000000000000000000000000000000000000000000000000000000000000001","nonce":33,"gas_used":51502},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc92e","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c9"],"data":"0x0000000000000000000000000000000000000000000001e7e4171bf4d3a00000"}],"logsBloom":"0x00000000000000000000000000000000000000400000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000008000000000000020000000000000000000000000000000040000000000000000100000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000200000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x284fd0ca142d3800e6845c680dc92f86e1563d0f347fdc50c741616b67de7196","block_number":34},{"info":{"transaction_hash":"0x94be7579f7126668eaf90dc02177d2833f920f80f595d6957b1bc631124aa397","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15d65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":34347,"gas_limit":34776,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9a676e781a523b5d0c0e43731313a708cb607508","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15d65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":29423,"gas_limit":29423,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":21,"gas_used":56291},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xdbe3","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800000000000000000000000001000000000000000000000000000200000000000000000000000002000000100002000000000000000000000000000000000000000000000000400000000000000000000000000"},"block_hash":"0x5a1157ababfa2d72fc13003de25cdddf5fba3f3508db1efb3fda8a8a377b1cb6","block_number":22},{"info":{"transaction_hash":"0x6930ec53606afbdb723e6bfbe36b106a534708f98ce25b8de122f7f78c2c45a4","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15d427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":101246,"gas_limit":102736,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15d427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":96322,"gas_limit":96322,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":26,"gas_used":123190},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1e136","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000008000000000000000000000000000000001000000000000000000000000000200000000000000020000000002000000100000000000000000000000000000000000000000000000000000000000000000100000000000000"},"block_hash":"0x48935fef1396858aea8895103b5a9bad803ca32c9aa0d20d7f5d2caf27941ab0","block_number":27},{"info":{"transaction_hash":"0x71fbd1e1a667ffb28323e825979632d2cdd4f53652beb8f04b09aa8a0c841aff","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","contract_address":null,"traces":[{"parent":null,"children":[1,2],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x15fb76400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099341db4a72623b4f268048ed9f02ff92894fc9a5fa6409107188ce968975a780000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000000000000000000000000000000000000000005dc0000000000000000000000000000000000000000000000000000000000ed4e0000000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","gas_used":651673,"gas_limit":651673,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xe2af5a9302169fb2b16d64ea3273f80104a5a67c94475b4c699ec467d9d2ec6f","0x0000000000000000000000000000000000000000000000000000000000000001","0x000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"},"decoded":null,"position":2,"index":8}],"ordering":[{"Call":0},{"Call":1},{"Log":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x3d602d80600a3d3981f3363d3d373d3d3d363d734f57f9239efcbf43e5920f579d03b3849c5883965af43d82803e903d91602b57fd5bf3","output":"0x363d3d373d3d3d363d734f57f9239efcbf43e5920f579d03b3849c5883965af43d82803e903d91602b57fd5bf3","gas_used":9031,"gas_limit":609143,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[]},{"parent":0,"children":[3],"idx":2,"trace":{"depth":1,"success":true,"caller":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x89fcf3bd000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099341db4a72623b4f268048ed9f02ff92894fc9a5fa6409107188ce968975a780000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000000000000000000000000000000000000000005dc0000000000000000000000000000000000000000000000000000000000ed4e0000000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":560271,"gas_limit":598002,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":2,"children":[],"idx":3,"trace":{"depth":2,"success":true,"caller":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","address":"0x4f57f9239efcbf43e5920f579d03b3849c588396","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x89fcf3bd000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099341db4a72623b4f268048ed9f02ff92894fc9a5fa6409107188ce968975a780000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000000000000000000000000000000000000000005dc0000000000000000000000000000000000000000000000000000000000ed4e0000000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":557494,"gas_limit":585958,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e"],"data":"0x"},"decoded":null,"position":0,"index":0},{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e"],"data":"0x"},"decoded":null,"position":0,"index":1},{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e"],"data":"0x"},"decoded":null,"position":0,"index":2},{"raw_log":{"topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":3},{"raw_log":{"topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x0000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":4},{"raw_log":{"topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000000000000000000000000000000000000000005dc0000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":5},{"raw_log":{"topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x0000000000000000000000000000000000000000000000000000000000ed4e0000000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":6},{"raw_log":{"topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x0000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":7}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5},{"Log":6},{"Log":7}]}],"exit":"Return","out":"0x000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","nonce":31,"gas_used":676653},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xa532d","logs":[{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e"],"data":"0x"},{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e"],"data":"0x"},{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000e6e340d132b5f46d1e472debcd681b2abc16e57e"],"data":"0x"},{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x0000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x000000000000000000000000000000000000000000000000000000000076a70000000000000000000000000000000000000000000000000000000000000005dc0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x0000000000000000000000000000000000000000000000000000000000ed4e0000000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0xab87c007ac916c15e7b1b13960bc48b8eb7946ac487814d9c3a4bb968c162ca7"],"data":"0x0000000000000000000000000000000000000000000000000000000001e1338000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xe6e340d132b5f46d1e472debcd681b2abc16e57e","topics":["0xe2af5a9302169fb2b16d64ea3273f80104a5a67c94475b4c699ec467d9d2ec6f","0x0000000000000000000000000000000000000000000000000000000000000001","0x000000000000000000000000f3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3"}],"logsBloom":"0x00000006000000000000000000000000000000400000200000000000000000000000000000008000000000000000000000000000000000000000000000040000080000000000000080000000000000800000020000042000000000000010000000000000020000000000000100000800000000000000000000000000080000000080000080000000400000000000008000000000000000000000000001000000000000000000000000000000000000000020000000000000001000000000000000000000000000200000000000000020800000002000000100002200000060000000000000000000000000000000000100000400000100000000000000000000"},"block_hash":"0x39e0df22110a138bcc7753a308c12ae3a870f8213907fa7145aa9644607f9677","block_number":32},{"info":{"transaction_hash":"0xc285f91f57342319bcbd16274d54a620cac3495ba57fb6314e347c4ba23f1fc9","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f19000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a7972000000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a79720"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":10,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000a0ee7a142d267c1f36714e4a8f75612f20a79720"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000008000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000004000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x4e2ca00c7e807e8ae09e7c7a734c579b1a37db052ce36cf47bac96d271d067d0","block_number":11},{"info":{"transaction_hash":"0xdabea5780b8592902197ab39501ced55f6e3e05b8f87d63fa7c7f64d490677db","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","traces":[{"parent":null,"children":[1,2],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000","output":"0x608060405261000c61000e565b005b7f0000000000000000000000001f708c24a0d3a740cd47cc0444e9480899f3da7d73ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","gas_used":869630,"gas_limit":869630,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e"],"data":"0x"},"decoded":null,"position":0,"index":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f708c24a0d3a740cd47cc0444e9480899f3da7d"},"decoded":null,"position":2,"index":4}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Log":1}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":161739,"gas_limit":829044,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":1},{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":2}],"ordering":[{"Log":0},{"Log":1}]},{"parent":0,"children":[],"idx":2,"trace":{"depth":1,"success":true,"caller":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","address":"0x1f708c24a0d3a740cd47cc0444e9480899f3da7d","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033","gas_used":307276,"gas_limit":637457,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":3}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405261000c61000e565b005b7f0000000000000000000000001f708c24a0d3a740cd47cc0444e9480899f3da7d73ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","nonce":12,"gas_used":989034},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xf176a","logs":[{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000b7f8bc63bbcad18155201308c8f3540b07f84f5e"],"data":"0x"},{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0x1f708c24a0d3a740cd47cc0444e9480899f3da7d","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f708c24a0d3a740cd47cc0444e9480899f3da7d"}],"logsBloom":"0x00000004000000000000000000000000400000000000000000800000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000002000002000001000000000000000000000000000000000000020000000000000100000800000000a00000000000000c00000000400000000000000000000800000000000000000000000480000000000000800000000000000000000000000000000000000000000000000000001000000000000000000020000000200000000000000000000000002404000100000000000020000000000000000000000000000002000000000000000000000000400000000000"},"block_hash":"0x8787bc141c46c79e3d49509db0d9190b4ca6811b4f8efa18a634e5530b3c664a","block_number":13},{"info":{"transaction_hash":"0x9339f947632797d272a80b2506bf6162466ec9cd6134e24e4fe9a212f62c820a","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f1900000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":9,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000023618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000008000000000"},"block_hash":"0xfc5ba462bbcb060aeb35d969978ec845972c6d1e6903b8be1a9b73ebb8bff4c9","block_number":10},{"info":{"transaction_hash":"0x8719d8d5e6d032eab8adbe2b7481f746548c04121d390f65fe94c9becfbf7885","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6137d7806100d96000396000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063842e29811161017b578063c0c53b8b116100d8578063e71180ae1161008c578063f188768411610071578063f188768414610759578063f2c3999214610762578063fb1bb9de1461076a57600080fd5b8063e71180ae1461073c578063eb4af0451461074657600080fd5b8063ca7c0af1116100bd578063ca7c0af1146106f5578063d547741f14610702578063e63ab1e91461071557600080fd5b8063c0c53b8b146106d9578063c1292cc3146106ec57600080fd5b80639e2c8a5b1161012f578063a217fddf11610114578063a217fddf1461069e578063ac9650d8146106a6578063b2fb30cb146106c657600080fd5b80639e2c8a5b1461066b5780639ed8e92d1461067e57600080fd5b806391d148541161016057806391d14854146105cc57806396dc1dc1146106315780639d28b5061461064457600080fd5b8063842e2981146105a45780638456cb59146105c457600080fd5b80633cbfe3a1116102295780635c975abb116101dd5780637488df89116101c25780637488df89146105615780637b0472f014610588578063817b1cd21461059b57600080fd5b80635c975abb146105245780637153fc331461054e57600080fd5b806344feed291161020e57806344feed29146103df5780634e533572146103f257806351ed6a30146104df57600080fd5b80633cbfe3a1146103ce5780633f4ba83a146103d757600080fd5b80632e17de78116102805780632f2ff15d116102655780632f2ff15d1461038857806336568abe1461039b5780633a107739146103ae57600080fd5b80632e17de78146103605780632e1a7d4d1461037557600080fd5b806301ffc9a7146102b25780630c51b88f146102da578063248a9ca3146102fb5780632da6fea61461033d575b600080fd5b6102c56102c036600461322c565b610791565b60405190151581526020015b60405180910390f35b6102ed6102e8366004613297565b61082a565b6040519081526020016102d1565b6102ed6103093660046132ca565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102c561034b3660046132ca565b60086020526000908152604090205460ff1681565b61037361036e3660046132ca565b610841565b005b6103736103833660046132ca565b610a3c565b6103736103963660046132e3565b610d64565b6103736103a93660046132e3565b610dae565b6102ed6103bc36600461330f565b60076020526000908152604090205481565b6102ed60055481565b610373610e0c565b6103736103ed3660046132ca565b610e7b565b6104896104003660046132ca565b60408051608080820183526000808352602080840182905283850182905260609384018290529481526009855283902083519182018452805482526001015467ffffffffffffffff808216958301959095526801000000000000000081048516938201939093527001000000000000000000000000000000009092049092169181019190915290565b6040516102d1919060006080820190508251825267ffffffffffffffff602084015116602083015267ffffffffffffffff604084015116604083015267ffffffffffffffff606084015116606083015292915050565b6000546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166102c5565b6102ed61055c36600461332a565b610f1f565b6102ed7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb9748981565b6102ed610596366004613356565b61135c565b6102ed60035481565b6105b76105b236600461330f565b611369565b6040516102d19190613378565b6103736115c2565b6102c56105da3660046132e3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61037361063f366004613409565b6115f4565b6102ed7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d81565b6102ed610679366004613356565b611628565b6001546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6102ed600081565b6106b96106b436600461343e565b611a52565b6040516102d191906134d9565b6102ed6106d4366004613356565b611b3a565b6103736106e7366004613595565b611ff0565b6102ed60025481565b6006546102c59060ff1681565b6103736107103660046132e3565b6122d9565b6102ed7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102ed62ed4e0081565b6103736107543660046132ca565b61231d565b6102ed60045481565b61037361237c565b6102ed7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610837848484612405565b90505b9392505050565b61084961275c565b6108516127ba565b6000818152600960205260409020600181015468010000000000000000900467ffffffffffffffff164210156108b3576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561090d576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610926908361283b565b610964576040517fcda6dd47000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6005546109719042613607565b6001820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff938416810291909117918290558354604080518781526020810192909252919092049092169181019190915233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a250610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b610a446127ba565b60065460ff16610a757fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1690565b8015610a7f575080155b15610ab6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff8082169383019390935268010000000000000000810483169382019390935270010000000000000000000000000000000090920416606082015281610b8157806060015167ffffffffffffffff16421080610b4a5750606081015167ffffffffffffffff16155b15610b81576040517f6f75487700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610b9a9084612879565b610bd3576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b600083815260096020908152604080832083815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055835133845260079092528220805491929091610c2d90849061361a565b9091555050805160038054600090610c4690849061361a565b90915550506001546040517f42966c680000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b50508251600054610cf6935073ffffffffffffffffffffffffffffffffffffffff1691503390612885565b805160405133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56891610d3191878252602082015260400190565b60405180910390a25050610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d9e81612906565b610da88383612910565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610dfd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e078282612a31565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a610e3681612906565b60065460ff1615610e73576040517f19aad37100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a39612b0f565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d610ea581612906565b62ed4e00821115610ee2576040517f6e49f34f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e0906020015b60405180910390a15050565b6000610f2961275c565b610f316127ba565b60008381526008602052604090205460ff16610f7c576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b6000848152600960205260409020821580610f98575060045483105b80610fa4575080548310155b15610fde576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b336000908152600a60205260409020610ff7908661283b565b611030576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810186905260240161095b565b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561108a576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015468010000000000000000900467ffffffffffffffff164210156110de576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160000160008282546110f2919061361a565b92505081905550600060026000815461110a9061362d565b9182905550336000908152600a6020526040902090915061112b9082612bac565b5060405180608001604052808581526020014267ffffffffffffffff16815260200186426111599190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505083546040513393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92506112d6918a8252602082015260400190565b60405180910390a2337f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28282864261130d8a82613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a338484612405565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604081206060919061139b90612bb8565b90506000815167ffffffffffffffff8111156113b9576113b9613665565b60405190808252806020026020018201604052801561143057816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113d75790505b50905060005b82518110156115ba576040518060a0016040528084838151811061145c5761145c613694565b602002602001015181526020016009600086858151811061147f5761147f613694565b60200260200101518152602001908152602001600020600001548152602001600960008685815181106114b4576114b4613694565b6020026020010151815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061150757611507613694565b6020026020010151815260200190815260200160002060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061155a5761155a613694565b6020026020010151815260200190815260200160002060010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168152508282815181106115a7576115a7613694565b6020908102919091010152600101611436565b509392505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6115ec81612906565b610a39612bc5565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61161e81612906565b610e078383612c3e565b600061163261275c565b61163a6127ba565b6000838152600960205260409020600181015468010000000000000000900467ffffffffffffffff1642101561169c576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff16156116f6576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a6020526040902061170f908561283b565b611748576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810185905260240161095b565b805460009061175890859061361a565b84835560055490915061176b9042613607565b8260010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550806000036117cf576040517f9d4212c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600081546117e09061362d565b9182905550336000908152600a602052604090209091506118019082612bac565b506040805160808101825283815260018581015467ffffffffffffffff8082166020808601918252680100000000000000009384900483168688019081526000606088018181528a825260099093528890209651875591519585018054925191518416700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9285169095027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931696909316959095171793909316179091555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561194257600080fd5b505af1158015611956573d6000803e3d6000fd5b505050506001830154604080518881526020810188905270010000000000000000000000000000000090920467ffffffffffffffff169082015233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a26001830154604080518381526020810185905267ffffffffffffffff808416828401526801000000000000000090930490921660608301525133917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a29250505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040805160008152602081019091526060908267ffffffffffffffff811115611a7d57611a7d613665565b604051908082528060200260200182016040528015611ab057816020015b6060815260200190600190039081611a9b5790505b50915060005b83811015611b3257611b0d30868684818110611ad457611ad4613694565b9050602002810190611ae691906136c3565b85604051602001611af99392919061372f565b604051602081830303815290604052612cae565b838281518110611b1f57611b1f613694565b6020908102919091010152600101611ab6565b505092915050565b6000611b4461275c565b611b4c6127ba565b60008281526008602052604090205460ff16611b97576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b336000908152600a60205260409020611bb09084612879565b611be9576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60008381526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff80821693830193909352680100000000000000008104831693820193909352700100000000000000000000000000000000909204166060820181905215611c89576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015167ffffffffffffffff16421015611cd1576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084815260096020526040812081815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055600280548290611d1a9061362d565b9182905550336000908152600a60205260409020909150611d3b9082612bac565b506040518060800160405280836000015181526020014267ffffffffffffffff1681526020018542611d6d9190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f42966c680000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611e9157600080fd5b505af1158015611ea5573d6000803e3d6000fd5b50506001546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b505060408051888152600060208201523393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92500160405180910390a2815133907f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28290839042611fa18982613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000611ffa612d31565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156120275750825b905060008267ffffffffffffffff1660011480156120445750303b155b905081158015612052575080155b15612089576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156120ea5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff88161580612121575073ffffffffffffffffffffffffffffffffffffffff8716155b80612140575073ffffffffffffffffffffffffffffffffffffffff8616155b15612177576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61217f612d5a565b612187612d62565b61218f612d5a565b612197612d5a565b6121a2600087612910565b506000805473ffffffffffffffffffffffffffffffffffffffff808b167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054928a1692909116919091178155612206906276a70090612c3e565b61221462ed4e006001612c3e565b612223630163f5006001612c3e565b6122326301e133806001612c3e565b62278d0060058190556040519081527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e09060200160405180910390a183156122cf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461231381612906565b610da88383612a31565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61234781612906565b60048290556040518281527f410826cbf76d8edeca70493453f5f17fe0c807683c2aab89a4b2b94f686a21dd90602001610f13565b612384612d72565b7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb974896123ae81612906565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc530b67f06e79967fafaa0f1af1af798443e42526f8a0ff054bd2bd075198cf490600090a150565b600061240f61275c565b6124176127ba565b60008281526008602052604090205460ff16612462576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b821580612470575060045483105b156124aa576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60006002600081546124bb9061362d565b918290555073ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260408120805492935086929091906124fa908490613607565b9250508190555083600360008282546125139190613607565b90915550600090506125258442613607565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090209091506125579083612bac565b506040805160808101825286815267ffffffffffffffff4281166020808401918252858316848601908152600060608601818152898252600990935286902094518555915160019485018054935192518516700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff93861668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516929095169190911792909217169190911790555490517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b50506000546126d1925073ffffffffffffffffffffffffffffffffffffffff169050333088612dcd565b6040805183815260208101879052428183015260608101839052905173ffffffffffffffffffffffffffffffffffffffff8816917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a250905061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127b8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612835576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000818152600183016020526040812054151561083a565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a8383612e13565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610e0791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612efc565b610a398133612fa0565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129c33390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610824565b6000915050610824565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610824565b612b17612d72565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b600061083a838361304b565b6060600061083a8361309a565b612bcd61275c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b81565b60008281526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091558251858152918201527f4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e8019101610f13565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612cd89190613756565b600060405180830381855af49150503d8060008114612d13576040519150601f19603f3d011682016040523d82523d6000602084013e612d18565b606091505b5091509150612d288583836130f6565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610824565b6127b8613185565b612d6a613185565b6127b86131c3565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127b8576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610da89186918216906323b872dd906084016128bf565b60008181526001830160205260408120548015612a27576000612e3760018361361a565b8554909150600090612e4b9060019061361a565b9050808214612eb0576000866000018281548110612e6b57612e6b613694565b9060005260206000200154905080876000018481548110612e8e57612e8e613694565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ec157612ec1613772565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610824565b600080602060008451602086016000885af180612f1f576040513d6000823e3d81fd5b50506000513d91508115612f37578060011415612f51565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610da8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16613047576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161095b565b5050565b600081815260018301602052604081205461309257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610824565b506000610824565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ea57602002820191906000526020600020905b8154815260200190600101908083116130d6575b50505050509050919050565b60608261310b57613106826131cb565b61083a565b815115801561312f575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561317e576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b508061083a565b61318d61320d565b6127b8576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612853613185565b8051156131db5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613217612d31565b5468010000000000000000900460ff16919050565b60006020828403121561323e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461083a57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461329257600080fd5b919050565b6000806000606084860312156132ac57600080fd5b6132b58461326e565b95602085013595506040909401359392505050565b6000602082840312156132dc57600080fd5b5035919050565b600080604083850312156132f657600080fd5b823591506133066020840161326e565b90509250929050565b60006020828403121561332157600080fd5b61083a8261326e565b60008060006060848603121561333f57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561336957600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156133fe578351805184526020810151602085015267ffffffffffffffff604082015116604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff60808201511660808501525060a083019250602084019350600181019050613392565b509095945050505050565b6000806040838503121561341c57600080fd5b823591506020830135801515811461343357600080fd5b809150509250929050565b6000806020838503121561345157600080fd5b823567ffffffffffffffff81111561346857600080fd5b8301601f8101851361347957600080fd5b803567ffffffffffffffff81111561349057600080fd5b8560208260051b84010111156134a557600080fd5b6020919091019590945092505050565b60005b838110156134d05781810151838201526020016134b8565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613589577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180518087526135488160208901602085016134b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101613501565b50929695505050505050565b6000806000606084860312156135aa57600080fd5b6135b38461326e565b92506135c16020850161326e565b91506135cf6040850161326e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610824576108246135d8565b81810381811115610824576108246135d8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361365e5761365e6135d8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136f857600080fd5b83018035915067ffffffffffffffff82111561371357600080fd5b60200191503681900382131561372857600080fd5b9250929050565b82848237600083820160008152835161374c8183602088016134b5565b0195945050505050565b600082516137688184602087016134b5565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122049cea8e2efc1a2573d70a9ac45ffe0e8f50c0fdc6ecefbb9b8665f7635a4004364736f6c634300081e0033","output":"0x608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063842e29811161017b578063c0c53b8b116100d8578063e71180ae1161008c578063f188768411610071578063f188768414610759578063f2c3999214610762578063fb1bb9de1461076a57600080fd5b8063e71180ae1461073c578063eb4af0451461074657600080fd5b8063ca7c0af1116100bd578063ca7c0af1146106f5578063d547741f14610702578063e63ab1e91461071557600080fd5b8063c0c53b8b146106d9578063c1292cc3146106ec57600080fd5b80639e2c8a5b1161012f578063a217fddf11610114578063a217fddf1461069e578063ac9650d8146106a6578063b2fb30cb146106c657600080fd5b80639e2c8a5b1461066b5780639ed8e92d1461067e57600080fd5b806391d148541161016057806391d14854146105cc57806396dc1dc1146106315780639d28b5061461064457600080fd5b8063842e2981146105a45780638456cb59146105c457600080fd5b80633cbfe3a1116102295780635c975abb116101dd5780637488df89116101c25780637488df89146105615780637b0472f014610588578063817b1cd21461059b57600080fd5b80635c975abb146105245780637153fc331461054e57600080fd5b806344feed291161020e57806344feed29146103df5780634e533572146103f257806351ed6a30146104df57600080fd5b80633cbfe3a1146103ce5780633f4ba83a146103d757600080fd5b80632e17de78116102805780632f2ff15d116102655780632f2ff15d1461038857806336568abe1461039b5780633a107739146103ae57600080fd5b80632e17de78146103605780632e1a7d4d1461037557600080fd5b806301ffc9a7146102b25780630c51b88f146102da578063248a9ca3146102fb5780632da6fea61461033d575b600080fd5b6102c56102c036600461322c565b610791565b60405190151581526020015b60405180910390f35b6102ed6102e8366004613297565b61082a565b6040519081526020016102d1565b6102ed6103093660046132ca565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102c561034b3660046132ca565b60086020526000908152604090205460ff1681565b61037361036e3660046132ca565b610841565b005b6103736103833660046132ca565b610a3c565b6103736103963660046132e3565b610d64565b6103736103a93660046132e3565b610dae565b6102ed6103bc36600461330f565b60076020526000908152604090205481565b6102ed60055481565b610373610e0c565b6103736103ed3660046132ca565b610e7b565b6104896104003660046132ca565b60408051608080820183526000808352602080840182905283850182905260609384018290529481526009855283902083519182018452805482526001015467ffffffffffffffff808216958301959095526801000000000000000081048516938201939093527001000000000000000000000000000000009092049092169181019190915290565b6040516102d1919060006080820190508251825267ffffffffffffffff602084015116602083015267ffffffffffffffff604084015116604083015267ffffffffffffffff606084015116606083015292915050565b6000546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166102c5565b6102ed61055c36600461332a565b610f1f565b6102ed7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb9748981565b6102ed610596366004613356565b61135c565b6102ed60035481565b6105b76105b236600461330f565b611369565b6040516102d19190613378565b6103736115c2565b6102c56105da3660046132e3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61037361063f366004613409565b6115f4565b6102ed7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d81565b6102ed610679366004613356565b611628565b6001546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6102ed600081565b6106b96106b436600461343e565b611a52565b6040516102d191906134d9565b6102ed6106d4366004613356565b611b3a565b6103736106e7366004613595565b611ff0565b6102ed60025481565b6006546102c59060ff1681565b6103736107103660046132e3565b6122d9565b6102ed7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102ed62ed4e0081565b6103736107543660046132ca565b61231d565b6102ed60045481565b61037361237c565b6102ed7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610837848484612405565b90505b9392505050565b61084961275c565b6108516127ba565b6000818152600960205260409020600181015468010000000000000000900467ffffffffffffffff164210156108b3576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561090d576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610926908361283b565b610964576040517fcda6dd47000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6005546109719042613607565b6001820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff938416810291909117918290558354604080518781526020810192909252919092049092169181019190915233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a250610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b610a446127ba565b60065460ff16610a757fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1690565b8015610a7f575080155b15610ab6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff8082169383019390935268010000000000000000810483169382019390935270010000000000000000000000000000000090920416606082015281610b8157806060015167ffffffffffffffff16421080610b4a5750606081015167ffffffffffffffff16155b15610b81576040517f6f75487700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610b9a9084612879565b610bd3576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b600083815260096020908152604080832083815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055835133845260079092528220805491929091610c2d90849061361a565b9091555050805160038054600090610c4690849061361a565b90915550506001546040517f42966c680000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b50508251600054610cf6935073ffffffffffffffffffffffffffffffffffffffff1691503390612885565b805160405133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56891610d3191878252602082015260400190565b60405180910390a25050610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d9e81612906565b610da88383612910565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610dfd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e078282612a31565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a610e3681612906565b60065460ff1615610e73576040517f19aad37100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a39612b0f565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d610ea581612906565b62ed4e00821115610ee2576040517f6e49f34f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e0906020015b60405180910390a15050565b6000610f2961275c565b610f316127ba565b60008381526008602052604090205460ff16610f7c576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b6000848152600960205260409020821580610f98575060045483105b80610fa4575080548310155b15610fde576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b336000908152600a60205260409020610ff7908661283b565b611030576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810186905260240161095b565b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561108a576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015468010000000000000000900467ffffffffffffffff164210156110de576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160000160008282546110f2919061361a565b92505081905550600060026000815461110a9061362d565b9182905550336000908152600a6020526040902090915061112b9082612bac565b5060405180608001604052808581526020014267ffffffffffffffff16815260200186426111599190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505083546040513393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92506112d6918a8252602082015260400190565b60405180910390a2337f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28282864261130d8a82613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a338484612405565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604081206060919061139b90612bb8565b90506000815167ffffffffffffffff8111156113b9576113b9613665565b60405190808252806020026020018201604052801561143057816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113d75790505b50905060005b82518110156115ba576040518060a0016040528084838151811061145c5761145c613694565b602002602001015181526020016009600086858151811061147f5761147f613694565b60200260200101518152602001908152602001600020600001548152602001600960008685815181106114b4576114b4613694565b6020026020010151815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061150757611507613694565b6020026020010151815260200190815260200160002060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061155a5761155a613694565b6020026020010151815260200190815260200160002060010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168152508282815181106115a7576115a7613694565b6020908102919091010152600101611436565b509392505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6115ec81612906565b610a39612bc5565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61161e81612906565b610e078383612c3e565b600061163261275c565b61163a6127ba565b6000838152600960205260409020600181015468010000000000000000900467ffffffffffffffff1642101561169c576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff16156116f6576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a6020526040902061170f908561283b565b611748576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810185905260240161095b565b805460009061175890859061361a565b84835560055490915061176b9042613607565b8260010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550806000036117cf576040517f9d4212c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600081546117e09061362d565b9182905550336000908152600a602052604090209091506118019082612bac565b506040805160808101825283815260018581015467ffffffffffffffff8082166020808601918252680100000000000000009384900483168688019081526000606088018181528a825260099093528890209651875591519585018054925191518416700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9285169095027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931696909316959095171793909316179091555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561194257600080fd5b505af1158015611956573d6000803e3d6000fd5b505050506001830154604080518881526020810188905270010000000000000000000000000000000090920467ffffffffffffffff169082015233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a26001830154604080518381526020810185905267ffffffffffffffff808416828401526801000000000000000090930490921660608301525133917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a29250505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040805160008152602081019091526060908267ffffffffffffffff811115611a7d57611a7d613665565b604051908082528060200260200182016040528015611ab057816020015b6060815260200190600190039081611a9b5790505b50915060005b83811015611b3257611b0d30868684818110611ad457611ad4613694565b9050602002810190611ae691906136c3565b85604051602001611af99392919061372f565b604051602081830303815290604052612cae565b838281518110611b1f57611b1f613694565b6020908102919091010152600101611ab6565b505092915050565b6000611b4461275c565b611b4c6127ba565b60008281526008602052604090205460ff16611b97576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b336000908152600a60205260409020611bb09084612879565b611be9576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60008381526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff80821693830193909352680100000000000000008104831693820193909352700100000000000000000000000000000000909204166060820181905215611c89576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015167ffffffffffffffff16421015611cd1576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084815260096020526040812081815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055600280548290611d1a9061362d565b9182905550336000908152600a60205260409020909150611d3b9082612bac565b506040518060800160405280836000015181526020014267ffffffffffffffff1681526020018542611d6d9190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f42966c680000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611e9157600080fd5b505af1158015611ea5573d6000803e3d6000fd5b50506001546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b505060408051888152600060208201523393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92500160405180910390a2815133907f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28290839042611fa18982613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000611ffa612d31565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156120275750825b905060008267ffffffffffffffff1660011480156120445750303b155b905081158015612052575080155b15612089576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156120ea5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff88161580612121575073ffffffffffffffffffffffffffffffffffffffff8716155b80612140575073ffffffffffffffffffffffffffffffffffffffff8616155b15612177576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61217f612d5a565b612187612d62565b61218f612d5a565b612197612d5a565b6121a2600087612910565b506000805473ffffffffffffffffffffffffffffffffffffffff808b167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054928a1692909116919091178155612206906276a70090612c3e565b61221462ed4e006001612c3e565b612223630163f5006001612c3e565b6122326301e133806001612c3e565b62278d0060058190556040519081527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e09060200160405180910390a183156122cf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461231381612906565b610da88383612a31565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61234781612906565b60048290556040518281527f410826cbf76d8edeca70493453f5f17fe0c807683c2aab89a4b2b94f686a21dd90602001610f13565b612384612d72565b7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb974896123ae81612906565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc530b67f06e79967fafaa0f1af1af798443e42526f8a0ff054bd2bd075198cf490600090a150565b600061240f61275c565b6124176127ba565b60008281526008602052604090205460ff16612462576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b821580612470575060045483105b156124aa576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60006002600081546124bb9061362d565b918290555073ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260408120805492935086929091906124fa908490613607565b9250508190555083600360008282546125139190613607565b90915550600090506125258442613607565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090209091506125579083612bac565b506040805160808101825286815267ffffffffffffffff4281166020808401918252858316848601908152600060608601818152898252600990935286902094518555915160019485018054935192518516700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff93861668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516929095169190911792909217169190911790555490517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b50506000546126d1925073ffffffffffffffffffffffffffffffffffffffff169050333088612dcd565b6040805183815260208101879052428183015260608101839052905173ffffffffffffffffffffffffffffffffffffffff8816917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a250905061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127b8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612835576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000818152600183016020526040812054151561083a565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a8383612e13565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610e0791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612efc565b610a398133612fa0565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129c33390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610824565b6000915050610824565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610824565b612b17612d72565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b600061083a838361304b565b6060600061083a8361309a565b612bcd61275c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b81565b60008281526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091558251858152918201527f4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e8019101610f13565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612cd89190613756565b600060405180830381855af49150503d8060008114612d13576040519150601f19603f3d011682016040523d82523d6000602084013e612d18565b606091505b5091509150612d288583836130f6565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610824565b6127b8613185565b612d6a613185565b6127b86131c3565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127b8576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610da89186918216906323b872dd906084016128bf565b60008181526001830160205260408120548015612a27576000612e3760018361361a565b8554909150600090612e4b9060019061361a565b9050808214612eb0576000866000018281548110612e6b57612e6b613694565b9060005260206000200154905080876000018481548110612e8e57612e8e613694565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ec157612ec1613772565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610824565b600080602060008451602086016000885af180612f1f576040513d6000823e3d81fd5b50506000513d91508115612f37578060011415612f51565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610da8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16613047576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161095b565b5050565b600081815260018301602052604081205461309257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610824565b506000610824565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ea57602002820191906000526020600020905b8154815260200190600101908083116130d6575b50505050509050919050565b60608261310b57613106826131cb565b61083a565b815115801561312f575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561317e576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b508061083a565b61318d61320d565b6127b8576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612853613185565b8051156131db5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613217612d31565b5468010000000000000000900460ff16919050565b60006020828403121561323e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461083a57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461329257600080fd5b919050565b6000806000606084860312156132ac57600080fd5b6132b58461326e565b95602085013595506040909401359392505050565b6000602082840312156132dc57600080fd5b5035919050565b600080604083850312156132f657600080fd5b823591506133066020840161326e565b90509250929050565b60006020828403121561332157600080fd5b61083a8261326e565b60008060006060848603121561333f57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561336957600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156133fe578351805184526020810151602085015267ffffffffffffffff604082015116604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff60808201511660808501525060a083019250602084019350600181019050613392565b509095945050505050565b6000806040838503121561341c57600080fd5b823591506020830135801515811461343357600080fd5b809150509250929050565b6000806020838503121561345157600080fd5b823567ffffffffffffffff81111561346857600080fd5b8301601f8101851361347957600080fd5b803567ffffffffffffffff81111561349057600080fd5b8560208260051b84010111156134a557600080fd5b6020919091019590945092505050565b60005b838110156134d05781810151838201526020016134b8565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613589577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180518087526135488160208901602085016134b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101613501565b50929695505050505050565b6000806000606084860312156135aa57600080fd5b6135b38461326e565b92506135c16020850161326e565b91506135cf6040850161326e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610824576108246135d8565b81810381811115610824576108246135d8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361365e5761365e6135d8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136f857600080fd5b83018035915067ffffffffffffffff82111561371357600080fd5b60200191503681900382131561372857600080fd5b9250929050565b82848237600083820160008152835161374c8183602088016134b5565b0195945050505050565b600082516137688184602087016134b5565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122049cea8e2efc1a2573d70a9ac45ffe0e8f50c0fdc6ecefbb9b8665f7635a4004364736f6c634300081e0033","gas_used":2885647,"gas_limit":2885647,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063842e29811161017b578063c0c53b8b116100d8578063e71180ae1161008c578063f188768411610071578063f188768414610759578063f2c3999214610762578063fb1bb9de1461076a57600080fd5b8063e71180ae1461073c578063eb4af0451461074657600080fd5b8063ca7c0af1116100bd578063ca7c0af1146106f5578063d547741f14610702578063e63ab1e91461071557600080fd5b8063c0c53b8b146106d9578063c1292cc3146106ec57600080fd5b80639e2c8a5b1161012f578063a217fddf11610114578063a217fddf1461069e578063ac9650d8146106a6578063b2fb30cb146106c657600080fd5b80639e2c8a5b1461066b5780639ed8e92d1461067e57600080fd5b806391d148541161016057806391d14854146105cc57806396dc1dc1146106315780639d28b5061461064457600080fd5b8063842e2981146105a45780638456cb59146105c457600080fd5b80633cbfe3a1116102295780635c975abb116101dd5780637488df89116101c25780637488df89146105615780637b0472f014610588578063817b1cd21461059b57600080fd5b80635c975abb146105245780637153fc331461054e57600080fd5b806344feed291161020e57806344feed29146103df5780634e533572146103f257806351ed6a30146104df57600080fd5b80633cbfe3a1146103ce5780633f4ba83a146103d757600080fd5b80632e17de78116102805780632f2ff15d116102655780632f2ff15d1461038857806336568abe1461039b5780633a107739146103ae57600080fd5b80632e17de78146103605780632e1a7d4d1461037557600080fd5b806301ffc9a7146102b25780630c51b88f146102da578063248a9ca3146102fb5780632da6fea61461033d575b600080fd5b6102c56102c036600461322c565b610791565b60405190151581526020015b60405180910390f35b6102ed6102e8366004613297565b61082a565b6040519081526020016102d1565b6102ed6103093660046132ca565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102c561034b3660046132ca565b60086020526000908152604090205460ff1681565b61037361036e3660046132ca565b610841565b005b6103736103833660046132ca565b610a3c565b6103736103963660046132e3565b610d64565b6103736103a93660046132e3565b610dae565b6102ed6103bc36600461330f565b60076020526000908152604090205481565b6102ed60055481565b610373610e0c565b6103736103ed3660046132ca565b610e7b565b6104896104003660046132ca565b60408051608080820183526000808352602080840182905283850182905260609384018290529481526009855283902083519182018452805482526001015467ffffffffffffffff808216958301959095526801000000000000000081048516938201939093527001000000000000000000000000000000009092049092169181019190915290565b6040516102d1919060006080820190508251825267ffffffffffffffff602084015116602083015267ffffffffffffffff604084015116604083015267ffffffffffffffff606084015116606083015292915050565b6000546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166102c5565b6102ed61055c36600461332a565b610f1f565b6102ed7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb9748981565b6102ed610596366004613356565b61135c565b6102ed60035481565b6105b76105b236600461330f565b611369565b6040516102d19190613378565b6103736115c2565b6102c56105da3660046132e3565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61037361063f366004613409565b6115f4565b6102ed7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d81565b6102ed610679366004613356565b611628565b6001546104ff9073ffffffffffffffffffffffffffffffffffffffff1681565b6102ed600081565b6106b96106b436600461343e565b611a52565b6040516102d191906134d9565b6102ed6106d4366004613356565b611b3a565b6103736106e7366004613595565b611ff0565b6102ed60025481565b6006546102c59060ff1681565b6103736107103660046132e3565b6122d9565b6102ed7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102ed62ed4e0081565b6103736107543660046132ca565b61231d565b6102ed60045481565b61037361237c565b6102ed7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061082457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000610837848484612405565b90505b9392505050565b61084961275c565b6108516127ba565b6000818152600960205260409020600181015468010000000000000000900467ffffffffffffffff164210156108b3576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561090d576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610926908361283b565b610964576040517fcda6dd47000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b6005546109719042613607565b6001820180547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff938416810291909117918290558354604080518781526020810192909252919092049092169181019190915233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a250610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50565b610a446127ba565b60065460ff16610a757fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1690565b8015610a7f575080155b15610ab6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff8082169383019390935268010000000000000000810483169382019390935270010000000000000000000000000000000090920416606082015281610b8157806060015167ffffffffffffffff16421080610b4a5750606081015167ffffffffffffffff16155b15610b81576040517f6f75487700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020610b9a9084612879565b610bd3576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b600083815260096020908152604080832083815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055835133845260079092528220805491929091610c2d90849061361a565b9091555050805160038054600090610c4690849061361a565b90915550506001546040517f42966c680000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b50508251600054610cf6935073ffffffffffffffffffffffffffffffffffffffff1691503390612885565b805160405133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56891610d3191878252602082015260400190565b60405180910390a25050610a3960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d9e81612906565b610da88383612910565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610dfd576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e078282612a31565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a610e3681612906565b60065460ff1615610e73576040517f19aad37100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a39612b0f565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d610ea581612906565b62ed4e00821115610ee2576040517f6e49f34f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058290556040518281527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e0906020015b60405180910390a15050565b6000610f2961275c565b610f316127ba565b60008381526008602052604090205460ff16610f7c576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b6000848152600960205260409020821580610f98575060045483105b80610fa4575080548310155b15610fde576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b336000908152600a60205260409020610ff7908661283b565b611030576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810186905260240161095b565b6001810154700100000000000000000000000000000000900467ffffffffffffffff161561108a576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015468010000000000000000900467ffffffffffffffff164210156110de576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828160000160008282546110f2919061361a565b92505081905550600060026000815461110a9061362d565b9182905550336000908152600a6020526040902090915061112b9082612bac565b5060405180608001604052808581526020014267ffffffffffffffff16815260200186426111599190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561128357600080fd5b505af1158015611297573d6000803e3d6000fd5b505083546040513393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92506112d6918a8252602082015260400190565b60405180910390a2337f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28282864261130d8a82613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a338484612405565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600a602052604081206060919061139b90612bb8565b90506000815167ffffffffffffffff8111156113b9576113b9613665565b60405190808252806020026020018201604052801561143057816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113d75790505b50905060005b82518110156115ba576040518060a0016040528084838151811061145c5761145c613694565b602002602001015181526020016009600086858151811061147f5761147f613694565b60200260200101518152602001908152602001600020600001548152602001600960008685815181106114b4576114b4613694565b6020026020010151815260200190815260200160002060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061150757611507613694565b6020026020010151815260200190815260200160002060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1681526020016009600086858151811061155a5761155a613694565b6020026020010151815260200190815260200160002060010160109054906101000a900467ffffffffffffffff1667ffffffffffffffff168152508282815181106115a7576115a7613694565b6020908102919091010152600101611436565b509392505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6115ec81612906565b610a39612bc5565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61161e81612906565b610e078383612c3e565b600061163261275c565b61163a6127ba565b6000838152600960205260409020600181015468010000000000000000900467ffffffffffffffff1642101561169c576040517fe94ab70100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810154700100000000000000000000000000000000900467ffffffffffffffff16156116f6576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a6020526040902061170f908561283b565b611748576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810185905260240161095b565b805460009061175890859061361a565b84835560055490915061176b9042613607565b8260010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550806000036117cf576040517f9d4212c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002600081546117e09061362d565b9182905550336000908152600a602052604090209091506118019082612bac565b506040805160808101825283815260018581015467ffffffffffffffff8082166020808601918252680100000000000000009384900483168688019081526000606088018181528a825260099093528890209651875591519585018054925191518416700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff9285169095027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931696909316959095171793909316179091555490517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561194257600080fd5b505af1158015611956573d6000803e3d6000fd5b505050506001830154604080518881526020810188905270010000000000000000000000000000000090920467ffffffffffffffff169082015233907f13b538773da652bc6ace9e45c3362bde5fa0a147319d25f19f9a3abe1b76e9a29060600160405180910390a26001830154604080518381526020810185905267ffffffffffffffff808416828401526801000000000000000090930490921660608301525133917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a29250505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6040805160008152602081019091526060908267ffffffffffffffff811115611a7d57611a7d613665565b604051908082528060200260200182016040528015611ab057816020015b6060815260200190600190039081611a9b5790505b50915060005b83811015611b3257611b0d30868684818110611ad457611ad4613694565b9050602002810190611ae691906136c3565b85604051602001611af99392919061372f565b604051602081830303815290604052612cae565b838281518110611b1f57611b1f613694565b6020908102919091010152600101611ab6565b505092915050565b6000611b4461275c565b611b4c6127ba565b60008281526008602052604090205460ff16611b97576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b336000908152600a60205260409020611bb09084612879565b611be9576040517fcda6dd470000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60008381526009602090815260409182902082516080810184528154815260019091015467ffffffffffffffff80821693830193909352680100000000000000008104831693820193909352700100000000000000000000000000000000909204166060820181905215611c89576040517fd831531200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015167ffffffffffffffff16421015611cd1576040517fb9426f4100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084815260096020526040812081815560010180547fffffffffffffffff000000000000000000000000000000000000000000000000169055600280548290611d1a9061362d565b9182905550336000908152600a60205260409020909150611d3b9082612bac565b506040518060800160405280836000015181526020014267ffffffffffffffff1681526020018542611d6d9190613607565b67ffffffffffffffff90811682526000602092830181905284815260098352604090819020845181559284015160019384018054868401516060909701519285167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909116176801000000000000000096851696909602959095177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff167001000000000000000000000000000000009190931602919091179092555490517f42966c680000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611e9157600080fd5b505af1158015611ea5573d6000803e3d6000fd5b50506001546040517f40c10f190000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff90911692506340c10f199150604401600060405180830381600087803b158015611f1b57600080fd5b505af1158015611f2f573d6000803e3d6000fd5b505060408051888152600060208201523393507f732bb053e7a01aa5bdddd99623a4babbb36177debb85cff06592a420c4270a7d92500160405180910390a2815133907f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde28290839042611fa18982613607565b60408051948552602085019390935291830152606082015260800160405180910390a291505061082460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000611ffa612d31565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156120275750825b905060008267ffffffffffffffff1660011480156120445750303b155b905081158015612052575080155b15612089576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156120ea5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff88161580612121575073ffffffffffffffffffffffffffffffffffffffff8716155b80612140575073ffffffffffffffffffffffffffffffffffffffff8616155b15612177576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61217f612d5a565b612187612d62565b61218f612d5a565b612197612d5a565b6121a2600087612910565b506000805473ffffffffffffffffffffffffffffffffffffffff808b167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054928a1692909116919091178155612206906276a70090612c3e565b61221462ed4e006001612c3e565b612223630163f5006001612c3e565b6122326301e133806001612c3e565b62278d0060058190556040519081527f1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e09060200160405180910390a183156122cf5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461231381612906565b610da88383612a31565b7f8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d61234781612906565b60048290556040518281527f410826cbf76d8edeca70493453f5f17fe0c807683c2aab89a4b2b94f686a21dd90602001610f13565b612384612d72565b7fdc882e12f5b8cf973047e20ece7167f89c4c0d401afaebea3031a0b4acb974896123ae81612906565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517fc530b67f06e79967fafaa0f1af1af798443e42526f8a0ff054bd2bd075198cf490600090a150565b600061240f61275c565b6124176127ba565b60008281526008602052604090205460ff16612462576040517ff79d159c0000000000000000000000000000000000000000000000000000000081526004810183905260240161095b565b821580612470575060045483105b156124aa576040517f36337fc10000000000000000000000000000000000000000000000000000000081526004810184905260240161095b565b60006002600081546124bb9061362d565b918290555073ffffffffffffffffffffffffffffffffffffffff86166000908152600760205260408120805492935086929091906124fa908490613607565b9250508190555083600360008282546125139190613607565b90915550600090506125258442613607565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090209091506125579083612bac565b506040805160808101825286815267ffffffffffffffff4281166020808401918252858316848601908152600060608601818152898252600990935286902094518555915160019485018054935192518516700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff93861668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516929095169190911792909217169190911790555490517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015260248201859052909116906340c10f1990604401600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b50506000546126d1925073ffffffffffffffffffffffffffffffffffffffff169050333088612dcd565b6040805183815260208101879052428183015260608101839052905173ffffffffffffffffffffffffffffffffffffffff8816917f2720efa4b2dd4f3f8a347da3cbd290a522e9432da9072c5b8e6300496fdde282919081900360800190a250905061083a60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127b8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612835576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000818152600183016020526040812054151561083a565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061083a8383612e13565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610e0791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612efc565b610a398133612fa0565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129c33390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610824565b6000915050610824565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615612a275760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610824565b612b17612d72565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b600061083a838361304b565b6060600061083a8361309a565b612bcd61275c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612b81565b60008281526008602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168415159081179091558251858152918201527f4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e8019101610f13565b60606000808473ffffffffffffffffffffffffffffffffffffffff1684604051612cd89190613756565b600060405180830381855af49150503d8060008114612d13576040519150601f19603f3d011682016040523d82523d6000602084013e612d18565b606091505b5091509150612d288583836130f6565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610824565b6127b8613185565b612d6a613185565b6127b86131c3565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127b8576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052610da89186918216906323b872dd906084016128bf565b60008181526001830160205260408120548015612a27576000612e3760018361361a565b8554909150600090612e4b9060019061361a565b9050808214612eb0576000866000018281548110612e6b57612e6b613694565b9060005260206000200154905080876000018481548110612e8e57612e8e613694565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ec157612ec1613772565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610824565b600080602060008451602086016000885af180612f1f576040513d6000823e3d81fd5b50506000513d91508115612f37578060011415612f51565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610da8576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16613047576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024810183905260440161095b565b5050565b600081815260018301602052604081205461309257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610824565b506000610824565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130ea57602002820191906000526020600020905b8154815260200190600101908083116130d6575b50505050509050919050565b60608261310b57613106826131cb565b61083a565b815115801561312f575073ffffffffffffffffffffffffffffffffffffffff84163b155b1561317e576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161095b565b508061083a565b61318d61320d565b6127b8576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612853613185565b8051156131db5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613217612d31565b5468010000000000000000900460ff16919050565b60006020828403121561323e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461083a57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461329257600080fd5b919050565b6000806000606084860312156132ac57600080fd5b6132b58461326e565b95602085013595506040909401359392505050565b6000602082840312156132dc57600080fd5b5035919050565b600080604083850312156132f657600080fd5b823591506133066020840161326e565b90509250929050565b60006020828403121561332157600080fd5b61083a8261326e565b60008060006060848603121561333f57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561336957600080fd5b50508035926020909101359150565b602080825282518282018190526000918401906040840190835b818110156133fe578351805184526020810151602085015267ffffffffffffffff604082015116604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff60808201511660808501525060a083019250602084019350600181019050613392565b509095945050505050565b6000806040838503121561341c57600080fd5b823591506020830135801515811461343357600080fd5b809150509250929050565b6000806020838503121561345157600080fd5b823567ffffffffffffffff81111561346857600080fd5b8301601f8101851361347957600080fd5b803567ffffffffffffffff81111561349057600080fd5b8560208260051b84010111156134a557600080fd5b6020919091019590945092505050565b60005b838110156134d05781810151838201526020016134b8565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015613589577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815180518087526135488160208901602085016134b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101613501565b50929695505050505050565b6000806000606084860312156135aa57600080fd5b6135b38461326e565b92506135c16020850161326e565b91506135cf6040850161326e565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610824576108246135d8565b81810381811115610824576108246135d8565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361365e5761365e6135d8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136f857600080fd5b83018035915067ffffffffffffffff82111561371357600080fd5b60200191503681900382131561372857600080fd5b9250929050565b82848237600083820160008152835161374c8183602088016134b5565b0195945050505050565b600082516137688184602087016134b5565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122049cea8e2efc1a2573d70a9ac45ffe0e8f50c0fdc6ecefbb9b8665f7635a4004364736f6c634300081e0033","nonce":13,"gas_used":3145863},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x300087","logs":[{"address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000200000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000020000000000000000000000"},"block_hash":"0xdd4338b2fb9d7fcb4cf96f41b8f7ff6676801bdacc5b63dc3601f4c73ad835ba","block_number":14},{"info":{"transaction_hash":"0xeaa80bb90bd6387f44ad09e0049e519dac0b7f3a32311660fc9f8352563170b4","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5060408051808201825260098082526845524332304d6f636b60b81b60208084018290528451808601909552918452908301529060036100508382610104565b50600461005d8282610104565b5050506101c2565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061008f57607f821691505b6020821081036100af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156100ff57806000526020600020601f840160051c810160208510156100dc5750805b601f840160051c820191505b818110156100fc57600081556001016100e8565b50505b505050565b81516001600160401b0381111561011d5761011d610065565b6101318161012b845461007b565b846100b5565b6020601f821160018114610165576000831561014d5750848201515b600019600385901b1c1916600184901b1784556100fc565b600084815260208120601f198516915b828110156101955787850151825560209485019460019092019101610175565b50848210156101b35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b610a18806101d16000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806340c10f1911610081578063a0712d681161005b578063a0712d6814610196578063a9059cbb146101a9578063dd62ed3e146101bc57600080fd5b806340c10f191461014357806370a082311461015857806395d89b411461018e57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610202565b6040516100e391906107eb565b60405180910390f35b6100ff6100fa366004610880565b610294565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046108aa565b6102ae565b604051601281526020016100e3565b610156610151366004610880565b6102d2565b005b6101136101663660046108e7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66102e0565b6101566101a4366004610909565b6102ef565b6100ff6101b7366004610880565b6102fc565b6101136101ca366004610922565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461021190610955565b80601f016020809104026020016040519081016040528092919081815260200182805461023d90610955565b801561028a5780601f1061025f5761010080835404028352916020019161028a565b820191906000526020600020905b81548152906001019060200180831161026d57829003601f168201915b5050505050905090565b6000336102a281858561030a565b60019150505b92915050565b6000336102bc85828561031c565b6102c78585856103f1565b506001949350505050565b6102dc828261049c565b5050565b60606004805461021190610955565b6102f9338261049c565b50565b6000336102a28185856103f1565b61031783838360016104f8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156103eb57818110156103dc576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103eb848484840360006104f8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610441576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8216610491576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b610317838383610640565b73ffffffffffffffffffffffffffffffffffffffff82166104ec576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b6102dc60008383610640565b73ffffffffffffffffffffffffffffffffffffffff8416610548576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8316610598576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103eb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161063291815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661067857806002600082825461066d91906109a8565b9091555061072a9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106fe576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103d3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166107535760028054829003905561077f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107de91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561081957602081860181015160408684010152016107fc565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087b57600080fd5b919050565b6000806040838503121561089357600080fd5b61089c83610857565b946020939093013593505050565b6000806000606084860312156108bf57600080fd5b6108c884610857565b92506108d660208501610857565b929592945050506040919091013590565b6000602082840312156108f957600080fd5b61090282610857565b9392505050565b60006020828403121561091b57600080fd5b5035919050565b6000806040838503121561093557600080fd5b61093e83610857565b915061094c60208401610857565b90509250929050565b600181811c9082168061096957607f821691505b6020821081036109a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212208d04eeb280ac3a47c96b066f674e96782d06d1a45565a7eb2fbd085935abec0164736f6c634300081e0033","output":"0x608060405234801561001057600080fd5b50600436106100c95760003560e01c806340c10f1911610081578063a0712d681161005b578063a0712d6814610196578063a9059cbb146101a9578063dd62ed3e146101bc57600080fd5b806340c10f191461014357806370a082311461015857806395d89b411461018e57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610202565b6040516100e391906107eb565b60405180910390f35b6100ff6100fa366004610880565b610294565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046108aa565b6102ae565b604051601281526020016100e3565b610156610151366004610880565b6102d2565b005b6101136101663660046108e7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66102e0565b6101566101a4366004610909565b6102ef565b6100ff6101b7366004610880565b6102fc565b6101136101ca366004610922565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461021190610955565b80601f016020809104026020016040519081016040528092919081815260200182805461023d90610955565b801561028a5780601f1061025f5761010080835404028352916020019161028a565b820191906000526020600020905b81548152906001019060200180831161026d57829003601f168201915b5050505050905090565b6000336102a281858561030a565b60019150505b92915050565b6000336102bc85828561031c565b6102c78585856103f1565b506001949350505050565b6102dc828261049c565b5050565b60606004805461021190610955565b6102f9338261049c565b50565b6000336102a28185856103f1565b61031783838360016104f8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156103eb57818110156103dc576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103eb848484840360006104f8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610441576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8216610491576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b610317838383610640565b73ffffffffffffffffffffffffffffffffffffffff82166104ec576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b6102dc60008383610640565b73ffffffffffffffffffffffffffffffffffffffff8416610548576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8316610598576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103eb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161063291815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661067857806002600082825461066d91906109a8565b9091555061072a9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106fe576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103d3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166107535760028054829003905561077f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107de91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561081957602081860181015160408684010152016107fc565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087b57600080fd5b919050565b6000806040838503121561089357600080fd5b61089c83610857565b946020939093013593505050565b6000806000606084860312156108bf57600080fd5b6108c884610857565b92506108d660208501610857565b929592945050506040919091013590565b6000602082840312156108f957600080fd5b61090282610857565b9392505050565b60006020828403121561091b57600080fd5b5035919050565b6000806040838503121561093557600080fd5b61093e83610857565b915061094c60208401610857565b90509250929050565b600181811c9082168061096957607f821691505b6020821081036109a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212208d04eeb280ac3a47c96b066f674e96782d06d1a45565a7eb2fbd085935abec0164736f6c634300081e0033","gas_used":562475,"gas_limit":562475,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106100c95760003560e01c806340c10f1911610081578063a0712d681161005b578063a0712d6814610196578063a9059cbb146101a9578063dd62ed3e146101bc57600080fd5b806340c10f191461014357806370a082311461015857806395d89b411461018e57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610202565b6040516100e391906107eb565b60405180910390f35b6100ff6100fa366004610880565b610294565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046108aa565b6102ae565b604051601281526020016100e3565b610156610151366004610880565b6102d2565b005b6101136101663660046108e7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66102e0565b6101566101a4366004610909565b6102ef565b6100ff6101b7366004610880565b6102fc565b6101136101ca366004610922565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461021190610955565b80601f016020809104026020016040519081016040528092919081815260200182805461023d90610955565b801561028a5780601f1061025f5761010080835404028352916020019161028a565b820191906000526020600020905b81548152906001019060200180831161026d57829003601f168201915b5050505050905090565b6000336102a281858561030a565b60019150505b92915050565b6000336102bc85828561031c565b6102c78585856103f1565b506001949350505050565b6102dc828261049c565b5050565b60606004805461021190610955565b6102f9338261049c565b50565b6000336102a28185856103f1565b61031783838360016104f8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156103eb57818110156103dc576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103eb848484840360006104f8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610441576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8216610491576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b610317838383610640565b73ffffffffffffffffffffffffffffffffffffffff82166104ec576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b6102dc60008383610640565b73ffffffffffffffffffffffffffffffffffffffff8416610548576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff8316610598576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103d3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156103eb578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161063291815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff831661067857806002600082825461066d91906109a8565b9091555061072a9050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156106fe576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103d3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166107535760028054829003905561077f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107de91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561081957602081860181015160408684010152016107fc565b5060006040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087b57600080fd5b919050565b6000806040838503121561089357600080fd5b61089c83610857565b946020939093013593505050565b6000806000606084860312156108bf57600080fd5b6108c884610857565b92506108d660208501610857565b929592945050506040919091013590565b6000602082840312156108f957600080fd5b61090282610857565b9392505050565b60006020828403121561091b57600080fd5b5035919050565b6000806040838503121561093557600080fd5b61093e83610857565b915061094c60208401610857565b90509250929050565b600181811c9082168061096957607f821691505b6020821081036109a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea26469706673582212208d04eeb280ac3a47c96b066f674e96782d06d1a45565a7eb2fbd085935abec0164736f6c634300081e0033","nonce":0,"gas_used":660311},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xa1357","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2cea7f3006eae7dc16b9fd65624343f99c8c3dd8190502b7f50e573fdf046dc4","block_number":1},{"info":{"transaction_hash":"0xa0b9e030bd9d00847f504d54c6b5fde28d5b3b8a4e688f0dffd941e59a2fd9f5","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f19000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000001e7e4171bf4d3a00000","output":"0x","gas_used":12528,"gas_limit":12528,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000001e7e4171bf4d3a00000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":32,"gas_used":34184},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x8588","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x0000000000000000000000000000000000000000000001e7e4171bf4d3a00000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000100000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000200000000000000000000000002000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x2ea2ade84a7b2d0e6dd53d65a81fb66857109a1664abcb4e0b272aa60f297586","block_number":33},{"info":{"transaction_hash":"0xcff5b0f7f954dd4184f3e0263aa03bc577c595caa6c600ab9f13a232a03faa87","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f1900000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d995500000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":8,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000400000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000002000000000000000000000000000000000000042000000000000000000000000040000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x58d715b1290ab5061d0959e315106e85366d6e8945b194ea779cdc1801e65418","block_number":9},{"info":{"transaction_hash":"0xb047ab8585320d25d811c7e9af0aaf7c7cfdfe54800167cfa78f49ee485a63b8","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x9a676e781a523b5d0c0e43731313a708cb607508","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15d8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":34347,"gas_limit":34776,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9a676e781a523b5d0c0e43731313a708cb607508","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15d8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":29423,"gas_limit":29423,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":19,"gas_used":56279},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xdbd7","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x8135f02737a6b32709c1f229001b55183df0d6abcb3022e8bae091ad43fd9e6d","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000900000000000000000000000001000000000000000000000000000200000000000000000000000002000000100000000000000000000000000000000000000000004000000000000000000000000000000000000"},"block_hash":"0x8ee91e9295fdc6ce031670ab3aa472ef94d0c15f90c9c755a50e03beae0f0e86","block_number":20},{"info":{"transaction_hash":"0x164cf74a6aa60d5e31da4b51b318ebcd86c6be76ea11bf45b30a964b5fbe723f","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f190000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":6,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000009965507d1a55bcc2695c58ba16fb37d819b0a4dc"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000008000000000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042800000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x7d210d48f777e2513be370f671303ca8626d74c89ad07d7f83ed703fdf7c4240","block_number":7},{"info":{"transaction_hash":"0x8303404d8e012e921a8f35df4951b91fd40583bd4360f6403ecfba7ec41f1188","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15d65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":101246,"gas_limit":102736,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15d65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":96322,"gas_limit":96322,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":25,"gas_used":123190},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1e136","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000008000000000000000000000000000000001000000000000000000000000000200000000000000000000000002000000100002000000000000000000000000000000000000000000000000400000000000100000000000000"},"block_hash":"0x84f761a3ded837ccc3877974e0a05b94ecfd5ab200e1ff4855fe8ce73ac83357","block_number":26},{"info":{"transaction_hash":"0x6b7ebe88060a523d862c4481d896b8891066a3dd816e31f67e9593622dcff5e3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xf58280d20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":8399,"gas_limit":9884,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","address":"0x4f57f9239efcbf43e5920f579d03b3849c588396","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xf58280d20000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":5730,"gas_limit":7135,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x7a3b4c944febd2c899d89daed15db8d2e0903a535f27b1c5f0ea8f3fd3e137da"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":34,"gas_used":29591},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x7397","logs":[{"address":"0xf3c6cf1c13ecc07204befce90ee14b5bf8bba4c9","topics":["0x7a3b4c944febd2c899d89daed15db8d2e0903a535f27b1c5f0ea8f3fd3e137da"],"data":"0x"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000001000000000000000000100000000000000000000"},"block_hash":"0x1f42d7416b3d9c2156bf88a964c32017490d0c0fa003185c2a0ba91a3c602f86","block_number":35},{"info":{"transaction_hash":"0xaa1c38e8002e874e178d1eb3e3c9a423339b9a346d6fb3741b3c2d17580b181d","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a676e781a523b5d0c0e43731313a708cb607508","traces":[{"parent":null,"children":[1,2],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a676e781a523b5d0c0e43731313a708cb607508","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000","output":"0x608060405261000c61000e565b005b7f0000000000000000000000008e80ffe6dc044f4a766afd6e5a8732fe0977a49373ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","gas_used":942519,"gas_limit":942519,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},"decoded":null,"position":0,"index":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e80ffe6dc044f4a766afd6e5a8732fe0977a493"},"decoded":null,"position":2,"index":9}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Log":1}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x9a676e781a523b5d0c0e43731313a708cb607508","address":"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xc0c53b8b0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3000000000000000000000000a51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":234341,"gas_limit":900506,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":1},{"raw_log":{"topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":2},{"raw_log":{"topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x0000000000000000000000000000000000000000000000000000000000ed4e000000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":3},{"raw_log":{"topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x000000000000000000000000000000000000000000000000000000000163f5000000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":4},{"raw_log":{"topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":5},{"raw_log":{"topics":["0x1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e0"],"data":"0x0000000000000000000000000000000000000000000000000000000000278d00"},"decoded":null,"position":0,"index":6},{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":7}],"ordering":[{"Log":0},{"Log":1},{"Log":2},{"Log":3},{"Log":4},{"Log":5},{"Log":6}]},{"parent":0,"children":[],"idx":2,"trace":{"depth":1,"success":true,"caller":"0x9a676e781a523b5d0c0e43731313a708cb607508","address":"0x8e80ffe6dc044f4a766afd6e5a8732fe0977a493","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033","gas_used":307276,"gas_limit":637457,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":8}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405261000c61000e565b005b7f0000000000000000000000008e80ffe6dc044f4a766afd6e5a8732fe0977a49373ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","nonce":14,"gas_used":1062663},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x103707","logs":[{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000000dcd1bf9a1b36ce34237eeafef220932846bcd82"],"data":"0x"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x000000000000000000000000000000000000000000000000000000000076a7000000000000000000000000000000000000000000000000000000000000000001"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x0000000000000000000000000000000000000000000000000000000000ed4e000000000000000000000000000000000000000000000000000000000000000001"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x000000000000000000000000000000000000000000000000000000000163f5000000000000000000000000000000000000000000000000000000000000000001"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x4926035ecc4bbde074caf7514fbb72ec7b563f8f584c1d9b3a9ccfa99eb6e801"],"data":"0x0000000000000000000000000000000000000000000000000000000001e133800000000000000000000000000000000000000000000000000000000000000001"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x1aa0c308786902b27541d4c0430ec0e1ebed48abf7d56db6bb68ccd0cb63b1e0"],"data":"0x0000000000000000000000000000000000000000000000000000000000278d00"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0x8e80ffe6dc044f4a766afd6e5a8732fe0977a493","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x9a676e781a523b5d0c0e43731313a708cb607508","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e80ffe6dc044f4a766afd6e5a8732fe0977a493"}],"logsBloom":"0x00000004000080000000000000000000400000000000000000800000000000000000000000000000000000000000001000000000000000000000000000000000040000000100000000000000004002000001000000000010200000000000000000000000020000000000000100000808000000800000000000000000000000400000000000000000000800000000000000000000000080000000000000800000000000000000000000000000800000000000000000100000001000000000000000000020200000200000000000000000000000002404000100000000000028000000000000000000000000000400000000000000081000000000000000000000"},"block_hash":"0xb469cfb69eeb63930dd7020c10f4ec545d69539a0b6030c298c412692f024ef0","block_number":15},{"info":{"transaction_hash":"0xfc99058bf40f5032c95e8cffbc3c113406905c1827823bf443eb1421babf290f","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612ee6806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639010d07c1161010f578063c4707a83116100a2578063e63ab1e911610071578063e63ab1e914610563578063fa5c4e991461058a578063fb1bb9de1461059d578063ff7932c0146105c457600080fd5b8063c4707a8314610503578063c4d66de81461052a578063ca15c8731461053d578063d547741f1461055057600080fd5b8063a3246ad3116100de578063a3246ad31461045f578063a9ab67ee1461047f578063ac9650d814610487578063bbca73b3146104a757600080fd5b80639010d07c1461039757806391d14854146103cf5780639e833d7814610434578063a217fddf1461045757600080fd5b80633f4ba83a116101875780637261fefb116101565780637261fefb146103545780637fc46a44146103675780638456cb591461037a5780638b67cb391461038257600080fd5b80633f4ba83a146102fc5780635c975abb146103045780636382d9ad1461032e5780636773d2541461034157600080fd5b80632f2ff15d116101c35780632f2ff15d1461028d578063354eca0e146102a257806336568abe146102c25780633a21ee4c146102d557600080fd5b806301ffc9a7146101ea5780630f8508d114610212578063248a9ca31461023d575b600080fd5b6101fd6101f8366004612859565b6105d7565b60405190151581526020015b60405180910390f35b6101fd61022036600461289b565b600060208181529281526040808220909352908152205460ff1681565b61027f61024b3660046128bd565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610209565b6102a061029b3660046128ff565b610633565b005b61027f6102b036600461292b565b60016020526000908152604090205481565b6102a06102d03660046128ff565b61067d565b61027f7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f81565b6102a06106db565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101fd565b6102a061033c366004612946565b610710565b6102a061034f3660046128bd565b61097e565b6102a0610362366004612970565b610be5565b61027f6103753660046128bd565b610f45565b6102a0610f52565b61038a610f84565b60405161020991906129e9565b6103aa6103a536600461289b565b610f95565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610209565b6101fd6103dd3660046128ff565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101fd61044236600461292b565b60026020526000908152604090205460ff1681565b61027f600081565b61047261046d3660046128bd565b610fd6565b60405161020991906129fc565b61027f61101a565b61049a610495366004612a55565b611026565b6040516102099190612af0565b6104ba6104b53660046128bd565b61110e565b6040516102099190815173ffffffffffffffffffffffffffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b61027f7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f981565b6102a061053836600461292b565b6111aa565b61027f61054b3660046128bd565b61137e565b6102a061055e3660046128ff565b6113b6565b61027f7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102a0610598366004612bdb565b6113fa565b61027f7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b6102a06105d2366004612cdb565b611826565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061062d575061062d82611c07565b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461066d81611c9e565b6106778383611ca8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106cc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d68282611cff565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61070581611c9e565b61070d611d4d565b50565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f961073a81611c9e565b610742611dea565b61074a611e47565b73ffffffffffffffffffffffffffffffffffffffff8316610797576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107e4576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108759190612d16565b9050806000036108855750610955565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160208181526040808420849055600290915290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556108ec908483611ec8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46272c80ceda248974fbd05f95180058562e15f06de2fed1741e2fcacf2cbc7c8360405161094b91815260200190565b60405180910390a3505b6106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f6109a881611c9e565b6109b0611e47565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff1680610a15576040517fa9ff98da000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b600282015415610a54576040517fa658270100000000000000000000000000000000000000000000000000000000815260048101859052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff1615610acc576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b60018083015473ffffffffffffffffffffffffffffffffffffffff8316600090815260209290925260408220805491928392610b09908490612d5e565b9091555050600085815260056020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810182905560028101829055600390810191909155610b639086611f7b565b508173ffffffffffffffffffffffffffffffffffffffff16857f5f1caff1bc42fe7aa28697b7d5290b1effc56662cda0b7b1bef596cb5de3339383604051610bad91815260200190565b60405180910390a3505050610be160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9610c0f81611c9e565b610c17611dea565b610c1f611e47565b73ffffffffffffffffffffffffffffffffffffffff8416610c6c576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610cb9576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003610cf3576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615610d6b576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090610e309083612d5e565b905080841115610e92576040517f455bb3af00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810182905260448101859052606401610a0c565b610eb373ffffffffffffffffffffffffffffffffffffffff87168686611ec8565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fec4eae2997a9f4fc017c94256dd07879f7b736f35bb153da3a6d9bee4086956886604051610f1291815260200190565b60405180910390a3505061067760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061062d600383611f87565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610f7c81611c9e565b61070d611f93565b6060610f90600361200c565b905090565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610fce9084611f87565b949350505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040909120606091906110139061200c565b9392505050565b6000610f906003612019565b6040805160008152602081019091526060908267ffffffffffffffff81111561105157611051612bac565b60405190808252806020026020018201604052801561108457816020015b606081526020019060019003908161106f5790505b50915060005b83811015611106576110e1308686848181106110a8576110a8612d71565b90506020028101906110ba9190612da0565b856040516020016110cd93929190612e0c565b604051602081830303815290604052612023565b8382815181106110f3576110f3612d71565b602090810291909101015260010161108a565b505092915050565b61114f6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b506000908152600560209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281015492820192909252600390910154606082015290565b60006111b46120a6565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156111e15750825b905060008267ffffffffffffffff1660011480156111fe5750303b155b90508115801561120c575080155b15611243576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112a45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff86166112f1576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f96120cf565b6113016120d7565b6113096120cf565b611314600087611ca8565b5083156113765784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040822061101390612019565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546113f081611c9e565b6106778383611cff565b611402611e47565b61140a6120e7565b81600003611444576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff16806114a4576040517fa9ff98da00000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561151c576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b81600301544210156115705760038201546040517fa13f08b0000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152426044820152606401610a0c565b6040517f726c00000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602282015260368101859052600090605601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600089815280845282812082825290935291205490915060ff161561166f576040517f522cef0d000000000000000000000000000000000000000000000000000000008152600481018790523360248201526044810186905260648101829052608401610a0c565b61167a848783612143565b6116b6578581856040517f1f89537c000000000000000000000000000000000000000000000000000000008152600401610a0c93929190612e33565b848360020160008282546116ca9190612e52565b909155505060018301546002840154111561172b57600283015460018401546040517f88c6d4740000000000000000000000000000000000000000000000000000000081526004810189905260248101929092526044820152606401610a0c565b600086815260208181526040808320848452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915573ffffffffffffffffffffffffffffffffffffffff861684529091528120805487929061179c908490612d5e565b909155506117c3905073ffffffffffffffffffffffffffffffffffffffff83163387611ec8565b604051858152339087907ffe236dfc7ce073698734b89da1aee0e7551c9c6d264404c502e6e8fefc1132a89060200160405180910390a35050506106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f61185081611c9e565b611858611e47565b73ffffffffffffffffffffffffffffffffffffffff84166118a5576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036118df576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615611957576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008581526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16156119b6576040517fb520d61200000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a479190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090611a7c908690612e52565b905080821015611ade576040517ff6508cc900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810183905260448101829052606401610a0c565b73ffffffffffffffffffffffffffffffffffffffff868116600081815260016020818152604080842087905580516080810182529485528482018b8152858201858152606087018c81528f8752600590945291909420945185547fffffffffffffffffffffffff0000000000000000000000000000000000000000169616959095178455915190830155915160028201559051600391820155611b819088612159565b50604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff88169189917f445b0c1846d34293892483b1dbd287a52d37e329a05ba5ea8f03f2b0b866d8d1910160405180910390a35050611c0060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061062d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461062d565b61070d8133612165565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611cd6858561220c565b90508015610fce576000858152602083905260409020611cf6908561232d565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611d2d858561234f565b90508015610fce576000858152602083905260409020611cf6908561242d565b611d55611dea565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611e45576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611ec2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526106d690849061244f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061101383836124f3565b600061101383836125dc565b611f9b6120e7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611dbf565b6060600061101383612606565b600061062d825490565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161204d9190612e65565b600060405180830381855af49150503d8060008114612088576040519150601f19603f3d011682016040523d82523d6000602084013e61208d565b606091505b509150915061209d858383612662565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061062d565b611e456126f1565b6120df6126f1565b611e4561272f565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611e45576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826121508584612737565b14949350505050565b6000611013838361277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610a0c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff166123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122bf3390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061062d565b600091505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff841661277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16156123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff84166124f3565b600080602060008451602086016000885af180612472576040513d6000823e3d81fd5b50506000513d9150811561248a5780600114156124a4565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008181526001830160205260408120548015612323576000612517600183612d5e565b855490915060009061252b90600190612d5e565b905080821461259057600086600001828154811061254b5761254b612d71565b906000526020600020015490508087600001848154811061256e5761256e612d71565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806125a1576125a1612e81565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062d565b60008260000182815481106125f3576125f3612d71565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561265657602002820191906000526020600020905b815481526020019060010190808311612642575b50505050509050919050565b60608261267757612672826127c9565b611013565b815115801561269b575073ffffffffffffffffffffffffffffffffffffffff84163b155b156126ea576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b5080611013565b6126f961280b565b611e45576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f556126f1565b600081815b8451811015612772576127688286838151811061275b5761275b612d71565b602002602001015161282a565b915060010161273c565b509392505050565b60008181526001830160205260408120546127c15750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561062d565b50600061062d565b8051156127d95780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128156120a6565b5468010000000000000000900460ff16919050565b6000818310612846576000828152602084905260409020611013565b6000838152602083905260409020611013565b60006020828403121561286b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461101357600080fd5b600080604083850312156128ae57600080fd5b50508035926020909101359150565b6000602082840312156128cf57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146128fa57600080fd5b919050565b6000806040838503121561291257600080fd5b82359150612922602084016128d6565b90509250929050565b60006020828403121561293d57600080fd5b611013826128d6565b6000806040838503121561295957600080fd5b612962836128d6565b9150612922602084016128d6565b60008060006060848603121561298557600080fd5b61298e846128d6565b925061299c602085016128d6565b929592945050506040919091013590565b600081518084526020840193506020830160005b828110156129df5781518652602095860195909101906001016129c1565b5093949350505050565b60208152600061101360208301846129ad565b602080825282518282018190526000918401906040840190835b81811015612a4a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612a16565b509095945050505050565b60008060208385031215612a6857600080fd5b823567ffffffffffffffff811115612a7f57600080fd5b8301601f81018513612a9057600080fd5b803567ffffffffffffffff811115612aa757600080fd5b8560208260051b8401011115612abc57600080fd5b6020919091019590945092505050565b60005b83811015612ae7578181015183820152602001612acf565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612ba0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051808752612b5f816020890160208501612acc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101612b18565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215612bf057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612c1557600080fd5b8401601f81018613612c2657600080fd5b803567ffffffffffffffff811115612c4057612c40612bac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff82111715612c8b57612c8b612bac565b604052918252602081840181019290810189841115612ca957600080fd5b6020850194505b83851015612ccc57843580825260209586019590935001612cb0565b50809450505050509250925092565b60008060008060808587031215612cf157600080fd5b84359350612d01602086016128d6565b93969395505050506040820135916060013590565b600060208284031215612d2857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561062d5761062d612d2f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612dd557600080fd5b83018035915067ffffffffffffffff821115612df057600080fd5b602001915036819003821315612e0557600080fd5b9250929050565b828482376000838201600081528351612e29818360208801612acc565b0195945050505050565b83815282602082015260606040820152600061209d60608301846129ad565b8082018082111561062d5761062d612d2f565b60008251612e77818460208701612acc565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122039de9a1a777e288153e8b2f1a13b4bf9fce8ca557755d5340f642772d8b7cdc364736f6c634300081e0033","output":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639010d07c1161010f578063c4707a83116100a2578063e63ab1e911610071578063e63ab1e914610563578063fa5c4e991461058a578063fb1bb9de1461059d578063ff7932c0146105c457600080fd5b8063c4707a8314610503578063c4d66de81461052a578063ca15c8731461053d578063d547741f1461055057600080fd5b8063a3246ad3116100de578063a3246ad31461045f578063a9ab67ee1461047f578063ac9650d814610487578063bbca73b3146104a757600080fd5b80639010d07c1461039757806391d14854146103cf5780639e833d7814610434578063a217fddf1461045757600080fd5b80633f4ba83a116101875780637261fefb116101565780637261fefb146103545780637fc46a44146103675780638456cb591461037a5780638b67cb391461038257600080fd5b80633f4ba83a146102fc5780635c975abb146103045780636382d9ad1461032e5780636773d2541461034157600080fd5b80632f2ff15d116101c35780632f2ff15d1461028d578063354eca0e146102a257806336568abe146102c25780633a21ee4c146102d557600080fd5b806301ffc9a7146101ea5780630f8508d114610212578063248a9ca31461023d575b600080fd5b6101fd6101f8366004612859565b6105d7565b60405190151581526020015b60405180910390f35b6101fd61022036600461289b565b600060208181529281526040808220909352908152205460ff1681565b61027f61024b3660046128bd565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610209565b6102a061029b3660046128ff565b610633565b005b61027f6102b036600461292b565b60016020526000908152604090205481565b6102a06102d03660046128ff565b61067d565b61027f7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f81565b6102a06106db565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101fd565b6102a061033c366004612946565b610710565b6102a061034f3660046128bd565b61097e565b6102a0610362366004612970565b610be5565b61027f6103753660046128bd565b610f45565b6102a0610f52565b61038a610f84565b60405161020991906129e9565b6103aa6103a536600461289b565b610f95565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610209565b6101fd6103dd3660046128ff565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101fd61044236600461292b565b60026020526000908152604090205460ff1681565b61027f600081565b61047261046d3660046128bd565b610fd6565b60405161020991906129fc565b61027f61101a565b61049a610495366004612a55565b611026565b6040516102099190612af0565b6104ba6104b53660046128bd565b61110e565b6040516102099190815173ffffffffffffffffffffffffffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b61027f7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f981565b6102a061053836600461292b565b6111aa565b61027f61054b3660046128bd565b61137e565b6102a061055e3660046128ff565b6113b6565b61027f7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102a0610598366004612bdb565b6113fa565b61027f7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b6102a06105d2366004612cdb565b611826565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061062d575061062d82611c07565b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461066d81611c9e565b6106778383611ca8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106cc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d68282611cff565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61070581611c9e565b61070d611d4d565b50565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f961073a81611c9e565b610742611dea565b61074a611e47565b73ffffffffffffffffffffffffffffffffffffffff8316610797576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107e4576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108759190612d16565b9050806000036108855750610955565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160208181526040808420849055600290915290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556108ec908483611ec8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46272c80ceda248974fbd05f95180058562e15f06de2fed1741e2fcacf2cbc7c8360405161094b91815260200190565b60405180910390a3505b6106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f6109a881611c9e565b6109b0611e47565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff1680610a15576040517fa9ff98da000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b600282015415610a54576040517fa658270100000000000000000000000000000000000000000000000000000000815260048101859052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff1615610acc576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b60018083015473ffffffffffffffffffffffffffffffffffffffff8316600090815260209290925260408220805491928392610b09908490612d5e565b9091555050600085815260056020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810182905560028101829055600390810191909155610b639086611f7b565b508173ffffffffffffffffffffffffffffffffffffffff16857f5f1caff1bc42fe7aa28697b7d5290b1effc56662cda0b7b1bef596cb5de3339383604051610bad91815260200190565b60405180910390a3505050610be160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9610c0f81611c9e565b610c17611dea565b610c1f611e47565b73ffffffffffffffffffffffffffffffffffffffff8416610c6c576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610cb9576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003610cf3576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615610d6b576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090610e309083612d5e565b905080841115610e92576040517f455bb3af00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810182905260448101859052606401610a0c565b610eb373ffffffffffffffffffffffffffffffffffffffff87168686611ec8565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fec4eae2997a9f4fc017c94256dd07879f7b736f35bb153da3a6d9bee4086956886604051610f1291815260200190565b60405180910390a3505061067760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061062d600383611f87565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610f7c81611c9e565b61070d611f93565b6060610f90600361200c565b905090565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610fce9084611f87565b949350505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040909120606091906110139061200c565b9392505050565b6000610f906003612019565b6040805160008152602081019091526060908267ffffffffffffffff81111561105157611051612bac565b60405190808252806020026020018201604052801561108457816020015b606081526020019060019003908161106f5790505b50915060005b83811015611106576110e1308686848181106110a8576110a8612d71565b90506020028101906110ba9190612da0565b856040516020016110cd93929190612e0c565b604051602081830303815290604052612023565b8382815181106110f3576110f3612d71565b602090810291909101015260010161108a565b505092915050565b61114f6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b506000908152600560209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281015492820192909252600390910154606082015290565b60006111b46120a6565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156111e15750825b905060008267ffffffffffffffff1660011480156111fe5750303b155b90508115801561120c575080155b15611243576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112a45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff86166112f1576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f96120cf565b6113016120d7565b6113096120cf565b611314600087611ca8565b5083156113765784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040822061101390612019565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546113f081611c9e565b6106778383611cff565b611402611e47565b61140a6120e7565b81600003611444576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff16806114a4576040517fa9ff98da00000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561151c576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b81600301544210156115705760038201546040517fa13f08b0000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152426044820152606401610a0c565b6040517f726c00000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602282015260368101859052600090605601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600089815280845282812082825290935291205490915060ff161561166f576040517f522cef0d000000000000000000000000000000000000000000000000000000008152600481018790523360248201526044810186905260648101829052608401610a0c565b61167a848783612143565b6116b6578581856040517f1f89537c000000000000000000000000000000000000000000000000000000008152600401610a0c93929190612e33565b848360020160008282546116ca9190612e52565b909155505060018301546002840154111561172b57600283015460018401546040517f88c6d4740000000000000000000000000000000000000000000000000000000081526004810189905260248101929092526044820152606401610a0c565b600086815260208181526040808320848452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915573ffffffffffffffffffffffffffffffffffffffff861684529091528120805487929061179c908490612d5e565b909155506117c3905073ffffffffffffffffffffffffffffffffffffffff83163387611ec8565b604051858152339087907ffe236dfc7ce073698734b89da1aee0e7551c9c6d264404c502e6e8fefc1132a89060200160405180910390a35050506106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f61185081611c9e565b611858611e47565b73ffffffffffffffffffffffffffffffffffffffff84166118a5576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036118df576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615611957576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008581526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16156119b6576040517fb520d61200000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a479190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090611a7c908690612e52565b905080821015611ade576040517ff6508cc900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810183905260448101829052606401610a0c565b73ffffffffffffffffffffffffffffffffffffffff868116600081815260016020818152604080842087905580516080810182529485528482018b8152858201858152606087018c81528f8752600590945291909420945185547fffffffffffffffffffffffff0000000000000000000000000000000000000000169616959095178455915190830155915160028201559051600391820155611b819088612159565b50604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff88169189917f445b0c1846d34293892483b1dbd287a52d37e329a05ba5ea8f03f2b0b866d8d1910160405180910390a35050611c0060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061062d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461062d565b61070d8133612165565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611cd6858561220c565b90508015610fce576000858152602083905260409020611cf6908561232d565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611d2d858561234f565b90508015610fce576000858152602083905260409020611cf6908561242d565b611d55611dea565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611e45576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611ec2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526106d690849061244f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061101383836124f3565b600061101383836125dc565b611f9b6120e7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611dbf565b6060600061101383612606565b600061062d825490565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161204d9190612e65565b600060405180830381855af49150503d8060008114612088576040519150601f19603f3d011682016040523d82523d6000602084013e61208d565b606091505b509150915061209d858383612662565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061062d565b611e456126f1565b6120df6126f1565b611e4561272f565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611e45576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826121508584612737565b14949350505050565b6000611013838361277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610a0c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff166123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122bf3390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061062d565b600091505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff841661277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16156123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff84166124f3565b600080602060008451602086016000885af180612472576040513d6000823e3d81fd5b50506000513d9150811561248a5780600114156124a4565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008181526001830160205260408120548015612323576000612517600183612d5e565b855490915060009061252b90600190612d5e565b905080821461259057600086600001828154811061254b5761254b612d71565b906000526020600020015490508087600001848154811061256e5761256e612d71565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806125a1576125a1612e81565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062d565b60008260000182815481106125f3576125f3612d71565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561265657602002820191906000526020600020905b815481526020019060010190808311612642575b50505050509050919050565b60608261267757612672826127c9565b611013565b815115801561269b575073ffffffffffffffffffffffffffffffffffffffff84163b155b156126ea576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b5080611013565b6126f961280b565b611e45576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f556126f1565b600081815b8451811015612772576127688286838151811061275b5761275b612d71565b602002602001015161282a565b915060010161273c565b509392505050565b60008181526001830160205260408120546127c15750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561062d565b50600061062d565b8051156127d95780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128156120a6565b5468010000000000000000900460ff16919050565b6000818310612846576000828152602084905260409020611013565b6000838152602083905260409020611013565b60006020828403121561286b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461101357600080fd5b600080604083850312156128ae57600080fd5b50508035926020909101359150565b6000602082840312156128cf57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146128fa57600080fd5b919050565b6000806040838503121561291257600080fd5b82359150612922602084016128d6565b90509250929050565b60006020828403121561293d57600080fd5b611013826128d6565b6000806040838503121561295957600080fd5b612962836128d6565b9150612922602084016128d6565b60008060006060848603121561298557600080fd5b61298e846128d6565b925061299c602085016128d6565b929592945050506040919091013590565b600081518084526020840193506020830160005b828110156129df5781518652602095860195909101906001016129c1565b5093949350505050565b60208152600061101360208301846129ad565b602080825282518282018190526000918401906040840190835b81811015612a4a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612a16565b509095945050505050565b60008060208385031215612a6857600080fd5b823567ffffffffffffffff811115612a7f57600080fd5b8301601f81018513612a9057600080fd5b803567ffffffffffffffff811115612aa757600080fd5b8560208260051b8401011115612abc57600080fd5b6020919091019590945092505050565b60005b83811015612ae7578181015183820152602001612acf565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612ba0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051808752612b5f816020890160208501612acc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101612b18565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215612bf057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612c1557600080fd5b8401601f81018613612c2657600080fd5b803567ffffffffffffffff811115612c4057612c40612bac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff82111715612c8b57612c8b612bac565b604052918252602081840181019290810189841115612ca957600080fd5b6020850194505b83851015612ccc57843580825260209586019590935001612cb0565b50809450505050509250925092565b60008060008060808587031215612cf157600080fd5b84359350612d01602086016128d6565b93969395505050506040820135916060013590565b600060208284031215612d2857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561062d5761062d612d2f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612dd557600080fd5b83018035915067ffffffffffffffff821115612df057600080fd5b602001915036819003821315612e0557600080fd5b9250929050565b828482376000838201600081528351612e29818360208801612acc565b0195945050505050565b83815282602082015260606040820152600061209d60608301846129ad565b8082018082111561062d5761062d612d2f565b60008251612e77818460208701612acc565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122039de9a1a777e288153e8b2f1a13b4bf9fce8ca557755d5340f642772d8b7cdc364736f6c634300081e0033","gas_used":2427307,"gas_limit":2427307,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639010d07c1161010f578063c4707a83116100a2578063e63ab1e911610071578063e63ab1e914610563578063fa5c4e991461058a578063fb1bb9de1461059d578063ff7932c0146105c457600080fd5b8063c4707a8314610503578063c4d66de81461052a578063ca15c8731461053d578063d547741f1461055057600080fd5b8063a3246ad3116100de578063a3246ad31461045f578063a9ab67ee1461047f578063ac9650d814610487578063bbca73b3146104a757600080fd5b80639010d07c1461039757806391d14854146103cf5780639e833d7814610434578063a217fddf1461045757600080fd5b80633f4ba83a116101875780637261fefb116101565780637261fefb146103545780637fc46a44146103675780638456cb591461037a5780638b67cb391461038257600080fd5b80633f4ba83a146102fc5780635c975abb146103045780636382d9ad1461032e5780636773d2541461034157600080fd5b80632f2ff15d116101c35780632f2ff15d1461028d578063354eca0e146102a257806336568abe146102c25780633a21ee4c146102d557600080fd5b806301ffc9a7146101ea5780630f8508d114610212578063248a9ca31461023d575b600080fd5b6101fd6101f8366004612859565b6105d7565b60405190151581526020015b60405180910390f35b6101fd61022036600461289b565b600060208181529281526040808220909352908152205460ff1681565b61027f61024b3660046128bd565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610209565b6102a061029b3660046128ff565b610633565b005b61027f6102b036600461292b565b60016020526000908152604090205481565b6102a06102d03660046128ff565b61067d565b61027f7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f81565b6102a06106db565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166101fd565b6102a061033c366004612946565b610710565b6102a061034f3660046128bd565b61097e565b6102a0610362366004612970565b610be5565b61027f6103753660046128bd565b610f45565b6102a0610f52565b61038a610f84565b60405161020991906129e9565b6103aa6103a536600461289b565b610f95565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610209565b6101fd6103dd3660046128ff565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101fd61044236600461292b565b60026020526000908152604090205460ff1681565b61027f600081565b61047261046d3660046128bd565b610fd6565b60405161020991906129fc565b61027f61101a565b61049a610495366004612a55565b611026565b6040516102099190612af0565b6104ba6104b53660046128bd565b61110e565b6040516102099190815173ffffffffffffffffffffffffffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b61027f7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f981565b6102a061053836600461292b565b6111aa565b61027f61054b3660046128bd565b61137e565b6102a061055e3660046128ff565b6113b6565b61027f7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6102a0610598366004612bdb565b6113fa565b61027f7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a81565b6102a06105d2366004612cdb565b611826565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f00000000000000000000000000000000000000000000000000000000148061062d575061062d82611c07565b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461066d81611c9e565b6106778383611ca8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff811633146106cc576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d68282611cff565b505050565b7f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a61070581611c9e565b61070d611d4d565b50565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f961073a81611c9e565b610742611dea565b61074a611e47565b73ffffffffffffffffffffffffffffffffffffffff8316610797576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107e4576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108759190612d16565b9050806000036108855750610955565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600160208181526040808420849055600290915290912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556108ec908483611ec8565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46272c80ceda248974fbd05f95180058562e15f06de2fed1741e2fcacf2cbc7c8360405161094b91815260200190565b60405180910390a3505b6106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f6109a881611c9e565b6109b0611e47565b6000828152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff1680610a15576040517fa9ff98da000000000000000000000000000000000000000000000000000000008152600481018590526024015b60405180910390fd5b600282015415610a54576040517fa658270100000000000000000000000000000000000000000000000000000000815260048101859052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff1615610acc576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b60018083015473ffffffffffffffffffffffffffffffffffffffff8316600090815260209290925260408220805491928392610b09908490612d5e565b9091555050600085815260056020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810182905560028101829055600390810191909155610b639086611f7b565b508173ffffffffffffffffffffffffffffffffffffffff16857f5f1caff1bc42fe7aa28697b7d5290b1effc56662cda0b7b1bef596cb5de3339383604051610bad91815260200190565b60405180910390a3505050610be160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050565b7f9d98d3d08f0062b192694645e127c98e5f96f3bbec331d061acaac3ace2327f9610c0f81611c9e565b610c17611dea565b610c1f611e47565b73ffffffffffffffffffffffffffffffffffffffff8416610c6c576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610cb9576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003610cf3576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615610d6b576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090610e309083612d5e565b905080841115610e92576040517f455bb3af00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810182905260448101859052606401610a0c565b610eb373ffffffffffffffffffffffffffffffffffffffff87168686611ec8565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fec4eae2997a9f4fc017c94256dd07879f7b736f35bb153da3a6d9bee4086956886604051610f1291815260200190565b60405180910390a3505061067760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061062d600383611f87565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610f7c81611c9e565b61070d611f93565b6060610f90600361200c565b905090565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610fce9084611f87565b949350505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040909120606091906110139061200c565b9392505050565b6000610f906003612019565b6040805160008152602081019091526060908267ffffffffffffffff81111561105157611051612bac565b60405190808252806020026020018201604052801561108457816020015b606081526020019060019003908161106f5790505b50915060005b83811015611106576110e1308686848181106110a8576110a8612d71565b90506020028101906110ba9190612da0565b856040516020016110cd93929190612e0c565b604051602081830303815290604052612023565b8382815181106110f3576110f3612d71565b602090810291909101015260010161108a565b505092915050565b61114f6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b506000908152600560209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281015492820192909252600390910154606082015290565b60006111b46120a6565b805490915060ff68010000000000000000820416159067ffffffffffffffff166000811580156111e15750825b905060008267ffffffffffffffff1660011480156111fe5750303b155b90508115801561120c575080155b15611243576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112a45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b73ffffffffffffffffffffffffffffffffffffffff86166112f1576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f96120cf565b6113016120d7565b6113096120cf565b611314600087611ca8565b5083156113765784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200060208190526040822061101390612019565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546113f081611c9e565b6106778383611cff565b611402611e47565b61140a6120e7565b81600003611444576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff16806114a4576040517fa9ff98da00000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff161561151c576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610a0c565b81600301544210156115705760038201546040517fa13f08b0000000000000000000000000000000000000000000000000000000008152600481018790526024810191909152426044820152606401610a0c565b6040517f726c00000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602282015260368101859052600090605601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600089815280845282812082825290935291205490915060ff161561166f576040517f522cef0d000000000000000000000000000000000000000000000000000000008152600481018790523360248201526044810186905260648101829052608401610a0c565b61167a848783612143565b6116b6578581856040517f1f89537c000000000000000000000000000000000000000000000000000000008152600401610a0c93929190612e33565b848360020160008282546116ca9190612e52565b909155505060018301546002840154111561172b57600283015460018401546040517f88c6d4740000000000000000000000000000000000000000000000000000000081526004810189905260248101929092526044820152606401610a0c565b600086815260208181526040808320848452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915573ffffffffffffffffffffffffffffffffffffffff861684529091528120805487929061179c908490612d5e565b909155506117c3905073ffffffffffffffffffffffffffffffffffffffff83163387611ec8565b604051858152339087907ffe236dfc7ce073698734b89da1aee0e7551c9c6d264404c502e6e8fefc1132a89060200160405180910390a35050506106d660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f61185081611c9e565b611858611e47565b73ffffffffffffffffffffffffffffffffffffffff84166118a5576040517fca0c166300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036118df576040517fa592fb3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526002602052604090205460ff1615611957576040517f5fd5125500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008581526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16156119b6576040517fb520d61200000000000000000000000000000000000000000000000000000000815260048101869052602401610a0c565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a479190612d16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526001602052604081205491925090611a7c908690612e52565b905080821015611ade576040517ff6508cc900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024810183905260448101829052606401610a0c565b73ffffffffffffffffffffffffffffffffffffffff868116600081815260016020818152604080842087905580516080810182529485528482018b8152858201858152606087018c81528f8752600590945291909420945185547fffffffffffffffffffffffff0000000000000000000000000000000000000000169616959095178455915190830155915160028201559051600391820155611b819088612159565b50604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff88169189917f445b0c1846d34293892483b1dbd287a52d37e329a05ba5ea8f03f2b0b866d8d1910160405180910390a35050611c0060017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061062d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461062d565b61070d8133612165565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611cd6858561220c565b90508015610fce576000858152602083905260409020611cf6908561232d565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200081611d2d858561234f565b90508015610fce576000858152602083905260409020611cf6908561242d565b611d55611dea565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a150565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611e45576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611ec2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526106d690849061244f565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b600061101383836124f3565b600061101383836125dc565b611f9b6120e7565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611dbf565b6060600061101383612606565b600061062d825490565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161204d9190612e65565b600060405180830381855af49150503d8060008114612088576040519150601f19603f3d011682016040523d82523d6000602084013e61208d565b606091505b509150915061209d858383612662565b95945050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061062d565b611e456126f1565b6120df6126f1565b611e4561272f565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611e45576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826121508584612737565b14949350505050565b6000611013838361277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610be1576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610a0c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff166123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556122bf3390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061062d565b600091505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff841661277a565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16156123235760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061062d565b60006110138373ffffffffffffffffffffffffffffffffffffffff84166124f3565b600080602060008451602086016000885af180612472576040513d6000823e3d81fd5b50506000513d9150811561248a5780600114156124a4565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15610677576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b60008181526001830160205260408120548015612323576000612517600183612d5e565b855490915060009061252b90600190612d5e565b905080821461259057600086600001828154811061254b5761254b612d71565b906000526020600020015490508087600001848154811061256e5761256e612d71565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806125a1576125a1612e81565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062d565b60008260000182815481106125f3576125f3612d71565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561265657602002820191906000526020600020905b815481526020019060010190808311612642575b50505050509050919050565b60608261267757612672826127c9565b611013565b815115801561269b575073ffffffffffffffffffffffffffffffffffffffff84163b155b156126ea576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610a0c565b5080611013565b6126f961280b565b611e45576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f556126f1565b600081815b8451811015612772576127688286838151811061275b5761275b612d71565b602002602001015161282a565b915060010161273c565b509392505050565b60008181526001830160205260408120546127c15750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561062d565b50600061062d565b8051156127d95780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006128156120a6565b5468010000000000000000900460ff16919050565b6000818310612846576000828152602084905260409020611013565b6000838152602083905260409020611013565b60006020828403121561286b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461101357600080fd5b600080604083850312156128ae57600080fd5b50508035926020909101359150565b6000602082840312156128cf57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146128fa57600080fd5b919050565b6000806040838503121561291257600080fd5b82359150612922602084016128d6565b90509250929050565b60006020828403121561293d57600080fd5b611013826128d6565b6000806040838503121561295957600080fd5b612962836128d6565b9150612922602084016128d6565b60008060006060848603121561298557600080fd5b61298e846128d6565b925061299c602085016128d6565b929592945050506040919091013590565b600081518084526020840193506020830160005b828110156129df5781518652602095860195909101906001016129c1565b5093949350505050565b60208152600061101360208301846129ad565b602080825282518282018190526000918401906040840190835b81811015612a4a57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612a16565b509095945050505050565b60008060208385031215612a6857600080fd5b823567ffffffffffffffff811115612a7f57600080fd5b8301601f81018513612a9057600080fd5b803567ffffffffffffffff811115612aa757600080fd5b8560208260051b8401011115612abc57600080fd5b6020919091019590945092505050565b60005b83811015612ae7578181015183820152602001612acf565b50506000910152565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612ba0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc087860301845281518051808752612b5f816020890160208501612acc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169590950160209081019550938401939190910190600101612b18565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215612bf057600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612c1557600080fd5b8401601f81018613612c2657600080fd5b803567ffffffffffffffff811115612c4057612c40612bac565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff82111715612c8b57612c8b612bac565b604052918252602081840181019290810189841115612ca957600080fd5b6020850194505b83851015612ccc57843580825260209586019590935001612cb0565b50809450505050509250925092565b60008060008060808587031215612cf157600080fd5b84359350612d01602086016128d6565b93969395505050506040820135916060013590565b600060208284031215612d2857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561062d5761062d612d2f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612dd557600080fd5b83018035915067ffffffffffffffff821115612df057600080fd5b602001915036819003821315612e0557600080fd5b9250929050565b828482376000838201600081528351612e29818360208801612acc565b0195945050505050565b83815282602082015260606040820152600061209d60608301846129ad565b8082018082111561062d5761062d612d2f565b60008251612e77818460208701612acc565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122039de9a1a777e288153e8b2f1a13b4bf9fce8ca557755d5340f642772d8b7cdc364736f6c634300081e0033","nonce":17,"gas_used":2656167},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x2887a7","logs":[{"address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"}],"logsBloom":"0x00000000000001000000000000000000000000000000000000000000000000000000000020000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xb8cbcab6ae642e8ae641c20fe1aed16ebde840c15e444b787c8acc6e2c3c8cd7","block_number":18},{"info":{"transaction_hash":"0x2ab643f309bdebd978c29536ab510472d3fcec0596c5e7250939d4351ca56848","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x2f2ff15d6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":101246,"gas_limit":102736,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x2f2ff15d6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":96322,"gas_limit":96322,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x","nonce":23,"gas_used":123190},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1e136","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x6dd76c40bbe99b732f6858c1cea520f67540e457c87641aad3a745c6ece0284f","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"}],"logsBloom":"0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000100000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000001000000000000000000000000000200000000000000000000000002800000100000000000000000000000000000000000000000000000000000000000000000100000000000000"},"block_hash":"0x1ea902b902d26de16e93828b2123fed282c29075edad8561bdbaad14f3f774ba","block_number":24},{"info":{"transaction_hash":"0xafb80cd5541de0e39e0c08dd8316b3f2d5400607e4769455f0f19513fad4bc28","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x0000000000000000000000000000000000000000","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x0000000000000000000000000000000000000000","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x96dc1dc10000000000000000000000000000000000000000000000000000000000278d000000000000000000000000000000000000000000000000000000000000000001","output":"0x","gas_used":0,"gas_limit":534,"status":"Stop","steps":[],"decoded":null},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":15,"gas_used":21890},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5582","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xb9ca734e59a3c942b2f8a5c1d50e02ae45ad02edb3e822e4e83c1aa4ef66de62","block_number":16},{"info":{"transaction_hash":"0x23223c57a6666793ebddd9fd613ae7a7e76538c9b8387ff78f73037123e391ee","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","traces":[{"parent":null,"children":[1,2],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405260405161117a38038061117a8339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e60008051602061115a833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b8060008051602061115a8339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61068480610ad683390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161062d6104a960003960006010015261062d6000f3fe608060405261000c61000e565b005b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000","output":"0x608060405261000c61000e565b005b7f0000000000000000000000005e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c73ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","gas_used":846883,"gas_limit":846883,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},"decoded":null,"position":0,"index":0},{"raw_log":{"topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c"},"decoded":null,"position":2,"index":4}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Log":1}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","address":"0x9a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x","gas_used":138992,"gas_limit":806652,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":1},{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":null,"position":0,"index":2}],"ordering":[{"Log":0},{"Log":1}]},{"parent":0,"children":[],"idx":2,"trace":{"depth":1,"success":true,"caller":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","address":"0x5e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5060405161068438038061068483398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610587806100fd6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","output":"0x60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100b0578063ad3cb1cc146100c3578063f2fde38b1461011957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b50610074610139565b005b34801561008257600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100746100be366004610364565b61014d565b3480156100cf57600080fd5b5061010c6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516100a791906104e3565b34801561012557600080fd5b506100746101343660046104fd565b6101e2565b61014161024b565b61014b600061029e565b565b61015561024b565b6040517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634f1ef2869034906101ab908690869060040161051a565b6000604051808303818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b5050505050505050565b6101ea61024b565b73ffffffffffffffffffffffffffffffffffffffff811661023f576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6102488161029e565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461014b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610236565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b73ffffffffffffffffffffffffffffffffffffffff8116811461024857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008060006060848603121561037957600080fd5b833561038481610313565b9250602084013561039481610313565b9150604084013567ffffffffffffffff8111156103b057600080fd5b8401601f810186136103c157600080fd5b803567ffffffffffffffff8111156103db576103db610335565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561044757610447610335565b60405281815282820160200188101561045f57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156104a557602081850181015186830182015201610489565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104f6602083018461047f565b9392505050565b60006020828403121561050f57600080fd5b81356104f681610313565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610549604083018461047f565b94935050505056fea26469706673582212203f85ac7a8b3c675ca51ade72791b1940e792c52ec58458090becca1e8311c1fd64736f6c634300081e0033","gas_used":307276,"gas_limit":637457,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},"decoded":null,"position":0,"index":3}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405261000c61000e565b005b7f0000000000000000000000005e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c73ffffffffffffffffffffffffffffffffffffffff1633036100d2576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100c8576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100d06100da565b565b6100d0610109565b6000806100ea366004818461044d565b8101906100f791906104a6565b915091506101058282610119565b5050565b6100d0610114610181565b6101c6565b610122826101ea565b60405173ffffffffffffffffffffffffffffffffffffffff8316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101795761017482826102be565b505050565b610105610341565b60006101c17f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156101e5573d6000f35b3d6000fd5b8073ffffffffffffffffffffffffffffffffffffffff163b600003610258576040517f4c9c8ce300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516102e891906105c8565b600060405180830381855af49150503d8060008114610323576040519150601f19603f3d011682016040523d82523d6000602084013e610328565b606091505b5091509150610338858383610379565b95945050505050565b34156100d0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608261038e576103898261040b565b610404565b81511580156103b2575073ffffffffffffffffffffffffffffffffffffffff84163b155b15610401576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161024f565b50805b9392505050565b80511561041b5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808585111561045d57600080fd5b8386111561046a57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156104b957600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104dd57600080fd5b9150602083013567ffffffffffffffff8111156104f957600080fd5b8301601f8101851361050a57600080fd5b803567ffffffffffffffff81111561052457610524610477565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561059057610590610477565b6040528181528282016020018710156105a857600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b818110156105e957602081860181015185830152016105cf565b50600092019182525091905056fea26469706673582212204b0dd1a4d0bd741057117fb2d34cfb3460f218f9f8e79ab719b544f30e33a78c64736f6c634300081e0033","nonce":18,"gas_used":966287},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xebe8f","logs":[{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009a9f2ccfde556a7e9ff0848998aa4a0cfd8863ae"],"data":"0x"},{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0x5e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c","topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],"data":"0x"},{"address":"0x68b1d87f95878fe05b998f19b66f4baba5de1aed","topics":["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],"data":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e3d0fde6f793b3115a9e7f5ebc195bbeed35d6c"}],"logsBloom":"0x00000004040000000000000000000000400000000000000000800000000000000000000000000000000000020000000000000000008000000000000000000000000000000000000000000000000002000001000000000000000000000000010000000000020000040000000100000800000000800000000000000000000000400000000000000000000800000000000000000000000080010000000000800000000000000000000008000000000000000000000000000000001000000000000000000020000000200000000000000000000000002404000100000000000020000000000000000000000000000000000000000000000000080100000000000000"},"block_hash":"0xc63a82d7ae046a5119c0fadaf3d8efab3159c77191bf47aaccd7a9d66229fd18","block_number":19},{"info":{"transaction_hash":"0x5267a0522e08445104d12b288deeaa278f9c416a3d66d6afac573ab7064c2bd9","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x8ff390990000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","output":"0x","gas_used":27591,"gas_limit":27912,"status":"Return","steps":[],"decoded":null},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x8ff390990000000000000000000000009a676e781a523b5d0c0e43731313a708cb607508","output":"0x","gas_used":22670,"gas_limit":22670,"status":"Stop","steps":[],"decoded":null},"logs":[],"ordering":[]}],"exit":"Return","out":"0x","nonce":16,"gas_used":49023},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xbf7f","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xf94c866d85361d518a91b672eba67b58532eb15f5f258c98006ab988e2b865f0","block_number":17},{"info":{"transaction_hash":"0xa560b7e02fbda2029d2008eb9080794b320eaa4fd0fd8bcba4497a55efcf0bd3","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f19000000000000000000000000976ea74026e726554db657fa54763abd0c3a0aa900000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000976ea74026e726554db657fa54763abd0c3a0aa9"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":7,"gas_used":51272},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc848","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000976ea74026e726554db657fa54763abd0c3a0aa9"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000000000000000000000000000000000040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000080000000000000000000040020000000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x5a4b84d2dc859b45064bfcaafa1cbc63e713558a21898c00fce55faddcee0bb7","block_number":8},{"info":{"transaction_hash":"0x80a49f142b7fbf3d0d318c3a45731bbe5375c457945305d13952e650e814b80b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x5fbdb2315678afecb367f032d93f642f64180aa3","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","maybe_precompile":null,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x40c10f190000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc00000000000000000000000000000000000000000000001b1ae4d6e2ef500000","output":"0x","gas_used":29628,"gas_limit":29628,"status":"Stop","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Stop","out":"0x","nonce":3,"gas_used":51260},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0xc83c","logs":[{"address":"0x5fbdb2315678afecb367f032d93f642f64180aa3","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x0000000000000000000000003c44cdddb6a900fa2b585dd299e03d12fa4293bc"],"data":"0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"}],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000008000000000000000000000000000000000000000000000040020000000000000000000800000800000000000000000010000000000000000000000000000000000000000000000000000000000000000200000000000000000000200000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x541e7cc62e06107e58f5aba97388f8750bfe472058253ffbe3a6a8c5628ee0a5","block_number":4},{"info":{"transaction_hash":"0x668adcc326544cf592fcb19d60a8b3a8a283c8b9d237745e2f6f42764b551230","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","maybe_precompile":false,"selfdestruct_address":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613329806100d96000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80636352211e1161012a578063a22cb465116100bd578063c87b56dd1161008c578063cf76a15311610071578063cf76a1531461057a578063d547741f14610582578063e985e9c51461059557600080fd5b8063c87b56dd14610554578063ca15c8731461056757600080fd5b8063a22cb465146104fb578063a3246ad31461050e578063b88d4fde1461052e578063c4d66de81461054157600080fd5b80639010d07c116100f95780639010d07c1461047357806391d148541461048657806395d89b41146104eb578063a217fddf146104f357600080fd5b80636352211e1461041a57806370a082311461042d5780638462151c146104405780638ff390991461046057600080fd5b80632f2ff15d116101bd57806342842e0e1161018c5780634cf088d9116101715780634cf088d9146103d45780634f6ccce7146103f457806355f804b31461040757600080fd5b806342842e0e146103ae57806342966c68146103c157600080fd5b80632f2ff15d146103625780632f745c591461037557806336568abe1461038857806340c10f191461039b57600080fd5b806318160ddd116101f957806318160ddd146102b55780631c8f7c20146102e657806323b872dd1461030d578063248a9ca31461032057600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b3146102a0575b600080fd5b61023e610239366004612af2565b6105fd565b60405190151581526020015b60405180910390f35b61025b61061d565b60405161024a9190612b7d565b61027b610276366004612b90565b6106d3565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b6102b36102ae366004612bd2565b610728565b005b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02545b60405190815260200161024a565b6102d87f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a81565b6102b361031b366004612bfc565b610737565b6102d861032e366004612b90565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102b3610370366004612c39565b61082d565b6102d8610383366004612bd2565b610871565b6102b3610396366004612c39565b61092a565b6102b36103a9366004612bd2565b610988565b6102b36103bc366004612bfc565b6109e3565b6102b36103cf366004612b90565b6109fe565b60005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102d8610402366004612b90565b610a5b565b6102b3610415366004612d2c565b610b10565b61027b610428366004612b90565b610b82565b6102d861043b366004612d75565b610b8d565b61045361044e366004612d75565b610c2e565b60405161024a9190612d90565b6102b361046e366004612d75565b610cc6565b61027b610481366004612dd3565b610d5d565b61023e610494366004612c39565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61025b610d9e565b6102d8600081565b6102b3610509366004612df5565b610def565b61052161051c366004612b90565b610dfa565b60405161024a9190612e31565b6102b361053c366004612e7f565b610e3e565b6102b361054f366004612d75565b610e56565b61025b610562366004612b90565b611041565b6102d8610575366004612b90565b611075565b61025b6110ad565b6102b3610590366004612c39565b61113b565b61023e6105a3366004612efb565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b60006106088261117f565b806106175750610617826111d5565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061064f90612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461067b90612f25565b80156106c85780601f1061069d576101008083540402835291602001916106c8565b820191906000526020600020905b8154815290600101906020018083116106ab57829003601f168201915b505050505091505090565b60006106de8261122b565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff16610617565b6107338282336112a9565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661078c576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006107998383336112b6565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610827576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610783565b50505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546108678161136d565b6108278383611377565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0061089d84610b8d565b83106108f4576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101849052604401610783565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602091825260408082208583529092522054905092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610979576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098382826113ce565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d9576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610733828261141c565b61098383838360405180602001604052806000815250610e3e565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a4f576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a58816114cd565b50565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00610aa67f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed025490565b8310610ae8576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526000600482015260248101849052604401610783565b806002018381548110610afd57610afd612f78565b9060005260206000200154915050919050565b7f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a610b3a8161136d565b6001610b468382612fee565b507f0b5e7f3f12bb283d66c974a1d529f3e44f27edd4aad7748c1d0058241ec0077582604051610b769190612b7d565b60405180910390a15050565b60006106178261122b565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316610c00576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b60606000610c3b83610b8d565b905060008167ffffffffffffffff811115610c5857610c58612c65565b604051908082528060200260200182016040528015610c81578160200160208202803683370190505b50905060005b82811015610cbe57610c998582610871565b828281518110610cab57610cab612f78565b6020908102919091010152600101610c87565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1615610d16576040517fd4376c1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610d96908461152e565b949350505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161064f90612f25565b61073333838361153a565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320006020819052604090912060609190610e379061165b565b9392505050565b610e49848484610737565b6108273385858585611668565b6000610e6061185f565b805490915060ff68010000000000000000820416159067ffffffffffffffff16600081158015610e8d5750825b905060008267ffffffffffffffff166001148015610eaa5750303b155b905081158015610eb8575080155b15610eef576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f58611888565b610fcc6040518060400160405280601a81526020017f526563616c6c205374616b696e67204e465420526563656970740000000000008152506040518060400160405280600681526020017f52534e4654520000000000000000000000000000000000000000000000000000815250611892565b610fd7600087611377565b5083156110395784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6060600161104e836118a4565b60405160200161105f929190613107565b6040516020818303038152906040529050919050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610e379061190f565b600180546110ba90612f25565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612f25565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505081565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111758161136d565b61082783836113ce565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610617575061061782611919565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806106175750610617826119fc565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610617576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610783565b6109838383836001611a52565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690851615801590611322575073ffffffffffffffffffffffffffffffffffffffff811615155b15611359576040517f6527f30c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611364858585611c5e565b95945050505050565b610a588133611db7565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113a58585611e5e565b90508015610d965760008581526020839052604090206113c59085611f7f565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113fc8585611fa1565b90508015610d965760008581526020839052604090206113c5908561207f565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b600061147a838360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff811615610983576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b60006114dc60008360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff8116610733576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610783565b6000610e3783836120a1565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166115c0576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60606000610e37836120cb565b73ffffffffffffffffffffffffffffffffffffffff83163b15611858576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906116dd9088908890879087906004016131ab565b6020604051808303816000875af1925050508015611736575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261173391810190613206565b60015b6117c5573d808015611764576040519150601f19603f3d011682016040523d82523d6000602084013e611769565b606091505b5080516000036117bd576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611039576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b5050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610617565b611890612127565b565b61189a612127565b6107338282612165565b60606106178261190784600060076fffffffffffffffffffffffffffffffff8311901b9050600667ffffffffffffffff83831c11901b17600563ffffffff83831c11901b17600461ffff83831c11901b1760ff82821c1160039190911c17919050565b6001016121a8565b6000610617825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806119ac57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061061757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610617565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061061757506106178261117f565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611a94575073ffffffffffffffffffffffffffffffffffffffff831615155b15611c08576000611aa48561122b565b905073ffffffffffffffffffffffffffffffffffffffff841615801590611af757508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b55575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15611ba4576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b8215611c0657848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080611c6c8585856123c6565b905073ffffffffffffffffffffffffffffffffffffffff8116611d1457611d0f847f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b611d51565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d5157611d51818561258b565b73ffffffffffffffffffffffffffffffffffffffff8516611d7a57611d7584612646565b610d96565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9657610d968585612741565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610733576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610783565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f113390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610617565b6000915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff84166127bb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff841661280a565b60008260000182815481106120b8576120b8612f78565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561211b57602002820191906000526020600020905b815481526020019060010190808311612107575b50505050509050919050565b61212f6128f3565b611890576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61216d612127565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806121998482612fee565b50600181016108278382612fee565b60608260006121b8846002613252565b6121c3906002613269565b67ffffffffffffffff8111156121db576121db612c65565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db856002613252565b6122e6906001613269565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000083600f166010811061232757612327612f78565b1a60f81b82828151811061233d5761233d612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049290921c9161237c8161327c565b90506122e9565b508115610d96576040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610783565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff9081169084161561244157612441818587612912565b73ffffffffffffffffffffffffffffffffffffffff8116156124b95761246b600086600080611a52565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8616156125045773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0060006125b784610b8d565b600084815260018401602090815260408083205473ffffffffffffffffffffffffffffffffffffffff89168452918690529091209192509081831461261e576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02547f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090600090612699906001906132b1565b60008481526003840160205260408120546002850180549394509092849081106126c5576126c5612f78565b90600052602060002001549050808460020183815481106126e8576126e8612f78565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480612724576127246132c4565b600190038181906000526020600020016000905590555050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed006000600161276f85610b8d565b61277991906132b1565b73ffffffffffffffffffffffffffffffffffffffff90941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b600081815260018301602052604081205461280257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610617565b506000610617565b60008181526001830160205260408120548015611f7557600061282e6001836132b1565b8554909150600090612842906001906132b1565b90508082146128a757600086600001828154811061286257612862612f78565b906000526020600020015490508087600001848154811061288557612885612f78565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128b8576128b86132c4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610617565b60006128fd61185f565b5468010000000000000000900460ff16919050565b61291d8383836129c2565b6109835773ffffffffffffffffffffffffffffffffffffffff8316612971576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610783565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610783565b600073ffffffffffffffffffffffffffffffffffffffff831615801590610d9657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a6f575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b80610d9657505060009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a5857600080fd5b600060208284031215612b0457600080fd5b8135610e3781612ac4565b60005b83811015612b2a578181015183820152602001612b12565b50506000910152565b60008151808452612b4b816020860160208601612b0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e376020830184612b33565b600060208284031215612ba257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612bcd57600080fd5b919050565b60008060408385031215612be557600080fd5b612bee83612ba9565b946020939093013593505050565b600080600060608486031215612c1157600080fd5b612c1a84612ba9565b9250612c2860208501612ba9565b929592945050506040919091013590565b60008060408385031215612c4c57600080fd5b82359150612c5c60208401612ba9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115612caf57612caf612c65565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715612cfc57612cfc612c65565b604052838152905080828401851015612d1457600080fd5b83836020830137600060208583010152509392505050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff811115612d5557600080fd5b8201601f81018413612d6657600080fd5b610d9684823560208401612c94565b600060208284031215612d8757600080fd5b610e3782612ba9565b602080825282518282018190526000918401906040840190835b81811015612dc8578351835260209384019390920191600101612daa565b509095945050505050565b60008060408385031215612de657600080fd5b50508035926020909101359150565b60008060408385031215612e0857600080fd5b612e1183612ba9565b915060208301358015158114612e2657600080fd5b809150509250929050565b602080825282518282018190526000918401906040840190835b81811015612dc857835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612e4b565b60008060008060808587031215612e9557600080fd5b612e9e85612ba9565b9350612eac60208601612ba9565b925060408501359150606085013567ffffffffffffffff811115612ecf57600080fd5b8501601f81018713612ee057600080fd5b612eef87823560208401612c94565b91505092959194509250565b60008060408385031215612f0e57600080fd5b612f1783612ba9565b9150612c5c60208401612ba9565b600181811c90821680612f3957607f821691505b602082108103612f72577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561098357806000526020600020601f840160051c81016020851015612fce5750805b601f840160051c820191505b818110156118585760008155600101612fda565b815167ffffffffffffffff81111561300857613008612c65565b61301c816130168454612f25565b84612fa7565b6020601f82116001811461306e57600083156130385750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611858565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130bc578785015182556020948501946001909201910161309c565b50848210156130f857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600080845461311581612f25565b60018216801561312c576001811461315f5761318f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316865281151582028601935061318f565b87600052602060002060005b838110156131875781548882015260019091019060200161316b565b505081860193505b50505083516131a2818360208801612b0f565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006131fc6080830184612b33565b9695505050505050565b60006020828403121561321857600080fd5b8151610e3781612ac4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761061757610617613223565b8082018082111561061757610617613223565b60008161328b5761328b613223565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8181038181111561061757610617613223565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208c4aae2f7a484318b3b9e79fafec9a0f910f6f6aabe009b81f847d8c5b93834b64736f6c634300081e0033","output":"0x608060405234801561001057600080fd5b50600436106102265760003560e01c80636352211e1161012a578063a22cb465116100bd578063c87b56dd1161008c578063cf76a15311610071578063cf76a1531461057a578063d547741f14610582578063e985e9c51461059557600080fd5b8063c87b56dd14610554578063ca15c8731461056757600080fd5b8063a22cb465146104fb578063a3246ad31461050e578063b88d4fde1461052e578063c4d66de81461054157600080fd5b80639010d07c116100f95780639010d07c1461047357806391d148541461048657806395d89b41146104eb578063a217fddf146104f357600080fd5b80636352211e1461041a57806370a082311461042d5780638462151c146104405780638ff390991461046057600080fd5b80632f2ff15d116101bd57806342842e0e1161018c5780634cf088d9116101715780634cf088d9146103d45780634f6ccce7146103f457806355f804b31461040757600080fd5b806342842e0e146103ae57806342966c68146103c157600080fd5b80632f2ff15d146103625780632f745c591461037557806336568abe1461038857806340c10f191461039b57600080fd5b806318160ddd116101f957806318160ddd146102b55780631c8f7c20146102e657806323b872dd1461030d578063248a9ca31461032057600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b3146102a0575b600080fd5b61023e610239366004612af2565b6105fd565b60405190151581526020015b60405180910390f35b61025b61061d565b60405161024a9190612b7d565b61027b610276366004612b90565b6106d3565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b6102b36102ae366004612bd2565b610728565b005b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02545b60405190815260200161024a565b6102d87f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a81565b6102b361031b366004612bfc565b610737565b6102d861032e366004612b90565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102b3610370366004612c39565b61082d565b6102d8610383366004612bd2565b610871565b6102b3610396366004612c39565b61092a565b6102b36103a9366004612bd2565b610988565b6102b36103bc366004612bfc565b6109e3565b6102b36103cf366004612b90565b6109fe565b60005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102d8610402366004612b90565b610a5b565b6102b3610415366004612d2c565b610b10565b61027b610428366004612b90565b610b82565b6102d861043b366004612d75565b610b8d565b61045361044e366004612d75565b610c2e565b60405161024a9190612d90565b6102b361046e366004612d75565b610cc6565b61027b610481366004612dd3565b610d5d565b61023e610494366004612c39565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61025b610d9e565b6102d8600081565b6102b3610509366004612df5565b610def565b61052161051c366004612b90565b610dfa565b60405161024a9190612e31565b6102b361053c366004612e7f565b610e3e565b6102b361054f366004612d75565b610e56565b61025b610562366004612b90565b611041565b6102d8610575366004612b90565b611075565b61025b6110ad565b6102b3610590366004612c39565b61113b565b61023e6105a3366004612efb565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b60006106088261117f565b806106175750610617826111d5565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061064f90612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461067b90612f25565b80156106c85780601f1061069d576101008083540402835291602001916106c8565b820191906000526020600020905b8154815290600101906020018083116106ab57829003601f168201915b505050505091505090565b60006106de8261122b565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff16610617565b6107338282336112a9565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661078c576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006107998383336112b6565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610827576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610783565b50505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546108678161136d565b6108278383611377565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0061089d84610b8d565b83106108f4576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101849052604401610783565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602091825260408082208583529092522054905092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610979576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098382826113ce565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d9576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610733828261141c565b61098383838360405180602001604052806000815250610e3e565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a4f576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a58816114cd565b50565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00610aa67f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed025490565b8310610ae8576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526000600482015260248101849052604401610783565b806002018381548110610afd57610afd612f78565b9060005260206000200154915050919050565b7f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a610b3a8161136d565b6001610b468382612fee565b507f0b5e7f3f12bb283d66c974a1d529f3e44f27edd4aad7748c1d0058241ec0077582604051610b769190612b7d565b60405180910390a15050565b60006106178261122b565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316610c00576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b60606000610c3b83610b8d565b905060008167ffffffffffffffff811115610c5857610c58612c65565b604051908082528060200260200182016040528015610c81578160200160208202803683370190505b50905060005b82811015610cbe57610c998582610871565b828281518110610cab57610cab612f78565b6020908102919091010152600101610c87565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1615610d16576040517fd4376c1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610d96908461152e565b949350505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161064f90612f25565b61073333838361153a565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320006020819052604090912060609190610e379061165b565b9392505050565b610e49848484610737565b6108273385858585611668565b6000610e6061185f565b805490915060ff68010000000000000000820416159067ffffffffffffffff16600081158015610e8d5750825b905060008267ffffffffffffffff166001148015610eaa5750303b155b905081158015610eb8575080155b15610eef576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f58611888565b610fcc6040518060400160405280601a81526020017f526563616c6c205374616b696e67204e465420526563656970740000000000008152506040518060400160405280600681526020017f52534e4654520000000000000000000000000000000000000000000000000000815250611892565b610fd7600087611377565b5083156110395784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6060600161104e836118a4565b60405160200161105f929190613107565b6040516020818303038152906040529050919050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610e379061190f565b600180546110ba90612f25565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612f25565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505081565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111758161136d565b61082783836113ce565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610617575061061782611919565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806106175750610617826119fc565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610617576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610783565b6109838383836001611a52565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690851615801590611322575073ffffffffffffffffffffffffffffffffffffffff811615155b15611359576040517f6527f30c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611364858585611c5e565b95945050505050565b610a588133611db7565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113a58585611e5e565b90508015610d965760008581526020839052604090206113c59085611f7f565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113fc8585611fa1565b90508015610d965760008581526020839052604090206113c5908561207f565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b600061147a838360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff811615610983576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b60006114dc60008360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff8116610733576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610783565b6000610e3783836120a1565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166115c0576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60606000610e37836120cb565b73ffffffffffffffffffffffffffffffffffffffff83163b15611858576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906116dd9088908890879087906004016131ab565b6020604051808303816000875af1925050508015611736575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261173391810190613206565b60015b6117c5573d808015611764576040519150601f19603f3d011682016040523d82523d6000602084013e611769565b606091505b5080516000036117bd576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611039576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b5050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610617565b611890612127565b565b61189a612127565b6107338282612165565b60606106178261190784600060076fffffffffffffffffffffffffffffffff8311901b9050600667ffffffffffffffff83831c11901b17600563ffffffff83831c11901b17600461ffff83831c11901b1760ff82821c1160039190911c17919050565b6001016121a8565b6000610617825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806119ac57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061061757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610617565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061061757506106178261117f565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611a94575073ffffffffffffffffffffffffffffffffffffffff831615155b15611c08576000611aa48561122b565b905073ffffffffffffffffffffffffffffffffffffffff841615801590611af757508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b55575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15611ba4576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b8215611c0657848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080611c6c8585856123c6565b905073ffffffffffffffffffffffffffffffffffffffff8116611d1457611d0f847f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b611d51565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d5157611d51818561258b565b73ffffffffffffffffffffffffffffffffffffffff8516611d7a57611d7584612646565b610d96565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9657610d968585612741565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610733576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610783565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f113390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610617565b6000915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff84166127bb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff841661280a565b60008260000182815481106120b8576120b8612f78565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561211b57602002820191906000526020600020905b815481526020019060010190808311612107575b50505050509050919050565b61212f6128f3565b611890576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61216d612127565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806121998482612fee565b50600181016108278382612fee565b60608260006121b8846002613252565b6121c3906002613269565b67ffffffffffffffff8111156121db576121db612c65565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db856002613252565b6122e6906001613269565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000083600f166010811061232757612327612f78565b1a60f81b82828151811061233d5761233d612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049290921c9161237c8161327c565b90506122e9565b508115610d96576040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610783565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff9081169084161561244157612441818587612912565b73ffffffffffffffffffffffffffffffffffffffff8116156124b95761246b600086600080611a52565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8616156125045773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0060006125b784610b8d565b600084815260018401602090815260408083205473ffffffffffffffffffffffffffffffffffffffff89168452918690529091209192509081831461261e576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02547f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090600090612699906001906132b1565b60008481526003840160205260408120546002850180549394509092849081106126c5576126c5612f78565b90600052602060002001549050808460020183815481106126e8576126e8612f78565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480612724576127246132c4565b600190038181906000526020600020016000905590555050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed006000600161276f85610b8d565b61277991906132b1565b73ffffffffffffffffffffffffffffffffffffffff90941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b600081815260018301602052604081205461280257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610617565b506000610617565b60008181526001830160205260408120548015611f7557600061282e6001836132b1565b8554909150600090612842906001906132b1565b90508082146128a757600086600001828154811061286257612862612f78565b906000526020600020015490508087600001848154811061288557612885612f78565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128b8576128b86132c4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610617565b60006128fd61185f565b5468010000000000000000900460ff16919050565b61291d8383836129c2565b6109835773ffffffffffffffffffffffffffffffffffffffff8316612971576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610783565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610783565b600073ffffffffffffffffffffffffffffffffffffffff831615801590610d9657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a6f575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b80610d9657505060009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a5857600080fd5b600060208284031215612b0457600080fd5b8135610e3781612ac4565b60005b83811015612b2a578181015183820152602001612b12565b50506000910152565b60008151808452612b4b816020860160208601612b0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e376020830184612b33565b600060208284031215612ba257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612bcd57600080fd5b919050565b60008060408385031215612be557600080fd5b612bee83612ba9565b946020939093013593505050565b600080600060608486031215612c1157600080fd5b612c1a84612ba9565b9250612c2860208501612ba9565b929592945050506040919091013590565b60008060408385031215612c4c57600080fd5b82359150612c5c60208401612ba9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115612caf57612caf612c65565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715612cfc57612cfc612c65565b604052838152905080828401851015612d1457600080fd5b83836020830137600060208583010152509392505050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff811115612d5557600080fd5b8201601f81018413612d6657600080fd5b610d9684823560208401612c94565b600060208284031215612d8757600080fd5b610e3782612ba9565b602080825282518282018190526000918401906040840190835b81811015612dc8578351835260209384019390920191600101612daa565b509095945050505050565b60008060408385031215612de657600080fd5b50508035926020909101359150565b60008060408385031215612e0857600080fd5b612e1183612ba9565b915060208301358015158114612e2657600080fd5b809150509250929050565b602080825282518282018190526000918401906040840190835b81811015612dc857835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612e4b565b60008060008060808587031215612e9557600080fd5b612e9e85612ba9565b9350612eac60208601612ba9565b925060408501359150606085013567ffffffffffffffff811115612ecf57600080fd5b8501601f81018713612ee057600080fd5b612eef87823560208401612c94565b91505092959194509250565b60008060408385031215612f0e57600080fd5b612f1783612ba9565b9150612c5c60208401612ba9565b600181811c90821680612f3957607f821691505b602082108103612f72577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561098357806000526020600020601f840160051c81016020851015612fce5750805b601f840160051c820191505b818110156118585760008155600101612fda565b815167ffffffffffffffff81111561300857613008612c65565b61301c816130168454612f25565b84612fa7565b6020601f82116001811461306e57600083156130385750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611858565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130bc578785015182556020948501946001909201910161309c565b50848210156130f857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600080845461311581612f25565b60018216801561312c576001811461315f5761318f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316865281151582028601935061318f565b87600052602060002060005b838110156131875781548882015260019091019060200161316b565b505081860193505b50505083516131a2818360208801612b0f565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006131fc6080830184612b33565b9695505050505050565b60006020828403121561321857600080fd5b8151610e3781612ac4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761061757610617613223565b8082018082111561061757610617613223565b60008161328b5761328b613223565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8181038181111561061757610617613223565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208c4aae2f7a484318b3b9e79fafec9a0f910f6f6aabe009b81f847d8c5b93834b64736f6c634300081e0033","gas_used":2645763,"gas_limit":2645763,"status":"Return","steps":[],"decoded":null},"logs":[{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"},"decoded":null,"position":0,"index":0}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x608060405234801561001057600080fd5b50600436106102265760003560e01c80636352211e1161012a578063a22cb465116100bd578063c87b56dd1161008c578063cf76a15311610071578063cf76a1531461057a578063d547741f14610582578063e985e9c51461059557600080fd5b8063c87b56dd14610554578063ca15c8731461056757600080fd5b8063a22cb465146104fb578063a3246ad31461050e578063b88d4fde1461052e578063c4d66de81461054157600080fd5b80639010d07c116100f95780639010d07c1461047357806391d148541461048657806395d89b41146104eb578063a217fddf146104f357600080fd5b80636352211e1461041a57806370a082311461042d5780638462151c146104405780638ff390991461046057600080fd5b80632f2ff15d116101bd57806342842e0e1161018c5780634cf088d9116101715780634cf088d9146103d45780634f6ccce7146103f457806355f804b31461040757600080fd5b806342842e0e146103ae57806342966c68146103c157600080fd5b80632f2ff15d146103625780632f745c591461037557806336568abe1461038857806340c10f191461039b57600080fd5b806318160ddd116101f957806318160ddd146102b55780631c8f7c20146102e657806323b872dd1461030d578063248a9ca31461032057600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b3146102a0575b600080fd5b61023e610239366004612af2565b6105fd565b60405190151581526020015b60405180910390f35b61025b61061d565b60405161024a9190612b7d565b61027b610276366004612b90565b6106d3565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b6102b36102ae366004612bd2565b610728565b005b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02545b60405190815260200161024a565b6102d87f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a81565b6102b361031b366004612bfc565b610737565b6102d861032e366004612b90565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b6102b3610370366004612c39565b61082d565b6102d8610383366004612bd2565b610871565b6102b3610396366004612c39565b61092a565b6102b36103a9366004612bd2565b610988565b6102b36103bc366004612bfc565b6109e3565b6102b36103cf366004612b90565b6109fe565b60005461027b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102d8610402366004612b90565b610a5b565b6102b3610415366004612d2c565b610b10565b61027b610428366004612b90565b610b82565b6102d861043b366004612d75565b610b8d565b61045361044e366004612d75565b610c2e565b60405161024a9190612d90565b6102b361046e366004612d75565b610cc6565b61027b610481366004612dd3565b610d5d565b61023e610494366004612c39565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61025b610d9e565b6102d8600081565b6102b3610509366004612df5565b610def565b61052161051c366004612b90565b610dfa565b60405161024a9190612e31565b6102b361053c366004612e7f565b610e3e565b6102b361054f366004612d75565b610e56565b61025b610562366004612b90565b611041565b6102d8610575366004612b90565b611075565b61025b6110ad565b6102b3610590366004612c39565b61113b565b61023e6105a3366004612efb565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b60006106088261117f565b806106175750610617826111d5565b92915050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300805460609190819061064f90612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461067b90612f25565b80156106c85780601f1061069d576101008083540402835291602001916106c8565b820191906000526020600020905b8154815290600101906020018083116106ab57829003601f168201915b505050505091505090565b60006106de8261122b565b5060008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff16610617565b6107338282336112a9565b5050565b73ffffffffffffffffffffffffffffffffffffffff821661078c576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b60006107998383336112b6565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610827576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301526024820184905282166044820152606401610783565b50505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546108678161136d565b6108278383611377565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0061089d84610b8d565b83106108f4576040517fa57d13dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101849052604401610783565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602091825260408082208583529092522054905092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610979576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61098382826113ce565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109d9576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610733828261141c565b61098383838360405180602001604052806000815250610e3e565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a4f576040517fec9210e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a58816114cd565b50565b60007f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00610aa67f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed025490565b8310610ae8576040517fa57d13dc0000000000000000000000000000000000000000000000000000000081526000600482015260248101849052604401610783565b806002018381548110610afd57610afd612f78565b9060005260206000200154915050919050565b7f1f93094cd0f2cdc97e7a2802c03a212c9a8d68e54ca4e6a0180aee06baf7fd9a610b3a8161136d565b6001610b468382612fee565b507f0b5e7f3f12bb283d66c974a1d529f3e44f27edd4aad7748c1d0058241ec0077582604051610b769190612b7d565b60405180910390a15050565b60006106178261122b565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff8316610c00576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff9092166000908152600390920160205250604090205490565b60606000610c3b83610b8d565b905060008167ffffffffffffffff811115610c5857610c58612c65565b604051908082528060200260200182016040528015610c81578160200160208202803683370190505b50905060005b82811015610cbe57610c998582610871565b828281518110610cab57610cab612f78565b6020908102919091010152600101610c87565b509392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1615610d16576040517fd4376c1c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610d96908461152e565b949350505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060917f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009161064f90612f25565b61073333838361153a565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320006020819052604090912060609190610e379061165b565b9392505050565b610e49848484610737565b6108273385858585611668565b6000610e6061185f565b805490915060ff68010000000000000000820416159067ffffffffffffffff16600081158015610e8d5750825b905060008267ffffffffffffffff166001148015610eaa5750303b155b905081158015610eb8575080155b15610eef576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610f505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610f58611888565b610fcc6040518060400160405280601a81526020017f526563616c6c205374616b696e67204e465420526563656970740000000000008152506040518060400160405280600681526020017f52534e4654520000000000000000000000000000000000000000000000000000815250611892565b610fd7600087611377565b5083156110395784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6060600161104e836118a4565b60405160200161105f929190613107565b6040516020818303038152906040529050919050565b60008181527fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000602081905260408220610e379061190f565b600180546110ba90612f25565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612f25565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b505050505081565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546111758161136d565b61082783836113ce565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610617575061061782611919565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806106175750610617826119fc565b60008181527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610617576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610783565b6109838383836001611a52565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079302602052604081205473ffffffffffffffffffffffffffffffffffffffff90811690851615801590611322575073ffffffffffffffffffffffffffffffffffffffff811615155b15611359576040517f6527f30c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611364858585611c5e565b95945050505050565b610a588133611db7565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113a58585611e5e565b90508015610d965760008581526020839052604090206113c59085611f7f565b50949350505050565b60007fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000816113fc8585611fa1565b90508015610d965760008581526020839052604090206113c5908561207f565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b600061147a838360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff811615610983576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610783565b60006114dc60008360006112b6565b905073ffffffffffffffffffffffffffffffffffffffff8116610733576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101839052602401610783565b6000610e3783836120a1565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930073ffffffffffffffffffffffffffffffffffffffff83166115c0576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610783565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260058401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60606000610e37836120cb565b73ffffffffffffffffffffffffffffffffffffffff83163b15611858576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a02906116dd9088908890879087906004016131ab565b6020604051808303816000875af1925050508015611736575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261173391810190613206565b60015b6117c5573d808015611764576040519150601f19603f3d011682016040523d82523d6000602084013e611769565b606091505b5080516000036117bd576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014611039576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b5050505050565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610617565b611890612127565b565b61189a612127565b6107338282612165565b60606106178261190784600060076fffffffffffffffffffffffffffffffff8311901b9050600667ffffffffffffffff83831c11901b17600563ffffffff83831c11901b17600461ffff83831c11901b1760ff82821c1160039190911c17919050565b6001016121a8565b6000610617825490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806119ac57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061061757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610617565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061061757506106178261117f565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793008180611a94575073ffffffffffffffffffffffffffffffffffffffff831615155b15611c08576000611aa48561122b565b905073ffffffffffffffffffffffffffffffffffffffff841615801590611af757508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611b55575073ffffffffffffffffffffffffffffffffffffffff80821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209388168352929052205460ff16155b15611ba4576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610783565b8215611c0657848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600080611c6c8585856123c6565b905073ffffffffffffffffffffffffffffffffffffffff8116611d1457611d0f847f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02805460008381527f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0360205260408120829055600182018355919091527fa42f15e5d656f8155fd7419d740a6073999f19cd6e061449ce4a257150545bf20155565b611d51565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611d5157611d51818561258b565b73ffffffffffffffffffffffffffffffffffffffff8516611d7a57611d7584612646565b610d96565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9657610d968585612741565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610733576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610783565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611f113390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610617565b6000915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff84166127bb565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff1615611f755760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610617565b6000610e378373ffffffffffffffffffffffffffffffffffffffff841661280a565b60008260000182815481106120b8576120b8612f78565b9060005260206000200154905092915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561211b57602002820191906000526020600020905b815481526020019060010190808311612107575b50505050509050919050565b61212f6128f3565b611890576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61216d612127565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300806121998482612fee565b50600181016108278382612fee565b60608260006121b8846002613252565b6121c3906002613269565b67ffffffffffffffff8111156121db576121db612c65565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db856002613252565b6122e6906001613269565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000083600f166010811061232757612327612f78565b1a60f81b82828151811061233d5761233d612f78565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049290921c9161237c8161327c565b90506122e9565b508115610d96576040517fe22e27eb0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604401610783565b60008281527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260408120547f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793009073ffffffffffffffffffffffffffffffffffffffff9081169084161561244157612441818587612912565b73ffffffffffffffffffffffffffffffffffffffff8116156124b95761246b600086600080611a52565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600383016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff8616156125045773ffffffffffffffffffffffffffffffffffffffff861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0060006125b784610b8d565b600084815260018401602090815260408083205473ffffffffffffffffffffffffffffffffffffffff89168452918690529091209192509081831461261e576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed02547f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090600090612699906001906132b1565b60008481526003840160205260408120546002850180549394509092849081106126c5576126c5612f78565b90600052602060002001549050808460020183815481106126e8576126e8612f78565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480612724576127246132c4565b600190038181906000526020600020016000905590555050505050565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed006000600161276f85610b8d565b61277991906132b1565b73ffffffffffffffffffffffffffffffffffffffff90941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b600081815260018301602052604081205461280257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610617565b506000610617565b60008181526001830160205260408120548015611f7557600061282e6001836132b1565b8554909150600090612842906001906132b1565b90508082146128a757600086600001828154811061286257612862612f78565b906000526020600020015490508087600001848154811061288557612885612f78565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806128b8576128b86132c4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610617565b60006128fd61185f565b5468010000000000000000900460ff16919050565b61291d8383836129c2565b6109835773ffffffffffffffffffffffffffffffffffffffff8316612971576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610783565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610783565b600073ffffffffffffffffffffffffffffffffffffffff831615801590610d9657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a6f575073ffffffffffffffffffffffffffffffffffffffff80851660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079305602090815260408083209387168352929052205460ff165b80610d9657505060009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079304602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a5857600080fd5b600060208284031215612b0457600080fd5b8135610e3781612ac4565b60005b83811015612b2a578181015183820152602001612b12565b50506000910152565b60008151808452612b4b816020860160208601612b0f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e376020830184612b33565b600060208284031215612ba257600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612bcd57600080fd5b919050565b60008060408385031215612be557600080fd5b612bee83612ba9565b946020939093013593505050565b600080600060608486031215612c1157600080fd5b612c1a84612ba9565b9250612c2860208501612ba9565b929592945050506040919091013590565b60008060408385031215612c4c57600080fd5b82359150612c5c60208401612ba9565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff841115612caf57612caf612c65565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff82111715612cfc57612cfc612c65565b604052838152905080828401851015612d1457600080fd5b83836020830137600060208583010152509392505050565b600060208284031215612d3e57600080fd5b813567ffffffffffffffff811115612d5557600080fd5b8201601f81018413612d6657600080fd5b610d9684823560208401612c94565b600060208284031215612d8757600080fd5b610e3782612ba9565b602080825282518282018190526000918401906040840190835b81811015612dc8578351835260209384019390920191600101612daa565b509095945050505050565b60008060408385031215612de657600080fd5b50508035926020909101359150565b60008060408385031215612e0857600080fd5b612e1183612ba9565b915060208301358015158114612e2657600080fd5b809150509250929050565b602080825282518282018190526000918401906040840190835b81811015612dc857835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101612e4b565b60008060008060808587031215612e9557600080fd5b612e9e85612ba9565b9350612eac60208601612ba9565b925060408501359150606085013567ffffffffffffffff811115612ecf57600080fd5b8501601f81018713612ee057600080fd5b612eef87823560208401612c94565b91505092959194509250565b60008060408385031215612f0e57600080fd5b612f1783612ba9565b9150612c5c60208401612ba9565b600181811c90821680612f3957607f821691505b602082108103612f72577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b601f82111561098357806000526020600020601f840160051c81016020851015612fce5750805b601f840160051c820191505b818110156118585760008155600101612fda565b815167ffffffffffffffff81111561300857613008612c65565b61301c816130168454612f25565b84612fa7565b6020601f82116001811461306e57600083156130385750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611858565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156130bc578785015182556020948501946001909201910161309c565b50848210156130f857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600080845461311581612f25565b60018216801561312c576001811461315f5761318f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316865281151582028601935061318f565b87600052602060002060005b838110156131875781548882015260019091019060200161316b565b505081860193505b50505083516131a2818360208801612b0f565b01949350505050565b73ffffffffffffffffffffffffffffffffffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006131fc6080830184612b33565b9695505050505050565b60006020828403121561321857600080fd5b8151610e3781612ac4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761061757610617613223565b8082018082111561061757610617613223565b60008161328b5761328b613223565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b8181038181111561061757610617613223565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212208c4aae2f7a484318b3b9e79fafec9a0f910f6f6aabe009b81f847d8c5b93834b64736f6c634300081e0033","nonce":11,"gas_used":2891753},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x2c1fe9","logs":[{"address":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff"}],"logsBloom":"0x00000000100000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x625f13cdc7304c7e3f2b331adabd4d3ec45dfcc133cdd0944fc999d7ccdb4cf4","block_number":12}],"historical_states":null} \ No newline at end of file diff --git a/local/anvil/generate-state.sh b/local/anvil/generate-state.sh new file mode 100755 index 000000000..8a67c8dc6 --- /dev/null +++ b/local/anvil/generate-state.sh @@ -0,0 +1,83 @@ +#!/bin/bash +set -e + +STATE_FILE="/tmp/anvil-state.json" + +echo "===================================" +echo " Generating Anvil State" +echo "===================================" +echo "" + +# Start anvil in background with dump-state +echo "Starting anvil in background..." +anvil --chain-id 31337 --dump-state "$STATE_FILE" & +ANVIL_PID=$! +sleep 3 + +# Wait for anvil to be ready +echo "Waiting for anvil to be ready..." +for i in {1..10}; do + if cast block-number --rpc-url http://localhost:8545 > /dev/null 2>&1; then + echo "Anvil is ready!" + break + fi + if [ $i -eq 10 ]; then + echo "Error: Anvil failed to start" + kill $ANVIL_PID 2>/dev/null || true + exit 1 + fi + sleep 1 +done + +# Deploy contracts and capture output +echo "Deploying contracts..." +cd /contracts +ANVIL_URL=http://localhost:8545 npx hardhat deploy --network docker --reset 2>&1 | tee /tmp/deploy-output.log + +# Extract and display contract addresses for documentation +echo "" +echo "===================================" +echo " Deployed Contract Addresses" +echo "===================================" +echo "" +grep -E "(deployed to|deployed at|created at):" /tmp/deploy-output.log || echo "See deployment logs above for addresses" +echo "" + +# Stop anvil (triggers state dump) +echo "Stopping anvil and dumping state..." +kill $ANVIL_PID 2>/dev/null || true +sleep 1 + +# Check if process is still running and force kill if necessary +if ps -p $ANVIL_PID > /dev/null 2>&1; then + echo "Anvil didn't stop gracefully, forcing shutdown..." + kill -9 $ANVIL_PID 2>/dev/null || true +fi + +wait $ANVIL_PID 2>/dev/null || true + +# Verify anvil is stopped +if ps -p $ANVIL_PID > /dev/null 2>&1; then + echo "Warning: Anvil process $ANVIL_PID may still be running" +else + echo "Anvil stopped successfully" +fi + +# Verify state file was created +if [ ! -f "$STATE_FILE" ]; then + echo "Error: State file was not created!" + exit 1 +fi + +if [ ! -s "$STATE_FILE" ]; then + echo "Error: State file is empty!" + exit 1 +fi + +echo "" +echo "===================================" +echo " State file generated!" +echo "===================================" +echo "" +echo "State saved to: $STATE_FILE" +ls -lh "$STATE_FILE" diff --git a/local/anvil/rebuild-state.sh b/local/anvil/rebuild-state.sh new file mode 100755 index 000000000..8bced919b --- /dev/null +++ b/local/anvil/rebuild-state.sh @@ -0,0 +1,70 @@ +#!/bin/bash +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +STATE_FILE="$SCRIPT_DIR/anvil-state.json" + +echo "===================================" +echo " Rebuilding Anvil State" +echo "===================================" +echo "" +echo "This script deploys contracts to an anvil instance running in a container" +echo "and extracts the blockchain state for use in Docker." +echo "" + +# Remove old state file if it exists +rm -f "$STATE_FILE" + +# Build the state generation image +echo "Building state generation container..." +cd "$REPO_ROOT" +docker build -f local/anvil/Dockerfile.stategen -t recall-anvil-stategen . + +# Run the container to generate state +echo "" +echo "Running state generation container..." +CONTAINER_ID=$(docker run -d recall-anvil-stategen) + +# Follow the logs +docker logs -f "$CONTAINER_ID" 2>&1 || true + +# Wait for container to finish +echo "" +echo "Waiting for container to complete..." +docker wait "$CONTAINER_ID" > /dev/null 2>&1 || true + +# Copy the state file out of the container +echo "Extracting state file from container..." +docker cp "$CONTAINER_ID:/tmp/anvil-state.json" "$STATE_FILE" 2>/dev/null || true + +# Remove the container now that we've copied the file +echo "Cleaning up container..." +docker rm "$CONTAINER_ID" > /dev/null 2>&1 + +# Verify state file was created and is not empty +if [ ! -f "$STATE_FILE" ]; then + echo "Error: State file was not created!" + exit 1 +fi + +if [ ! -s "$STATE_FILE" ]; then + echo "Error: State file is empty!" + exit 1 +fi + +echo "" +echo "===================================" +echo " State file generated!" +echo "===================================" +echo "" +echo "State saved to: $STATE_FILE" +echo "File size: $(ls -lh "$STATE_FILE" | awk '{print $5}')" +echo "" +echo "Next steps:" +echo " 1. Rebuild the anvil image:" +echo " docker compose build anvil" +echo "" +echo " 2. Start the services:" +echo " docker compose up" +echo "" diff --git a/local/cron/Dockerfile b/local/cron/Dockerfile new file mode 100644 index 000000000..a46df3bcb --- /dev/null +++ b/local/cron/Dockerfile @@ -0,0 +1,24 @@ +FROM alpine:3.20 + +# Install curl for making HTTP requests and ca-certificates for HTTPS +RUN apk add --no-cache curl ca-certificates + +# Install supercronic (lightweight cron for containers) +ARG SUPERCRONIC_VERSION=v0.2.33 +ARG SUPERCRONIC_SHA256=feefa310da569c81b99e1027b86b27b51e6ee9ab647747b49099645120cfc671 +RUN curl -fsSL "https://github.com/aptible/supercronic/releases/download/${SUPERCRONIC_VERSION}/supercronic-linux-amd64" \ + -o /usr/local/bin/supercronic \ + && echo "${SUPERCRONIC_SHA256} /usr/local/bin/supercronic" | sha256sum -c - \ + && chmod +x /usr/local/bin/supercronic + +# Create app directory +WORKDIR /app + +# Copy cron scripts +COPY crontab /app/crontab +COPY run-cron.sh /app/run-cron.sh + +RUN chmod +x /app/run-cron.sh + +# Run supercronic with the crontab +CMD ["/usr/local/bin/supercronic", "/app/crontab"] diff --git a/local/cron/crontab b/local/cron/crontab new file mode 100644 index 000000000..1675dce79 --- /dev/null +++ b/local/cron/crontab @@ -0,0 +1,19 @@ +# Cron schedule for local development +# Format: minute hour day month weekday command + +# Competition lifecycle (every minute) +* * * * * /app/run-cron.sh auto-start-competitions +* * * * * /app/run-cron.sh auto-end-competitions + +# Portfolio snapshots - trading competitions (every 5 minutes) +*/5 * * * * /app/run-cron.sh take-portfolio-snapshots + +# Perps competition processing (every minute) +* * * * * /app/run-cron.sh process-perps-competitions + +# Rewards calculation (every minute - only processes if competitions need it) +* * * * * /app/run-cron.sh auto-calculate-rewards + +# Staking indexers (every minute - controlled by INDEXING_ENABLED env var) +* * * * * /app/run-cron.sh index-staking-events +* * * * * /app/run-cron.sh index-staking-transactions diff --git a/local/cron/run-cron.sh b/local/cron/run-cron.sh new file mode 100644 index 000000000..5449f5660 --- /dev/null +++ b/local/cron/run-cron.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +# Cron runner script for local development +# Calls the comps app cron endpoints with proper authentication + +set -e + +COMPS_URL="${COMPS_URL:-http://host.docker.internal:3001}" +CRON_SECRET="${CRON_SECRET:-local-dev-secret}" + +# Silent retry - if endpoint is unavailable, just log and continue +call_cron() { + endpoint="$1" + + echo "[$(date -Iseconds)] Running: $endpoint" + + response=$(curl -s -w "\n%{http_code}" -X GET \ + "${COMPS_URL}/api/cron/${endpoint}" \ + -H "Authorization: Bearer ${CRON_SECRET}" \ + -H "Content-Type: application/json" \ + --connect-timeout 5 \ + --max-time 120 \ + 2>/dev/null) || { + echo "[$(date -Iseconds)] $endpoint: Connection failed (comps not ready?)" + return 0 + } + + http_code=$(echo "$response" | tail -n1) + body=$(echo "$response" | sed '$d') + + if [ "$http_code" = "200" ]; then + echo "[$(date -Iseconds)] $endpoint: OK" + else + echo "[$(date -Iseconds)] $endpoint: HTTP $http_code" + echo "$body" | head -c 200 + echo "" + fi +} + +# Main entry point - called by supercronic with endpoint name as argument +case "$1" in + "auto-start-competitions"|"auto-end-competitions"|"take-portfolio-snapshots"|"process-perps-competitions"|"auto-calculate-rewards"|"index-staking-events"|"index-staking-transactions") + call_cron "$1" + ;; + *) + echo "Usage: $0 " + echo "Valid endpoints:" + echo " auto-start-competitions" + echo " auto-end-competitions" + echo " take-portfolio-snapshots" + echo " process-perps-competitions" + echo " auto-calculate-rewards" + echo " index-staking-events" + echo " index-staking-transactions" + exit 1 + ;; +esac diff --git a/local/eslint.config.js b/local/eslint.config.js new file mode 100644 index 000000000..a5d075edc --- /dev/null +++ b/local/eslint.config.js @@ -0,0 +1,4 @@ +import { config } from "@recallnet/eslint-config/base"; + +/** @type {import("eslint").Linter.Config} */ +export default config; diff --git a/local/package.json b/local/package.json new file mode 100644 index 000000000..d7176c7fb --- /dev/null +++ b/local/package.json @@ -0,0 +1,25 @@ +{ + "name": "@recallnet/local", + "version": "1.0.0", + "private": true, + "type": "module", + "description": "Local development utilities", + "scripts": { + "seed": "tsx seed/src/index.ts", + "format": "prettier --write . --ignore-path=../.prettierignore", + "format:check": "prettier --check . --ignore-path=../.prettierignore", + "lint": "eslint . --max-warnings 0", + "check-types": "tsc --noEmit" + }, + "dependencies": { + "@recallnet/db": "workspace:*", + "drizzle-orm": "^0.43.1", + "pg": "^8.13.1" + }, + "devDependencies": { + "@types/node": "^22.10.2", + "@types/pg": "^8.11.10", + "tsx": "^4.19.2", + "typescript": "^5.7.2" + } +} diff --git a/local/seed/Dockerfile b/local/seed/Dockerfile new file mode 100644 index 000000000..8d62ecd66 --- /dev/null +++ b/local/seed/Dockerfile @@ -0,0 +1,36 @@ +FROM node:22-alpine + +WORKDIR /app + +# Install pnpm +RUN corepack enable && corepack prepare pnpm@latest --activate + +# Copy root package files for workspace setup +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ + +# Copy seed service files +COPY local/package.json ./local/ +COPY local/tsconfig.json ./local/ + +# Copy shared packages that seed depends on +COPY packages/db ./packages/db +COPY packages/typescript-config ./packages/typescript-config + +# Copy migrations +COPY apps/api/drizzle ./apps/api/drizzle + +# Install dependencies +RUN pnpm install --frozen-lockfile + +# Build @recallnet/db package +RUN pnpm --filter @recallnet/db build + +# Copy seed source code and data +COPY local/seed/src ./local/seed/src +COPY local/seed/data ./local/seed/data + +# Set working directory to seed service +WORKDIR /app/local + +# Run the seed script +CMD ["pnpm", "seed"] diff --git a/local/seed/data/arenas.json b/local/seed/data/arenas.json new file mode 100644 index 000000000..a758abd43 --- /dev/null +++ b/local/seed/data/arenas.json @@ -0,0 +1,34 @@ +[ + { + "name": "Spot Trading", + "category": "trading", + "skill": "spot", + "venues": ["dex"], + "chains": ["ethereum", "base", "arbitrum"], + "kind": "competitive" + }, + { + "name": "Perpetuals Trading", + "category": "trading", + "skill": "perpetuals", + "venues": ["perps"], + "chains": ["ethereum", "base", "arbitrum"], + "kind": "competitive" + }, + { + "name": "Cross-Chain Trading", + "category": "trading", + "skill": "cross-chain", + "venues": ["dex", "bridge"], + "chains": ["ethereum", "base", "arbitrum", "polygon"], + "kind": "competitive" + }, + { + "name": "DeFi Strategies", + "category": "defi", + "skill": "yield", + "venues": ["lending", "staking", "liquidity"], + "chains": ["ethereum", "base"], + "kind": "competitive" + } +] diff --git a/local/seed/data/competitions.json b/local/seed/data/competitions.json new file mode 100644 index 000000000..44c2f7abd --- /dev/null +++ b/local/seed/data/competitions.json @@ -0,0 +1,324 @@ +[ + { + "name": "Winter Perpetuals Championship", + "description": "Trade perpetual futures with advanced risk management strategies. Compete for the highest Calmar ratio over 30 days.", + "arenaName": "Perpetuals Trading", + "type": "perpetual_futures", + "status": "ended", + "seedDateState": "ended", + "imageUrl": "https://picsum.photos/seed/perps-winter/800/400", + "externalUrl": null, + "startDate": "2024-01-15T00:00:00Z", + "endDate": "2024-02-14T23:59:59Z", + "boostStartDate": "2024-01-10T00:00:00Z", + "boostEndDate": "2024-01-15T00:00:00Z", + "joinStartDate": "2024-01-01T00:00:00Z", + "joinEndDate": "2024-01-14T23:59:59Z", + "maxParticipants": 100, + "minimumStake": "100", + "minRecallRank": null, + "allowlistOnly": false, + "vips": [], + "allowlist": [], + "blocklist": [], + "agentAllocation": "10000", + "agentAllocationUnit": "USDC", + "boosterAllocation": "5000", + "boosterAllocationUnit": "USDC", + "boostTimeDecayRate": "0.05", + "rewardRules": { + "distribution": "tiered", + "prizes": [ + { "rank": 1, "amount": "5000", "unit": "USDC" }, + { "rank": 2, "amount": "3000", "unit": "USDC" }, + { "rank": 3, "amount": "2000", "unit": "USDC" }, + { "ranks": [4, 10], "amount": "500", "unit": "USDC" } + ] + }, + "rewardDetails": "Top 10 agents receive USDC rewards based on Calmar ratio performance.", + "sandboxMode": false, + "displayState": "active", + "tradingConfig": { + "dataSource": "external_api", + "evaluationMetric": "calmar_ratio", + "initialCapital": "10000", + "selfFundingThresholdUsd": "1000", + "minFundingThreshold": "100", + "inactivityHours": 72 + } + }, + { + "name": "Spring Spot Trading Challenge", + "description": "Live spot trading competition on Base network. Trade approved tokens with real-time portfolio tracking.", + "arenaName": "Spot Trading", + "type": "spot_live_trading", + "status": "active", + "seedDateState": "active-noboost", + "imageUrl": "https://picsum.photos/seed/spot-spring/800/400", + "externalUrl": null, + "startDate": "2024-03-01T00:00:00Z", + "endDate": "2024-04-30T23:59:59Z", + "boostStartDate": "2024-02-25T00:00:00Z", + "boostEndDate": "2024-03-01T00:00:00Z", + "joinStartDate": "2024-02-20T00:00:00Z", + "joinEndDate": "2024-03-15T23:59:59Z", + "maxParticipants": 200, + "minimumStake": "50", + "minRecallRank": 100, + "allowlistOnly": false, + "vips": [], + "allowlist": [], + "blocklist": [], + "agentAllocation": "5000", + "agentAllocationUnit": "USDC", + "boosterAllocation": "2500", + "boosterAllocationUnit": "USDC", + "boostTimeDecayRate": "0.03", + "rewardRules": { + "distribution": "tiered", + "prizes": [ + { "rank": 1, "amount": "10000", "unit": "USDC" }, + { "rank": 2, "amount": "6000", "unit": "USDC" }, + { "rank": 3, "amount": "4000", "unit": "USDC" }, + { "ranks": [4, 10], "amount": "1000", "unit": "USDC" }, + { "ranks": [11, 25], "amount": "500", "unit": "USDC" } + ] + }, + "rewardDetails": "Top 25 agents share a 30,000 USDC prize pool based on PnL performance.", + "sandboxMode": false, + "displayState": "active", + "tradingConfig": { + "dataSource": "rpc_direct", + "selfFundingThresholdUsd": "500", + "minFundingThreshold": "50", + "inactivityHours": 48, + "syncIntervalMinutes": 5, + "chains": [ + { + "specificChain": "base", + "enabled": true + } + ], + "allowedTokens": [ + { + "specificChain": "base", + "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "tokenSymbol": "USDC" + }, + { + "specificChain": "base", + "tokenAddress": "0x4200000000000000000000000000000000000006", + "tokenSymbol": "WETH" + }, + { + "specificChain": "base", + "tokenAddress": "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + "tokenSymbol": "DAI" + } + ], + "allowedProtocols": [ + { + "specificChain": "base", + "protocol": "uniswap-v3", + "routerAddress": "0x2626664c2603336E57B271c5C0b26F421741e481", + "factoryAddress": "0x33128a8fC17869897dcE68Ed026d694621f6FDfD" + } + ] + } + }, + { + "name": "Cross-Chain Masters Series", + "description": "Advanced cross-chain trading competition. Optimize trades across multiple chains and bridges.", + "arenaName": "Cross-Chain Trading", + "type": "spot_live_trading", + "status": "active", + "seedDateState": "active-boost", + "imageUrl": "https://picsum.photos/seed/cross-chain/800/400", + "externalUrl": "https://recall.trade/competitions/cross-chain", + "startDate": "2024-03-10T00:00:00Z", + "endDate": "2024-05-10T23:59:59Z", + "boostStartDate": "2024-03-05T00:00:00Z", + "boostEndDate": "2024-03-10T00:00:00Z", + "joinStartDate": "2024-03-01T00:00:00Z", + "joinEndDate": "2024-03-20T23:59:59Z", + "maxParticipants": 50, + "minimumStake": "500", + "minRecallRank": 500, + "allowlistOnly": false, + "vips": [], + "allowlist": [], + "blocklist": [], + "agentAllocation": "25000", + "agentAllocationUnit": "USDC", + "boosterAllocation": "10000", + "boosterAllocationUnit": "USDC", + "boostTimeDecayRate": "0.08", + "rewardRules": { + "distribution": "tiered", + "prizes": [ + { "rank": 1, "amount": "50000", "unit": "USDC" }, + { "rank": 2, "amount": "30000", "unit": "USDC" }, + { "rank": 3, "amount": "20000", "unit": "USDC" }, + { "ranks": [4, 5], "amount": "10000", "unit": "USDC" } + ] + }, + "rewardDetails": "Elite competition with 120,000 USDC prize pool. Requires advanced ranking.", + "sandboxMode": false, + "displayState": "active", + "tradingConfig": { + "dataSource": "rpc_direct", + "selfFundingThresholdUsd": "2000", + "minFundingThreshold": "500", + "inactivityHours": 24, + "syncIntervalMinutes": 3, + "chains": [ + { + "specificChain": "eth", + "enabled": true + }, + { + "specificChain": "base", + "enabled": true + }, + { + "specificChain": "arbitrum", + "enabled": true + } + ], + "allowedTokens": [ + { + "specificChain": "eth", + "tokenAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "tokenSymbol": "USDC" + }, + { + "specificChain": "base", + "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "tokenSymbol": "USDC" + } + ], + "allowedProtocols": [] + } + }, + { + "name": "Summer Perpetuals Pro League", + "description": "Premium perpetuals competition for professional traders. High stakes, high rewards.", + "arenaName": "Perpetuals Trading", + "type": "perpetual_futures", + "status": "pending", + "seedDateState": "pending-noboost", + "imageUrl": "https://picsum.photos/seed/perps-summer/800/400", + "externalUrl": null, + "startDate": "2024-06-01T00:00:00Z", + "endDate": "2024-08-31T23:59:59Z", + "boostStartDate": "2024-05-25T00:00:00Z", + "boostEndDate": "2024-06-01T00:00:00Z", + "joinStartDate": "2024-05-15T00:00:00Z", + "joinEndDate": "2024-05-30T23:59:59Z", + "maxParticipants": 75, + "minimumStake": "1000", + "minRecallRank": 1000, + "allowlistOnly": false, + "vips": [], + "allowlist": [], + "blocklist": [], + "agentAllocation": "50000", + "agentAllocationUnit": "USDC", + "boosterAllocation": "25000", + "boosterAllocationUnit": "USDC", + "boostTimeDecayRate": "0.10", + "rewardRules": { + "distribution": "tiered", + "prizes": [ + { "rank": 1, "amount": "100000", "unit": "USDC" }, + { "rank": 2, "amount": "60000", "unit": "USDC" }, + { "rank": 3, "amount": "40000", "unit": "USDC" }, + { "ranks": [4, 10], "amount": "10000", "unit": "USDC" } + ] + }, + "rewardDetails": "Pro league with 270,000 USDC prize pool. Invitation required for top tier.", + "sandboxMode": false, + "displayState": "active", + "tradingConfig": { + "dataSource": "external_api", + "evaluationMetric": "sortino_ratio", + "initialCapital": "50000", + "selfFundingThresholdUsd": "5000", + "minFundingThreshold": "1000", + "inactivityHours": 48 + } + }, + { + "name": "Beginner Spot Trading", + "description": "Entry-level spot trading competition. Learn and earn in a low-risk environment.", + "arenaName": "Spot Trading", + "type": "spot_live_trading", + "status": "pending", + "seedDateState": "pending-boost", + "imageUrl": "https://picsum.photos/seed/spot-beginner/800/400", + "externalUrl": null, + "startDate": "2024-05-01T00:00:00Z", + "endDate": "2024-05-31T23:59:59Z", + "boostStartDate": "2024-04-25T00:00:00Z", + "boostEndDate": "2024-05-01T00:00:00Z", + "joinStartDate": "2024-04-20T00:00:00Z", + "joinEndDate": "2024-04-30T23:59:59Z", + "maxParticipants": 500, + "minimumStake": "10", + "minRecallRank": null, + "allowlistOnly": false, + "vips": [], + "allowlist": [], + "blocklist": [], + "agentAllocation": "1000", + "agentAllocationUnit": "USDC", + "boosterAllocation": "500", + "boosterAllocationUnit": "USDC", + "boostTimeDecayRate": "0.02", + "rewardRules": { + "distribution": "tiered", + "prizes": [ + { "rank": 1, "amount": "1000", "unit": "USDC" }, + { "rank": 2, "amount": "600", "unit": "USDC" }, + { "rank": 3, "amount": "400", "unit": "USDC" }, + { "ranks": [4, 20], "amount": "100", "unit": "USDC" } + ] + }, + "rewardDetails": "Beginner-friendly competition with 4,700 USDC prize pool.", + "sandboxMode": false, + "displayState": "active", + "tradingConfig": { + "dataSource": "rpc_direct", + "selfFundingThresholdUsd": "100", + "minFundingThreshold": "10", + "inactivityHours": 96, + "syncIntervalMinutes": 10, + "chains": [ + { + "specificChain": "base", + "enabled": true + } + ], + "allowedTokens": [ + { + "specificChain": "base", + "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + "tokenSymbol": "USDC" + }, + { + "specificChain": "base", + "tokenAddress": "0x4200000000000000000000000000000000000006", + "tokenSymbol": "WETH" + } + ], + "allowedProtocols": [ + { + "specificChain": "base", + "protocol": "uniswap-v3", + "routerAddress": "0x2626664c2603336E57B271c5C0b26F421741e481", + "factoryAddress": "0x33128a8fC17869897dcE68Ed026d694621f6FDfD" + } + ] + } + } +] diff --git a/local/seed/show-api-keys.sh b/local/seed/show-api-keys.sh new file mode 100755 index 000000000..2e4c7b7aa --- /dev/null +++ b/local/seed/show-api-keys.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# Helper script to extract agent API keys from seed logs + +echo "==========================================" +echo "Agent API Keys from Seed" +echo "==========================================" +echo "" + +# Check if docker-compose is available +if ! command -v docker-compose &> /dev/null; then + echo "Error: docker-compose not found" + exit 1 +fi + +# Get container name +CONTAINER_NAME="recall-db-seed" + +# Check if container exists +if ! docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then + echo "Error: Seed container not found. Run 'docker-compose up db-seed' first." + exit 1 +fi + +# Extract API keys from logs +API_KEYS=$(docker logs $CONTAINER_NAME 2>&1 | grep "API Key:" | sed 's/.*API Key: //') + +if [ -z "$API_KEYS" ]; then + echo "No API keys found in logs." + echo "" + echo "This could mean:" + echo " 1. The seeder hasn't run yet" + echo " 2. The seeder failed before creating agents" + echo " 3. The logs have been cleared" + echo "" + echo "Try running: docker-compose up db-seed" + exit 1 +fi + +# Display keys +echo "$API_KEYS" | while IFS= read -r line; do + echo " $line" +done + +echo "" +echo "==========================================" +echo "Total API Keys: $(echo "$API_KEYS" | wc -l | tr -d ' ')" +echo "==========================================" +echo "" +echo "Usage example:" +echo " curl http://localhost:3000/backend-api/api/agents/me \\" +echo " -H \"Authorization: Bearer \"" +echo "" diff --git a/local/seed/src/agents.ts b/local/seed/src/agents.ts new file mode 100644 index 000000000..d02dbcff6 --- /dev/null +++ b/local/seed/src/agents.ts @@ -0,0 +1,161 @@ +import { randomUUID } from "crypto"; +import { and, eq } from "drizzle-orm"; +import type { NodePgDatabase } from "drizzle-orm/node-postgres"; + +import schema from "@recallnet/db/schema"; + +import { + generateApiKey, + generateHandle, + generateRandomEthAddress, + hashApiKey, + log, +} from "./utils.js"; + +export interface AgentSeedData { + ownerId: string; + name: string; + handle: string; + email: string; + description: string; + walletAddress: string; + apiKey: string; +} + +/** + * Generate agent data for a user + * Each agent gets a unique random wallet address + */ +export function generateAgentData( + userId: string, + userIndex: number, +): AgentSeedData[] { + const agentTemplates = [ + { + name: "Alpha Bot", + description: + "High-frequency trading bot specializing in arbitrage opportunities across DEXs.", + }, + { + name: "Momentum Trader", + description: + "Trend-following strategy with dynamic position sizing based on market volatility.", + }, + { + name: "Market Maker", + description: + "Provides liquidity and captures spread in volatile trading pairs.", + }, + ]; + + // Users 0-5 get 2 agents, users 6-9 get 1 agent + const agentCount = userIndex < 6 ? 2 : 1; + + return agentTemplates.slice(0, agentCount).map((template, index) => { + return { + ownerId: userId, + name: `${template.name} ${userIndex}`, + handle: generateHandle(`${template.name}-${userIndex}-${index}`), + email: `agent-${userIndex}-${index}@recall.local`, + description: template.description, + walletAddress: generateRandomEthAddress(), + apiKey: generateApiKey(), + }; + }); +} + +/** + * Seed agents into the database + */ +export async function seedAgents( + db: NodePgDatabase, + userIds: string[], +): Promise { + log("Seeding agents..."); + + const agentIds: string[] = []; + + for (let i = 0; i < userIds.length; i++) { + const userId = userIds[i]; + + // Get user info + const [user] = await db + .select() + .from(schema.users) + .where(eq(schema.users.id, userId)) + .limit(1); + + if (!user) { + log(`User ${userId} not found, skipping agents`, "error"); + continue; + } + + const agents = generateAgentData(userId, i); + + for (const agentData of agents) { + try { + // Check if agent already exists (by owner and name) + const existing = await db + .select() + .from(schema.agents) + .where( + and( + eq(schema.agents.ownerId, agentData.ownerId), + eq(schema.agents.name, agentData.name), + ), + ) + .limit(1); + + if (existing.length > 0) { + log(`Agent ${agentData.name} already exists, skipping`, "info"); + agentIds.push(existing[0].id); + continue; + } + + // Insert agent with generated UUID + const agentId = randomUUID(); + await db.insert(schema.agents).values({ + id: agentId, + ownerId: agentData.ownerId, + walletAddress: agentData.walletAddress, + name: agentData.name, + handle: agentData.handle, + email: agentData.email, + description: agentData.description, + apiKey: agentData.apiKey, + apiKeyHash: hashApiKey(agentData.apiKey), + status: "active", + metadata: {}, + isRewardsIneligible: false, + }); + + agentIds.push(agentId); + + log( + `Created agent: ${agentData.name} (${agentData.handle}) - API Key: ${agentData.apiKey}`, + "success", + ); + } catch (error) { + log(`Failed to create agent ${agentData.name}: ${error}`, "error"); + throw error; + } + } + } + + log(`Seeded ${agentIds.length} agents`, "success"); + return agentIds; +} + +/** + * Get all seeded agent IDs + */ +export async function getSeededAgentIds( + db: NodePgDatabase, +): Promise { + const agents = await db + .select({ id: schema.agents.id }) + .from(schema.agents) + .orderBy(schema.agents.id); + + return agents.map((a) => a.id); +} diff --git a/local/seed/src/airdrop.ts b/local/seed/src/airdrop.ts new file mode 100644 index 000000000..4937493c3 --- /dev/null +++ b/local/seed/src/airdrop.ts @@ -0,0 +1,251 @@ +/** + * Airdrop seeding for local development. + * + * This module seeds the database with: + * - Season records + * - Airdrop allocations with merkle proofs + * + * The data matches the pre-generated merkle tree in: + * packages/staking-contracts/contracts/deploy/06_deploy_Airdrop.ts + * + * This ensures the database allocations match the on-chain merkle root, + * allowing users to claim their airdrops in local development. + */ +import { eq } from "drizzle-orm"; +import type { NodePgDatabase } from "drizzle-orm/node-postgres"; + +import schema from "@recallnet/db/schema"; + +import { log } from "./utils.js"; + +/** + * Airdrop amount per account in wei (1000 tokens with 18 decimals) + */ +const AIRDROP_AMOUNT = "1000000000000000000000"; + +/** + * Season configuration for local development + */ +const SEASON_CONFIG = { + number: 1, + name: "Season 1 - Local Dev", + // Start date: 30 days ago to ensure claims are available + startDate: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), + // End date: 60 days from now to give plenty of time for testing + endDate: new Date(Date.now() + 60 * 24 * 60 * 60 * 1000), +}; + +/** + * Pre-generated merkle tree allocations for Anvil test accounts. + * This data MUST match the MERKLE_DATA in 06_deploy_Airdrop.ts + * + * Generated using @openzeppelin/merkle-tree with leaf format: [address, uint256, uint8] + * Merkle root: 0x99341db4a72623b4f268048ed9f02ff92894fc9a5fa6409107188ce968975a78 + */ +const AIRDROP_ALLOCATIONS = [ + { + address: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x2ec4da4988bb66de7743d4a19781bbc1980457637476d75591f7bb70b9cbfa1f", + "0xe94a3b471459e094ada06591313c398e0998ae7b2d7e73f530b63f19209ec905", + "0xf13fa2de8ebd77aac95d230aa0f1284914d782d200e7b7f280fd7507f71466b6", + "0x0f5b4a0307a9f76166c5a53611aee471015ed4ec05c2b2e481535f9851bb4443", + ], + }, + { + address: "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x4252241a9778f2c2311eccc8ede06d33dd43634b2c9d189e2329521844d2751c", + "0x9b607ce2292d9364e70ecff38464eb9628bc1d29d63fe209cb3adb0be2c96f16", + "0xcb827afd1bbe2ed492200f216d2f3342da680b268164baff0e74e832c933755f", + ], + }, + { + address: "0x90F79bf6EB2c4f870365E785982E1f101E93b906", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x816959b655d7a738e9133c4da197c9216275aeffbfd8b5d0211db7aff3e67e59", + "0x1b352034f678a35a2a4a4d7f4268024cfe5018c7abc82bec996ebadecbbb724a", + "0x0f5b4a0307a9f76166c5a53611aee471015ed4ec05c2b2e481535f9851bb4443", + ], + }, + { + address: "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x2ba4f1572bef52adc1c30814a3ffc0c82676864936894d0e1e589e2c9452fb3e", + "0xe94a3b471459e094ada06591313c398e0998ae7b2d7e73f530b63f19209ec905", + "0xf13fa2de8ebd77aac95d230aa0f1284914d782d200e7b7f280fd7507f71466b6", + "0x0f5b4a0307a9f76166c5a53611aee471015ed4ec05c2b2e481535f9851bb4443", + ], + }, + { + address: "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0xa53e1ae347715706a20c79c504276f022e53c80e9cdaf83335d7872d1c5ad511", + "0x1b352034f678a35a2a4a4d7f4268024cfe5018c7abc82bec996ebadecbbb724a", + "0x0f5b4a0307a9f76166c5a53611aee471015ed4ec05c2b2e481535f9851bb4443", + ], + }, + { + address: "0x976EA74026E726554dB657fA54763abd0C3a0aa9", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x59240a656f3afa317b5d58ffb64c1fc77acfc70ff3c76c6813c37a9cbb46a6c2", + "0x9b607ce2292d9364e70ecff38464eb9628bc1d29d63fe209cb3adb0be2c96f16", + "0xcb827afd1bbe2ed492200f216d2f3342da680b268164baff0e74e832c933755f", + ], + }, + { + address: "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x297feef0f89b2a11887d1c026ba3eb78e59589d9d153861d7965fb5bdc48324f", + "0xf13fa2de8ebd77aac95d230aa0f1284914d782d200e7b7f280fd7507f71466b6", + "0x0f5b4a0307a9f76166c5a53611aee471015ed4ec05c2b2e481535f9851bb4443", + ], + }, + { + address: "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x6858d00d8cac502f0fa45439e77efa0723109e1b4ba8ec8a361e888a48612651", + "0xe753dde72635fd59cdbd7105dff0df3336584e09e665421cbff0141d44608df6", + "0xcb827afd1bbe2ed492200f216d2f3342da680b268164baff0e74e832c933755f", + ], + }, + { + address: "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720", + amount: AIRDROP_AMOUNT, + season: 1, + proof: [ + "0x6f1987f7db23a0707624f825ec29266245644dd5376eaa64dd80c4bfdef84032", + "0xe753dde72635fd59cdbd7105dff0df3336584e09e665421cbff0141d44608df6", + "0xcb827afd1bbe2ed492200f216d2f3342da680b268164baff0e74e832c933755f", + ], + }, +]; + +/** + * Seed the seasons table + */ +async function seedSeason( + db: NodePgDatabase, +): Promise { + log("Seeding seasons..."); + + // Check if season already exists + const existing = await db + .select() + .from(schema.seasons) + .where(eq(schema.seasons.number, SEASON_CONFIG.number)) + .limit(1); + + if (existing.length > 0) { + log(`Season ${SEASON_CONFIG.number} already exists, skipping`, "info"); + return; + } + + await db.insert(schema.seasons).values({ + number: SEASON_CONFIG.number, + name: SEASON_CONFIG.name, + startDate: SEASON_CONFIG.startDate, + endDate: SEASON_CONFIG.endDate, + }); + + log(`Created season: ${SEASON_CONFIG.name}`, "success"); +} + +/** + * Seed the airdrop allocations table + */ +async function seedAllocations( + db: NodePgDatabase, +): Promise { + log("Seeding airdrop allocations..."); + + let created = 0; + let skipped = 0; + + for (const allocation of AIRDROP_ALLOCATIONS) { + const normalizedAddress = allocation.address.toLowerCase(); + + // Check if allocation already exists + const existing = await db + .select() + .from(schema.airdropAllocations) + .where(eq(schema.airdropAllocations.address, normalizedAddress)) + .limit(1); + + if (existing.length > 0) { + skipped++; + continue; + } + + await db.insert(schema.airdropAllocations).values({ + address: normalizedAddress, + amount: BigInt(allocation.amount), + season: allocation.season, + proof: allocation.proof, + category: "local-dev", + sybilClassification: "approved", + powerUser: false, + recallSnapper: false, + aiBuilder: false, + aiExplorer: false, + }); + + created++; + } + + if (skipped > 0) { + log(`Skipped ${skipped} existing allocations`, "info"); + } + log(`Created ${created} airdrop allocations`, "success"); +} + +/** + * Seed airdrop data for local development + * + * This creates: + * - Season record for season 1 + * - Airdrop allocations for 9 Anvil test accounts (accounts 1-9, skipping deployer) + * + * Each account can claim 1000 tokens using their merkle proof. + */ +export async function seedAirdrop( + db: NodePgDatabase, +): Promise { + log("=".repeat(40)); + log("Seeding airdrop data..."); + log("=".repeat(40)); + + try { + // Seed season first (allocations reference it) + await seedSeason(db); + + // Seed allocations + await seedAllocations(db); + + log(""); + log("Airdrop seeding complete!", "success"); + log(` Season: ${SEASON_CONFIG.name}`); + log(` Allocations: ${AIRDROP_ALLOCATIONS.length} accounts`); + log(` Amount per account: 1000 tokens`); + log(""); + } catch (error) { + log(`Failed to seed airdrop: ${error}`, "error"); + throw error; + } +} diff --git a/local/seed/src/anvil-wallets.ts b/local/seed/src/anvil-wallets.ts new file mode 100644 index 000000000..c02dded95 --- /dev/null +++ b/local/seed/src/anvil-wallets.ts @@ -0,0 +1,83 @@ +/** + * Anvil default test accounts with funded wallets. + * These are the deterministic accounts created by Anvil on startup. + * + * Each account has 10,000 ETH for testing. + * + * Reference: https://book.getfoundry.sh/reference/anvil/ + */ + +export interface AnvilWallet { + address: string; + privateKey: string; +} + +export const ANVIL_WALLETS: AnvilWallet[] = [ + { + address: "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + privateKey: + "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", + }, + { + address: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8", + privateKey: + "0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d", + }, + { + address: "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC", + privateKey: + "0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a", + }, + { + address: "0x90F79bf6EB2c4f870365E785982E1f101E93b906", + privateKey: + "0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6", + }, + { + address: "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65", + privateKey: + "0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a", + }, + { + address: "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc", + privateKey: + "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba", + }, + { + address: "0x976EA74026E726554dB657fA54763abd0C3a0aa9", + privateKey: + "0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e", + }, + { + address: "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955", + privateKey: + "0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356", + }, + { + address: "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f", + privateKey: + "0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97", + }, + { + address: "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720", + privateKey: + "0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6", + }, +]; + +/** + * Get wallet by index (0-9) + */ +export function getAnvilWallet(index: number): AnvilWallet { + if (index < 0 || index >= ANVIL_WALLETS.length) { + throw new Error(`Invalid wallet index: ${index}. Must be 0-9.`); + } + return ANVIL_WALLETS[index]; +} + +/** + * Get all wallet addresses + */ +export function getAnvilAddresses(): string[] { + return ANVIL_WALLETS.map((w) => w.address); +} diff --git a/local/seed/src/competition-data.ts b/local/seed/src/competition-data.ts new file mode 100644 index 000000000..3bcc4e1f8 --- /dev/null +++ b/local/seed/src/competition-data.ts @@ -0,0 +1,915 @@ +/** + * Unified competition data seeding for local development. + * + * This module generates coherent data for all competition types: + * - Portfolio snapshots (for timeline charts) + * - Trades (for paper trading and spot_live competitions) + * - Positions (for perpetual_futures competitions) + * - Risk metrics snapshots (for perps chart metrics) + * - Leaderboards (for ended competitions) + * + * All data is generated with consistent agent ordering and proper + * date alignment with competition start/end dates. + */ +import { randomUUID } from "crypto"; +import { eq } from "drizzle-orm"; +import type { NodePgDatabase } from "drizzle-orm/node-postgres"; + +import schema from "@recallnet/db/schema"; + +import { log } from "./utils.js"; + +// ============================================================================ +// Types +// ============================================================================ + +interface AgentPerformanceProfile { + /** Final rank (1 = best) */ + rank: number; + /** Starting portfolio value in USD */ + startingValue: number; + /** Ending portfolio value in USD */ + endingValue: number; + /** Volatility factor (0-1) */ + volatility: number; + /** Simple return percentage */ + simpleReturn: number; + /** Calmar ratio (for perps) */ + calmarRatio: number; + /** Sortino ratio (for perps) */ + sortinoRatio: number; + /** Max drawdown (for perps) */ + maxDrawdown: number; +} + +interface CompetitionContext { + competitionId: string; + competitionName: string; + competitionType: string; + competitionStatus: string; + startDate: Date; + endDate: Date; + agents: Array<{ + agentId: string; + profile: AgentPerformanceProfile; + }>; +} + +// ============================================================================ +// Performance Profiles (ordered by rank - best first) +// ============================================================================ + +const PERFORMANCE_PROFILES: Omit[] = [ + // Rank 1: Top performer + { + startingValue: 10000, + endingValue: 18000, + volatility: 0.06, + simpleReturn: 80, + calmarRatio: 3.5, + sortinoRatio: 2.8, + maxDrawdown: 0.08, + }, + // Rank 2: Strong performer + { + startingValue: 10000, + endingValue: 14500, + volatility: 0.04, + simpleReturn: 45, + calmarRatio: 2.8, + sortinoRatio: 2.2, + maxDrawdown: 0.12, + }, + // Rank 3: Good performer + { + startingValue: 10000, + endingValue: 13000, + volatility: 0.08, + simpleReturn: 30, + calmarRatio: 1.5, + sortinoRatio: 1.4, + maxDrawdown: 0.18, + }, + // Rank 4: Above average + { + startingValue: 10000, + endingValue: 12500, + volatility: 0.05, + simpleReturn: 25, + calmarRatio: 1.8, + sortinoRatio: 1.6, + maxDrawdown: 0.14, + }, + // Rank 5: Moderate performer + { + startingValue: 10000, + endingValue: 11500, + volatility: 0.07, + simpleReturn: 15, + calmarRatio: 0.9, + sortinoRatio: 0.8, + maxDrawdown: 0.22, + }, + // Rank 6: Slight winner + { + startingValue: 10000, + endingValue: 11200, + volatility: 0.04, + simpleReturn: 12, + calmarRatio: 1.2, + sortinoRatio: 1.0, + maxDrawdown: 0.1, + }, + // Rank 7: Conservative winner + { + startingValue: 10000, + endingValue: 10800, + volatility: 0.02, + simpleReturn: 8, + calmarRatio: 1.6, + sortinoRatio: 1.3, + maxDrawdown: 0.05, + }, + // Rank 8: Breakeven + { + startingValue: 10000, + endingValue: 10100, + volatility: 0.03, + simpleReturn: 1, + calmarRatio: 0.2, + sortinoRatio: 0.15, + maxDrawdown: 0.06, + }, + // Rank 9: Slight loser + { + startingValue: 10000, + endingValue: 9200, + volatility: 0.04, + simpleReturn: -8, + calmarRatio: -0.5, + sortinoRatio: -0.4, + maxDrawdown: 0.15, + }, + // Rank 10: Moderate loser + { + startingValue: 10000, + endingValue: 7500, + volatility: 0.08, + simpleReturn: -25, + calmarRatio: -0.8, + sortinoRatio: -0.7, + maxDrawdown: 0.35, + }, + // Rank 11: Big loser + { + startingValue: 10000, + endingValue: 6500, + volatility: 0.1, + simpleReturn: -35, + calmarRatio: -1.2, + sortinoRatio: -1.0, + maxDrawdown: 0.45, + }, +]; + +// ============================================================================ +// Token Constants +// ============================================================================ + +const BASE_TOKENS = { + USDC: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", + WETH: "0x4200000000000000000000000000000000000006", + DAI: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", +}; + +const ASSET_PRICES: Record = { + BTC: 95000, + ETH: 3500, + SOL: 180, + ARB: 1.2, + AVAX: 35, + LINK: 22, + OP: 2.5, +}; + +const SAMPLE_TX_HASHES = [ + "0x0f8345ce2a18b4c017923d6800c18e665949444ce86491229f42f0b3f9758e04", + "0x1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890", + "0x2b3c4d5e6f7890ab1234567890abcdef1234567890abcdef1234567890abcdef", + "0x3c4d5e6f7890abcd567890abcdef1234567890abcdef1234567890abcdef1234", +]; + +const PROTOCOLS = ["Uniswap V3", "Aerodrome", "BaseSwap", "SushiSwap"]; + +// ============================================================================ +// Utility Functions +// ============================================================================ + +function seededRandom(seed: number): number { + const x = Math.sin(seed) * 10000; + return x - Math.floor(x); +} + +function getProfile(index: number): AgentPerformanceProfile { + const baseProfile = + PERFORMANCE_PROFILES[index % PERFORMANCE_PROFILES.length]!; + return { + ...baseProfile, + rank: index + 1, + }; +} + +// ============================================================================ +// Data Generation Functions +// ============================================================================ + +function generatePortfolioSnapshots(ctx: CompetitionContext): Array<{ + agentId: string; + competitionId: string; + timestamp: Date; + totalValue: number; +}> { + const snapshots: Array<{ + agentId: string; + competitionId: string; + timestamp: Date; + totalValue: number; + }> = []; + + const durationMs = ctx.endDate.getTime() - ctx.startDate.getTime(); + const intervalMs = 30 * 60 * 1000; // 30 minutes + const numSnapshots = Math.max(Math.floor(durationMs / intervalMs), 10); + + for (const agent of ctx.agents) { + const { agentId, profile } = agent; + + for (let i = 0; i <= numSnapshots; i++) { + const progress = i / numSnapshots; + const timestamp = new Date( + ctx.startDate.getTime() + progress * durationMs, + ); + + // Calculate value with trend curve + let baseValue: number; + if (profile.simpleReturn >= 0) { + // Upward trend: accelerating growth + const trendFactor = Math.pow(progress, 0.8); + baseValue = + profile.startingValue + + (profile.endingValue - profile.startingValue) * trendFactor; + } else { + // Downward trend: rapid initial drop, then stabilization + const trendFactor = 1 - Math.pow(1 - progress, 0.7); + baseValue = + profile.startingValue + + (profile.endingValue - profile.startingValue) * trendFactor; + } + + // Add noise based on volatility + const seed = agentId.charCodeAt(0) + i * 100; + const noise = + (seededRandom(seed) - 0.5) * 2 * profile.volatility * baseValue; + const totalValue = Math.max( + baseValue + noise, + profile.startingValue * 0.2, + ); + + snapshots.push({ + agentId, + competitionId: ctx.competitionId, + timestamp, + totalValue: Math.round(totalValue * 100) / 100, + }); + } + + // Ensure last snapshot matches exact ending value + if (snapshots.length > 0) { + const lastIdx = snapshots.length - 1; + const lastSnapshot = snapshots[lastIdx]; + if (lastSnapshot && lastSnapshot.agentId === agentId) { + lastSnapshot.totalValue = profile.endingValue; + } + } + } + + return snapshots; +} + +function generateRiskMetricsSnapshots(ctx: CompetitionContext): Array<{ + agentId: string; + competitionId: string; + timestamp: Date; + calmarRatio: string; + sortinoRatio: string; + simpleReturn: string; + maxDrawdown: string; + downsideDeviation: string; + annualizedReturn: string; +}> { + // Only for perps competitions + if (ctx.competitionType !== "perpetual_futures") { + return []; + } + + const snapshots: Array<{ + agentId: string; + competitionId: string; + timestamp: Date; + calmarRatio: string; + sortinoRatio: string; + simpleReturn: string; + maxDrawdown: string; + downsideDeviation: string; + annualizedReturn: string; + }> = []; + + const durationMs = ctx.endDate.getTime() - ctx.startDate.getTime(); + const intervalMs = 60 * 60 * 1000; // 1 hour intervals for risk metrics + const numSnapshots = Math.max(Math.floor(durationMs / intervalMs), 5); + + for (const agent of ctx.agents) { + const { agentId, profile } = agent; + + for (let i = 0; i <= numSnapshots; i++) { + const progress = i / numSnapshots; + const timestamp = new Date( + ctx.startDate.getTime() + progress * durationMs, + ); + + // Metrics evolve over time toward final values + const evolutionFactor = Math.pow(progress, 0.5); + const seed = agentId.charCodeAt(0) + i * 50; + const noise = (seededRandom(seed) - 0.5) * 0.2; + + const calmarRatio = profile.calmarRatio * evolutionFactor * (1 + noise); + const sortinoRatio = profile.sortinoRatio * evolutionFactor * (1 + noise); + const simpleReturn = profile.simpleReturn * evolutionFactor * (1 + noise); + const maxDrawdown = + profile.maxDrawdown * (0.5 + evolutionFactor * 0.5) * (1 + noise * 0.5); + + snapshots.push({ + agentId, + competitionId: ctx.competitionId, + timestamp, + calmarRatio: String(Math.round(calmarRatio * 100) / 100), + sortinoRatio: String(Math.round(sortinoRatio * 100) / 100), + simpleReturn: String(Math.round(simpleReturn * 100) / 100), + maxDrawdown: String(Math.round(maxDrawdown * 1000) / 1000), + downsideDeviation: String( + Math.round((0.02 + seededRandom(seed + 1) * 0.03) * 1000) / 1000, + ), + annualizedReturn: String( + Math.round(simpleReturn * 12 * (1 + noise) * 100) / 100, + ), + }); + } + } + + return snapshots; +} + +interface GeneratedTrade { + id: string; + agentId: string; + competitionId: string; + fromToken: string; + toToken: string; + fromAmount: number; + toAmount: number; + price: number; + tradeAmountUsd: number; + fromTokenSymbol: string; + toTokenSymbol: string; + success: boolean; + reason: string; + timestamp: Date; + fromChain: string; + toChain: string; + fromSpecificChain: string; + toSpecificChain: string; + tradeType: "simulated" | "spot_live"; + txHash: string; + blockNumber: number; + protocol: string; + gasUsed: string; + gasPrice: string; + gasCostUsd: string; +} + +function generateTrades(ctx: CompetitionContext): GeneratedTrade[] { + // Only for non-perps competitions + if (ctx.competitionType === "perpetual_futures") { + return []; + } + + const trades: GeneratedTrade[] = []; + + const durationMs = ctx.endDate.getTime() - ctx.startDate.getTime(); + const tradeType: "simulated" | "spot_live" = + ctx.competitionType === "spot_live_trading" ? "spot_live" : "simulated"; + const ethPrice = 3500; + + for (let agentIdx = 0; agentIdx < ctx.agents.length; agentIdx++) { + const agent = ctx.agents[agentIdx]!; + const { agentId, profile } = agent; + + // Number of trades based on performance (active traders do more) + const numTrades = 3 + Math.floor(seededRandom(agentIdx * 7) * 4); + + for (let i = 0; i < numTrades; i++) { + const seed = agentId.charCodeAt(0) + i * 1000; + const progress = (i + 0.5) / numTrades; + const timeJitter = (seededRandom(seed) - 0.5) * 0.1; + const actualProgress = Math.max( + 0.05, + Math.min(0.95, progress + timeJitter), + ); + const timestamp = new Date( + ctx.startDate.getTime() + actualProgress * durationMs, + ); + + // Alternate between buy and sell + const isBuy = i % 2 === 0; + const fromToken = isBuy ? BASE_TOKENS.USDC : BASE_TOKENS.WETH; + const toToken = isBuy ? BASE_TOKENS.WETH : BASE_TOKENS.USDC; + const fromSymbol = isBuy ? "USDC" : "WETH"; + const toSymbol = isBuy ? "WETH" : "USDC"; + + const tradeValueUsd = + profile.startingValue * 0.1 * (0.5 + seededRandom(seed + 1)); + const fromAmount = isBuy ? tradeValueUsd : tradeValueUsd / ethPrice; + const toAmount = isBuy ? tradeValueUsd / ethPrice : tradeValueUsd; + const price = isBuy ? ethPrice : 1 / ethPrice; + + const secondsSinceStart = + (timestamp.getTime() - ctx.startDate.getTime()) / 1000; + const blockNumber = Math.floor( + 25000000 + secondsSinceStart * 2 + seededRandom(seed + 2) * 100, + ); + + trades.push({ + id: randomUUID(), + agentId, + competitionId: ctx.competitionId, + fromToken, + toToken, + fromAmount: Math.round(fromAmount * 1000000) / 1000000, + toAmount: Math.round(toAmount * 1000000) / 1000000, + price, + tradeAmountUsd: Math.round(tradeValueUsd * 100) / 100, + fromTokenSymbol: fromSymbol, + toTokenSymbol: toSymbol, + success: true, + reason: isBuy ? "Buying ETH" : "Selling ETH", + timestamp, + fromChain: "evm", + toChain: "evm", + fromSpecificChain: "base", + toSpecificChain: "base", + tradeType: tradeType as "simulated" | "spot_live", + txHash: SAMPLE_TX_HASHES[(i + agentIdx) % SAMPLE_TX_HASHES.length]!, + blockNumber, + protocol: PROTOCOLS[(i + agentIdx) % PROTOCOLS.length]!, + gasUsed: String(100000 + Math.floor(seededRandom(seed + 3) * 100000)), + gasPrice: "1000000000", + gasCostUsd: String( + Math.round((0.1 + seededRandom(seed + 4) * 0.5) * 100) / 100, + ), + }); + } + } + + return trades; +} + +function generatePositions(ctx: CompetitionContext): Array<{ + id: string; + agentId: string; + competitionId: string; + providerPositionId: string; + providerTradeId: string; + asset: string; + isLong: boolean; + leverage: string; + positionSize: string; + collateralAmount: string; + entryPrice: string; + currentPrice: string; + liquidationPrice: string; + pnlUsdValue: string; + pnlPercentage: string; + status: string; + createdAt: Date; + lastUpdatedAt: Date; + closedAt: Date | null; +}> { + // Only for perps competitions + if (ctx.competitionType !== "perpetual_futures") { + return []; + } + + const positions: Array<{ + id: string; + agentId: string; + competitionId: string; + providerPositionId: string; + providerTradeId: string; + asset: string; + isLong: boolean; + leverage: string; + positionSize: string; + collateralAmount: string; + entryPrice: string; + currentPrice: string; + liquidationPrice: string; + pnlUsdValue: string; + pnlPercentage: string; + status: string; + createdAt: Date; + lastUpdatedAt: Date; + closedAt: Date | null; + }> = []; + + const assets = ["BTC", "ETH", "SOL", "ARB"]; + const durationMs = ctx.endDate.getTime() - ctx.startDate.getTime(); + const isEnded = ctx.competitionStatus === "ended"; + + for (let agentIdx = 0; agentIdx < ctx.agents.length; agentIdx++) { + const agent = ctx.agents[agentIdx]!; + const { agentId, profile } = agent; + + // 3-5 positions per agent + const numPositions = 3 + (agentIdx % 3); + + for (let i = 0; i < numPositions; i++) { + const seed = agentId.charCodeAt(0) + i * 500 + agentIdx * 100; + const asset = assets[i % assets.length]!; + const assetPrice = ASSET_PRICES[asset] ?? 100; + + // Position timing + const entryProgress = (i + 0.2) / (numPositions + 1); + const entryTime = new Date( + ctx.startDate.getTime() + entryProgress * durationMs * 0.7, + ); + + // Determine if position is closed + const shouldClose = isEnded || i < numPositions - 1; + const closeProgress = entryProgress + 0.1 + seededRandom(seed) * 0.2; + const closeTime = shouldClose + ? new Date( + ctx.startDate.getTime() + + Math.min(closeProgress, 0.95) * durationMs, + ) + : null; + + // Position direction based on profile + const isLong = profile.simpleReturn >= 0 ? i % 2 === 0 : i % 2 !== 0; + const leverage = 3 + Math.floor(seededRandom(seed + 1) * 12); + + // Collateral and size + const baseCollateral = + 500 * (0.8 + seededRandom(seed + 2) * 0.4) * (1 + agentIdx * 0.1); + const positionSize = baseCollateral * leverage; + + // Prices + const priceVariance = 1 + (seededRandom(seed + 3) - 0.5) * 0.1; + const entryPrice = assetPrice * priceVariance; + + // PnL based on profile performance + const pnlDirection = profile.simpleReturn >= 0 ? 1 : -1; + const positionPnlPercent = + (profile.simpleReturn / numPositions) * + pnlDirection * + (isLong ? 1 : -1) * + (0.5 + seededRandom(seed + 4)); + + const pnlMultiplier = isLong + ? 1 + positionPnlPercent / 100 / leverage + : 1 - positionPnlPercent / 100 / leverage; + + const currentPrice = shouldClose + ? entryPrice * pnlMultiplier + : assetPrice * (1 + (seededRandom(seed + 5) - 0.5) * 0.05); + + const actualPnlPercent = shouldClose + ? positionPnlPercent * leverage + : ((currentPrice - entryPrice) / entryPrice) * + leverage * + 100 * + (isLong ? 1 : -1); + + const pnlUsd = baseCollateral * (actualPnlPercent / 100); + + // Liquidation price + const liquidationDistance = 1 / leverage; + const liquidationPrice = isLong + ? entryPrice * (1 - liquidationDistance * 0.9) + : entryPrice * (1 + liquidationDistance * 0.9); + + positions.push({ + id: randomUUID(), + agentId, + competitionId: ctx.competitionId, + providerPositionId: `pos_${randomUUID().slice(0, 8)}`, + providerTradeId: `trade_${randomUUID().slice(0, 8)}`, + asset, + isLong, + leverage: String(leverage), + positionSize: String(Math.round(positionSize * 100) / 100), + collateralAmount: String(Math.round(baseCollateral * 100) / 100), + entryPrice: String(Math.round(entryPrice * 100) / 100), + currentPrice: String(Math.round(currentPrice * 100) / 100), + liquidationPrice: String(Math.round(liquidationPrice * 100) / 100), + pnlUsdValue: String(Math.round(pnlUsd * 100) / 100), + pnlPercentage: String(Math.round(actualPnlPercent * 100) / 100), + status: shouldClose ? "Closed" : "Open", + createdAt: entryTime, + lastUpdatedAt: closeTime ?? new Date(), + closedAt: closeTime, + }); + } + } + + return positions; +} + +// ============================================================================ +// Leaderboard Generation (for ended competitions) +// ============================================================================ + +interface LeaderboardEntry { + baseEntry: { + id: string; + competitionId: string; + agentId: string; + rank: number; + totalAgents: number; + score: number; + }; + perpsEntry?: { + competitionsLeaderboardId: string; + calmarRatio: number; + sortinoRatio: number; + simpleReturn: number; + maxDrawdown: number; + downsideDeviation: number; + totalEquity: number; + totalPnl: number; + hasRiskMetrics: boolean; + }; + spotLiveEntry?: { + competitionsLeaderboardId: string; + simpleReturn: number; + pnl: number; + startingValue: number; + currentValue: number; + totalTrades: number; + }; + tradingEntry?: { + competitionsLeaderboardId: string; + pnl: number; + startingValue: number; + }; +} + +function generateLeaderboardEntries( + ctx: CompetitionContext, +): LeaderboardEntry[] { + if (ctx.competitionStatus !== "ended") { + return []; + } + + const entries: LeaderboardEntry[] = []; + const totalAgents = ctx.agents.length; + + for (const agent of ctx.agents) { + const { agentId, profile } = agent; + const leaderboardId = randomUUID(); + const pnl = profile.endingValue - profile.startingValue; + + const baseEntry = { + id: leaderboardId, + competitionId: ctx.competitionId, + agentId, + rank: profile.rank, + totalAgents, + score: profile.endingValue, + }; + + const entry: LeaderboardEntry = { baseEntry }; + + if (ctx.competitionType === "perpetual_futures") { + entry.perpsEntry = { + competitionsLeaderboardId: leaderboardId, + calmarRatio: profile.calmarRatio, + sortinoRatio: profile.sortinoRatio, + simpleReturn: profile.simpleReturn, + maxDrawdown: profile.maxDrawdown, + downsideDeviation: 0.02 + Math.random() * 0.03, + totalEquity: profile.endingValue, + totalPnl: pnl, + hasRiskMetrics: true, + }; + } else if (ctx.competitionType === "spot_live_trading") { + entry.spotLiveEntry = { + competitionsLeaderboardId: leaderboardId, + simpleReturn: profile.simpleReturn, + pnl, + startingValue: profile.startingValue, + currentValue: profile.endingValue, + totalTrades: Math.floor(5 + Math.random() * 20), // Random 5-25 trades + }; + } else { + entry.tradingEntry = { + competitionsLeaderboardId: leaderboardId, + pnl, + startingValue: profile.startingValue, + }; + } + + entries.push(entry); + } + + return entries; +} + +// ============================================================================ +// Main Seeding Function +// ============================================================================ + +/** + * Seed all competition data coherently. + * This function handles snapshots, trades, positions, risk metrics, and leaderboards + * in a unified way to ensure data consistency. + */ +export async function seedCompetitionData( + db: NodePgDatabase, + competitionIds: string[], +): Promise { + log("Seeding competition data (unified)..."); + + let totalSnapshots = 0; + let totalRiskMetrics = 0; + let totalTrades = 0; + let totalPositions = 0; + let totalLeaderboardEntries = 0; + + for (const competitionId of competitionIds) { + // Get competition details from database + const [competition] = await db + .select() + .from(schema.competitions) + .where(eq(schema.competitions.id, competitionId)) + .limit(1); + + if (!competition) { + log(`Competition ${competitionId} not found, skipping`, "error"); + continue; + } + + // Skip pending competitions + if (competition.status === "pending") { + log(`Competition ${competition.name} is pending, skipping data`, "info"); + continue; + } + + // Get enrolled agents, sorted by ID for consistent ordering + const enrolledAgents = await db + .select({ + agentId: schema.competitionAgents.agentId, + }) + .from(schema.competitionAgents) + .where(eq(schema.competitionAgents.competitionId, competitionId)) + .orderBy(schema.competitionAgents.agentId); + + if (enrolledAgents.length === 0) { + log(`No agents in ${competition.name}, skipping data`, "info"); + continue; + } + + // Use actual competition dates from database + const startDate = competition.startDate + ? new Date(competition.startDate) + : new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); + + const endDate = + competition.status === "ended" && competition.endDate + ? new Date(competition.endDate) + : new Date(); + + // Build context with consistent agent ordering and profiles + const ctx: CompetitionContext = { + competitionId, + competitionName: competition.name, + competitionType: competition.type, + competitionStatus: competition.status, + startDate, + endDate, + agents: enrolledAgents.map((a, index) => ({ + agentId: a.agentId, + profile: getProfile(index), + })), + }; + + log( + `Processing ${competition.name} (${competition.type}, ${competition.status})...`, + ); + + // Generate and insert portfolio snapshots + const snapshots = generatePortfolioSnapshots(ctx); + if (snapshots.length > 0) { + const BATCH_SIZE = 500; + for (let i = 0; i < snapshots.length; i += BATCH_SIZE) { + const batch = snapshots.slice(i, i + BATCH_SIZE); + await db + .insert(schema.portfolioSnapshots) + .values(batch) + .onConflictDoNothing(); + } + totalSnapshots += snapshots.length; + } + + // Generate and insert risk metrics snapshots (perps only) + const riskMetrics = generateRiskMetricsSnapshots(ctx); + if (riskMetrics.length > 0) { + const BATCH_SIZE = 100; + for (let i = 0; i < riskMetrics.length; i += BATCH_SIZE) { + const batch = riskMetrics.slice(i, i + BATCH_SIZE); + await db + .insert(schema.riskMetricsSnapshots) + .values(batch) + .onConflictDoNothing(); + } + totalRiskMetrics += riskMetrics.length; + } + + // Generate and insert trades (non-perps only) + const trades = generateTrades(ctx); + if (trades.length > 0) { + const BATCH_SIZE = 100; + for (let i = 0; i < trades.length; i += BATCH_SIZE) { + const batch = trades.slice(i, i + BATCH_SIZE); + await db.insert(schema.trades).values(batch).onConflictDoNothing(); + } + totalTrades += trades.length; + } + + // Generate and insert positions (perps only) + const positions = generatePositions(ctx); + if (positions.length > 0) { + const BATCH_SIZE = 50; + for (let i = 0; i < positions.length; i += BATCH_SIZE) { + const batch = positions.slice(i, i + BATCH_SIZE); + await db + .insert(schema.perpetualPositions) + .values(batch) + .onConflictDoNothing(); + } + totalPositions += positions.length; + } + + // Generate and insert leaderboard entries (ended competitions only) + const leaderboardEntries = generateLeaderboardEntries(ctx); + if (leaderboardEntries.length > 0) { + for (const entry of leaderboardEntries) { + // Insert base leaderboard entry first + await db + .insert(schema.competitionsLeaderboard) + .values(entry.baseEntry) + .onConflictDoNothing(); + + // Insert type-specific entry with the same ID + if (entry.perpsEntry) { + await db + .insert(schema.perpsCompetitionsLeaderboard) + .values(entry.perpsEntry) + .onConflictDoNothing(); + } else if (entry.spotLiveEntry) { + await db + .insert(schema.spotLiveCompetitionsLeaderboard) + .values(entry.spotLiveEntry) + .onConflictDoNothing(); + } else if (entry.tradingEntry) { + await db + .insert(schema.tradingCompetitionsLeaderboard) + .values(entry.tradingEntry) + .onConflictDoNothing(); + } + + totalLeaderboardEntries++; + } + } + + log( + ` ✓ ${competition.name}: ${snapshots.length} snapshots, ${riskMetrics.length} risk metrics, ${trades.length} trades, ${positions.length} positions, ${leaderboardEntries.length} leaderboard entries`, + "success", + ); + } + + log(`Seeding complete:`, "success"); + log(` Portfolio snapshots: ${totalSnapshots}`); + log(` Risk metrics: ${totalRiskMetrics}`); + log(` Trades: ${totalTrades}`); + log(` Positions: ${totalPositions}`); + log(` Leaderboard entries: ${totalLeaderboardEntries}`); +} diff --git a/local/seed/src/competitions.ts b/local/seed/src/competitions.ts new file mode 100644 index 000000000..e7aa0255b --- /dev/null +++ b/local/seed/src/competitions.ts @@ -0,0 +1,561 @@ +import { randomUUID } from "crypto"; +import { and, eq } from "drizzle-orm"; +import type { NodePgDatabase } from "drizzle-orm/node-postgres"; +import { readFile } from "fs/promises"; +import { dirname, join } from "path"; +import { fileURLToPath } from "url"; + +import schema from "@recallnet/db/schema"; + +import { log } from "./utils.js"; + +// Type imports from schema +type CompetitionType = + | "trading" + | "perpetual_futures" + | "spot_live_trading" + | "sports_prediction"; +type CompetitionStatus = "pending" | "active" | "ending" | "ended"; + +/** + * Seed date states for generating relative competition dates. + * These control both the competition phase and boost window status. + */ +type SeedDateState = + | "ended" + | "active-noboost" + | "active-boost" + | "pending-noboost" + | "pending-boost"; + +/** + * Date offsets in days relative to "now" for each seed date state. + * Positive = future, negative = past. + */ +const DATE_OFFSETS: Record< + SeedDateState, + { + startDate: number; + endDate: number; + joinStartDate: number; + joinEndDate: number; + boostStartDate: number; + boostEndDate: number; + } +> = { + ended: { + startDate: -30, + endDate: -23, + joinStartDate: -33, + joinEndDate: -30, + boostStartDate: -32, + boostEndDate: -30, + }, + "active-noboost": { + startDate: -3, + endDate: 4, + joinStartDate: -6, + joinEndDate: -3, + boostStartDate: -5, + boostEndDate: -3, + }, + "active-boost": { + startDate: -0.25, + endDate: 7, + joinStartDate: -3, + joinEndDate: 1, + boostStartDate: -1, + boostEndDate: 2, + }, + "pending-noboost": { + startDate: 7, + endDate: 14, + joinStartDate: 4, + joinEndDate: 7, + boostStartDate: 5, + boostEndDate: 7, + }, + "pending-boost": { + startDate: 3, + endDate: 10, + joinStartDate: -1, + joinEndDate: 3, + boostStartDate: -1, + boostEndDate: 2, + }, +}; +type AllocationUnit = "RECALL" | "USDC" | "USD"; +type DisplayState = "active" | "waitlist" | "cancelled" | "pending" | "paused"; +type PerpsDataSource = "external_api" | "onchain_indexing" | "hybrid"; +type SpotLiveDataSource = "rpc_direct" | "envio_indexing" | "hybrid"; +type EvaluationMetric = "calmar_ratio" | "sortino_ratio" | "simple_return"; +type SpecificChain = + | "eth" + | "polygon" + | "bsc" + | "arbitrum" + | "optimism" + | "avalanche" + | "base" + | "linea" + | "zksync" + | "scroll" + | "mantle" + | "svm"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +interface CompetitionData { + name: string; + description: string; + arenaName: string; + type: CompetitionType; + status: CompetitionStatus; + seedDateState: SeedDateState; + imageUrl: string; + externalUrl: string | null; + startDate: string; + endDate: string; + boostStartDate: string | null; + boostEndDate: string | null; + joinStartDate: string; + joinEndDate: string; + maxParticipants: number; + minimumStake: string; + minRecallRank: number | null; + allowlistOnly: boolean; + vips: string[]; + allowlist: string[]; + blocklist: string[]; + agentAllocation: string; + agentAllocationUnit: AllocationUnit; + boosterAllocation: string; + boosterAllocationUnit: AllocationUnit; + boostTimeDecayRate: string; + rewardRules: Record; + rewardDetails: string; + sandboxMode: boolean; + displayState: DisplayState; + tradingConfig?: { + dataSource?: PerpsDataSource | SpotLiveDataSource; + evaluationMetric?: EvaluationMetric; + initialCapital?: string; + selfFundingThresholdUsd?: string; + minFundingThreshold?: string; + inactivityHours?: number; + syncIntervalMinutes?: number; + chains?: Array<{ specificChain: SpecificChain; enabled: boolean }>; + allowedTokens?: Array<{ + specificChain: SpecificChain; + tokenAddress: string; + tokenSymbol: string; + }>; + allowedProtocols?: Array<{ + specificChain: SpecificChain; + protocol: string; + routerAddress: string; + factoryAddress?: string; + }>; + }; +} + +interface ArenaData { + name: string; + category: string; + skill: string; + venues: string[]; + chains: string[]; + kind: string; +} + +/** + * Load arenas from JSON file + */ +async function loadArenas(): Promise { + const dataPath = join(__dirname, "..", "data", "arenas.json"); + const content = await readFile(dataPath, "utf-8"); + return JSON.parse(content); +} + +/** + * Load competitions from JSON file + */ +async function loadCompetitions(): Promise { + const dataPath = join(__dirname, "..", "data", "competitions.json"); + const content = await readFile(dataPath, "utf-8"); + return JSON.parse(content); +} + +/** + * Calculate dynamic dates for a competition based on its status + */ +function calculateCompetitionDates(seedState: SeedDateState) { + const now = new Date(); + const DAY_MS = 24 * 60 * 60 * 1000; + + const offsets = DATE_OFFSETS[seedState]; + + return { + startDate: new Date(now.getTime() + offsets.startDate * DAY_MS), + endDate: new Date(now.getTime() + offsets.endDate * DAY_MS), + joinStartDate: new Date(now.getTime() + offsets.joinStartDate * DAY_MS), + joinEndDate: new Date(now.getTime() + offsets.joinEndDate * DAY_MS), + boostStartDate: new Date(now.getTime() + offsets.boostStartDate * DAY_MS), + boostEndDate: new Date(now.getTime() + offsets.boostEndDate * DAY_MS), + }; +} + +/** + * Seed arenas into the database + */ +export async function seedArenas( + db: NodePgDatabase, +): Promise> { + log("Seeding arenas..."); + + const arenas = await loadArenas(); + const arenaIdMap = new Map(); + + for (const arenaData of arenas) { + try { + // Check if arena already exists + const existing = await db + .select() + .from(schema.arenas) + .where(eq(schema.arenas.name, arenaData.name)) + .limit(1); + + if (existing.length > 0 && existing[0]) { + log(`Arena ${arenaData.name} already exists, skipping`, "info"); + arenaIdMap.set(arenaData.name, existing[0].id); + continue; + } + + // Insert arena with generated ID + const arenaId = randomUUID(); + await db.insert(schema.arenas).values({ + id: arenaId, + name: arenaData.name, + category: arenaData.category, + skill: arenaData.skill, + venues: arenaData.venues, + chains: arenaData.chains, + kind: arenaData.kind, + createdBy: null, + }); + + arenaIdMap.set(arenaData.name, arenaId); + log(`Created arena: ${arenaData.name}`, "success"); + } catch (error) { + log(`Failed to create arena ${arenaData.name}: ${error}`, "error"); + throw error; + } + } + + log(`Seeded ${arenas.length} arenas`, "success"); + return arenaIdMap; +} + +/** + * Seed competitions into the database + */ +export async function seedCompetitions( + db: NodePgDatabase, + arenaIdMap: Map, +): Promise { + log("Seeding competitions..."); + + const competitions = await loadCompetitions(); + const competitionIds: string[] = []; + + for (const compData of competitions) { + try { + const arenaId = arenaIdMap.get(compData.arenaName); + if (!arenaId) { + log( + `Arena ${compData.arenaName} not found, skipping competition`, + "error", + ); + continue; + } + + // Check if competition already exists + const existing = await db + .select() + .from(schema.competitions) + .where(eq(schema.competitions.name, compData.name)) + .limit(1); + + if (existing.length > 0 && existing[0]) { + log(`Competition ${compData.name} already exists, skipping`, "info"); + competitionIds.push(existing[0].id); + continue; + } + + // Calculate dynamic dates based on seed date state + const dates = calculateCompetitionDates(compData.seedDateState); + + // Insert competition with generated UUID + const competitionId = randomUUID(); + const competitionValues = { + id: competitionId, + arenaId: arenaId, + name: compData.name, + description: compData.description, + type: compData.type, + imageUrl: compData.imageUrl, + externalUrl: compData.externalUrl, + startDate: dates.startDate, + endDate: dates.endDate, + boostStartDate: dates.boostStartDate, + boostEndDate: dates.boostEndDate, + joinStartDate: dates.joinStartDate, + joinEndDate: dates.joinEndDate, + maxParticipants: compData.maxParticipants, + registeredParticipants: 0, + minimumStake: parseFloat(compData.minimumStake), + minRecallRank: compData.minRecallRank, + allowlistOnly: compData.allowlistOnly, + vips: compData.vips, + allowlist: compData.allowlist, + blocklist: compData.blocklist, + agentAllocation: parseFloat(compData.agentAllocation), + agentAllocationUnit: compData.agentAllocationUnit, + boosterAllocation: parseFloat(compData.boosterAllocation), + boosterAllocationUnit: compData.boosterAllocationUnit, + boostTimeDecayRate: parseFloat(compData.boostTimeDecayRate), + rewardRules: JSON.stringify(compData.rewardRules), + rewardDetails: compData.rewardDetails, + status: compData.status, + sandboxMode: compData.sandboxMode, + displayState: compData.displayState, + engineId: null, + engineVersion: null, + rewardsIneligible: [], + }; + + await db.insert(schema.competitions).values(competitionValues); + + competitionIds.push(competitionId); + log(`Created competition: ${compData.name}`, "success"); + + // Seed trading configuration if present + if (compData.tradingConfig) { + await seedTradingConfig(db, competitionId, compData); + } + } catch (error) { + log(`Failed to create competition ${compData.name}: ${error}`, "error"); + throw error; + } + } + + log(`Seeded ${competitionIds.length} competitions`, "success"); + return competitionIds; +} + +/** + * Seed trading configuration for a competition + */ +async function seedTradingConfig( + db: NodePgDatabase, + competitionId: string, + compData: CompetitionData, +): Promise { + const config = compData.tradingConfig; + if (!config) return; + + try { + if (compData.type === "perpetual_futures" && config.dataSource) { + // Insert perps config + const perpsConfigValues = { + competitionId: competitionId, + dataSource: config.dataSource as PerpsDataSource, + dataSourceConfig: {}, + evaluationMetric: config.evaluationMetric as EvaluationMetric, + initialCapital: config.initialCapital || "10000", + selfFundingThresholdUsd: config.selfFundingThresholdUsd || "1000", + minFundingThreshold: config.minFundingThreshold || "100", + inactivityHours: config.inactivityHours || 72, + }; + await db.insert(schema.perpsCompetitionConfig).values(perpsConfigValues); + log(`Created perps config for competition ${competitionId}`, "success"); + } else if (compData.type === "spot_live_trading") { + // Insert spot live config + const spotLiveConfigValues = { + competitionId: competitionId, + dataSource: (config.dataSource as SpotLiveDataSource) || "rpc_direct", + dataSourceConfig: {}, + selfFundingThresholdUsd: config.selfFundingThresholdUsd || "500", + minFundingThreshold: config.minFundingThreshold || "50", + inactivityHours: config.inactivityHours || 48, + syncIntervalMinutes: config.syncIntervalMinutes || 5, + }; + await db + .insert(schema.spotLiveCompetitionConfig) + .values(spotLiveConfigValues); + + // Insert chains + if (config.chains) { + for (const chain of config.chains) { + await db.insert(schema.spotLiveCompetitionChains).values({ + competitionId: competitionId, + specificChain: chain.specificChain as SpecificChain, + enabled: chain.enabled, + }); + } + } + + // Insert allowed tokens + if (config.allowedTokens) { + for (const token of config.allowedTokens) { + await db.insert(schema.spotLiveAllowedTokens).values({ + competitionId: competitionId, + specificChain: token.specificChain as SpecificChain, + tokenAddress: token.tokenAddress, + tokenSymbol: token.tokenSymbol, + }); + } + } + + // Insert allowed protocols + if (config.allowedProtocols) { + for (const protocol of config.allowedProtocols) { + await db.insert(schema.spotLiveAllowedProtocols).values({ + competitionId: competitionId, + specificChain: protocol.specificChain as SpecificChain, + protocol: protocol.protocol, + routerAddress: protocol.routerAddress, + factoryAddress: protocol.factoryAddress, + swapEventSignature: "0x", // Default empty signature + }); + } + } + + log( + `Created spot live config for competition ${competitionId}`, + "success", + ); + } + + // Insert trading competition entry + await db.insert(schema.tradingCompetitions).values({ + competitionId: competitionId, + crossChainTradingType: compData.arenaName.includes("Cross-Chain") + ? "allow" + : "disallowAll", + }); + } catch (error) { + log( + `Failed to create trading config for competition ${competitionId}: ${error}`, + "error", + ); + // Don't throw - config is optional + } +} + +/** + * Enroll agents in competitions + * - Agents 0-6 enrolled in finished competition (Winter Perpetuals) + * - Agents 0-10 enrolled in active competitions (Spring Spot, Cross-Chain) + * - Agents 7-13 left for manual enrollment + */ +export async function enrollAgentsInCompetitions( + db: NodePgDatabase, + agentIds: string[], + competitionIds: string[], +): Promise { + log("Enrolling agents in competitions..."); + + const competitionsByName = new Map(); + for (const compId of competitionIds) { + const [comp] = await db + .select() + .from(schema.competitions) + .where(eq(schema.competitions.id, compId)) + .limit(1); + + if (comp) { + competitionsByName.set(comp.name, comp.id); + } + } + + const enrollmentPlan = [ + { + competition: "Winter Perpetuals Championship", + agentIndexes: [0, 1, 2, 3, 4, 5, 6], // 7 agents in finished comp + status: "active" as const, + }, + { + competition: "Spring Spot Trading Challenge", + agentIndexes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], // 10 agents in active comp + status: "active" as const, + }, + { + competition: "Cross-Chain Masters Series", + agentIndexes: [2, 3, 4, 8, 9, 10], // 6 agents in active elite comp + status: "active" as const, + }, + ]; + + for (const plan of enrollmentPlan) { + const competitionId = competitionsByName.get(plan.competition); + if (!competitionId) { + log( + `Competition ${plan.competition} not found, skipping enrollment`, + "error", + ); + continue; + } + + for (const agentIndex of plan.agentIndexes) { + if (agentIndex >= agentIds.length) { + continue; + } + + const agentId = agentIds[agentIndex]; + + try { + if (!agentId) throw new Error("invalid agentId"); + // Check if already enrolled + const existing = await db + .select() + .from(schema.competitionAgents) + .where( + and( + eq(schema.competitionAgents.competitionId, competitionId), + eq(schema.competitionAgents.agentId, agentId), + ), + ) + .limit(1); + + if (existing.length > 0) { + log( + `Agent ${agentId} already enrolled in ${plan.competition}, skipping`, + "info", + ); + continue; + } + + // Enroll agent + await db.insert(schema.competitionAgents).values({ + competitionId: competitionId, + agentId: agentId, + status: plan.status, + deactivationReason: null, + deactivatedAt: null, + }); + + log(`Enrolled agent ${agentId} in ${plan.competition}`, "success"); + } catch (error) { + log( + `Failed to enroll agent ${agentId} in ${plan.competition}: ${error}`, + "error", + ); + // Continue with other enrollments + } + } + } + + log("Agent enrollment complete", "success"); +} diff --git a/local/seed/src/index.ts b/local/seed/src/index.ts new file mode 100644 index 000000000..04ee25d88 --- /dev/null +++ b/local/seed/src/index.ts @@ -0,0 +1,182 @@ +/** + * Main database seeding orchestrator for local development. + * + * This script seeds the database with: + * - Users (mapped to Anvil wallets) + * - Agents (owned by users) + * - Arenas (competition categories) + * - Competitions (with various statuses) + * - Agent enrollments (some enrolled, some left for manual testing) + * - Competition data (snapshots, trades, positions, leaderboards) + * + * Environment Variables: + * - DATABASE_URL: PostgreSQL connection string + * - SKIP_WAIT: Skip waiting for database (default: false) + */ +import path from "path"; +import { fileURLToPath } from "url"; + +import { migrateDb } from "@recallnet/db/utils"; + +import { seedAgents } from "./agents.js"; +import { seedAirdrop } from "./airdrop.js"; +import { seedCompetitionData } from "./competition-data.js"; +import { + enrollAgentsInCompetitions, + seedArenas, + seedCompetitions, +} from "./competitions.js"; +import { getSeededUserIds, seedUsers } from "./users.js"; +import { createDb, createDbPool, log, waitFor } from "./utils.js"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +/** + * Check if database is ready + */ +async function checkDatabaseReady(connectionString: string): Promise { + const pool = createDbPool(connectionString); + try { + await pool.query("SELECT 1"); + await pool.end(); + return true; + } catch { + return false; + } +} + +/** + * Main seeding function + */ +async function main() { + const startTime = Date.now(); + + log("=".repeat(60)); + log("Database Seeding Service"); + log("=".repeat(60)); + + // Get configuration + const DATABASE_URL = process.env.DATABASE_URL; + const SKIP_WAIT = process.env.SKIP_WAIT === "true"; + + if (!DATABASE_URL) { + log("ERROR: DATABASE_URL environment variable is required", "error"); + process.exit(1); + } + + log(`Configuration:`); + log(` DATABASE_URL: ${DATABASE_URL.replace(/:[^:@]+@/, ":***@")}`); + log(` SKIP_WAIT: ${SKIP_WAIT}`); + log(""); + + // Wait for database to be ready + if (!SKIP_WAIT) { + log("Waiting for database to be ready..."); + try { + await waitFor(() => checkDatabaseReady(DATABASE_URL), { + timeout: 120000, + interval: 2000, + description: "database connection", + }); + log("Database is ready", "success"); + } catch (error) { + log(`Database connection timeout: ${error}`, "error"); + process.exit(1); + } + } + + // Create database connection + const pool = createDbPool(DATABASE_URL); + const db = createDb(pool); + + try { + log(""); + log("=".repeat(60)); + log("Running database migrations..."); + log("=".repeat(60)); + log(""); + + // Run migrations first + const migrationsFolder = path.resolve( + __dirname, + "../../../apps/api/drizzle", + ); + await migrateDb(db, pool, migrationsFolder, { + info: (message) => + log( + typeof message === "string" ? message : JSON.stringify(message), + "info", + ), + error: (message, error) => log(`${message}: ${error}`, "error"), + }); + + log(""); + log("=".repeat(60)); + log("Starting database seeding..."); + log("=".repeat(60)); + log(""); + + // Step 1: Seed arenas + const arenaIdMap = await seedArenas(db); + log(""); + + // Step 2: Seed users (from Anvil wallets) + await seedUsers(db); + const userIds = await getSeededUserIds(db); + log(""); + + // Step 3: Seed agents (owned by users) + const agentIds = await seedAgents(db, userIds); + log(""); + + // Step 4: Seed competitions (references arenas) + const competitionIds = await seedCompetitions(db, arenaIdMap); + log(""); + + // Step 5: Enroll some agents in competitions + await enrollAgentsInCompetitions(db, agentIds, competitionIds); + log(""); + + // Step 6: Seed all competition data (snapshots, trades, positions, leaderboards) + await seedCompetitionData(db, competitionIds); + log(""); + + // Step 7: Seed airdrop data (seasons and allocations) + await seedAirdrop(db); + log(""); + + // Summary + const duration = ((Date.now() - startTime) / 1000).toFixed(2); + log("=".repeat(60)); + log("Seeding complete!", "success"); + log("=".repeat(60)); + log(`Summary:`); + log(` Arenas: ${arenaIdMap.size}`); + log(` Users: ${userIds.length}`); + log(` Agents: ${agentIds.length}`); + log(` Competitions: ${competitionIds.length}`); + log(` Duration: ${duration}s`); + log(""); + log("Next steps:"); + log(" 1. API should be accessible at http://localhost:3000"); + log(" 2. Frontend should be accessible at http://localhost:3001"); + log(" 3. Check logs for agent API keys"); + log(""); + } catch (error) { + log(`Seeding failed: ${error}`, "error"); + if (error instanceof Error) { + log(error.stack || "", "error"); + } + process.exit(1); + } finally { + await pool.end(); + } +} + +// Run if called directly +if (import.meta.url === `file://${process.argv[1]}`) { + main().catch((error) => { + console.error("Fatal error:", error); + process.exit(1); + }); +} diff --git a/local/seed/src/users.ts b/local/seed/src/users.ts new file mode 100644 index 000000000..9172c7cbd --- /dev/null +++ b/local/seed/src/users.ts @@ -0,0 +1,113 @@ +import { randomUUID } from "crypto"; +import { eq } from "drizzle-orm"; +import type { NodePgDatabase } from "drizzle-orm/node-postgres"; + +import schema from "@recallnet/db/schema"; + +import { ANVIL_WALLETS } from "./anvil-wallets.js"; +import { log } from "./utils.js"; + +export interface UserSeedData { + walletAddress: string; + privyId: string | null; + name: string; + email: string; + imageUrl: string; +} + +/** + * Generate user seed data from Anvil wallets + */ +export function generateUserData(): UserSeedData[] { + const userNames = [ + "Alice Trader", + "Bob Arbitrage", + "Charlie DeFi", + "Diana Strategy", + "Eve Analytics", + "Frank Quant", + "Grace Market", + "Henry Algo", + "Iris Smart", + "Jack Crypto", + ]; + + return ANVIL_WALLETS.map((wallet, index) => ({ + walletAddress: wallet.address, + privyId: null, + name: userNames[index] || `User ${index + 1}`, + email: `user${index}@recall.local`, + imageUrl: `https://api.dicebear.com/7.x/avataaars/svg?seed=${index}`, + })); +} + +/** + * Seed users into the database + */ +export async function seedUsers( + db: NodePgDatabase, +): Promise { + log("Seeding users..."); + + const userData = generateUserData(); + + for (const user of userData) { + try { + // Check if user already exists + const existing = await db + .select() + .from(schema.users) + .where(eq(schema.users.walletAddress, user.walletAddress)) + .limit(1); + + if (existing.length > 0) { + log(`User ${user.walletAddress} already exists, skipping`, "info"); + continue; + } + + // Insert user with generated UUID + await db.insert(schema.users).values({ + id: randomUUID(), + walletAddress: user.walletAddress, + privyId: user.privyId, + name: user.name, + email: user.email, + imageUrl: user.imageUrl, + status: "active", + isSubscribed: false, + metadata: {}, + }); + + log(`Created user: ${user.name} (${user.walletAddress})`, "success"); + } catch (error) { + log(`Failed to create user ${user.name}: ${error}`, "error"); + throw error; + } + } + + log(`Seeded ${userData.length} users`, "success"); +} + +/** + * Get seeded user IDs + */ +export async function getSeededUserIds( + db: NodePgDatabase, +): Promise { + // Get users in the same order as ANVIL_WALLETS to ensure consistent indexing + const userIds: string[] = []; + + for (const wallet of ANVIL_WALLETS) { + const [user] = await db + .select({ id: schema.users.id }) + .from(schema.users) + .where(eq(schema.users.walletAddress, wallet.address)) + .limit(1); + + if (user) { + userIds.push(user.id); + } + } + + return userIds; +} diff --git a/local/seed/src/utils.ts b/local/seed/src/utils.ts new file mode 100644 index 000000000..f6b63fac7 --- /dev/null +++ b/local/seed/src/utils.ts @@ -0,0 +1,127 @@ +import { drizzle } from "drizzle-orm/node-postgres"; +import pg from "pg"; + +import schema from "@recallnet/db/schema"; + +const { Pool } = pg; + +/** + * Create database connection pool + */ +export function createDbPool(connectionString: string) { + return new Pool({ + connectionString, + max: 5, + idleTimeoutMillis: 30000, + connectionTimeoutMillis: 10000, + }); +} + +/** + * Create Drizzle instance + */ +export function createDb(pool: pg.Pool) { + return drizzle(pool, { schema }); +} + +/** + * Wait for a condition with timeout + */ +export async function waitFor( + condition: () => Promise, + options: { + timeout?: number; + interval?: number; + description?: string; + } = {}, +): Promise { + const { + timeout = 60000, + interval = 1000, + description = "condition", + } = options; + const startTime = Date.now(); + + while (Date.now() - startTime < timeout) { + try { + if (await condition()) { + return; + } + } catch { + // Ignore errors during wait + } + await sleep(interval); + } + + throw new Error(`Timeout waiting for ${description} after ${timeout}ms`); +} + +/** + * Sleep utility + */ +export function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +/** + * Generate a random API key + */ +export function generateApiKey(): string { + const chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + const length = 32; + let result = "rcl_"; + for (let i = 0; i < length; i++) { + result += chars.charAt(Math.floor(Math.random() * chars.length)); + } + return result; +} + +/** + * Create a hash of the API key (simplified for dev) + */ +export function hashApiKey(apiKey: string): string { + // In production this would use proper hashing like bcrypt + // For dev/testing, we'll use a simple hash + return `hash_${Buffer.from(apiKey).toString("base64")}`; +} + +/** + * Generate a random Ethereum address (for agents) + */ +export function generateRandomEthAddress(): string { + // Generate a random 40 character hex string + const chars = "0123456789abcdef"; + let address = "0x"; + for (let i = 0; i < 40; i++) { + address += chars.charAt(Math.floor(Math.random() * chars.length)); + } + return address; +} + +/** + * Generate a random handle (max 15 characters) + */ +export function generateHandle(name: string): string { + const sanitized = name.toLowerCase().replace(/[^a-z0-9]/g, ""); + const random = Math.floor(Math.random() * 10000); + const handle = `${sanitized}${random}`; + // Truncate to 15 characters max + return handle.substring(0, 15); +} + +/** + * Log with timestamp + */ +export function log( + message: string, + level: "info" | "error" | "success" = "info", +) { + const timestamp = new Date().toISOString(); + const prefix = { + info: "ℹ", + error: "✗", + success: "✓", + }[level]; + console.log(`[${timestamp}] ${prefix} ${message}`); +} diff --git a/local/tsconfig.json b/local/tsconfig.json new file mode 100644 index 000000000..18df951cb --- /dev/null +++ b/local/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "lib": ["ES2022"], + "moduleResolution": "bundler", + "resolveJsonModule": true, + "allowJs": true, + "outDir": "./dist", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "types": ["node"] + }, + "include": ["seed/src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/db/src/repositories/__tests__/boost.bonus.integration.test.ts b/packages/db/src/repositories/__tests__/boost.bonus.integration.test.ts index 0d6ce3a81..f5e09d91b 100644 --- a/packages/db/src/repositories/__tests__/boost.bonus.integration.test.ts +++ b/packages/db/src/repositories/__tests__/boost.bonus.integration.test.ts @@ -1,4 +1,4 @@ -import { and, eq } from "drizzle-orm"; +import { and, eq, sql } from "drizzle-orm"; import { randomUUID } from "node:crypto"; import { afterEach, @@ -60,40 +60,19 @@ describe("BoostRepository Bonus Boost Methods Integration Tests", () => { }); afterEach(async () => { - try { - const balances = await db - .select({ id: schema.boostBalances.id }) - .from(schema.boostBalances) - .where(eq(schema.boostBalances.userId, testUserId)); - - for (const balance of balances) { - await db - .delete(schema.boostChanges) - .where(eq(schema.boostChanges.balanceId, balance.id)); - } - - await db - .delete(schema.boostBalances) - .where(eq(schema.boostBalances.userId, testUserId)); - - await db - .delete(schema.boostBonus) - .where(eq(schema.boostBonus.userId, testUserId)); - - await db - .delete(coreSchema.competitions) - .where(eq(coreSchema.competitions.id, testCompetitionId)); - - await db - .delete(coreSchema.users) - .where(eq(coreSchema.users.id, testUserId)); - - await db - .delete(coreSchema.admins) - .where(eq(coreSchema.admins.id, testAdminId)); - } catch (error) { - console.warn("Cleanup error:", error); - } + // Truncate all tables to ensure complete test isolation + // Order matters due to FK constraints, but CASCADE handles it + await db.execute(sql`TRUNCATE TABLE + boost_changes, + boost_balances, + boost_bonus, + agent_boosts, + agent_boost_totals, + stake_boost_awards, + competitions, + admins, + users + CASCADE`); }); describe("createBoostBonus()", () => { @@ -476,10 +455,6 @@ describe("BoostRepository Bonus Boost Methods Integration Tests", () => { expect(results).toHaveLength(1); expect(results[0]!.id).toBe(testUserBoost.id); - - await db - .delete(coreSchema.users) - .where(eq(coreSchema.users.id, otherUserId)); }); }); @@ -521,10 +496,6 @@ describe("BoostRepository Bonus Boost Methods Integration Tests", () => { expect(ids).toContain(boost1.id); expect(ids).toContain(boost2.id); expect(ids).not.toContain(inactive.id); - - await db - .delete(coreSchema.users) - .where(eq(coreSchema.users.id, otherUserId)); }); test("should return empty array when no active boosts exist", async () => { @@ -922,26 +893,6 @@ describe("BoostRepository Bonus Boost Methods Integration Tests", () => { const competitionIds = results.map((r) => r.competitionId); expect(competitionIds).toContain(testCompetitionId); expect(competitionIds).toContain(competition2Id); - - const balance2 = await db - .select() - .from(schema.boostBalances) - .where( - and( - eq(schema.boostBalances.userId, testUserId), - eq(schema.boostBalances.competitionId, competition2Id), - ), - ) - .limit(1); - if (balance2[0]) { - await db - .delete(schema.boostChanges) - .where(eq(schema.boostChanges.balanceId, balance2[0].id)); - } - - await db - .delete(coreSchema.competitions) - .where(eq(coreSchema.competitions.id, competition2Id)); }); test("should not return changes without boostBonusId in meta", async () => { @@ -1087,26 +1038,6 @@ describe("BoostRepository Bonus Boost Methods Integration Tests", () => { await repository.findBoostChangesByCompetitionId(testCompetitionId); expect(results).toHaveLength(0); - - const balance2 = await db - .select() - .from(schema.boostBalances) - .where( - and( - eq(schema.boostBalances.userId, testUserId), - eq(schema.boostBalances.competitionId, competition2Id), - ), - ) - .limit(1); - if (balance2[0]) { - await db - .delete(schema.boostChanges) - .where(eq(schema.boostChanges.balanceId, balance2[0].id)); - } - - await db - .delete(coreSchema.competitions) - .where(eq(coreSchema.competitions.id, competition2Id)); }); }); }); diff --git a/packages/staking-contracts/contracts b/packages/staking-contracts/contracts index b0ab09731..b3c012956 160000 --- a/packages/staking-contracts/contracts +++ b/packages/staking-contracts/contracts @@ -1 +1 @@ -Subproject commit b0ab09731b2286103de7e01a5708cf24e0f4a20b +Subproject commit b3c01295645d34b215f70c90c3369976d5798204 diff --git a/packages/staking-contracts/test/time-travel.integration.test.ts b/packages/staking-contracts/test/time-travel.integration.test.ts index 8a26bd3f2..6b36390c2 100644 --- a/packages/staking-contracts/test/time-travel.integration.test.ts +++ b/packages/staking-contracts/test/time-travel.integration.test.ts @@ -146,7 +146,14 @@ describe("TimeTravel", () => { const reverted = await timeTravel.getCurrentBlock(); // Block number should be back to snapshot state - expect(reverted.blockNumber).toBe(beforeSnapshot.blockNumber); + // Allow for off-by-a-bit due to Anvil's --block-time 1 auto-mining + // between revert() and getCurrentBlock() + expect(reverted.blockNumber).toBeGreaterThanOrEqual( + beforeSnapshot.blockNumber - 2n, + ); + expect(reverted.blockNumber).toBeLessThanOrEqual( + beforeSnapshot.blockNumber + 2n, + ); }); }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84a24d190..8b4026991 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -512,6 +512,31 @@ importers: specifier: ^3.2.4 version: 3.2.4(@types/debug@4.1.12)(@types/node@20.17.48)(jiti@2.4.2)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(lightningcss@1.30.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.1) + local: + dependencies: + '@recallnet/db': + specifier: workspace:* + version: link:../packages/db + drizzle-orm: + specifier: ^0.43.1 + version: 0.43.1(@electric-sql/pglite@0.2.17)(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(@vercel/postgres@0.10.0(utf-8-validate@5.0.10))(better-sqlite3@11.8.1)(bun-types@1.2.17)(pg@8.16.0)(sql.js@1.13.0) + pg: + specifier: ^8.13.1 + version: 8.16.0 + devDependencies: + '@types/node': + specifier: ^22.10.2 + version: 22.15.19 + '@types/pg': + specifier: ^8.11.10 + version: 8.15.5 + tsx: + specifier: ^4.19.2 + version: 4.21.0 + typescript: + specifier: ^5.7.2 + version: 5.8.3 + packages/conversions: dependencies: dnum: @@ -21966,13 +21991,13 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/responselike': 1.0.3 '@types/chai-as-promised@7.1.8': @@ -21985,7 +22010,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/cors@2.8.18': dependencies: @@ -22047,7 +22072,7 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -22064,7 +22089,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/hast@3.0.4': dependencies: @@ -22088,7 +22113,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/lodash@4.17.20': {} @@ -22104,7 +22129,7 @@ snapshots: '@types/mysql@2.15.27': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/node@12.20.55': {} @@ -22138,14 +22163,14 @@ snapshots: '@types/pg@8.11.6': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 pg-protocol: 1.10.3 pg-types: 4.1.0 optional: true '@types/pg@8.15.4': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 pg-protocol: 1.10.3 pg-types: 2.2.0 @@ -22173,17 +22198,17 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/send': 0.17.4 '@types/shimmer@1.2.0': {} @@ -22199,11 +22224,11 @@ snapshots: '@types/tedious@4.0.14': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/through@0.0.33': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/tinycolor2@1.4.6': {} @@ -22219,11 +22244,11 @@ snapshots: '@types/ws@7.4.7': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@types/ws@8.18.1': dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: @@ -24168,7 +24193,7 @@ snapshots: bun-types@1.2.17: dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 optional: true bundle-name@4.1.0: @@ -26258,7 +26283,7 @@ snapshots: p-map: 7.0.3 resolve.exports: 2.0.3 semver: 7.7.2 - tsx: 4.20.6 + tsx: 4.21.0 ws: 8.18.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) zod: 3.25.76 transitivePeerDependencies: @@ -26827,7 +26852,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.3.0 + '@types/node': 22.15.19 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -28579,7 +28604,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.3.0 + '@types/node': 22.15.19 long: 5.3.2 proxy-addr@2.0.7: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3ff5faaaf..ee6fa64e4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,4 @@ packages: - "apps/*" - "packages/*" + - "local" diff --git a/turbo.json b/turbo.json index ff9050255..f346312e9 100644 --- a/turbo.json +++ b/turbo.json @@ -20,7 +20,8 @@ "SENTRY_DATABASE_SAMPLE_RATE", "SENTRY_NAVIGATION_SAMPLE_RATE", "SENTRY_PROFILE_SAMPLE_RATE", - "ENABLE_SENTRY_DB_MONITORING" + "ENABLE_SENTRY_DB_MONITORING", + "SKIP_WAIT" ], "tasks": { "test": {