{
  "contractName": "Avatar",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_externalToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ExternalTokenApproval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_externalToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ExternalTokenTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_externalToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "ExternalTokenTransferFrom",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_contract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_success",
          "type": "bool"
        }
      ],
      "name": "GenericCall",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "_metaData",
          "type": "string"
        }
      ],
      "name": "MetaData",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "db",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_externalToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "externalTokenApproval",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_externalToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "externalTokenTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_externalToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "externalTokenTransferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_contract",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "genericCall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "returnValue",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_orgName",
          "type": "string"
        },
        {
          "internalType": "contract DAOToken",
          "name": "_nativeToken",
          "type": "address"
        },
        {
          "internalType": "contract Reputation",
          "name": "_nativeReputation",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_metaData",
          "type": "string"
        }
      ],
      "name": "metaData",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nativeReputation",
      "outputs": [
        {
          "internalType": "contract Reputation",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nativeToken",
      "outputs": [
        {
          "internalType": "contract DAOToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "orgName",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountInWei",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "_to",
          "type": "address"
        }
      ],
      "name": "sendEther",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_key",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_value",
          "type": "string"
        }
      ],
      "name": "setDBValue",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vault",
      "outputs": [
        {
          "internalType": "contract Vault",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612009806100206000396000f3fe6080604052600436106100f75760003560e01c8063ab751f711161008a578063e1758bd811610059578063e1758bd8146106b9578063f2fde38b146106ce578063f34822b414610701578063fbfa77cf14610797576101ae565b8063ab751f71146105b1578063b756d5a2146105f4578063cb16d4a21461063d578063dab0efff14610676576101ae565b8063890ac46c116100c6578063890ac46c1461041157806389ae1c90146104a05780638da5cb5b146104d15780639c9c7326146104e6576101ae565b80631386dc2d146101b35780632bf164581461023d57806358cb548b1461034b578063715018a6146103fc576101ae565b366101ae57609a546001600160a01b031633146101ac57609a546040516000916001600160a01b03169034908381818185875af1925050503d806000811461015b576040519150601f19603f3d011682016040523d82523d6000602084013e610160565b606091505b50509050806101aa576040805162461bcd60e51b815260206004820152601160248201527039b2b73222ba3432b9103330b4b632b21760791b604482015290519081900360640190fd5b505b005b600080fd5b3480156101bf57600080fd5b506101c86107ac565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102025781810151838201526020016101ea565b50505050905090810190601f16801561022f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024957600080fd5b506102c86004803603606081101561026057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460018302840111600160201b831117156102bd57600080fd5b91935091503561083a565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561030f5781810151838201526020016102f7565b50505050905090810190601f16801561033c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561035757600080fd5b506101c86004803603602081101561036e57600080fd5b810190602081018135600160201b81111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460018302840111600160201b831117156103bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a10945050505050565b34801561040857600080fd5b506101ac610a84565b34801561041d57600080fd5b5061048c6004803603602081101561043457600080fd5b810190602081018135600160201b81111561044e57600080fd5b82018360208201111561046057600080fd5b803590602001918460018302840111600160201b8311171561048157600080fd5b509092509050610b26565b604080519115158252519081900360200190f35b3480156104ac57600080fd5b506104b5610be9565b604080516001600160a01b039092168252519081900360200190f35b3480156104dd57600080fd5b506104b5610bf8565b3480156104f257600080fd5b5061048c6004803603604081101561050957600080fd5b810190602081018135600160201b81111561052357600080fd5b82018360208201111561053557600080fd5b803590602001918460018302840111600160201b8311171561055657600080fd5b919390929091602081019035600160201b81111561057357600080fd5b82018360208201111561058557600080fd5b803590602001918460018302840111600160201b831117156105a657600080fd5b509092509050610c08565b3480156105bd57600080fd5b5061048c600480360360608110156105d457600080fd5b506001600160a01b03813581169160208101359091169060400135610ca4565b34801561060057600080fd5b5061048c6004803603608081101561061757600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610d68565b34801561064957600080fd5b5061048c6004803603604081101561066057600080fd5b50803590602001356001600160a01b0316610e37565b34801561068257600080fd5b5061048c6004803603606081101561069957600080fd5b506001600160a01b03813581169160208101359091169060400135610f1c565b3480156106c557600080fd5b506104b5610fe5565b3480156106da57600080fd5b506101ac600480360360208110156106f157600080fd5b50356001600160a01b0316610ff4565b34801561070d57600080fd5b506101ac6004803603608081101561072457600080fd5b810190602081018135600160201b81111561073e57600080fd5b82018360208201111561075057600080fd5b803590602001918460018302840111600160201b8311171561077157600080fd5b91935091506001600160a01b0381358116916020810135821691604090910135166110ed565b3480156107a357600080fd5b506104b5611282565b6097805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108325780601f1061080757610100808354040283529160200191610832565b820191906000526020600020905b81548152906001019060200180831161081557829003601f168201915b505050505081565b60006060610846611291565b6065546001600160a01b03908116911614610896576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b821561091d57609a546040805163658b6a5160e11b81526004810186905230602482015290516001600160a01b039092169163cb16d4a2916044808201926020929091908290030181600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506040513d602081101561091a57600080fd5b50505b856001600160a01b0316838686604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461097b576040519150601f19603f3d011682016040523d82523d6000602084013e610980565b606091505b508092508193505050856001600160a01b03167f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0868686866040518080602001848152602001831515151581526020018281038252868682818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a294509492505050565b8051602081830181018051609b8252928201938201939093209190925280546040805160026001841615610100026000190190931692909204601f810185900485028301850190915280825290928301828280156108325780601f1061080757610100808354040283529160200191610832565b610a8c611291565b6065546001600160a01b03908116911614610adc576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b6000610b30611291565b6065546001600160a01b03908116911614610b80576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b7ff9deba4938ba20070ec5a45ddf59bccba49cf83124215228ec1232182ef0ba2b838360405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a150600192915050565b6099546001600160a01b031681565b6065546001600160a01b03165b90565b6000610c12611291565b6065546001600160a01b03908116911614610c62576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b8282609b878760405180838380828437808301925050509250505090815260200160405180910390209190610c98929190611753565b50600195945050505050565b6000610cae611291565b6065546001600160a01b03908116911614610cfe576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b610d186001600160a01b038516848463ffffffff61129516565b604080516001600160a01b038581168252602082018590528251908716927f3a48a4d6253b30fd10e57a347c1f9bcb0604946481fae0b2fdad6e74f2a9cbb3928290030190a25060019392505050565b6000610d72611291565b6065546001600160a01b03908116911614610dc2576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b610ddd6001600160a01b03861685858563ffffffff6113ad16565b604080516001600160a01b03868116825285811660208301528183018590529151918716917f179c15de44aa7ab84896301974328eb40b5b40fe01cfe0fee2924ea712c3e8439181900360600190a2506001949350505050565b6000610e41611291565b6065546001600160a01b03908116911614610e91576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b609a546040805163658b6a5160e11b8152600481018690526001600160a01b0385811660248301529151919092169163cb16d4a29160448083019260209291908290030181600087803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b505050506040513d6020811015610f1157600080fd5b506001949350505050565b6000610f26611291565b6065546001600160a01b03908116911614610f76576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b610f906001600160a01b038516848463ffffffff61140d16565b826001600160a01b0316846001600160a01b03167f49dc2a60d2599a7b6932d78fb694c30dfc596fe4e0282b5d0fd184b52472c04d846040518082815260200191505060405180910390a35060019392505050565b6098546001600160a01b031681565b610ffc611291565b6065546001600160a01b0390811691161461104c576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b6001600160a01b0381166110915760405162461bcd60e51b8152600401808060200182810382526026815260200180611f006026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1680611106575061110661145f565b80611114575060005460ff16155b61114f5760405162461bcd60e51b815260040180806020018281038252602e815260200180611f46602e913960400191505060405180910390fd5b600054610100900460ff1615801561117a576000805460ff1961ff0019909116610100171660011790555b61118660978787611753565b50609880546001600160a01b038087166001600160a01b03199283161790925560998054928616929091169190911790556111bf611465565b6111c882610ff4565b6040516111d4906117d1565b604051809103906000f0801580156111f0573d6000803e3d6000fd5b50609a80546001600160a01b0319166001600160a01b0392831617908190556040805163189acdbd60e31b81523060048201529051919092169163c4d66de891602480830192600092919082900301818387803b15801561125057600080fd5b505af1158015611264573d6000803e3d6000fd5b50505050801561127a576000805461ff00191690555b505050505050565b609a546001600160a01b031681565b3390565b80158061131b575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112ed57600080fd5b505afa158015611301573d6000803e3d6000fd5b505050506040513d602081101561131757600080fd5b5051155b6113565760405162461bcd60e51b8152600401808060200182810382526036815260200180611f9e6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526113a890849061155f565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261140790859061155f565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113a890849061155f565b303b1590565b600054610100900460ff168061147e575061147e61145f565b8061148c575060005460ff16155b6114c75760405162461bcd60e51b815260040180806020018281038252602e815260200180611f46602e913960400191505060405180910390fd5b600054610100900460ff161580156114f2576000805460ff1961ff0019909116610100171660011790555b60006114fc611291565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561155c576000805461ff00191690555b50565b611571826001600160a01b0316611717565b6115c2576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106116005780518252601f1990920191602091820191016115e1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611662576040519150601f19603f3d011682016040523d82523d6000602084013e611667565b606091505b5091509150816116be576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611407578080602001905160208110156116da57600080fd5b50516114075760405162461bcd60e51b815260040180806020018281038252602a815260200180611f74602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061174b57508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106117945782800160ff198235161785556117c1565b828001600101855582156117c1579182015b828111156117c15782358255916020019190600101906117a6565b506117cd9291506117de565b5090565b610707806117f983390190565b610c0591905b808211156117cd57600081556001016117e456fe608060405234801561001057600080fd5b506106e7806100206000396000f3fe60806040526004361061004e5760003560e01c8063715018a6146100905780638da5cb5b146100a7578063c4d66de8146100d8578063cb16d4a21461010b578063f2fde38b146101585761008b565b3661008b5760408051348152905133917ff32a9f77675fd5917534c7746608fd3e309eac68fbdcbf5925e24ca97a704396919081900360200190a2005b600080fd5b34801561009c57600080fd5b506100a561018b565b005b3480156100b357600080fd5b506100bc61023f565b604080516001600160a01b039092168252519081900360200190f35b3480156100e457600080fd5b506100a5600480360360208110156100fb57600080fd5b50356001600160a01b031661024e565b34801561011757600080fd5b506101446004803603604081101561012e57600080fd5b50803590602001356001600160a01b0316610302565b604080519115158252519081900360200190f35b34801561016457600080fd5b506100a56004803603602081101561017b57600080fd5b50356001600160a01b031661044e565b610193610559565b6065546001600160a01b039081169116146101f5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b6065546001600160a01b031690565b600054610100900460ff1680610267575061026761055d565b80610275575060005460ff16155b6102b05760405162461bcd60e51b815260040180806020018281038252602e815260200180610684602e913960400191505060405180910390fd5b600054610100900460ff161580156102db576000805460ff1961ff0019909116610100171660011790555b6102e3610563565b6102ec8261044e565b80156102fe576000805461ff00191690555b5050565b600061030c610559565b6065546001600160a01b0390811691161461036e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6040516000906001600160a01b0384169085908381818185875af1925050503d80600081146103b9576040519150601f19603f3d011682016040523d82523d6000602084013e6103be565b606091505b5050905080610408576040805162461bcd60e51b815260206004820152601160248201527039b2b73222ba3432b9103330b4b632b21760791b604482015290519081900360640190fd5b6040805185815290516001600160a01b038516917f5cf9c3dc0403b88750b3ce5ea792cdca787ff26128f6d508b99b2d3853ae13ec919081900360200190a25092915050565b610456610559565b6065546001600160a01b039081169116146104b8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166104fd5760405162461bcd60e51b815260040180806020018281038252602681526020018061065e6026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b303b1590565b600054610100900460ff168061057c575061057c61055d565b8061058a575060005460ff16155b6105c55760405162461bcd60e51b815260040180806020018281038252602e815260200180610684602e913960400191505060405180910390fd5b600054610100900460ff161580156105f0576000805460ff1961ff0019909116610100171660011790555b60006105fa610559565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561065a576000805461ff00191690555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212203f245ddecc4f570f3e3fb12e598cf02f283cafebecfe1915ee025a9cb40c0a3b64736f6c634300060a00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a264697066735822122097aacb41f76421ec9b5b7726aa5df2a06fb148ab8ed6178573a1e268804bdb2464736f6c634300060a0033",
  "deployedBytecode": "0x6080604052600436106100f75760003560e01c8063ab751f711161008a578063e1758bd811610059578063e1758bd8146106b9578063f2fde38b146106ce578063f34822b414610701578063fbfa77cf14610797576101ae565b8063ab751f71146105b1578063b756d5a2146105f4578063cb16d4a21461063d578063dab0efff14610676576101ae565b8063890ac46c116100c6578063890ac46c1461041157806389ae1c90146104a05780638da5cb5b146104d15780639c9c7326146104e6576101ae565b80631386dc2d146101b35780632bf164581461023d57806358cb548b1461034b578063715018a6146103fc576101ae565b366101ae57609a546001600160a01b031633146101ac57609a546040516000916001600160a01b03169034908381818185875af1925050503d806000811461015b576040519150601f19603f3d011682016040523d82523d6000602084013e610160565b606091505b50509050806101aa576040805162461bcd60e51b815260206004820152601160248201527039b2b73222ba3432b9103330b4b632b21760791b604482015290519081900360640190fd5b505b005b600080fd5b3480156101bf57600080fd5b506101c86107ac565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102025781810151838201526020016101ea565b50505050905090810190601f16801561022f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561024957600080fd5b506102c86004803603606081101561026057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561028a57600080fd5b82018360208201111561029c57600080fd5b803590602001918460018302840111600160201b831117156102bd57600080fd5b91935091503561083a565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561030f5781810151838201526020016102f7565b50505050905090810190601f16801561033c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561035757600080fd5b506101c86004803603602081101561036e57600080fd5b810190602081018135600160201b81111561038857600080fd5b82018360208201111561039a57600080fd5b803590602001918460018302840111600160201b831117156103bb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a10945050505050565b34801561040857600080fd5b506101ac610a84565b34801561041d57600080fd5b5061048c6004803603602081101561043457600080fd5b810190602081018135600160201b81111561044e57600080fd5b82018360208201111561046057600080fd5b803590602001918460018302840111600160201b8311171561048157600080fd5b509092509050610b26565b604080519115158252519081900360200190f35b3480156104ac57600080fd5b506104b5610be9565b604080516001600160a01b039092168252519081900360200190f35b3480156104dd57600080fd5b506104b5610bf8565b3480156104f257600080fd5b5061048c6004803603604081101561050957600080fd5b810190602081018135600160201b81111561052357600080fd5b82018360208201111561053557600080fd5b803590602001918460018302840111600160201b8311171561055657600080fd5b919390929091602081019035600160201b81111561057357600080fd5b82018360208201111561058557600080fd5b803590602001918460018302840111600160201b831117156105a657600080fd5b509092509050610c08565b3480156105bd57600080fd5b5061048c600480360360608110156105d457600080fd5b506001600160a01b03813581169160208101359091169060400135610ca4565b34801561060057600080fd5b5061048c6004803603608081101561061757600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610d68565b34801561064957600080fd5b5061048c6004803603604081101561066057600080fd5b50803590602001356001600160a01b0316610e37565b34801561068257600080fd5b5061048c6004803603606081101561069957600080fd5b506001600160a01b03813581169160208101359091169060400135610f1c565b3480156106c557600080fd5b506104b5610fe5565b3480156106da57600080fd5b506101ac600480360360208110156106f157600080fd5b50356001600160a01b0316610ff4565b34801561070d57600080fd5b506101ac6004803603608081101561072457600080fd5b810190602081018135600160201b81111561073e57600080fd5b82018360208201111561075057600080fd5b803590602001918460018302840111600160201b8311171561077157600080fd5b91935091506001600160a01b0381358116916020810135821691604090910135166110ed565b3480156107a357600080fd5b506104b5611282565b6097805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108325780601f1061080757610100808354040283529160200191610832565b820191906000526020600020905b81548152906001019060200180831161081557829003601f168201915b505050505081565b60006060610846611291565b6065546001600160a01b03908116911614610896576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b821561091d57609a546040805163658b6a5160e11b81526004810186905230602482015290516001600160a01b039092169163cb16d4a2916044808201926020929091908290030181600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050506040513d602081101561091a57600080fd5b50505b856001600160a01b0316838686604051808383808284376040519201945060009350909150508083038185875af1925050503d806000811461097b576040519150601f19603f3d011682016040523d82523d6000602084013e610980565b606091505b508092508193505050856001600160a01b03167f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e0868686866040518080602001848152602001831515151581526020018281038252868682818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a294509492505050565b8051602081830181018051609b8252928201938201939093209190925280546040805160026001841615610100026000190190931692909204601f810185900485028301850190915280825290928301828280156108325780601f1061080757610100808354040283529160200191610832565b610a8c611291565b6065546001600160a01b03908116911614610adc576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b6000610b30611291565b6065546001600160a01b03908116911614610b80576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b7ff9deba4938ba20070ec5a45ddf59bccba49cf83124215228ec1232182ef0ba2b838360405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a150600192915050565b6099546001600160a01b031681565b6065546001600160a01b03165b90565b6000610c12611291565b6065546001600160a01b03908116911614610c62576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b8282609b878760405180838380828437808301925050509250505090815260200160405180910390209190610c98929190611753565b50600195945050505050565b6000610cae611291565b6065546001600160a01b03908116911614610cfe576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b610d186001600160a01b038516848463ffffffff61129516565b604080516001600160a01b038581168252602082018590528251908716927f3a48a4d6253b30fd10e57a347c1f9bcb0604946481fae0b2fdad6e74f2a9cbb3928290030190a25060019392505050565b6000610d72611291565b6065546001600160a01b03908116911614610dc2576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b610ddd6001600160a01b03861685858563ffffffff6113ad16565b604080516001600160a01b03868116825285811660208301528183018590529151918716917f179c15de44aa7ab84896301974328eb40b5b40fe01cfe0fee2924ea712c3e8439181900360600190a2506001949350505050565b6000610e41611291565b6065546001600160a01b03908116911614610e91576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b609a546040805163658b6a5160e11b8152600481018690526001600160a01b0385811660248301529151919092169163cb16d4a29160448083019260209291908290030181600087803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b505050506040513d6020811015610f1157600080fd5b506001949350505050565b6000610f26611291565b6065546001600160a01b03908116911614610f76576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b610f906001600160a01b038516848463ffffffff61140d16565b826001600160a01b0316846001600160a01b03167f49dc2a60d2599a7b6932d78fb694c30dfc596fe4e0282b5d0fd184b52472c04d846040518082815260200191505060405180910390a35060019392505050565b6098546001600160a01b031681565b610ffc611291565b6065546001600160a01b0390811691161461104c576040805162461bcd60e51b81526020600482018190526024820152600080516020611f26833981519152604482015290519081900360640190fd5b6001600160a01b0381166110915760405162461bcd60e51b8152600401808060200182810382526026815260200180611f006026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1680611106575061110661145f565b80611114575060005460ff16155b61114f5760405162461bcd60e51b815260040180806020018281038252602e815260200180611f46602e913960400191505060405180910390fd5b600054610100900460ff1615801561117a576000805460ff1961ff0019909116610100171660011790555b61118660978787611753565b50609880546001600160a01b038087166001600160a01b03199283161790925560998054928616929091169190911790556111bf611465565b6111c882610ff4565b6040516111d4906117d1565b604051809103906000f0801580156111f0573d6000803e3d6000fd5b50609a80546001600160a01b0319166001600160a01b0392831617908190556040805163189acdbd60e31b81523060048201529051919092169163c4d66de891602480830192600092919082900301818387803b15801561125057600080fd5b505af1158015611264573d6000803e3d6000fd5b50505050801561127a576000805461ff00191690555b505050505050565b609a546001600160a01b031681565b3390565b80158061131b575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156112ed57600080fd5b505afa158015611301573d6000803e3d6000fd5b505050506040513d602081101561131757600080fd5b5051155b6113565760405162461bcd60e51b8152600401808060200182810382526036815260200180611f9e6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526113a890849061155f565b505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261140790859061155f565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113a890849061155f565b303b1590565b600054610100900460ff168061147e575061147e61145f565b8061148c575060005460ff16155b6114c75760405162461bcd60e51b815260040180806020018281038252602e815260200180611f46602e913960400191505060405180910390fd5b600054610100900460ff161580156114f2576000805460ff1961ff0019909116610100171660011790555b60006114fc611291565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561155c576000805461ff00191690555b50565b611571826001600160a01b0316611717565b6115c2576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106116005780518252601f1990920191602091820191016115e1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611662576040519150601f19603f3d011682016040523d82523d6000602084013e611667565b606091505b5091509150816116be576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611407578080602001905160208110156116da57600080fd5b50516114075760405162461bcd60e51b815260040180806020018281038252602a815260200180611f74602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061174b57508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106117945782800160ff198235161785556117c1565b828001600101855582156117c1579182015b828111156117c15782358255916020019190600101906117a6565b506117cd9291506117de565b5090565b610707806117f983390190565b610c0591905b808211156117cd57600081556001016117e456fe608060405234801561001057600080fd5b506106e7806100206000396000f3fe60806040526004361061004e5760003560e01c8063715018a6146100905780638da5cb5b146100a7578063c4d66de8146100d8578063cb16d4a21461010b578063f2fde38b146101585761008b565b3661008b5760408051348152905133917ff32a9f77675fd5917534c7746608fd3e309eac68fbdcbf5925e24ca97a704396919081900360200190a2005b600080fd5b34801561009c57600080fd5b506100a561018b565b005b3480156100b357600080fd5b506100bc61023f565b604080516001600160a01b039092168252519081900360200190f35b3480156100e457600080fd5b506100a5600480360360208110156100fb57600080fd5b50356001600160a01b031661024e565b34801561011757600080fd5b506101446004803603604081101561012e57600080fd5b50803590602001356001600160a01b0316610302565b604080519115158252519081900360200190f35b34801561016457600080fd5b506100a56004803603602081101561017b57600080fd5b50356001600160a01b031661044e565b610193610559565b6065546001600160a01b039081169116146101f5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6065546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606580546001600160a01b0319169055565b6065546001600160a01b031690565b600054610100900460ff1680610267575061026761055d565b80610275575060005460ff16155b6102b05760405162461bcd60e51b815260040180806020018281038252602e815260200180610684602e913960400191505060405180910390fd5b600054610100900460ff161580156102db576000805460ff1961ff0019909116610100171660011790555b6102e3610563565b6102ec8261044e565b80156102fe576000805461ff00191690555b5050565b600061030c610559565b6065546001600160a01b0390811691161461036e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6040516000906001600160a01b0384169085908381818185875af1925050503d80600081146103b9576040519150601f19603f3d011682016040523d82523d6000602084013e6103be565b606091505b5050905080610408576040805162461bcd60e51b815260206004820152601160248201527039b2b73222ba3432b9103330b4b632b21760791b604482015290519081900360640190fd5b6040805185815290516001600160a01b038516917f5cf9c3dc0403b88750b3ce5ea792cdca787ff26128f6d508b99b2d3853ae13ec919081900360200190a25092915050565b610456610559565b6065546001600160a01b039081169116146104b8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166104fd5760405162461bcd60e51b815260040180806020018281038252602681526020018061065e6026913960400191505060405180910390fd5b6065546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606580546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b303b1590565b600054610100900460ff168061057c575061057c61055d565b8061058a575060005460ff16155b6105c55760405162461bcd60e51b815260040180806020018281038252602e815260200180610684602e913960400191505060405180910390fd5b600054610100900460ff161580156105f0576000805460ff1961ff0019909116610100171660011790555b60006105fa610559565b606580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801561065a576000805461ff00191690555b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a26469706673582212203f245ddecc4f570f3e3fb12e598cf02f283cafebecfe1915ee025a9cb40c0a3b64736f6c634300060a00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a264697066735822122097aacb41f76421ec9b5b7726aa5df2a06fb148ab8ed6178573a1e268804bdb2464736f6c634300060a0033"
}