From 67b21c369f3f9728050522898dcfa4b3c9290678 Mon Sep 17 00:00:00 2001 From: nolash Date: Tue, 16 Feb 2021 15:38:32 +0100 Subject: [PATCH] Rehabilitate tests --- .../data/AddressDeclarator.bin | 2 +- python/eth_address_declarator/declarator.py | 2 +- .../data/TokenUniqueSymbolIndex.bin | 2 +- python/test_requirements.txt | 2 + .../{test_inteface.py => test_interface.py} | 0 python/tests/test_tokenendorse.py | 101 ++++++++++-------- solidity/AddressDeclarator.bin | 2 +- solidity/TokenUniqueSymbolIndex.bin | 2 +- 8 files changed, 64 insertions(+), 49 deletions(-) create mode 100644 python/test_requirements.txt rename python/tests/{test_inteface.py => test_interface.py} (100%) diff --git a/python/eth_address_declarator/data/AddressDeclarator.bin b/python/eth_address_declarator/data/AddressDeclarator.bin index 6cc6aef..6124787 100644 --- a/python/eth_address_declarator/data/AddressDeclarator.bin +++ b/python/eth_address_declarator/data/AddressDeclarator.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200140e3803806200140e833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506060336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600581908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190620000c79291906200065c565b50600560016005805490500381548110620000de57fe5b90600052602060002001434090806001815401808255809150506001900390600052602060002001600090919091909150556200012b338362000134640100000000026401000000009004565b505050620006cd565b6000806060600062000156338762000366640100000000026401000000009004565b9250600260008481526020019081526020016000205490506000811415620002f757600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190620002559291906200065c565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050039050806002600085815260200190815260200160002081905550600581815481106200032857fe5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000806060602867ffffffffffffffff811180156200038457600080fd5b506040519080825280601f01601f191660200182016040528015620003b85781602001600182028036833780820191505090505b509050606085604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015620004b2578181815181106200041e57fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028382815181106200047557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505062000407565b5084604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015620005ab578181815181106200051457fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028360148301815181106200056e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050620004fd565b506002826040518082805190602001908083835b60208310620005e45780518252602082019150602081019050602083039250620005bf565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa15801562000627573d6000803e3d6000fd5b5050506040513d60208110156200063d57600080fd5b8101908080519060200190929190505050925082935050505092915050565b8280548282559060005260206000209081019282156200069b579160200282015b828111156200069a5782518255916020019190600101906200067d565b5b509050620006aa9190620006ae565b5090565b5b80821115620006c9576000816000905550600101620006af565b5090565b610d3180620006dd6000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b36146102755780638da5cb5b1461032e578063ae47ece014610362578063d0e95db1146103c6578063ff7496b41461041e576100bb565b806301ffc9a7146100c057806322168e4f1461012357806350e0c6d31461019b5780637d64bf1d146101f3578063880ad0af1461026b575b600080fd5b61010b600480360360208110156100d657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061046a565b60405180821515815260200191505060405180910390f35b61016f6004803603604081101561013957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610471565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101dd600480360360208110156101b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f0565b6040518082815260200191505060405180910390f35b61023f6004803603604081101561020957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061053c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102736105bb565b005b6102d76004803603604081101561028b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610629565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561031a5780820151818401526020810190506102ff565b505050509050019250505060405180910390f35b6103366106c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ae6004803603604081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e4565b60405180821515815260200191505060405180910390f35b610408600480360360208110156103dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610901565b6040518082815260200191505060405180910390f35b6104546004803603604081101561043457600080fd5b81019080803590602001909291908035906020019092919050505061094d565b6040518082815260200191505060405180910390f35b6000919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106104bd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061058857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6f776e65722063616e6e6f74206265206368616e67656400000000000000000081525060200191505060405180910390fd5b60606000806106388585610984565b9150600260008381526020019081526020016000205490506005818154811061065d57fe5b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156106b157602002820191906000526020600020905b81548152602001906001019080831161069d575b50505050509250505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080606060006106f53387610984565b925060026000848152602001908152602001600020549050600081141561089357600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906107f1929190610c6c565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050039050806002600085815260200190815260200160002081905550600581815481106108c357fe5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6005828154811061095a57fe5b90600052602060002001818154811061096f57fe5b90600052602060002001600091509150505481565b6000806060602867ffffffffffffffff811180156109a157600080fd5b506040519080825280601f01601f1916602001820160405280156109d45781602001600182028036833780820191505090505b509050606085604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015610aca57818181518110610a3857fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110610a8e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050610a23565b5084604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015610bbf57818181518110610b2a57fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014830181518110610b8357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050610b15565b506002826040518082805190602001908083835b60208310610bf65780518252602082019150602081019050602083039250610bd3565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610c38573d6000803e3d6000fd5b5050506040513d6020811015610c4d57600080fd5b8101908080519060200190929190505050925082935050505092915050565b828054828255906000526020600020908101928215610ca8579160200282015b82811115610ca7578251825591602001919060010190610c8c565b5b509050610cb59190610cb9565b5090565b5b80821115610cd2576000816000905550600101610cba565b509056fea2646970667358221220d514108546e5c7028cd46823f97fbc7c70211eef191d14f42af773f7b6f2e8d464736f6c637827302e362e31322d646576656c6f702e323032312e312e382b636f6d6d69742e32376435313736350058 \ No newline at end of file +60806040523480156200001157600080fd5b5060405162001d0b38038062001d0b8339818101604052810190620000379190620007a7565b6060336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600581908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190620000b69291906200071f565b5060056001600580549050620000cd9190620008ce565b8154811062000105577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001434090806001815401808255809150506001900390600052602060002001600090919091909150556200015233836200015b640100000000026401000000009004565b50505062000a5f565b600080606060006200017d3387620003c5640100000000026401000000009004565b92506002600084815260200190815260200160002054905060008114156200031e57600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906200027c9291906200071f565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050620003329190620008ce565b90508060026000858152602001908152602001600020819055506005818154811062000387577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000806000602867ffffffffffffffff8111156200040c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156200043f5781602001600182028036833780820191505090505b50905060008560405160200162000457919062000825565b604051602081830303815290604052905060005b60148110156200057857818181518110620004af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811062000533577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200056f9062000987565b9150506200046b565b50846040516020016200058c919062000825565b604051602081830303815290604052905060005b6014811015620006bb57818181518110620005e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014836200063e919062000871565b8151811062000676577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620006b29062000987565b915050620005a0565b50600282604051620006ce919062000842565b602060405180830381855afa158015620006ec573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620007119190620007a7565b925082935050505092915050565b8280548282559060005260206000209081019282156200075e579160200282015b828111156200075d57825182559160200191906001019062000740565b5b5090506200076d919062000771565b5090565b5b808211156200078c57600081600090555060010162000772565b5090565b600081519050620007a18162000a45565b92915050565b600060208284031215620007ba57600080fd5b6000620007ca8482850162000790565b91505092915050565b620007e8620007e28262000909565b620009d5565b82525050565b6000620007fb826200085b565b62000807818562000866565b93506200081981856020860162000951565b80840191505092915050565b6000620008338284620007d3565b60148201915081905092915050565b6000620008508284620007ee565b915081905092915050565b600081519050919050565b600081905092915050565b60006200087e8262000947565b91506200088b8362000947565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008c357620008c2620009fd565b5b828201905092915050565b6000620008db8262000947565b9150620008e88362000947565b925082821015620008fe57620008fd620009fd565b5b828203905092915050565b6000620009168262000927565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200097157808201518184015260208101905062000954565b8381111562000981576000848401525b50505050565b6000620009948262000947565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620009ca57620009c9620009fd565b5b600182019050919050565b6000620009e282620009e9565b9050919050565b6000620009f68262000a2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006c0100000000000000000000000082029050919050565b62000a50816200091d565b811462000a5c57600080fd5b50565b61129c8062000a6f6000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b361461018a5780638da5cb5b146101ba578063ae47ece0146101d8578063d0e95db114610208578063ff7496b414610238576100bb565b806301ffc9a7146100c057806322168e4f146100f057806350e0c6d3146101205780637d64bf1d14610150578063880ad0af14610180575b600080fd5b6100da60048036038101906100d59190610d2c565b610268565b6040516100e79190610f49565b60405180910390f35b61010a60048036038101906101059190610cc7565b61026f565b6040516101179190610f0c565b60405180910390f35b61013a60048036038101906101359190610c26565b61031b565b6040516101479190610f9f565b60405180910390f35b61016a60048036038101906101659190610cc7565b610367565b6040516101779190610f0c565b60405180910390f35b610188610413565b005b6101a4600480360381019061019f9190610c4f565b61044e565b6040516101b19190610f27565b60405180910390f35b6101c2610512565b6040516101cf9190610f0c565b60405180910390f35b6101f260048036038101906101ed9190610c8b565b610536565b6040516101ff9190610f49565b60405180910390f35b610222600480360381019061021d9190610c26565b610789565b60405161022f9190610f9f565b60405180910390f35b610252600480360381019061024d9190610d55565b6107d5565b60405161025f9190610f64565b60405180910390f35b6000919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106102e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106103e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044590610f7f565b60405180910390fd5b606060008061045d8585610812565b915060026000838152602001908152602001600020549050600581815481106104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561050357602002820191906000526020600020905b8154815260200190600101908083116104ef575b50505050509250505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080606060006105473387610812565b92506002600084815260200190815260200160002054905060008114156106e557600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610643929190610b53565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60016005805490506106f79190611070565b90508060026000858152602001908152602001600020819055506005818154811061074b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600582815481106107e557600080fd5b9060005260206000200181815481106107fd57600080fd5b90600052602060002001600091509150505481565b6000806000602867ffffffffffffffff811115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561088a5781602001600182028036833780820191505090505b5090506000856040516020016108a09190610eda565b604051602081830303815290604052905060005b60148110156109bb578181815181106108f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110610979577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806109b390611155565b9150506108b4565b50846040516020016109cd9190610eda565b604051602081830303815290604052905060005b6014811015610af457818181518110610a23577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283601483610a7b919061101a565b81518110610ab2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610aec90611155565b9150506109e1565b50600282604051610b059190610ef5565b602060405180830381855afa158015610b22573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b459190610d03565b925082935050505092915050565b828054828255906000526020600020908101928215610b8f579160200282015b82811115610b8e578251825591602001919060010190610b73565b5b509050610b9c9190610ba0565b5090565b5b80821115610bb9576000816000905550600101610ba1565b5090565b600081359050610bcc8161120a565b92915050565b600081359050610be181611221565b92915050565b600081519050610bf681611221565b92915050565b600081359050610c0b81611238565b92915050565b600081359050610c208161124f565b92915050565b600060208284031215610c3857600080fd5b6000610c4684828501610bbd565b91505092915050565b60008060408385031215610c6257600080fd5b6000610c7085828601610bbd565b9250506020610c8185828601610bbd565b9150509250929050565b60008060408385031215610c9e57600080fd5b6000610cac85828601610bbd565b9250506020610cbd85828601610bd2565b9150509250929050565b60008060408385031215610cda57600080fd5b6000610ce885828601610bbd565b9250506020610cf985828601610c11565b9150509250929050565b600060208284031215610d1557600080fd5b6000610d2384828501610be7565b91505092915050565b600060208284031215610d3e57600080fd5b6000610d4c84828501610bfc565b91505092915050565b60008060408385031215610d6857600080fd5b6000610d7685828601610c11565b9250506020610d8785828601610c11565b9150509250929050565b6000610d9d8383610e3c565b60208301905092915050565b610db2816110a4565b82525050565b610dc9610dc4826110a4565b61119e565b82525050565b6000610dda82610fca565b610de48185610fed565b9350610def83610fba565b8060005b83811015610e20578151610e078882610d91565b9750610e1283610fe0565b925050600181019050610df3565b5085935050505092915050565b610e36816110b6565b82525050565b610e45816110c2565b82525050565b610e54816110c2565b82525050565b6000610e6582610fd5565b610e6f8185610ffe565b9350610e7f818560208601611122565b80840191505092915050565b6000610e98601783611009565b91507f6f776e65722063616e6e6f74206265206368616e6765640000000000000000006000830152602082019050919050565b610ed481611118565b82525050565b6000610ee68284610db8565b60148201915081905092915050565b6000610f018284610e5a565b915081905092915050565b6000602082019050610f216000830184610da9565b92915050565b60006020820190508181036000830152610f418184610dcf565b905092915050565b6000602082019050610f5e6000830184610e2d565b92915050565b6000602082019050610f796000830184610e4b565b92915050565b60006020820190508181036000830152610f9881610e8b565b9050919050565b6000602082019050610fb46000830184610ecb565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061102582611118565b915061103083611118565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611065576110646111c2565b5b828201905092915050565b600061107b82611118565b915061108683611118565b925082821015611099576110986111c2565b5b828203905092915050565b60006110af826110f8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611140578082015181840152602081019050611125565b8381111561114f576000848401525b50505050565b600061116082611118565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611193576111926111c2565b5b600182019050919050565b60006111a9826111b0565b9050919050565b60006111bb826111f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006c0100000000000000000000000082029050919050565b611213816110a4565b811461121e57600080fd5b50565b61122a816110c2565b811461123557600080fd5b50565b611241816110cc565b811461124c57600080fd5b50565b61125881611118565b811461126357600080fd5b5056fea2646970667358221220b195c41e2015a9efebdf328e034692ad6acccbfaf91d54c68ca396942282058664736f6c63430008000033 \ No newline at end of file diff --git a/python/eth_address_declarator/declarator.py b/python/eth_address_declarator/declarator.py index 0f14500..e1282dd 100644 --- a/python/eth_address_declarator/declarator.py +++ b/python/eth_address_declarator/declarator.py @@ -75,7 +75,7 @@ class AddressDeclarator: # self.contract.functions.add(token_address, data).transact({'from': self.signer_address}) # -def to_endorsement_key(declarator_address_hex, declaration_address_hex): +def to_declarator_key(declarator_address_hex, declaration_address_hex): h = hashlib.new('sha256') h.update(bytes.fromhex(token_address_hex[2:])) h.update(bytes.fromhex(endorser_address_hex[2:])) diff --git a/python/eth_token_index/data/TokenUniqueSymbolIndex.bin b/python/eth_token_index/data/TokenUniqueSymbolIndex.bin index 569667d..c65465d 100644 --- a/python/eth_token_index/data/TokenUniqueSymbolIndex.bin +++ b/python/eth_token_index/data/TokenUniqueSymbolIndex.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610938806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063bb34534c11610078578063bb34534c1461018d578063cbb83434146101e5578063d22057a914610203578063e2095c0714610267576100a5565b806301ffc9a7146100aa5780637ef502981461010d578063880ad0af1461014f5780638da5cb5b14610159575b600080fd5b6100f5600480360360208110156100c057600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506102bf565b60405180821515815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b81019080803590602001909291905050506103af565b6040518082815260200191505060405180910390f35b6101576103c7565b005b610161610435565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b9600480360360208110156101a357600080fd5b8101908080359060200190929190505050610459565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ed6104b2565b6040518082815260200191505060405180910390f35b61024f6004803603604081101561021957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104c2565b60405180821515815260200191505060405180910390f35b6102936004803603602081101561027d57600080fd5b8101908080359060200190929190505050610899565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600063325d15e27c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561033357600190506103aa565b6301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103a557600190506103aa565b600090505b919050565b60016020528060005260406000206000915090505481565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6f776e65722063616e6e6f74206265206368616e67656400000000000000000081525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160008481526020019081526020016000205490506002818154811061047f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000600160028054905003905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051d57600080fd5b6060600080600060608673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106105f357805182526020820191506020810190506020830392506105d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610655576040519150601f19603f3d011682016040523d82523d6000602084013e61065a565b606091505b50915091508161066957600080fd5b80806020019051602081101561067e57600080fd5b810190808051604051939291908464010000000082111561069e57600080fd5b838201915060208201858111156106b457600080fd5b82518660018202830111640100000000821117156106d157600080fd5b8083526020830192505050908051906020019080838360005b838110156107055780820151818401526020810190506106ea565b50505050905090810190601f1680156107325780820380516001836020036101000a031916815260200191505b5060405250505094506002856040518082805190602001908083835b60208310610771578051825260208201915060208101905060208303925061074e565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa1580156107b3573d6000803e3d6000fd5b5050506040513d60208110156107c857600080fd5b810190808051906020019092919050505093508388146107e757600080fd5b600160008581526020019081526020016000205492506000831461080a57600080fd5b60028054905060016000868152602001908152602001600020819055506002879080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019550505050505092915050565b6000600260018301815481106108ab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905091905056fea2646970667358221220ce760022fc7bb7f92ad2fd58865b52c3c6f9908d39e825564e6ea958b598504964736f6c637827302e362e31322d646576656c6f702e323032312e312e382b636f6d6d69742e32376435313736350058 \ No newline at end of file +608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cac806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063bb34534c11610078578063bb34534c14610132578063cbb8343414610162578063d22057a914610180578063e2095c07146101b0576100a5565b806301ffc9a7146100aa5780637ef50298146100da578063880ad0af1461010a5780638da5cb5b14610114575b600080fd5b6100c460048036038101906100bf9190610840565b6101e0565b6040516100d191906109a3565b60405180910390f35b6100f460048036038101906100ef91906107b2565b6102d0565b60405161010191906109de565b60405180910390f35b6101126102e8565b005b61011c610323565b6040516101299190610988565b60405180910390f35b61014c600480360381019061014791906107b2565b610347565b6040516101599190610988565b60405180910390f35b61016a6103cd565b60405161017791906109de565b60405180910390f35b61019a60048036038101906101959190610804565b6103e6565b6040516101a791906109a3565b60405180910390f35b6101ca60048036038101906101c591906108aa565b610667565b6040516101d79190610988565b60405180910390f35b600063325d15e27c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561025457600190506102cb565b6301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102c657600190506102cb565b600090505b919050565b60016020528060005260406000206000915090505481565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031a906109be565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160008481526020019081526020016000205490506002818154811061039a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600060016002805490506103e19190610ad7565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b60606000806000808673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104f09190610971565b6000604051808303816000865af19150503d806000811461052d576040519150601f19603f3d011682016040523d82523d6000602084013e610532565b606091505b50915091508161054157600080fd5b808060200190518101906105559190610869565b94506002856040516105679190610971565b602060405180830381855afa158015610584573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906105a791906107db565b93508388146105b557600080fd5b60016000858152602001908152602001600020549250600083146105d857600080fd5b60028054905060016000868152602001908152602001600020819055506002879080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019550505050505092915050565b600060026001836106789190610a81565b815481106106af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106f46106ef84610a2a565b6109f9565b90508281526020810184848401111561070c57600080fd5b610717848285610b89565b509392505050565b60008135905061072e81610c1a565b92915050565b60008135905061074381610c31565b92915050565b60008151905061075881610c31565b92915050565b60008135905061076d81610c48565b92915050565b600082601f83011261078457600080fd5b81516107948482602086016106e1565b91505092915050565b6000813590506107ac81610c5f565b92915050565b6000602082840312156107c457600080fd5b60006107d284828501610734565b91505092915050565b6000602082840312156107ed57600080fd5b60006107fb84828501610749565b91505092915050565b6000806040838503121561081757600080fd5b600061082585828601610734565b92505060206108368582860161071f565b9150509250929050565b60006020828403121561085257600080fd5b60006108608482850161075e565b91505092915050565b60006020828403121561087b57600080fd5b600082015167ffffffffffffffff81111561089557600080fd5b6108a184828501610773565b91505092915050565b6000602082840312156108bc57600080fd5b60006108ca8482850161079d565b91505092915050565b6108dc81610b0b565b82525050565b6108eb81610b1d565b82525050565b60006108fc82610a5a565b6109068185610a65565b9350610916818560208601610b89565b80840191505092915050565b600061092f601783610a70565b91507f6f776e65722063616e6e6f74206265206368616e6765640000000000000000006000830152602082019050919050565b61096b81610b7f565b82525050565b600061097d82846108f1565b915081905092915050565b600060208201905061099d60008301846108d3565b92915050565b60006020820190506109b860008301846108e2565b92915050565b600060208201905081810360008301526109d781610922565b9050919050565b60006020820190506109f36000830184610962565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610a2057610a1f610beb565b5b8060405250919050565b600067ffffffffffffffff821115610a4557610a44610beb565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610a8c82610b7f565b9150610a9783610b7f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610acc57610acb610bbc565b5b828201905092915050565b6000610ae282610b7f565b9150610aed83610b7f565b925082821015610b0057610aff610bbc565b5b828203905092915050565b6000610b1682610b5f565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610ba7578082015181840152602081019050610b8c565b83811115610bb6576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610c2381610b0b565b8114610c2e57600080fd5b50565b610c3a81610b29565b8114610c4557600080fd5b50565b610c5181610b33565b8114610c5c57600080fd5b50565b610c6881610b7f565b8114610c7357600080fd5b5056fea2646970667358221220ed793e808a1b3d8da182de33941a4b54f28a143f42ff73df90a085bdbcde321364736f6c63430008000033 \ No newline at end of file diff --git a/python/test_requirements.txt b/python/test_requirements.txt new file mode 100644 index 0000000..3a6b7f7 --- /dev/null +++ b/python/test_requirements.txt @@ -0,0 +1,2 @@ +eth-tester==0.5.0b2 +py-evm==0.3.0a20 diff --git a/python/tests/test_inteface.py b/python/tests/test_interface.py similarity index 100% rename from python/tests/test_inteface.py rename to python/tests/test_interface.py diff --git a/python/tests/test_tokenendorse.py b/python/tests/test_tokenendorse.py index d191c09..7076673 100644 --- a/python/tests/test_tokenendorse.py +++ b/python/tests/test_tokenendorse.py @@ -16,6 +16,7 @@ logging.getLogger('eth.vm').setLevel(logging.WARNING) testdir = os.path.dirname(__file__) +description = '0x{:<064s}'.format(b'foo'.hex()) class Test(unittest.TestCase): @@ -27,21 +28,20 @@ class Test(unittest.TestCase): }) # create store of used accounts - f = open(os.path.join(testdir, '../eth_token_endorser/data/TokenEndorser.bin'), 'r') + f = open(os.path.join(testdir, '../eth_address_declarator/data/AddressDeclarator.bin'), 'r') bytecode = f.read() f.close() - f = open(os.path.join(testdir, '../eth_token_endorser/data/TokenEndorser.json'), 'r') + f = open(os.path.join(testdir, '../eth_address_declarator/data/AddressDeclarator.json'), 'r') self.abi = json.load(f) f.close() - - + backend = eth_tester.PyEVMBackend(eth_params) self.eth_tester = eth_tester.EthereumTester(backend) provider = web3.Web3.EthereumTesterProvider(self.eth_tester) self.w3 = web3.Web3(provider) c = self.w3.eth.contract(abi=self.abi, bytecode=bytecode) - tx_hash = c.constructor().transact({'from': self.w3.eth.accounts[0]}) + tx_hash = c.constructor(description).transact({'from': self.w3.eth.accounts[0]}) r = self.w3.eth.getTransactionReceipt(tx_hash) @@ -49,11 +49,11 @@ class Test(unittest.TestCase): # create token - f = open(os.path.join(testdir, '../eth_token_endorser/data/GiftableToken.bin'), 'r') + f = open(os.path.join(testdir, '../eth_address_declarator/data/GiftableToken.bin'), 'r') bytecode = f.read() f.close() - f = open(os.path.join(testdir, '../eth_token_endorser/data/GiftableToken.json'), 'r') + f = open(os.path.join(testdir, '../eth_address_declarator/data/GiftableToken.json'), 'r') self.abi_token = json.load(f) f.close() @@ -80,55 +80,68 @@ class Test(unittest.TestCase): c = self.w3.eth.contract(abi=self.abi, address=self.address) d = '0x' + os.urandom(32).hex() - c.functions.add(self.address_token_one, d).transact({'from': self.w3.eth.accounts[0]}) + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[0]}) + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) + c.functions.addDeclaration(self.address_token_two, d).transact({'from': self.w3.eth.accounts[0]}) - with self.assertRaises(Exception): - c.functions.add(self.address_token_one, d).transact({'from': self.w3.eth.accounts[0]}) - - c.functions.add(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) - c.functions.add(self.address_token_two, d).transact({'from': self.w3.eth.accounts[0]}) - c.functions.add(self.address_token_two, d).transact({'from': self.w3.eth.accounts[1]}) + self.assertEqual(c.functions.declaratorCount(self.address_token_one).call(), 2) + self.assertEqual(c.functions.declaratorCount(self.address_token_two).call(), 1) - def test_endorsement(self): + def test_declaration(self): c = self.w3.eth.contract(abi=self.abi, address=self.address) d = '0x' + os.urandom(32).hex() - c.functions.add(self.address_token_one, d).transact({'from': self.w3.eth.accounts[0]}) - c.functions.add(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) + d_two = '0x' + os.urandom(32).hex() + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) + c.functions.addDeclaration(self.address_token_one, d_two).transact({'from': self.w3.eth.accounts[1]}) + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[2]}) + c.functions.addDeclaration(self.address_token_two, d).transact({'from': self.w3.eth.accounts[2]}) + + proofs = c.functions.declaration(self.w3.eth.accounts[1], self.address_token_one).call() + self.assertEqual(proofs[0].hex(), d[2:]) + self.assertEqual(proofs[1].hex(), d_two[2:]) - h = hashlib.new('sha256') - h.update(bytes.fromhex(self.address_token_one[2:])) - h.update(bytes.fromhex(self.w3.eth.accounts[0][2:])) - z = h.digest() - - assert d[2:] == c.functions.endorsement(z.hex()).call().hex() - - c.functions.add(self.address_token_two, d).transact({'from': self.w3.eth.accounts[0]}) - - assert c.functions.endorsers(self.w3.eth.accounts[0], 0).call() == 1 - assert c.functions.endorsers(self.w3.eth.accounts[1], 0).call() == 1 - assert c.functions.endorsers(self.w3.eth.accounts[0], 1).call() == 2 - - assert c.functions.tokens(1).call() == self.address_token_one - assert c.functions.tokens(2).call() == self.address_token_two - - assert c.functions.tokenIndex(self.address_token_one).call() == 1 - assert c.functions.tokenIndex(self.address_token_two).call() == 2 - - - - def test_symbol_index(self): + def test_declaration_count(self): c = self.w3.eth.contract(abi=self.abi, address=self.address) + d = '0x' + os.urandom(32).hex() - c.functions.add(self.address_token_one, d).transact({'from': self.w3.eth.accounts[0]}) - c.functions.add(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) - c.functions.add(self.address_token_two, d).transact({'from': self.w3.eth.accounts[1]}) + d_two = '0x' + os.urandom(32).hex() + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) + c.functions.addDeclaration(self.address_token_one, d_two).transact({'from': self.w3.eth.accounts[1]}) + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[2]}) + c.functions.addDeclaration(self.address_token_two, d).transact({'from': self.w3.eth.accounts[2]}) - self.assertEqual(c.functions.tokenSymbolIndex('FOO').call(), self.address_token_one); - self.assertEqual(c.functions.tokenSymbolIndex('BAR').call(), self.address_token_two); + self.assertEqual(c.functions.declarationCount(self.w3.eth.accounts[1]).call(), 1) + self.assertEqual(c.functions.declarationCount(self.w3.eth.accounts[2]).call(), 2) + + def test_declarator_to_subject(self): + c = self.w3.eth.contract(abi=self.abi, address=self.address) + + d = '0x' + os.urandom(32).hex() + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[2]}) + c.functions.addDeclaration(self.address_token_two, d).transact({'from': self.w3.eth.accounts[1]}) + + + self.assertEqual(c.functions.declarationAddressAt(self.w3.eth.accounts[1], 0).call(), self.address_token_one) + self.assertEqual(c.functions.declarationAddressAt(self.w3.eth.accounts[2], 0).call(), self.address_token_one) + self.assertEqual(c.functions.declarationAddressAt(self.w3.eth.accounts[1], 1).call(), self.address_token_two) + + + def test_subject_to_declarator(self): + c = self.w3.eth.contract(abi=self.abi, address=self.address) + + d = '0x' + os.urandom(32).hex() + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[1]}) + c.functions.addDeclaration(self.address_token_one, d).transact({'from': self.w3.eth.accounts[2]}) + c.functions.addDeclaration(self.address_token_two, d).transact({'from': self.w3.eth.accounts[1]}) + + self.assertEqual(c.functions.declaratorAddressAt(self.address_token_one, 0).call(), self.w3.eth.accounts[1]) + self.assertEqual(c.functions.declaratorAddressAt(self.address_token_one, 1).call(), self.w3.eth.accounts[2]) + if __name__ == '__main__': unittest.main() diff --git a/solidity/AddressDeclarator.bin b/solidity/AddressDeclarator.bin index 6cc6aef..6124787 100644 --- a/solidity/AddressDeclarator.bin +++ b/solidity/AddressDeclarator.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b506040516200140e3803806200140e833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506060336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600581908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190620000c79291906200065c565b50600560016005805490500381548110620000de57fe5b90600052602060002001434090806001815401808255809150506001900390600052602060002001600090919091909150556200012b338362000134640100000000026401000000009004565b505050620006cd565b6000806060600062000156338762000366640100000000026401000000009004565b9250600260008481526020019081526020016000205490506000811415620002f757600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190620002559291906200065c565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050039050806002600085815260200190815260200160002081905550600581815481106200032857fe5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000806060602867ffffffffffffffff811180156200038457600080fd5b506040519080825280601f01601f191660200182016040528015620003b85781602001600182028036833780820191505090505b509050606085604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015620004b2578181815181106200041e57fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028382815181106200047557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350808060010191505062000407565b5084604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015620005ab578181815181106200051457fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000028360148301815181106200056e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050620004fd565b506002826040518082805190602001908083835b60208310620005e45780518252602082019150602081019050602083039250620005bf565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa15801562000627573d6000803e3d6000fd5b5050506040513d60208110156200063d57600080fd5b8101908080519060200190929190505050925082935050505092915050565b8280548282559060005260206000209081019282156200069b579160200282015b828111156200069a5782518255916020019190600101906200067d565b5b509050620006aa9190620006ae565b5090565b5b80821115620006c9576000816000905550600101620006af565b5090565b610d3180620006dd6000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b36146102755780638da5cb5b1461032e578063ae47ece014610362578063d0e95db1146103c6578063ff7496b41461041e576100bb565b806301ffc9a7146100c057806322168e4f1461012357806350e0c6d31461019b5780637d64bf1d146101f3578063880ad0af1461026b575b600080fd5b61010b600480360360208110156100d657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916906020019092919050505061046a565b60405180821515815260200191505060405180910390f35b61016f6004803603604081101561013957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610471565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101dd600480360360208110156101b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f0565b6040518082815260200191505060405180910390f35b61023f6004803603604081101561020957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061053c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102736105bb565b005b6102d76004803603604081101561028b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610629565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561031a5780820151818401526020810190506102ff565b505050509050019250505060405180910390f35b6103366106c0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ae6004803603604081101561037857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106e4565b60405180821515815260200191505060405180910390f35b610408600480360360208110156103dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610901565b6040518082815260200191505060405180910390f35b6104546004803603604081101561043457600080fd5b81019080803590602001909291908035906020019092919050505061094d565b6040518082815260200191505060405180910390f35b6000919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106104bd57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061058857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6f776e65722063616e6e6f74206265206368616e67656400000000000000000081525060200191505060405180910390fd5b60606000806106388585610984565b9150600260008381526020019081526020016000205490506005818154811061065d57fe5b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156106b157602002820191906000526020600020905b81548152602001906001019080831161069d575b50505050509250505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080606060006106f53387610984565b925060026000848152602001908152602001600020549050600081141561089357600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906107f1929190610c6c565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050039050806002600085815260200190815260200160002081905550600581815481106108c357fe5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6005828154811061095a57fe5b90600052602060002001818154811061096f57fe5b90600052602060002001600091509150505481565b6000806060602867ffffffffffffffff811180156109a157600080fd5b506040519080825280601f01601f1916602001820160405280156109d45781602001600182028036833780820191505090505b509050606085604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015610aca57818181518110610a3857fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110610a8e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050610a23565b5084604051602001808273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401915050604051602081830303815290604052905060005b6014811015610bbf57818181518110610b2a57fe5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014830181518110610b8357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080600101915050610b15565b506002826040518082805190602001908083835b60208310610bf65780518252602082019150602081019050602083039250610bd3565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015610c38573d6000803e3d6000fd5b5050506040513d6020811015610c4d57600080fd5b8101908080519060200190929190505050925082935050505092915050565b828054828255906000526020600020908101928215610ca8579160200282015b82811115610ca7578251825591602001919060010190610c8c565b5b509050610cb59190610cb9565b5090565b5b80821115610cd2576000816000905550600101610cba565b509056fea2646970667358221220d514108546e5c7028cd46823f97fbc7c70211eef191d14f42af773f7b6f2e8d464736f6c637827302e362e31322d646576656c6f702e323032312e312e382b636f6d6d69742e32376435313736350058 \ No newline at end of file +60806040523480156200001157600080fd5b5060405162001d0b38038062001d0b8339818101604052810190620000379190620007a7565b6060336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600581908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190620000b69291906200071f565b5060056001600580549050620000cd9190620008ce565b8154811062000105577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001434090806001815401808255809150506001900390600052602060002001600090919091909150556200015233836200015b640100000000026401000000009004565b50505062000a5f565b600080606060006200017d3387620003c5640100000000026401000000009004565b92506002600084815260200190815260200160002054905060008114156200031e57600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005829080600181540180825580915050600190039060005260206000200160009091909190915090805190602001906200027c9291906200071f565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600580549050620003329190620008ce565b90508060026000858152602001908152602001600020819055506005818154811062000387577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000806000602867ffffffffffffffff8111156200040c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156200043f5781602001600182028036833780820191505090505b50905060008560405160200162000457919062000825565b604051602081830303815290604052905060005b60148110156200057857818181518110620004af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283828151811062000533577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806200056f9062000987565b9150506200046b565b50846040516020016200058c919062000825565b604051602081830303815290604052905060005b6014811015620006bb57818181518110620005e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002836014836200063e919062000871565b8151811062000676577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080620006b29062000987565b915050620005a0565b50600282604051620006ce919062000842565b602060405180830381855afa158015620006ec573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190620007119190620007a7565b925082935050505092915050565b8280548282559060005260206000209081019282156200075e579160200282015b828111156200075d57825182559160200191906001019062000740565b5b5090506200076d919062000771565b5090565b5b808211156200078c57600081600090555060010162000772565b5090565b600081519050620007a18162000a45565b92915050565b600060208284031215620007ba57600080fd5b6000620007ca8482850162000790565b91505092915050565b620007e8620007e28262000909565b620009d5565b82525050565b6000620007fb826200085b565b62000807818562000866565b93506200081981856020860162000951565b80840191505092915050565b6000620008338284620007d3565b60148201915081905092915050565b6000620008508284620007ee565b915081905092915050565b600081519050919050565b600081905092915050565b60006200087e8262000947565b91506200088b8362000947565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008c357620008c2620009fd565b5b828201905092915050565b6000620008db8262000947565b9150620008e88362000947565b925082821015620008fe57620008fd620009fd565b5b828203905092915050565b6000620009168262000927565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200097157808201518184015260208101905062000954565b8381111562000981576000848401525b50505050565b6000620009948262000947565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620009ca57620009c9620009fd565b5b600182019050919050565b6000620009e282620009e9565b9050919050565b6000620009f68262000a2c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006c0100000000000000000000000082029050919050565b62000a50816200091d565b811462000a5c57600080fd5b50565b61129c8062000a6f6000396000f3fe608060405234801561001057600080fd5b50600436106100bb576000357c0100000000000000000000000000000000000000000000000000000000900480638c661b36116100835780638c661b361461018a5780638da5cb5b146101ba578063ae47ece0146101d8578063d0e95db114610208578063ff7496b414610238576100bb565b806301ffc9a7146100c057806322168e4f146100f057806350e0c6d3146101205780637d64bf1d14610150578063880ad0af14610180575b600080fd5b6100da60048036038101906100d59190610d2c565b610268565b6040516100e79190610f49565b60405180910390f35b61010a60048036038101906101059190610cc7565b61026f565b6040516101179190610f0c565b60405180910390f35b61013a60048036038101906101359190610c26565b61031b565b6040516101479190610f9f565b60405180910390f35b61016a60048036038101906101659190610cc7565b610367565b6040516101779190610f0c565b60405180910390f35b610188610413565b005b6101a4600480360381019061019f9190610c4f565b61044e565b6040516101b19190610f27565b60405180910390f35b6101c2610512565b6040516101cf9190610f0c565b60405180910390f35b6101f260048036038101906101ed9190610c8b565b610536565b6040516101ff9190610f49565b60405180910390f35b610222600480360381019061021d9190610c26565b610789565b60405161022f9190610f9f565b60405180910390f35b610252600480360381019061024d9190610d55565b6107d5565b60405161025f9190610f64565b60405180910390f35b6000919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106102e8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481106103e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044590610f7f565b60405180910390fd5b606060008061045d8585610812565b915060026000838152602001908152602001600020549050600581815481106104af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561050357602002820191906000526020600020905b8154815260200190600101908083116104ef575b50505050509250505092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080606060006105473387610812565b92506002600084815260200190815260200160002054905060008114156106e557600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600582908060018154018082558091505060019003906000526020600020016000909190919091509080519060200190610643929190610b53565b50600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60016005805490506106f79190611070565b90508060026000858152602001908152602001600020819055506005818154811061074b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018590806001815401808255809150506001900390600052602060002001600090919091909150556001935050505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b600582815481106107e557600080fd5b9060005260206000200181815481106107fd57600080fd5b90600052602060002001600091509150505481565b6000806000602867ffffffffffffffff811115610858577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561088a5781602001600182028036833780820191505090505b5090506000856040516020016108a09190610eda565b604051602081830303815290604052905060005b60148110156109bb578181815181106108f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f010000000000000000000000000000000000000000000000000000000000000002838281518110610979577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806109b390611155565b9150506108b4565b50846040516020016109cd9190610eda565b604051602081830303815290604052905060005b6014811015610af457818181518110610a23577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101517f010000000000000000000000000000000000000000000000000000000000000090047f01000000000000000000000000000000000000000000000000000000000000000283601483610a7b919061101a565b81518110610ab2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508080610aec90611155565b9150506109e1565b50600282604051610b059190610ef5565b602060405180830381855afa158015610b22573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b459190610d03565b925082935050505092915050565b828054828255906000526020600020908101928215610b8f579160200282015b82811115610b8e578251825591602001919060010190610b73565b5b509050610b9c9190610ba0565b5090565b5b80821115610bb9576000816000905550600101610ba1565b5090565b600081359050610bcc8161120a565b92915050565b600081359050610be181611221565b92915050565b600081519050610bf681611221565b92915050565b600081359050610c0b81611238565b92915050565b600081359050610c208161124f565b92915050565b600060208284031215610c3857600080fd5b6000610c4684828501610bbd565b91505092915050565b60008060408385031215610c6257600080fd5b6000610c7085828601610bbd565b9250506020610c8185828601610bbd565b9150509250929050565b60008060408385031215610c9e57600080fd5b6000610cac85828601610bbd565b9250506020610cbd85828601610bd2565b9150509250929050565b60008060408385031215610cda57600080fd5b6000610ce885828601610bbd565b9250506020610cf985828601610c11565b9150509250929050565b600060208284031215610d1557600080fd5b6000610d2384828501610be7565b91505092915050565b600060208284031215610d3e57600080fd5b6000610d4c84828501610bfc565b91505092915050565b60008060408385031215610d6857600080fd5b6000610d7685828601610c11565b9250506020610d8785828601610c11565b9150509250929050565b6000610d9d8383610e3c565b60208301905092915050565b610db2816110a4565b82525050565b610dc9610dc4826110a4565b61119e565b82525050565b6000610dda82610fca565b610de48185610fed565b9350610def83610fba565b8060005b83811015610e20578151610e078882610d91565b9750610e1283610fe0565b925050600181019050610df3565b5085935050505092915050565b610e36816110b6565b82525050565b610e45816110c2565b82525050565b610e54816110c2565b82525050565b6000610e6582610fd5565b610e6f8185610ffe565b9350610e7f818560208601611122565b80840191505092915050565b6000610e98601783611009565b91507f6f776e65722063616e6e6f74206265206368616e6765640000000000000000006000830152602082019050919050565b610ed481611118565b82525050565b6000610ee68284610db8565b60148201915081905092915050565b6000610f018284610e5a565b915081905092915050565b6000602082019050610f216000830184610da9565b92915050565b60006020820190508181036000830152610f418184610dcf565b905092915050565b6000602082019050610f5e6000830184610e2d565b92915050565b6000602082019050610f796000830184610e4b565b92915050565b60006020820190508181036000830152610f9881610e8b565b9050919050565b6000602082019050610fb46000830184610ecb565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600061102582611118565b915061103083611118565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611065576110646111c2565b5b828201905092915050565b600061107b82611118565b915061108683611118565b925082821015611099576110986111c2565b5b828203905092915050565b60006110af826110f8565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015611140578082015181840152602081019050611125565b8381111561114f576000848401525b50505050565b600061116082611118565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611193576111926111c2565b5b600182019050919050565b60006111a9826111b0565b9050919050565b60006111bb826111f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006c0100000000000000000000000082029050919050565b611213816110a4565b811461121e57600080fd5b50565b61122a816110c2565b811461123557600080fd5b50565b611241816110cc565b811461124c57600080fd5b50565b61125881611118565b811461126357600080fd5b5056fea2646970667358221220b195c41e2015a9efebdf328e034692ad6acccbfaf91d54c68ca396942282058664736f6c63430008000033 \ No newline at end of file diff --git a/solidity/TokenUniqueSymbolIndex.bin b/solidity/TokenUniqueSymbolIndex.bin index 569667d..c65465d 100644 --- a/solidity/TokenUniqueSymbolIndex.bin +++ b/solidity/TokenUniqueSymbolIndex.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610938806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063bb34534c11610078578063bb34534c1461018d578063cbb83434146101e5578063d22057a914610203578063e2095c0714610267576100a5565b806301ffc9a7146100aa5780637ef502981461010d578063880ad0af1461014f5780638da5cb5b14610159575b600080fd5b6100f5600480360360208110156100c057600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506102bf565b60405180821515815260200191505060405180910390f35b6101396004803603602081101561012357600080fd5b81019080803590602001909291905050506103af565b6040518082815260200191505060405180910390f35b6101576103c7565b005b610161610435565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101b9600480360360208110156101a357600080fd5b8101908080359060200190929190505050610459565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101ed6104b2565b6040518082815260200191505060405180910390f35b61024f6004803603604081101561021957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104c2565b60405180821515815260200191505060405180910390f35b6102936004803603602081101561027d57600080fd5b8101908080359060200190929190505050610899565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600063325d15e27c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561033357600190506103aa565b6301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156103a557600190506103aa565b600090505b919050565b60016020528060005260406000206000915090505481565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f6f776e65722063616e6e6f74206265206368616e67656400000000000000000081525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160008481526020019081526020016000205490506002818154811061047f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000600160028054905003905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461051d57600080fd5b6060600080600060608673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106105f357805182526020820191506020810190506020830392506105d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610655576040519150601f19603f3d011682016040523d82523d6000602084013e61065a565b606091505b50915091508161066957600080fd5b80806020019051602081101561067e57600080fd5b810190808051604051939291908464010000000082111561069e57600080fd5b838201915060208201858111156106b457600080fd5b82518660018202830111640100000000821117156106d157600080fd5b8083526020830192505050908051906020019080838360005b838110156107055780820151818401526020810190506106ea565b50505050905090810190601f1680156107325780820380516001836020036101000a031916815260200191505b5060405250505094506002856040518082805190602001908083835b60208310610771578051825260208201915060208101905060208303925061074e565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa1580156107b3573d6000803e3d6000fd5b5050506040513d60208110156107c857600080fd5b810190808051906020019092919050505093508388146107e757600080fd5b600160008581526020019081526020016000205492506000831461080a57600080fd5b60028054905060016000868152602001908152602001600020819055506002879080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019550505050505092915050565b6000600260018301815481106108ab57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905091905056fea2646970667358221220ce760022fc7bb7f92ad2fd58865b52c3c6f9908d39e825564e6ea958b598504964736f6c637827302e362e31322d646576656c6f702e323032312e312e382b636f6d6d69742e32376435313736350058 \ No newline at end of file +608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cac806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063bb34534c11610078578063bb34534c14610132578063cbb8343414610162578063d22057a914610180578063e2095c07146101b0576100a5565b806301ffc9a7146100aa5780637ef50298146100da578063880ad0af1461010a5780638da5cb5b14610114575b600080fd5b6100c460048036038101906100bf9190610840565b6101e0565b6040516100d191906109a3565b60405180910390f35b6100f460048036038101906100ef91906107b2565b6102d0565b60405161010191906109de565b60405180910390f35b6101126102e8565b005b61011c610323565b6040516101299190610988565b60405180910390f35b61014c600480360381019061014791906107b2565b610347565b6040516101599190610988565b60405180910390f35b61016a6103cd565b60405161017791906109de565b60405180910390f35b61019a60048036038101906101959190610804565b6103e6565b6040516101a791906109a3565b60405180910390f35b6101ca60048036038101906101c591906108aa565b610667565b6040516101d79190610988565b60405180910390f35b600063325d15e27c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561025457600190506102cb565b6301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156102c657600190506102cb565b600090505b919050565b60016020528060005260406000206000915090505481565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031a906109be565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160008481526020019081526020016000205490506002818154811061039a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600060016002805490506103e19190610ad7565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461044157600080fd5b60606000806000808673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f95d89b41000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104f09190610971565b6000604051808303816000865af19150503d806000811461052d576040519150601f19603f3d011682016040523d82523d6000602084013e610532565b606091505b50915091508161054157600080fd5b808060200190518101906105559190610869565b94506002856040516105679190610971565b602060405180830381855afa158015610584573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906105a791906107db565b93508388146105b557600080fd5b60016000858152602001908152602001600020549250600083146105d857600080fd5b60028054905060016000868152602001908152602001600020819055506002879080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019550505050505092915050565b600060026001836106789190610a81565b815481106106af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106f46106ef84610a2a565b6109f9565b90508281526020810184848401111561070c57600080fd5b610717848285610b89565b509392505050565b60008135905061072e81610c1a565b92915050565b60008135905061074381610c31565b92915050565b60008151905061075881610c31565b92915050565b60008135905061076d81610c48565b92915050565b600082601f83011261078457600080fd5b81516107948482602086016106e1565b91505092915050565b6000813590506107ac81610c5f565b92915050565b6000602082840312156107c457600080fd5b60006107d284828501610734565b91505092915050565b6000602082840312156107ed57600080fd5b60006107fb84828501610749565b91505092915050565b6000806040838503121561081757600080fd5b600061082585828601610734565b92505060206108368582860161071f565b9150509250929050565b60006020828403121561085257600080fd5b60006108608482850161075e565b91505092915050565b60006020828403121561087b57600080fd5b600082015167ffffffffffffffff81111561089557600080fd5b6108a184828501610773565b91505092915050565b6000602082840312156108bc57600080fd5b60006108ca8482850161079d565b91505092915050565b6108dc81610b0b565b82525050565b6108eb81610b1d565b82525050565b60006108fc82610a5a565b6109068185610a65565b9350610916818560208601610b89565b80840191505092915050565b600061092f601783610a70565b91507f6f776e65722063616e6e6f74206265206368616e6765640000000000000000006000830152602082019050919050565b61096b81610b7f565b82525050565b600061097d82846108f1565b915081905092915050565b600060208201905061099d60008301846108d3565b92915050565b60006020820190506109b860008301846108e2565b92915050565b600060208201905081810360008301526109d781610922565b9050919050565b60006020820190506109f36000830184610962565b92915050565b6000604051905081810181811067ffffffffffffffff82111715610a2057610a1f610beb565b5b8060405250919050565b600067ffffffffffffffff821115610a4557610a44610beb565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610a8c82610b7f565b9150610a9783610b7f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610acc57610acb610bbc565b5b828201905092915050565b6000610ae282610b7f565b9150610aed83610b7f565b925082821015610b0057610aff610bbc565b5b828203905092915050565b6000610b1682610b5f565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610ba7578082015181840152602081019050610b8c565b83811115610bb6576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610c2381610b0b565b8114610c2e57600080fd5b50565b610c3a81610b29565b8114610c4557600080fd5b50565b610c5181610b33565b8114610c5c57600080fd5b50565b610c6881610b7f565b8114610c7357600080fd5b5056fea2646970667358221220ed793e808a1b3d8da182de33941a4b54f28a143f42ff73df90a085bdbcde321364736f6c63430008000033 \ No newline at end of file