{"sources":{"LinkToken.sol":{"content":"pragma solidity ^0.4.16;\r\n\r\n\r\n/**\r\n * @title SafeMath\r\n * @dev Math operations with safety checks that throw on error\r\n */\r\nlibrary SafeMath {\r\n  function mul(uint256 a, uint256 b) internal constant returns (uint256) {\r\n    uint256 c = a * b;\r\n    assert(a == 0 || c / a == b);\r\n    return c;\r\n  }\r\n\r\n  function div(uint256 a, uint256 b) internal constant returns (uint256) {\r\n    // assert(b > 0); // Solidity automatically throws when dividing by 0\r\n    uint256 c = a / b;\r\n    // assert(a == b * c + a % b); // There is no case in which this doesn't hold\r\n    return c;\r\n  }\r\n\r\n  function sub(uint256 a, uint256 b) internal constant returns (uint256) {\r\n    assert(b <= a);\r\n    return a - b;\r\n  }\r\n\r\n  function add(uint256 a, uint256 b) internal constant returns (uint256) {\r\n    uint256 c = a + b;\r\n    assert(c >= a);\r\n    return c;\r\n  }\r\n}\r\n\r\n\r\n/**\r\n * @title ERC20Basic\r\n * @dev Simpler version of ERC20 interface\r\n * @dev see https://github.com/ethereum/EIPs/issues/179\r\n */\r\ncontract ERC20Basic {\r\n  uint256 public totalSupply;\r\n  function balanceOf(address who) constant returns (uint256);\r\n  function transfer(address to, uint256 value) returns (bool);\r\n  event Transfer(address indexed from, address indexed to, uint256 value);\r\n}\r\n/**\r\n * @title ERC20 interface\r\n * @dev see https://github.com/ethereum/EIPs/issues/20\r\n */\r\ncontract ERC20 is ERC20Basic {\r\n  function allowance(address owner, address spender) constant returns (uint256);\r\n  function transferFrom(address from, address to, uint256 value) returns (bool);\r\n  function approve(address spender, uint256 value) returns (bool);\r\n  event Approval(address indexed owner, address indexed spender, uint256 value);\r\n}\r\n\r\ncontract ERC677 is ERC20 {\r\n  function transferAndCall(address to, uint value, bytes data) returns (bool success);\r\n\r\n  event Transfer(address indexed from, address indexed to, uint value, bytes data);\r\n}\r\n\r\ncontract ERC677Receiver {\r\n  function onTokenTransfer(address _sender, uint _value, bytes _data);\r\n}\r\n\r\n/**\r\n * @title Basic token\r\n * @dev Basic version of StandardToken, with no allowances. \r\n */\r\ncontract BasicToken is ERC20Basic {\r\n  using SafeMath for uint256;\r\n\r\n  mapping(address => uint256) balances;\r\n\r\n  /**\r\n  * @dev transfer token for a specified address\r\n  * @param _to The address to transfer to.\r\n  * @param _value The amount to be transferred.\r\n  */\r\n  function transfer(address _to, uint256 _value) returns (bool) {\r\n    balances[msg.sender] = balances[msg.sender].sub(_value);\r\n    balances[_to] = balances[_to].add(_value);\r\n    Transfer(msg.sender, _to, _value);\r\n    return true;\r\n  }\r\n\r\n  /**\r\n  * @dev Gets the balance of the specified address.\r\n  * @param _owner The address to query the the balance of. \r\n  * @return An uint256 representing the amount owned by the passed address.\r\n  */\r\n  function balanceOf(address _owner) constant returns (uint256 balance) {\r\n    return balances[_owner];\r\n  }\r\n\r\n}\r\n\r\n\r\n/**\r\n * @title Standard ERC20 token\r\n *\r\n * @dev Implementation of the basic standard token.\r\n * @dev https://github.com/ethereum/EIPs/issues/20\r\n * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\r\n */\r\ncontract StandardToken is ERC20, BasicToken {\r\n\r\n  mapping (address => mapping (address => uint256)) allowed;\r\n\r\n\r\n  /**\r\n   * @dev Transfer tokens from one address to another\r\n   * @param _from address The address which you want to send tokens from\r\n   * @param _to address The address which you want to transfer to\r\n   * @param _value uint256 the amount of tokens to be transferred\r\n   */\r\n  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {\r\n    var _allowance = allowed[_from][msg.sender];\r\n\r\n    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met\r\n    // require (_value <= _allowance);\r\n\r\n    balances[_from] = balances[_from].sub(_value);\r\n    balances[_to] = balances[_to].add(_value);\r\n    allowed[_from][msg.sender] = _allowance.sub(_value);\r\n    Transfer(_from, _to, _value);\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\r\n   * @param _spender The address which will spend the funds.\r\n   * @param _value The amount of tokens to be spent.\r\n   */\r\n  function approve(address _spender, uint256 _value) returns (bool) {\r\n    allowed[msg.sender][_spender] = _value;\r\n    Approval(msg.sender, _spender, _value);\r\n    return true;\r\n  }\r\n\r\n  /**\r\n   * @dev Function to check the amount of tokens that an owner allowed to a spender.\r\n   * @param _owner address The address which owns the funds.\r\n   * @param _spender address The address which will spend the funds.\r\n   * @return A uint256 specifying the amount of tokens still available for the spender.\r\n   */\r\n  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {\r\n    return allowed[_owner][_spender];\r\n  }\r\n  \r\n    /*\r\n   * approve should be called when allowed[_spender] == 0. To increment\r\n   * allowed value is better to use this function to avoid 2 calls (and wait until \r\n   * the first transaction is mined)\r\n   * From MonolithDAO Token.sol\r\n   */\r\n  function increaseApproval (address _spender, uint _addedValue) \r\n    returns (bool success) {\r\n    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);\r\n    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);\r\n    return true;\r\n  }\r\n\r\n  function decreaseApproval (address _spender, uint _subtractedValue) \r\n    returns (bool success) {\r\n    uint oldValue = allowed[msg.sender][_spender];\r\n    if (_subtractedValue > oldValue) {\r\n      allowed[msg.sender][_spender] = 0;\r\n    } else {\r\n      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);\r\n    }\r\n    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);\r\n    return true;\r\n  }\r\n\r\n}\r\n\r\ncontract ERC677Token is ERC677 {\r\n\r\n  /**\r\n  * @dev transfer token to a contract address with additional data if the recipient is a contact.\r\n  * @param _to The address to transfer to.\r\n  * @param _value The amount to be transferred.\r\n  * @param _data The extra data to be passed to the receiving contract.\r\n  */\r\n  function transferAndCall(address _to, uint _value, bytes _data)\r\n    public\r\n    returns (bool success)\r\n  {\r\n    super.transfer(_to, _value);\r\n    Transfer(msg.sender, _to, _value, _data);\r\n    if (isContract(_to)) {\r\n      contractFallback(_to, _value, _data);\r\n    }\r\n    return true;\r\n  }\r\n\r\n\r\n  // PRIVATE\r\n\r\n  function contractFallback(address _to, uint _value, bytes _data)\r\n    private\r\n  {\r\n    ERC677Receiver receiver = ERC677Receiver(_to);\r\n    receiver.onTokenTransfer(msg.sender, _value, _data);\r\n  }\r\n\r\n  function isContract(address _addr)\r\n    private\r\n    returns (bool hasCode)\r\n  {\r\n    uint length;\r\n    assembly { length := extcodesize(_addr) }\r\n    return length > 0;\r\n  }\r\n\r\n}\r\n\r\ncontract LinkToken is StandardToken, ERC677Token {\r\n\r\n  uint public constant totalSupply = 10**27;\r\n  string public constant name = 'ChainLink Token';\r\n  uint8 public constant decimals = 18;\r\n  string public constant symbol = 'LINK';\r\n\r\n  function LinkToken()\r\n    public\r\n  {\r\n    balances[msg.sender] = totalSupply;\r\n  }\r\n\r\n  /**\r\n  * @dev transfer token to a specified address with additional data if the recipient is a contract.\r\n  * @param _to The address to transfer to.\r\n  * @param _value The amount to be transferred.\r\n  * @param _data The extra data to be passed to the receiving contract.\r\n  */\r\n  function transferAndCall(address _to, uint _value, bytes _data)\r\n    public\r\n    validRecipient(_to)\r\n    returns (bool success)\r\n  {\r\n    return super.transferAndCall(_to, _value, _data);\r\n  }\r\n\r\n  /**\r\n  * @dev transfer token to a specified address.\r\n  * @param _to The address to transfer to.\r\n  * @param _value The amount to be transferred.\r\n  */\r\n  function transfer(address _to, uint _value)\r\n    public\r\n    validRecipient(_to)\r\n    returns (bool success)\r\n  {\r\n    return super.transfer(_to, _value);\r\n  }\r\n\r\n  /**\r\n   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\r\n   * @param _spender The address which will spend the funds.\r\n   * @param _value The amount of tokens to be spent.\r\n   */\r\n  function approve(address _spender, uint256 _value)\r\n    public\r\n    validRecipient(_spender)\r\n    returns (bool)\r\n  {\r\n    return super.approve(_spender,  _value);\r\n  }\r\n\r\n  /**\r\n   * @dev Transfer tokens from one address to another\r\n   * @param _from address The address which you want to send tokens from\r\n   * @param _to address The address which you want to transfer to\r\n   * @param _value uint256 the amount of tokens to be transferred\r\n   */\r\n  function transferFrom(address _from, address _to, uint256 _value)\r\n    public\r\n    validRecipient(_to)\r\n    returns (bool)\r\n  {\r\n    return super.transferFrom(_from, _to, _value);\r\n  }\r\n\r\n\r\n  // MODIFIERS\r\n\r\n  modifier validRecipient(address _recipient) {\r\n    require(_recipient != address(0) && _recipient != address(this));\r\n    _;\r\n  }\r\n\r\n}"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.4.16+commit.d7661dd9","compilerSettings":{"libraries":{},"optimizer":{"runs":200,"enabled":true},"remappings":[]},"name":"LinkToken","fullyQualifiedName":"LinkToken.sol:LinkToken"},"runtimeBytecode":{"onchainBytecode":"0x606060405236156100b75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100bc578063095ea7b31461014757806318160ddd1461017d57806323b872dd146101a2578063313ce567146101de5780634000aea014610207578063661884631461028057806370a08231146102b657806395d89b41146102e7578063a9059cbb14610372578063d73dd623146103a8578063dd62ed3e146103de575b600080fd5b34156100c757600080fd5b6100cf610415565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610169600160a060020a036004351660243561044c565b604051901515815260200160405180910390f35b341561018857600080fd5b610190610499565b60405190815260200160405180910390f35b34156101ad57600080fd5b610169600160a060020a03600435811690602435166044356104a9565b604051901515815260200160405180910390f35b34156101e957600080fd5b6101f16104f8565b60405160ff909116815260200160405180910390f35b341561021257600080fd5b61016960048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506104fd95505050505050565b604051901515815260200160405180910390f35b341561028b57600080fd5b610169600160a060020a036004351660243561054c565b604051901515815260200160405180910390f35b34156102c157600080fd5b610190600160a060020a0360043516610648565b60405190815260200160405180910390f35b34156102f257600080fd5b6100cf610667565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037d57600080fd5b610169600160a060020a036004351660243561069e565b604051901515815260200160405180910390f35b34156103b357600080fd5b610169600160a060020a03600435166024356106eb565b604051901515815260200160405180910390f35b34156103e957600080fd5b610190600160a060020a0360043581169060243516610790565b60405190815260200160405180910390f35b60408051908101604052600f81527f436861696e4c696e6b20546f6b656e0000000000000000000000000000000000602082015281565b600082600160a060020a03811615801590610479575030600160a060020a031681600160a060020a031614155b151561048457600080fd5b61048e84846107bd565b91505b5b5092915050565b6b033b2e3c9fd0803ce800000081565b600082600160a060020a038116158015906104d6575030600160a060020a031681600160a060020a031614155b15156104e157600080fd5b6104ec85858561082a565b91505b5b509392505050565b601281565b600083600160a060020a0381161580159061052a575030600160a060020a031681600160a060020a031614155b151561053557600080fd5b6104ec85858561093c565b91505b5b509392505050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156105a957600160a060020a0333811660009081526002602090815260408083209388168352929052908120556105e0565b6105b9818463ffffffff610a2316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60408051908101604052600481527f4c494e4b00000000000000000000000000000000000000000000000000000000602082015281565b600082600160a060020a038116158015906106cb575030600160a060020a031681600160a060020a031614155b15156106d657600080fd5b61048e8484610a3a565b91505b5b5092915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610723908363ffffffff610afa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03808416600081815260026020908152604080832033909516835293815283822054928252600190529182205461086e908463ffffffff610a2316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546108a3908463ffffffff610afa16565b600160a060020a0385166000908152600160205260409020556108cc818463ffffffff610a2316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60006109488484610a3a565b5083600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16858560405182815260406020820181815290820183818151815260200191508051906020019080838360005b838110156109c35780820151818401525b6020016109aa565b50505050905090810190601f1680156109f05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3610a0784610b14565b15610a1757610a17848484610b23565b5b5060015b9392505050565b600082821115610a2f57fe5b508082035b92915050565b600160a060020a033316600090815260016020526040812054610a63908363ffffffff610a2316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a98908363ffffffff610afa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600082820183811015610b0957fe5b8091505b5092915050565b6000813b908111905b50919050565b82600160a060020a03811663a4c0ed363385856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610bbd5780820151818401525b602001610ba4565b50505050905090810190601f168015610bea5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515610c0a57600080fd5b6102c65a03f11515610c1b57600080fd5b5050505b505050505600a165627a7a72305820c5f438ff94e5ddaf2058efa0019e246c636c37a622e04bb67827c7374acad8d60029","recompiledBytecode":"0x606060405236156100b75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100bc578063095ea7b31461014757806318160ddd1461017d57806323b872dd146101a2578063313ce567146101de5780634000aea014610207578063661884631461028057806370a08231146102b657806395d89b41146102e7578063a9059cbb14610372578063d73dd623146103a8578063dd62ed3e146103de575b600080fd5b34156100c757600080fd5b6100cf610415565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610169600160a060020a036004351660243561044c565b604051901515815260200160405180910390f35b341561018857600080fd5b610190610499565b60405190815260200160405180910390f35b34156101ad57600080fd5b610169600160a060020a03600435811690602435166044356104a9565b604051901515815260200160405180910390f35b34156101e957600080fd5b6101f16104f8565b60405160ff909116815260200160405180910390f35b341561021257600080fd5b61016960048035600160a060020a03169060248035919060649060443590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506104fd95505050505050565b604051901515815260200160405180910390f35b341561028b57600080fd5b610169600160a060020a036004351660243561054c565b604051901515815260200160405180910390f35b34156102c157600080fd5b610190600160a060020a0360043516610648565b60405190815260200160405180910390f35b34156102f257600080fd5b6100cf610667565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037d57600080fd5b610169600160a060020a036004351660243561069e565b604051901515815260200160405180910390f35b34156103b357600080fd5b610169600160a060020a03600435166024356106eb565b604051901515815260200160405180910390f35b34156103e957600080fd5b610190600160a060020a0360043581169060243516610790565b60405190815260200160405180910390f35b60408051908101604052600f81527f436861696e4c696e6b20546f6b656e0000000000000000000000000000000000602082015281565b600082600160a060020a03811615801590610479575030600160a060020a031681600160a060020a031614155b151561048457600080fd5b61048e84846107bd565b91505b5b5092915050565b6b033b2e3c9fd0803ce800000081565b600082600160a060020a038116158015906104d6575030600160a060020a031681600160a060020a031614155b15156104e157600080fd5b6104ec85858561082a565b91505b5b509392505050565b601281565b600083600160a060020a0381161580159061052a575030600160a060020a031681600160a060020a031614155b151561053557600080fd5b6104ec85858561093c565b91505b5b509392505050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156105a957600160a060020a0333811660009081526002602090815260408083209388168352929052908120556105e0565b6105b9818463ffffffff610a2316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60408051908101604052600481527f4c494e4b00000000000000000000000000000000000000000000000000000000602082015281565b600082600160a060020a038116158015906106cb575030600160a060020a031681600160a060020a031614155b15156106d657600080fd5b61048e8484610a3a565b91505b5b5092915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610723908363ffffffff610afa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03808416600081815260026020908152604080832033909516835293815283822054928252600190529182205461086e908463ffffffff610a2316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546108a3908463ffffffff610afa16565b600160a060020a0385166000908152600160205260409020556108cc818463ffffffff610a2316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60006109488484610a3a565b5083600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16858560405182815260406020820181815290820183818151815260200191508051906020019080838360005b838110156109c35780820151818401525b6020016109aa565b50505050905090810190601f1680156109f05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3610a0784610b14565b15610a1757610a17848484610b23565b5b5060015b9392505050565b600082821115610a2f57fe5b508082035b92915050565b600160a060020a033316600090815260016020526040812054610a63908363ffffffff610a2316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a98908363ffffffff610afa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600082820183811015610b0957fe5b8091505b5092915050565b6000813b908111905b50919050565b82600160a060020a03811663a4c0ed363385856040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610bbd5780820151818401525b602001610ba4565b50505050905090810190601f168015610bea5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1515610c0a57600080fd5b6102c65a03f11515610c1b57600080fd5b5050505b505050505600a165627a7a72305820c90f6f3da39592a2eff75d97ed96ccb29036e37d6d3fdd69a9df63289f6047c20029","sourceMap":"6947:2155:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7049:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8307:168:0;;;;;;;;;;-1:-1:-1;;;;;8307:168:0;;;;;;;;;;;;;;;;;;;;;;;;7003:41;;;;;;;;;;;;;;;;;;;;;;;;;;;8758:184;;;;;;;;;;-1:-1:-1;;;;;8758:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7101:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7555:193;;;;;;;;;;;;;-1:-1:-1;;;;;7555:193:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7555:193:0;;-1:-1:-1;7555:193:0;;-1:-1:-1;;;;;;7555:193:0;;;;;;;;;;;;;;;;;;5505:415;;;;;;;;;;-1:-1:-1;;;;;5505:415:0;;;;;;;;;;;;;;;;;;;;;;;;2812:106;;;;;;;;;;-1:-1:-1;;;;;2812:106:0;;;;;;;;;;;;;;;;;;;;7141:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7909:159:0;;;;;;;;;;-1:-1:-1;;;;;7909:159:0;;;;;;;;;;;;;;;;;;;;;;;;5230:269;;;;;;;;;;-1:-1:-1;;;;;5230:269:0;;;;;;;;;;;;;;;;;;;;;;;;4843:135;;;;;;;;;;-1:-1:-1;;;;;4843:135:0;;;;;;;;;;;;;;;;;;;;;;;;;7049:47;;;;;;;;;;;;;;;;;;:::o;8307:168::-;8414:4;8390:8;-1:-1:-1;;;;;9027:24:0;;;;;;:55;;;9077:4;-1:-1:-1;;;;;9055:27:0;:10;-1:-1:-1;;;;;9055:27:0;;;9027:55;9019:64;;;;;;;;8437:32;8451:8;8462:6;8437:13;:32::i;:::-;8430:39;;9090:1;8307:168;;;;;;:::o;7003:41::-;7038:6;7003:41;:::o;8758:184::-;8875:4;8856:3;-1:-1:-1;;;;;9027:24:0;;;;;;:55;;;9077:4;-1:-1:-1;;;;;9055:27:0;:10;-1:-1:-1;;;;;9055:27:0;;;9027:55;9019:64;;;;;;;;8898:38;8917:5;8924:3;8929:6;8898:18;:38::i;:::-;8891:45;;9090:1;8758:184;;;;;;;:::o;7101:35::-;7134:2;7101:35;:::o;7555:193::-;7670:12;7651:3;-1:-1:-1;;;;;9027:24:0;;;;;;:55;;;9077:4;-1:-1:-1;;;;;9055:27:0;:10;-1:-1:-1;;;;;9055:27:0;;;9027:55;9019:64;;;;;;;;7701:41;7723:3;7728:6;7736:5;7701:21;:41::i;:::-;7694:48;;9090:1;7555:193;;;;;;;:::o;5505:415::-;-1:-1:-1;;;;;5633:10:0;5625:19;;5588:12;5625:19;;;:7;:19;;;;;;;;:29;;;;;;;;;;;;5665:27;;;5661:168;;;-1:-1:-1;;;;;5711:10:0;5703:19;;5735:1;5703:19;;;:7;:19;;;;;;;;:29;;;;;;;;;;;:33;5661:168;;;5791:30;:8;5804:16;5791:30;:12;:30;:::i;:::-;-1:-1:-1;;;;;5767:10:0;5759:19;;;;;;:7;:19;;;;;;;;:29;;;;;;;;;:62;5661:168;-1:-1:-1;;;;;5844:10:0;5835:61;;5866:19;;;;:7;:19;;;;;;;;5835:61;;;5866:29;;;;;;;;;;;;5835:61;;;;;;;;;;;;;;;5910:4;5903:11;;5505:415;;;;;;:::o;2812:106::-;-1:-1:-1;;;;;2896:16:0;;2865:15;2896:16;;;:8;:16;;;;;;2812:106;;;;:::o;7141:38::-;;;;;;;;;;;;;;;;;;:::o;7909:159::-;8004:12;7985:3;-1:-1:-1;;;;;9027:24:0;;;;;;:55;;;9077:4;-1:-1:-1;;;;;9055:27:0;:10;-1:-1:-1;;;;;9055:27:0;;;9027:55;9019:64;;;;;;;;8035:27;8050:3;8055:6;8035:14;:27::i;:::-;8028:34;;9090:1;7909:159;;;;;;:::o;5230:269::-;-1:-1:-1;;;;;5369:10:0;5361:19;;5308:12;5361:19;;;:7;:19;;;;;;;;:29;;;;;;;;;;;;:46;;5395:11;5361:46;:33;:46;:::i;:::-;-1:-1:-1;;;;;5337:10:0;5329:19;;;;;;:7;:19;;;;;;;;:29;;;;;;;;;;;;;;:78;;;:29;;:19;;5414:61;;5329:78;5414:61;;;;;;;;;;;;;-1:-1:-1;5489:4:0;5230:269;;;;;:::o;4843:135::-;-1:-1:-1;;;;;4947:15:0;;;4914:17;4947:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;4843:135;;;;;:::o;4336:180::-;-1:-1:-1;;;;;4417:10:0;4409:19;;4396:4;4409:19;;;:7;:19;;;;;;;;:29;;;;;;;;;;;;;:38;;;4396:4;;4409:29;:19;4454:38;;4441:6;;4454:38;;;;;;;;;;;;;-1:-1:-1;4506:4:0;4336:180;;;;;:::o;3597:500::-;-1:-1:-1;;;;;3702:14:0;;;3672:4;3702:14;;;:7;:14;;;;;;;;3717:10;3702:26;;;;;;;;;;;;3905:15;;;:8;:15;;;;;;:27;;3925:6;3905:27;:19;:27;:::i;:::-;-1:-1:-1;;;;;3887:15:0;;;;;;;:8;:15;;;;;;:45;;;;3955:13;;;;;;;:25;;3973:6;3955:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;3939:13:0;;;;;;:8;:13;;;;;:41;4016:22;:10;4031:6;4016:22;:14;:22;:::i;:::-;-1:-1:-1;;;;;3987:14:0;;;;;;;:7;:14;;;;;;;;4002:10;3987:26;;;;;;;;;;;:51;;;;4045:28;;;;;;4066:6;;4045:28;;;;;;;;;;;;;4087:4;4080:11;;3597:500;;;;;;;:::o;6245:292::-;6335:12;6359:27;6374:3;6379:6;6359:14;:27::i;:::-;;6414:3;-1:-1:-1;;;;;6393:40:0;6402:10;-1:-1:-1;;;;;6393:40:0;;6419:6;6427:5;6393:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6444:15:0;6455:3;6444:10;:15::i;:::-;6440:74;;;6470:36;6487:3;6492:6;6500:5;6470:16;:36::i;:::-;6440:74;-1:-1:-1;6527:4:0;6245:292;;;;;;:::o;583:117::-;645:7;668:6;;;;661:14;;;;-1:-1:-1;689:5:0;;;583:117;;;;;:::o;2366:236::-;-1:-1:-1;;;;;2467:10:0;2458:20;2422:4;2458:20;;;:8;:20;;;;;;:32;;2483:6;2458:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;2444:10:0;2435:20;;;;;;:8;:20;;;;;;:55;;;;2513:13;;;;;;;:25;;2531:6;2513:25;:17;:25;:::i;:::-;-1:-1:-1;;;;;2497:13:0;;;;;;;:8;:13;;;;;;;:41;;;;:13;2554:10;2545:33;;;;;;2571:6;;2545:33;;;;;;;;;;;;;-1:-1:-1;2592:4:0;2366:236;;;;;:::o;706:137::-;768:7;796:5;;;815:6;;;;808:14;;;;836:1;829:8;;706:137;;;;;;:::o;6764:174::-;6826:12;6889:11;;6922:10;;;;6764:174;;;;;:::o;6561:197::-;6690:3;-1:-1:-1;;;;;6701:24:0;;;6726:10;6738:6;6746:5;6701:51;;;;;;;;;;;;;-1:-1:-1;;;;;6701:51:0;-1:-1:-1;;;;;6701:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6561:197:0;;;;;:::o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa165627a7a72305820c90f6f3da39592a2eff75d97ed96ccb29036e37d6d3fdd69a9df63289f6047c20029","offset":3110}},"immutableReferences":null,"transformations":[{"id":"1","type":"replace","offset":3110,"reason":"cborAuxdata"}],"transformationValues":{"cborAuxdata":{"1":"0xa165627a7a72305820c5f438ff94e5ddaf2058efa0019e246c636c37a622e04bb67827c7374acad8d60029"}}},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"deployment":{"transactionHash":"0x5488510df045770efbff57f25d0c6d2c1404d58c1199b21eb8dc5072b22d91d7","blockNumber":"4281611","transactionIndex":"34","deployer":"0xf55037738604FDDFC4043D12F25124E94D7D1780"},"matchId":"1025695","creationMatch":"match","runtimeMatch":"match","verifiedAt":"2024-08-08T12:22:34Z","match":"match","chainId":"1","address":"0x514910771AF9Ca656af840dff83E8264EcF986CA"}