UNPKG

@aztec/contract-artifacts

Version:

Smart contract compilation artifacts for the latest version of AZTEC.

712 lines 65 kB
{ "abi": [ { "inputs": [ { "internalType": "address", "name": "_aceAddress", "type": "address" }, { "internalType": "address", "name": "_linkedTokenAddress", "type": "address" }, { "internalType": "uint256", "name": "_scalingFactor", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "ConvertTokens", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "noteHash", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "metadata", "type": "bytes" } ], "name": "CreateNote", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "noteRegistryId", "type": "uint256" } ], "name": "CreateNoteRegistry", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "aceAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "linkedTokenAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "scalingFactor", "type": "uint256" }, { "indexed": true, "internalType": "bool", "name": "_canAdjustSupply", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "_canConvert", "type": "bool" } ], "name": "CreateZkAsset", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "noteHash", "type": "bytes32" } ], "name": "DestroyNote", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "RedeemTokens", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "noteHash", "type": "bytes32" }, { "indexed": false, "internalType": "bytes", "name": "metadata", "type": "bytes" } ], "name": "UpdateNoteMetaData", "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": "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": [], "name": "ace", "outputs": [ { "internalType": "contract IACE", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint24", "name": "_proofId", "type": "uint24" }, { "internalType": "bytes", "name": "_proofOutputs", "type": "bytes" }, { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "bool", "name": "_approval", "type": "bool" }, { "internalType": "bytes", "name": "_proofSignature", "type": "bytes" } ], "name": "approveProof", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bytes32", "name": "_noteHash", "type": "bytes32" }, { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "bool", "name": "_spenderApproval", "type": "bool" }, { "internalType": "bytes", "name": "_signature", "type": "bytes" } ], "name": "confidentialApprove", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "confidentialApproved", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint24", "name": "_proofId", "type": "uint24" }, { "internalType": "bytes", "name": "_proofData", "type": "bytes" }, { "internalType": "bytes", "name": "_signatures", "type": "bytes" } ], "name": "confidentialTransfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bytes", "name": "_proofData", "type": "bytes" }, { "internalType": "bytes", "name": "_signatures", "type": "bytes" } ], "name": "confidentialTransfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint24", "name": "_proofId", "type": "uint24" }, { "internalType": "bytes", "name": "_proofOutput", "type": "bytes" } ], "name": "confidentialTransferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "linkedToken", "outputs": [ { "internalType": "contract IERC20Mintable", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "metaDataTimeLog", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "noteAccess", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "name": "proofs", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "renounceOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint8", "name": "_epoch", "type": "uint8" }, { "internalType": "uint256", "name": "_proofs", "type": "uint256" } ], "name": "setProofs", "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": "uint24", "name": "_proof", "type": "uint24" } ], "name": "supportsProof", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "bytes32", "name": "noteHash", "type": "bytes32" }, { "internalType": "bytes", "name": "metaData", "type": "bytes" } ], "name": "updateNoteMetaData", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "uint24", "name": "_factoryId", "type": "uint24" } ], "name": "upgradeRegistryVersion", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b5060405162002ea438038062002ea4833981810160405260608110156200003757600080fd5b50805160208083015160409384015184517f454950373132446f6d61696e2800000000000000000000000000000000000000818501527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8201527f737472696e672076657273696f6e2c000000000000000000000000000000000060398201527f6164647265737320766572696679696e67436f6e74726163740000000000000060488201527f29000000000000000000000000000000000000000000000000000000000000006061820152855160428183030181526062820180885281519186019190912060a28301885260199091527f415a5445435f43525950544f4752415048595f454e47494e450000000000000060829092019190915285518087018752600181527f3100000000000000000000000000000000000000000000000000000000000000908501528551808501919091527fc8066e2c715ce196630b273cd256d8959d5b9fefc55e9e6d999fb0f08bb7f75f8187015260008051602062002e848339815191526060820152306080808301919091528651808303909101815260a090910190955284519490920193909320600090815591929183908390839083838383806001600160a01b03841615620002185760016200021b565b60005b604080517f454950373132446f6d61696e28000000000000000000000000000000000000006020808301919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8301527f737472696e672076657273696f6e2c000000000000000000000000000000000060398301527f6164647265737320766572696679696e67436f6e74726163740000000000000060488301527f29000000000000000000000000000000000000000000000000000000000000006061830152825160428184030181526062830180855281519183019190912060a28401855260089091527f5a4b5f41535345540000000000000000000000000000000000000000000000006082909301929092528251808401845260018082527f3100000000000000000000000000000000000000000000000000000000000000918301919091528351808301939093527f34a1782c7b6da6ed013d1c63b38e9a7204574db51f6df9ff13aa1786590013fd8385015260008051602062002e848339815191526060840152306080808501919091528451808503909101815260a0840180865281519190930120600090815581546001600160a01b038c81166001600160a01b03199283161793849055600280548d83169316831790557fa5468ca20000000000000000000000000000000000000000000000000000000090945260a485015260c4840189905287151560e48501528515156101048501529351949550169263a5468ca2926101248084019391929182900301818387803b1580156200046757600080fd5b505af11580156200047c573d6000803e3d6000fd5b5050604080518681528415156020820152815186151594506001600160a01b03808a1694508a16927fca576e79bcb5c4a0045d9d596a80c733c3997559f688f69e5c03bd737d885b86928290030190a450505050506000620004e3620005d660201b60201c565b600780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601160086000600160009054906101000a90046001600160a01b03166001600160a01b0316639cb118bf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200058657600080fd5b505afa1580156200059b573d6000803e3d6000fd5b505050506040513d6020811015620005b257600080fd5b505160ff16815260208101919091526040016000205550620005da95505050505050565b3390565b61289a80620005ea6000396000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c80637f08dede116100f9578063985cd3b711610097578063df92462511610071578063df924625146108ba578063e306f779146108c2578063ea12489f146108ca578063f2fde38b146108d2576101a8565b8063985cd3b7146107e5578063a5c8fa8414610802578063cdfea90e1461080a576101a8565b80638da5cb5b116100d35780638da5cb5b146106885780638e526d9b146106ac5780638f32d59b146106b457806396988498146106bc576101a8565b80637f08dede1461064157806384a26fc8146106635780638500e1f814610680576101a8565b80631f2ac16a1161016657806349518b281161014057806349518b28146105d9578063715018a6146105e157806376448118146105e957806376ae6bee1461061b576101a8565b80631f2ac16a1461044a5780632140e0c51461050c5780632e3b9a3b1461052e576101a8565b80625bf732146101ad57806302d1fdc9146101cd57806308ae900a1461030457806309146c7c1461030c5780630a60305a1461033d5780630f4a80fe1461041e575b600080fd5b6101b56108f8565b6040805162ffffff9092168252519081900360200190f35b610302600480360360608110156101e357600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561020957600080fd5b82018360208201111561021b57600080fd5b803590602001918460018302840111600160201b8311171561023c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460018302840111600160201b831117156102c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108ff945050505050565b005b6101b5610974565b6103296004803603602081101561032257600080fd5b503561097b565b604080519115158252519081900360200190f35b610302600480360360a081101561035357600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561037957600080fd5b82018360208201111561038b57600080fd5b803590602001918460018302840111600160201b831117156103ac57600080fd5b919390926001600160a01b038335169260208101351515929190606081019060400135600160201b8111156103e057600080fd5b8201836020820111156103f257600080fd5b803590602001918460018302840111600160201b8311171561041357600080fd5b509092509050610990565b6103296004803603604081101561043457600080fd5b50803590602001356001600160a01b0316610ed4565b6103026004803603608081101561046057600080fd5b8135916001600160a01b0360208201351691604082013515159190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ef4945050505050565b6103026004803603602081101561052257600080fd5b503562ffffff166111c6565b6103026004803603604081101561054457600080fd5b81359190810190604081016020820135600160201b81111561056557600080fd5b82018360208201111561057757600080fd5b803590602001918460018302840111600160201b8311171561059857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611279945050505050565b6101b5611474565b61030261147b565b610609600480360360208110156105ff57600080fd5b503560ff1661150c565b60408051918252519081900360200190f35b6103026004803603604081101561063157600080fd5b5060ff813516906020013561151e565b6103296004803603602081101561065757600080fd5b503562ffffff1661157b565b6106096004803603602081101561067957600080fd5b5035611617565b6101b5611629565b610690611630565b604080516001600160a01b039092168252519081900360200190f35b6101b561163f565b610329611646565b610302600480360360408110156106d257600080fd5b810190602081018135600160201b8111156106ec57600080fd5b8201836020820111156106fe57600080fd5b803590602001918460018302840111600160201b8311171561071f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460018302840111600160201b831117156107a457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061166c945050505050565b610609600480360360208110156107fb57600080fd5b503561167e565b610690611690565b6103026004803603604081101561082057600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561084657600080fd5b82018360208201111561085857600080fd5b803590602001918460018302840111600160201b8311171561087957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061169f945050505050565b6101b5611712565b610609611719565b61069061171f565b610302600480360360208110156108e857600080fd5b50356001600160a01b031661172e565b6201010181565b600061090a8461157b565b9050600181151514610963576040805162461bcd60e51b815260206004820152601e60248201527f65787065637465642070726f6f6620746f20626520737570706f727465640000604482015290519081900360640190fd5b61096e848484611781565b50505050565b6201040381565b60066020526000908152604090205460ff1681565b600082826040518083838082843760408051939091018390039092206000818152600660205292909220549195505060ff161515600114159250610a1e915050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152600660209081526040808320805460ff19166001179055805160808101909152604280825290916126fc908301396040516020018082805190602001908083835b60208310610a835780518252601f199092019160209182019101610a64565b51815160001960209485036101000a0190811690199190911617905260408051601f1995909301838103959095018352848152825192820192909220671692d7d054d4d15560c21b85528251948590036008018520603160f81b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a0850183528051908201206e0a0e4dedecca6d2cedcc2e8eae4ca5608b1b60c086015271189e5d195ccccc881c1c9bdbd992185cda0b60721b60cf8601526f1859191c995cdcc81cdc195b99195c8b60821b60e18601526c189bdbdb08185c1c1c9bdd985b609a1b60f1860152602960f81b60fe860152825160df81870301815260ff9095019283905284519490910193909320929550600094508593508c91508b908083838082843760408051939091018390038320602080850198909852838201526001600160a01b038f1660608401528d15156080808501919091528151808503909101815260a08401825280519088012061190160f01b60c085015260c284019890985260e280840198909852805180840390980188526101028301808252885198880198909820610122601f8e01899004909802840188019091528b88529750600096610c82968996509094508c93508b92839250018382808284376000920191909152506119ab92505050565b905060005b610cc68b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b0492505050565b811015610ec6576060610d18828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611b0b169050565b90506060610d2582611b5b565b5091925060009150505b610d3882611b04565b811015610e8a576000610d59610d54848463ffffffff611b0b16565b611b85565b5060015460408051637f6f713360e11b81523060048201526024810184905290519294506000935083926001600160a01b039092169163fedee26691604480820192608092909190829003018186803b158015610db557600080fd5b505afa158015610dc9573d6000803e3d6000fd5b505050506040513d6080811015610ddf57600080fd5b5080516060909101519092509050600160ff831614610e2f5760405162461bcd60e51b81526004018080602001828103825260228152602001806126666022913960400191505060405180910390fd5b876001600160a01b0316816001600160a01b031614610e7f5760405162461bcd60e51b81526004018080602001828103825260268152602001806126d66026913960400191505060405180910390fd5b505050600101610d2f565b5050805160209182012060009081526003825260408082206001600160a01b038d16835290925220805460ff1916891515179055600101610c87565b505050505050505050505050565b600360209081526000928352604080842090915290825290205460ff1681565b60015460408051637f6f713360e11b81523060048201526024810187905290516000926001600160a01b03169163fedee266916044808301926080929190829003018186803b158015610f4657600080fd5b505afa158015610f5a573d6000803e3d6000fd5b505050506040513d6080811015610f7057600080fd5b50519050600160ff821614610fb65760405162461bcd60e51b81526004018080602001828103825260228152602001806126666022913960400191505060405180910390fd5b6000826040516020018082805190602001908083835b60208310610feb5780518252601f199092019160209182019101610fcc565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260069092529290205491945050600160ff9091161515141591506110939050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b8251156110b4576000818152600660205260409020805460ff191660011790555b604080516d09cdee8caa6d2cedcc2e8eae4ca560931b60208083019190915270189e5d195ccccc881b9bdd1952185cda0b607a1b602e8301526f1859191c995cdcc81cdc195b99195c8b60821b603f83015273189bdbdb081cdc195b99195c905c1c1c9bdd985b60621b604f830152602960f81b606383015282516044818403018152606483018452805190820120608483015260a482018990526001600160a01b03881660c483015286151560e48084019190915283518084039091018152610104909201909252805191012061118d818886611ba3565b5050506000938452506003602090815260408085206001600160a01b039490941685529290529120805460ff1916911515919091179055565b6111ce611646565b61120d576040805162461bcd60e51b8152602060048201819052602482015260008051602061273e833981519152604482015290519081900360640190fd5b6001546040805163216da75f60e21b815262ffffff8416600482015290516001600160a01b03909216916385b69d7c9160248082019260009290919082900301818387803b15801561125e57600080fd5b505af1158015611272573d6000803e3d6000fd5b5050505050565b60015460408051637f6f713360e11b815230600482015260248101859052905160009283926001600160a01b039091169163fedee26691604480820192608092909190829003018186803b1580156112d057600080fd5b505afa1580156112e4573d6000803e3d6000fd5b505050506040513d60808110156112fa57600080fd5b508051606091820151604080513390941b60208581019190915260348086018a9052825180870390910181526054909501825284519481019490942060008981526004865282812054828252600590965291909120549295509093509111158061136c57506001600160a01b03821633145b801561137b57508260ff166001145b6113b65760405162461bcd60e51b815260040180806020018281038252603281526020018061275e6032913960400191505060405180910390fd5b6113c08486611ca3565b6113c985611d26565b84826001600160a01b03167fda392cb8aa0843e7e474e7bacfae355313fc4202094b3e81d2a488b5c05207bf866040518080602001828103825283818151815260200191508051906020019080838360005b8381101561143357818101518382015260200161141b565b50505050905090810190601f1680156114605780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050505050565b6201040281565b611483611646565b6114c2576040805162461bcd60e51b8152602060048201819052602482015260008051602061273e833981519152604482015290519081900360640190fd5b6007546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600780546001600160a01b0319169055565b60086020526000908152604090205481565b611526611646565b611565576040805162461bcd60e51b8152602060048201819052602482015260008051602061273e833981519152604482015290519081900360640190fd5b60ff909116600090815260086020526040902055565b60008060008061158f8562ffffff16611d39565b9194509250905060ff82166001146115d85760405162461bcd60e51b815260040180806020018281038252602881526020018061263e6028913960400191505060405180910390fd5b60006115ee60ff8316600163ffffffff611d5316565b60ff94851660009081526008602052604090205494169390931c60019081161495945050505050565b60056020526000908152604090205481565b6201040181565b6007546001600160a01b031690565b6201020181565b6007546000906001600160a01b031661165d611da0565b6001600160a01b031614905090565b61167a6201010183836108ff565b5050565b60046020526000908152604090205481565b6001546001600160a01b031681565b60006116aa8361157b565b9050600181151514611703576040805162461bcd60e51b815260206004820152601e60248201527f65787065637465642070726f6f6620746f20626520737570706f727465640000604482015290519081900360640190fd5b61170d8383611da4565b505050565b6201030181565b60005481565b6002546001600160a01b031681565b611736611646565b611775576040805162461bcd60e51b8152602060048201819052602482015260008051602061273e833981519152604482015290519081900360640190fd5b61177e8161201c565b50565b60006117918462ffffff16611d39565b5091505060ff81166001146117ed576040805162461bcd60e51b815260206004820152601c60248201527f74686973206973206e6f7420612062616c616e6365642070726f6f6600000000604482015290519081900360640190fd5b60015460405163a2866ea360e01b815262ffffff861660048201908152336024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948b94938b93919260840190602085019080838360005b8381101561186457818101518382015260200161184c565b50505050905090810190601f1680156118915780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156118b257600080fd5b505af11580156118c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156118ef57600080fd5b8101908080516040519392919084600160201b82111561190e57600080fd5b90830190602082018581111561192357600080fd5b8251600160201b81118282018810171561193c57600080fd5b82525081516020918201929091019080838360005b83811015611969578181015183820152602001611951565b50505050905090810190601f1680156119965780820380516001836020036101000a031916815260200191505b506040525050509050611272858285876120bd565b6000808251848452606084015160408501518160f81c9150604086015160608701526020860151604087015281602087015260208660808860015afa601c8314601b84141760418514167f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08310161693508551871460008114611a2d57611a32565b865195505b5050508352808015611a4c57506001600160a01b03821615155b611afd576001600160a01b038216611aab576040805162461bcd60e51b815260206004820152601a60248201527f7369676e657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b80611afd576040805162461bcd60e51b815260206004820152601960248201527f7369676e6174757265207265636f76657279206661696c656400000000000000604482015290519081900360640190fd5b5092915050565b6020015190565b602082810151908202830160400151830190821080611afd5760405162461bcd60e51b81526004018080602001828103825260228152602001806128446022913960400191505060405180910390fd5b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b604081015160608201516001600160a01b0390911692909160800190565b60015460408051637f6f713360e11b81523060048201526024810185905290516000926001600160a01b03169163fedee266916044808301926080929190829003018186803b158015611bf557600080fd5b505afa158015611c09573d6000803e3d6000fd5b505050506040513d6080811015611c1f57600080fd5b5060600151825190915060009015611c50576000611c3c8661241b565b9050611c4881856119ab565b915050611c53565b50335b816001600160a01b0316816001600160a01b0316146112725760405162461bcd60e51b81526004018080602001828103825260288152602001806126ae6028913960400191505060405180910390fd5b815160e1830151606182111561096e5760005b81811015611272576000611cca868361243c565b6040805160609290921b6bffffffffffffffffffffffff19166020808401919091526034808401899052825180850390910181526054909301825282519281019290922060009081526005909252902042905550600101611cb6565b6000908152600460205260409020429055565b60ff62010000820481169261010083048216929190911690565b60008260ff168260ff161115611d9a5760405162461bcd60e51b815260040180806020018281038252602581526020018061281f6025913960400191505060405180910390fd5b50900390565b3390565b606080600080611db385611b5b565b88516020808b01919091206000818152600383526040808220338352909352919091205494985092965090945092509060ff161515600114611e8b576000611dfa86611b04565b905060005b81811015611e88576000611e1c610d54898463ffffffff611b0b16565b50600081815260036020908152604080832033845290915290205490925060ff1615156001149050611e7f5760405162461bcd60e51b81526004018080602001828103825260318152602001806127ee6031913960400191505060405180910390fd5b50600101611dff565b50505b600154604051634bbbcb6960e11b815262ffffff89166004820190815233604483018190526060602484019081528a5160648501528a516001600160a01b039095169463977796d2948d948d94939092909160840190602086019080838360005b83811015611f04578181015183820152602001611eec565b50505050905090810190601f168015611f315780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611f5257600080fd5b505af1158015611f66573d6000803e3d6000fd5b50505050611f738561248b565b611f7c846124fa565b6000821215611fca57826001600160a01b03167ffed3b27b73d78d9d1f344bbbf25f7af35e0ac4d6cf8193604ce18082168e461a836000036040518082815260200191505060405180910390a25b6000821315612013576040805183815290516001600160a01b038516917f60213c45c34d8b94e495fd5871fdea7a7511f659e884ea25a0c8843b7f98bfad919081900360200190a25b50505050505050565b6001600160a01b0381166120615760405162461bcd60e51b81526004018080602001828103825260268152602001806126886026913960400191505060405180910390fd5b6007546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b604081015160005b6120ce85611b04565b8110156124135760606120e7868363ffffffff611b0b16565b600154604051634bbbcb6960e11b815262ffffff8a166004820190815230604483018190526060602484019081528551606485015285519596506001600160a01b039094169463977796d2948d94889492608490910190602086019080838360005b83811015612161578181015183820152602001612149565b50505050905090810190601f16801561218e5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156121af57600080fd5b505af11580156121c3573d6000803e3d6000fd5b505050506060806000806121d685611b5b565b935093509350935060006121e985611b04565b111561235a5760005b6121fb85611b04565b81101561235857606061220e8b836125ed565b90506000612225610d54888563ffffffff611b0b16565b509150506000604051602001808072094ded2dca6e0d8d2e8a6d2cedcc2e8eae4ca5606b1b815250601301806c1d5a5b9d0c8d081c1c9bdbd98b609a1b815250600d018070189e5d195ccccc881b9bdd1952185cda0b607a1b81525060110180711d5a5b9d0c8d4d8818da185b1b195b99d94b60721b815250601201806d30b2323932b9b99039b2b73232b960911b815250600e0180602960f81b8152506001019050604051602081830303815290604052805190602001208f838d33604051602001808681526020018562ffffff1662ffffff168152602001848152602001838152602001826001600160a01b03166001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905061234d818385611ba3565b5050506001016121f2565b505b6123638461248b565b61236c836124fa565b60008112156123ba57816001600160a01b03167ffed3b27b73d78d9d1f344bbbf25f7af35e0ac4d6cf8193604ce18082168e461a826000036040518082815260200191505060405180910390a25b6000811315612403576040805182815290516001600160a01b038416917f60213c45c34d8b94e495fd5871fdea7a7511f659e884ea25a0c8843b7f98bfad919081900360200190a25b50505050506001810190506120c5565b505050505050565b60008054604080516119019093526020919091529182526042601e20915290565b6020828101519082028301610101015190808310611afd5760405162461bcd60e51b815260040180806020018281038252605e815260200180612790605e913960600191505060405180910390fd5b60005b61249782611b04565b81101561167a576000806124b4610d54858563ffffffff611b0b16565b509150915080826001600160a01b03167f979308e20fbd28822c4526e85d528175e04e3ca0cf91c46301db34401a26a8c660405160405180910390a3505060010161248e565b60005b61250682611b04565b81101561167a576000806060612525610d54868663ffffffff611b0b16565b92509250925061253482611d26565b61253e8183611ca3565b81836001600160a01b03167f5ffb3072e4515cf3bfae8b16be9dff6313cf7c313a0c26faafe6971d8c7585f1836040518080602001828103825283818151815260200191508051906020019080838360005b838110156125a8578181015183820152602001612590565b50505050905090810190601f1680156125d55780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050506001016124fd565b60419081029190910160208181015160408084015193850151815193840192909252828101939093526001600160f81b031960f89190911b1660608201528151808203909301835260610190529056fe74686973206173736574206f6e6c7920737570706f7274732062616c616e6365642070726f6f66736f6e6c7920756e7370656e74206e6f7465732063616e20626520617070726f7665644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373746865206e6f7465206f776e657220646964206e6f74207369676e2074686973206d657373616765746865206e6f7465206f776e657220646964206e6f74207369676e20746869732070726f6f66454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e7472616374294f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657263616c6c657220646f6573206e6f742068617665207065726d697373696f6e20746f20757064617465206d6574614461746161646472657373506f73206f7574206f6620626f756e6473202d2061646472657373506f73206d757374206265206c657373207468616e20746865206e756d626572206f662061646472657373657320746f20626520617070726f76656473656e64657220646f6573206e6f74206861766520617070726f76616c20746f207370656e6420696e707574206e6f746575696e7438207375622074726967676572656420696e746567657220756e646572666c6f77415a54454320617272617920696e646578206973206f7574206f6620626f756e6473a265627a7a72315820fffffe14b9496193d017e940437c973db4bb4665aab789381524d5098064ba9364736f6c63430005110032c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", "compiler": { "name": "solc", "version": "0.5.17+commit.d19bba13.Emscripten.clang" }, "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a85760003560e01c80637f08dede116100f9578063985cd3b711610097578063df92462511610071578063df924625146108ba578063e306f779146108c2578063ea12489f146108ca578063f2fde38b146108d2576101a8565b8063985cd3b7146107e5578063a5c8fa8414610802578063cdfea90e1461080a576101a8565b80638da5cb5b116100d35780638da5cb5b146106885780638e526d9b146106ac5780638f32d59b146106b457806396988498146106bc576101a8565b80637f08dede1461064157806384a26fc8146106635780638500e1f814610680576101a8565b80631f2ac16a1161016657806349518b281161014057806349518b28146105d9578063715018a6146105e157806376448118146105e957806376ae6bee1461061b576101a8565b80631f2ac16a1461044a5780632140e0c51461050c5780632e3b9a3b1461052e576101a8565b80625bf732146101ad57806302d1fdc9146101cd57806308ae900a1461030457806309146c7c1461030c5780630a60305a1461033d5780630f4a80fe1461041e575b600080fd5b6101b56108f8565b6040805162ffffff9092168252519081900360200190f35b610302600480360360608110156101e357600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561020957600080fd5b82018360208201111561021b57600080fd5b803590602001918460018302840111600160201b8311171561023c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460018302840111600160201b831117156102c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506108ff945050505050565b005b6101b5610974565b6103296004803603602081101561032257600080fd5b503561097b565b604080519115158252519081900360200190f35b610302600480360360a081101561035357600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561037957600080fd5b82018360208201111561038b57600080fd5b803590602001918460018302840111600160201b831117156103ac57600080fd5b919390926001600160a01b038335169260208101351515929190606081019060400135600160201b8111156103e057600080fd5b8201836020820111156103f257600080fd5b803590602001918460018302840111600160201b8311171561041357600080fd5b509092509050610990565b6103296004803603604081101561043457600080fd5b50803590602001356001600160a01b0316610ed4565b6103026004803603608081101561046057600080fd5b8135916001600160a01b0360208201351691604082013515159190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ef4945050505050565b6103026004803603602081101561052257600080fd5b503562ffffff166111c6565b6103026004803603604081101561054457600080fd5b81359190810190604081016020820135600160201b81111561056557600080fd5b82018360208201111561057757600080fd5b803590602001918460018302840111600160201b8311171561059857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611279945050505050565b6101b5611474565b61030261147b565b610609600480360360208110156105ff57600080fd5b503560ff1661150c565b60408051918252519081900360200190f35b6103026004803603604081101561063157600080fd5b5060ff813516906020013561151e565b6103296004803603602081101561065757600080fd5b503562ffffff1661157b565b6106096004803603602081101561067957600080fd5b5035611617565b6101b5611629565b610690611630565b604080516001600160a01b039092168252519081900360200190f35b6101b561163f565b610329611646565b610302600480360360408110156106d257600080fd5b810190602081018135600160201b8111156106ec57600080fd5b8201836020820111156106fe57600080fd5b803590602001918460018302840111600160201b8311171561071f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561077157600080fd5b82018360208201111561078357600080fd5b803590602001918460018302840111600160201b831117156107a457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061166c945050505050565b610609600480360360208110156107fb57600080fd5b503561167e565b610690611690565b6103026004803603604081101561082057600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561084657600080fd5b82018360208201111561085857600080fd5b803590602001918460018302840111600160201b8311171561087957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061169f945050505050565b6101b5611712565b610609611719565b61069061171f565b610302600480360360208110156108e857600080fd5b50356001600160a01b031661172e565b6201010181565b600061090a8461157b565b9050600181151514610963576040805162461bcd60e51b815260206004820152601e60248201527f65787065637465642070726f6f6620746f20626520737570706f727465640000604482015290519081900360640190fd5b61096e848484611781565b50505050565b6201040381565b60066020526000908152604090205460ff1681565b600082826040518083838082843760408051939091018390039092206000818152600660205292909220549195505060ff161515600114159250610a1e915050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152600660209081526040808320805460ff19166001179055805160808101909152604280825290916126fc908301396040516020018082805190602001908083835b60208310610a835780518252601f199092019160209182019101610a64565b51815160001960209485036101000a0190811690199190911617905260408051601f1995909301838103959095018352848152825192820192909220671692d7d054d4d15560c21b85528251948590036008018520603160f81b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a0850183528051908201206e0a0e4dedecca6d2cedcc2e8eae4ca5608b1b60c086015271189e5d195ccccc881c1c9bdbd992185cda0b60721b60cf8601526f1859191c995cdc