diff --git a/artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/OZERC20Mock.json b/artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/OZERC20Mock.json index 03b6c3988..9a34a6380 100644 --- a/artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/OZERC20Mock.json +++ b/artifacts/contracts/openzeppelin/ERC-20/ERC20Mock.sol/OZERC20Mock.json @@ -346,8 +346,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801562000010575f80fd5b5060405162000a4e38038062000a4e83398101604081905262000033916200011e565b818160036200004383826200020e565b5060046200005282826200020e565b5050505050620002da565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000081575f80fd5b81516001600160401b03808211156200009e576200009e6200005d565b604051601f8301601f19908116603f01168101908282118183101715620000c957620000c96200005d565b8160405283815260209250866020858801011115620000e6575f80fd5b5f91505b83821015620001095785820183015181830184015290820190620000ea565b5f602085830101528094505050505092915050565b5f806040838503121562000130575f80fd5b82516001600160401b038082111562000147575f80fd5b620001558683870162000071565b935060208501519150808211156200016b575f80fd5b506200017a8582860162000071565b9150509250929050565b600181811c908216806200019957607f821691505b602082108103620001b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200020957805f5260205f20601f840160051c81016020851015620001e55750805b601f840160051c820191505b8181101562000206575f8155600101620001f1565b50505b505050565b81516001600160401b038111156200022a576200022a6200005d565b62000242816200023b845462000184565b84620001be565b602080601f83116001811462000278575f8415620002605750858301515b5f19600386901b1c1916600185901b178555620002d2565b5f85815260208120601f198616915b82811015620002a85788860151825594840194600190910190840162000287565b5085821015620002c657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61076680620002e85f395ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c806340c10f191161006357806340c10f191461011457806370a082311461012957806395d89b4114610151578063a9059cbb14610159578063dd62ed3e1461016c575f80fd5b806306fdde031461009f578063095ea7b3146100bd57806318160ddd146100e057806323b872dd146100f2578063313ce56714610105575b5f80fd5b6100a76101a4565b6040516100b491906105c0565b60405180910390f35b6100d06100cb366004610627565b610234565b60405190151581526020016100b4565b6002545b6040519081526020016100b4565b6100d061010036600461064f565b61024d565b604051601281526020016100b4565b610127610122366004610627565b610270565b005b6100e4610137366004610688565b6001600160a01b03165f9081526020819052604090205490565b6100a7610289565b6100d0610167366004610627565b610298565b6100e461017a3660046106a8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101b3906106d9565b80601f01602080910402602001604051908101604052809291908181526020018280546101df906106d9565b801561022a5780601f106102015761010080835404028352916020019161022a565b820191905f5260205f20905b81548152906001019060200180831161020d57829003601f168201915b5050505050905090565b5f336102418185856102a5565b60019150505b92915050565b5f3361025a8582856102b7565b610265858585610337565b506001949350505050565b5f811161027b575f80fd5b6102858282610394565b5050565b6060600480546101b3906106d9565b5f33610241818585610337565b6102b283838360016103c8565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610331578181101561032357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61033184848484035f6103c8565b50505050565b6001600160a01b03831661036057604051634b637e8f60e11b81525f600482015260240161031a565b6001600160a01b0382166103895760405163ec442f0560e01b81525f600482015260240161031a565b6102b283838361049a565b6001600160a01b0382166103bd5760405163ec442f0560e01b81525f600482015260240161031a565b6102855f838361049a565b6001600160a01b0384166103f15760405163e602df0560e01b81525f600482015260240161031a565b6001600160a01b03831661041a57604051634a1406b160e11b81525f600482015260240161031a565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561033157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161048c91815260200190565b60405180910390a350505050565b6001600160a01b0383166104c4578060025f8282546104b99190610711565b909155506105349050565b6001600160a01b0383165f90815260208190526040902054818110156105165760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105505760028054829003905561056e565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b391815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b818110156105ec578581018301518582016040015282016105d0565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610622575f80fd5b919050565b5f8060408385031215610638575f80fd5b6106418361060c565b946020939093013593505050565b5f805f60608486031215610661575f80fd5b61066a8461060c565b92506106786020850161060c565b9150604084013590509250925092565b5f60208284031215610698575f80fd5b6106a18261060c565b9392505050565b5f80604083850312156106b9575f80fd5b6106c28361060c565b91506106d06020840161060c565b90509250929050565b600181811c908216806106ed57607f821691505b60208210810361070b57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561024757634e487b7160e01b5f52601160045260245ffdfea264697066735822122084a88df81061a41a0f26a7a890aae57f2a1abecb844c966088f2a78c29f8970364736f6c63430008180033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061009b575f3560e01c806340c10f191161006357806340c10f191461011457806370a082311461012957806395d89b4114610151578063a9059cbb14610159578063dd62ed3e1461016c575f80fd5b806306fdde031461009f578063095ea7b3146100bd57806318160ddd146100e057806323b872dd146100f2578063313ce56714610105575b5f80fd5b6100a76101a4565b6040516100b491906105c0565b60405180910390f35b6100d06100cb366004610627565b610234565b60405190151581526020016100b4565b6002545b6040519081526020016100b4565b6100d061010036600461064f565b61024d565b604051601281526020016100b4565b610127610122366004610627565b610270565b005b6100e4610137366004610688565b6001600160a01b03165f9081526020819052604090205490565b6100a7610289565b6100d0610167366004610627565b610298565b6100e461017a3660046106a8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101b3906106d9565b80601f01602080910402602001604051908101604052809291908181526020018280546101df906106d9565b801561022a5780601f106102015761010080835404028352916020019161022a565b820191905f5260205f20905b81548152906001019060200180831161020d57829003601f168201915b5050505050905090565b5f336102418185856102a5565b60019150505b92915050565b5f3361025a8582856102b7565b610265858585610337565b506001949350505050565b5f811161027b575f80fd5b6102858282610394565b5050565b6060600480546101b3906106d9565b5f33610241818585610337565b6102b283838360016103c8565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610331578181101561032357604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61033184848484035f6103c8565b50505050565b6001600160a01b03831661036057604051634b637e8f60e11b81525f600482015260240161031a565b6001600160a01b0382166103895760405163ec442f0560e01b81525f600482015260240161031a565b6102b283838361049a565b6001600160a01b0382166103bd5760405163ec442f0560e01b81525f600482015260240161031a565b6102855f838361049a565b6001600160a01b0384166103f15760405163e602df0560e01b81525f600482015260240161031a565b6001600160a01b03831661041a57604051634a1406b160e11b81525f600482015260240161031a565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561033157826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161048c91815260200190565b60405180910390a350505050565b6001600160a01b0383166104c4578060025f8282546104b99190610711565b909155506105349050565b6001600160a01b0383165f90815260208190526040902054818110156105165760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031a565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105505760028054829003905561056e565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b391815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b818110156105ec578581018301518582016040015282016105d0565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610622575f80fd5b919050565b5f8060408385031215610638575f80fd5b6106418361060c565b946020939093013593505050565b5f805f60608486031215610661575f80fd5b61066a8461060c565b92506106786020850161060c565b9150604084013590509250925092565b5f60208284031215610698575f80fd5b6106a18261060c565b9392505050565b5f80604083850312156106b9575f80fd5b6106c28361060c565b91506106d06020840161060c565b90509250929050565b600181811c908216806106ed57607f821691505b60208210810361070b57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561024757634e487b7160e01b5f52601160045260245ffdfea264697066735822122084a88df81061a41a0f26a7a890aae57f2a1abecb844c966088f2a78c29f8970364736f6c63430008180033", + "bytecode": "0x608060405234801562000010575f80fd5b5060405162000a4f38038062000a4f83398101604081905262000033916200011e565b818160036200004383826200020e565b5060046200005282826200020e565b5050505050620002da565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000081575f80fd5b81516001600160401b03808211156200009e576200009e6200005d565b604051601f8301601f19908116603f01168101908282118183101715620000c957620000c96200005d565b8160405283815260209250866020858801011115620000e6575f80fd5b5f91505b83821015620001095785820183015181830184015290820190620000ea565b5f602085830101528094505050505092915050565b5f806040838503121562000130575f80fd5b82516001600160401b038082111562000147575f80fd5b620001558683870162000071565b935060208501519150808211156200016b575f80fd5b506200017a8582860162000071565b9150509250929050565b600181811c908216806200019957607f821691505b602082108103620001b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200020957805f5260205f20601f840160051c81016020851015620001e55750805b601f840160051c820191505b8181101562000206575f8155600101620001f1565b50505b505050565b81516001600160401b038111156200022a576200022a6200005d565b62000242816200023b845462000184565b84620001be565b602080601f83116001811462000278575f8415620002605750858301515b5f19600386901b1c1916600185901b178555620002d2565b5f85815260208120601f198616915b82811015620002a85788860151825594840194600190910190840162000287565b5085821015620002c657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61076780620002e85f395ff3fe608060405234801561000f575f80fd5b506004361061009b575f3560e01c806340c10f191161006357806340c10f191461011457806370a082311461012957806395d89b4114610151578063a9059cbb14610159578063dd62ed3e1461016c575f80fd5b806306fdde031461009f578063095ea7b3146100bd57806318160ddd146100e057806323b872dd146100f2578063313ce56714610105575b5f80fd5b6100a76101a4565b6040516100b491906105c1565b60405180910390f35b6100d06100cb366004610628565b610234565b60405190151581526020016100b4565b6002545b6040519081526020016100b4565b6100d0610100366004610650565b61024d565b604051601281526020016100b4565b610127610122366004610628565b610270565b005b6100e4610137366004610689565b6001600160a01b03165f9081526020819052604090205490565b6100a7610289565b6100d0610167366004610628565b610298565b6100e461017a3660046106a9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101b3906106da565b80601f01602080910402602001604051908101604052809291908181526020018280546101df906106da565b801561022a5780601f106102015761010080835404028352916020019161022a565b820191905f5260205f20905b81548152906001019060200180831161020d57829003601f168201915b5050505050905090565b5f336102418185856102a5565b60019150505b92915050565b5f3361025a8582856102b7565b610265858585610338565b506001949350505050565b5f811161027b575f80fd5b6102858282610395565b5050565b6060600480546101b3906106da565b5f33610241818585610338565b6102b283838360016103c9565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610332578181101561032457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61033284848484035f6103c9565b50505050565b6001600160a01b03831661036157604051634b637e8f60e11b81525f600482015260240161031b565b6001600160a01b03821661038a5760405163ec442f0560e01b81525f600482015260240161031b565b6102b283838361049b565b6001600160a01b0382166103be5760405163ec442f0560e01b81525f600482015260240161031b565b6102855f838361049b565b6001600160a01b0384166103f25760405163e602df0560e01b81525f600482015260240161031b565b6001600160a01b03831661041b57604051634a1406b160e11b81525f600482015260240161031b565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561033257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161048d91815260200190565b60405180910390a350505050565b6001600160a01b0383166104c5578060025f8282546104ba9190610712565b909155506105359050565b6001600160a01b0383165f90815260208190526040902054818110156105175760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031b565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105515760028054829003905561056f565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b491815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b818110156105ed578581018301518582016040015282016105d1565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610623575f80fd5b919050565b5f8060408385031215610639575f80fd5b6106428361060d565b946020939093013593505050565b5f805f60608486031215610662575f80fd5b61066b8461060d565b92506106796020850161060d565b9150604084013590509250925092565b5f60208284031215610699575f80fd5b6106a28261060d565b9392505050565b5f80604083850312156106ba575f80fd5b6106c38361060d565b91506106d16020840161060d565b90509250929050565b600181811c908216806106ee57607f821691505b60208210810361070c57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561024757634e487b7160e01b5f52601160045260245ffdfea264697066735822122008674f5514070af3441bde15a4ba3d23987cdc8624e62284e5c16d9e6bf497f064736f6c63430008180033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061009b575f3560e01c806340c10f191161006357806340c10f191461011457806370a082311461012957806395d89b4114610151578063a9059cbb14610159578063dd62ed3e1461016c575f80fd5b806306fdde031461009f578063095ea7b3146100bd57806318160ddd146100e057806323b872dd146100f2578063313ce56714610105575b5f80fd5b6100a76101a4565b6040516100b491906105c1565b60405180910390f35b6100d06100cb366004610628565b610234565b60405190151581526020016100b4565b6002545b6040519081526020016100b4565b6100d0610100366004610650565b61024d565b604051601281526020016100b4565b610127610122366004610628565b610270565b005b6100e4610137366004610689565b6001600160a01b03165f9081526020819052604090205490565b6100a7610289565b6100d0610167366004610628565b610298565b6100e461017a3660046106a9565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101b3906106da565b80601f01602080910402602001604051908101604052809291908181526020018280546101df906106da565b801561022a5780601f106102015761010080835404028352916020019161022a565b820191905f5260205f20905b81548152906001019060200180831161020d57829003601f168201915b5050505050905090565b5f336102418185856102a5565b60019150505b92915050565b5f3361025a8582856102b7565b610265858585610338565b506001949350505050565b5f811161027b575f80fd5b6102858282610395565b5050565b6060600480546101b3906106da565b5f33610241818585610338565b6102b283838360016103c9565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610332578181101561032457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61033284848484035f6103c9565b50505050565b6001600160a01b03831661036157604051634b637e8f60e11b81525f600482015260240161031b565b6001600160a01b03821661038a5760405163ec442f0560e01b81525f600482015260240161031b565b6102b283838361049b565b6001600160a01b0382166103be5760405163ec442f0560e01b81525f600482015260240161031b565b6102855f838361049b565b6001600160a01b0384166103f25760405163e602df0560e01b81525f600482015260240161031b565b6001600160a01b03831661041b57604051634a1406b160e11b81525f600482015260240161031b565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561033257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161048d91815260200190565b60405180910390a350505050565b6001600160a01b0383166104c5578060025f8282546104ba9190610712565b909155506105359050565b6001600160a01b0383165f90815260208190526040902054818110156105175760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161031b565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166105515760028054829003905561056f565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516105b491815260200190565b60405180910390a3505050565b5f602080835283518060208501525f5b818110156105ed578581018301518582016040015282016105d1565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610623575f80fd5b919050565b5f8060408385031215610639575f80fd5b6106428361060d565b946020939093013593505050565b5f805f60608486031215610662575f80fd5b61066b8461060d565b92506106796020850161060d565b9150604084013590509250925092565b5f60208284031215610699575f80fd5b6106a28261060d565b9392505050565b5f80604083850312156106ba575f80fd5b6106c38361060d565b91506106d16020840161060d565b90509250929050565b600181811c908216806106ee57607f821691505b60208210810361070c57634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561024757634e487b7160e01b5f52601160045260245ffdfea264697066735822122008674f5514070af3441bde15a4ba3d23987cdc8624e62284e5c16d9e6bf497f064736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/OZERC721Mock.json b/artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/OZERC721Mock.json index 448af94d4..03fb716f4 100644 --- a/artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/OZERC721Mock.json +++ b/artifacts/contracts/openzeppelin/ERC-721/ERC721Mock.sol/OZERC721Mock.json @@ -471,8 +471,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801562000010575f80fd5b50604051620012743803806200127483398101604081905262000033916200011d565b81815f6200004283826200020d565b5060016200005182826200020d565b5050505050620002d9565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000080575f80fd5b81516001600160401b03808211156200009d576200009d6200005c565b604051601f8301601f19908116603f01168101908282118183101715620000c857620000c86200005c565b8160405283815260209250866020858801011115620000e5575f80fd5b5f91505b83821015620001085785820183015181830184015290820190620000e9565b5f602085830101528094505050505092915050565b5f80604083850312156200012f575f80fd5b82516001600160401b038082111562000146575f80fd5b620001548683870162000070565b935060208501519150808211156200016a575f80fd5b50620001798582860162000070565b9150509250929050565b600181811c908216806200019857607f821691505b602082108103620001b757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200020857805f5260205f20601f840160051c81016020851015620001e45750805b601f840160051c820191505b8181101562000205575f8155600101620001f0565b50505b505050565b81516001600160401b038111156200022957620002296200005c565b62000241816200023a845462000183565b84620001bd565b602080601f83116001811462000277575f84156200025f5750858301515b5f19600386901b1c1916600185901b178555620002d1565b5f85815260208120601f198616915b82811015620002a75788860151825594840194600190910190840162000286565b5085821015620002c557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b610f8d80620002e75f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80636352211e11610088578063a22cb46511610063578063a22cb465146101db578063b88d4fde146101ee578063c87b56dd14610201578063e985e9c514610214575f80fd5b80636352211e1461019f57806370a08231146101b257806395d89b41146101d3575f80fd5b8063095ea7b3116100c3578063095ea7b31461015157806323b872dd1461016657806340c10f191461017957806342842e0e1461018c575f80fd5b806301ffc9a7146100e957806306fdde0314610111578063081812fc14610126575b5f80fd5b6100fc6100f7366004610c22565b61024f565b60405190151581526020015b60405180910390f35b6101196102a0565b6040516101089190610c8a565b610139610134366004610c9c565b61032f565b6040516001600160a01b039091168152602001610108565b61016461015f366004610cce565b610356565b005b610164610174366004610cf6565b610365565b610164610187366004610cce565b6103f3565b61016461019a366004610cf6565b6103fd565b6101396101ad366004610c9c565b61041c565b6101c56101c0366004610d2f565b610426565b604051908152602001610108565b61011961046b565b6101646101e9366004610d48565b61047a565b6101646101fc366004610d95565b610485565b61011961020f366004610c9c565b61049c565b6100fc610222366004610e6a565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166380ac58cd60e01b148061027f57506001600160e01b03198216635b5e139f60e01b145b8061029a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f80546102ae90610e9b565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610e9b565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f6103398261050d565b505f828152600460205260409020546001600160a01b031661029a565b610361828233610545565b5050565b6001600160a01b03821661039357604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f61039f838333610552565b9050836001600160a01b0316816001600160a01b0316146103ed576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161038a565b50505050565b6103618282610651565b61041783838360405180602001604052805f815250610485565b505050565b5f61029a8261050d565b5f6001600160a01b038216610450576040516322718ad960e21b81525f600482015260240161038a565b506001600160a01b03165f9081526003602052604090205490565b6060600180546102ae90610e9b565b6103613383836106b2565b610490848484610365565b6103ed84848484610750565b60606104a78261050d565b505f6104bd60408051602081019091525f815290565b90505f8151116104db5760405180602001604052805f815250610506565b806104e584610876565b6040516020016104f6929190610ed3565b6040516020818303038152906040525b9392505050565b5f818152600260205260408120546001600160a01b03168061029a57604051637e27328960e01b81526004810184905260240161038a565b6104178383836001610913565b5f828152600260205260408120546001600160a01b039081169083161561057e5761057e818486610a42565b6001600160a01b038116156105b8576105995f855f80610913565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156105e6576001600160a01b0385165f908152600360205260409020805460010190555b5f84815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661067a57604051633250574960e11b81525f600482015260240161038a565b5f61068683835f610552565b90506001600160a01b03811615610417576040516339e3563760e11b81525f600482015260240161038a565b6001600160a01b0382166106e457604051630b61174360e31b81526001600160a01b038316600482015260240161038a565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103ed57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610792903390889087908790600401610f01565b6020604051808303815f875af19250505080156107cc575060408051601f3d908101601f191682019092526107c991810190610f3c565b60015b610833573d8080156107f9576040519150601f19603f3d011682016040523d82523d5f602084013e6107fe565b606091505b5080515f0361082b57604051633250574960e11b81526001600160a01b038516600482015260240161038a565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461086f57604051633250574960e11b81526001600160a01b038516600482015260240161038a565b5050505050565b60605f61088283610aa6565b60010190505f8167ffffffffffffffff8111156108a1576108a1610d81565b6040519080825280601f01601f1916602001820160405280156108cb576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846108d557509392505050565b808061092757506001600160a01b03821615155b15610a06575f6109368461050d565b90506001600160a01b038316158015906109625750826001600160a01b0316816001600160a01b031614155b801561099357506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b156109bc5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161038a565b8115610a045783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610a4d838383610b87565b610417576001600160a01b038316610a7b57604051637e27328960e01b81526004810182905260240161038a565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161038a565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610aee577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610b1a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b3857662386f26fc10000830492506010015b6305f5e1008310610b50576305f5e100830492506008015b6127108310610b6457612710830492506004015b60648310610b76576064830492506002015b600a831061029a5760010192915050565b5f6001600160a01b03831615801590610c025750826001600160a01b0316846001600160a01b03161480610bdf57506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b80610c0257505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610c1f575f80fd5b50565b5f60208284031215610c32575f80fd5b813561050681610c0a565b5f5b83811015610c57578181015183820152602001610c3f565b50505f910152565b5f8151808452610c76816020860160208601610c3d565b601f01601f19169290920160200192915050565b602081525f6105066020830184610c5f565b5f60208284031215610cac575f80fd5b5035919050565b80356001600160a01b0381168114610cc9575f80fd5b919050565b5f8060408385031215610cdf575f80fd5b610ce883610cb3565b946020939093013593505050565b5f805f60608486031215610d08575f80fd5b610d1184610cb3565b9250610d1f60208501610cb3565b9150604084013590509250925092565b5f60208284031215610d3f575f80fd5b61050682610cb3565b5f8060408385031215610d59575f80fd5b610d6283610cb3565b915060208301358015158114610d76575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610da8575f80fd5b610db185610cb3565b9350610dbf60208601610cb3565b925060408501359150606085013567ffffffffffffffff80821115610de2575f80fd5b818701915087601f830112610df5575f80fd5b813581811115610e0757610e07610d81565b604051601f8201601f19908116603f01168101908382118183101715610e2f57610e2f610d81565b816040528281528a6020848701011115610e47575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b5f8060408385031215610e7b575f80fd5b610e8483610cb3565b9150610e9260208401610cb3565b90509250929050565b600181811c90821680610eaf57607f821691505b602082108103610ecd57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8351610ee4818460208801610c3d565b835190830190610ef8818360208801610c3d565b01949350505050565b5f6001600160a01b03808716835280861660208401525083604083015260806060830152610f326080830184610c5f565b9695505050505050565b5f60208284031215610f4c575f80fd5b815161050681610c0a56fea26469706673582212201c3f43711bdbae92c86c5f31bc94cb0310652d089b0efba65e34230f0d67962d64736f6c63430008180033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80636352211e11610088578063a22cb46511610063578063a22cb465146101db578063b88d4fde146101ee578063c87b56dd14610201578063e985e9c514610214575f80fd5b80636352211e1461019f57806370a08231146101b257806395d89b41146101d3575f80fd5b8063095ea7b3116100c3578063095ea7b31461015157806323b872dd1461016657806340c10f191461017957806342842e0e1461018c575f80fd5b806301ffc9a7146100e957806306fdde0314610111578063081812fc14610126575b5f80fd5b6100fc6100f7366004610c22565b61024f565b60405190151581526020015b60405180910390f35b6101196102a0565b6040516101089190610c8a565b610139610134366004610c9c565b61032f565b6040516001600160a01b039091168152602001610108565b61016461015f366004610cce565b610356565b005b610164610174366004610cf6565b610365565b610164610187366004610cce565b6103f3565b61016461019a366004610cf6565b6103fd565b6101396101ad366004610c9c565b61041c565b6101c56101c0366004610d2f565b610426565b604051908152602001610108565b61011961046b565b6101646101e9366004610d48565b61047a565b6101646101fc366004610d95565b610485565b61011961020f366004610c9c565b61049c565b6100fc610222366004610e6a565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166380ac58cd60e01b148061027f57506001600160e01b03198216635b5e139f60e01b145b8061029a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f80546102ae90610e9b565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610e9b565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f6103398261050d565b505f828152600460205260409020546001600160a01b031661029a565b610361828233610545565b5050565b6001600160a01b03821661039357604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f61039f838333610552565b9050836001600160a01b0316816001600160a01b0316146103ed576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161038a565b50505050565b6103618282610651565b61041783838360405180602001604052805f815250610485565b505050565b5f61029a8261050d565b5f6001600160a01b038216610450576040516322718ad960e21b81525f600482015260240161038a565b506001600160a01b03165f9081526003602052604090205490565b6060600180546102ae90610e9b565b6103613383836106b2565b610490848484610365565b6103ed84848484610750565b60606104a78261050d565b505f6104bd60408051602081019091525f815290565b90505f8151116104db5760405180602001604052805f815250610506565b806104e584610876565b6040516020016104f6929190610ed3565b6040516020818303038152906040525b9392505050565b5f818152600260205260408120546001600160a01b03168061029a57604051637e27328960e01b81526004810184905260240161038a565b6104178383836001610913565b5f828152600260205260408120546001600160a01b039081169083161561057e5761057e818486610a42565b6001600160a01b038116156105b8576105995f855f80610913565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156105e6576001600160a01b0385165f908152600360205260409020805460010190555b5f84815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661067a57604051633250574960e11b81525f600482015260240161038a565b5f61068683835f610552565b90506001600160a01b03811615610417576040516339e3563760e11b81525f600482015260240161038a565b6001600160a01b0382166106e457604051630b61174360e31b81526001600160a01b038316600482015260240161038a565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156103ed57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610792903390889087908790600401610f01565b6020604051808303815f875af19250505080156107cc575060408051601f3d908101601f191682019092526107c991810190610f3c565b60015b610833573d8080156107f9576040519150601f19603f3d011682016040523d82523d5f602084013e6107fe565b606091505b5080515f0361082b57604051633250574960e11b81526001600160a01b038516600482015260240161038a565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461086f57604051633250574960e11b81526001600160a01b038516600482015260240161038a565b5050505050565b60605f61088283610aa6565b60010190505f8167ffffffffffffffff8111156108a1576108a1610d81565b6040519080825280601f01601f1916602001820160405280156108cb576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846108d557509392505050565b808061092757506001600160a01b03821615155b15610a06575f6109368461050d565b90506001600160a01b038316158015906109625750826001600160a01b0316816001600160a01b031614155b801561099357506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b156109bc5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161038a565b8115610a045783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610a4d838383610b87565b610417576001600160a01b038316610a7b57604051637e27328960e01b81526004810182905260240161038a565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161038a565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610aee577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610b1a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b3857662386f26fc10000830492506010015b6305f5e1008310610b50576305f5e100830492506008015b6127108310610b6457612710830492506004015b60648310610b76576064830492506002015b600a831061029a5760010192915050565b5f6001600160a01b03831615801590610c025750826001600160a01b0316846001600160a01b03161480610bdf57506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b80610c0257505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610c1f575f80fd5b50565b5f60208284031215610c32575f80fd5b813561050681610c0a565b5f5b83811015610c57578181015183820152602001610c3f565b50505f910152565b5f8151808452610c76816020860160208601610c3d565b601f01601f19169290920160200192915050565b602081525f6105066020830184610c5f565b5f60208284031215610cac575f80fd5b5035919050565b80356001600160a01b0381168114610cc9575f80fd5b919050565b5f8060408385031215610cdf575f80fd5b610ce883610cb3565b946020939093013593505050565b5f805f60608486031215610d08575f80fd5b610d1184610cb3565b9250610d1f60208501610cb3565b9150604084013590509250925092565b5f60208284031215610d3f575f80fd5b61050682610cb3565b5f8060408385031215610d59575f80fd5b610d6283610cb3565b915060208301358015158114610d76575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610da8575f80fd5b610db185610cb3565b9350610dbf60208601610cb3565b925060408501359150606085013567ffffffffffffffff80821115610de2575f80fd5b818701915087601f830112610df5575f80fd5b813581811115610e0757610e07610d81565b604051601f8201601f19908116603f01168101908382118183101715610e2f57610e2f610d81565b816040528281528a6020848701011115610e47575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b5f8060408385031215610e7b575f80fd5b610e8483610cb3565b9150610e9260208401610cb3565b90509250929050565b600181811c90821680610eaf57607f821691505b602082108103610ecd57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8351610ee4818460208801610c3d565b835190830190610ef8818360208801610c3d565b01949350505050565b5f6001600160a01b03808716835280861660208401525083604083015260806060830152610f326080830184610c5f565b9695505050505050565b5f60208284031215610f4c575f80fd5b815161050681610c0a56fea26469706673582212201c3f43711bdbae92c86c5f31bc94cb0310652d089b0efba65e34230f0d67962d64736f6c63430008180033", + "bytecode": "0x608060405234801562000010575f80fd5b50604051620012773803806200127783398101604081905262000033916200011d565b81815f6200004283826200020d565b5060016200005182826200020d565b5050505050620002d9565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011262000080575f80fd5b81516001600160401b03808211156200009d576200009d6200005c565b604051601f8301601f19908116603f01168101908282118183101715620000c857620000c86200005c565b8160405283815260209250866020858801011115620000e5575f80fd5b5f91505b83821015620001085785820183015181830184015290820190620000e9565b5f602085830101528094505050505092915050565b5f80604083850312156200012f575f80fd5b82516001600160401b038082111562000146575f80fd5b620001548683870162000070565b935060208501519150808211156200016a575f80fd5b50620001798582860162000070565b9150509250929050565b600181811c908216806200019857607f821691505b602082108103620001b757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200020857805f5260205f20601f840160051c81016020851015620001e45750805b601f840160051c820191505b8181101562000205575f8155600101620001f0565b50505b505050565b81516001600160401b038111156200022957620002296200005c565b62000241816200023a845462000183565b84620001bd565b602080601f83116001811462000277575f84156200025f5750858301515b5f19600386901b1c1916600185901b178555620002d1565b5f85815260208120601f198616915b82811015620002a75788860151825594840194600190910190840162000286565b5085821015620002c557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b610f9080620002e75f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80636352211e11610088578063a22cb46511610063578063a22cb465146101db578063b88d4fde146101ee578063c87b56dd14610201578063e985e9c514610214575f80fd5b80636352211e1461019f57806370a08231146101b257806395d89b41146101d3575f80fd5b8063095ea7b3116100c3578063095ea7b31461015157806323b872dd1461016657806340c10f191461017957806342842e0e1461018c575f80fd5b806301ffc9a7146100e957806306fdde0314610111578063081812fc14610126575b5f80fd5b6100fc6100f7366004610c25565b61024f565b60405190151581526020015b60405180910390f35b6101196102a0565b6040516101089190610c8d565b610139610134366004610c9f565b61032f565b6040516001600160a01b039091168152602001610108565b61016461015f366004610cd1565b610356565b005b610164610174366004610cf9565b610365565b610164610187366004610cd1565b6103f3565b61016461019a366004610cf9565b6103fd565b6101396101ad366004610c9f565b61041c565b6101c56101c0366004610d32565b610426565b604051908152602001610108565b61011961046b565b6101646101e9366004610d4b565b61047a565b6101646101fc366004610d98565b610485565b61011961020f366004610c9f565b61049d565b6100fc610222366004610e6d565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166380ac58cd60e01b148061027f57506001600160e01b03198216635b5e139f60e01b145b8061029a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f80546102ae90610e9e565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610e9e565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f6103398261050e565b505f828152600460205260409020546001600160a01b031661029a565b610361828233610546565b5050565b6001600160a01b03821661039357604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f61039f838333610553565b9050836001600160a01b0316816001600160a01b0316146103ed576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161038a565b50505050565b6103618282610652565b61041783838360405180602001604052805f815250610485565b505050565b5f61029a8261050e565b5f6001600160a01b038216610450576040516322718ad960e21b81525f600482015260240161038a565b506001600160a01b03165f9081526003602052604090205490565b6060600180546102ae90610e9e565b6103613383836106b3565b610490848484610365565b6103ed3385858585610751565b60606104a88261050e565b505f6104be60408051602081019091525f815290565b90505f8151116104dc5760405180602001604052805f815250610507565b806104e684610879565b6040516020016104f7929190610ed6565b6040516020818303038152906040525b9392505050565b5f818152600260205260408120546001600160a01b03168061029a57604051637e27328960e01b81526004810184905260240161038a565b6104178383836001610916565b5f828152600260205260408120546001600160a01b039081169083161561057f5761057f818486610a45565b6001600160a01b038116156105b95761059a5f855f80610916565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156105e7576001600160a01b0385165f908152600360205260409020805460010190555b5f84815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661067b57604051633250574960e11b81525f600482015260240161038a565b5f61068783835f610553565b90506001600160a01b03811615610417576040516339e3563760e11b81525f600482015260240161038a565b6001600160a01b0382166106e557604051630b61174360e31b81526001600160a01b038316600482015260240161038a565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561087257604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610793908890889087908790600401610f04565b6020604051808303815f875af19250505080156107cd575060408051601f3d908101601f191682019092526107ca91810190610f3f565b60015b610834573d8080156107fa576040519150601f19603f3d011682016040523d82523d5f602084013e6107ff565b606091505b5080515f0361082c57604051633250574960e11b81526001600160a01b038516600482015260240161038a565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461087057604051633250574960e11b81526001600160a01b038516600482015260240161038a565b505b5050505050565b60605f61088583610aa9565b60010190505f8167ffffffffffffffff8111156108a4576108a4610d84565b6040519080825280601f01601f1916602001820160405280156108ce576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846108d857509392505050565b808061092a57506001600160a01b03821615155b15610a09575f6109398461050e565b90506001600160a01b038316158015906109655750826001600160a01b0316816001600160a01b031614155b801561099657506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b156109bf5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161038a565b8115610a075783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610a50838383610b8a565b610417576001600160a01b038316610a7e57604051637e27328960e01b81526004810182905260240161038a565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161038a565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610af1577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610b1d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b3b57662386f26fc10000830492506010015b6305f5e1008310610b53576305f5e100830492506008015b6127108310610b6757612710830492506004015b60648310610b79576064830492506002015b600a831061029a5760010192915050565b5f6001600160a01b03831615801590610c055750826001600160a01b0316846001600160a01b03161480610be257506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b80610c0557505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610c22575f80fd5b50565b5f60208284031215610c35575f80fd5b813561050781610c0d565b5f5b83811015610c5a578181015183820152602001610c42565b50505f910152565b5f8151808452610c79816020860160208601610c40565b601f01601f19169290920160200192915050565b602081525f6105076020830184610c62565b5f60208284031215610caf575f80fd5b5035919050565b80356001600160a01b0381168114610ccc575f80fd5b919050565b5f8060408385031215610ce2575f80fd5b610ceb83610cb6565b946020939093013593505050565b5f805f60608486031215610d0b575f80fd5b610d1484610cb6565b9250610d2260208501610cb6565b9150604084013590509250925092565b5f60208284031215610d42575f80fd5b61050782610cb6565b5f8060408385031215610d5c575f80fd5b610d6583610cb6565b915060208301358015158114610d79575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610dab575f80fd5b610db485610cb6565b9350610dc260208601610cb6565b925060408501359150606085013567ffffffffffffffff80821115610de5575f80fd5b818701915087601f830112610df8575f80fd5b813581811115610e0a57610e0a610d84565b604051601f8201601f19908116603f01168101908382118183101715610e3257610e32610d84565b816040528281528a6020848701011115610e4a575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b5f8060408385031215610e7e575f80fd5b610e8783610cb6565b9150610e9560208401610cb6565b90509250929050565b600181811c90821680610eb257607f821691505b602082108103610ed057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8351610ee7818460208801610c40565b835190830190610efb818360208801610c40565b01949350505050565b5f6001600160a01b03808716835280861660208401525083604083015260806060830152610f356080830184610c62565b9695505050505050565b5f60208284031215610f4f575f80fd5b815161050781610c0d56fea26469706673582212204b71f8a2ffb848e91dcb06024b303739ef91e71af07b635edc2efad9ab04845064736f6c63430008180033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80636352211e11610088578063a22cb46511610063578063a22cb465146101db578063b88d4fde146101ee578063c87b56dd14610201578063e985e9c514610214575f80fd5b80636352211e1461019f57806370a08231146101b257806395d89b41146101d3575f80fd5b8063095ea7b3116100c3578063095ea7b31461015157806323b872dd1461016657806340c10f191461017957806342842e0e1461018c575f80fd5b806301ffc9a7146100e957806306fdde0314610111578063081812fc14610126575b5f80fd5b6100fc6100f7366004610c25565b61024f565b60405190151581526020015b60405180910390f35b6101196102a0565b6040516101089190610c8d565b610139610134366004610c9f565b61032f565b6040516001600160a01b039091168152602001610108565b61016461015f366004610cd1565b610356565b005b610164610174366004610cf9565b610365565b610164610187366004610cd1565b6103f3565b61016461019a366004610cf9565b6103fd565b6101396101ad366004610c9f565b61041c565b6101c56101c0366004610d32565b610426565b604051908152602001610108565b61011961046b565b6101646101e9366004610d4b565b61047a565b6101646101fc366004610d98565b610485565b61011961020f366004610c9f565b61049d565b6100fc610222366004610e6d565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166380ac58cd60e01b148061027f57506001600160e01b03198216635b5e139f60e01b145b8061029a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f80546102ae90610e9e565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610e9e565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f6103398261050e565b505f828152600460205260409020546001600160a01b031661029a565b610361828233610546565b5050565b6001600160a01b03821661039357604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f61039f838333610553565b9050836001600160a01b0316816001600160a01b0316146103ed576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161038a565b50505050565b6103618282610652565b61041783838360405180602001604052805f815250610485565b505050565b5f61029a8261050e565b5f6001600160a01b038216610450576040516322718ad960e21b81525f600482015260240161038a565b506001600160a01b03165f9081526003602052604090205490565b6060600180546102ae90610e9e565b6103613383836106b3565b610490848484610365565b6103ed3385858585610751565b60606104a88261050e565b505f6104be60408051602081019091525f815290565b90505f8151116104dc5760405180602001604052805f815250610507565b806104e684610879565b6040516020016104f7929190610ed6565b6040516020818303038152906040525b9392505050565b5f818152600260205260408120546001600160a01b03168061029a57604051637e27328960e01b81526004810184905260240161038a565b6104178383836001610916565b5f828152600260205260408120546001600160a01b039081169083161561057f5761057f818486610a45565b6001600160a01b038116156105b95761059a5f855f80610916565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b038516156105e7576001600160a01b0385165f908152600360205260409020805460010190555b5f84815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661067b57604051633250574960e11b81525f600482015260240161038a565b5f61068783835f610553565b90506001600160a01b03811615610417576040516339e3563760e11b81525f600482015260240161038a565b6001600160a01b0382166106e557604051630b61174360e31b81526001600160a01b038316600482015260240161038a565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561087257604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610793908890889087908790600401610f04565b6020604051808303815f875af19250505080156107cd575060408051601f3d908101601f191682019092526107ca91810190610f3f565b60015b610834573d8080156107fa576040519150601f19603f3d011682016040523d82523d5f602084013e6107ff565b606091505b5080515f0361082c57604051633250574960e11b81526001600160a01b038516600482015260240161038a565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461087057604051633250574960e11b81526001600160a01b038516600482015260240161038a565b505b5050505050565b60605f61088583610aa9565b60010190505f8167ffffffffffffffff8111156108a4576108a4610d84565b6040519080825280601f01601f1916602001820160405280156108ce576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846108d857509392505050565b808061092a57506001600160a01b03821615155b15610a09575f6109398461050e565b90506001600160a01b038316158015906109655750826001600160a01b0316816001600160a01b031614155b801561099657506001600160a01b038082165f9081526005602090815260408083209387168352929052205460ff16155b156109bf5760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161038a565b8115610a075783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610a50838383610b8a565b610417576001600160a01b038316610a7e57604051637e27328960e01b81526004810182905260240161038a565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161038a565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610af1577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610b1d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610b3b57662386f26fc10000830492506010015b6305f5e1008310610b53576305f5e100830492506008015b6127108310610b6757612710830492506004015b60648310610b79576064830492506002015b600a831061029a5760010192915050565b5f6001600160a01b03831615801590610c055750826001600160a01b0316846001600160a01b03161480610be257506001600160a01b038085165f9081526005602090815260408083209387168352929052205460ff165b80610c0557505f828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b031981168114610c22575f80fd5b50565b5f60208284031215610c35575f80fd5b813561050781610c0d565b5f5b83811015610c5a578181015183820152602001610c42565b50505f910152565b5f8151808452610c79816020860160208601610c40565b601f01601f19169290920160200192915050565b602081525f6105076020830184610c62565b5f60208284031215610caf575f80fd5b5035919050565b80356001600160a01b0381168114610ccc575f80fd5b919050565b5f8060408385031215610ce2575f80fd5b610ceb83610cb6565b946020939093013593505050565b5f805f60608486031215610d0b575f80fd5b610d1484610cb6565b9250610d2260208501610cb6565b9150604084013590509250925092565b5f60208284031215610d42575f80fd5b61050782610cb6565b5f8060408385031215610d5c575f80fd5b610d6583610cb6565b915060208301358015158114610d79575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f8060808587031215610dab575f80fd5b610db485610cb6565b9350610dc260208601610cb6565b925060408501359150606085013567ffffffffffffffff80821115610de5575f80fd5b818701915087601f830112610df8575f80fd5b813581811115610e0a57610e0a610d84565b604051601f8201601f19908116603f01168101908382118183101715610e3257610e32610d84565b816040528281528a6020848701011115610e4a575f80fd5b826020860160208301375f60208483010152809550505050505092959194509250565b5f8060408385031215610e7e575f80fd5b610e8783610cb6565b9150610e9560208401610cb6565b90509250929050565b600181811c90821680610eb257607f821691505b602082108103610ed057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8351610ee7818460208801610c40565b835190830190610efb818360208801610c40565b01949350505050565b5f6001600160a01b03808716835280861660208401525083604083015260806060830152610f356080830184610c62565b9695505050505050565b5f60208284031215610f4f575f80fd5b815161050781610c0d56fea26469706673582212204b71f8a2ffb848e91dcb06024b303739ef91e71af07b635edc2efad9ab04845064736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-20/ERC20Contract.sol/ERC20Contract.json b/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-20/ERC20Contract.sol/ERC20Contract.json index b81054c29..69d276d12 100644 --- a/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-20/ERC20Contract.sol/ERC20Contract.json +++ b/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-20/ERC20Contract.sol/ERC20Contract.json @@ -299,8 +299,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561000f575f80fd5b50610b068061001d5f395ff3fe6080604052600436106100c3575f3560e01c8063d449a83211610071578063eac6f3fe1161004c578063eac6f3fe14610226578063f4b79da514610239578063f7888aec14610258575f80fd5b8063d449a832146101b7578063e1f21c67146101e8578063e4dc2aa414610207575f80fd5b8063927da105116100a1578063927da1051461014c578063a86e357614610179578063beabacc814610198575f80fd5b806301984892146100c757806315dacbea146100fc578063734194a71461012b575b5f80fd5b3480156100d2575f80fd5b506100e66100e1366004610844565b610277565b6040516100f3919061087f565b60405180910390f35b348015610107575f80fd5b5061011b6101163660046108b1565b6102e1565b60405190151581526020016100f3565b348015610136575f80fd5b5061014a6101453660046108f9565b610365565b005b348015610157575f80fd5b5061016b610166366004610932565b61044d565b6040519081526020016100f3565b348015610184575f80fd5b506100e6610193366004610844565b6104c8565b3480156101a3575f80fd5b5061011b6101b23660046108f9565b610505565b3480156101c2575f80fd5b506101d66101d1366004610844565b610579565b60405160ff90911681526020016100f3565b3480156101f3575f80fd5b5061011b6102023660046108f9565b6105da565b348015610212575f80fd5b5061016b610221366004610844565b610612565b61014a6102343660046108b1565b610673565b348015610244575f80fd5b5061014a6102533660046108f9565b61075f565b348015610263575f80fd5b5061016b610272366004610972565b6107b7565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526102db91908101906109b7565b92915050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390525f91908616906323b872dd906064016020604051808303815f875af1158015610338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035c9190610a5f565b95945050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516103bd9190610a7e565b5f60405180830381855af49150503d805f81146103f5576040519150601f19603f3d011682016040523d82523d5f602084013e6103fa565b606091505b50509050806104475760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81526001600160a01b03838116600483015282811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561049c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a99565b949350505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390525f919085169063a9059cbb906044015b6020604051808303815f875af1158015610555573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a5f565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610ab0565b60405163095ea7b360e01b81526001600160a01b038381166004830152602482018390525f919085169063095ea7b390604401610539565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610a99565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516106d39190610a7e565b5f60405180830381855af49150503d805f811461070b576040519150601f19603f3d011682016040523d82523d5f602084013e610710565b606091505b50509050806107585760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161043e565b5050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103bd9190610a7e565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a0823190602401602060405180830381865afa1580156107fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108229190610a99565b9392505050565b80356001600160a01b038116811461083f575f80fd5b919050565b5f60208284031215610854575f80fd5b61082282610829565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b602081525f825180602084015261089d81604085016020870161085d565b601f01601f19169190910160400192915050565b5f805f80608085870312156108c4575f80fd5b6108cd85610829565b93506108db60208601610829565b92506108e960408601610829565b9396929550929360600135925050565b5f805f6060848603121561090b575f80fd5b61091484610829565b925061092260208501610829565b9150604084013590509250925092565b5f805f60608486031215610944575f80fd5b61094d84610829565b925061095b60208501610829565b915061096960408501610829565b90509250925092565b5f8060408385031215610983575f80fd5b61098c83610829565b915061099a60208401610829565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156109c7575f80fd5b815167ffffffffffffffff808211156109de575f80fd5b818401915084601f8301126109f1575f80fd5b815181811115610a0357610a036109a3565b604051601f8201601f19908116603f01168101908382118183101715610a2b57610a2b6109a3565b81604052828152876020848701011115610a43575f80fd5b610a5483602083016020880161085d565b979650505050505050565b5f60208284031215610a6f575f80fd5b81518015158114610822575f80fd5b5f8251610a8f81846020870161085d565b9190910192915050565b5f60208284031215610aa9575f80fd5b5051919050565b5f60208284031215610ac0575f80fd5b815160ff81168114610822575f80fdfea264697066735822122032ef79d5bda1a6ab55fcd92bf066f9f57ab898f52e6f08d06f6023692d6cf2fa64736f6c63430008180033", - "deployedBytecode": "0x6080604052600436106100c3575f3560e01c8063d449a83211610071578063eac6f3fe1161004c578063eac6f3fe14610226578063f4b79da514610239578063f7888aec14610258575f80fd5b8063d449a832146101b7578063e1f21c67146101e8578063e4dc2aa414610207575f80fd5b8063927da105116100a1578063927da1051461014c578063a86e357614610179578063beabacc814610198575f80fd5b806301984892146100c757806315dacbea146100fc578063734194a71461012b575b5f80fd5b3480156100d2575f80fd5b506100e66100e1366004610844565b610277565b6040516100f3919061087f565b60405180910390f35b348015610107575f80fd5b5061011b6101163660046108b1565b6102e1565b60405190151581526020016100f3565b348015610136575f80fd5b5061014a6101453660046108f9565b610365565b005b348015610157575f80fd5b5061016b610166366004610932565b61044d565b6040519081526020016100f3565b348015610184575f80fd5b506100e6610193366004610844565b6104c8565b3480156101a3575f80fd5b5061011b6101b23660046108f9565b610505565b3480156101c2575f80fd5b506101d66101d1366004610844565b610579565b60405160ff90911681526020016100f3565b3480156101f3575f80fd5b5061011b6102023660046108f9565b6105da565b348015610212575f80fd5b5061016b610221366004610844565b610612565b61014a6102343660046108b1565b610673565b348015610244575f80fd5b5061014a6102533660046108f9565b61075f565b348015610263575f80fd5b5061016b610272366004610972565b6107b7565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526102db91908101906109b7565b92915050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390525f91908616906323b872dd906064016020604051808303815f875af1158015610338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035c9190610a5f565b95945050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516103bd9190610a7e565b5f60405180830381855af49150503d805f81146103f5576040519150601f19603f3d011682016040523d82523d5f602084013e6103fa565b606091505b50509050806104475760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81526001600160a01b03838116600483015282811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561049c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a99565b949350505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390525f919085169063a9059cbb906044015b6020604051808303815f875af1158015610555573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a5f565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610ab0565b60405163095ea7b360e01b81526001600160a01b038381166004830152602482018390525f919085169063095ea7b390604401610539565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610a99565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516106d39190610a7e565b5f60405180830381855af49150503d805f811461070b576040519150601f19603f3d011682016040523d82523d5f602084013e610710565b606091505b50509050806107585760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161043e565b5050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103bd9190610a7e565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a0823190602401602060405180830381865afa1580156107fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108229190610a99565b9392505050565b80356001600160a01b038116811461083f575f80fd5b919050565b5f60208284031215610854575f80fd5b61082282610829565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b602081525f825180602084015261089d81604085016020870161085d565b601f01601f19169190910160400192915050565b5f805f80608085870312156108c4575f80fd5b6108cd85610829565b93506108db60208601610829565b92506108e960408601610829565b9396929550929360600135925050565b5f805f6060848603121561090b575f80fd5b61091484610829565b925061092260208501610829565b9150604084013590509250925092565b5f805f60608486031215610944575f80fd5b61094d84610829565b925061095b60208501610829565b915061096960408501610829565b90509250925092565b5f8060408385031215610983575f80fd5b61098c83610829565b915061099a60208401610829565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156109c7575f80fd5b815167ffffffffffffffff808211156109de575f80fd5b818401915084601f8301126109f1575f80fd5b815181811115610a0357610a036109a3565b604051601f8201601f19908116603f01168101908382118183101715610a2b57610a2b6109a3565b81604052828152876020848701011115610a43575f80fd5b610a5483602083016020880161085d565b979650505050505050565b5f60208284031215610a6f575f80fd5b81518015158114610822575f80fd5b5f8251610a8f81846020870161085d565b9190910192915050565b5f60208284031215610aa9575f80fd5b5051919050565b5f60208284031215610ac0575f80fd5b815160ff81168114610822575f80fdfea264697066735822122032ef79d5bda1a6ab55fcd92bf066f9f57ab898f52e6f08d06f6023692d6cf2fa64736f6c63430008180033", + "bytecode": "0x608060405234801561000f575f80fd5b50610b068061001d5f395ff3fe6080604052600436106100c3575f3560e01c8063d449a83211610071578063eac6f3fe1161004c578063eac6f3fe14610226578063f4b79da514610239578063f7888aec14610258575f80fd5b8063d449a832146101b7578063e1f21c67146101e8578063e4dc2aa414610207575f80fd5b8063927da105116100a1578063927da1051461014c578063a86e357614610179578063beabacc814610198575f80fd5b806301984892146100c757806315dacbea146100fc578063734194a71461012b575b5f80fd5b3480156100d2575f80fd5b506100e66100e1366004610844565b610277565b6040516100f3919061087f565b60405180910390f35b348015610107575f80fd5b5061011b6101163660046108b1565b6102e1565b60405190151581526020016100f3565b348015610136575f80fd5b5061014a6101453660046108f9565b610365565b005b348015610157575f80fd5b5061016b610166366004610932565b61044d565b6040519081526020016100f3565b348015610184575f80fd5b506100e6610193366004610844565b6104c8565b3480156101a3575f80fd5b5061011b6101b23660046108f9565b610505565b3480156101c2575f80fd5b506101d66101d1366004610844565b610579565b60405160ff90911681526020016100f3565b3480156101f3575f80fd5b5061011b6102023660046108f9565b6105da565b348015610212575f80fd5b5061016b610221366004610844565b610612565b61014a6102343660046108b1565b610673565b348015610244575f80fd5b5061014a6102533660046108f9565b61075f565b348015610263575f80fd5b5061016b610272366004610972565b6107b7565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526102db91908101906109b7565b92915050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390525f91908616906323b872dd906064016020604051808303815f875af1158015610338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035c9190610a5f565b95945050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516103bd9190610a7e565b5f60405180830381855af49150503d805f81146103f5576040519150601f19603f3d011682016040523d82523d5f602084013e6103fa565b606091505b50509050806104475760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81526001600160a01b03838116600483015282811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561049c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a99565b949350505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390525f919085169063a9059cbb906044015b6020604051808303815f875af1158015610555573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a5f565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610ab0565b60405163095ea7b360e01b81526001600160a01b038381166004830152602482018390525f919085169063095ea7b390604401610539565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610a99565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516106d39190610a7e565b5f60405180830381855af49150503d805f811461070b576040519150601f19603f3d011682016040523d82523d5f602084013e610710565b606091505b50509050806107585760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161043e565b5050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103bd9190610a7e565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a0823190602401602060405180830381865afa1580156107fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108229190610a99565b9392505050565b80356001600160a01b038116811461083f575f80fd5b919050565b5f60208284031215610854575f80fd5b61082282610829565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b602081525f825180602084015261089d81604085016020870161085d565b601f01601f19169190910160400192915050565b5f805f80608085870312156108c4575f80fd5b6108cd85610829565b93506108db60208601610829565b92506108e960408601610829565b9396929550929360600135925050565b5f805f6060848603121561090b575f80fd5b61091484610829565b925061092260208501610829565b9150604084013590509250925092565b5f805f60608486031215610944575f80fd5b61094d84610829565b925061095b60208501610829565b915061096960408501610829565b90509250925092565b5f8060408385031215610983575f80fd5b61098c83610829565b915061099a60208401610829565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156109c7575f80fd5b815167ffffffffffffffff808211156109de575f80fd5b818401915084601f8301126109f1575f80fd5b815181811115610a0357610a036109a3565b604051601f8201601f19908116603f01168101908382118183101715610a2b57610a2b6109a3565b81604052828152876020848701011115610a43575f80fd5b610a5483602083016020880161085d565b979650505050505050565b5f60208284031215610a6f575f80fd5b81518015158114610822575f80fd5b5f8251610a8f81846020870161085d565b9190910192915050565b5f60208284031215610aa9575f80fd5b5051919050565b5f60208284031215610ac0575f80fd5b815160ff81168114610822575f80fdfea2646970667358221220bcc936221722d59adcf52fdb274ad8c3a4e71ad4c65340bcaf3eb06b53ae707164736f6c63430008180033", + "deployedBytecode": "0x6080604052600436106100c3575f3560e01c8063d449a83211610071578063eac6f3fe1161004c578063eac6f3fe14610226578063f4b79da514610239578063f7888aec14610258575f80fd5b8063d449a832146101b7578063e1f21c67146101e8578063e4dc2aa414610207575f80fd5b8063927da105116100a1578063927da1051461014c578063a86e357614610179578063beabacc814610198575f80fd5b806301984892146100c757806315dacbea146100fc578063734194a71461012b575b5f80fd5b3480156100d2575f80fd5b506100e66100e1366004610844565b610277565b6040516100f3919061087f565b60405180910390f35b348015610107575f80fd5b5061011b6101163660046108b1565b6102e1565b60405190151581526020016100f3565b348015610136575f80fd5b5061014a6101453660046108f9565b610365565b005b348015610157575f80fd5b5061016b610166366004610932565b61044d565b6040519081526020016100f3565b348015610184575f80fd5b506100e6610193366004610844565b6104c8565b3480156101a3575f80fd5b5061011b6101b23660046108f9565b610505565b3480156101c2575f80fd5b506101d66101d1366004610844565b610579565b60405160ff90911681526020016100f3565b3480156101f3575f80fd5b5061011b6102023660046108f9565b6105da565b348015610212575f80fd5b5061016b610221366004610844565b610612565b61014a6102343660046108b1565b610673565b348015610244575f80fd5b5061014a6102533660046108f9565b61075f565b348015610263575f80fd5b5061016b610272366004610972565b6107b7565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526102db91908101906109b7565b92915050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390525f91908616906323b872dd906064016020604051808303815f875af1158015610338573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035c9190610a5f565b95945050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516103bd9190610a7e565b5f60405180830381855af49150503d805f81146103f5576040519150601f19603f3d011682016040523d82523d5f602084013e6103fa565b606091505b50509050806104475760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b604051636eb1769f60e11b81526001600160a01b03838116600483015282811660248301525f919085169063dd62ed3e90604401602060405180830381865afa15801561049c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a99565b949350505050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156102b4573d5f803e3d5ffd5b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390525f919085169063a9059cbb906044015b6020604051808303815f875af1158015610555573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610a5f565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610ab0565b60405163095ea7b360e01b81526001600160a01b038381166004830152602482018390525f919085169063095ea7b390604401610539565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102db9190610a99565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516106d39190610a7e565b5f60405180830381855af49150503d805f811461070b576040519150601f19603f3d011682016040523d82523d5f602084013e610710565b606091505b50509050806107585760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161043e565b5050505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516103bd9190610a7e565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a0823190602401602060405180830381865afa1580156107fe573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108229190610a99565b9392505050565b80356001600160a01b038116811461083f575f80fd5b919050565b5f60208284031215610854575f80fd5b61082282610829565b5f5b8381101561087757818101518382015260200161085f565b50505f910152565b602081525f825180602084015261089d81604085016020870161085d565b601f01601f19169190910160400192915050565b5f805f80608085870312156108c4575f80fd5b6108cd85610829565b93506108db60208601610829565b92506108e960408601610829565b9396929550929360600135925050565b5f805f6060848603121561090b575f80fd5b61091484610829565b925061092260208501610829565b9150604084013590509250925092565b5f805f60608486031215610944575f80fd5b61094d84610829565b925061095b60208501610829565b915061096960408501610829565b90509250925092565b5f8060408385031215610983575f80fd5b61098c83610829565b915061099a60208401610829565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156109c7575f80fd5b815167ffffffffffffffff808211156109de575f80fd5b818401915084601f8301126109f1575f80fd5b815181811115610a0357610a036109a3565b604051601f8201601f19908116603f01168101908382118183101715610a2b57610a2b6109a3565b81604052828152876020848701011115610a43575f80fd5b610a5483602083016020880161085d565b979650505050505050565b5f60208284031215610a6f575f80fd5b81518015158114610822575f80fd5b5f8251610a8f81846020870161085d565b9190910192915050565b5f60208284031215610aa9575f80fd5b5051919050565b5f60208284031215610ac0575f80fd5b815160ff81168114610822575f80fdfea2646970667358221220bcc936221722d59adcf52fdb274ad8c3a4e71ad4c65340bcaf3eb06b53ae707164736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-721/ERC721Contract.sol/ERC721Contract.json b/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-721/ERC721Contract.sol/ERC721Contract.json index f9114fafd..3dd60dd71 100644 --- a/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-721/ERC721Contract.sol/ERC721Contract.json +++ b/artifacts/contracts/system-contracts/hedera-token-service/examples/erc-721/ERC721Contract.sol/ERC721Contract.json @@ -448,8 +448,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561000f575f80fd5b50610f0d8061001d5f395ff3fe608060405260043610610105575f3560e01c8063a86e357611610092578063e4dc2aa411610062578063e4dc2aa41461029e578063e9dc6375146102bd578063eac6f3fe146102dc578063f49f40db146102ef578063f7888aec1461031e575f80fd5b8063a86e35761461023a578063cb60f1bf14610259578063d9fc4b6114610278578063e1f21c671461028b575f80fd5b806315dacbea116100d857806315dacbea146101a95780631f29d2dc146101bc578063367605ca146101db5780636b42bf2f146101fa578063734194a714610227575f80fd5b80630198489214610109578063039d6f191461013e578063098f2366146101535780630db1cc1b1461018a575b5f80fd5b348015610114575f80fd5b50610128610123366004610ac8565b61033d565b6040516101359190610b05565b60405180910390f35b61015161014c366004610b37565b6103a7565b005b34801561015e575f80fd5b5061017261016d366004610be2565b610410565b6040516001600160a01b039091168152602001610135565b348015610195575f80fd5b506101516101a4366004610c19565b610481565b6101516101b7366004610c61565b61056a565b3480156101c7575f80fd5b506101726101d6366004610be2565b6105d6565b3480156101e6575f80fd5b506101516101f5366004610c19565b610605565b348015610205575f80fd5b50610219610214366004610caf565b610669565b604051908152602001610135565b610151610235366004610caf565b6106e3565b348015610245575f80fd5b50610128610254366004610ac8565b61073b565b348015610264575f80fd5b50610219610273366004610be2565b610778565b610151610286366004610c61565b6107e2565b610151610299366004610caf565b61081f565b3480156102a9575f80fd5b506102196102b8366004610ac8565b610854565b3480156102c8575f80fd5b506101286102d7366004610be2565b6108b5565b6101516102ea366004610c61565b610921565b3480156102fa575f80fd5b5061030e610309366004610ced565b610a0d565b6040519015158152602001610135565b348015610329575f80fd5b50610219610338366004610d2a565b610a80565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a19190810190610d75565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103db9088908890889088908890600401610e1d565b5f604051808303815f87803b1580156103f2575f80fd5b505af1158015610404573d5f803e3d5ffd5b50505050505050505050565b60405163020604bf60e21b8152600481018290525f906001600160a01b0384169063081812fc906024015b602060405180830381865afa158015610456573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610e6f565b9392505050565b6040516001600160a01b03838116602483015282151560448301525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a22cb46560e01b179052516104da9190610e8a565b5f60405180830381855af49150503d805f8114610512576040519150601f19603f3d011682016040523d82523d5f602084013e610517565b606091505b50509050806105645760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b5f604051808303815f87803b1580156105ba575f80fd5b505af11580156105cc573d5f803e3d5ffd5b5050505050505050565b6040516331a9108f60e11b8152600481018290525f906001600160a01b03841690636352211e9060240161043b565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b5f604051808303815f87803b15801561064e575f80fd5b505af1158015610660573d5f803e3d5ffd5b50505050505050565b604051632f745c5960e01b81526001600160a01b038381166004830152602482018390525f9190851690632f745c5990604401602060405180830381865afa1580156106b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ea5565b949350505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516104da9190610e8a565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b604051634f6ccce760e01b8152600481018290525f906001600160a01b03841690634f6ccce7906024015b602060405180830381865afa1580156107be573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610ea5565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016105a3565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610637565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a19190610ea5565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd906024015f60405180830381865afa1580156108fa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261047a9190810190610d75565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516109819190610e8a565b5f60405180830381855af49150503d805f81146109b9576040519150601f19603f3d011682016040523d82523d5f602084013e6109be565b606091505b5050905080610a065760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161055b565b5050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301525f919085169063e985e9c590604401602060405180830381865afa158015610a5c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ebc565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a08231906024016107a3565b6001600160a01b0381168114610ac5575f80fd5b50565b5f60208284031215610ad8575f80fd5b813561047a81610ab1565b5f5b83811015610afd578181015183820152602001610ae5565b50505f910152565b602081525f8251806020840152610b23816040850160208701610ae3565b601f01601f19169190910160400192915050565b5f805f805f8060a08789031215610b4c575f80fd5b8635610b5781610ab1565b95506020870135610b6781610ab1565b94506040870135610b7781610ab1565b935060608701359250608087013567ffffffffffffffff80821115610b9a575f80fd5b818901915089601f830112610bad575f80fd5b813581811115610bbb575f80fd5b8a6020828501011115610bcc575f80fd5b6020830194508093505050509295509295509295565b5f8060408385031215610bf3575f80fd5b8235610bfe81610ab1565b946020939093013593505050565b8015158114610ac5575f80fd5b5f805f60608486031215610c2b575f80fd5b8335610c3681610ab1565b92506020840135610c4681610ab1565b91506040840135610c5681610c0c565b809150509250925092565b5f805f8060808587031215610c74575f80fd5b8435610c7f81610ab1565b93506020850135610c8f81610ab1565b92506040850135610c9f81610ab1565b9396929550929360600135925050565b5f805f60608486031215610cc1575f80fd5b8335610ccc81610ab1565b92506020840135610cdc81610ab1565b929592945050506040919091013590565b5f805f60608486031215610cff575f80fd5b8335610d0a81610ab1565b92506020840135610d1a81610ab1565b91506040840135610c5681610ab1565b5f8060408385031215610d3b575f80fd5b8235610d4681610ab1565b91506020830135610d5681610ab1565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610d85575f80fd5b815167ffffffffffffffff80821115610d9c575f80fd5b818401915084601f830112610daf575f80fd5b815181811115610dc157610dc1610d61565b604051601f8201601f19908116603f01168101908382118183101715610de957610de9610d61565b81604052828152876020848701011115610e01575f80fd5b610e12836020830160208801610ae3565b979650505050505050565b5f6001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a0601f19601f85011683010190509695505050505050565b5f60208284031215610e7f575f80fd5b815161047a81610ab1565b5f8251610e9b818460208701610ae3565b9190910192915050565b5f60208284031215610eb5575f80fd5b5051919050565b5f60208284031215610ecc575f80fd5b815161047a81610c0c56fea2646970667358221220400f02bf8fd9a33d439bd5fe00974d9c29b8e12d6759e507c5d9f7323b41599f64736f6c63430008180033", - "deployedBytecode": "0x608060405260043610610105575f3560e01c8063a86e357611610092578063e4dc2aa411610062578063e4dc2aa41461029e578063e9dc6375146102bd578063eac6f3fe146102dc578063f49f40db146102ef578063f7888aec1461031e575f80fd5b8063a86e35761461023a578063cb60f1bf14610259578063d9fc4b6114610278578063e1f21c671461028b575f80fd5b806315dacbea116100d857806315dacbea146101a95780631f29d2dc146101bc578063367605ca146101db5780636b42bf2f146101fa578063734194a714610227575f80fd5b80630198489214610109578063039d6f191461013e578063098f2366146101535780630db1cc1b1461018a575b5f80fd5b348015610114575f80fd5b50610128610123366004610ac8565b61033d565b6040516101359190610b05565b60405180910390f35b61015161014c366004610b37565b6103a7565b005b34801561015e575f80fd5b5061017261016d366004610be2565b610410565b6040516001600160a01b039091168152602001610135565b348015610195575f80fd5b506101516101a4366004610c19565b610481565b6101516101b7366004610c61565b61056a565b3480156101c7575f80fd5b506101726101d6366004610be2565b6105d6565b3480156101e6575f80fd5b506101516101f5366004610c19565b610605565b348015610205575f80fd5b50610219610214366004610caf565b610669565b604051908152602001610135565b610151610235366004610caf565b6106e3565b348015610245575f80fd5b50610128610254366004610ac8565b61073b565b348015610264575f80fd5b50610219610273366004610be2565b610778565b610151610286366004610c61565b6107e2565b610151610299366004610caf565b61081f565b3480156102a9575f80fd5b506102196102b8366004610ac8565b610854565b3480156102c8575f80fd5b506101286102d7366004610be2565b6108b5565b6101516102ea366004610c61565b610921565b3480156102fa575f80fd5b5061030e610309366004610ced565b610a0d565b6040519015158152602001610135565b348015610329575f80fd5b50610219610338366004610d2a565b610a80565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a19190810190610d75565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103db9088908890889088908890600401610e1d565b5f604051808303815f87803b1580156103f2575f80fd5b505af1158015610404573d5f803e3d5ffd5b50505050505050505050565b60405163020604bf60e21b8152600481018290525f906001600160a01b0384169063081812fc906024015b602060405180830381865afa158015610456573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610e6f565b9392505050565b6040516001600160a01b03838116602483015282151560448301525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a22cb46560e01b179052516104da9190610e8a565b5f60405180830381855af49150503d805f8114610512576040519150601f19603f3d011682016040523d82523d5f602084013e610517565b606091505b50509050806105645760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b5f604051808303815f87803b1580156105ba575f80fd5b505af11580156105cc573d5f803e3d5ffd5b5050505050505050565b6040516331a9108f60e11b8152600481018290525f906001600160a01b03841690636352211e9060240161043b565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b5f604051808303815f87803b15801561064e575f80fd5b505af1158015610660573d5f803e3d5ffd5b50505050505050565b604051632f745c5960e01b81526001600160a01b038381166004830152602482018390525f9190851690632f745c5990604401602060405180830381865afa1580156106b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ea5565b949350505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516104da9190610e8a565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b604051634f6ccce760e01b8152600481018290525f906001600160a01b03841690634f6ccce7906024015b602060405180830381865afa1580156107be573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610ea5565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016105a3565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610637565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a19190610ea5565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd906024015f60405180830381865afa1580156108fa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261047a9190810190610d75565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516109819190610e8a565b5f60405180830381855af49150503d805f81146109b9576040519150601f19603f3d011682016040523d82523d5f602084013e6109be565b606091505b5050905080610a065760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161055b565b5050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301525f919085169063e985e9c590604401602060405180830381865afa158015610a5c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ebc565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a08231906024016107a3565b6001600160a01b0381168114610ac5575f80fd5b50565b5f60208284031215610ad8575f80fd5b813561047a81610ab1565b5f5b83811015610afd578181015183820152602001610ae5565b50505f910152565b602081525f8251806020840152610b23816040850160208701610ae3565b601f01601f19169190910160400192915050565b5f805f805f8060a08789031215610b4c575f80fd5b8635610b5781610ab1565b95506020870135610b6781610ab1565b94506040870135610b7781610ab1565b935060608701359250608087013567ffffffffffffffff80821115610b9a575f80fd5b818901915089601f830112610bad575f80fd5b813581811115610bbb575f80fd5b8a6020828501011115610bcc575f80fd5b6020830194508093505050509295509295509295565b5f8060408385031215610bf3575f80fd5b8235610bfe81610ab1565b946020939093013593505050565b8015158114610ac5575f80fd5b5f805f60608486031215610c2b575f80fd5b8335610c3681610ab1565b92506020840135610c4681610ab1565b91506040840135610c5681610c0c565b809150509250925092565b5f805f8060808587031215610c74575f80fd5b8435610c7f81610ab1565b93506020850135610c8f81610ab1565b92506040850135610c9f81610ab1565b9396929550929360600135925050565b5f805f60608486031215610cc1575f80fd5b8335610ccc81610ab1565b92506020840135610cdc81610ab1565b929592945050506040919091013590565b5f805f60608486031215610cff575f80fd5b8335610d0a81610ab1565b92506020840135610d1a81610ab1565b91506040840135610c5681610ab1565b5f8060408385031215610d3b575f80fd5b8235610d4681610ab1565b91506020830135610d5681610ab1565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610d85575f80fd5b815167ffffffffffffffff80821115610d9c575f80fd5b818401915084601f830112610daf575f80fd5b815181811115610dc157610dc1610d61565b604051601f8201601f19908116603f01168101908382118183101715610de957610de9610d61565b81604052828152876020848701011115610e01575f80fd5b610e12836020830160208801610ae3565b979650505050505050565b5f6001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a0601f19601f85011683010190509695505050505050565b5f60208284031215610e7f575f80fd5b815161047a81610ab1565b5f8251610e9b818460208701610ae3565b9190910192915050565b5f60208284031215610eb5575f80fd5b5051919050565b5f60208284031215610ecc575f80fd5b815161047a81610c0c56fea2646970667358221220400f02bf8fd9a33d439bd5fe00974d9c29b8e12d6759e507c5d9f7323b41599f64736f6c63430008180033", + "bytecode": "0x608060405234801561000f575f80fd5b50610f0d8061001d5f395ff3fe608060405260043610610105575f3560e01c8063a86e357611610092578063e4dc2aa411610062578063e4dc2aa41461029e578063e9dc6375146102bd578063eac6f3fe146102dc578063f49f40db146102ef578063f7888aec1461031e575f80fd5b8063a86e35761461023a578063cb60f1bf14610259578063d9fc4b6114610278578063e1f21c671461028b575f80fd5b806315dacbea116100d857806315dacbea146101a95780631f29d2dc146101bc578063367605ca146101db5780636b42bf2f146101fa578063734194a714610227575f80fd5b80630198489214610109578063039d6f191461013e578063098f2366146101535780630db1cc1b1461018a575b5f80fd5b348015610114575f80fd5b50610128610123366004610ac8565b61033d565b6040516101359190610b05565b60405180910390f35b61015161014c366004610b37565b6103a7565b005b34801561015e575f80fd5b5061017261016d366004610be2565b610410565b6040516001600160a01b039091168152602001610135565b348015610195575f80fd5b506101516101a4366004610c19565b610481565b6101516101b7366004610c61565b61056a565b3480156101c7575f80fd5b506101726101d6366004610be2565b6105d6565b3480156101e6575f80fd5b506101516101f5366004610c19565b610605565b348015610205575f80fd5b50610219610214366004610caf565b610669565b604051908152602001610135565b610151610235366004610caf565b6106e3565b348015610245575f80fd5b50610128610254366004610ac8565b61073b565b348015610264575f80fd5b50610219610273366004610be2565b610778565b610151610286366004610c61565b6107e2565b610151610299366004610caf565b61081f565b3480156102a9575f80fd5b506102196102b8366004610ac8565b610854565b3480156102c8575f80fd5b506101286102d7366004610be2565b6108b5565b6101516102ea366004610c61565b610921565b3480156102fa575f80fd5b5061030e610309366004610ced565b610a0d565b6040519015158152602001610135565b348015610329575f80fd5b50610219610338366004610d2a565b610a80565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a19190810190610d75565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103db9088908890889088908890600401610e1d565b5f604051808303815f87803b1580156103f2575f80fd5b505af1158015610404573d5f803e3d5ffd5b50505050505050505050565b60405163020604bf60e21b8152600481018290525f906001600160a01b0384169063081812fc906024015b602060405180830381865afa158015610456573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610e6f565b9392505050565b6040516001600160a01b03838116602483015282151560448301525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a22cb46560e01b179052516104da9190610e8a565b5f60405180830381855af49150503d805f8114610512576040519150601f19603f3d011682016040523d82523d5f602084013e610517565b606091505b50509050806105645760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b5f604051808303815f87803b1580156105ba575f80fd5b505af11580156105cc573d5f803e3d5ffd5b5050505050505050565b6040516331a9108f60e11b8152600481018290525f906001600160a01b03841690636352211e9060240161043b565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b5f604051808303815f87803b15801561064e575f80fd5b505af1158015610660573d5f803e3d5ffd5b50505050505050565b604051632f745c5960e01b81526001600160a01b038381166004830152602482018390525f9190851690632f745c5990604401602060405180830381865afa1580156106b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ea5565b949350505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516104da9190610e8a565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b604051634f6ccce760e01b8152600481018290525f906001600160a01b03841690634f6ccce7906024015b602060405180830381865afa1580156107be573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610ea5565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016105a3565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610637565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a19190610ea5565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd906024015f60405180830381865afa1580156108fa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261047a9190810190610d75565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516109819190610e8a565b5f60405180830381855af49150503d805f81146109b9576040519150601f19603f3d011682016040523d82523d5f602084013e6109be565b606091505b5050905080610a065760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161055b565b5050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301525f919085169063e985e9c590604401602060405180830381865afa158015610a5c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ebc565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a08231906024016107a3565b6001600160a01b0381168114610ac5575f80fd5b50565b5f60208284031215610ad8575f80fd5b813561047a81610ab1565b5f5b83811015610afd578181015183820152602001610ae5565b50505f910152565b602081525f8251806020840152610b23816040850160208701610ae3565b601f01601f19169190910160400192915050565b5f805f805f8060a08789031215610b4c575f80fd5b8635610b5781610ab1565b95506020870135610b6781610ab1565b94506040870135610b7781610ab1565b935060608701359250608087013567ffffffffffffffff80821115610b9a575f80fd5b818901915089601f830112610bad575f80fd5b813581811115610bbb575f80fd5b8a6020828501011115610bcc575f80fd5b6020830194508093505050509295509295509295565b5f8060408385031215610bf3575f80fd5b8235610bfe81610ab1565b946020939093013593505050565b8015158114610ac5575f80fd5b5f805f60608486031215610c2b575f80fd5b8335610c3681610ab1565b92506020840135610c4681610ab1565b91506040840135610c5681610c0c565b809150509250925092565b5f805f8060808587031215610c74575f80fd5b8435610c7f81610ab1565b93506020850135610c8f81610ab1565b92506040850135610c9f81610ab1565b9396929550929360600135925050565b5f805f60608486031215610cc1575f80fd5b8335610ccc81610ab1565b92506020840135610cdc81610ab1565b929592945050506040919091013590565b5f805f60608486031215610cff575f80fd5b8335610d0a81610ab1565b92506020840135610d1a81610ab1565b91506040840135610c5681610ab1565b5f8060408385031215610d3b575f80fd5b8235610d4681610ab1565b91506020830135610d5681610ab1565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610d85575f80fd5b815167ffffffffffffffff80821115610d9c575f80fd5b818401915084601f830112610daf575f80fd5b815181811115610dc157610dc1610d61565b604051601f8201601f19908116603f01168101908382118183101715610de957610de9610d61565b81604052828152876020848701011115610e01575f80fd5b610e12836020830160208801610ae3565b979650505050505050565b5f6001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a0601f19601f85011683010190509695505050505050565b5f60208284031215610e7f575f80fd5b815161047a81610ab1565b5f8251610e9b818460208701610ae3565b9190910192915050565b5f60208284031215610eb5575f80fd5b5051919050565b5f60208284031215610ecc575f80fd5b815161047a81610c0c56fea2646970667358221220bc46a38c11bce85f591ccc1d02b99e81c7a6ba28b62a5a4c013ea559bd8f2c1c64736f6c63430008180033", + "deployedBytecode": "0x608060405260043610610105575f3560e01c8063a86e357611610092578063e4dc2aa411610062578063e4dc2aa41461029e578063e9dc6375146102bd578063eac6f3fe146102dc578063f49f40db146102ef578063f7888aec1461031e575f80fd5b8063a86e35761461023a578063cb60f1bf14610259578063d9fc4b6114610278578063e1f21c671461028b575f80fd5b806315dacbea116100d857806315dacbea146101a95780631f29d2dc146101bc578063367605ca146101db5780636b42bf2f146101fa578063734194a714610227575f80fd5b80630198489214610109578063039d6f191461013e578063098f2366146101535780630db1cc1b1461018a575b5f80fd5b348015610114575f80fd5b50610128610123366004610ac8565b61033d565b6040516101359190610b05565b60405180910390f35b61015161014c366004610b37565b6103a7565b005b34801561015e575f80fd5b5061017261016d366004610be2565b610410565b6040516001600160a01b039091168152602001610135565b348015610195575f80fd5b506101516101a4366004610c19565b610481565b6101516101b7366004610c61565b61056a565b3480156101c7575f80fd5b506101726101d6366004610be2565b6105d6565b3480156101e6575f80fd5b506101516101f5366004610c19565b610605565b348015610205575f80fd5b50610219610214366004610caf565b610669565b604051908152602001610135565b610151610235366004610caf565b6106e3565b348015610245575f80fd5b50610128610254366004610ac8565b61073b565b348015610264575f80fd5b50610219610273366004610be2565b610778565b610151610286366004610c61565b6107e2565b610151610299366004610caf565b61081f565b3480156102a9575f80fd5b506102196102b8366004610ac8565b610854565b3480156102c8575f80fd5b506101286102d7366004610be2565b6108b5565b6101516102ea366004610c61565b610921565b3480156102fa575f80fd5b5061030e610309366004610ced565b610a0d565b6040519015158152602001610135565b348015610329575f80fd5b50610219610338366004610d2a565b610a80565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526103a19190810190610d75565b92915050565b604051635c46a7ef60e11b81526001600160a01b0387169063b88d4fde906103db9088908890889088908890600401610e1d565b5f604051808303815f87803b1580156103f2575f80fd5b505af1158015610404573d5f803e3d5ffd5b50505050505050505050565b60405163020604bf60e21b8152600481018290525f906001600160a01b0384169063081812fc906024015b602060405180830381865afa158015610456573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610e6f565b9392505050565b6040516001600160a01b03838116602483015282151560448301525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a22cb46560e01b179052516104da9190610e8a565b5f60405180830381855af49150503d805f8114610512576040519150601f19603f3d011682016040523d82523d5f602084013e610517565b606091505b50509050806105645760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b60448201526064015b60405180910390fd5b50505050565b6040516323b872dd60e01b81526001600160a01b0384811660048301528381166024830152604482018390528516906323b872dd906064015b5f604051808303815f87803b1580156105ba575f80fd5b505af11580156105cc573d5f803e3d5ffd5b5050505050505050565b6040516331a9108f60e11b8152600481018290525f906001600160a01b03841690636352211e9060240161043b565b60405163a22cb46560e01b81526001600160a01b038381166004830152821515602483015284169063a22cb465906044015b5f604051808303815f87803b15801561064e575f80fd5b505af1158015610660573d5f803e3d5ffd5b50505050505050565b604051632f745c5960e01b81526001600160a01b038381166004830152602482018390525f9190851690632f745c5990604401602060405180830381865afa1580156106b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ea5565b949350505050565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516104da9190610e8a565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561037a573d5f803e3d5ffd5b604051634f6ccce760e01b8152600481018290525f906001600160a01b03841690634f6ccce7906024015b602060405180830381865afa1580156107be573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047a9190610ea5565b604051632142170760e11b81526001600160a01b0384811660048301528381166024830152604482018390528516906342842e0e906064016105a3565b60405163095ea7b360e01b81526001600160a01b0383811660048301526024820183905284169063095ea7b390604401610637565b5f816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103a19190610ea5565b60405163c87b56dd60e01b8152600481018290526060906001600160a01b0384169063c87b56dd906024015f60405180830381865afa1580156108fa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261047a9190810190610d75565b6040516001600160a01b0384811660248301528381166044830152606482018390525f919086169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516109819190610e8a565b5f60405180830381855af49150503d805f81146109b9576040519150601f19603f3d011682016040523d82523d5f602084013e6109be565b606091505b5050905080610a065760405162461bcd60e51b815260206004820152601460248201527311195b1959d85d194818d85b1b0819985a5b195960621b604482015260640161055b565b5050505050565b60405163e985e9c560e01b81526001600160a01b03838116600483015282811660248301525f919085169063e985e9c590604401602060405180830381865afa158015610a5c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106db9190610ebc565b6040516370a0823160e01b81526001600160a01b0382811660048301525f91908416906370a08231906024016107a3565b6001600160a01b0381168114610ac5575f80fd5b50565b5f60208284031215610ad8575f80fd5b813561047a81610ab1565b5f5b83811015610afd578181015183820152602001610ae5565b50505f910152565b602081525f8251806020840152610b23816040850160208701610ae3565b601f01601f19169190910160400192915050565b5f805f805f8060a08789031215610b4c575f80fd5b8635610b5781610ab1565b95506020870135610b6781610ab1565b94506040870135610b7781610ab1565b935060608701359250608087013567ffffffffffffffff80821115610b9a575f80fd5b818901915089601f830112610bad575f80fd5b813581811115610bbb575f80fd5b8a6020828501011115610bcc575f80fd5b6020830194508093505050509295509295509295565b5f8060408385031215610bf3575f80fd5b8235610bfe81610ab1565b946020939093013593505050565b8015158114610ac5575f80fd5b5f805f60608486031215610c2b575f80fd5b8335610c3681610ab1565b92506020840135610c4681610ab1565b91506040840135610c5681610c0c565b809150509250925092565b5f805f8060808587031215610c74575f80fd5b8435610c7f81610ab1565b93506020850135610c8f81610ab1565b92506040850135610c9f81610ab1565b9396929550929360600135925050565b5f805f60608486031215610cc1575f80fd5b8335610ccc81610ab1565b92506020840135610cdc81610ab1565b929592945050506040919091013590565b5f805f60608486031215610cff575f80fd5b8335610d0a81610ab1565b92506020840135610d1a81610ab1565b91506040840135610c5681610ab1565b5f8060408385031215610d3b575f80fd5b8235610d4681610ab1565b91506020830135610d5681610ab1565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610d85575f80fd5b815167ffffffffffffffff80821115610d9c575f80fd5b818401915084601f830112610daf575f80fd5b815181811115610dc157610dc1610d61565b604051601f8201601f19908116603f01168101908382118183101715610de957610de9610d61565b81604052828152876020848701011115610e01575f80fd5b610e12836020830160208801610ae3565b979650505050505050565b5f6001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a0601f19601f85011683010190509695505050505050565b5f60208284031215610e7f575f80fd5b815161047a81610ab1565b5f8251610e9b818460208701610ae3565b9190910192915050565b5f60208284031215610eb5575f80fd5b5051919050565b5f60208284031215610ecc575f80fd5b815161047a81610c0c56fea2646970667358221220bc46a38c11bce85f591ccc1d02b99e81c7a6ba28b62a5a4c013ea559bd8f2c1c64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol/HRC904Contract.json b/artifacts/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol/HRC904Contract.json deleted file mode 100644 index 6cba8fe4f..000000000 --- a/artifacts/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol/HRC904Contract.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "HRC904Contract", - "sourceName": "contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "cancelAirdropFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "internalType": "int64", - "name": "serial", - "type": "int64" - } - ], - "name": "cancelAirdropNFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "claimAirdropFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "int64", - "name": "serial", - "type": "int64" - } - ], - "name": "claimAirdropNFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - } - ], - "name": "rejectTokenFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "int64[]", - "name": "serialNumbers", - "type": "int64[]" - } - ], - "name": "rejectTokenNFTs", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bool", - "name": "enableAutoAssociations", - "type": "bool" - } - ], - "name": "setUnlimitedAssociations", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561000f575f80fd5b506105bb8061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c8063b1711d5411610058578063b1711d54146100ce578063cec8cb7a146100e1578063e1588b8e146100f4578063ed6c8f5e14610107575f80fd5b806332ea43071461007e57806375371d8f146100a857806385047407146100bb575b5f80fd5b61009161008c36600461035a565b61011a565b60405160079190910b815260200160405180910390f35b6100916100b63660046103a7565b61018e565b6100916100c93660046103eb565b61020d565b6100916100dc366004610438565b61023d565b6100916100ef3660046103a7565b61026b565b61009161010236600461050b565b6102a6565b61009161011536600461035a565b61030e565b60405163541de2d960e11b81526001600160a01b0382811660048301525f919084169063a83bc5b2906024015b6020604051808303815f875af1158015610163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101879190610524565b9392505050565b6040516363ada5d760e01b81526001600160a01b038381166004830152600783900b60248301525f91908516906363ada5d7906044015b6020604051808303815f875af11580156101e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102059190610524565b949350505050565b60405163f5677e9960e01b815281151560048201525f906001600160a01b0384169063f5677e9990602401610147565b604051635434e3c560e11b81525f906001600160a01b0384169063a869c78a9061014790859060040161053f565b60405163ad4917cf60e01b81526001600160a01b038381166004830152600783900b60248301525f919085169063ad4917cf906044016101c5565b5f816001600160a01b03166376c6b3916040518163ffffffff1660e01b81526004016020604051808303815f875af11580156102e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103089190610524565b92915050565b60405163cef5b70560e01b81526001600160a01b0382811660048301525f919084169063cef5b70590602401610147565b80356001600160a01b0381168114610355575f80fd5b919050565b5f806040838503121561036b575f80fd5b6103748361033f565b91506103826020840161033f565b90509250929050565b8060070b8114610399575f80fd5b50565b80356103558161038b565b5f805f606084860312156103b9575f80fd5b6103c28461033f565b92506103d06020850161033f565b915060408401356103e08161038b565b809150509250925092565b5f80604083850312156103fc575f80fd5b6104058361033f565b915060208301358015158114610419575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610449575f80fd5b6104528361033f565b915060208084013567ffffffffffffffff8082111561046f575f80fd5b818601915086601f830112610482575f80fd5b81358181111561049457610494610424565b8060051b604051601f19603f830116810181811085821117156104b9576104b9610424565b6040529182528482019250838101850191898311156104d6575f80fd5b938501935b828510156104fb576104ec8561039c565b845293850193928501926104db565b8096505050505050509250929050565b5f6020828403121561051b575f80fd5b6101878261033f565b5f60208284031215610534575f80fd5b81516101878161038b565b602080825282518282018190525f9190848201906040850190845b8181101561057957835160070b8352928401929184019160010161055a565b5090969550505050505056fea26469706673582212203e44b739ad7dad9cb033ed1fe25f35444cac75b2441edbc67ced89f92a7981ad64736f6c63430008180033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061007a575f3560e01c8063b1711d5411610058578063b1711d54146100ce578063cec8cb7a146100e1578063e1588b8e146100f4578063ed6c8f5e14610107575f80fd5b806332ea43071461007e57806375371d8f146100a857806385047407146100bb575b5f80fd5b61009161008c36600461035a565b61011a565b60405160079190910b815260200160405180910390f35b6100916100b63660046103a7565b61018e565b6100916100c93660046103eb565b61020d565b6100916100dc366004610438565b61023d565b6100916100ef3660046103a7565b61026b565b61009161010236600461050b565b6102a6565b61009161011536600461035a565b61030e565b60405163541de2d960e11b81526001600160a01b0382811660048301525f919084169063a83bc5b2906024015b6020604051808303815f875af1158015610163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101879190610524565b9392505050565b6040516363ada5d760e01b81526001600160a01b038381166004830152600783900b60248301525f91908516906363ada5d7906044015b6020604051808303815f875af11580156101e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102059190610524565b949350505050565b60405163f5677e9960e01b815281151560048201525f906001600160a01b0384169063f5677e9990602401610147565b604051635434e3c560e11b81525f906001600160a01b0384169063a869c78a9061014790859060040161053f565b60405163ad4917cf60e01b81526001600160a01b038381166004830152600783900b60248301525f919085169063ad4917cf906044016101c5565b5f816001600160a01b03166376c6b3916040518163ffffffff1660e01b81526004016020604051808303815f875af11580156102e4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103089190610524565b92915050565b60405163cef5b70560e01b81526001600160a01b0382811660048301525f919084169063cef5b70590602401610147565b80356001600160a01b0381168114610355575f80fd5b919050565b5f806040838503121561036b575f80fd5b6103748361033f565b91506103826020840161033f565b90509250929050565b8060070b8114610399575f80fd5b50565b80356103558161038b565b5f805f606084860312156103b9575f80fd5b6103c28461033f565b92506103d06020850161033f565b915060408401356103e08161038b565b809150509250925092565b5f80604083850312156103fc575f80fd5b6104058361033f565b915060208301358015158114610419575f80fd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215610449575f80fd5b6104528361033f565b915060208084013567ffffffffffffffff8082111561046f575f80fd5b818601915086601f830112610482575f80fd5b81358181111561049457610494610424565b8060051b604051601f19603f830116810181811085821117156104b9576104b9610424565b6040529182528482019250838101850191898311156104d6575f80fd5b938501935b828510156104fb576104ec8561039c565b845293850193928501926104db565b8096505050505050509250929050565b5f6020828403121561051b575f80fd5b6101878261033f565b5f60208284031215610534575f80fd5b81516101878161038b565b602080825282518282018190525f9190848201906040850190845b8181101561057957835160070b8352928401929184019160010161055a565b5090969550505050505056fea26469706673582212203e44b739ad7dad9cb033ed1fe25f35444cac75b2441edbc67ced89f92a7981ad64736f6c63430008180033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/system-contracts/hedera-token-service/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json b/artifacts/contracts/system-contracts/hedera-token-service/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json index 2008a87b8..9ba90c615 100644 --- a/artifacts/contracts/system-contracts/hedera-token-service/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json +++ b/artifacts/contracts/system-contracts/hedera-token-service/examples/token-manage/TokenManagementContract.sol/TokenManagementContract.json @@ -922,8 +922,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561000f575f80fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c5560065f5260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a556122ab806101235f395ff3fe608060405234801561000f575f80fd5b506004361061015b575f3560e01c8063815228c0116100c3578063df6c06f511610088578063f7be342511610063578063f7be342514610314578063f848fec414610327578063fad0038a1461033a575f80fd5b8063df6c06f5146102c3578063f25b1200146102d6578063f52177ee146102e9575f80fd5b8063815228c0146102645780639b23d3d914610277578063a345f7bd1461028a578063b26d33cb1461029d578063c1139a2e146102b0575f80fd5b806336348de31161012357806356af8403116100fe57806356af84031461021d578063618dc65e146102305780637d3e5da814610251575f80fd5b806336348de3146101e45780634504f884146101f75780634d8f27c91461020a575f80fd5b806315dacbea1461015f5780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be5780632eecbca3146101d1575b5f80fd5b61017261016d3660046110d4565b61034d565b60405160079190910b81526020015b60405180910390f35b61019d610198366004611217565b61043c565b604051908152602001610181565b61019d6101b93660046112c2565b610481565b61019d6101cc3660046112db565b6104f9565b6101726101df3660046112db565b610527565b61019d6101f2366004611566565b610569565b61019d61020536600461176c565b610574565b6101726102183660046118ac565b6105e5565b61019d61022b36600461195c565b6105f0565b61024361023e3660046119b6565b610630565b604051610181929190611a44565b61019d61025f3660046112db565b610747565b61019d610272366004611a64565b610752565b6101726102853660046110d4565b61075d565b61019d6102983660046112c2565b6107a1565b61019d6102ab3660046112db565b6107e4565b61019d6102be366004611a8d565b6107ef565b61019d6102d1366004611bb9565b6107fb565b61019d6102e4366004611bf2565b610807565b6102fc6102f7366004611c32565b610813565b6040805192835260079190910b602083015201610181565b61019d6103223660046112c2565b610859565b61019d610335366004611bb9565b6108c8565b61019d610348366004611c5d565b6108d4565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103cb9190611ca1565b5f604051808303815f865af19150503d805f8114610404576040519150601f19603f3d011682016040523d82523d5f602084013e610409565b606091505b50915091508161041a57601561042e565b8080602001905181019061042e9190611ccd565b60030b979650505050505050565b5f61044783836108e0565b90505f805160206122568339815191528160405161046791815260200190565b60405180910390a16016811461047b575f80fd5b92915050565b5f61048b826109b7565b90505f80516020612256833981519152816040516104ab91815260200190565b60405180910390a1601681146104bf575f80fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b5f6105048383610a8c565b60070b90505f805160206122568339815191528160405161046791815260200190565b5f6105328383610ac1565b604051600782900b81529091505f805160206122568339815191529060200160405180910390a1600781900b60161461047b575f80fd5b5f6104478383610af6565b5f610580848484610b20565b60070b90505f80516020612256833981519152816040516105a391815260200190565b60405180910390a1601681146105de576105bc81610bfa565b60405162461bcd60e51b81526004016105d59190611ce6565b60405180910390fd5b9392505050565b5f6105328383610c97565b5f6105fc848484610cc1565b90505f805160206122568339815191528160405161061c91815260200190565b60405180910390a1601681146105de575f80fd5b5f60605f806101676001600160a01b031663618dc65e60e01b878760405160240161065c929190611cf8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161069a9190611ca1565b5f604051808303815f865af19150503d805f81146106d3576040519150601f19603f3d011682016040523d82523d5f602084013e6106d8565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161070e929190611d19565b60405180910390a18161073157601560405180602001604052805f815250610735565b6016815b60039190910b97909650945050505050565b5f6105048383610ced565b5f6104478383610d22565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790639b23d3d960e01b9060a40161038d565b5f6107ab82610d4c565b90505f80516020612256833981519152816040516107cb91815260200190565b60405180910390a1601681146107df575f80fd5b919050565b5f6104478383610d79565b5f610580848484610dae565b5f6105fc848484610dda565b5f6105fc848484610e16565b5f80610820858585610e53565b60405182815291935091505f805160206122568339815191529060200160405180910390a160168214610851575f80fd5b935093915050565b5f61086382610f35565b90505f805160206122568339815191528160405161088391815260200190565b60405180910390a160168114610897575f80fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d2906020016104ec565b5f6105fc848484610f62565b5f6105fc848484610f9e565b5f805f6101676001600160a01b03166378b6391860e01b868660405160240161090a929190611d33565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109489190611ca1565b5f604051808303815f865af19150503d805f8114610981576040519150601f19603f3d011682016040523d82523d5f602084013e610986565b606091505b5091509150816109975760156109ab565b808060200190518101906109ab9190611ccd565b60030b95945050505050565b6040516001600160a01b03821660248201525f908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a1e9190611ca1565b5f604051808303815f865af19150503d805f8114610a57576040519150601f19603f3d011682016040523d82523d5f602084013e610a5c565b606091505b509150915081610a6d576015610a81565b80806020019051810190610a819190611ccd565b60030b949350505050565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906352f9138760e01b9060640161090a565b6040516001600160a01b038381166024830152821660448201525f90819081906101679063af99c63360e01b9060640161090a565b5f805f6101676001600160a01b0316637d305cfa60e01b868660405160240161090a929190611e46565b5f805f6101676001600160a01b031663d5f60c4760e01b878787604051602401610b4c93929190611fe7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b8a9190611ca1565b5f604051808303815f865af19150503d805f8114610bc3576040519150601f19603f3d011682016040523d82523d5f602084013e610bc8565b606091505b509150915081610bd9576015610bed565b80806020019051810190610bed9190611ccd565b60030b9695505050505050565b60605f610c0683610fdd565b60010190505f8167ffffffffffffffff811115610c2557610c2561111c565b6040519080825280601f01601f191660200182016040528015610c4f576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c5957509392505050565b5f805f6101676001600160a01b0316636fc3cbaf60e01b868660405160240161090a929190612092565b5f805f6101676001600160a01b031663f7f38e2660e01b878787604051602401610b4c939291906120e5565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906316e3e16160e21b9060640161090a565b5f805f6101676001600160a01b031663d27be6cd60e01b868660405160240161090a929190612119565b6040516001600160a01b03821660248201525f908190819061016790637834fb8960e11b906044016109e0565b6040516001600160a01b038381166024830152821660448201525f908190819061016790630132f29d60e31b9060640161090a565b5f805f6101676001600160a01b03166330727a2960e01b878787604051602401610b4c9392919061215c565b6040516001600160a01b03848116602483015283166044820152606481018290525f9081908190610167906307336aaf60e41b90608401610b4c565b6040516001600160a01b0384811660248301528316604482015281151560648201525f908190819061016790631b3b02e560e11b90608401610b4c565b5f805f806101676001600160a01b031663d6910d0660e01b888888604051602401610e80939291906121f6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610ebe9190611ca1565b5f604051808303815f865af19150503d805f8114610ef7576040519150601f19603f3d011682016040523d82523d5f602084013e610efc565b606091505b509150915081610f0e5760155f610f22565b80806020019051810190610f229190612220565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201525f908190819061016790633b3bff0f60e01b906044016109e0565b6040516001600160a01b03848116602483015283166044820152606481018290525f90819081906101679063e1f21c6760e01b90608401610b4c565b6040516001600160a01b03848116602483015283166044820152600782900b60648201525f90819081906101679063efef57f960e01b90608401610b4c565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611025577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611051576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061106f57662386f26fc10000830492506010015b6305f5e1008310611087576305f5e100830492506008015b612710831061109b57612710830492506004015b606483106110ad576064830492506002015b600a831061047b5760010192915050565b80356001600160a01b03811681146107df575f80fd5b5f805f80608085870312156110e7575f80fd5b6110f0856110be565b93506110fe602086016110be565b925061110c604086016110be565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156111535761115361111c565b60405290565b60405160a0810167ffffffffffffffff811182821017156111535761115361111c565b604051610120810167ffffffffffffffff811182821017156111535761115361111c565b60405160c0810167ffffffffffffffff811182821017156111535761115361111c565b604051601f8201601f1916810167ffffffffffffffff811182821017156111ec576111ec61111c565b604052919050565b5f67ffffffffffffffff82111561120d5761120d61111c565b5060051b60200190565b5f8060408385031215611228575f80fd5b611231836110be565b915060208084013567ffffffffffffffff81111561124d575f80fd5b8401601f8101861361125d575f80fd5b803561127061126b826111f4565b6111c3565b81815260059190911b8201830190838101908883111561128e575f80fd5b928401925b828410156112b3576112a4846110be565b82529284019290840190611293565b80955050505050509250929050565b5f602082840312156112d2575f80fd5b6105de826110be565b5f80604083850312156112ec575f80fd5b6112f5836110be565b9150611303602084016110be565b90509250929050565b5f82601f83011261131b575f80fd5b813567ffffffffffffffff8111156113355761133561111c565b611348601f8201601f19166020016111c3565b81815284602083860101111561135c575f80fd5b816020850160208301375f918101602001919091529392505050565b803580151581146107df575f80fd5b8060070b8114611395575f80fd5b50565b80356107df81611387565b5f82601f8301126113b2575f80fd5b813560206113c261126b836111f4565b82815260059290921b840181019181810190868411156113e0575f80fd5b8286015b848110156114e957803567ffffffffffffffff80821115611403575f80fd5b908801906040601f19838c03810182131561141c575f80fd5b611424611130565b888501358152828501358481111561143a575f80fd5b949094019360a0858e0383011215611450575f80fd5b611458611159565b9150611465898601611378565b82526114728386016110be565b8983015260608086013585811115611488575f80fd5b6114968f8c838a010161130c565b85850152506080935083860135858111156114af575f80fd5b6114bd8f8c838a010161130c565b8285015250506114cf60a086016110be565b9282019290925281880152855250509183019183016113e4565b509695505050505050565b5f60608284031215611504575f80fd5b6040516060810181811067ffffffffffffffff821117156115275761152761111c565b604052905080823561153881611387565b8152611546602084016110be565b6020820152604083013561155981611387565b6040919091015292915050565b5f8060408385031215611577575f80fd5b611580836110be565b9150602083013567ffffffffffffffff8082111561159c575f80fd5b9084019061016082870312156115b0575f80fd5b6115b861117c565b8235828111156115c6575f80fd5b6115d28882860161130c565b8252506020830135828111156115e6575f80fd5b6115f28882860161130c565b602083015250611604604084016110be565b604082015260608301358281111561161a575f80fd5b6116268882860161130c565b60608301525061163860808401611378565b608082015261164960a08401611398565b60a082015261165a60c08401611378565b60c082015260e083013582811115611670575f80fd5b61167c888286016113a3565b60e0830152506101009150611693878385016114f4565b828201528093505050509250929050565b5f82601f8301126116b3575f80fd5b813560206116c361126b836111f4565b82815260a092830285018201928282019190878511156116e1575f80fd5b8387015b8581101561175f5781818a0312156116fb575f80fd5b611703611159565b813561170e81611387565b815261171b8287016110be565b86820152604061172c818401611378565b90820152606061173d838201611378565b90820152608061174e8382016110be565b9082015284529284019281016116e5565b5090979650505050505050565b5f805f606080858703121561177f575f80fd5b611788856110be565b935060208086013567ffffffffffffffff808211156117a5575f80fd5b6117b189838a016116a4565b9550604091506040880135818111156117c8575f80fd5b88019050601f810189136117da575f80fd5b80356117e861126b826111f4565b81815260c0918202830185019185820191908c841115611806575f80fd5b938601935b8385101561189a5780858e031215611821575f80fd5b6118296111a0565b853561183481611387565b81528588013561184381611387565b818901528587013561185481611387565b818801528589013561186581611387565b818a01526080611876878201611378565b9082015260a06118878782016110be565b908201528352938401939186019161180b565b50809750505050505050509250925092565b5f80604083850312156118bd575f80fd5b6118c6836110be565b9150602083013567ffffffffffffffff8111156118e1575f80fd5b6118ed858286016113a3565b9150509250929050565b5f82601f830112611906575f80fd5b8135602061191661126b836111f4565b8083825260208201915060208460051b870101935086841115611937575f80fd5b602086015b848110156114e957803561194f81611387565b835291830191830161193c565b5f805f6060848603121561196e575f80fd5b611977846110be565b9250611985602085016110be565b9150604084013567ffffffffffffffff8111156119a0575f80fd5b6119ac868287016118f7565b9150509250925092565b5f80604083850312156119c7575f80fd5b6119d0836110be565b9150602083013567ffffffffffffffff8111156119eb575f80fd5b6118ed8582860161130c565b5f5b83811015611a115781810151838201526020016119f9565b50505f910152565b5f8151808452611a308160208601602086016119f7565b601f01601f19169290920160200192915050565b828152604060208201525f611a5c6040830184611a19565b949350505050565b5f8060808385031215611a75575f80fd5b611a7e836110be565b915061130384602085016114f4565b5f805f6060808587031215611aa0575f80fd5b611aa9856110be565b935060208086013567ffffffffffffffff80821115611ac6575f80fd5b611ad289838a016116a4565b955060409150604088013581811115611ae9575f80fd5b88019050601f81018913611afb575f80fd5b8035611b0961126b826111f4565b81815260c0918202830185019185820191908c841115611b27575f80fd5b938601935b8385101561189a5780858e031215611b42575f80fd5b611b4a6111a0565b8535611b5581611387565b815285880135611b6481611387565b8189015285870135611b7581611387565b81880152611b84868a016110be565b898201526080611b95818801611378565b9082015260a0611ba68782016110be565b9082015283529384019391860191611b2c565b5f805f60608486031215611bcb575f80fd5b611bd4846110be565b9250611be2602085016110be565b9150604084013590509250925092565b5f805f60608486031215611c04575f80fd5b611c0d846110be565b9250611c1b602085016110be565b9150611c2960408501611378565b90509250925092565b5f805f60608486031215611c44575f80fd5b611c4d846110be565b9250602084013561198581611387565b5f805f60608486031215611c6f575f80fd5b611c78846110be565b9250611c86602085016110be565b91506040840135611c9681611387565b809150509250925092565b5f8251611cb28184602087016119f7565b9190910192915050565b8051600381900b81146107df575f80fd5b5f60208284031215611cdd575f80fd5b6105de82611cbc565b602081525f6105de6020830184611a19565b6001600160a01b0383168152604060208201525f611a5c6040830184611a19565b8215158152604060208201525f611a5c6040830184611a19565b5f604082016001600160a01b0380861684526020604060208601528286518085526060870191506020880194505f5b81811015611d80578551851683529483019491830191600101611d62565b509098975050505050505050565b5f82825180855260208086019550808260051b8401018186015f5b8481101561175f57601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152611e0860e08a0186611a19565b92860151898403603f1901858b0152929450611e248584611a19565b9501511660c09790970196909652505098840198925090830190600101611da9565b6001600160a01b0383168152604060208201525f82516101606040840152611e726101a0840182611a19565b90506020840151603f1980858403016060860152611e908383611a19565b925060408601519150611eae60808601836001600160a01b03169052565b60608601519150808584030160a0860152611ec98383611a19565b925060808601519150611ee060c086018315159052565b60a08601519150611ef660e086018360070b9052565b60c08601519150610100611f0d8187018415159052565b60e087015192508186850301610120870152611f298484611d8e565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b6101808801529093509150611f679050565b50949350505050565b5f815180845260208085019450602084015f5b83811015611fdc578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611f83565b509495945050505050565b5f60606001600160a01b038087168452602060608186015261200c6060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151810b8686015289820151900b8985015260808082015115159085015260a0908101518816908401529385019360c090920191600101612026565b50909b9a5050505050505050505050565b6001600160a01b0383168152604060208201525f611a5c6040830184611d8e565b5f815180845260208085019450602084015f5b83811015611fdc57815160070b875295820195908201906001016120c6565b5f6001600160a01b0380861683528085166020840152506060604083015261211060608301846120b3565b95945050505050565b6001600160a01b0383168152608081016105de6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5f60606001600160a01b03808716845260206060818601526121816060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151900b858501528881015188168985015260808082015115159085015260a0908101518816908401529385019360c09092019160010161219b565b6001600160a01b03841681528260070b6020820152606060408201525f61211060608301846120b3565b5f8060408385031215612231575f80fd5b61223a83611cbc565b9150602083015161224a81611387565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122000815e1e8d5e44c1c5ef5363291adca35b4cba6d098837ac8c659470779b8cbb64736f6c63430008180033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061015b575f3560e01c8063815228c0116100c3578063df6c06f511610088578063f7be342511610063578063f7be342514610314578063f848fec414610327578063fad0038a1461033a575f80fd5b8063df6c06f5146102c3578063f25b1200146102d6578063f52177ee146102e9575f80fd5b8063815228c0146102645780639b23d3d914610277578063a345f7bd1461028a578063b26d33cb1461029d578063c1139a2e146102b0575f80fd5b806336348de31161012357806356af8403116100fe57806356af84031461021d578063618dc65e146102305780637d3e5da814610251575f80fd5b806336348de3146101e45780634504f884146101f75780634d8f27c91461020a575f80fd5b806315dacbea1461015f5780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be5780632eecbca3146101d1575b5f80fd5b61017261016d3660046110d4565b61034d565b60405160079190910b81526020015b60405180910390f35b61019d610198366004611217565b61043c565b604051908152602001610181565b61019d6101b93660046112c2565b610481565b61019d6101cc3660046112db565b6104f9565b6101726101df3660046112db565b610527565b61019d6101f2366004611566565b610569565b61019d61020536600461176c565b610574565b6101726102183660046118ac565b6105e5565b61019d61022b36600461195c565b6105f0565b61024361023e3660046119b6565b610630565b604051610181929190611a44565b61019d61025f3660046112db565b610747565b61019d610272366004611a64565b610752565b6101726102853660046110d4565b61075d565b61019d6102983660046112c2565b6107a1565b61019d6102ab3660046112db565b6107e4565b61019d6102be366004611a8d565b6107ef565b61019d6102d1366004611bb9565b6107fb565b61019d6102e4366004611bf2565b610807565b6102fc6102f7366004611c32565b610813565b6040805192835260079190910b602083015201610181565b61019d6103223660046112c2565b610859565b61019d610335366004611bb9565b6108c8565b61019d610348366004611c5d565b6108d4565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103cb9190611ca1565b5f604051808303815f865af19150503d805f8114610404576040519150601f19603f3d011682016040523d82523d5f602084013e610409565b606091505b50915091508161041a57601561042e565b8080602001905181019061042e9190611ccd565b60030b979650505050505050565b5f61044783836108e0565b90505f805160206122568339815191528160405161046791815260200190565b60405180910390a16016811461047b575f80fd5b92915050565b5f61048b826109b7565b90505f80516020612256833981519152816040516104ab91815260200190565b60405180910390a1601681146104bf575f80fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b5f6105048383610a8c565b60070b90505f805160206122568339815191528160405161046791815260200190565b5f6105328383610ac1565b604051600782900b81529091505f805160206122568339815191529060200160405180910390a1600781900b60161461047b575f80fd5b5f6104478383610af6565b5f610580848484610b20565b60070b90505f80516020612256833981519152816040516105a391815260200190565b60405180910390a1601681146105de576105bc81610bfa565b60405162461bcd60e51b81526004016105d59190611ce6565b60405180910390fd5b9392505050565b5f6105328383610c97565b5f6105fc848484610cc1565b90505f805160206122568339815191528160405161061c91815260200190565b60405180910390a1601681146105de575f80fd5b5f60605f806101676001600160a01b031663618dc65e60e01b878760405160240161065c929190611cf8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161069a9190611ca1565b5f604051808303815f865af19150503d805f81146106d3576040519150601f19603f3d011682016040523d82523d5f602084013e6106d8565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161070e929190611d19565b60405180910390a18161073157601560405180602001604052805f815250610735565b6016815b60039190910b97909650945050505050565b5f6105048383610ced565b5f6104478383610d22565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790639b23d3d960e01b9060a40161038d565b5f6107ab82610d4c565b90505f80516020612256833981519152816040516107cb91815260200190565b60405180910390a1601681146107df575f80fd5b919050565b5f6104478383610d79565b5f610580848484610dae565b5f6105fc848484610dda565b5f6105fc848484610e16565b5f80610820858585610e53565b60405182815291935091505f805160206122568339815191529060200160405180910390a160168214610851575f80fd5b935093915050565b5f61086382610f35565b90505f805160206122568339815191528160405161088391815260200190565b60405180910390a160168114610897575f80fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d2906020016104ec565b5f6105fc848484610f62565b5f6105fc848484610f9e565b5f805f6101676001600160a01b03166378b6391860e01b868660405160240161090a929190611d33565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109489190611ca1565b5f604051808303815f865af19150503d805f8114610981576040519150601f19603f3d011682016040523d82523d5f602084013e610986565b606091505b5091509150816109975760156109ab565b808060200190518101906109ab9190611ccd565b60030b95945050505050565b6040516001600160a01b03821660248201525f908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a1e9190611ca1565b5f604051808303815f865af19150503d805f8114610a57576040519150601f19603f3d011682016040523d82523d5f602084013e610a5c565b606091505b509150915081610a6d576015610a81565b80806020019051810190610a819190611ccd565b60030b949350505050565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906352f9138760e01b9060640161090a565b6040516001600160a01b038381166024830152821660448201525f90819081906101679063af99c63360e01b9060640161090a565b5f805f6101676001600160a01b0316637d305cfa60e01b868660405160240161090a929190611e46565b5f805f6101676001600160a01b031663d5f60c4760e01b878787604051602401610b4c93929190611fe7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b8a9190611ca1565b5f604051808303815f865af19150503d805f8114610bc3576040519150601f19603f3d011682016040523d82523d5f602084013e610bc8565b606091505b509150915081610bd9576015610bed565b80806020019051810190610bed9190611ccd565b60030b9695505050505050565b60605f610c0683610fdd565b60010190505f8167ffffffffffffffff811115610c2557610c2561111c565b6040519080825280601f01601f191660200182016040528015610c4f576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c5957509392505050565b5f805f6101676001600160a01b0316636fc3cbaf60e01b868660405160240161090a929190612092565b5f805f6101676001600160a01b031663f7f38e2660e01b878787604051602401610b4c939291906120e5565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906316e3e16160e21b9060640161090a565b5f805f6101676001600160a01b031663d27be6cd60e01b868660405160240161090a929190612119565b6040516001600160a01b03821660248201525f908190819061016790637834fb8960e11b906044016109e0565b6040516001600160a01b038381166024830152821660448201525f908190819061016790630132f29d60e31b9060640161090a565b5f805f6101676001600160a01b03166330727a2960e01b878787604051602401610b4c9392919061215c565b6040516001600160a01b03848116602483015283166044820152606481018290525f9081908190610167906307336aaf60e41b90608401610b4c565b6040516001600160a01b0384811660248301528316604482015281151560648201525f908190819061016790631b3b02e560e11b90608401610b4c565b5f805f806101676001600160a01b031663d6910d0660e01b888888604051602401610e80939291906121f6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610ebe9190611ca1565b5f604051808303815f865af19150503d805f8114610ef7576040519150601f19603f3d011682016040523d82523d5f602084013e610efc565b606091505b509150915081610f0e5760155f610f22565b80806020019051810190610f229190612220565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201525f908190819061016790633b3bff0f60e01b906044016109e0565b6040516001600160a01b03848116602483015283166044820152606481018290525f90819081906101679063e1f21c6760e01b90608401610b4c565b6040516001600160a01b03848116602483015283166044820152600782900b60648201525f90819081906101679063efef57f960e01b90608401610b4c565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611025577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611051576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061106f57662386f26fc10000830492506010015b6305f5e1008310611087576305f5e100830492506008015b612710831061109b57612710830492506004015b606483106110ad576064830492506002015b600a831061047b5760010192915050565b80356001600160a01b03811681146107df575f80fd5b5f805f80608085870312156110e7575f80fd5b6110f0856110be565b93506110fe602086016110be565b925061110c604086016110be565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156111535761115361111c565b60405290565b60405160a0810167ffffffffffffffff811182821017156111535761115361111c565b604051610120810167ffffffffffffffff811182821017156111535761115361111c565b60405160c0810167ffffffffffffffff811182821017156111535761115361111c565b604051601f8201601f1916810167ffffffffffffffff811182821017156111ec576111ec61111c565b604052919050565b5f67ffffffffffffffff82111561120d5761120d61111c565b5060051b60200190565b5f8060408385031215611228575f80fd5b611231836110be565b915060208084013567ffffffffffffffff81111561124d575f80fd5b8401601f8101861361125d575f80fd5b803561127061126b826111f4565b6111c3565b81815260059190911b8201830190838101908883111561128e575f80fd5b928401925b828410156112b3576112a4846110be565b82529284019290840190611293565b80955050505050509250929050565b5f602082840312156112d2575f80fd5b6105de826110be565b5f80604083850312156112ec575f80fd5b6112f5836110be565b9150611303602084016110be565b90509250929050565b5f82601f83011261131b575f80fd5b813567ffffffffffffffff8111156113355761133561111c565b611348601f8201601f19166020016111c3565b81815284602083860101111561135c575f80fd5b816020850160208301375f918101602001919091529392505050565b803580151581146107df575f80fd5b8060070b8114611395575f80fd5b50565b80356107df81611387565b5f82601f8301126113b2575f80fd5b813560206113c261126b836111f4565b82815260059290921b840181019181810190868411156113e0575f80fd5b8286015b848110156114e957803567ffffffffffffffff80821115611403575f80fd5b908801906040601f19838c03810182131561141c575f80fd5b611424611130565b888501358152828501358481111561143a575f80fd5b949094019360a0858e0383011215611450575f80fd5b611458611159565b9150611465898601611378565b82526114728386016110be565b8983015260608086013585811115611488575f80fd5b6114968f8c838a010161130c565b85850152506080935083860135858111156114af575f80fd5b6114bd8f8c838a010161130c565b8285015250506114cf60a086016110be565b9282019290925281880152855250509183019183016113e4565b509695505050505050565b5f60608284031215611504575f80fd5b6040516060810181811067ffffffffffffffff821117156115275761152761111c565b604052905080823561153881611387565b8152611546602084016110be565b6020820152604083013561155981611387565b6040919091015292915050565b5f8060408385031215611577575f80fd5b611580836110be565b9150602083013567ffffffffffffffff8082111561159c575f80fd5b9084019061016082870312156115b0575f80fd5b6115b861117c565b8235828111156115c6575f80fd5b6115d28882860161130c565b8252506020830135828111156115e6575f80fd5b6115f28882860161130c565b602083015250611604604084016110be565b604082015260608301358281111561161a575f80fd5b6116268882860161130c565b60608301525061163860808401611378565b608082015261164960a08401611398565b60a082015261165a60c08401611378565b60c082015260e083013582811115611670575f80fd5b61167c888286016113a3565b60e0830152506101009150611693878385016114f4565b828201528093505050509250929050565b5f82601f8301126116b3575f80fd5b813560206116c361126b836111f4565b82815260a092830285018201928282019190878511156116e1575f80fd5b8387015b8581101561175f5781818a0312156116fb575f80fd5b611703611159565b813561170e81611387565b815261171b8287016110be565b86820152604061172c818401611378565b90820152606061173d838201611378565b90820152608061174e8382016110be565b9082015284529284019281016116e5565b5090979650505050505050565b5f805f606080858703121561177f575f80fd5b611788856110be565b935060208086013567ffffffffffffffff808211156117a5575f80fd5b6117b189838a016116a4565b9550604091506040880135818111156117c8575f80fd5b88019050601f810189136117da575f80fd5b80356117e861126b826111f4565b81815260c0918202830185019185820191908c841115611806575f80fd5b938601935b8385101561189a5780858e031215611821575f80fd5b6118296111a0565b853561183481611387565b81528588013561184381611387565b818901528587013561185481611387565b818801528589013561186581611387565b818a01526080611876878201611378565b9082015260a06118878782016110be565b908201528352938401939186019161180b565b50809750505050505050509250925092565b5f80604083850312156118bd575f80fd5b6118c6836110be565b9150602083013567ffffffffffffffff8111156118e1575f80fd5b6118ed858286016113a3565b9150509250929050565b5f82601f830112611906575f80fd5b8135602061191661126b836111f4565b8083825260208201915060208460051b870101935086841115611937575f80fd5b602086015b848110156114e957803561194f81611387565b835291830191830161193c565b5f805f6060848603121561196e575f80fd5b611977846110be565b9250611985602085016110be565b9150604084013567ffffffffffffffff8111156119a0575f80fd5b6119ac868287016118f7565b9150509250925092565b5f80604083850312156119c7575f80fd5b6119d0836110be565b9150602083013567ffffffffffffffff8111156119eb575f80fd5b6118ed8582860161130c565b5f5b83811015611a115781810151838201526020016119f9565b50505f910152565b5f8151808452611a308160208601602086016119f7565b601f01601f19169290920160200192915050565b828152604060208201525f611a5c6040830184611a19565b949350505050565b5f8060808385031215611a75575f80fd5b611a7e836110be565b915061130384602085016114f4565b5f805f6060808587031215611aa0575f80fd5b611aa9856110be565b935060208086013567ffffffffffffffff80821115611ac6575f80fd5b611ad289838a016116a4565b955060409150604088013581811115611ae9575f80fd5b88019050601f81018913611afb575f80fd5b8035611b0961126b826111f4565b81815260c0918202830185019185820191908c841115611b27575f80fd5b938601935b8385101561189a5780858e031215611b42575f80fd5b611b4a6111a0565b8535611b5581611387565b815285880135611b6481611387565b8189015285870135611b7581611387565b81880152611b84868a016110be565b898201526080611b95818801611378565b9082015260a0611ba68782016110be565b9082015283529384019391860191611b2c565b5f805f60608486031215611bcb575f80fd5b611bd4846110be565b9250611be2602085016110be565b9150604084013590509250925092565b5f805f60608486031215611c04575f80fd5b611c0d846110be565b9250611c1b602085016110be565b9150611c2960408501611378565b90509250925092565b5f805f60608486031215611c44575f80fd5b611c4d846110be565b9250602084013561198581611387565b5f805f60608486031215611c6f575f80fd5b611c78846110be565b9250611c86602085016110be565b91506040840135611c9681611387565b809150509250925092565b5f8251611cb28184602087016119f7565b9190910192915050565b8051600381900b81146107df575f80fd5b5f60208284031215611cdd575f80fd5b6105de82611cbc565b602081525f6105de6020830184611a19565b6001600160a01b0383168152604060208201525f611a5c6040830184611a19565b8215158152604060208201525f611a5c6040830184611a19565b5f604082016001600160a01b0380861684526020604060208601528286518085526060870191506020880194505f5b81811015611d80578551851683529483019491830191600101611d62565b509098975050505050505050565b5f82825180855260208086019550808260051b8401018186015f5b8481101561175f57601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152611e0860e08a0186611a19565b92860151898403603f1901858b0152929450611e248584611a19565b9501511660c09790970196909652505098840198925090830190600101611da9565b6001600160a01b0383168152604060208201525f82516101606040840152611e726101a0840182611a19565b90506020840151603f1980858403016060860152611e908383611a19565b925060408601519150611eae60808601836001600160a01b03169052565b60608601519150808584030160a0860152611ec98383611a19565b925060808601519150611ee060c086018315159052565b60a08601519150611ef660e086018360070b9052565b60c08601519150610100611f0d8187018415159052565b60e087015192508186850301610120870152611f298484611d8e565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b6101808801529093509150611f679050565b50949350505050565b5f815180845260208085019450602084015f5b83811015611fdc578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611f83565b509495945050505050565b5f60606001600160a01b038087168452602060608186015261200c6060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151810b8686015289820151900b8985015260808082015115159085015260a0908101518816908401529385019360c090920191600101612026565b50909b9a5050505050505050505050565b6001600160a01b0383168152604060208201525f611a5c6040830184611d8e565b5f815180845260208085019450602084015f5b83811015611fdc57815160070b875295820195908201906001016120c6565b5f6001600160a01b0380861683528085166020840152506060604083015261211060608301846120b3565b95945050505050565b6001600160a01b0383168152608081016105de6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5f60606001600160a01b03808716845260206060818601526121816060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151900b858501528881015188168985015260808082015115159085015260a0908101518816908401529385019360c09092019160010161219b565b6001600160a01b03841681528260070b6020820152606060408201525f61211060608301846120b3565b5f8060408385031215612231575f80fd5b61223a83611cbc565b9150602083015161224a81611387565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122000815e1e8d5e44c1c5ef5363291adca35b4cba6d098837ac8c659470779b8cbb64736f6c63430008180033", + "bytecode": "0x608060405234801561000f575f80fd5b50600160208181527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb499190915560027fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688792f5560047fd9d16d34ffb15ba3a3d852f0d403e2ce1d691fb54de27ac87cd2f993f3ec330f5560087f7dfe757ecd65cbd7922a9c0161e935dd7fdbcc0e999689c7d31633896b1fc60b5560107fedc95719e9a3b28dd8e80877cb5880a9be7de1a13fc8b05e7999683b6b567643557fe2689cd4a84e23ad2f564004f1c9013e9589d260bde6380aba3ca7e09e4df40c5560065f5260407f8f331abe73332f95a25873e8b430885974c0409691f89d643119a11623a7924a556122ab806101235f395ff3fe608060405234801561000f575f80fd5b506004361061015b575f3560e01c8063815228c0116100c3578063df6c06f511610088578063f7be342511610063578063f7be342514610314578063f848fec414610327578063fad0038a1461033a575f80fd5b8063df6c06f5146102c3578063f25b1200146102d6578063f52177ee146102e9575f80fd5b8063815228c0146102645780639b23d3d914610277578063a345f7bd1461028a578063b26d33cb1461029d578063c1139a2e146102b0575f80fd5b806336348de31161012357806356af8403116100fe57806356af84031461021d578063618dc65e146102305780637d3e5da814610251575f80fd5b806336348de3146101e45780634504f884146101f75780634d8f27c91461020a575f80fd5b806315dacbea1461015f5780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be5780632eecbca3146101d1575b5f80fd5b61017261016d3660046110d4565b61034d565b60405160079190910b81526020015b60405180910390f35b61019d610198366004611217565b61043c565b604051908152602001610181565b61019d6101b93660046112c2565b610481565b61019d6101cc3660046112db565b6104f9565b6101726101df3660046112db565b610527565b61019d6101f2366004611566565b610569565b61019d61020536600461176c565b610574565b6101726102183660046118ac565b6105e5565b61019d61022b36600461195c565b6105f0565b61024361023e3660046119b6565b610630565b604051610181929190611a44565b61019d61025f3660046112db565b610747565b61019d610272366004611a64565b610752565b6101726102853660046110d4565b61075d565b61019d6102983660046112c2565b6107a1565b61019d6102ab3660046112db565b6107e4565b61019d6102be366004611a8d565b6107ef565b61019d6102d1366004611bb9565b6107fb565b61019d6102e4366004611bf2565b610807565b6102fc6102f7366004611c32565b610813565b6040805192835260079190910b602083015201610181565b61019d6103223660046112c2565b610859565b61019d610335366004611bb9565b6108c8565b61019d610348366004611c5d565b6108d4565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103cb9190611ca1565b5f604051808303815f865af19150503d805f8114610404576040519150601f19603f3d011682016040523d82523d5f602084013e610409565b606091505b50915091508161041a57601561042e565b8080602001905181019061042e9190611ccd565b60030b979650505050505050565b5f61044783836108e0565b90505f805160206122568339815191528160405161046791815260200190565b60405180910390a16016811461047b575f80fd5b92915050565b5f61048b826109b7565b90505f80516020612256833981519152816040516104ab91815260200190565b60405180910390a1601681146104bf575f80fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b5f6105048383610a8c565b60070b90505f805160206122568339815191528160405161046791815260200190565b5f6105328383610ac1565b604051600782900b81529091505f805160206122568339815191529060200160405180910390a1600781900b60161461047b575f80fd5b5f6104478383610af6565b5f610580848484610b20565b60070b90505f80516020612256833981519152816040516105a391815260200190565b60405180910390a1601681146105de576105bc81610bfa565b60405162461bcd60e51b81526004016105d59190611ce6565b60405180910390fd5b9392505050565b5f6105328383610c97565b5f6105fc848484610cc1565b90505f805160206122568339815191528160405161061c91815260200190565b60405180910390a1601681146105de575f80fd5b5f60605f806101676001600160a01b031663618dc65e60e01b878760405160240161065c929190611cf8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161069a9190611ca1565b5f604051808303815f865af19150503d805f81146106d3576040519150601f19603f3d011682016040523d82523d5f602084013e6106d8565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161070e929190611d19565b60405180910390a18161073157601560405180602001604052805f815250610735565b6016815b60039190910b97909650945050505050565b5f6105048383610ced565b5f6104478383610d22565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790639b23d3d960e01b9060a40161038d565b5f6107ab82610d4c565b90505f80516020612256833981519152816040516107cb91815260200190565b60405180910390a1601681146107df575f80fd5b919050565b5f6104478383610d79565b5f610580848484610dae565b5f6105fc848484610dda565b5f6105fc848484610e16565b5f80610820858585610e53565b60405182815291935091505f805160206122568339815191529060200160405180910390a160168214610851575f80fd5b935093915050565b5f61086382610f35565b90505f805160206122568339815191528160405161088391815260200190565b60405180910390a160168114610897575f80fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d2906020016104ec565b5f6105fc848484610f62565b5f6105fc848484610f9e565b5f805f6101676001600160a01b03166378b6391860e01b868660405160240161090a929190611d33565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109489190611ca1565b5f604051808303815f865af19150503d805f8114610981576040519150601f19603f3d011682016040523d82523d5f602084013e610986565b606091505b5091509150816109975760156109ab565b808060200190518101906109ab9190611ccd565b60030b95945050505050565b6040516001600160a01b03821660248201525f908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a1e9190611ca1565b5f604051808303815f865af19150503d805f8114610a57576040519150601f19603f3d011682016040523d82523d5f602084013e610a5c565b606091505b509150915081610a6d576015610a81565b80806020019051810190610a819190611ccd565b60030b949350505050565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906352f9138760e01b9060640161090a565b6040516001600160a01b038381166024830152821660448201525f90819081906101679063af99c63360e01b9060640161090a565b5f805f6101676001600160a01b0316637d305cfa60e01b868660405160240161090a929190611e46565b5f805f6101676001600160a01b031663d5f60c4760e01b878787604051602401610b4c93929190611fe7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b8a9190611ca1565b5f604051808303815f865af19150503d805f8114610bc3576040519150601f19603f3d011682016040523d82523d5f602084013e610bc8565b606091505b509150915081610bd9576015610bed565b80806020019051810190610bed9190611ccd565b60030b9695505050505050565b60605f610c0683610fdd565b60010190505f8167ffffffffffffffff811115610c2557610c2561111c565b6040519080825280601f01601f191660200182016040528015610c4f576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c5957509392505050565b5f805f6101676001600160a01b0316636fc3cbaf60e01b868660405160240161090a929190612092565b5f805f6101676001600160a01b031663f7f38e2660e01b878787604051602401610b4c939291906120e5565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906316e3e16160e21b9060640161090a565b5f805f6101676001600160a01b031663d27be6cd60e01b868660405160240161090a929190612119565b6040516001600160a01b03821660248201525f908190819061016790637834fb8960e11b906044016109e0565b6040516001600160a01b038381166024830152821660448201525f908190819061016790630132f29d60e31b9060640161090a565b5f805f6101676001600160a01b03166330727a2960e01b878787604051602401610b4c9392919061215c565b6040516001600160a01b03848116602483015283166044820152606481018290525f9081908190610167906307336aaf60e41b90608401610b4c565b6040516001600160a01b0384811660248301528316604482015281151560648201525f908190819061016790631b3b02e560e11b90608401610b4c565b5f805f806101676001600160a01b031663d6910d0660e01b888888604051602401610e80939291906121f6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610ebe9190611ca1565b5f604051808303815f865af19150503d805f8114610ef7576040519150601f19603f3d011682016040523d82523d5f602084013e610efc565b606091505b509150915081610f0e5760155f610f22565b80806020019051810190610f229190612220565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201525f908190819061016790633b3bff0f60e01b906044016109e0565b6040516001600160a01b03848116602483015283166044820152606481018290525f90819081906101679063e1f21c6760e01b90608401610b4c565b6040516001600160a01b03848116602483015283166044820152600782900b60648201525f90819081906101679063efef57f960e01b90608401610b4c565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611025577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611051576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061106f57662386f26fc10000830492506010015b6305f5e1008310611087576305f5e100830492506008015b612710831061109b57612710830492506004015b606483106110ad576064830492506002015b600a831061047b5760010192915050565b80356001600160a01b03811681146107df575f80fd5b5f805f80608085870312156110e7575f80fd5b6110f0856110be565b93506110fe602086016110be565b925061110c604086016110be565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156111535761115361111c565b60405290565b60405160a0810167ffffffffffffffff811182821017156111535761115361111c565b604051610120810167ffffffffffffffff811182821017156111535761115361111c565b60405160c0810167ffffffffffffffff811182821017156111535761115361111c565b604051601f8201601f1916810167ffffffffffffffff811182821017156111ec576111ec61111c565b604052919050565b5f67ffffffffffffffff82111561120d5761120d61111c565b5060051b60200190565b5f8060408385031215611228575f80fd5b611231836110be565b915060208084013567ffffffffffffffff81111561124d575f80fd5b8401601f8101861361125d575f80fd5b803561127061126b826111f4565b6111c3565b81815260059190911b8201830190838101908883111561128e575f80fd5b928401925b828410156112b3576112a4846110be565b82529284019290840190611293565b80955050505050509250929050565b5f602082840312156112d2575f80fd5b6105de826110be565b5f80604083850312156112ec575f80fd5b6112f5836110be565b9150611303602084016110be565b90509250929050565b5f82601f83011261131b575f80fd5b813567ffffffffffffffff8111156113355761133561111c565b611348601f8201601f19166020016111c3565b81815284602083860101111561135c575f80fd5b816020850160208301375f918101602001919091529392505050565b803580151581146107df575f80fd5b8060070b8114611395575f80fd5b50565b80356107df81611387565b5f82601f8301126113b2575f80fd5b813560206113c261126b836111f4565b82815260059290921b840181019181810190868411156113e0575f80fd5b8286015b848110156114e957803567ffffffffffffffff80821115611403575f80fd5b908801906040601f19838c03810182131561141c575f80fd5b611424611130565b888501358152828501358481111561143a575f80fd5b949094019360a0858e0383011215611450575f80fd5b611458611159565b9150611465898601611378565b82526114728386016110be565b8983015260608086013585811115611488575f80fd5b6114968f8c838a010161130c565b85850152506080935083860135858111156114af575f80fd5b6114bd8f8c838a010161130c565b8285015250506114cf60a086016110be565b9282019290925281880152855250509183019183016113e4565b509695505050505050565b5f60608284031215611504575f80fd5b6040516060810181811067ffffffffffffffff821117156115275761152761111c565b604052905080823561153881611387565b8152611546602084016110be565b6020820152604083013561155981611387565b6040919091015292915050565b5f8060408385031215611577575f80fd5b611580836110be565b9150602083013567ffffffffffffffff8082111561159c575f80fd5b9084019061016082870312156115b0575f80fd5b6115b861117c565b8235828111156115c6575f80fd5b6115d28882860161130c565b8252506020830135828111156115e6575f80fd5b6115f28882860161130c565b602083015250611604604084016110be565b604082015260608301358281111561161a575f80fd5b6116268882860161130c565b60608301525061163860808401611378565b608082015261164960a08401611398565b60a082015261165a60c08401611378565b60c082015260e083013582811115611670575f80fd5b61167c888286016113a3565b60e0830152506101009150611693878385016114f4565b828201528093505050509250929050565b5f82601f8301126116b3575f80fd5b813560206116c361126b836111f4565b82815260a092830285018201928282019190878511156116e1575f80fd5b8387015b8581101561175f5781818a0312156116fb575f80fd5b611703611159565b813561170e81611387565b815261171b8287016110be565b86820152604061172c818401611378565b90820152606061173d838201611378565b90820152608061174e8382016110be565b9082015284529284019281016116e5565b5090979650505050505050565b5f805f606080858703121561177f575f80fd5b611788856110be565b935060208086013567ffffffffffffffff808211156117a5575f80fd5b6117b189838a016116a4565b9550604091506040880135818111156117c8575f80fd5b88019050601f810189136117da575f80fd5b80356117e861126b826111f4565b81815260c0918202830185019185820191908c841115611806575f80fd5b938601935b8385101561189a5780858e031215611821575f80fd5b6118296111a0565b853561183481611387565b81528588013561184381611387565b818901528587013561185481611387565b818801528589013561186581611387565b818a01526080611876878201611378565b9082015260a06118878782016110be565b908201528352938401939186019161180b565b50809750505050505050509250925092565b5f80604083850312156118bd575f80fd5b6118c6836110be565b9150602083013567ffffffffffffffff8111156118e1575f80fd5b6118ed858286016113a3565b9150509250929050565b5f82601f830112611906575f80fd5b8135602061191661126b836111f4565b8083825260208201915060208460051b870101935086841115611937575f80fd5b602086015b848110156114e957803561194f81611387565b835291830191830161193c565b5f805f6060848603121561196e575f80fd5b611977846110be565b9250611985602085016110be565b9150604084013567ffffffffffffffff8111156119a0575f80fd5b6119ac868287016118f7565b9150509250925092565b5f80604083850312156119c7575f80fd5b6119d0836110be565b9150602083013567ffffffffffffffff8111156119eb575f80fd5b6118ed8582860161130c565b5f5b83811015611a115781810151838201526020016119f9565b50505f910152565b5f8151808452611a308160208601602086016119f7565b601f01601f19169290920160200192915050565b828152604060208201525f611a5c6040830184611a19565b949350505050565b5f8060808385031215611a75575f80fd5b611a7e836110be565b915061130384602085016114f4565b5f805f6060808587031215611aa0575f80fd5b611aa9856110be565b935060208086013567ffffffffffffffff80821115611ac6575f80fd5b611ad289838a016116a4565b955060409150604088013581811115611ae9575f80fd5b88019050601f81018913611afb575f80fd5b8035611b0961126b826111f4565b81815260c0918202830185019185820191908c841115611b27575f80fd5b938601935b8385101561189a5780858e031215611b42575f80fd5b611b4a6111a0565b8535611b5581611387565b815285880135611b6481611387565b8189015285870135611b7581611387565b81880152611b84868a016110be565b898201526080611b95818801611378565b9082015260a0611ba68782016110be565b9082015283529384019391860191611b2c565b5f805f60608486031215611bcb575f80fd5b611bd4846110be565b9250611be2602085016110be565b9150604084013590509250925092565b5f805f60608486031215611c04575f80fd5b611c0d846110be565b9250611c1b602085016110be565b9150611c2960408501611378565b90509250925092565b5f805f60608486031215611c44575f80fd5b611c4d846110be565b9250602084013561198581611387565b5f805f60608486031215611c6f575f80fd5b611c78846110be565b9250611c86602085016110be565b91506040840135611c9681611387565b809150509250925092565b5f8251611cb28184602087016119f7565b9190910192915050565b8051600381900b81146107df575f80fd5b5f60208284031215611cdd575f80fd5b6105de82611cbc565b602081525f6105de6020830184611a19565b6001600160a01b0383168152604060208201525f611a5c6040830184611a19565b8215158152604060208201525f611a5c6040830184611a19565b5f604082016001600160a01b0380861684526020604060208601528286518085526060870191506020880194505f5b81811015611d80578551851683529483019491830191600101611d62565b509098975050505050505050565b5f82825180855260208086019550808260051b8401018186015f5b8481101561175f57601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152611e0860e08a0186611a19565b92860151898403603f1901858b0152929450611e248584611a19565b9501511660c09790970196909652505098840198925090830190600101611da9565b6001600160a01b0383168152604060208201525f82516101606040840152611e726101a0840182611a19565b90506020840151603f1980858403016060860152611e908383611a19565b925060408601519150611eae60808601836001600160a01b03169052565b60608601519150808584030160a0860152611ec98383611a19565b925060808601519150611ee060c086018315159052565b60a08601519150611ef660e086018360070b9052565b60c08601519150610100611f0d8187018415159052565b60e087015192508186850301610120870152611f298484611d8e565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b6101808801529093509150611f679050565b50949350505050565b5f815180845260208085019450602084015f5b83811015611fdc578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611f83565b509495945050505050565b5f60606001600160a01b038087168452602060608186015261200c6060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151810b8686015289820151900b8985015260808082015115159085015260a0908101518816908401529385019360c090920191600101612026565b50909b9a5050505050505050505050565b6001600160a01b0383168152604060208201525f611a5c6040830184611d8e565b5f815180845260208085019450602084015f5b83811015611fdc57815160070b875295820195908201906001016120c6565b5f6001600160a01b0380861683528085166020840152506060604083015261211060608301846120b3565b95945050505050565b6001600160a01b0383168152608081016105de6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5f60606001600160a01b03808716845260206060818601526121816060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151900b858501528881015188168985015260808082015115159085015260a0908101518816908401529385019360c09092019160010161219b565b6001600160a01b03841681528260070b6020820152606060408201525f61211060608301846120b3565b5f8060408385031215612231575f80fd5b61223a83611cbc565b9150602083015161224a81611387565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122066ff63a03780f6d5c70f11bbbf9ed9db07f5cc3f0cf525943d67d7e6f75506c964736f6c63430008180033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061015b575f3560e01c8063815228c0116100c3578063df6c06f511610088578063f7be342511610063578063f7be342514610314578063f848fec414610327578063fad0038a1461033a575f80fd5b8063df6c06f5146102c3578063f25b1200146102d6578063f52177ee146102e9575f80fd5b8063815228c0146102645780639b23d3d914610277578063a345f7bd1461028a578063b26d33cb1461029d578063c1139a2e146102b0575f80fd5b806336348de31161012357806356af8403116100fe57806356af84031461021d578063618dc65e146102305780637d3e5da814610251575f80fd5b806336348de3146101e45780634504f884146101f75780634d8f27c91461020a575f80fd5b806315dacbea1461015f5780632abf6c551461018a5780632b256ec8146101ab5780632d73bb2e146101be5780632eecbca3146101d1575b5f80fd5b61017261016d3660046110d4565b61034d565b60405160079190910b81526020015b60405180910390f35b61019d610198366004611217565b61043c565b604051908152602001610181565b61019d6101b93660046112c2565b610481565b61019d6101cc3660046112db565b6104f9565b6101726101df3660046112db565b610527565b61019d6101f2366004611566565b610569565b61019d61020536600461176c565b610574565b6101726102183660046118ac565b6105e5565b61019d61022b36600461195c565b6105f0565b61024361023e3660046119b6565b610630565b604051610181929190611a44565b61019d61025f3660046112db565b610747565b61019d610272366004611a64565b610752565b6101726102853660046110d4565b61075d565b61019d6102983660046112c2565b6107a1565b61019d6102ab3660046112db565b6107e4565b61019d6102be366004611a8d565b6107ef565b61019d6102d1366004611bb9565b6107fb565b61019d6102e4366004611bf2565b610807565b6102fc6102f7366004611c32565b610813565b6040805192835260079190910b602083015201610181565b61019d6103223660046112c2565b610859565b61019d610335366004611bb9565b6108c8565b61019d610348366004611c5d565b6108d4565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790630aed65f560e11b9060a4015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516103cb9190611ca1565b5f604051808303815f865af19150503d805f8114610404576040519150601f19603f3d011682016040523d82523d5f602084013e610409565b606091505b50915091508161041a57601561042e565b8080602001905181019061042e9190611ccd565b60030b979650505050505050565b5f61044783836108e0565b90505f805160206122568339815191528160405161046791815260200190565b60405180910390a16016811461047b575f80fd5b92915050565b5f61048b826109b7565b90505f80516020612256833981519152816040516104ab91815260200190565b60405180910390a1601681146104bf575f80fd5b604051600181527f0c9c765845f4d139956bb8fc8decb2eec6093c9c608b809641b16054b29f0e13906020015b60405180910390a1919050565b5f6105048383610a8c565b60070b90505f805160206122568339815191528160405161046791815260200190565b5f6105328383610ac1565b604051600782900b81529091505f805160206122568339815191529060200160405180910390a1600781900b60161461047b575f80fd5b5f6104478383610af6565b5f610580848484610b20565b60070b90505f80516020612256833981519152816040516105a391815260200190565b60405180910390a1601681146105de576105bc81610bfa565b60405162461bcd60e51b81526004016105d59190611ce6565b60405180910390fd5b9392505050565b5f6105328383610c97565b5f6105fc848484610cc1565b90505f805160206122568339815191528160405161061c91815260200190565b60405180910390a1601681146105de575f80fd5b5f60605f806101676001600160a01b031663618dc65e60e01b878760405160240161065c929190611cf8565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161069a9190611ca1565b5f604051808303815f865af19150503d805f81146106d3576040519150601f19603f3d011682016040523d82523d5f602084013e6106d8565b606091505b50915091507f4af4780e06fe8cb9df64b0794fa6f01399af979175bb988e35e0e57e594567bc828260405161070e929190611d19565b60405180910390a18161073157601560405180602001604052805f815250610735565b6016815b60039190910b97909650945050505050565b5f6105048383610ced565b5f6104478383610d22565b6040516001600160a01b038581166024830152848116604483015283166064820152608481018290525f908190819061016790639b23d3d960e01b9060a40161038d565b5f6107ab82610d4c565b90505f80516020612256833981519152816040516107cb91815260200190565b60405180910390a1601681146107df575f80fd5b919050565b5f6104478383610d79565b5f610580848484610dae565b5f6105fc848484610dda565b5f6105fc848484610e16565b5f80610820858585610e53565b60405182815291935091505f805160206122568339815191529060200160405180910390a160168214610851575f80fd5b935093915050565b5f61086382610f35565b90505f805160206122568339815191528160405161088391815260200190565b60405180910390a160168114610897575f80fd5b604051600181527f319ab7084208e4afa38c6e6ff7aea9587439f2e4700746f4c7d425fea17426d2906020016104ec565b5f6105fc848484610f62565b5f6105fc848484610f9e565b5f805f6101676001600160a01b03166378b6391860e01b868660405160240161090a929190611d33565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516109489190611ca1565b5f604051808303815f865af19150503d805f8114610981576040519150601f19603f3d011682016040523d82523d5f602084013e610986565b606091505b5091509150816109975760156109ab565b808060200190518101906109ab9190611ccd565b60030b95945050505050565b6040516001600160a01b03821660248201525f908190819061016790631f106b4b60e21b906044015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610a1e9190611ca1565b5f604051808303815f865af19150503d805f8114610a57576040519150601f19603f3d011682016040523d82523d5f602084013e610a5c565b606091505b509150915081610a6d576015610a81565b80806020019051810190610a819190611ccd565b60030b949350505050565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906352f9138760e01b9060640161090a565b6040516001600160a01b038381166024830152821660448201525f90819081906101679063af99c63360e01b9060640161090a565b5f805f6101676001600160a01b0316637d305cfa60e01b868660405160240161090a929190611e46565b5f805f6101676001600160a01b031663d5f60c4760e01b878787604051602401610b4c93929190611fe7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610b8a9190611ca1565b5f604051808303815f865af19150503d805f8114610bc3576040519150601f19603f3d011682016040523d82523d5f602084013e610bc8565b606091505b509150915081610bd9576015610bed565b80806020019051810190610bed9190611ccd565b60030b9695505050505050565b60605f610c0683610fdd565b60010190505f8167ffffffffffffffff811115610c2557610c2561111c565b6040519080825280601f01601f191660200182016040528015610c4f576020820181803683370190505b5090508181016020015b5f19017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610c5957509392505050565b5f805f6101676001600160a01b0316636fc3cbaf60e01b868660405160240161090a929190612092565b5f805f6101676001600160a01b031663f7f38e2660e01b878787604051602401610b4c939291906120e5565b6040516001600160a01b038381166024830152821660448201525f9081908190610167906316e3e16160e21b9060640161090a565b5f805f6101676001600160a01b031663d27be6cd60e01b868660405160240161090a929190612119565b6040516001600160a01b03821660248201525f908190819061016790637834fb8960e11b906044016109e0565b6040516001600160a01b038381166024830152821660448201525f908190819061016790630132f29d60e31b9060640161090a565b5f805f6101676001600160a01b03166330727a2960e01b878787604051602401610b4c9392919061215c565b6040516001600160a01b03848116602483015283166044820152606481018290525f9081908190610167906307336aaf60e41b90608401610b4c565b6040516001600160a01b0384811660248301528316604482015281151560648201525f908190819061016790631b3b02e560e11b90608401610b4c565b5f805f806101676001600160a01b031663d6910d0660e01b888888604051602401610e80939291906121f6565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610ebe9190611ca1565b5f604051808303815f865af19150503d805f8114610ef7576040519150601f19603f3d011682016040523d82523d5f602084013e610efc565b606091505b509150915081610f0e5760155f610f22565b80806020019051810190610f229190612220565b60039190910b9890975095505050505050565b6040516001600160a01b03821660248201525f908190819061016790633b3bff0f60e01b906044016109e0565b6040516001600160a01b03848116602483015283166044820152606481018290525f90819081906101679063e1f21c6760e01b90608401610b4c565b6040516001600160a01b03848116602483015283166044820152600782900b60648201525f90819081906101679063efef57f960e01b90608401610b4c565b5f807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611025577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611051576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061106f57662386f26fc10000830492506010015b6305f5e1008310611087576305f5e100830492506008015b612710831061109b57612710830492506004015b606483106110ad576064830492506002015b600a831061047b5760010192915050565b80356001600160a01b03811681146107df575f80fd5b5f805f80608085870312156110e7575f80fd5b6110f0856110be565b93506110fe602086016110be565b925061110c604086016110be565b9396929550929360600135925050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156111535761115361111c565b60405290565b60405160a0810167ffffffffffffffff811182821017156111535761115361111c565b604051610120810167ffffffffffffffff811182821017156111535761115361111c565b60405160c0810167ffffffffffffffff811182821017156111535761115361111c565b604051601f8201601f1916810167ffffffffffffffff811182821017156111ec576111ec61111c565b604052919050565b5f67ffffffffffffffff82111561120d5761120d61111c565b5060051b60200190565b5f8060408385031215611228575f80fd5b611231836110be565b915060208084013567ffffffffffffffff81111561124d575f80fd5b8401601f8101861361125d575f80fd5b803561127061126b826111f4565b6111c3565b81815260059190911b8201830190838101908883111561128e575f80fd5b928401925b828410156112b3576112a4846110be565b82529284019290840190611293565b80955050505050509250929050565b5f602082840312156112d2575f80fd5b6105de826110be565b5f80604083850312156112ec575f80fd5b6112f5836110be565b9150611303602084016110be565b90509250929050565b5f82601f83011261131b575f80fd5b813567ffffffffffffffff8111156113355761133561111c565b611348601f8201601f19166020016111c3565b81815284602083860101111561135c575f80fd5b816020850160208301375f918101602001919091529392505050565b803580151581146107df575f80fd5b8060070b8114611395575f80fd5b50565b80356107df81611387565b5f82601f8301126113b2575f80fd5b813560206113c261126b836111f4565b82815260059290921b840181019181810190868411156113e0575f80fd5b8286015b848110156114e957803567ffffffffffffffff80821115611403575f80fd5b908801906040601f19838c03810182131561141c575f80fd5b611424611130565b888501358152828501358481111561143a575f80fd5b949094019360a0858e0383011215611450575f80fd5b611458611159565b9150611465898601611378565b82526114728386016110be565b8983015260608086013585811115611488575f80fd5b6114968f8c838a010161130c565b85850152506080935083860135858111156114af575f80fd5b6114bd8f8c838a010161130c565b8285015250506114cf60a086016110be565b9282019290925281880152855250509183019183016113e4565b509695505050505050565b5f60608284031215611504575f80fd5b6040516060810181811067ffffffffffffffff821117156115275761152761111c565b604052905080823561153881611387565b8152611546602084016110be565b6020820152604083013561155981611387565b6040919091015292915050565b5f8060408385031215611577575f80fd5b611580836110be565b9150602083013567ffffffffffffffff8082111561159c575f80fd5b9084019061016082870312156115b0575f80fd5b6115b861117c565b8235828111156115c6575f80fd5b6115d28882860161130c565b8252506020830135828111156115e6575f80fd5b6115f28882860161130c565b602083015250611604604084016110be565b604082015260608301358281111561161a575f80fd5b6116268882860161130c565b60608301525061163860808401611378565b608082015261164960a08401611398565b60a082015261165a60c08401611378565b60c082015260e083013582811115611670575f80fd5b61167c888286016113a3565b60e0830152506101009150611693878385016114f4565b828201528093505050509250929050565b5f82601f8301126116b3575f80fd5b813560206116c361126b836111f4565b82815260a092830285018201928282019190878511156116e1575f80fd5b8387015b8581101561175f5781818a0312156116fb575f80fd5b611703611159565b813561170e81611387565b815261171b8287016110be565b86820152604061172c818401611378565b90820152606061173d838201611378565b90820152608061174e8382016110be565b9082015284529284019281016116e5565b5090979650505050505050565b5f805f606080858703121561177f575f80fd5b611788856110be565b935060208086013567ffffffffffffffff808211156117a5575f80fd5b6117b189838a016116a4565b9550604091506040880135818111156117c8575f80fd5b88019050601f810189136117da575f80fd5b80356117e861126b826111f4565b81815260c0918202830185019185820191908c841115611806575f80fd5b938601935b8385101561189a5780858e031215611821575f80fd5b6118296111a0565b853561183481611387565b81528588013561184381611387565b818901528587013561185481611387565b818801528589013561186581611387565b818a01526080611876878201611378565b9082015260a06118878782016110be565b908201528352938401939186019161180b565b50809750505050505050509250925092565b5f80604083850312156118bd575f80fd5b6118c6836110be565b9150602083013567ffffffffffffffff8111156118e1575f80fd5b6118ed858286016113a3565b9150509250929050565b5f82601f830112611906575f80fd5b8135602061191661126b836111f4565b8083825260208201915060208460051b870101935086841115611937575f80fd5b602086015b848110156114e957803561194f81611387565b835291830191830161193c565b5f805f6060848603121561196e575f80fd5b611977846110be565b9250611985602085016110be565b9150604084013567ffffffffffffffff8111156119a0575f80fd5b6119ac868287016118f7565b9150509250925092565b5f80604083850312156119c7575f80fd5b6119d0836110be565b9150602083013567ffffffffffffffff8111156119eb575f80fd5b6118ed8582860161130c565b5f5b83811015611a115781810151838201526020016119f9565b50505f910152565b5f8151808452611a308160208601602086016119f7565b601f01601f19169290920160200192915050565b828152604060208201525f611a5c6040830184611a19565b949350505050565b5f8060808385031215611a75575f80fd5b611a7e836110be565b915061130384602085016114f4565b5f805f6060808587031215611aa0575f80fd5b611aa9856110be565b935060208086013567ffffffffffffffff80821115611ac6575f80fd5b611ad289838a016116a4565b955060409150604088013581811115611ae9575f80fd5b88019050601f81018913611afb575f80fd5b8035611b0961126b826111f4565b81815260c0918202830185019185820191908c841115611b27575f80fd5b938601935b8385101561189a5780858e031215611b42575f80fd5b611b4a6111a0565b8535611b5581611387565b815285880135611b6481611387565b8189015285870135611b7581611387565b81880152611b84868a016110be565b898201526080611b95818801611378565b9082015260a0611ba68782016110be565b9082015283529384019391860191611b2c565b5f805f60608486031215611bcb575f80fd5b611bd4846110be565b9250611be2602085016110be565b9150604084013590509250925092565b5f805f60608486031215611c04575f80fd5b611c0d846110be565b9250611c1b602085016110be565b9150611c2960408501611378565b90509250925092565b5f805f60608486031215611c44575f80fd5b611c4d846110be565b9250602084013561198581611387565b5f805f60608486031215611c6f575f80fd5b611c78846110be565b9250611c86602085016110be565b91506040840135611c9681611387565b809150509250925092565b5f8251611cb28184602087016119f7565b9190910192915050565b8051600381900b81146107df575f80fd5b5f60208284031215611cdd575f80fd5b6105de82611cbc565b602081525f6105de6020830184611a19565b6001600160a01b0383168152604060208201525f611a5c6040830184611a19565b8215158152604060208201525f611a5c6040830184611a19565b5f604082016001600160a01b0380861684526020604060208601528286518085526060870191506020880194505f5b81811015611d80578551851683529483019491830191600101611d62565b509098975050505050505050565b5f82825180855260208086019550808260051b8401018186015f5b8481101561175f57601f198684030189528151604081518552858201519150808686015281511515818601528582015160606001600160a01b038083168289015283850151935060a09250608083818a0152611e0860e08a0186611a19565b92860151898403603f1901858b0152929450611e248584611a19565b9501511660c09790970196909652505098840198925090830190600101611da9565b6001600160a01b0383168152604060208201525f82516101606040840152611e726101a0840182611a19565b90506020840151603f1980858403016060860152611e908383611a19565b925060408601519150611eae60808601836001600160a01b03169052565b60608601519150808584030160a0860152611ec98383611a19565b925060808601519150611ee060c086018315159052565b60a08601519150611ef660e086018360070b9052565b60c08601519150610100611f0d8187018415159052565b60e087015192508186850301610120870152611f298484611d8e565b908701518051600790810b61014089015260208201516001600160a01b03166101608901526040820151900b6101808801529093509150611f679050565b50949350505050565b5f815180845260208085019450602084015f5b83811015611fdc578151805160070b8852838101516001600160a01b03908116858a01526040808301511515908a01526060808301511515908a0152608091820151169088015260a09096019590820190600101611f83565b509495945050505050565b5f60606001600160a01b038087168452602060608186015261200c6060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151810b8686015289820151900b8985015260808082015115159085015260a0908101518816908401529385019360c090920191600101612026565b50909b9a5050505050505050505050565b6001600160a01b0383168152604060208201525f611a5c6040830184611d8e565b5f815180845260208085019450602084015f5b83811015611fdc57815160070b875295820195908201906001016120c6565b5f6001600160a01b0380861683528085166020840152506060604083015261211060608301846120b3565b95945050505050565b6001600160a01b0383168152608081016105de6020830184805160070b82526001600160a01b036020820151166020830152604081015160070b60408301525050565b5f60606001600160a01b03808716845260206060818601526121816060860188611f70565b8581036040878101919091528751808352838901928401905f5b818110156120815784518051600790810b855287820151810b8886015285820151900b858501528881015188168985015260808082015115159085015260a0908101518816908401529385019360c09092019160010161219b565b6001600160a01b03841681528260070b6020820152606060408201525f61211060608301846120b3565b5f8060408385031215612231575f80fd5b61223a83611cbc565b9150602083015161224a81611387565b80915050925092905056fe90a5cf4cffe88b4edbb041cfc7a8a812c48a5ec30b84640fb37690875168e3aaa264697066735822122066ff63a03780f6d5c70f11bbbf9ed9db07f5cc3f0cf525943d67d7e6f75506c964736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts-abi/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol/HRC904Contract.json b/contracts-abi/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol/HRC904Contract.json deleted file mode 100644 index 951305c05..000000000 --- a/contracts-abi/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol/HRC904Contract.json +++ /dev/null @@ -1,175 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "receiver", - "type": "address" - } - ], - "name": "cancelAirdropFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "internalType": "int64", - "name": "serial", - "type": "int64" - } - ], - "name": "cancelAirdropNFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "claimAirdropFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "int64", - "name": "serial", - "type": "int64" - } - ], - "name": "claimAirdropNFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - } - ], - "name": "rejectTokenFT", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "token", - "type": "address" - }, - { - "internalType": "int64[]", - "name": "serialNumbers", - "type": "int64[]" - } - ], - "name": "rejectTokenNFTs", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bool", - "name": "enableAutoAssociations", - "type": "bool" - } - ], - "name": "setUnlimitedAssociations", - "outputs": [ - { - "internalType": "int64", - "name": "responseCode", - "type": "int64" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol b/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol deleted file mode 100644 index c504b33c2..000000000 --- a/contracts/system-contracts/hedera-token-service/examples/hrc-904/HRC904Contract.sol +++ /dev/null @@ -1,81 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.8.7; - -import {IHRC719} from "../../IHRC719.sol"; -import {IHRC904TokenFacade} from "../../IHRC904TokenFacade.sol"; -import {IHRC904AccountFacade} from "../../../hedera-account-service/IHRC904AccountFacade.sol"; - -// @title HRC904 Contract -// @notice Provides interface for token airdrop, claim, reject and association operations -// @dev Implements HRC-904 standard for token management operations -// -// Supports the following token operations: -// - Cancelling pending airdrops for fungible and non-fungible tokens -// - Claiming pending airdrops for fungible and non-fungible tokens -// - Rejecting tokens and NFTs -// - Managing token associations and auto-association settings -contract HRC904Contract { - // @notice Cancels a pending fungible token airdrop to a receiver - // @dev Calls cancelAirdropFT on the token's HRC904 facade - // @param token The token address to cancel airdrop for - // @param receiver The address that was to receive the tokens - // @return responseCode The response code from the cancel operation (22 = success) - function cancelAirdropFT(address token, address receiver) public returns (int64 responseCode) { - return IHRC904TokenFacade(token).cancelAirdropFT(receiver); - } - - // @notice Cancels a pending non-fungible token airdrop to a receiver - // @dev Calls cancelAirdropNFT on the token's HRC904 facade - // @param token The NFT token address - // @param receiver The address that was to receive the NFT - // @param serial The serial number of the NFT - // @return responseCode The response code from the cancel operation (22 = success) - function cancelAirdropNFT(address token, address receiver, int64 serial) public returns (int64 responseCode) { - return IHRC904TokenFacade(token).cancelAirdropNFT(receiver, serial); - } - - // @notice Claims a pending fungible token airdrop from a sender - // @dev Calls claimAirdropFT on the token's HRC904 facade - // @param token The token address to claim airdrop from - // @param sender The address that sent the tokens - // @return responseCode The response code from the claim operation (22 = success) - function claimAirdropFT(address token, address sender) public returns (int64 responseCode) { - return IHRC904TokenFacade(token).claimAirdropFT(sender); - } - - // @notice Claims a pending non-fungible token airdrop from a sender - // @dev Calls claimAirdropNFT on the token's HRC904 facade - // @param token The NFT token address - // @param sender The address that sent the NFT - // @param serial The serial number of the NFT - // @return responseCode The response code from the claim operation (22 = success) - function claimAirdropNFT(address token, address sender, int64 serial) public returns (int64 responseCode) { - return IHRC904TokenFacade(token).claimAirdropNFT(sender, serial); - } - - // @notice Rejects a fungible token - // @dev Calls rejectTokenFT on the token's HRC904 facade - // @param token The token address to reject - // @return responseCode The response code from the reject operation (22 = success) - function rejectTokenFT(address token) public returns (int64 responseCode) { - return IHRC904TokenFacade(token).rejectTokenFT(); - } - - // @notice Rejects multiple non-fungible tokens - // @dev Calls rejectTokenNFTs on the token's HRC904 facade - // @param token The NFT token address - // @param serialNumbers Array of NFT serial numbers to reject - // @return responseCode The response code from the reject operation (22 = success) - function rejectTokenNFTs(address token, int64[] memory serialNumbers) public returns (int64 responseCode) { - return IHRC904TokenFacade(token).rejectTokenNFTs(serialNumbers); - } - - // @notice Sets whether an account can have unlimited automatic token associations - // @dev Calls setUnlimitedAutomaticAssociations on the account's HRC904 facade - // @param account The account address to modify - // @param enableAutoAssociations True to enable unlimited associations, false to disable - // @return responseCode The response code from the operation (22 = success) - function setUnlimitedAssociations(address account, bool enableAutoAssociations) public returns (int64 responseCode) { - return IHRC904AccountFacade(account).setUnlimitedAutomaticAssociations(enableAutoAssociations); - } -} diff --git a/test/constants.js b/test/constants.js index 44d475382..e189df8cc 100644 --- a/test/constants.js +++ b/test/constants.js @@ -204,6 +204,7 @@ const Contract = { CancunOpcodes: 'CancunOpcodes', KZGPointEvaluation: 'KZGPointEvaluation', StateRegistry: 'StateRegistry', + Airdrop: 'Airdrop', AliasAccountUtility: 'AliasAccountUtility', }; @@ -213,6 +214,7 @@ const GAS_LIMIT_1_000_000 = { gasLimit: 1_000_000 }; const GAS_LIMIT_10_000_000 = { gasLimit: 10_000_000 }; const GAS_LIMIT_800000 = { gasLimit: 800000 }; const GAS_LIMIT_8000000 = { gasLimit: 8000000 }; +const ONE_HBAR = ethers.parseEther('1'); const TOKEN_NAME = 'tokenName'; const TOKEN_SYMBOL = 'tokenSymbol'; const TOKEN_URL = 'tokenUrl'; @@ -223,6 +225,8 @@ const HOUR = 60 * MINUTE; const DAY = 24 * HOUR; const WEEK = 7 * DAY; const GWEI = 1e9; +const HTS_SYSTEM_CONTRACT_ADDRESS = '0.0.359'; +const HAS_SYSTEM_CONTRACT_ADDRESS = '0.0.362'; module.exports = { Events, @@ -234,6 +238,7 @@ module.exports = { GAS_LIMIT_10_000_000, GAS_LIMIT_800000, GAS_LIMIT_8000000, + ONE_HBAR, TOKEN_URL, TOKEN_NAME, TOKEN_SYMBOL, @@ -245,4 +250,6 @@ module.exports = { WEEK, WEI, GWEI, + HTS_SYSTEM_CONTRACT_ADDRESS, + HAS_SYSTEM_CONTRACT_ADDRESS, }; diff --git a/test/system-contracts/hedera-token-service/hrc-904/IHRC904ProxyTests.js b/test/system-contracts/hedera-token-service/hrc-904/IHRC904ProxyTests.js new file mode 100644 index 000000000..d8b26b810 --- /dev/null +++ b/test/system-contracts/hedera-token-service/hrc-904/IHRC904ProxyTests.js @@ -0,0 +1,486 @@ +/*- + * + * Hedera Smart Contracts + * + * Copyright (C) 2025 Hedera Hashgraph, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +const { expect } = require('chai'); +const { ethers } = require('hardhat'); +const utils = require('../utils'); +const Constants = require('../../../constants'); +const { Contract } = require('ethers'); + +describe('HIP904 IHRC904Facade ContractTest Suite', function () { + let airdropContract; + let tokenAddress; + let nftTokenAddress; + let tokenCreateContract; + let signers; + let owner; + let receiver; + const invalidAddress = '0x000000000000000000000000000000000000dead'; + let walletIHRC904TokenFacadeSender; + let walletIHRC904AccountFacade; + let walletIHRC904NftFacadeSender; + let walletIHRC904TokenFacadeReceiver; + let walletIHRC904NftFacadeReceiver; + let contractAddresses; + + before(async function () { + signers = await ethers.getSigners(); + airdropContract = await utils.deployContract(Constants.Contract.Airdrop); + tokenCreateContract = await utils.deployContract( + Constants.Contract.TokenCreateContract + ); + owner = signers[0].address; + receiver = ethers.Wallet.createRandom().connect(ethers.provider); + invalidSender = ethers.Wallet.createRandom().connect(ethers.provider); + + // Send some HBAR to activate the account + await signers[0].sendTransaction({ + to: receiver.address, + value: ethers.parseEther('100'), + }); + + await utils.updateAccountKeysViaHapi([ + await airdropContract.getAddress(), + await tokenCreateContract.getAddress(), + ]); + + contractAddresses = [ + await airdropContract.getAddress(), + await tokenCreateContract.getAddress(), + ]; + + tokenAddress = await utils.setupToken( + tokenCreateContract, + owner, + contractAddresses + ); + nftTokenAddress = await utils.setupNft( + tokenCreateContract, + owner, + contractAddresses + ); + + const IHRC904AccountFacade = new ethers.Interface( + (await hre.artifacts.readArtifact('IHRC904AccountFacade')).abi + ); + + walletIHRC904AccountFacade = new Contract( + receiver.address, + IHRC904AccountFacade, + receiver + ); + + const IHRC904TokenFacade = new ethers.Interface( + (await hre.artifacts.readArtifact('IHRC904TokenFacade')).abi + ); + + walletIHRC904TokenFacadeSender = new Contract( + tokenAddress, + IHRC904TokenFacade, + signers[0] + ); + + walletIHRC904NftFacadeSender = new Contract( + nftTokenAddress, + IHRC904TokenFacade, + signers[0] + ); + + walletIHRC904TokenFacadeReceiver = new Contract( + tokenAddress, + IHRC904TokenFacade, + receiver + ); + + walletIHRC904NftFacadeReceiver = new Contract( + nftTokenAddress, + IHRC904TokenFacade, + receiver + ); + + // Disabling automatic associations for receiver so all airdrops will be pending + const disableAutoAssociations = + await walletIHRC904AccountFacade.setUnlimitedAutomaticAssociations( + false, + { + gasLimit: 2_000_000, + } + ); + await disableAutoAssociations.wait(); + }); + + // Positive tests + it('should cancel a pending airdrop for a fungible token (FT)', async function () { + const airdrop = await airdropContract.tokenAirdrop( + tokenAddress, + owner, + receiver.address, + BigInt(1), + { + value: Constants.ONE_HBAR, + gasLimit: 2_000_000, + } + ); + await airdrop.wait(); + const tx = await walletIHRC904TokenFacadeSender.cancelAirdropFT( + receiver.address + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should cancel a pending airdrop for a non-fungible token (NFT)', async function () { + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + + const airdrop = await airdropContract.nftAirdrop( + nftTokenAddress, + owner, + receiver.address, + mintedTokenSerialNumber, + { + value: Constants.ONE_HBAR, + gasLimit: 2_000_000, + } + ); + await airdrop.wait(); + + const tx = await walletIHRC904NftFacadeSender.cancelAirdropNFT( + receiver.address, + mintedTokenSerialNumber + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should enable unlimited automatic associations for an account', async function () { + const tx = + await walletIHRC904AccountFacade.setUnlimitedAutomaticAssociations( + false, + { + gasLimit: 2_000_000, + } + ); + const responseCode = await utils.getHASResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should disable unlimited automatic associations for an account', async function () { + const tx = + await walletIHRC904AccountFacade.setUnlimitedAutomaticAssociations( + false, + { + gasLimit: 2_000_000, + } + ); + const responseCode = await utils.getHASResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should claim a pending airdrop for a fungible token (FT)', async function () { + const airdrop = await airdropContract.tokenAirdrop( + tokenAddress, + owner, + receiver.address, + BigInt(1), + { + value: Constants.ONE_HBAR, + gasLimit: 2_000_000, + } + ); + await airdrop.wait(); + + const tx = await walletIHRC904TokenFacadeReceiver.claimAirdropFT(owner); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should claim a pending airdrop for a non-fungible token (NFT)', async function () { + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + const airdrop = await airdropContract.nftAirdrop( + nftTokenAddress, + owner, + receiver.address, + mintedTokenSerialNumber, + { + value: Constants.ONE_HBAR, + gasLimit: 2_000_000, + } + ); + await airdrop.wait(); + + const tx = await walletIHRC904NftFacadeReceiver.claimAirdropNFT( + owner, + mintedTokenSerialNumber + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should reject tokens for a given account (FT)', async function () { + const airdrop = await airdropContract.tokenAirdrop( + tokenAddress, + owner, + receiver.address, + BigInt(1), + { + value: Constants.ONE_HBAR, + gasLimit: 2_000_000, + } + ); + await airdrop.wait(); + const tx = await walletIHRC904TokenFacadeReceiver.rejectTokenFT(); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should reject tokens for a given account and serial number (NFT)', async function () { + const nftTokenAddress = await utils.setupNft( + tokenCreateContract, + owner, + contractAddresses + ); + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + const airdrop = await airdropContract.nftAirdrop( + nftTokenAddress, + owner, + signers[1].address, + mintedTokenSerialNumber, + { + value: Constants.ONE_HBAR, + gasLimit: 2_000_000, + } + ); + await airdrop.wait(); + + const IHRC904TokenFacade = new ethers.Interface( + (await hre.artifacts.readArtifact('IHRC904TokenFacade')).abi + ); + let walletIHRC904NftFacadeReceiver = new Contract( + nftTokenAddress, + IHRC904TokenFacade, + signers[1] + ); + + await walletIHRC904NftFacadeReceiver.claimAirdropNFT( + owner, + mintedTokenSerialNumber + ); + + const tx = await walletIHRC904NftFacadeReceiver.rejectTokenNFTs([ + mintedTokenSerialNumber, + ]); + + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + it('should reject 10 tokens for a given account and serial number (NFT)', async function () { + const nftTokenAddress = await utils.setupNft( + tokenCreateContract, + owner, + contractAddresses + ); + let serialNumbers = []; + for (let i = 0; i < 10; i++) { + serialNumbers.push( + await utils.mintNFTToAddress(tokenCreateContract, nftTokenAddress) + ); + } + serialNumbers = serialNumbers.map(BigInt); + + for (let serialNumber of serialNumbers) { + const airdrop = await airdropContract.nftAirdrop( + nftTokenAddress, + owner, + signers[1].address, + serialNumber, + { + value: Constants.ONE_HBAR, + gasLimit: 2_000_000, + } + ); + await airdrop.wait(); + } + + const IHRC904TokenFacade = new ethers.Interface( + (await hre.artifacts.readArtifact('IHRC904TokenFacade')).abi + ); + let walletIHRC904NftFacadeReceiver = new Contract( + nftTokenAddress, + IHRC904TokenFacade, + signers[1] + ); + + for (let serialNumber of serialNumbers) { + await walletIHRC904NftFacadeReceiver.claimAirdropNFT(owner, serialNumber); + } + + const tx = + await walletIHRC904NftFacadeReceiver.rejectTokenNFTs(serialNumbers); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('22'); + }); + + // Negative tests + it('should fail to cancel a pending airdrop for FT when sender has no pending airdrops', async function () { + const tx = await walletIHRC904TokenFacadeSender.cancelAirdropFT( + receiver.address + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to cancel a pending airdrop for FT when receiver has no valid account', async function () { + const tx = + await walletIHRC904TokenFacadeSender.cancelAirdropFT(invalidAddress); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to cancel a pending airdrop for NFT when sender has no pending airdrops', async function () { + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + const tx = await walletIHRC904NftFacadeSender.cancelAirdropNFT( + signers[2].address, + mintedTokenSerialNumber + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to cancel a pending airdrop for NFT when receiver has no valid account', async function () { + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + const tx = await walletIHRC904NftFacadeSender.cancelAirdropNFT( + invalidAddress, + mintedTokenSerialNumber + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to claim FT airdrop with no pending airdrops', async function () { + const tx = await walletIHRC904TokenFacadeReceiver.claimAirdropFT(owner); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to claim FT airdrop with an invalid account', async function () { + const tx = + await walletIHRC904TokenFacadeReceiver.claimAirdropFT(invalidAddress); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to claim NFT airdrop with no pending airdrops', async function () { + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + const tx = await walletIHRC904NftFacadeReceiver.claimAirdropNFT( + owner, + mintedTokenSerialNumber + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to claim NFT airdrop with an invalid account', async function () { + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + const tx = await walletIHRC904NftFacadeReceiver.claimAirdropNFT( + invalidAddress, + mintedTokenSerialNumber + ); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('367'); // INVALID_PENDING_AIRDROP_ID code + }); + + it('should fail to reject FT tokens with no tokens', async function () { + const tx = await walletIHRC904TokenFacadeReceiver.rejectTokenFT(); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('178'); // INSUFFICIENT_TOKEN_BALANCE code + }); + + it('should fail to reject FT tokens with an invalid account', async function () { + // Trying to reject FT tokens with the treasury account + const tx = await walletIHRC904TokenFacadeSender.rejectTokenFT(); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('196'); // ACCOUNT_IS_TREASURY code + }); + + it('should fail to reject NFT tokens with no tokens', async function () { + const nftTokenAddress = await utils.setupNft( + tokenCreateContract, + owner, + contractAddresses + ); + const mintedTokenSerialNumber = await utils.mintNFTToAddress( + tokenCreateContract, + nftTokenAddress + ); + + const IHRC904TokenFacade = new ethers.Interface( + (await hre.artifacts.readArtifact('IHRC904TokenFacade')).abi + ); + let walletIHRC904NftFacadeReceiver = new Contract( + nftTokenAddress, + IHRC904TokenFacade, + signers[1] + ); + + const tx = await walletIHRC904NftFacadeReceiver.rejectTokenNFTs([ + mintedTokenSerialNumber, + ]); + const responseCode = await utils.getHTSResponseCode(tx.hash); + expect(responseCode).to.eq('354'); // INVALID_OWNER_ID code + }); + + // TODO: The following test is skipped because it is not supported by the current implementation in services + // It does not return the correct error code and we can currently only check if it reverts + // therefore it will be skipped until the implementation is updated + // https://github.com/hashgraph/hedera-services/issues/17534 + it.skip('should revert when trying to reject NFT tokens when 11 or more serials are provided', async function () { + let serialNumbers = []; + for (let i = 0; i < 11; i++) { + serialNumbers.push( + await utils.mintNFT(tokenCreateContract, nftTokenAddress) + ); + } + + await expect(walletIHRC904NftFacadeReceiver.rejectTokenNFTs(serialNumbers)) + .to.be.reverted; + }); +}); diff --git a/test/system-contracts/hedera-token-service/utils.js b/test/system-contracts/hedera-token-service/utils.js index e20b11a6b..5e818518f 100644 --- a/test/system-contracts/hedera-token-service/utils.js +++ b/test/system-contracts/hedera-token-service/utils.js @@ -36,6 +36,10 @@ const { ContractInfoQuery, } = require('@hashgraph/sdk'); const Constants = require('../../constants'); +const axios = require('axios'); +const { + getMirrorNodeUrl, +} = require('../native/evm-compatibility-ecrecover/utils'); class Utils { //createTokenCost is cost for creating the token, which is passed to the system-contracts. This is equivalent of 40 and 60hbars, any excess hbars are refunded. @@ -65,6 +69,19 @@ class Utils { DELEGETABLE_CONTRACT_ID: 4, }; + static async deployContract( + contractPath, + gasLimit = Constants.GAS_LIMIT_1_000_000 + ) { + const factory = await ethers.getContractFactory(contractPath); + const contract = await factory.deploy(gasLimit); + + return await ethers.getContractAt( + contractPath, + await contract.getAddress() + ); + } + static async deployERC20Mock() { const erc20MockFactory = await ethers.getContractFactory( Constants.Path.HIP583_ERC20Mock @@ -942,6 +959,89 @@ class Utils { return; } } + + static async getHTSResponseCode(txHash) { + const network = hre.network.name; + const mirrorNodeUrl = getMirrorNodeUrl(network); + const res = await axios.get( + `${mirrorNodeUrl}/contracts/results/${txHash}/actions` + ); + const precompileAction = res.data.actions.find( + (x) => x.recipient === Constants.HTS_SYSTEM_CONTRACT_ADDRESS + ); + return BigInt(precompileAction.result_data).toString(); + } + + static async getHASResponseCode(txHash) { + const network = hre.network.name; + const mirrorNodeUrl = getMirrorNodeUrl(network); + const res = await axios.get( + `${mirrorNodeUrl}/contracts/results/${txHash}/actions` + ); + const precompileAction = res.data.actions.find( + (x) => x.recipient === Constants.HAS_SYSTEM_CONTRACT_ADDRESS + ); + return BigInt(precompileAction.result_data).toString(); + } + + static async setupNft(tokenCreateContract, owner, contractAddresses) { + const nftTokenAddress = + await this.createNonFungibleTokenWithSECP256K1AdminKeyWithoutKYC( + tokenCreateContract, + owner, + this.getSignerCompressedPublicKey() + ); + + await this.updateTokenKeysViaHapi( + nftTokenAddress, + contractAddresses, + true, + true, + false, + true, + true, + true, + false + ); + + await this.associateToken( + tokenCreateContract, + nftTokenAddress, + Constants.Contract.TokenCreateContract + ); + + return nftTokenAddress; + } + + static async setupToken(tokenCreateContract, owner, contractAddresses) { + const tokenAddress = + await this.createFungibleTokenWithSECP256K1AdminKeyWithoutKYC( + tokenCreateContract, + owner, + this.getSignerCompressedPublicKey() + ); + + await this.updateTokenKeysViaHapi( + tokenAddress, + contractAddresses, + true, + true, + false, + true, + true, + true, + true, + true + ); + + await this.associateToken( + tokenCreateContract, + tokenAddress, + Constants.Contract.TokenCreateContract + ); + + return tokenAddress; + } } module.exports = Utils;