diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin index a9f9dca..6fc3a73 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.bin @@ -1 +1 @@ -61010060405264e8d4a510006a52b7d2dcc80cd2e400000062000023919062000349565b6080908152503480156200003657600080fd5b50604051620037c7380380620037c783398181016040528101906200005c919062000648565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550856006908162000128919062000969565b5084600790816200013a919062000969565b508360ff166008819055504260038190555060035460a08181525050603c8262000165919062000349565b60c0818152505060646a52b7d2dcc80cd2e400000062000186919062000a50565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550826fffffffffffffffffffffffffffffffff1660e0818152505060006200022a6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002a3640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000a96565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620003568262000310565b9150620003638362000310565b9250828202620003738162000310565b915082820484148315176200038d576200038c6200031a565b5b5092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003fd82620003b2565b810181811067ffffffffffffffff821117156200041f576200041e620003c3565b5b80604052505050565b60006200043462000394565b9050620004428282620003f2565b919050565b600067ffffffffffffffff821115620004655762000464620003c3565b5b6200047082620003b2565b9050602081019050919050565b60005b838110156200049d57808201518184015260208101905062000480565b60008484015250505050565b6000620004c0620004ba8462000447565b62000428565b905082815260208101848484011115620004df57620004de620003ad565b5b620004ec8482856200047d565b509392505050565b600082601f8301126200050c576200050b620003a8565b5b81516200051e848260208601620004a9565b91505092915050565b600060ff82169050919050565b6200053f8162000527565b81146200054b57600080fd5b50565b6000815190506200055f8162000534565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6200058c8162000565565b81146200059857600080fd5b50565b600081519050620005ac8162000581565b92915050565b620005bd8162000310565b8114620005c957600080fd5b50565b600081519050620005dd81620005b2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200061082620005e3565b9050919050565b620006228162000603565b81146200062e57600080fd5b50565b600081519050620006428162000617565b92915050565b60008060008060008060c087890312156200066857620006676200039e565b5b600087015167ffffffffffffffff811115620006895762000688620003a3565b5b6200069789828a01620004f4565b965050602087015167ffffffffffffffff811115620006bb57620006ba620003a3565b5b620006c989828a01620004f4565b9550506040620006dc89828a016200054e565b9450506060620006ef89828a016200059b565b93505060806200070289828a01620005cc565b92505060a06200071589828a0162000631565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200077557607f821691505b6020821081036200078b576200078a6200072d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b600060088302620007f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007b6565b620008048683620007b6565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000847620008416200083b8462000310565b6200081c565b62000310565b9050919050565b6000819050919050565b620008638362000826565b6200087b62000872826200084e565b848454620007c6565b825550505050565b600090565b6200089262000883565b6200089f81848462000858565b505050565b5b81811015620008c757620008bb60008262000888565b600181019050620008a5565b5050565b601f8211156200091657620008e08162000791565b620008eb84620007a6565b81016020851015620008fb578190505b620009136200090a85620007a6565b830182620008a4565b50505b505050565b60008160020a8304905092915050565b60006200093e600019846008026200091b565b1980831691505092915050565b60006200095983836200092b565b9150826002028217905092915050565b620009748262000722565b67ffffffffffffffff81111562000990576200098f620003c3565b5b6200099c82546200075c565b620009a9828285620008cb565b600060209050601f831160018114620009e15760008415620009cc578287015190505b620009d885826200094b565b86555062000a48565b601f198416620009f18662000791565b60005b8281101562000a1b57848901518255600182019150602085019450602081019050620009f4565b8683101562000a3b578489015162000a37601f8916826200092b565b8355505b6001600288020188555050505b505050505050565b600062000a5d8262000565565b915062000a6a8362000565565b925082820262000a7a8162000565565b915080821462000a8f5762000a8e6200031a565b5b5092915050565b60805160a05160c05160e051612cb862000b0f60003960008181610d5101528181610fa10152611da201526000818161131f01528181611c130152611e4101526000818161134b01528181611e620152611ea70152600081816113b8015281816113f0015281816114680152611bef0152612cb86000f3fe608060405234801561001057600080fd5b50600436106102a7576000357c010000000000000000000000000000000000000000000000000000000090048063731f237c116101795780639da7d8ba116100eb578063e3ab207a116100a4578063e3ab207a146108c0578063e54d63f7146108f0578063e809529514610920578063eda4e6d61461093e578063f2fde38b1461095c578063f83da35d1461098c576102a7565b80639da7d8ba146107d6578063a9059cbb14610806578063ab28cea014610836578063b470aade14610854578063c0ab707714610872578063d340ef8a146108a2576102a7565b80638d34855a1161013d5780638d34855a146107005780638da5cb5b146107305780638f0b2d5d1461074e5780638f1df6bc1461076a57806395d89b4114610788578063983b2d56146107a6576102a7565b8063731f237c1461066a57806373f425611461068857806374bedb95146106a657806379ba5097146106c457806384dde4af146106e2576102a7565b806340452d911161021d57806358b2833b116101d657806358b2833b1461055c5780636721d4ef1461057a5780636787a9be146105aa5780636a2d094e146105da5780636ffa8a051461060a57806370a082311461063a576102a7565b806340452d911461045057806342966c6814610480578063449a52f81461049c57806347a50517146104cc5780634abfbba2146104fc57806351b4541c1461052c576102a7565b80631989c6a81161026f5780631989c6a814610366578063229ba1971461038457806323b872dd146103a25780633092afd5146103d25780633133348714610402578063313ce56714610432576102a7565b806301ffc9a7146102ac57806306fdde03146102dc578063095ea7b3146102fa57806309f28f3c1461032a57806318160ddd14610348575b600080fd5b6102c660048036038101906102c1919061244a565b6109bc565b6040516102d39190612492565b60405180910390f35b6102e4610b62565b6040516102f1919061253d565b60405180910390f35b610314600480360381019061030f91906125f3565b610bf0565b6040516103219190612492565b60405180910390f35b610332610d0a565b60405161033f919061265e565b60405180910390f35b610350610d2c565b60405161035d9190612688565b60405180910390f35b61036e610d43565b60405161037b9190612688565b60405180910390f35b61038c610d4f565b6040516103999190612688565b60405180910390f35b6103bc60048036038101906103b791906126a3565b610d73565b6040516103c99190612492565b60405180910390f35b6103ec60048036038101906103e791906126f6565b610e93565b6040516103f99190612492565b60405180910390f35b61041c60048036038101906104179190612723565b610f86565b6040516104299190612688565b60405180910390f35b61043a61103a565b6040516104479190612688565b60405180910390f35b61046a60048036038101906104659190612763565b611040565b60405161047791906127a9565b60405180910390f35b61049a60048036038101906104959190612763565b611064565b005b6104b660048036038101906104b191906125f3565b611192565b6040516104c39190612492565b60405180910390f35b6104e660048036038101906104e191906126f6565b6112d2565b6040516104f39190612688565b60405180910390f35b61051660048036038101906105119190612763565b61131b565b6040516105239190612688565b60405180910390f35b61054660048036038101906105419190612763565b61137b565b6040516105539190612688565b60405180910390f35b61056461139c565b6040516105719190612688565b60405180910390f35b610594600480360381019061058f9190612723565b6113a2565b6040516105a19190612688565b60405180910390f35b6105c460048036038101906105bf9190612763565b611423565b6040516105d19190612688565b60405180910390f35b6105f460048036038101906105ef9190612763565b6114a3565b6040516106019190612688565b60405180910390f35b610624600480360381019061061f91906127f0565b6114c4565b6040516106319190612688565b60405180910390f35b610654600480360381019061064f91906126f6565b6114fe565b6040516106619190612688565b60405180910390f35b6106726115b6565b60405161067f9190612492565b60405180910390f35b6106906115c7565b60405161069d9190612688565b60405180910390f35b6106ae6115cd565b6040516106bb9190612688565b60405180910390f35b6106cc6115d3565b6040516106d99190612492565b60405180910390f35b6106ea61177a565b6040516106f7919061282c565b60405180910390f35b61071a600480360381019061071591906127f0565b6117a0565b6040516107279190612688565b60405180910390f35b6107386117ce565b604051610745919061282c565b60405180910390f35b610768600480360381019061076391906126f6565b6117f4565b005b610772611892565b60405161077f9190612492565b60405180910390f35b6107906119e0565b60405161079d919061253d565b60405180910390f35b6107c060048036038101906107bb91906126f6565b611a6e565b6040516107cd9190612492565b60405180910390f35b6107f060048036038101906107eb91906127f0565b611b2b565b6040516107fd9190612688565b60405180910390f35b610820600480360381019061081b91906125f3565b611b57565b60405161082d9190612492565b60405180910390f35b61083e611bed565b60405161084b9190612688565b60405180910390f35b61085c611c11565b6040516108699190612688565b60405180910390f35b61088c60048036038101906108879190612763565b611c35565b6040516108999190612492565b60405180910390f35b6108aa611d6d565b6040516108b79190612688565b60405180910390f35b6108da60048036038101906108d591906127f0565b611d73565b6040516108e79190612688565b60405180910390f35b61090a60048036038101906109059190612723565b611d87565b6040516109179190612688565b60405180910390f35b610928611e3b565b604051610935919061265e565b60405180910390f35b610946611ea5565b6040516109539190612688565b60405180910390f35b610976600480360381019061097191906126f6565b611ec9565b6040516109839190612492565b60405180910390f35b6109a660048036038101906109a19190612847565b611f6b565b6040516109b391906127a9565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610a105760019050610b5d565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610a625760019050610b5d565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610ab45760019050610b5d565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610b065760019050610b5d565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610b585760019050610b5d565b600090505b919050565b60068054610b6f906128dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9b906128dd565b8015610be85780601f10610bbd57610100808354040283529160200191610be8565b820191906000526020600020905b815481529060010190602001808311610bcb57829003601f168201915b505050505081565b600080610bfb611892565b50610c0583611423565b905080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c93919061293d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610cf79190612688565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b6000600c54600954610d3e9190612971565b905090565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610d80611892565b50610d8a84611423565b915081600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e1557600080fd5b610e20868684611fd8565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610e7f9190612688565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f1c57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610f2557600080fd5b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610fca91906129d4565b905060005b848110156110135764e8d4a510008284610fe99190612a05565b610ff391906129d4565b83610ffe9190612971565b9250808061100b90612a47565b915050610fcf565b5064e8d4a5100085836110269190612a05565b61103091906129d4565b9250505092915050565b60085481565b6000818154811061105057600080fd5b906000526020600020016000915090505481565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166110ba57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561110657600080fd5b600061111182611423565b905061111b6115b6565b506111263382611ffd565b5081600c6000828254611139919061293d565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040516111869190612688565b60405180910390a25050565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890612adb565b60405180910390fd5b611229611892565b5061123383611423565b90508260096000828254611247919061293d565b925050819055506112588482612104565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516112b69190612688565b60405180910390a36112c66121c8565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826113499190612a05565b7f0000000000000000000000000000000000000000000000000000000000000000611374919061293d565b9050919050565b6000603c824261138b9190612971565b61139591906129d4565b9050919050565b60035481565b6000806402540be400836113b69190612a05565b7f00000000000000000000000000000000000000000000000000000000000000006113e19190612971565b846113ec9190612a05565b90507f00000000000000000000000000000000000000000000000000000000000000008161141a91906129d4565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166114549190612afb565b6fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000836114929190612a05565b61149c91906129d4565b9050919050565b6000603c82426114b39190612971565b6114bd91906129d4565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b60008060008061150d856112d2565b925061151a60035461137b565b90506115666402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff1661154e9190612afb565b6fffffffffffffffffffffffffffffffff1682610f86565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e40000006115969190612a05565b82846115a29190612a05565b6115ac91906129d4565b9350505050919050565b60006115c26000611c35565b905090565b600c5481565b600b5481565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461163057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006117ae84611b2b565b91506117b9846114c4565b90506117c582826113a2565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461184e57600080fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060008060008060006118a86115b6565b506118b161226f565b9750600060010288036118cf576000985050505050505050506119dd565b6118d888611d73565b95506001866118e7919061293d565b90506118f28661131b565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169450611930826114a3565b9250600083111561194c576119458584611d87565b9350611950565b8493505b61196460008561195e610d2c565b84611f6b565b965060008790806001815401808255809150506001900390600052602060002001600090919091909150556119988761235b565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516119c89190612688565b60405180910390a16001985050505050505050505b90565b600780546119ed906128dd565b80601f0160208091040260200160405190810160405280929190818152602001828054611a19906128dd565b8015611a665780601f10611a3b57610100808354040283529160200191611a66565b820191906000526020600020905b815481529060010190602001808311611a4957829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aca57600080fd5b6001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b6000806000611b64611892565b50611b6e84611423565b9150611b7b338684611fd8565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611bda9190612688565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000611c4560035461137b565b915060008203611c5a57600092505050611d68565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050600084118015611c9c57508184105b15611ca5578391505b611caf8183610f86565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c82611cf49190612a05565b600354611d01919061293d565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff16604051611d599190612b73565b60405180910390a46001925050505b919050565b600a5481565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611dcb91906129d4565b905060005b84811015611e145764e8d4a510008284611dea9190612a05565b611df491906129d4565b83611dff919061293d565b92508080611e0c90612a47565b915050611dd0565b5064e8d4a510008583611e279190612a05565b611e3191906129d4565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611e8c9190612971565b611e9691906129d4565b611ea0919061293d565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f2557600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b600080611fe58584611ffd565b50611ff08484612104565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000850361205957600093505050506120fe565b612062866112d2565b9250848310156120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90612bda565b60405180910390fd5b84836120b39190612971565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000850361216057600093505050506121c2565b612169866112d2565b92508483612177919061293d565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b60008060006121d5610d2c565b9050600060016000805490506121eb9190612971565b815481106121fc576121fb612bfa565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a028217915081600102600060016000805490506122479190612971565b8154811061225857612257612bfa565b5b906000526020600020018190555060019250505090565b600080600080600a548154811061228957612288612bfa565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa1580156122fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123219190612c55565b6fffffffffffffffffffffffffffffffff16905061233e82611d73565b811161235257600060010292505050612358565b81925050505b90565b6000806000612369846117a0565b9150600b5461237783611423565b6123819190612971565b90506123af600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612104565b506001600a60008282546123c3919061293d565b9250508190555080600b60008282546123dc919061293d565b925050819055508192505050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612427816123f2565b811461243257600080fd5b50565b6000813590506124448161241e565b92915050565b6000602082840312156124605761245f6123ed565b5b600061246e84828501612435565b91505092915050565b60008115159050919050565b61248c81612477565b82525050565b60006020820190506124a76000830184612483565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124e75780820151818401526020810190506124cc565b60008484015250505050565b6000601f19601f8301169050919050565b600061250f826124ad565b61251981856124b8565b93506125298185602086016124c9565b612532816124f3565b840191505092915050565b600060208201905081810360008301526125578184612504565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061258a8261255f565b9050919050565b61259a8161257f565b81146125a557600080fd5b50565b6000813590506125b781612591565b92915050565b6000819050919050565b6125d0816125bd565b81146125db57600080fd5b50565b6000813590506125ed816125c7565b92915050565b6000806040838503121561260a576126096123ed565b5b6000612618858286016125a8565b9250506020612629858286016125de565b9150509250929050565b60006fffffffffffffffffffffffffffffffff82169050919050565b61265881612633565b82525050565b6000602082019050612673600083018461264f565b92915050565b612682816125bd565b82525050565b600060208201905061269d6000830184612679565b92915050565b6000806000606084860312156126bc576126bb6123ed565b5b60006126ca868287016125a8565b93505060206126db868287016125a8565b92505060406126ec868287016125de565b9150509250925092565b60006020828403121561270c5761270b6123ed565b5b600061271a848285016125a8565b91505092915050565b6000806040838503121561273a576127396123ed565b5b6000612748858286016125de565b9250506020612759858286016125de565b9150509250929050565b600060208284031215612779576127786123ed565b5b6000612787848285016125de565b91505092915050565b6000819050919050565b6127a381612790565b82525050565b60006020820190506127be600083018461279a565b92915050565b6127cd81612790565b81146127d857600080fd5b50565b6000813590506127ea816127c4565b92915050565b600060208284031215612806576128056123ed565b5b6000612814848285016127db565b91505092915050565b6128268161257f565b82525050565b6000602082019050612841600083018461281d565b92915050565b60008060008060808587031215612861576128606123ed565b5b600061286f878288016125de565b9450506020612880878288016125de565b9350506040612891878288016125de565b92505060606128a2878288016125de565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806128f557607f821691505b602082108103612908576129076128ae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612948826125bd565b9150612953836125bd565b925082820190508082111561296b5761296a61290e565b5b92915050565b600061297c826125bd565b9150612987836125bd565b925082820390508181111561299f5761299e61290e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129df826125bd565b91506129ea836125bd565b9250826129fa576129f96129a5565b5b828204905092915050565b6000612a10826125bd565b9150612a1b836125bd565b9250828202612a29816125bd565b91508282048414831517612a4057612a3f61290e565b5b5092915050565b6000612a52826125bd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a8457612a8361290e565b5b600182019050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000612ac5600a836124b8565b9150612ad082612a8f565b602082019050919050565b60006020820190508181036000830152612af481612ab8565b9050919050565b6000612b0682612633565b9150612b1183612633565b9250828202612b1f81612633565b9150808214612b3157612b3061290e565b5b5092915050565b6000819050919050565b6000612b5d612b58612b5384612633565b612b38565b6125bd565b9050919050565b612b6d81612b42565b82525050565b6000602082019050612b886000830184612b64565b92915050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6000612bc4600d836124b8565b9150612bcf82612b8e565b602082019050919050565b60006020820190508181036000830152612bf381612bb7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b612c3281612633565b8114612c3d57600080fd5b50565b600081519050612c4f81612c29565b92915050565b600060208284031215612c6b57612c6a6123ed565b5b6000612c7984828501612c40565b9150509291505056fea26469706673582212201355bdb15832f75e3bf6a5860009522e26e7b006f5068f5a4b2d8b28656c5e4364736f6c63430008110033 \ No newline at end of file +61010060405264e8d4a510006a52b7d2dcc80cd2e400000062000023919062000349565b6080908152503480156200003657600080fd5b50604051620037fa380380620037fa83398181016040528101906200005c919062000648565b33600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550856006908162000128919062000969565b5084600790816200013a919062000969565b508360ff166008819055504260038190555060035460a08181525050603c8262000165919062000349565b60c0818152505060646a52b7d2dcc80cd2e400000062000186919062000a50565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550826fffffffffffffffffffffffffffffffff1660e0818152505060006200022a6000600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1660006001620002a3640100000000026401000000009004565b9050600081908060018154018082558091505060019003906000526020600020016000909190919091505581600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000a96565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620003568262000310565b9150620003638362000310565b9250828202620003738162000310565b915082820484148315176200038d576200038c6200031a565b5b5092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003fd82620003b2565b810181811067ffffffffffffffff821117156200041f576200041e620003c3565b5b80604052505050565b60006200043462000394565b9050620004428282620003f2565b919050565b600067ffffffffffffffff821115620004655762000464620003c3565b5b6200047082620003b2565b9050602081019050919050565b60005b838110156200049d57808201518184015260208101905062000480565b60008484015250505050565b6000620004c0620004ba8462000447565b62000428565b905082815260208101848484011115620004df57620004de620003ad565b5b620004ec8482856200047d565b509392505050565b600082601f8301126200050c576200050b620003a8565b5b81516200051e848260208601620004a9565b91505092915050565b600060ff82169050919050565b6200053f8162000527565b81146200054b57600080fd5b50565b6000815190506200055f8162000534565b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6200058c8162000565565b81146200059857600080fd5b50565b600081519050620005ac8162000581565b92915050565b620005bd8162000310565b8114620005c957600080fd5b50565b600081519050620005dd81620005b2565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200061082620005e3565b9050919050565b620006228162000603565b81146200062e57600080fd5b50565b600081519050620006428162000617565b92915050565b60008060008060008060c087890312156200066857620006676200039e565b5b600087015167ffffffffffffffff811115620006895762000688620003a3565b5b6200069789828a01620004f4565b965050602087015167ffffffffffffffff811115620006bb57620006ba620003a3565b5b620006c989828a01620004f4565b9550506040620006dc89828a016200054e565b9450506060620006ef89828a016200059b565b93505060806200070289828a01620005cc565b92505060a06200071589828a0162000631565b9150509295509295509295565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200077557607f821691505b6020821081036200078b576200078a6200072d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b600060088302620007f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007b6565b620008048683620007b6565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000847620008416200083b8462000310565b6200081c565b62000310565b9050919050565b6000819050919050565b620008638362000826565b6200087b62000872826200084e565b848454620007c6565b825550505050565b600090565b6200089262000883565b6200089f81848462000858565b505050565b5b81811015620008c757620008bb60008262000888565b600181019050620008a5565b5050565b601f8211156200091657620008e08162000791565b620008eb84620007a6565b81016020851015620008fb578190505b620009136200090a85620007a6565b830182620008a4565b50505b505050565b60008160020a8304905092915050565b60006200093e600019846008026200091b565b1980831691505092915050565b60006200095983836200092b565b9150826002028217905092915050565b620009748262000722565b67ffffffffffffffff81111562000990576200098f620003c3565b5b6200099c82546200075c565b620009a9828285620008cb565b600060209050601f831160018114620009e15760008415620009cc578287015190505b620009d885826200094b565b86555062000a48565b601f198416620009f18662000791565b60005b8281101562000a1b57848901518255600182019150602085019450602081019050620009f4565b8683101562000a3b578489015162000a37601f8916826200092b565b8355505b6001600288020188555050505b505050505050565b600062000a5d8262000565565b915062000a6a8362000565565b925082820262000a7a8162000565565b915080821462000a8f5762000a8e6200031a565b5b5092915050565b60805160a05160c05160e051612ceb62000b0f60003960008181610d7a01528181610fca0152611dd501526000818161134801528181611c3c0152611e7401526000818161137401528181611e950152611eda0152600081816113e101528181611419015281816114910152611c180152612ceb6000f3fe608060405234801561001057600080fd5b50600436106102b2576000357c010000000000000000000000000000000000000000000000000000000090048063731f237c11610184578063a9059cbb116100eb578063e3ab207a116100a4578063e3ab207a146108e9578063e54d63f714610919578063e809529514610949578063eda4e6d614610967578063f2fde38b14610985578063f83da35d146109b5576102b2565b8063a9059cbb14610811578063ab28cea014610841578063b470aade1461085f578063c0ab70771461087d578063d340ef8a146108ad578063d89135cd146108cb576102b2565b80638da5cb5b1161013d5780638da5cb5b1461073b5780638f0b2d5d146107595780638f1df6bc1461077557806395d89b4114610793578063983b2d56146107b15780639da7d8ba146107e1576102b2565b8063731f237c1461067557806373f425611461069357806374bedb95146106b157806379ba5097146106cf57806384dde4af146106ed5780638d34855a1461070b576102b2565b806340452d911161022857806358b2833b116101e157806358b2833b146105675780636721d4ef146105855780636787a9be146105b55780636a2d094e146105e55780636ffa8a051461061557806370a0823114610645576102b2565b806340452d911461045b57806342966c681461048b578063449a52f8146104a757806347a50517146104d75780634abfbba21461050757806351b4541c14610537576102b2565b80631989c6a81161027a5780631989c6a814610371578063229ba1971461038f57806323b872dd146103ad5780633092afd5146103dd578063313334871461040d578063313ce5671461043d576102b2565b806301ffc9a7146102b757806306fdde03146102e7578063095ea7b31461030557806309f28f3c1461033557806318160ddd14610353575b600080fd5b6102d160048036038101906102cc919061247d565b6109e5565b6040516102de91906124c5565b60405180910390f35b6102ef610b8b565b6040516102fc9190612570565b60405180910390f35b61031f600480360381019061031a9190612626565b610c19565b60405161032c91906124c5565b60405180910390f35b61033d610d33565b60405161034a9190612691565b60405180910390f35b61035b610d55565b60405161036891906126bb565b60405180910390f35b610379610d6c565b60405161038691906126bb565b60405180910390f35b610397610d78565b6040516103a491906126bb565b60405180910390f35b6103c760048036038101906103c291906126d6565b610d9c565b6040516103d491906124c5565b60405180910390f35b6103f760048036038101906103f29190612729565b610ebc565b60405161040491906124c5565b60405180910390f35b61042760048036038101906104229190612756565b610faf565b60405161043491906126bb565b60405180910390f35b610445611063565b60405161045291906126bb565b60405180910390f35b61047560048036038101906104709190612796565b611069565b60405161048291906127dc565b60405180910390f35b6104a560048036038101906104a09190612796565b61108d565b005b6104c160048036038101906104bc9190612626565b6111bb565b6040516104ce91906124c5565b60405180910390f35b6104f160048036038101906104ec9190612729565b6112fb565b6040516104fe91906126bb565b60405180910390f35b610521600480360381019061051c9190612796565b611344565b60405161052e91906126bb565b60405180910390f35b610551600480360381019061054c9190612796565b6113a4565b60405161055e91906126bb565b60405180910390f35b61056f6113c5565b60405161057c91906126bb565b60405180910390f35b61059f600480360381019061059a9190612756565b6113cb565b6040516105ac91906126bb565b60405180910390f35b6105cf60048036038101906105ca9190612796565b61144c565b6040516105dc91906126bb565b60405180910390f35b6105ff60048036038101906105fa9190612796565b6114cc565b60405161060c91906126bb565b60405180910390f35b61062f600480360381019061062a9190612823565b6114ed565b60405161063c91906126bb565b60405180910390f35b61065f600480360381019061065a9190612729565b611527565b60405161066c91906126bb565b60405180910390f35b61067d6115df565b60405161068a91906124c5565b60405180910390f35b61069b6115f0565b6040516106a891906126bb565b60405180910390f35b6106b96115f6565b6040516106c691906126bb565b60405180910390f35b6106d76115fc565b6040516106e491906124c5565b60405180910390f35b6106f56117a3565b604051610702919061285f565b60405180910390f35b61072560048036038101906107209190612823565b6117c9565b60405161073291906126bb565b60405180910390f35b6107436117f7565b604051610750919061285f565b60405180910390f35b610773600480360381019061076e9190612729565b61181d565b005b61077d6118bb565b60405161078a91906124c5565b60405180910390f35b61079b611a09565b6040516107a89190612570565b60405180910390f35b6107cb60048036038101906107c69190612729565b611a97565b6040516107d891906124c5565b60405180910390f35b6107fb60048036038101906107f69190612823565b611b54565b60405161080891906126bb565b60405180910390f35b61082b60048036038101906108269190612626565b611b80565b60405161083891906124c5565b60405180910390f35b610849611c16565b60405161085691906126bb565b60405180910390f35b610867611c3a565b60405161087491906126bb565b60405180910390f35b61089760048036038101906108929190612796565b611c5e565b6040516108a491906124c5565b60405180910390f35b6108b5611d96565b6040516108c291906126bb565b60405180910390f35b6108d3611d9c565b6040516108e091906126bb565b60405180910390f35b61090360048036038101906108fe9190612823565b611da6565b60405161091091906126bb565b60405180910390f35b610933600480360381019061092e9190612756565b611dba565b60405161094091906126bb565b60405180910390f35b610951611e6e565b60405161095e9190612691565b60405180910390f35b61096f611ed8565b60405161097c91906126bb565b60405180910390f35b61099f600480360381019061099a9190612729565b611efc565b6040516109ac91906124c5565b60405180910390f35b6109cf60048036038101906109ca919061287a565b611f9e565b6040516109dc91906127dc565b60405180910390f35b600063c6bb4b707c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610a395760019050610b86565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610a8b5760019050610b86565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610add5760019050610b86565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610b2f5760019050610b86565b6337a47be47c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610b815760019050610b86565b600090505b919050565b60068054610b9890612910565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc490612910565b8015610c115780601f10610be657610100808354040283529160200191610c11565b820191906000526020600020905b815481529060010190602001808311610bf457829003601f168201915b505050505081565b600080610c246118bb565b50610c2e8361144c565b905080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610cbc9190612970565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610d2091906126bb565b60405180910390a3600191505092915050565b600260009054906101000a90046fffffffffffffffffffffffffffffffff1681565b6000600c54600954610d6791906129a4565b905090565b60008080549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000610da96118bb565b50610db38461144c565b915081600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e3e57600080fd5b610e4986868461200b565b90508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ea891906126bb565b60405180910390a380925050509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610f4557503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610f4e57600080fd5b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000610ff39190612a07565b905060005b8481101561103c5764e8d4a5100082846110129190612a38565b61101c9190612a07565b8361102791906129a4565b9250808061103490612a7a565b915050610ff8565b5064e8d4a51000858361104f9190612a38565b6110599190612a07565b9250505092915050565b60085481565b6000818154811061107957600080fd5b906000526020600020016000915090505481565b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166110e357600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561112f57600080fd5b600061113a8261144c565b90506111446115df565b5061114f3382612030565b5081600c60008282546111629190612970565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040516111af91906126bb565b60405180910390a25050565b600080600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661124a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124190612b0e565b60405180910390fd5b6112526118bb565b5061125c8361144c565b905082600960008282546112709190612970565b925050819055506112818482612137565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8856040516112df91906126bb565b60405180910390a36112ef6121fb565b50600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826113729190612a38565b7f000000000000000000000000000000000000000000000000000000000000000061139d9190612970565b9050919050565b6000603c82426113b491906129a4565b6113be9190612a07565b9050919050565b60035481565b6000806402540be400836113df9190612a38565b7f000000000000000000000000000000000000000000000000000000000000000061140a91906129a4565b846114159190612a38565b90507f0000000000000000000000000000000000000000000000000000000000000000816114439190612a07565b91505092915050565b60006402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff1661147d9190612b2e565b6fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000836114bb9190612a38565b6114c59190612a07565b9050919050565b6000603c82426114dc91906129a4565b6114e69190612a07565b9050919050565b6000606860ff167affffffffffffffffffffffffffff00000000000000000000000000836001900416908060020a82049150509050919050565b600080600080611536856112fb565b92506115436003546113a4565b905061158f6402540be400600260009054906101000a90046fffffffffffffffffffffffffffffffff166115779190612b2e565b6fffffffffffffffffffffffffffffffff1682610faf565b6fffffffffffffffffffffffffffffffff16915064e8d4a510006a52b7d2dcc80cd2e40000006115bf9190612a38565b82846115cb9190612a38565b6115d59190612a07565b9350505050919050565b60006115eb6000611c5e565b905090565b600c5481565b600b5481565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461165957600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006117d784611b54565b91506117e2846114ed565b90506117ee82826113cb565b92505050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461187757600080fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008060008060008060006118d16115df565b506118da6122a2565b9750600060010288036118f857600098505050505050505050611a06565b61190188611da6565b95506001866119109190612970565b905061191b86611344565b9150600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169450611959826114cc565b925060008311156119755761196e8584611dba565b9350611979565b8493505b61198d600085611987610d55565b84611f9e565b965060008790806001815401808255809150506001900390600052602060002001600090919091909150556119c18761238e565b507f55d243082e019fce4009ccea5368b92e436c17586a1e793c7deda16df4e5d675816040516119f191906126bb565b60405180910390a16001985050505050505050505b90565b60078054611a1690612910565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4290612910565b8015611a8f5780601f10611a6457610100808354040283529160200191611a8f565b820191906000526020600020905b815481529060010190602001808311611a7257829003601f168201915b505050505081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af357600080fd5b6001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000602060ff166cffffffffffffffffff00000000836001900416908060020a82049150509050919050565b6000806000611b8d6118bb565b50611b978461144c565b9150611ba433868461200b565b90508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611c0391906126bb565b60405180910390a3809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000611c6e6003546113a4565b915060008203611c8357600092505050611d91565b600260009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050600084118015611cc557508184105b15611cce578391505b611cd88183610faf565b600260006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550603c82611d1d9190612a38565b600354611d2a9190612970565b60038190555080826003547fa0717e54e02bd9829db5e6e998aec0ae9de796b8d150a3cc46a92ab869697755600260009054906101000a90046fffffffffffffffffffffffffffffffff16604051611d829190612ba6565b60405180910390a46001925050505b919050565b600a5481565b6000600c54905090565b600063ffffffff8260019004169050919050565b600080600064e8d4a5100091506a52b7d2dcc80cd2e40000007f0000000000000000000000000000000000000000000000000000000000000000611dfe9190612a07565b905060005b84811015611e475764e8d4a510008284611e1d9190612a38565b611e279190612a07565b83611e329190612970565b92508080611e3f90612a7a565b915050611e03565b5064e8d4a510008583611e5a9190612a38565b611e649190612a07565b9250505092915050565b600060017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042611ebf91906129a4565b611ec99190612a07565b611ed39190612970565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f5857600080fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000807affffffffffffffffffffffffffff00000000000000000000000000606860ff16869060020a0216600102811790506cffffffffffffffffff00000000602060ff16859060020a02166001028117905063ffffffff83166001028117905080915050949350505050565b6000806120188584612030565b506120238484612137565b5060019150509392505050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000850361208c5760009350505050612131565b612095866112fb565b9250848310156120da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d190612c0d565b60405180910390fd5b84836120e691906129a4565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b600080600080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000850361219357600093505050506121f5565b61219c866112fb565b925084836121aa9190612970565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600193505050505b92915050565b6000806000612208610d55565b90506000600160008054905061221e91906129a4565b8154811061222f5761222e612c2d565b5b90600052602060002001546001900491506cffffffffffffffffff000000001982169150602060ff16819060020a0282179150816001026000600160008054905061227a91906129a4565b8154811061228b5761228a612c2d565b5b906000526020600020018190555060019250505090565b600080600080600a54815481106122bc576122bb612c2d565b5b906000526020600020015491503073ffffffffffffffffffffffffffffffffffffffff1663e80952956040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015612330573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123549190612c88565b6fffffffffffffffffffffffffffffffff16905061237182611da6565b81116123855760006001029250505061238b565b81925050505b90565b600080600061239c846117c9565b9150600b546123aa8361144c565b6123b491906129a4565b90506123e2600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612137565b506001600a60008282546123f69190612970565b9250508190555080600b600082825461240f9190612970565b925050819055508192505050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61245a81612425565b811461246557600080fd5b50565b60008135905061247781612451565b92915050565b60006020828403121561249357612492612420565b5b60006124a184828501612468565b91505092915050565b60008115159050919050565b6124bf816124aa565b82525050565b60006020820190506124da60008301846124b6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561251a5780820151818401526020810190506124ff565b60008484015250505050565b6000601f19601f8301169050919050565b6000612542826124e0565b61254c81856124eb565b935061255c8185602086016124fc565b61256581612526565b840191505092915050565b6000602082019050818103600083015261258a8184612537565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125bd82612592565b9050919050565b6125cd816125b2565b81146125d857600080fd5b50565b6000813590506125ea816125c4565b92915050565b6000819050919050565b612603816125f0565b811461260e57600080fd5b50565b600081359050612620816125fa565b92915050565b6000806040838503121561263d5761263c612420565b5b600061264b858286016125db565b925050602061265c85828601612611565b9150509250929050565b60006fffffffffffffffffffffffffffffffff82169050919050565b61268b81612666565b82525050565b60006020820190506126a66000830184612682565b92915050565b6126b5816125f0565b82525050565b60006020820190506126d060008301846126ac565b92915050565b6000806000606084860312156126ef576126ee612420565b5b60006126fd868287016125db565b935050602061270e868287016125db565b925050604061271f86828701612611565b9150509250925092565b60006020828403121561273f5761273e612420565b5b600061274d848285016125db565b91505092915050565b6000806040838503121561276d5761276c612420565b5b600061277b85828601612611565b925050602061278c85828601612611565b9150509250929050565b6000602082840312156127ac576127ab612420565b5b60006127ba84828501612611565b91505092915050565b6000819050919050565b6127d6816127c3565b82525050565b60006020820190506127f160008301846127cd565b92915050565b612800816127c3565b811461280b57600080fd5b50565b60008135905061281d816127f7565b92915050565b60006020828403121561283957612838612420565b5b60006128478482850161280e565b91505092915050565b612859816125b2565b82525050565b60006020820190506128746000830184612850565b92915050565b6000806000806080858703121561289457612893612420565b5b60006128a287828801612611565b94505060206128b387828801612611565b93505060406128c487828801612611565b92505060606128d587828801612611565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061292857607f821691505b60208210810361293b5761293a6128e1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061297b826125f0565b9150612986836125f0565b925082820190508082111561299e5761299d612941565b5b92915050565b60006129af826125f0565b91506129ba836125f0565b92508282039050818111156129d2576129d1612941565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a12826125f0565b9150612a1d836125f0565b925082612a2d57612a2c6129d8565b5b828204905092915050565b6000612a43826125f0565b9150612a4e836125f0565b9250828202612a5c816125f0565b91508282048414831517612a7357612a72612941565b5b5092915050565b6000612a85826125f0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ab757612ab6612941565b5b600182019050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b6000612af8600a836124eb565b9150612b0382612ac2565b602082019050919050565b60006020820190508181036000830152612b2781612aeb565b9050919050565b6000612b3982612666565b9150612b4483612666565b9250828202612b5281612666565b9150808214612b6457612b63612941565b5b5092915050565b6000819050919050565b6000612b90612b8b612b8684612666565b612b6b565b6125f0565b9050919050565b612ba081612b75565b82525050565b6000602082019050612bbb6000830184612b97565b92915050565b7f4552525f4f5645525350454e4400000000000000000000000000000000000000600082015250565b6000612bf7600d836124eb565b9150612c0282612bc1565b602082019050919050565b60006020820190508181036000830152612c2681612bea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b612c6581612666565b8114612c7057600080fd5b50565b600081519050612c8281612c5c565b92915050565b600060208284031215612c9e57612c9d612420565b5b6000612cac84828501612c73565b9150509291505056fea2646970667358221220761db4e3e03ad9451af9eeffa9b1305037f635715f2ed95eef5811ee867b1ac464736f6c63430008110033 \ No newline at end of file diff --git a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json index eac84d9..907ded8 100644 --- a/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json +++ b/python/erc20_demurrage_token/data/DemurrageTokenSingleNocap.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] +[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint128","name":"_taxLevelMinute","type":"uint128"},{"internalType":"uint256","name":"_periodMinutes","type":"uint256"},{"internalType":"address","name":"_defaultSinkAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"_foo","type":"bytes32"}],"name":"Debug","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_periodCount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"Decayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_minter","type":"address"},{"indexed":true,"internalType":"address","name":"_beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_period","type":"uint256"}],"name":"Period","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":true,"internalType":"uint256","name":"_period","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redistribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"actualPeriod","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyDemurrage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rounds","type":"uint256"}],"name":"applyDemurrageLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"baseBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"decayBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"}],"name":"demurrageCycles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"demurrageTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_demurrageAmount","type":"uint256"}],"name":"getDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_redistribution","type":"bytes32"}],"name":"getDistributionFromRedistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastTimestamp","type":"uint256"}],"name":"getMinutesDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_periodCount","type":"uint256"}],"name":"getPeriodTimeDelta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"growBy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintTo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redistributionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"redistributions","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolutionFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sinkAddress","type":"address"}],"name":"setSinkAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sinkAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"toBaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_participants","type":"uint256"},{"internalType":"uint256","name":"_demurrageModifierPpm","type":"uint256"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"toRedistribution","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionDemurrageModifier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"redistribution","type":"bytes32"}],"name":"toRedistributionSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSink","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}] diff --git a/python/erc20_demurrage_token/token.py b/python/erc20_demurrage_token/token.py index 8bd9083..4994a70 100644 --- a/python/erc20_demurrage_token/token.py +++ b/python/erc20_demurrage_token/token.py @@ -167,6 +167,21 @@ class DemurrageToken(ERC20): return tx + def total_burned(self, contract_address, sender_address=ZERO_ADDRESS, id_generator=None): + j = JSONRPCRequest(id_generator) + o = j.template() + o['method'] = 'eth_call' + enc = ABIContractEncoder() + enc.method('totalBurned') + data = add_0x(enc.get()) + tx = self.template(sender_address, contract_address) + tx = self.set_code(tx, data) + o['params'].append(self.normalize(tx)) + o['params'].append('latest') + o = j.finalize(o) + return o + + def to_base_amount(self, contract_address, value, sender_address=ZERO_ADDRESS, id_generator=None): j = JSONRPCRequest(id_generator) o = j.template() @@ -538,6 +553,7 @@ class DemurrageToken(ERC20): def parse_supply_cap(self, v): return abi_decode_single(ABIContractType.UINT256, v) + @classmethod def parse_grow_by(self, v): return abi_decode_single(ABIContractType.UINT256, v) @@ -561,3 +577,8 @@ class DemurrageToken(ERC20): @classmethod def parse_resolution_factor(self, v): return abi_decode_single(ABIContractType.UINT256, v) + + + @classmethod + def parse_total_burned(self, v): + return abi_decode_single(ABIContractType.UINT256, v) diff --git a/python/tests/test_burn.py b/python/tests/test_burn.py index ccb577c..01fe628 100644 --- a/python/tests/test_burn.py +++ b/python/tests/test_burn.py @@ -37,7 +37,7 @@ class TestBurn(TestDemurrageDefault): nonce_oracle = RPCNonceOracle(self.accounts[1], self.rpc) c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) - (tx_hash, o) = c.burn(self.address, self.accounts[1], 500000) + (tx_hash, o) = c.burn(self.address, self.accounts[1], 600000) r = self.rpc.do(o) o = receipt(tx_hash) r = self.rpc.do(o) @@ -50,7 +50,7 @@ class TestBurn(TestDemurrageDefault): nonce_oracle = RPCNonceOracle(self.accounts[1], self.rpc) c = DemurrageToken(self.chain_spec, signer=self.signer, nonce_oracle=nonce_oracle) - (tx_hash, o) = c.burn(self.address, self.accounts[1], 500000) + (tx_hash, o) = c.burn(self.address, self.accounts[1], 600000) r = self.rpc.do(o) o = receipt(tx_hash) r = self.rpc.do(o) @@ -59,7 +59,12 @@ class TestBurn(TestDemurrageDefault): o = c.total_supply(self.address, sender_address=self.accounts[0]) r = self.rpc.do(o) new_supply = c.parse_total_supply(r) - self.assertEqual(new_supply, 500000) + self.assertEqual(new_supply, 400000) + + o = c.total_burned(self.address, sender_address=self.accounts[0]) + r = self.rpc.do(o) + burned = c.parse_total_burned(r) + self.assertEqual(burned, 600000) def test_burned_redistribution(self): diff --git a/solidity/DemurrageTokenSingleNocap.sol b/solidity/DemurrageTokenSingleNocap.sol index b6e24b4..ea77edf 100644 --- a/solidity/DemurrageTokenSingleNocap.sol +++ b/solidity/DemurrageTokenSingleNocap.sol @@ -509,6 +509,11 @@ contract DemurrageTokenSingleCap { return supply - burned; } + // Return total number of burned tokens + function totalBurned() public view returns (uint256) { + return burned; + } + // Implements EIP165 function supportsInterface(bytes4 _sum) public pure returns (bool) { if (_sum == 0xc6bb4b70) { // ERC20