UNPKG

@aztec/contract-artifacts

Version:

Smart contract compilation artifacts for the latest version of AZTEC.

619 lines 61.8 kB
{ "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "accountAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "signerAddress", "type": "address" } ], "name": "Addresses", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "signatureHash", "type": "bytes32" }, { "indexed": true, "internalType": "bool", "name": "success", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "actualCharge", "type": "uint256" } ], "name": "GSNTransactionProcessed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "linkedPublicKey", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "spendingPublicKey", "type": "bytes" } ], "name": "RegisterExtension", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldRelayHub", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newRelayHub", "type": "address" } ], "name": "RelayHubChanged", "type": "event" }, { "constant": true, "inputs": [], "name": "BURN_PROOF", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "DIVIDEND_PROOF", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "EIP712_DOMAIN_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "GSNSigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "JOIN_SPLIT_PROOF", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "MINT_PROOF", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PRIVATE_RANGE_PROOF", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "PUBLIC_RANGE_PROOF", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "accountMapping", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint24", "name": "_proofId", "type": "uint24" }, { "internalType": "address", "name": "_registryOwner", "type": "address" }, { "internalType": "bytes", "name": "_proofData", "type": "bytes" }, { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "bytes", "name": "_proofSignature", "type": "bytes" } ], "name": "confidentialTransferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_registryOwner", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "bytes32", "name": "_proofHash", "type": "bytes32" }, { "internalType": "bytes", "name": "_proofData", "type": "bytes" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "deposit", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "epoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "getHubAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_aceAddress", "type": "address" }, { "internalType": "address", "name": "_trustedGSNSignerAddress", "type": "address" } ], "name": "initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bytes", "name": "context", "type": "bytes" }, { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "uint256", "name": "actualCharge", "type": "uint256" }, { "internalType": "bytes32", "name": "preRetVal", "type": "bytes32" } ], "name": "postRelayedCall", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bytes", "name": "context", "type": "bytes" } ], "name": "preRelayedCall", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_registryOwner", "type": "address" }, { "internalType": "bytes32", "name": "_proofHash", "type": "bytes32" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "publicApprove", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "address", "name": "_AZTECaddress", "type": "address" }, { "internalType": "bytes", "name": "_linkedPublicKey", "type": "bytes" }, { "internalType": "bytes", "name": "_spendingPublicKey", "type": "bytes" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "registerAZTECExtension", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "relayHubVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "setDefaultRelayHub", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "signatureLog", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userToAZTECAccountMapping", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "setGSNSigner", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "relay", "type": "address" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "bytes", "name": "encodedFunction", "type": "bytes" }, { "internalType": "uint256", "name": "transactionFee", "type": "uint256" }, { "internalType": "uint256", "name": "gasPrice", "type": "uint256" }, { "internalType": "uint256", "name": "gasLimit", "type": "uint256" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "bytes", "name": "approvalData", "type": "bytes" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "acceptRelayedCall", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "context", "type": "bytes" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "bytecode": "0x6301343aaa6036556301343b0f603b557f454950373132446f6d61696e280000000000000000000000000000000000000060a09081527f737472696e67206e616d652c000000000000000000000000000000000000000060ad527f737472696e672076657273696f6e2c000000000000000000000000000000000060b9527f6164647265737320766572696679696e67436f6e74726163740000000000000060c8527f290000000000000000000000000000000000000000000000000000000000000060e152604260808181529120601960e2527f415a5445435f43525950544f4752415048595f454e47494e4500000000000000610102526001610122527f3100000000000000000000000000000000000000000000000000000000000000610142526101829081527fc8066e2c715ce196630b273cd256d8959d5b9fefc55e9e6d999fb0f08bb7f75f6101a2527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66101c252306101e25261016282905261020260405220603555612a1c806101976000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c806383947ea0116100de578063c52b2ff311610097578063e0b28d2211610071578063e0b28d2214610951578063e306f77914610977578063e308d6ff1461097f578063f6cf6ab3146109b157610172565b8063c52b2ff314610807578063df924625146108cd578063e06e0e22146108d557610172565b806383947ea01461043e5780638500e1f8146105ab5780638e526d9b146105b3578063900cf0cf146105bb578063ad61ccd5146105c3578063bb2fa91b1461064057610172565b8063485cc95511610130578063485cc9551461037057806349518b281461039e578063733276a9146103a657806374e861d6146103ae57806380274db7146103b65780638129fc1c1461043657610172565b80625bf7321461017757806308ae900a1461019757806309146c7c1461019f5780631220e2ff146101d057806318cb65e6146101da5780633d6bb32c1461032e575b600080fd5b61017f6109b9565b6040805162ffffff9092168252519081900360200190f35b61017f6109c0565b6101bc600480360360208110156101b557600080fd5b50356109c7565b604080519115158252519081900360200190f35b6101d86109dc565b005b6101d8600480360360a08110156101f057600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561022457600080fd5b82018360208201111561023657600080fd5b803590602001918460018302840111600160201b8311171561025757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460018302840111600160201b831117156102ed57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109fb945050505050565b6103546004803603602081101561034457600080fd5b50356001600160a01b0316610df0565b604080516001600160a01b039092168252519081900360200190f35b6101d86004803603604081101561038657600080fd5b506001600160a01b0381358116916020013516610e0b565b61017f610ed3565b6101d8610eda565b610354610f02565b610424600480360360208110156103cc57600080fd5b810190602081018135600160201b8111156103e657600080fd5b8201836020820111156103f857600080fd5b803590602001918460018302840111600160201b8311171561041957600080fd5b509092509050610f12565b60408051918252519081900360200190f35b6101d8610fb3565b61052c600480360361012081101561045557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561048857600080fd5b82018360208201111561049a57600080fd5b803590602001918460018302840111600160201b831117156104bb57600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156104ee57600080fd5b82018360208201111561050057600080fd5b803590602001918460018302840111600160201b8311171561052157600080fd5b91935091503561106d565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561056f578181015183820152602001610557565b50505050905090810190601f16801561059c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61017f6112e9565b61017f6112f0565b6104246112f7565b6105cb6112fd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106055781810151838201526020016105ed565b50505050905090810190601f1680156106325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d8600480360360a081101561065657600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561068957600080fd5b82018360208201111561069b57600080fd5b803590602001918460018302840111600160201b831117156106bc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561070e57600080fd5b82018360208201111561072057600080fd5b803590602001918460018302840111600160201b8311171561074157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561079357600080fd5b8201836020820111156107a557600080fd5b803590602001918460018302840111600160201b831117156107c657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061131c945050505050565b6101d8600480360360a081101561081d57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561085757600080fd5b82018360208201111561086957600080fd5b803590602001918460018302840111600160201b8311171561088a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506116ab915050565b61017f611c78565b6101d8600480360360808110156108eb57600080fd5b810190602081018135600160201b81111561090557600080fd5b82018360208201111561091757600080fd5b803590602001918460018302840111600160201b8311171561093857600080fd5b9193509150803515159060208101359060400135611c7f565b6105cb6004803603602081101561096757600080fd5b50356001600160a01b0316611d21565b610424611dbc565b6101d86004803603606081101561099557600080fd5b506001600160a01b038135169060208101359060400135611dc2565b610354611e3b565b6201010181565b6201040381565b60396020526000908152604090205460ff1681565b6109f973d216153c06e857cd7f72665e0af1d7d82172f494611e4a565b565b603a5460405163a2866ea360e01b815262ffffff871660048201908152306024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948c94938b93919260840190602085019080838360005b83811015610a72578181015183820152602001610a5a565b50505050905090810190601f168015610a9f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610ac057600080fd5b505af1158015610ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610afd57600080fd5b8101908080516040519392919084600160201b821115610b1c57600080fd5b908301906020820185811115610b3157600080fd5b8251600160201b811182820188101715610b4a57600080fd5b82525081516020918201929091019080838360005b83811015610b77578181015183820152602001610b5f565b50505050905090810190601f168015610ba45780820380516001836020036101000a031916815260200191505b5060405250505090508151600014610d0657604051630530182d60e11b815262ffffff8716600482019081526001600160a01b03858116604484015260016064840181905260a060248501908152855160a48601528551928a1694630a60305a948c9488948b9490938b9392608482019160c40190602089019080838360005b83811015610c3c578181015183820152602001610c24565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c9c578181015183820152602001610c84565b50505050905090810190601f168015610cc95780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015610ced57600080fd5b505af1158015610d01573d6000803e3d6000fd5b505050505b6001600160a01b03851663cdfea90e87610d2784600063ffffffff611f4a16565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b83811015610d83578181015183820152602001610d6b565b50505050905090810190601f168015610db05780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610dd057600080fd5b505af1158015610de4573d6000803e3d6000fd5b50505050505050505050565b6038602052600090815260409020546001600160a01b031681565b600054610100900460ff1680610e245750610e24611fa1565b80610e32575060005460ff16155b610e6d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806128a5602e913960400191505060405180910390fd5b600054610100900460ff16158015610e98576000805460ff1961ff0019909116610100171660011790555b603a80546001600160a01b0319166001600160a01b038516179055610ebc82611fa7565b8015610ece576000805461ff00191690555b505050565b6201040281565b603c80546001600160a01b031916735323b6bbd3421983323b3f4f0b11c2d6d3bce1d8179055565b6033546001600160a01b03165b90565b6000610f1c610f02565b6001600160a01b0316336001600160a01b031614610f6b5760405162461bcd60e51b815260040180806020018281038252602481526020018061295a6024913960400191505060405180910390fd5b610faa83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120b292505050565b90505b92915050565b600054610100900460ff1680610fcc5750610fcc611fa1565b80610fda575060005460ff16155b6110155760405162461bcd60e51b815260040180806020018281038252602e8152602001806128a5602e913960400191505060405180910390fd5b600054610100900460ff16158015611040576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b0316611058576110586109dc565b801561106a576000805461ff00191690555b50565b60006060600060608686604081101561108557600080fd5b81359190810190604081016020820135600160201b8111156110a657600080fd5b8201836020820111156110b857600080fd5b803590602001918460018302840111600160201b831117156110d957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509150915060608f8f8f8f8f8f8f8f61113c610f02565b308c604051602001808c6001600160a01b03166001600160a01b031660601b81526014018b6001600160a01b03166001600160a01b031660601b81526014018a8a808284379190910198895250506020808801969096526040808801959095526060808801949094526bffffffffffffffffffffffff1992841b83166080880152921b16609485015260a8808501919091528151808503909101815260c8840190915260e88301828152895161010885015289519198508997509550859450610128909201925085019080838360005b8381101561122457818101518382015260200161120c565b50505050905090810190601f1680156112515780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152919052603c54855160208701209198506001600160a01b03169350611297925085915061128b906120b8565b9063ffffffff61210916565b6001600160a01b031614156112cf57824211156112c6576112ba60015b856121ed565b945094505050506112d9565b6112ba846121f6565b6112ba60006112b4565b9b509b9950505050505050505050565b6201040181565b6201020181565b603b5481565b6040805180820190915260058152640312e302e360dc1b602082015290565b6000816040516020018082805190602001908083835b602083106113515780518252601f199092019160209182019101611332565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260399092529290205491945050600160ff9091161515141591506113f99050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152603960209081526040808320805460ff1916600117905580516060810182526001600160a01b03808b1682529281018890529188169082015261144a90611444906121fb565b846123ff565b845160208601209091506001600160a01b0388811691161461149d5760405162461bcd60e51b81526004018080602001828103825260218152602001806129396021913960400191505060405180910390fd5b806001600160a01b0316876001600160a01b031614611503576040805162461bcd60e51b815260206004820152601a60248201527f7369676e6572206d75737420626520746865206163636f756e74000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152603760209081526040909120865161152c9288019061271e565b506001600160a01b0387811660008181526038602090815260409182902080546001600160a01b0319168b861617905581519283529284169282019290925281517f95a39d922be29576604d782638b30fccbff80d85c69a650415d8b560270ec9a0929181900390910190a1866001600160a01b03167f6943ea2c7fa944e0014e912e815bb331b63af36341f53622fce2f97d26a928e28686604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156116065781810151838201526020016115ee565b50505050905090810190601f1680156116335780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561166657818101518382015260200161164e565b50505050905090810190601f1680156116935780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050565b603a5460405163a2866ea360e01b81526201010160048201818152306024840181905260606044850181815288516064870152885191966001600160a01b03169563a2866ea395948a9390929160840190602085019080838360005b8381101561171f578181015183820152602001611707565b50505050905090810190601f16801561174c5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561176d57600080fd5b505af1158015611781573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156117aa57600080fd5b8101908080516040519392919084600160201b8211156117c957600080fd5b9083019060208201858111156117de57600080fd5b8251600160201b8111828201881017156117f757600080fd5b82525081516020918201929091019080838360005b8381101561182457818101518382015260200161180c565b50505050905090810190601f1680156118515780820380516001836020036101000a031916815260200191505b506040525050509050611862612547565b6001600160a01b0316856001600160a01b03161461198f57611882612547565b6001600160a01b0386811660009081526038602052604090205481169116146118dc5760405162461bcd60e51b81526004018080602001828103825260368152602001806127b76036913960400191505060405180910390fd5b60606118f76118f283600063ffffffff611f4a16565b612572565b505091505060006119078261259c565b905060005b8181101561198b57600061192e611929858463ffffffff611f4a16565b6125a3565b50509050886001600160a01b0316816001600160a01b0316146119825760405162461bcd60e51b81526004018080602001828103825260488152602001806127ed6048913960600191505060405180910390fd5b5060010161190c565b5050505b603a5460408051633e5c75df60e21b81526001600160a01b0389811660048301529151600093929092169163f971d77c9160248082019261010092909190829003018186803b1580156119e157600080fd5b505afa1580156119f5573d6000803e3d6000fd5b505050506040513d610100811015611a0c57600080fd5b5051604080516323b872dd60e01b81526001600160a01b0389811660048301523060248301526044820187905291519293508392918316916323b872dd916064808201926020929091908290030181600087803b158015611a6c57600080fd5b505af1158015611a80573d6000803e3d6000fd5b505050506040513d6020811015611a9657600080fd5b5050603a546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810187905290519183169163095ea7b3916044808201926020929091908290030181600087803b158015611aee57600080fd5b505af1158015611b02573d6000803e3d6000fd5b505050506040513d6020811015611b1857600080fd5b5050603a546040805163e308d6ff60e01b81526001600160a01b038b81166004830152602482018a9052604482018890529151919092169163e308d6ff91606480830192600092919082900301818387803b158015611b7657600080fd5b505af1158015611b8a573d6000803e3d6000fd5b5050506001600160a01b038916905063cdfea90e62010101611bad866000611f4a565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b83811015611c09578181015183820152602001611bf1565b50505050905090810190601f168015611c365780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611c5657600080fd5b505af1158015611c6a573d6000803e3d6000fd5b505050505050505050505050565b6201030181565b611c87610f02565b6001600160a01b0316336001600160a01b031614611cd65760405162461bcd60e51b815260040180806020018281038252602481526020018061295a6024913960400191505060405180910390fd5b611d1a85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792508691508590506125c1565b5050505050565b60376020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611db45780601f10611d8957610100808354040283529160200191611db4565b820191906000526020600020905b815481529060010190602001808311611d9757829003601f168201915b505050505081565b60355481565b603a546040805163e308d6ff60e01b81526001600160a01b03868116600483015260248201869052604482018590529151919092169163e308d6ff91606480830192600092919082900301818387803b158015611e1e57600080fd5b505af1158015611e32573d6000803e3d6000fd5b50505050505050565b603c546001600160a01b031681565b6033546001600160a01b03908116908216611e965760405162461bcd60e51b815260040180806020018281038252602e815260200180612835602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415611ee75760405162461bcd60e51b815260040180806020018281038252602d8152602001806128d3602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b602082810151908202830160400151830190821080611f9a5760405162461bcd60e51b81526004018080602001828103825260228152602001806129c66022913960400191505060405180910390fd5b5092915050565b303b1590565b600054610100900460ff1680611fc05750611fc0611fa1565b80611fce575060005460ff16155b6120095760405162461bcd60e51b815260040180806020018281038252602e8152602001806128a5602e913960400191505060405180910390fd5b600054610100900460ff16158015612034576000805460ff1961ff0019909116610100171660011790555b6001600160a01b0382166120795760405162461bcd60e51b81526004018080602001828103825260398152602001806129006039913960400191505060405180910390fd5b603480546001600160a01b0319166001600160a01b03841617905561209c610fb3565b80156120ae576000805461ff00191690555b5050565b50600090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461211c57506000610fad565b60208201516040830151606084015160001a6fa2a8918ca85bafe22016d0b997e4df60600160ff1b038211156121585760009350505050610fad565b8060ff16601b1415801561217057508060ff16601c14155b156121815760009350505050610fad565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa1580156121d8573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600b9190910191565b600091565b600080604051806080016040528060428152602001612863604291396040516020018082805190602001908083835b602083106122495780518252601f19909201916020918201910161222a565b51815160001960209485036101000a0190811690199190911617905260408051601f19959093018381039590950183528481528251928201929092206e4163636f756e74526567697374727960881b8552825194859003600f018520601960f91b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a08501808452815191909201206101208501909252604880825291965086955093509161297e915060c001396040516020018082805190602001908083835b6020831061233a5780518252601f19909201916020918201910161231b565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092208a518b8301518051908401209b860151848401929092526001600160a01b0390811684870152606084019b909b52999099166080808301919091528351808303909101815260a0820184528051908a012061190160f01b60c083015260c282019690965260e28082019690965282518082039096018652610102019091525050815191909401209392505050565b6000808251848452606084015160408501518160f81c9150604086015160608701526020860151604087015281602087015260208660808860015afa601c8314601b84141760418514166fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383101616935085518714600081146124775761247c565b865195505b505050835280801561249657506001600160a01b03821615155b611f9a576001600160a01b0382166124f5576040805162461bcd60e51b815260206004820152601a60248201527f7369676e657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b80611f9a576040805162461bcd60e51b815260206004820152601960248201527f7369676e6174757265207265636f76657279206661696c656400000000000000604482015290519081900360640190fd5b6033546000906001600160a01b03163314612563575033610f0f565b61256b6126d1565b9050610f0f565b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b6020015190565b604081015160608201516001600160a01b0390911692909160800190565b60608480602001905160208110156125d857600080fd5b8101908080516040519392919084600160201b8211156125f757600080fd5b90830190602082018581111561260c57600080fd5b8251600160201b81118282018810171561262557600080fd5b82525081516020918201929091019080838360005b8381101561265257818101518382015260200161263a565b50505050905090810190601f16801561267f5780820380516001836020036101000a031916815260200191505b50604052505050905083151581805190602001207f2f708c980c8415108d54566eeeb78f5c2ddf6e1fab619607c30c001b127be075856040518082815260200191505060405180910390a35050505050565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031692915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061275f57805160ff191683800117855561278c565b8280016001018555821561278c579182015b8281111561278c578251825591602001919060010190612771565b5061279892915061279c565b5090565b610f0f91905b8082111561279857600081556001016127a256fe53656e64657220686173206e6f207065726d697373696f6e20746f206465706f736974206f6e206f776e6572277320626568616c662e43616e6e6f74206465706f736974206e6f746520746f206f74686572206163636f756e742069662073656e646572206973206e6f74207468652073616d65206173206f776e65722e47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e747261637429436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f20616464726573736164647265737320646f6573206e6f74206d61746368207075626c6963206b657947534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562415a5445434163636f756e742861646472657373206163636f756e742c6279746573206c696e6b65645075626c69634b65792c6164647265737320415a5445436164647265737329415a54454320617272617920696e646578206973206f7574206f6620626f756e6473a265627a7a723158201979f640f9729a3bfee4cfb0b7a4bd5628e61044de014ac6700d5c34046b35cf64736f6c63430005110032", "compiler": { "name": "solc", "version": "0.5.17+commit.d19bba13.Emscripten.clang" }, "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101725760003560e01c806383947ea0116100de578063c52b2ff311610097578063e0b28d2211610071578063e0b28d2214610951578063e306f77914610977578063e308d6ff1461097f578063f6cf6ab3146109b157610172565b8063c52b2ff314610807578063df924625146108cd578063e06e0e22146108d557610172565b806383947ea01461043e5780638500e1f8146105ab5780638e526d9b146105b3578063900cf0cf146105bb578063ad61ccd5146105c3578063bb2fa91b1461064057610172565b8063485cc95511610130578063485cc9551461037057806349518b281461039e578063733276a9146103a657806374e861d6146103ae57806380274db7146103b65780638129fc1c1461043657610172565b80625bf7321461017757806308ae900a1461019757806309146c7c1461019f5780631220e2ff146101d057806318cb65e6146101da5780633d6bb32c1461032e575b600080fd5b61017f6109b9565b6040805162ffffff9092168252519081900360200190f35b61017f6109c0565b6101bc600480360360208110156101b557600080fd5b50356109c7565b604080519115158252519081900360200190f35b6101d86109dc565b005b6101d8600480360360a08110156101f057600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561022457600080fd5b82018360208201111561023657600080fd5b803590602001918460018302840111600160201b8311171561025757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156102ba57600080fd5b8201836020820111156102cc57600080fd5b803590602001918460018302840111600160201b831117156102ed57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109fb945050505050565b6103546004803603602081101561034457600080fd5b50356001600160a01b0316610df0565b604080516001600160a01b039092168252519081900360200190f35b6101d86004803603604081101561038657600080fd5b506001600160a01b0381358116916020013516610e0b565b61017f610ed3565b6101d8610eda565b610354610f02565b610424600480360360208110156103cc57600080fd5b810190602081018135600160201b8111156103e657600080fd5b8201836020820111156103f857600080fd5b803590602001918460018302840111600160201b8311171561041957600080fd5b509092509050610f12565b60408051918252519081900360200190f35b6101d8610fb3565b61052c600480360361012081101561045557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561048857600080fd5b82018360208201111561049a57600080fd5b803590602001918460018302840111600160201b831117156104bb57600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156104ee57600080fd5b82018360208201111561050057600080fd5b803590602001918460018302840111600160201b8311171561052157600080fd5b91935091503561106d565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561056f578181015183820152602001610557565b50505050905090810190601f16801561059c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b61017f6112e9565b61017f6112f0565b6104246112f7565b6105cb6112fd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106055781810151838201526020016105ed565b50505050905090810190601f1680156106325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d8600480360360a081101561065657600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561068957600080fd5b82018360208201111561069b57600080fd5b803590602001918460018302840111600160201b831117156106bc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561070e57600080fd5b82018360208201111561072057600080fd5b803590602001918460018302840111600160201b8311171561074157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561079357600080fd5b8201836020820111156107a557600080fd5b803590602001918460018302840111600160201b831117156107c657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061131c945050505050565b6101d8600480360360a081101561081d57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561085757600080fd5b82018360208201111561086957600080fd5b803590602001918460018302840111600160201b8311171561088a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050913592506116ab915050565b61017f611c78565b6101d8600480360360808110156108eb57600080fd5b810190602081018135600160201b81111561090557600080fd5b82018360208201111561091757600080fd5b803590602001918460018302840111600160201b8311171561093857600080fd5b9193509150803515159060208101359060400135611c7f565b6105cb6004803603602081101561096757600080fd5b50356001600160a01b0316611d21565b610424611dbc565b6101d86004803603606081101561099557600080fd5b506001600160a01b038135169060208101359060400135611dc2565b610354611e3b565b6201010181565b6201040381565b60396020526000908152604090205460ff1681565b6109f973d216153c06e857cd7f72665e0af1d7d82172f494611e4a565b565b603a5460405163a2866ea360e01b815262ffffff871660048201908152306024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948c94938b93919260840190602085019080838360005b83811015610a72578181015183820152602001610a5a565b50505050905090810190601f168015610a9f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610ac057600080fd5b505af1158015610ad4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610afd57600080fd5b8101908080516040519392919084600160201b821115610b1c57600080fd5b908301906020820185811115610b3157600080fd5b8251600160201b811182820188101715610b4a57600080fd5b82525081516020918201929091019080838360005b83811015610b77578181015183820152602001610b5f565b50505050905090810190601f168015610ba45780820380516001836020036101000a031916815260200191505b5060405250505090508151600014610d0657604051630530182d60e11b815262ffffff8716600482019081526001600160a01b03858116604484015260016064840181905260a060248501908152855160a48601528551928a1694630a60305a948c9488948b9490938b9392608482019160c40190602089019080838360005b83811015610c3c578181015183820152602001610c24565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610c9c578181015183820152602001610c84565b50505050905090810190601f168015610cc95780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015610ced57600080fd5b505af1158015610d01573d6000803e3d6000fd5b505050505b6001600160a01b03851663cdfea90e87610d2784600063ffffffff611f4a16565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b83811015610d83578181015183820152602001610d6b565b50505050905090810190601f168015610db05780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015610dd057600080fd5b505af1158015610de4573d6000803e3d6000fd5b50505050505050505050565b6038602052600090815260409020546001600160a01b031681565b600054610100900460ff1680610e245750610e24611fa1565b80610e32575060005460ff16155b610e6d5760405162461bcd60e51b815260040180806020018281038252602e8152602001806128a5602e913960400191505060405180910390fd5b600054610100900460ff16158015610e98576000805460ff1961ff0019909116610100171660011790555b603a80546001600160a01b0319166001600160a01b038516179055610ebc82611fa7565b8015610ece576000805461ff00191690555b505050565b6201040281565b603c80546001600160a01b031916735323b6bbd3421983323b3f4f0b11c2d6d3bce1d8179055565b6033546001600160a01b03165b90565b6000610f1c610f02565b6001600160a01b0316336001600160a01b031614610f6b5760405162461bcd60e51b815260040180806020018281038252602481526020018061295a6024913960400191505060405180910390fd5b610faa83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120b292505050565b90505b92915050565b600054610100900460ff1680610fcc5750610fcc611fa1565b80610fda575060005460ff16155b6110155760405162461bcd60e51b815260040180806020018281038252602e8152602001806128a5602e913960400191505060405180910390fd5b600054610100900460ff16158015611040576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b0316611058576110586109dc565b801561106a576000805461ff00191690555b50565b60006060600060608686604081101561108557600080fd5b81359190810190604081016020820135600160201b8111156110a657600080fd5b8201836020820111156110b857600080fd5b803590602001918460018302840111600160201b831117156110d957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509150915060608f8f8f8f8f8f8f8f61113c610f02565b308c604051602001808c6001600160a01b03166001600160a01b031660601b81526014018b6001600160a01b03166001600160a01b031660601b81526014018a8a808284379190910198895250506020808801969096526040808801959095526060808801949094526bffffffffffffffffffffffff1992841b83166080880152921b16609485015260a8808501919091528151808503909101815260c8840190915260e88301828152895161010885015289519198508997509550859450610128909201925085019080838360005b8381101561122457818101518382015260200161120c565b50505050905090810190601f1680156112515780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152919052603c54855160208701209198506001600160a01b03169350611297925085915061128b906120b8565b9063ffffffff61210916565b6001600160a01b031614156112cf57824211156112c6576112ba60015b856121ed565b945094505050506112d9565b6112ba846121f6565b6112ba60006112b4565b9b509b9950505050505050505050565b6201040181565b6201020181565b603b5481565b60408051808201909152600