APE Price: $1.18 (+9.80%)

Contract

0xbe42364FcA1a6aD379493061d7D3bB92972b5761

Overview

APE Balance

Apechain LogoApechain LogoApechain Logo0 APE

APE Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x6080604038939612024-11-09 2:03:317 days ago1731117811IN
 Contract Creation
0 APE0.038753325.42069

Parent Transaction Hash Block From To
View All Internal Transactions

Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x0FC4340D...d08Dd57DC
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
PunksData

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at apescan.io on 2024-11-09
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

contract PunksData {


    string internal constant SVG_HEADER = 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.2" viewBox="0 0 24 24">';
    string internal constant SVG_FOOTER = '</svg>';

    bytes private palette;
    mapping(uint8 => bytes) private assets;
    mapping(uint8 => string) private assetNames;
    mapping(uint64 => uint32) private composites;
    mapping(uint8 => bytes) private punks;

    address payable internal deployer;
    bool private contractSealed = false;

    modifier onlyDeployer() {
        require(msg.sender == deployer, "Only deployer.");
        _;
    }

    modifier unsealed() {
        require(!contractSealed, "Contract sealed.");
        _;
    }

    constructor() {
        deployer = payable(msg.sender);
    }

    function setPalette(bytes memory _palette) external  unsealed {
        palette = _palette;
    }

    function addAsset(uint8 index, bytes memory encoding, string memory name) external  unsealed {
        assets[index] = encoding;
        assetNames[index] = name;
    }

    function addComposites(uint64 key1, uint32 value1, uint64 key2, uint32 value2, uint64 key3, uint32 value3, uint64 key4, uint32 value4) external  unsealed {
        composites[key1] = value1;
        composites[key2] = value2;
        composites[key3] = value3;
        composites[key4] = value4;
    }

    function addPunks(uint8 index, bytes memory _punks) external  unsealed {
        punks[index] = _punks;
    }

    function sealContract() external onlyDeployer unsealed {
        contractSealed = true;
    }

    /**
     * The Cryptopunk image for the given index.
     * The image is represented in a row-major byte array where each set of 4 bytes is a pixel in RGBA format.
     * @param index the punk index, 0 <= index < 10000
     */
    function punkImage(uint16 index) public view returns (bytes memory) {
        require(index >= 0 && index < 10000);
        bytes memory pixels = new bytes(2304);
        for (uint j = 0; j < 8; j++) {
            uint8 asset = uint8(punks[uint8(index / 100)][(index % 100) * 8 + j]);
            if (asset > 0) {
                bytes storage a = assets[asset];
                uint n = a.length / 3;
                for (uint i = 0; i < n; i++) {
                    uint[4] memory v = [
                        uint(uint8(a[i * 3]) & 0xF0) >> 4,
                        uint(uint8(a[i * 3]) & 0xF),
                        uint(uint8(a[i * 3 + 2]) & 0xF0) >> 4,
                        uint(uint8(a[i * 3 + 2]) & 0xF)
                    ];
                    for (uint dx = 0; dx < 2; dx++) {
                        for (uint dy = 0; dy < 2; dy++) {
                            uint p = ((2 * v[1] + dy) * 24 + (2 * v[0] + dx)) * 4;
                            if (v[2] & (1 << (dx * 2 + dy)) != 0) {
                                bytes4 c = composite(a[i * 3 + 1],
                                        pixels[p],
                                        pixels[p + 1],
                                        pixels[p + 2],
                                        pixels[p + 3]
                                    );
                                pixels[p] = c[0];
                                pixels[p+1] = c[1];
                                pixels[p+2] = c[2];
                                pixels[p+3] = c[3];
                            } else if (v[3] & (1 << (dx * 2 + dy)) != 0) {
                                pixels[p] = 0;
                                pixels[p+1] = 0;
                                pixels[p+2] = 0;
                                pixels[p+3] = 0xFF;
                            }
                        }
                    }
                }
            }
        }
        return pixels;
    }

    /**
     * The Cryptopunk image for the given index, in SVG format.
     * In the SVG, each "pixel" is represented as a 1x1 rectangle.
     * @param index the punk index, 0 <= index < 10000
     */
    function punkImageSvg(uint16 index) external view returns (string memory svg) {
        bytes memory pixels = punkImage(index);
        svg = string(abi.encodePacked(SVG_HEADER));
        bytes memory buffer = new bytes(8);
        for (uint y = 0; y < 24; y++) {
            for (uint x = 0; x < 24; x++) {
                uint p = (y * 24 + x) * 4;
                if (uint8(pixels[p + 3]) > 0) {
                    for (uint i = 0; i < 4; i++) {
                        uint8 value = uint8(pixels[p + i]);
                        buffer[i * 2 + 1] = _HEX_SYMBOLS[value & 0xf];
                        value >>= 4;
                        buffer[i * 2] = _HEX_SYMBOLS[value & 0xf];
                    }
                    svg = string(abi.encodePacked(svg,
                        '<rect x="', toString(x), '" y="', toString(y),'" width="1" height="1" shape-rendering="crispEdges" fill="#', string(buffer),'"/>'));
                }
            }
        }
        svg = string(abi.encodePacked(svg, SVG_FOOTER));
    }

    /**
     * The Cryptopunk attributes for the given index.
     * The attributes are a comma-separated list in UTF-8 string format.
     * The first entry listed is not technically an attribute, but the "head type" of the Cryptopunk.
     * @param index the punk index, 0 <= index < 10000
     */
    function punkAttributes(uint16 index) external view returns (string memory text) {
        require(index >= 0 && index < 10000);
        uint8 cell = uint8(index / 100);
        uint offset = (index % 100) * 8;
        for (uint j = 0; j < 8; j++) {
            uint8 asset = uint8(punks[cell][offset + j]);
            if (asset > 0) {
                if (j > 0) {
                    text = string(abi.encodePacked(text, ", ", assetNames[asset]));
                } else {
                    text = assetNames[asset];
                }
            } else {
                break;
            }
        }
    }

    function composite(bytes1 index, bytes1 yr, bytes1 yg, bytes1 yb, bytes1 ya) internal view returns (bytes4 rgba) {
        uint x = uint(uint8(index)) * 4;
        uint8 xAlpha = uint8(palette[x + 3]);
        if (xAlpha == 0xFF) {
            rgba = bytes4(uint32(
                    (uint(uint8(palette[x])) << 24) |
                    (uint(uint8(palette[x+1])) << 16) |
                    (uint(uint8(palette[x+2])) << 8) |
                    xAlpha
                ));
        } else {
            uint64 key =
                (uint64(uint8(palette[x])) << 56) |
                (uint64(uint8(palette[x + 1])) << 48) |
                (uint64(uint8(palette[x + 2])) << 40) |
                (uint64(xAlpha) << 32) |
                (uint64(uint8(yr)) << 24) |
                (uint64(uint8(yg)) << 16) |
                (uint64(uint8(yb)) << 8) |
                (uint64(uint8(ya)));
            rgba = bytes4(composites[key]);
        }
    }

    //// String stuff from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol

    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"},{"internalType":"bytes","name":"encoding","type":"bytes"},{"internalType":"string","name":"name","type":"string"}],"name":"addAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"key1","type":"uint64"},{"internalType":"uint32","name":"value1","type":"uint32"},{"internalType":"uint64","name":"key2","type":"uint64"},{"internalType":"uint32","name":"value2","type":"uint32"},{"internalType":"uint64","name":"key3","type":"uint64"},{"internalType":"uint32","name":"value3","type":"uint32"},{"internalType":"uint64","name":"key4","type":"uint64"},{"internalType":"uint32","name":"value4","type":"uint32"}],"name":"addComposites","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"},{"internalType":"bytes","name":"_punks","type":"bytes"}],"name":"addPunks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"}],"name":"punkAttributes","outputs":[{"internalType":"string","name":"text","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"}],"name":"punkImage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"index","type":"uint16"}],"name":"punkImageSvg","outputs":[{"internalType":"string","name":"svg","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sealContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_palette","type":"bytes"}],"name":"setPalette","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c806374beb0471161005b57806374beb047146100e657806376dfe297146100f9578063844e2cd51461010c578063dae2ae201461011f57600080fd5b806326b973641461008d5780633e5e0a96146100a257806368bd580e146100cb5780636f2a6568146100d3575b600080fd5b6100a061009b3660046112d9565b610132565b005b6100b56100b0366004611327565b610186565b6040516100c2919061139b565b60405180910390f35b6100a0610803565b6100a06100e13660046113da565b61088d565b6100b56100f4366004611327565b61092c565b6100b5610107366004611327565b610bb7565b6100a061011a366004611471565b610d72565b6100a061012d3660046114a6565b610dac565b600554600160a01b900460ff16156101655760405162461bcd60e51b815260040161015c9061152e565b60405180910390fd5b60ff8216600090815260046020526040902061018182826115e0565b505050565b60606127108261ffff161061019a57600080fd5b60408051610900808252610920820190925260009160208201818036833701905050905060005b60088110156107fc5760006004816101da6064886116cc565b60ff1681526020810191909152604001600020826101f96064886116ed565b61020490600861170e565b61ffff166102129190611734565b815461021d90611558565b811061022b5761022b61174d565b81546001161561024a5790600052602060002090602091828204019190065b9054600160f81b911a0260f81c905080156107e95760ff811660009081526001602052604081208054909190600390839061028490611558565b61028f929150611763565b905060005b818110156107e557600060405180608001604052806004868560036102b99190611777565b81546102c490611558565b81106102d2576102d261174d565b8154600116156102f15790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60f016901c815260200185610314856003611777565b815461031f90611558565b811061032d5761032d61174d565b81546001161561034c5790600052602060002090602091828204019190065b9054901a600160f81b0260f81c600f16815260200160048661036f866003611777565b61037a906002611734565b815461038590611558565b81106103935761039361174d565b8154600116156103b25790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60f016901c8152602001856103d5856003611777565b6103e0906002611734565b81546103eb90611558565b81106103f9576103f961174d565b8154600116156104185790600052602060002090602091828204019190065b9054901a600160f81b0260f81c600f169052905060005b60028110156107d05760005b60028110156107bd5782516000908390610456906002611777565b6104609190611734565b60208501518390610472906002611777565b61047c9190611734565b610487906018611777565b6104919190611734565b61049c906004611777565b9050816104aa846002611777565b6104b49190611734565b6040850151600190911b16156106af5760006105c9886104d5886003611777565b6104e0906001611734565b81546104eb90611558565b81106104f9576104f961174d565b8154600116156105185790600052602060002090602091828204019190065b9054901a600160f81b028c84815181106105345761053461174d565b01602001516001600160f81b0319168d61054f866001611734565b8151811061055f5761055f61174d565b01602001516001600160f81b0319168e61057a876002611734565b8151811061058a5761058a61174d565b01602001516001600160f81b0319168f6105a5886003611734565b815181106105b5576105b561174d565b01602001516001600160f81b031916610e15565b90508060001a60f81b8b83815181106105e4576105e461174d565b60200101906001600160f81b031916908160001a9053508060011a60f81b8b61060e846001611734565b8151811061061e5761061e61174d565b60200101906001600160f81b031916908160001a9053508060021a60f81b8b610648846002611734565b815181106106585761065861174d565b60200101906001600160f81b031916908160001a9053508060031a60f81b8b610682846003611734565b815181106106925761069261174d565b60200101906001600160f81b031916908160001a905350506107aa565b816106bb846002611777565b6106c59190611734565b6060850151600190911b16156107aa57600060f81b8a82815181106106ec576106ec61174d565b60200101906001600160f81b031916908160001a90535060008a610711836001611734565b815181106107215761072161174d565b60200101906001600160f81b031916908160001a90535060008a610746836002611734565b815181106107565761075661174d565b60200101906001600160f81b031916908160001a9053506001600160f81b03198a610782836003611734565b815181106107925761079261174d565b60200101906001600160f81b031916908160001a9053505b50806107b58161178e565b91505061043b565b50806107c88161178e565b91505061042f565b505080806107dd9061178e565b915050610294565b5050505b50806107f48161178e565b9150506101c1565b5092915050565b6005546001600160a01b0316331461084e5760405162461bcd60e51b815260206004820152600e60248201526d27b7363c903232b83637bcb2b91760911b604482015260640161015c565b600554600160a01b900460ff16156108785760405162461bcd60e51b815260040161015c9061152e565b6005805460ff60a01b1916600160a01b179055565b600554600160a01b900460ff16156108b75760405162461bcd60e51b815260040161015c9061152e565b67ffffffffffffffff978816600090815260036020526040808220805463ffffffff1990811663ffffffff9b8c1617909155978a16825280822080548916978a169790971790965593881684528484208054871693881693909317909255909516815220805490911692909116919091179055565b6060600061093983610186565b90506040518060a001604052806062815260200161199a6062913960405160200161096491906117a7565b60408051808303601f19018152600880845283830190925293506000919060208201818036833701905050905060005b6018811015610b6d5760005b6018811015610b5a576000816109b7846018611777565b6109c19190611734565b6109cc906004611777565b90506000856109dc836003611734565b815181106109ec576109ec61174d565b016020015160f81c1115610b475760005b6004811015610b0d57600086610a138385611734565b81518110610a2357610a2361174d565b016020015160f81c90506f181899199a1a9b1b9c1cb0b131b232b360811b600f821660108110610a5557610a5561174d565b1a60f81b86610a65846002611777565b610a70906001611734565b81518110610a8057610a8061174d565b60200101906001600160f81b031916908160001a90535060041c600f166f181899199a1a9b1b9c1cb0b131b232b360811b8160108110610ac257610ac261174d565b1a60f81b86610ad2846002611777565b81518110610ae257610ae261174d565b60200101906001600160f81b031916908160001a905350508080610b059061178e565b9150506109fd565b5085610b1883611107565b610b2185611107565b86604051602001610b3594939291906117c3565b60405160208183030381529060405295505b5080610b528161178e565b9150506109a0565b5080610b658161178e565b915050610994565b5082604051806040016040528060068152602001651e17b9bb339f60d11b815250604051602001610b9f9291906118a3565b60405160208183030381529060405292505050919050565b60606127108261ffff1610610bcb57600080fd5b6000610bd86064846116cc565b90506000610be76064856116ed565b610bf290600861170e565b61ffff16905060005b6008811015610d6a5760ff83166000908152600460205260408120610c208385611734565b8154610c2b90611558565b8110610c3957610c3961174d565b815460011615610c585790600052602060002090602091828204019190065b9054600160f81b911a0260f81c90508015610d51578115610caf5760ff81166000908152600260209081526040918290209151610c999288929091016118d2565b6040516020818303038152906040529450610d57565b60ff811660009081526002602052604090208054610ccc90611558565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf890611558565b8015610d455780601f10610d1a57610100808354040283529160200191610d45565b820191906000526020600020905b815481529060010190602001808311610d2857829003601f168201915b50505050509450610d57565b50610d6a565b5080610d628161178e565b915050610bfb565b505050919050565b600554600160a01b900460ff1615610d9c5760405162461bcd60e51b815260040161015c9061152e565b6000610da882826115e0565b5050565b600554600160a01b900460ff1615610dd65760405162461bcd60e51b815260040161015c9061152e565b60ff83166000908152600160205260409020610df283826115e0565b5060ff83166000908152600260205260409020610e0f82826115e0565b50505050565b600080610e2760f888901c6004611777565b9050600080610e37836003611734565b8154610e4290611558565b8110610e5057610e5061174d565b815460011615610e6f5790600052602060002090602091828204019190065b9054600160f81b911a0260f81c905060ff819003610f935760ff811660086000610e9a856002611734565b8154610ea590611558565b8110610eb357610eb361174d565b815460011615610ed25790600052602060002090602091828204019190065b9054600160f81b911a0260f81c901b60106000610ef0866001611734565b8154610efb90611558565b8110610f0957610f0961174d565b815460011615610f285790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60ff16901b60186000868154610f4a90611558565b8110610f5857610f5861174d565b815460011615610f775790600052602060002090602091828204019190065b9054600160f81b911a0260f81c901b17171760e01b92506110fc565b600060f885901c61ff0060f088901c1662ff000060e88a901c1663ff00000060e08c901c1664ff00000000602087901b16602886610fd28a6002611734565b8154610fdd90611558565b8110610feb57610feb61174d565b81546001161561100a5790600052602060002090602091828204019190065b9054600160f81b911a0260f81c901b603060006110288b6001611734565b815461103390611558565b81106110415761104161174d565b8154600116156110605790600052602060002090602091828204019190065b9054901a600160f81b0260f81c60ff1667ffffffffffffffff16901b603860008b815461108c90611558565b811061109a5761109a61174d565b8154600116156110b95790600052602060002090602091828204019190065b9054600160f81b911a0260f81c901b1717171717171767ffffffffffffffff166000908152600360205260409020546001600160e01b031960e09190911b169350505b505095945050505050565b60608160000361112e5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561115857806111428161178e565b91506111519050600a83611763565b9150611132565b60008167ffffffffffffffff81111561117357611173611226565b6040519080825280601f01601f19166020018201604052801561119d576020820181803683370190505b5090505b8415611208576111b2600183611972565b91506111bf600a86611985565b6111ca906030611734565b60f81b8183815181106111df576111df61174d565b60200101906001600160f81b031916908160001a905350611201600a86611763565b94506111a1565b949350505050565b803560ff8116811461122157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561125757611257611226565b604051601f8501601f19908116603f0116810190828211818310171561127f5761127f611226565b8160405280935085815286868601111561129857600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126112c357600080fd5b6112d28383356020850161123c565b9392505050565b600080604083850312156112ec57600080fd5b6112f583611210565b9150602083013567ffffffffffffffff81111561131157600080fd5b61131d858286016112b2565b9150509250929050565b60006020828403121561133957600080fd5b813561ffff811681146112d257600080fd5b60005b8381101561136657818101518382015260200161134e565b50506000910152565b6000815180845261138781602086016020860161134b565b601f01601f19169290920160200192915050565b6020815260006112d2602083018461136f565b803567ffffffffffffffff8116811461122157600080fd5b803563ffffffff8116811461122157600080fd5b600080600080600080600080610100898b0312156113f757600080fd5b611400896113ae565b975061140e60208a016113c6565b965061141c60408a016113ae565b955061142a60608a016113c6565b945061143860808a016113ae565b935061144660a08a016113c6565b925061145460c08a016113ae565b915061146260e08a016113c6565b90509295985092959890939650565b60006020828403121561148357600080fd5b813567ffffffffffffffff81111561149a57600080fd5b611208848285016112b2565b6000806000606084860312156114bb57600080fd5b6114c484611210565b9250602084013567ffffffffffffffff808211156114e157600080fd5b6114ed878388016112b2565b9350604086013591508082111561150357600080fd5b508401601f8101861361151557600080fd5b6115248682356020840161123c565b9150509250925092565b60208082526010908201526f21b7b73a3930b1ba1039b2b0b632b21760811b604082015260600190565b600181811c9082168061156c57607f821691505b60208210810361158c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561018157600081815260208120601f850160051c810160208610156115b95750805b601f850160051c820191505b818110156115d8578281556001016115c5565b505050505050565b815167ffffffffffffffff8111156115fa576115fa611226565b61160e816116088454611558565b84611592565b602080601f831160018114611643576000841561162b5750858301515b600019600386901b1c1916600185901b1785556115d8565b600085815260208120601f198616915b8281101561167257888601518255948401946001909101908401611653565b50858210156116905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff808416806116e1576116e16116a0565b92169190910492915050565b600061ffff80841680611702576117026116a0565b92169190910692915050565b61ffff81811683821602808216919082811461172c5761172c6116b6565b505092915050565b80820180821115611747576117476116b6565b92915050565b634e487b7160e01b600052603260045260246000fd5b600082611772576117726116a0565b500490565b8082028115828204841417611747576117476116b6565b6000600182016117a0576117a06116b6565b5060010190565b600082516117b981846020870161134b565b9190910192915050565b600085516117d5818460208a0161134b565b681e3932b1ba103c1e9160b91b90830190815285516117fb816009840160208a0161134b565b6411103c9e9160d91b60099290910191820152845161182181600e84016020890161134b565b7f222077696474683d223122206865696768743d2231222073686170652d72656e600e92909101918201527f646572696e673d2263726973704564676573222066696c6c3d22230000000000602e820152835161188581604984016020880161134b565b6211179f60e91b60499290910191820152604c019695505050505050565b600083516118b581846020880161134b565b8351908301906118c981836020880161134b565b01949350505050565b6000835160206118e5828583890161134b565b818401915061016160f51b825260026000865461190181611558565b60018281168015611919576001811461193257611962565b60ff198416888701528215158302880186019450611962565b8a6000528660002060005b848110156119585781548a820189015290830190880161193d565b5050858389010194505b50929a9950505050505050505050565b81810381811115611747576117476116b6565b600082611994576119946116a0565b50069056fe646174613a696d6167652f7376672b786d6c3b757466382c3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667222076657273696f6e3d22312e32222076696577426f783d22302030203234203234223ea264697066735822122041656e7cf6447688f3203da3a6d9dfcc39dacd47d92e499dcdb7742f8113f09c64736f6c63430008120033

Deployed Bytecode Sourcemap

62:7984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1482:111;;;;;;:::i;:::-;;:::i;:::-;;1940:1995;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1601:95;;;:::i;1168:306::-;;;;;;:::i;:::-;;:::i;4150:1044::-;;;;;;:::i;:::-;;:::i;5508:628::-;;;;;;:::i;:::-;;:::i;882:99::-;;;;;;:::i;:::-;;:::i;989:171::-;;;;;;:::i;:::-;;:::i;1482:111::-;748:14;;-1:-1:-1;;;748:14:0;;;;747:15;739:44;;;;-1:-1:-1;;;739:44:0;;;;;;;:::i;:::-;;;;;;;;;1564:12:::1;::::0;::::1;;::::0;;;:5:::1;:12;::::0;;;;:21:::1;1579:6:::0;1564:12;:21:::1;:::i;:::-;;1482:111:::0;;:::o;1940:1995::-;1994:12;2049:5;2041;:13;;;2019:36;;;;;;2088:15;;;2098:4;2088:15;;;;;;;;;2066:19;;2088:15;;;;;;;;;;-1:-1:-1;2088:15:0;2066:37;;2119:6;2114:1790;2135:1;2131;:5;2114:1790;;;2158:11;2178:5;2158:11;2190;2198:3;2190:5;:11;:::i;:::-;2178:25;;;;;;;;;;;;;-1:-1:-1;2178:25:0;2224:1;2205:11;2213:3;2205:5;:11;:::i;:::-;2204:17;;2220:1;2204:17;:::i;:::-;:21;;;;;;:::i;:::-;2178:48;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2178:48:0;;;2172:55;;;-1:-1:-1;2246:9:0;;2242:1651;;2294:13;;;2276:15;2294:13;;;:6;:13;;;;;2335:8;;2294:13;;2276:15;2346:1;;2294:13;;2335:8;;;:::i;:::-;:12;;;-1:-1:-1;2335:12:0;:::i;:::-;2326:21;;2371:6;2366:1512;2387:1;2383;:5;2366:1512;;;2418:16;:278;;;;;;;;2496:1;2475;2477;2481;2477:5;;;;:::i;:::-;2475:8;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2475:8:0;2469:15;;2487:4;2469:22;2464:33;;2418:278;;;;2535:1;2537:5;:1;2541;2537:5;:::i;:::-;2535:8;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2535:8:0;2529:15;;2547:3;2529:21;2418:278;;;;2614:1;2589;2591:5;:1;2595;2591:5;:::i;:::-;:9;;2599:1;2591:9;:::i;:::-;2589:12;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2589:12:0;2583:19;;2605:4;2583:26;2578:37;;2418:278;;;;2653:1;2655:5;:1;2659;2655:5;:::i;:::-;:9;;2663:1;2655:9;:::i;:::-;2653:12;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2653:12:0;2647:19;;2669:3;2647:25;2418:278;;;-1:-1:-1;2724:7:0;2719:1140;2742:1;2737:2;:6;2719:1140;;;2783:7;2778:1058;2801:1;2796:2;:6;2778:1058;;;2879:4;;2841:6;;2886:2;;2875:8;;:1;:8;:::i;:::-;:13;;;;:::i;:::-;2856:4;;;;2863:2;;2852:8;;:1;:8;:::i;:::-;:13;;;;:::i;:::-;2851:20;;2869:2;2851:20;:::i;:::-;:38;;;;:::i;:::-;2850:44;;2893:1;2850:44;:::i;:::-;2841:53;-1:-1:-1;2952:2:0;2943:6;:2;2948:1;2943:6;:::i;:::-;:11;;;;:::i;:::-;2929:4;;;;2937:1;:18;;;2929:27;:32;2925:884;;2998:8;3009:281;3019:1;3021:5;:1;3025;3021:5;:::i;:::-;:9;;3029:1;3021:9;:::i;:::-;3019:12;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3019:12:0;3074:6;3081:1;3074:9;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;3074:9:0;3126:6;3133:5;:1;3137;3133:5;:::i;:::-;3126:13;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;3126:13:0;3182:6;3189:5;:1;3193;3189:5;:::i;:::-;3182:13;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;3182:13:0;3238:6;3245:5;:1;3249;3245:5;:::i;:::-;3238:13;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;3238:13:0;3009:9;:281::i;:::-;2998:292;-1:-1:-1;2998:292:0;3339:1;3337:4;;;3325:6;3332:1;3325:9;;;;;;;;:::i;:::-;;;;:16;-1:-1:-1;;;;;3325:16:0;;;;;;;;-1:-1:-1;3390:1:0;3392;3390:4;;;3376:6;3383:3;:1;3385;3383:3;:::i;:::-;3376:11;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;3376:18:0;;;;;;;;-1:-1:-1;3443:1:0;3445;3443:4;;;3429:6;3436:3;:1;3438;3436:3;:::i;:::-;3429:11;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;3429:18:0;;;;;;;;-1:-1:-1;3496:1:0;3498;3496:4;;;3482:6;3489:3;:1;3491;3489:3;:::i;:::-;3482:11;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;3482:18:0;;;;;;;;;2963:569;2925:884;;;3565:2;3556:6;:2;3561:1;3556:6;:::i;:::-;:11;;;;:::i;:::-;3542:4;;;;3550:1;:18;;;3542:27;:32;3538:271;;3623:1;3611:13;;:6;3618:1;3611:9;;;;;;;;:::i;:::-;;;;:13;-1:-1:-1;;;;;3611:13:0;;;;;;;;-1:-1:-1;3673:1:0;3659:6;3666:3;:1;3668;3666:3;:::i;:::-;3659:11;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;3659:15:0;;;;;;;;-1:-1:-1;3723:1:0;3709:6;3716:3;:1;3718;3716:3;:::i;:::-;3709:11;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;3709:15:0;;;;;;;;-1:-1:-1;;;;;;;3759:6:0;3766:3;:1;3768;3766:3;:::i;:::-;3759:11;;;;;;;;:::i;:::-;;;;:18;-1:-1:-1;;;;;3759:18:0;;;;;;;;;3538:271;-1:-1:-1;2804:4:0;;;;:::i;:::-;;;;2778:1058;;;-1:-1:-1;2745:4:0;;;;:::i;:::-;;;;2719:1140;;;;2395:1483;2390:3;;;;;:::i;:::-;;;;2366:1512;;;;2257:1636;;2242:1651;-1:-1:-1;2138:3:0;;;;:::i;:::-;;;;2114:1790;;;-1:-1:-1;3921:6:0;1940:1995;-1:-1:-1;;1940:1995:0:o;1601:95::-;653:8;;-1:-1:-1;;;;;653:8:0;639:10;:22;631:49;;;;-1:-1:-1;;;631:49:0;;9647:2:1;631:49:0;;;9629:21:1;9686:2;9666:18;;;9659:30;-1:-1:-1;;;9705:18:1;;;9698:44;9759:18;;631:49:0;9445:338:1;631:49:0;748:14:::1;::::0;-1:-1:-1;;;748:14:0;::::1;;;747:15;739:44;;;;-1:-1:-1::0;;;739:44:0::1;;;;;;;:::i;:::-;1667:14:::2;:21:::0;;-1:-1:-1;;;;1667:21:0::2;-1:-1:-1::0;;;1667:21:0::2;::::0;;1601:95::o;1168:306::-;748:14;;-1:-1:-1;;;748:14:0;;;;747:15;739:44;;;;-1:-1:-1;;;739:44:0;;;;;;;:::i;:::-;1333:16:::1;::::0;;::::1;;::::0;;;:10:::1;:16;::::0;;;;;:25;;-1:-1:-1;;1333:25:0;;::::1;;::::0;;::::1;;::::0;;;1369:16;;::::1;::::0;;;;;:25;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1405:16;;::::1;::::0;;;;;:25;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1441:16;;::::1;::::0;;;:25;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;1168:306::o;4150:1044::-;4209:17;4239:19;4261:16;4271:5;4261:9;:16::i;:::-;4239:38;;4318:10;;;;;;;;;;;;;;;;;4301:28;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;4301:28:0;;;4373:1;4363:12;;;;;;;;;4301:28;-1:-1:-1;4341:19:0;;4301:28;4363:12;;;;;;;;;;-1:-1:-1;4363:12:0;4341:34;;4391:6;4386:743;4407:2;4403:1;:6;4386:743;;;4436:6;4431:687;4452:2;4448:1;:6;4431:687;;;4480:6;4499:1;4490:6;:1;4494:2;4490:6;:::i;:::-;:10;;;;:::i;:::-;4489:16;;4504:1;4489:16;:::i;:::-;4480:25;-1:-1:-1;4551:1:0;4534:6;4541:5;4480:25;4545:1;4541:5;:::i;:::-;4534:13;;;;;;;;:::i;:::-;;;;;;;4528:24;4524:579;;;4582:6;4577:292;4598:1;4594;:5;4577:292;;;4633:11;4653:6;4660:5;4664:1;4660;:5;:::i;:::-;4653:13;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;4735:3:0;4727:11;;4714:25;;;;;;;:::i;:::-;;;;4694:6;4701:5;:1;4705;4701:5;:::i;:::-;:9;;4709:1;4701:9;:::i;:::-;4694:17;;;;;;;;:::i;:::-;;;;:45;-1:-1:-1;;;;;4694:45:0;;;;;;;;-1:-1:-1;4776:1:0;4766:11;;;-1:-1:-1;;;4766:11:0;4820:25;;;;;;;:::i;:::-;;;;4804:6;4811:5;:1;4815;4811:5;:::i;:::-;4804:13;;;;;;;;:::i;:::-;;;;:41;-1:-1:-1;;;;;4804:41:0;;;;;;;;;4606:263;4601:3;;;;;:::i;:::-;;;;4577:292;;;;4921:3;4964:11;4973:1;4964:8;:11::i;:::-;4986;4995:1;4986:8;:11::i;:::-;5068:6;4904:178;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4891:192;;4524:579;-1:-1:-1;4456:3:0;;;;:::i;:::-;;;;4431:687;;;-1:-1:-1;4411:3:0;;;;:::i;:::-;;;;4386:743;;;;5169:3;5174:10;;;;;;;;;;;;;-1:-1:-1;;;5174:10:0;;;5152:33;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5139:47;;4228:966;;4150:1044;;;:::o;5508:628::-;5569:18;5630:5;5622;:13;;;5600:36;;;;;;5647:10;5666:11;5674:3;5666:5;:11;:::i;:::-;5647:31;-1:-1:-1;5689:11:0;5704;5712:3;5704:5;:11;:::i;:::-;5703:17;;5719:1;5703:17;:::i;:::-;5689:31;;;;5736:6;5731:398;5752:1;5748;:5;5731:398;;;5795:11;;;5775;5795;;;:5;:11;;;;;5807:10;5816:1;5807:6;:10;:::i;:::-;5795:23;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5795:23:0;;;5789:30;;;-1:-1:-1;5838:9:0;;5834:284;;5872:5;;5868:189;;5945:17;;;;;;;:10;:17;;;;;;;;;5916:47;;;;5933:4;;5945:17;;5916:47;;:::i;:::-;;;;;;;;;;;;;5902:62;;5834:284;;5868:189;6020:17;;;;;;;:10;:17;;;;;6013:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5834:284;;;6097:5;;;5834:284;-1:-1:-1;5755:3:0;;;;:::i;:::-;;;;5731:398;;;;5589:547;;5508:628;;;:::o;882:99::-;748:14;;-1:-1:-1;;;748:14:0;;;;747:15;739:44;;;;-1:-1:-1;;;739:44:0;;;;;;;:::i;:::-;955:7:::1;:18;965:8:::0;955:7;:18:::1;:::i;:::-;;882:99:::0;:::o;989:171::-;748:14;;-1:-1:-1;;;748:14:0;;;;747:15;739:44;;;;-1:-1:-1;;;739:44:0;;;;;;;:::i;:::-;1093:13:::1;::::0;::::1;;::::0;;;:6:::1;:13;::::0;;;;:24:::1;1109:8:::0;1093:13;:24:::1;:::i;:::-;-1:-1:-1::0;1128:17:0::1;::::0;::::1;;::::0;;;:10:::1;:17;::::0;;;;:24:::1;1148:4:::0;1128:17;:24:::1;:::i;:::-;;989:171:::0;;;:::o;6144:974::-;6244:11;;6277:22;6282:12;;;;6298:1;6277:22;:::i;:::-;6268:31;-1:-1:-1;6310:12:0;;6339:5;6268:31;6343:1;6339:5;:::i;:::-;6331:14;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6331:14:0;;;6325:21;;;-1:-1:-1;6361:14:0;;;;6357:754;;6435:174;;;6577:1;6559:7;6567:3;:1;6569;6567:3;:::i;:::-;6559:12;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6559:12:0;;;6553:19;;6548:30;;6520:2;6502:7;6510:3;:1;6512;6510:3;:::i;:::-;6502:12;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6502:12:0;6496:19;;6491:25;;:31;;6463:2;6447:7;6455:1;6447:10;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6447:10:0;;;6441:17;;6436:29;;6435:88;:144;:174;6399:230;;;-1:-1:-1;6357:754:0;;;6662:10;7043:9;;;;6992:22;;;;;;6947:23;;;;;;6902;;;;;;6860:20;6878:2;6860:20;;;;6836:2;6662:10;6824:5;:1;6828;6824:5;:::i;:::-;6816:14;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6816:14:0;;;6810:21;;6803:35;;6779:2;6759:7;6767:5;:1;6771;6767:5;:::i;:::-;6759:14;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6759:14:0;6753:21;;6746:29;;:35;;;;6722:2;6706:7;6714:1;6706:10;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6706:10:0;;;6700:17;;6693:31;;6692:90;:147;:189;:234;:279;:323;:362;6693:31;7083:15;;;;;:10;:15;;;;;;-1:-1:-1;;;;;;7076:23:0;;;;;;;-1:-1:-1;;6357:754:0;6257:861;;6144:974;;;;;;;:::o;7318:723::-;7374:13;7595:5;7604:1;7595:10;7591:53;;-1:-1:-1;;7622:10:0;;;;;;;;;;;;-1:-1:-1;;;7622:10:0;;;;;7318:723::o;7591:53::-;7669:5;7654:12;7710:78;7717:9;;7710:78;;7743:8;;;;:::i;:::-;;-1:-1:-1;7766:10:0;;-1:-1:-1;7774:2:0;7766:10;;:::i;:::-;;;7710:78;;;7798:19;7830:6;7820:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7820:17:0;;7798:39;;7848:154;7855:10;;7848:154;;7882:11;7892:1;7882:11;;:::i;:::-;;-1:-1:-1;7951:10:0;7959:2;7951:5;:10;:::i;:::-;7938:24;;:2;:24;:::i;:::-;7925:39;;7908:6;7915;7908:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;7908:56:0;;;;;;;;-1:-1:-1;7979:11:0;7988:2;7979:11;;:::i;:::-;;;7848:154;;;8026:6;7318:723;-1:-1:-1;;;;7318:723:0:o;14:156:1:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:127::-;236:10;231:3;227:20;224:1;217:31;267:4;264:1;257:15;291:4;288:1;281:15;307:631;371:5;401:18;442:2;434:6;431:14;428:40;;;448:18;;:::i;:::-;523:2;517:9;491:2;577:15;;-1:-1:-1;;573:24:1;;;599:2;569:33;565:42;553:55;;;623:18;;;643:22;;;620:46;617:72;;;669:18;;:::i;:::-;709:10;705:2;698:22;738:6;729:15;;768:6;760;753:22;808:3;799:6;794:3;790:16;787:25;784:45;;;825:1;822;815:12;784:45;875:6;870:3;863:4;855:6;851:17;838:44;930:1;923:4;914:6;906;902:19;898:30;891:41;;;;307:631;;;;;:::o;943:220::-;985:5;1038:3;1031:4;1023:6;1019:17;1015:27;1005:55;;1056:1;1053;1046:12;1005:55;1078:79;1153:3;1144:6;1131:20;1124:4;1116:6;1112:17;1078:79;:::i;:::-;1069:88;943:220;-1:-1:-1;;;943:220:1:o;1168:390::-;1243:6;1251;1304:2;1292:9;1283:7;1279:23;1275:32;1272:52;;;1320:1;1317;1310:12;1272:52;1343:27;1360:9;1343:27;:::i;:::-;1333:37;;1421:2;1410:9;1406:18;1393:32;1448:18;1440:6;1437:30;1434:50;;;1480:1;1477;1470:12;1434:50;1503:49;1544:7;1535:6;1524:9;1520:22;1503:49;:::i;:::-;1493:59;;;1168:390;;;;;:::o;1563:272::-;1621:6;1674:2;1662:9;1653:7;1649:23;1645:32;1642:52;;;1690:1;1687;1680:12;1642:52;1729:9;1716:23;1779:6;1772:5;1768:18;1761:5;1758:29;1748:57;;1801:1;1798;1791:12;1840:250;1925:1;1935:113;1949:6;1946:1;1943:13;1935:113;;;2025:11;;;2019:18;2006:11;;;1999:39;1971:2;1964:10;1935:113;;;-1:-1:-1;;2082:1:1;2064:16;;2057:27;1840:250::o;2095:270::-;2136:3;2174:5;2168:12;2201:6;2196:3;2189:19;2217:76;2286:6;2279:4;2274:3;2270:14;2263:4;2256:5;2252:16;2217:76;:::i;:::-;2347:2;2326:15;-1:-1:-1;;2322:29:1;2313:39;;;;2354:4;2309:50;;2095:270;-1:-1:-1;;2095:270:1:o;2370:217::-;2517:2;2506:9;2499:21;2480:4;2537:44;2577:2;2566:9;2562:18;2554:6;2537:44;:::i;2592:171::-;2659:20;;2719:18;2708:30;;2698:41;;2688:69;;2753:1;2750;2743:12;2768:163;2835:20;;2895:10;2884:22;;2874:33;;2864:61;;2921:1;2918;2911:12;2936:693;3050:6;3058;3066;3074;3082;3090;3098;3106;3159:3;3147:9;3138:7;3134:23;3130:33;3127:53;;;3176:1;3173;3166:12;3127:53;3199:28;3217:9;3199:28;:::i;:::-;3189:38;;3246:37;3279:2;3268:9;3264:18;3246:37;:::i;:::-;3236:47;;3302:37;3335:2;3324:9;3320:18;3302:37;:::i;:::-;3292:47;;3358:37;3391:2;3380:9;3376:18;3358:37;:::i;:::-;3348:47;;3414:38;3447:3;3436:9;3432:19;3414:38;:::i;:::-;3404:48;;3471:38;3504:3;3493:9;3489:19;3471:38;:::i;:::-;3461:48;;3528:38;3561:3;3550:9;3546:19;3528:38;:::i;:::-;3518:48;;3585:38;3618:3;3607:9;3603:19;3585:38;:::i;:::-;3575:48;;2936:693;;;;;;;;;;;:::o;3858:320::-;3926:6;3979:2;3967:9;3958:7;3954:23;3950:32;3947:52;;;3995:1;3992;3985:12;3947:52;4035:9;4022:23;4068:18;4060:6;4057:30;4054:50;;;4100:1;4097;4090:12;4054:50;4123:49;4164:7;4155:6;4144:9;4140:22;4123:49;:::i;4183:739::-;4277:6;4285;4293;4346:2;4334:9;4325:7;4321:23;4317:32;4314:52;;;4362:1;4359;4352:12;4314:52;4385:27;4402:9;4385:27;:::i;:::-;4375:37;;4463:2;4452:9;4448:18;4435:32;4486:18;4527:2;4519:6;4516:14;4513:34;;;4543:1;4540;4533:12;4513:34;4566:49;4607:7;4598:6;4587:9;4583:22;4566:49;:::i;:::-;4556:59;;4668:2;4657:9;4653:18;4640:32;4624:48;;4697:2;4687:8;4684:16;4681:36;;;4713:1;4710;4703:12;4681:36;-1:-1:-1;4736:24:1;;4791:4;4783:13;;4779:27;-1:-1:-1;4769:55:1;;4820:1;4817;4810:12;4769:55;4843:73;4908:7;4903:2;4890:16;4885:2;4881;4877:11;4843:73;:::i;:::-;4833:83;;;4183:739;;;;;:::o;4927:340::-;5129:2;5111:21;;;5168:2;5148:18;;;5141:30;-1:-1:-1;;;5202:2:1;5187:18;;5180:46;5258:2;5243:18;;4927:340::o;5272:380::-;5351:1;5347:12;;;;5394;;;5415:61;;5469:4;5461:6;5457:17;5447:27;;5415:61;5522:2;5514:6;5511:14;5491:18;5488:38;5485:161;;5568:10;5563:3;5559:20;5556:1;5549:31;5603:4;5600:1;5593:15;5631:4;5628:1;5621:15;5485:161;;5272:380;;;:::o;5782:544::-;5883:2;5878:3;5875:11;5872:448;;;5919:1;5944:5;5940:2;5933:17;5989:4;5985:2;5975:19;6059:2;6047:10;6043:19;6040:1;6036:27;6030:4;6026:38;6095:4;6083:10;6080:20;6077:47;;;-1:-1:-1;6118:4:1;6077:47;6173:2;6168:3;6164:12;6161:1;6157:20;6151:4;6147:31;6137:41;;6228:82;6246:2;6239:5;6236:13;6228:82;;;6291:17;;;6272:1;6261:13;6228:82;;;6232:3;;;5782:544;;;:::o;6502:1348::-;6626:3;6620:10;6653:18;6645:6;6642:30;6639:56;;;6675:18;;:::i;:::-;6704:96;6793:6;6753:38;6785:4;6779:11;6753:38;:::i;:::-;6747:4;6704:96;:::i;:::-;6855:4;;6919:2;6908:14;;6936:1;6931:662;;;;7637:1;7654:6;7651:89;;;-1:-1:-1;7706:19:1;;;7700:26;7651:89;-1:-1:-1;;6459:1:1;6455:11;;;6451:24;6447:29;6437:40;6483:1;6479:11;;;6434:57;7753:81;;6901:943;;6931:662;5729:1;5722:14;;;5766:4;5753:18;;-1:-1:-1;;6967:20:1;;;7084:236;7098:7;7095:1;7092:14;7084:236;;;7187:19;;;7181:26;7166:42;;7279:27;;;;7247:1;7235:14;;;;7114:19;;7084:236;;;7088:3;7348:6;7339:7;7336:19;7333:201;;;7409:19;;;7403:26;-1:-1:-1;;7492:1:1;7488:14;;;7504:3;7484:24;7480:37;7476:42;7461:58;7446:74;;7333:201;-1:-1:-1;;;;;7580:1:1;7564:14;;;7560:22;7547:36;;-1:-1:-1;6502:1348:1:o;7855:127::-;7916:10;7911:3;7907:20;7904:1;7897:31;7947:4;7944:1;7937:15;7971:4;7968:1;7961:15;7987:127;8048:10;8043:3;8039:20;8036:1;8029:31;8079:4;8076:1;8069:15;8103:4;8100:1;8093:15;8119:187;8158:1;8184:6;8217:2;8214:1;8210:10;8239:3;8229:37;;8246:18;;:::i;:::-;8284:10;;8280:20;;;;;8119:187;-1:-1:-1;;8119:187:1:o;8311:179::-;8342:1;8368:6;8401:2;8398:1;8394:10;8423:3;8413:37;;8430:18;;:::i;:::-;8468:10;;8464:20;;;;;8311:179;-1:-1:-1;;8311:179:1:o;8495:245::-;8566:6;8604:10;;;8616;;;8600:27;8647:20;;;;8566:6;8686:24;;;8676:58;;8714:18;;:::i;:::-;8676:58;;8495:245;;;;:::o;8745:125::-;8810:9;;;8831:10;;;8828:36;;;8844:18;;:::i;:::-;8745:125;;;;:::o;8875:127::-;8936:10;8931:3;8927:20;8924:1;8917:31;8967:4;8964:1;8957:15;8991:4;8988:1;8981:15;9007:120;9047:1;9073;9063:35;;9078:18;;:::i;:::-;-1:-1:-1;9112:9:1;;9007:120::o;9132:168::-;9205:9;;;9236;;9253:15;;;9247:22;;9233:37;9223:71;;9274:18;;:::i;9305:135::-;9344:3;9365:17;;;9362:43;;9385:18;;:::i;:::-;-1:-1:-1;9432:1:1;9421:13;;9305:135::o;9788:289::-;9919:3;9957:6;9951:13;9973:66;10032:6;10027:3;10020:4;10012:6;10008:17;9973:66;:::i;:::-;10055:16;;;;;9788:289;-1:-1:-1;;9788:289:1:o;10082:1696::-;10761:3;10799:6;10793:13;10815:66;10874:6;10869:3;10862:4;10854:6;10850:17;10815:66;:::i;:::-;-1:-1:-1;;;10903:16:1;;;10928:45;;;10998:13;;11020:78;10998:13;11085:1;11074:13;;11067:4;11055:17;;11020:78;:::i;:::-;-1:-1:-1;;;11161:1:1;11117:20;;;;11153:10;;;11146:42;11213:13;;11235:76;11213:13;11297:2;11289:11;;11282:4;11270:17;;11235:76;:::i;:::-;11376:66;11371:2;11330:17;;;;11363:11;;;11356:87;11472:66;11467:2;11459:11;;11452:87;11564:13;;11586:76;11564:13;11648:2;11640:11;;11633:4;11621:17;;11586:76;:::i;:::-;-1:-1:-1;;;11722:2:1;11681:17;;;;11714:11;;;11707:38;11769:2;11761:11;;10082:1696;-1:-1:-1;;;;;;10082:1696:1:o;11783:496::-;11962:3;12000:6;11994:13;12016:66;12075:6;12070:3;12063:4;12055:6;12051:17;12016:66;:::i;:::-;12145:13;;12104:16;;;;12167:70;12145:13;12104:16;12214:4;12202:17;;12167:70;:::i;:::-;12253:20;;11783:496;-1:-1:-1;;;;11783:496:1:o;12284:1236::-;12561:3;12599:6;12593:13;12625:4;12638:64;12695:6;12690:3;12685:2;12677:6;12673:15;12638:64;:::i;:::-;12733:6;12728:3;12724:16;12711:29;;-1:-1:-1;;;12756:5:1;12749:19;12787:1;12808;12841:6;12835:13;12873:36;12899:9;12873:36;:::i;:::-;12928:1;12945:18;;;12972:159;;;;13145:1;13140:355;;;;12938:557;;12972:159;-1:-1:-1;;13016:24:1;;13000:14;;;12993:48;13097:16;;13090:24;13076:39;;13065:51;;13061:60;;;-1:-1:-1;12972:159:1;;13140:355;13171:6;13168:1;13161:17;13219:2;13216:1;13206:16;13244:1;13258:178;13272:8;13269:1;13266:15;13258:178;;;13363:14;;13343:13;;;13339:22;;13332:46;13406:16;;;;13289:10;;13258:178;;;13262:3;;13482:2;13471:8;13464:5;13460:20;13456:29;13449:36;;12938:557;-1:-1:-1;13511:3:1;;12284:1236;-1:-1:-1;;;;;;;;;;12284:1236:1:o;14880:128::-;14947:9;;;14968:11;;;14965:37;;;14982:18;;:::i;15013:112::-;15045:1;15071;15061:35;;15076:18;;:::i;:::-;-1:-1:-1;15110:9:1;;15013:112::o

Swarm Source

ipfs://41656e7cf6447688f3203da3a6d9dfcc39dacd47d92e499dcdb7742f8113f09c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.