@settlemint/solidity-token-erc1155
Version:
Smart contract set to build an ERC1155 token in SettleMint
734 lines (733 loc) • 47.8 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "GenericERC1155",
"sourceName": "contracts/GenericERC1155.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ERC1155InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC1155InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "idsLength",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "valuesLength",
"type": "uint256"
}
],
"name": "ERC1155InvalidArrayLength",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "ERC1155InvalidOperator",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC1155InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC1155InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "ERC1155MissingApprovalForAll",
"type": "error"
},
{
"inputs": [],
"name": "EnforcedPause",
"type": "error"
},
{
"inputs": [],
"name": "ExpectedPause",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"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": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "value",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "URI",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "accounts",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
}
],
"name": "burnBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "exists",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "mintBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newuri",
"type": "string"
}
],
"name": "setURI",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "uri",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6080346101425760208101906001600160401b0382118183101761012c5760009160405252600254600181811c91168015610122575b602082101461010c57601f81116100c2575b50600060025533156100ac5760035460405190336001600160a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a81b0319163360ff60a01b191617600355611f3990816101488239f35b631e4fbdf760e01b600052600060045260246000fd5b6002600052601f0160051c7f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace908101905b8181106101005750610047565b600081556001016100f3565b634e487b7160e01b600052602260045260246000fd5b90607f1690610035565b634e487b7160e01b600052604160045260246000fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461017657806301ffc9a71461017157806302fe53051461016c5780630e89341c1461016757806318160ddd146101625780631f7fdffa1461015d5780632eb2c2d6146101585780633f4ba83a146101535780634e1273f41461014e5780634f558e79146101495780635c975abb146101445780636b20c4541461013f578063715018a61461013a578063731133e9146101355780638456cb59146101305780638da5cb5b1461012b578063a22cb46514610126578063bd85b03914610121578063e985e9c51461011c578063f242432a14610117578063f2fde38b146101125763f5298aca1461010d57600080fd5b6111d6565b611102565b610ffd565b610f81565b610f55565b610e41565b610e0d565b610d81565b610ceb565b610c6b565b610b29565b610b03565b610ad5565b610a14565b61092c565b61089f565b6107c7565b610719565b61061d565b610424565b61026c565b6101e7565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019e57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361019e57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361019e57565b3461019e57604060031936011261019e57602061023961020561017b565b6024356000526000835260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b7fffffffff0000000000000000000000000000000000000000000000000000000081160361019e57565b3461019e57602060031936011261019e5760207fffffffff000000000000000000000000000000000000000000000000000000006004356102ac81610242565b167fd9b67a26000000000000000000000000000000000000000000000000000000008114908115610314575b81156102ea575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386102df565b7f0e89341c00000000000000000000000000000000000000000000000000000000811491506102d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103ae57604052565b61033e565b67ffffffffffffffff81116103ae57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926103f9826103b3565b91610407604051938461036d565b82948184528183011161019e578281602093846000960137010152565b3461019e57602060031936011261019e5760043567ffffffffffffffff811161019e573660238201121561019e576104669036906024816004013591016103ed565b61046e6114d2565b805167ffffffffffffffff81116103ae576104938161048e6002546112d7565b611521565b602091601f82116001146104f0576104e092600091836104e5575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b600255005b0151905038806104ae565b60026000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216927f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9160005b8581106105925750836001951061055b575b505050811b01600255005b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080610550565b9192602060018192868501518155019401920161053e565b919082519283825260005b8481106105f45750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016105b5565b90602061061a9281815201906105aa565b90565b3461019e57602060031936011261019e57604051600060025461063f816112d7565b80845290600181169081156106d75750600114610677575b610673836106678185038261036d565b60405191829182610609565b0390f35b91905060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace916000905b8082106106bd57509091508101602001610667610657565b9192600181602092548385880101520191019092916106a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506106679050610657565b3461019e57600060031936011261019e576020600554604051908152f35b67ffffffffffffffff81116103ae5760051b60200190565b9080601f8301121561019e57813561076681610737565b92610774604051948561036d565b81845260208085019260051b82010192831161019e57602001905b82821061079c5750505090565b813581526020918201910161078f565b9080601f8301121561019e5781602061061a933591016103ed565b3461019e57608060031936011261019e576107e061017b565b60243567ffffffffffffffff811161019e5761080090369060040161074f565b60443567ffffffffffffffff811161019e5761082090369060040161074f565b60643567ffffffffffffffff811161019e576108409036906004016107ac565b916108496114d2565b73ffffffffffffffffffffffffffffffffffffffff8416156108705761086e93611665565b005b7f57f447ce00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b3461019e5760a060031936011261019e576108b861017b565b6108c06101a3565b9060443567ffffffffffffffff811161019e576108e190369060040161074f565b60643567ffffffffffffffff811161019e5761090190369060040161074f565b906084359367ffffffffffffffff851161019e5761092661086e9536906004016107ac565b9361132a565b3461019e57600060031936011261019e576109456114d2565b60035460ff8160a01c16156109a5577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff166003557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b0000000000000000000000000000000000000000000000000000000060005260046000fd5b906020808351928381520192019060005b8181106109ed5750505090565b82518452602093840193909201916001016109e0565b90602061061a9281815201906109cf565b3461019e57604060031936011261019e5760043567ffffffffffffffff811161019e573660238201121561019e57806004013590610a5182610737565b91610a5f604051938461036d565b8083526024602084019160051b8301019136831161019e57602401905b828210610abd578360243567ffffffffffffffff811161019e5761067391610aab610ab192369060040161074f565b90611404565b60405191829182610a03565b60208091610aca846101c6565b815201910190610a7c565b3461019e57602060031936011261019e57600435600052600460205260206040600020541515604051908152f35b3461019e57600060031936011261019e57602060ff60035460a01c166040519015158152f35b3461019e57606060031936011261019e57610b4261017b565b60243567ffffffffffffffff811161019e57610b6290369060040161074f565b9060443567ffffffffffffffff811161019e57610b8390369060040161074f565b73ffffffffffffffffffffffffffffffffffffffff82163381141580610c29575b610bf85715610bc95761086e9260405192610bc060208561036d565b60008452611574565b7f01a8351400000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7fe237d922000000000000000000000000000000000000000000000000000000006000523360045260245260446000fd5b5080600052600160205260ff610c633360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615610ba4565b3461019e57600060031936011261019e57610c846114d2565b600073ffffffffffffffffffffffffffffffffffffffff6003547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461019e57608060031936011261019e57610d0461017b565b6024356044359160643567ffffffffffffffff811161019e57610d2b9036906004016107ac565b91610d346114d2565b73ffffffffffffffffffffffffffffffffffffffff8216156108705761086e93610d7b60405192600184526020840152604083019160018352606084015260808301604052565b91611665565b3461019e57600060031936011261019e57610d9a6114d2565b610da26118e1565b740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff60035416176003557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461019e57600060031936011261019e57602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b3461019e57604060031936011261019e57610e5a61017b565b60243580151580820361019e5773ffffffffffffffffffffffffffffffffffffffff8316928315610f2657610ebc9033600052600160205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691161790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160405180610f21339482919091602081019215159052565b0390a3005b7fced3e10000000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b3461019e57602060031936011261019e5760043560005260046020526020604060002054604051908152f35b3461019e57604060031936011261019e57602060ff610ff1610fa161017b565b73ffffffffffffffffffffffffffffffffffffffff610fbe6101a3565b91166000526001845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b3461019e5760a060031936011261019e5761101661017b565b61101e6101a3565b604435906064359260843567ffffffffffffffff811161019e576110469036906004016107ac565b9273ffffffffffffffffffffffffffffffffffffffff821633811415806110c0575b610bf85773ffffffffffffffffffffffffffffffffffffffff8416156108705715610bc95761086e946110b860405192600184526020840152604083019160018352606084015260808301604052565b929091611793565b5080600052600160205260ff6110fa3360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615611068565b3461019e57602060031936011261019e5773ffffffffffffffffffffffffffffffffffffffff61113061017b565b6111386114d2565b1680156111a75773ffffffffffffffffffffffffffffffffffffffff600354827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b3461019e57606060031936011261019e576111ef61017b565b6044359060243573ffffffffffffffffffffffffffffffffffffffff8216338114158061125b575b610bf85715610bc95761086e9261124b60405192600184526020840152604083019160018352606084015260808301604052565b9060405192610bc060208561036d565b5080600052600160205260ff6112953360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615611217565b6112d391600052600060205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5490565b90600182811c92168015611320575b60208310146112f157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916112e6565b9392919073ffffffffffffffffffffffffffffffffffffffff8516338114158061137f575b610bf85773ffffffffffffffffffffffffffffffffffffffff8216156108705715610bc95761137d94611793565b565b5080600052600160205260ff6113b93360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54161561134f565b80518210156113d55760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919091805183518082036114a25750508051907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061145a61144484610737565b93611452604051958661036d565b808552610737565b0136602084013760005b815181101561149b578061148a60019260051b602080828701015191890101519061129d565b61149482866113c1565b5201611464565b5090925050565b7f5b0599910000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b73ffffffffffffffffffffffffffffffffffffffff6003541633036114f357565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b601f811161152d575050565b60026000526020600020906020601f840160051c8301931061156a575b601f0160051c01905b81811061155e575050565b60008155600101611553565b909150819061154a565b73ffffffffffffffffffffffffffffffffffffffff919294935061159b8584600084611ccf565b16156115f8575b6000805b82518210156115e6576001908260051b906115d7602080848a01015193870101516000526004602052604060002090565b828154039055019101906115a6565b91505061137d91925060055403600555565b6000805b825182101561164a576116426001918360051b90611630602080848b01015193880101516000526004602052604060002090565b61163b838254611c93565b9055611c93565b9101906115fc565b611660915061165b90600554611c93565b600555565b6115a2565b939190916116768284876000611ccf565b600094855b84518710156116b7576116af6001918860051b90611630602080848a010151938a0101516000526004602052604060002090565b96019561167b565b6116cc91959492965061165b90600554611c93565b73ffffffffffffffffffffffffffffffffffffffff84161580611730575b156116f6575b50505050565b805160010361171f57906020806117169593015191015191600033611b9b565b388080806116f0565b61172b936000336119ba565b611716565b9360009591936000965b855188101561177a576001908860051b9061176b602080848a010151938a0101516000526004602052604060002090565b8281540390550197019661173a565b61178e919593975095919560055403600555565b6116ea565b919392906117a382868386611ccf565b73ffffffffffffffffffffffffffffffffffffffff831615611883575b73ffffffffffffffffffffffffffffffffffffffff81161580611822575b156117eb575b5050505050565b8451600103611811576020806118079601519201519233611b9b565b38808080806117e4565b61181d949192336119ba565b611807565b94936000939091845b865186101561186b576001908660051b9061185c602080848a010151938b0101516000526004602052604060002090565b8281540390550195019461182b565b61187e9193969792955060055403600555565b6117de565b9392600092835b85518510156118c6576118be6001918660051b90611630602080848a010151938b0101516000526004602052604060002090565b94019361188a565b6118dc91945061165b9096929596600554611c93565b6117c0565b60ff60035460a01c166118f057565b7fd93c06650000000000000000000000000000000000000000000000000000000060005260046000fd5b9081602091031261019e575161061a81610242565b939061061a959373ffffffffffffffffffffffffffffffffffffffff61197c948161196e9416885216602087015260a0604087015260a08601906109cf565b9084820360608601526109cf565b9160808184039101526105aa565b3d156119b5573d9061199b826103b3565b916119a9604051938461036d565b82523d6000602084013e565b606090565b9091949293853b6119ce575b505050505050565b602093611a099160405196879586957fbc197c810000000000000000000000000000000000000000000000000000000087526004870161192f565b0381600073ffffffffffffffffffffffffffffffffffffffff87165af160009181611b29575b50611a915750611a3d61198a565b8051919082611a8a577f57f447ce0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff821660045260246000fd5b9050602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000007fbc197c8100000000000000000000000000000000000000000000000000000000911603611ae657503880808080806119c6565b7f57f447ce0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b611b4c91925060203d602011611b53575b611b44818361036d565b81019061191a565b9038611a2f565b503d611b3a565b919273ffffffffffffffffffffffffffffffffffffffff60a0948161061a9897941685521660208401526040830152606082015281608082015201906105aa565b9091949293853b611bae57505050505050565b602093611be99160405196879586957ff23a6e6100000000000000000000000000000000000000000000000000000000875260048701611b5a565b0381600073ffffffffffffffffffffffffffffffffffffffff87165af160009181611c72575b50611c1d5750611a3d61198a565b7fffffffff000000000000000000000000000000000000000000000000000000007ff23a6e6100000000000000000000000000000000000000000000000000000000911603611ae657503880808080806119c6565b611c8c91925060203d602011611b5357611b44818361036d565b9038611c0f565b91908201809211611ca057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b939192611cda6118e1565b83518151908181036114a2575050600073ffffffffffffffffffffffffffffffffffffffff8616948515159473ffffffffffffffffffffffffffffffffffffffff8516801515935b8351811015611e57578060051b90888887602080868a010151958b01015192611daa575b93600194611d58575b50505001611d22565b611da091611d73611d98926000526000602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b918254611c93565b9055388881611d4f565b50509091611dc68c611d73836000526000602052604060002090565b54828110611dfa578291888e611df1600197968e950391611d73856000526000602052604060002090565b55909450611d46565b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e16600482015260248101919091526044810183905260648101829052608490fd5b509695509650919250506001815114600014611eb05760209081015191810151604080519384529183015233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291819081015b0390a4565b60405133927f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb928291611eab91839091611ef561061a936040845260408401906109cf565b9160208184039101526109cf56fea2646970667358221220565649a8011f817946e9d17eb18a33364fd7e0c45a1b6d15dcc159b048e76a9364736f6c634300081b0033",
"deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461017657806301ffc9a71461017157806302fe53051461016c5780630e89341c1461016757806318160ddd146101625780631f7fdffa1461015d5780632eb2c2d6146101585780633f4ba83a146101535780634e1273f41461014e5780634f558e79146101495780635c975abb146101445780636b20c4541461013f578063715018a61461013a578063731133e9146101355780638456cb59146101305780638da5cb5b1461012b578063a22cb46514610126578063bd85b03914610121578063e985e9c51461011c578063f242432a14610117578063f2fde38b146101125763f5298aca1461010d57600080fd5b6111d6565b611102565b610ffd565b610f81565b610f55565b610e41565b610e0d565b610d81565b610ceb565b610c6b565b610b29565b610b03565b610ad5565b610a14565b61092c565b61089f565b6107c7565b610719565b61061d565b610424565b61026c565b6101e7565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019e57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361019e57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361019e57565b3461019e57604060031936011261019e57602061023961020561017b565b6024356000526000835260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b7fffffffff0000000000000000000000000000000000000000000000000000000081160361019e57565b3461019e57602060031936011261019e5760207fffffffff000000000000000000000000000000000000000000000000000000006004356102ac81610242565b167fd9b67a26000000000000000000000000000000000000000000000000000000008114908115610314575b81156102ea575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386102df565b7f0e89341c00000000000000000000000000000000000000000000000000000000811491506102d8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103ae57604052565b61033e565b67ffffffffffffffff81116103ae57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926103f9826103b3565b91610407604051938461036d565b82948184528183011161019e578281602093846000960137010152565b3461019e57602060031936011261019e5760043567ffffffffffffffff811161019e573660238201121561019e576104669036906024816004013591016103ed565b61046e6114d2565b805167ffffffffffffffff81116103ae576104938161048e6002546112d7565b611521565b602091601f82116001146104f0576104e092600091836104e5575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b600255005b0151905038806104ae565b60026000527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216927f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9160005b8581106105925750836001951061055b575b505050811b01600255005b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080610550565b9192602060018192868501518155019401920161053e565b919082519283825260005b8481106105f45750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016105b5565b90602061061a9281815201906105aa565b90565b3461019e57602060031936011261019e57604051600060025461063f816112d7565b80845290600181169081156106d75750600114610677575b610673836106678185038261036d565b60405191829182610609565b0390f35b91905060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace916000905b8082106106bd57509091508101602001610667610657565b9192600181602092548385880101520191019092916106a5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208086019190915291151560051b840190910191506106679050610657565b3461019e57600060031936011261019e576020600554604051908152f35b67ffffffffffffffff81116103ae5760051b60200190565b9080601f8301121561019e57813561076681610737565b92610774604051948561036d565b81845260208085019260051b82010192831161019e57602001905b82821061079c5750505090565b813581526020918201910161078f565b9080601f8301121561019e5781602061061a933591016103ed565b3461019e57608060031936011261019e576107e061017b565b60243567ffffffffffffffff811161019e5761080090369060040161074f565b60443567ffffffffffffffff811161019e5761082090369060040161074f565b60643567ffffffffffffffff811161019e576108409036906004016107ac565b916108496114d2565b73ffffffffffffffffffffffffffffffffffffffff8416156108705761086e93611665565b005b7f57f447ce00000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b3461019e5760a060031936011261019e576108b861017b565b6108c06101a3565b9060443567ffffffffffffffff811161019e576108e190369060040161074f565b60643567ffffffffffffffff811161019e5761090190369060040161074f565b906084359367ffffffffffffffff851161019e5761092661086e9536906004016107ac565b9361132a565b3461019e57600060031936011261019e576109456114d2565b60035460ff8160a01c16156109a5577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff166003557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b7f8dfc202b0000000000000000000000000000000000000000000000000000000060005260046000fd5b906020808351928381520192019060005b8181106109ed5750505090565b82518452602093840193909201916001016109e0565b90602061061a9281815201906109cf565b3461019e57604060031936011261019e5760043567ffffffffffffffff811161019e573660238201121561019e57806004013590610a5182610737565b91610a5f604051938461036d565b8083526024602084019160051b8301019136831161019e57602401905b828210610abd578360243567ffffffffffffffff811161019e5761067391610aab610ab192369060040161074f565b90611404565b60405191829182610a03565b60208091610aca846101c6565b815201910190610a7c565b3461019e57602060031936011261019e57600435600052600460205260206040600020541515604051908152f35b3461019e57600060031936011261019e57602060ff60035460a01c166040519015158152f35b3461019e57606060031936011261019e57610b4261017b565b60243567ffffffffffffffff811161019e57610b6290369060040161074f565b9060443567ffffffffffffffff811161019e57610b8390369060040161074f565b73ffffffffffffffffffffffffffffffffffffffff82163381141580610c29575b610bf85715610bc95761086e9260405192610bc060208561036d565b60008452611574565b7f01a8351400000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b7fe237d922000000000000000000000000000000000000000000000000000000006000523360045260245260446000fd5b5080600052600160205260ff610c633360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615610ba4565b3461019e57600060031936011261019e57610c846114d2565b600073ffffffffffffffffffffffffffffffffffffffff6003547fffffffffffffffffffffffff00000000000000000000000000000000000000008116600355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461019e57608060031936011261019e57610d0461017b565b6024356044359160643567ffffffffffffffff811161019e57610d2b9036906004016107ac565b91610d346114d2565b73ffffffffffffffffffffffffffffffffffffffff8216156108705761086e93610d7b60405192600184526020840152604083019160018352606084015260808301604052565b91611665565b3461019e57600060031936011261019e57610d9a6114d2565b610da26118e1565b740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff60035416176003557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b3461019e57600060031936011261019e57602073ffffffffffffffffffffffffffffffffffffffff60035416604051908152f35b3461019e57604060031936011261019e57610e5a61017b565b60243580151580820361019e5773ffffffffffffffffffffffffffffffffffffffff8316928315610f2657610ebc9033600052600160205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b9060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691161790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160405180610f21339482919091602081019215159052565b0390a3005b7fced3e10000000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b3461019e57602060031936011261019e5760043560005260046020526020604060002054604051908152f35b3461019e57604060031936011261019e57602060ff610ff1610fa161017b565b73ffffffffffffffffffffffffffffffffffffffff610fbe6101a3565b91166000526001845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b3461019e5760a060031936011261019e5761101661017b565b61101e6101a3565b604435906064359260843567ffffffffffffffff811161019e576110469036906004016107ac565b9273ffffffffffffffffffffffffffffffffffffffff821633811415806110c0575b610bf85773ffffffffffffffffffffffffffffffffffffffff8416156108705715610bc95761086e946110b860405192600184526020840152604083019160018352606084015260808301604052565b929091611793565b5080600052600160205260ff6110fa3360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615611068565b3461019e57602060031936011261019e5773ffffffffffffffffffffffffffffffffffffffff61113061017b565b6111386114d2565b1680156111a75773ffffffffffffffffffffffffffffffffffffffff600354827fffffffffffffffffffffffff0000000000000000000000000000000000000000821617600355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f1e4fbdf700000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b3461019e57606060031936011261019e576111ef61017b565b6044359060243573ffffffffffffffffffffffffffffffffffffffff8216338114158061125b575b610bf85715610bc95761086e9261124b60405192600184526020840152604083019160018352606084015260808301604052565b9060405192610bc060208561036d565b5080600052600160205260ff6112953360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615611217565b6112d391600052600060205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5490565b90600182811c92168015611320575b60208310146112f157565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916112e6565b9392919073ffffffffffffffffffffffffffffffffffffffff8516338114158061137f575b610bf85773ffffffffffffffffffffffffffffffffffffffff8216156108705715610bc95761137d94611793565b565b5080600052600160205260ff6113b93360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54161561134f565b80518210156113d55760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919091805183518082036114a25750508051907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061145a61144484610737565b93611452604051958661036d565b808552610737565b0136602084013760005b815181101561149b578061148a60019260051b602080828701015191890101519061129d565b61149482866113c1565b5201611464565b5090925050565b7f5b0599910000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b73ffffffffffffffffffffffffffffffffffffffff6003541633036114f357565b7f118cdaa7000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b601f811161152d575050565b60026000526020600020906020601f840160051c8301931061156a575b601f0160051c01905b81811061155e575050565b60008155600101611553565b909150819061154a565b73ffffffffffffffffffffffffffffffffffffffff919294935061159b8584600084611ccf565b16156115f8575b6000805b82518210156115e6576001908260051b906115d7602080848a01015193870101516000526004602052604060002090565b828154039055019101906115a6565b91505061137d91925060055403600555565b6000805b825182101561164a576116426001918360051b90611630602080848b01015193880101516000526004602052604060002090565b61163b838254611c93565b9055611c93565b9101906115fc565b611660915061165b90600554611c93565b600555565b6115a2565b939190916116768284876000611ccf565b600094855b84518710156116b7576116af6001918860051b90611630602080848a010151938a0101516000526004602052604060002090565b96019561167b565b6116cc91959492965061165b90600554611c93565b73ffffffffffffffffffffffffffffffffffffffff84161580611730575b156116f6575b50505050565b805160010361171f57906020806117169593015191015191600033611b9b565b388080806116f0565b61172b936000336119ba565b611716565b9360009591936000965b855188101561177a576001908860051b9061176b602080848a010151938a0101516000526004602052604060002090565b8281540390550197019661173a565b61178e919593975095919560055403600555565b6116ea565b919392906117a382868386611ccf565b73ffffffffffffffffffffffffffffffffffffffff831615611883575b73ffffffffffffffffffffffffffffffffffffffff81161580611822575b156117eb575b5050505050565b8451600103611811576020806118079601519201519233611b9b565b38808080806117e4565b61181d949192336119ba565b611807565b94936000939091845b865186101561186b576001908660051b9061185c602080848a010151938b0101516000526004602052604060002090565b8281540390550195019461182b565b61187e9193969792955060055403600555565b6117de565b9392600092835b85518510156118c6576118be6001918660051b90611630602080848a010151938b0101516000526004602052604060002090565b94019361188a565b6118dc91945061165b9096929596600554611c93565b6117c0565b60ff60035460a01c166118f057565b7fd93c06650000000000000000000000000000000000000000000000000000000060005260046000fd5b9081602091031261019e575161061a81610242565b939061061a959373ffffffffffffffffffffffffffffffffffffffff61197c948161196e9416885216602087015260a0604087015260a08601906109cf565b9084820360608601526109cf565b9160808184039101526105aa565b3d156119b5573d9061199b826103b3565b916119a9604051938461036d565b82523d6000602084013e565b606090565b9091949293853b6119ce575b505050505050565b602093611a099160405196879586957fbc197c810000000000000000000000000000000000000000000000000000000087526004870161192f565b0381600073ffffffffffffffffffffffffffffffffffffffff87165af160009181611b29575b50611a915750611a3d61198a565b8051919082611a8a577f57f447ce0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff821660045260246000fd5b9050602001fd5b7fffffffff000000000000000000000000000000000000000000000000000000007fbc197c8100000000000000000000000000000000000000000000000000000000911603611ae657503880808080806119c6565b7f57f447ce0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b611b4c91925060203d602011611b53575b611b44818361036d565b81019061191a565b9038611a2f565b503d611b3a565b919273ffffffffffffffffffffffffffffffffffffffff60a0948161061a9897941685521660208401526040830152606082015281608082015201906105aa565b9091949293853b611bae57505050505050565b602093611be99160405196879586957ff23a6e6100000000000000000000000000000000000000000000000000000000875260048701611b5a565b0381600073ffffffffffffffffffffffffffffffffffffffff87165af160009181611c72575b50611c1d5750611a3d61198a565b7fffffffff000000000000000000000000000000000000000000000000000000007ff23a6e6100000000000000000000000000000000000000000000000000000000911603611ae657503880808080806119c6565b611c8c91925060203d602011611b5357611b44818361036d565b9038611c0f565b91908201809211611ca057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b939192611cda6118e1565b83518151908181036114a2575050600073ffffffffffffffffffffffffffffffffffffffff8616948515159473ffffffffffffffffffffffffffffffffffffffff8516801515935b8351811015611e57578060051b90888887602080868a010151958b01015192611daa575b93600194611d58575b50505001611d22565b611da091611d73611d98926000526000602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b918254611c93565b9055388881611d4f565b50509091611dc68c611d73836000526000602052604060002090565b54828110611dfa578291888e611df1600197968e950391611d73856000526000602052604060002090565b55909450611d46565b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e16600482015260248101919091526044810183905260648101829052608490fd5b509695509650919250506001815114600014611eb05760209081015191810151604080519384529183015233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291819081015b0390a4565b60405133927f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb928291611eab91839091611ef561061a936040845260408401906109cf565b9160208184039101526109cf56fea2646970667358221220565649a8011f817946e9d17eb18a33364fd7e0c45a1b6d15dcc159b048e76a9364736f6c634300081b0033",
"linkReferences": {},
"deployedLinkReferences": {}
}