diff --git a/python/ge_capped_token/data/CappedToken.bin b/python/ge_capped_token/data/CappedToken.bin index acf5f9d..270d138 100644 --- a/python/ge_capped_token/data/CappedToken.bin +++ b/python/ge_capped_token/data/CappedToken.bin @@ -1 +1 @@ -60806040523480156200001157600080fd5b5060405162002cd138038062002cd1833981810160405281019062000037919062000290565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290816200008891906200057b565b5081600390816200009a91906200057b565b5080600460006101000a81548160ff021916908360ff16021790555050505062000662565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200012882620000dd565b810181811067ffffffffffffffff821117156200014a5762000149620000ee565b5b80604052505050565b60006200015f620000bf565b90506200016d82826200011d565b919050565b600067ffffffffffffffff82111562000190576200018f620000ee565b5b6200019b82620000dd565b9050602081019050919050565b60005b83811015620001c8578082015181840152602081019050620001ab565b60008484015250505050565b6000620001eb620001e58462000172565b62000153565b9050828152602081018484840111156200020a5762000209620000d8565b5b62000217848285620001a8565b509392505050565b600082601f830112620002375762000236620000d3565b5b815162000249848260208601620001d4565b91505092915050565b600060ff82169050919050565b6200026a8162000252565b81146200027657600080fd5b50565b6000815190506200028a816200025f565b92915050565b600080600060608486031215620002ac57620002ab620000c9565b5b600084015167ffffffffffffffff811115620002cd57620002cc620000ce565b5b620002db868287016200021f565b935050602084015167ffffffffffffffff811115620002ff57620002fe620000ce565b5b6200030d868287016200021f565b9250506040620003208682870162000279565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200037d57607f821691505b60208210810362000393576200039262000335565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b600060088302620004007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003be565b6200040c8683620003be565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000459620004536200044d8462000424565b6200042e565b62000424565b9050919050565b6000819050919050565b620004758362000438565b6200048d620004848262000460565b848454620003ce565b825550505050565b600090565b620004a462000495565b620004b18184846200046a565b505050565b5b81811015620004d957620004cd6000826200049a565b600181019050620004b7565b5050565b601f8211156200052857620004f28162000399565b620004fd84620003ae565b810160208510156200050d578190505b620005256200051c85620003ae565b830182620004b6565b50505b505050565b60008160020a8304905092915050565b600062000550600019846008026200052d565b1980831691505092915050565b60006200056b83836200053d565b9150826002028217905092915050565b62000586826200032a565b67ffffffffffffffff811115620005a257620005a1620000ee565b5b620005ae825462000364565b620005bb828285620004dd565b600060209050601f831160018114620005f35760008415620005de578287015190505b620005ea85826200055d565b8655506200065a565b601f198416620006038662000399565b60005b828110156200062d5784890151825560018201915060208501945060208101905062000606565b868310156200064d578489015162000649601f8916826200053d565b8355505b6001600288020188555050505b505050505050565b61265f80620006726000396000f3fe608060405234801561001057600080fd5b5060043610610202576000357c0100000000000000000000000000000000000000000000000000000000900480635ae06f7e1161012c578063a2309ff8116100bf578063d89135cd1161008e578063d89135cd146105ef578063da2824a81461060d578063dd62ed3e1461063d578063f2fde38b1461066d57610202565b8063a2309ff814610565578063a9059cbb14610583578063b1cb0db3146105b3578063d5abeb01146105d157610202565b806386fe212d116100fb57806386fe212d146104dd5780638da5cb5b1461050d57806394d008ef1461052b57806395d89b411461054757610202565b80635ae06f7e146104435780635f408c04146104735780636f8b44b01461049157806370a08231146104ad57610202565b80632c1758c1116101a457806342966c681161017357806342966c68146103a9578063449a52f8146103d957806344d171871461040957806344df8e701461042557610202565b80632c1758c114610321578063313ce5671461035157806331a5995d1461036f57806332c270521461038d57610202565b806318160ddd116101e057806318160ddd1461028557806318cbbcfc146102a357806323b872dd146102c15780632b29ba23146102f157610202565b806301ffc9a71461020757806306fdde0314610237578063095ea7b314610255575b600080fd5b610221600480360381019061021c9190611d2c565b61069d565b60405161022e9190611d74565b60405180910390f35b61023f6108e7565b60405161024c9190611e1f565b60405180910390f35b61026f600480360381019061026a9190611ed5565b610975565b60405161027c9190611d74565b60405180910390f35b61028d610b10565b60405161029a9190611f24565b60405180910390f35b6102ab610b27565b6040516102b89190611f24565b60405180910390f35b6102db60048036038101906102d69190611f3f565b610b2c565b6040516102e89190611d74565b60405180910390f35b61030b60048036038101906103069190611f92565b610e54565b6040516103189190611d74565b60405180910390f35b61033b60048036038101906103369190611fbf565b610f00565b6040516103489190611d74565b60405180910390f35b610359610f33565b6040516103669190612008565b60405180910390f35b610377610f46565b6040516103849190611f24565b60405180910390f35b6103a760048036038101906103a29190611fbf565b610f4c565b005b6103c360048036038101906103be9190611fbf565b611027565b6040516103d09190611d74565b60405180910390f35b6103f360048036038101906103ee9190611ed5565b6111e9565b6040516104009190611d74565b60405180910390f35b610423600480360381019061041e9190612088565b611425565b005b61042d6114a3565b60405161043a9190611d74565b60405180910390f35b61045d60048036038101906104589190611f92565b6114f2565b60405161046a9190611d74565b60405180910390f35b61047b611630565b6040516104889190612008565b60405180910390f35b6104ab60048036038101906104a69190611fbf565b6116ce565b005b6104c760048036038101906104c29190611f92565b611794565b6040516104d49190611f24565b60405180910390f35b6104f760048036038101906104f29190611fbf565b6117ac565b6040516105049190611f24565b60405180910390f35b61051561189f565b604051610522919061210b565b60405180910390f35b61054560048036038101906105409190612088565b6118c3565b005b61054f6118d4565b60405161055c9190611e1f565b60405180910390f35b61056d611962565b60405161057a9190611f24565b60405180910390f35b61059d60048036038101906105989190611ed5565b611968565b6040516105aa9190611d74565b60405180910390f35b6105bb611ae7565b6040516105c89190611f24565b60405180910390f35b6105d9611aed565b6040516105e69190611f24565b60405180910390f35b6105f7611af3565b6040516106049190611f24565b60405180910390f35b61062760048036038101906106229190611f92565b611af9565b6040516106349190611d74565b60405180910390f35b61065760048036038101906106529190612126565b611c01565b6040516106649190611f24565b60405180910390f35b61068760048036038101906106829190611f92565b611c26565b6040516106949190611d74565b60405180910390f35b600063b61bc9417c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036106f157600190506108e2565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361074357600190506108e2565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361079557600190506108e2565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036107e757600190506108e2565b63abe1f1f57c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361083957600190506108e2565b63b1110c1b7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361088b57600190506108e2565b63841a0e947c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036108dd57600190506108e2565b600090505b919050565b600280546108f490612195565b80601f016020809104026020016040519081016040528092919081815260200182805461092090612195565b801561096d5780601f106109425761010080835404028352916020019161096d565b820191906000526020600020905b81548152906001019060200180831161095057829003601f168201915b505050505081565b600080610980611630565b60ff161461098d57600080fd5b6000821115610a20576000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a1f57600080fd5b5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610afe9190611f24565b60405180910390a36001905092915050565b6000600854600754610b2291906121f5565b905090565b600f81565b600080610b37611630565b60ff1614610b4457600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bcd57600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c1957600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ca191906121f5565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d7091906121f5565b9250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc69190612229565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f93985604051610e419190611f24565b60405180910390a4600190509392505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610ef9575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000600f8210610f0f57600080fd5b60008203610f2457600f600d54149050610f2e565b81600d5483161490505b919050565b600460009054906101000a900460ff1681565b600d5481565b610f59600460ff16610f00565b15610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f90906122a9565b60405180910390fd5b428111610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290612315565b60405180910390fd5b6000600954905081600981905550807ff5bd6cb27a0006b5ea8618058a0d84719695cb6d984f4840bc1a54ca12ae4b7c60095460405161101b9190611f24565b60405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110af90612381565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561113a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611131906123ed565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461118991906121f5565b9250508190555081600860008282546111a29190612229565b925050819055507fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb826040516111d89190611f24565b60405180910390a160019050919050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061128e575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490612459565b60405180910390fd5b60006112d7611630565b60ff161461131a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611311906124c5565b60405180910390fd5b6000600b54111561134757600b5482611331610b10565b61133b9190612229565b111561134657600080fd5b5b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113969190612229565b9250508190555081600760008282546113af9190612229565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8846040516114139190611f24565b60405180910390a36001905092915050565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90612531565b60405180910390fd5b61149c83611027565b5050505050565b60006114ed600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611027565b905090565b6000611501600160ff16610f00565b15611541576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611538906122a9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115c657508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115cf57600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000806009540361164457600090506116cb565b600a60009054906101000a900460ff161561166257600190506116cb565b60095442106116c6576001600a60006101000a81548160ff0219169083151502179055507ff80dbaea4785589e52984ca36a31de106adc77759539a5c7d92883bf49692fe9426040516116b59190611f24565b60405180910390a1600290506116cb565b600090505b90565b6116db600260ff16610f00565b156116e557600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461173d57600080fd5b611745610b10565b811161175057600080fd5b600b547f9722adea12ab7ef86fc45b88f0e0b567639e8dddaae60261e08c03d747fbbfe6826040516117829190611f24565b60405180910390a280600b8190555050565b60056020528060005260406000206000915090505481565b60006001600f6117bc9190612229565b82106117fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f49061259d565b60405180910390fd5b6000600d54831614611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90612609565b60405180910390fd5b81600d60008282541792505081905550600f600d541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e600d5460405161188d9190611f24565b60405180910390a2600d549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118cd84846111e9565b5050505050565b600380546118e190612195565b80601f016020809104026020016040519081016040528092919081815260200182805461190d90612195565b801561195a5780601f1061192f5761010080835404028352916020019161195a565b820191906000526020600020905b81548152906001019060200180831161193d57829003601f168201915b505050505081565b60075481565b600080611973611630565b60ff161461198057600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156119cc57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a1b91906121f5565b9250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a719190612229565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ad59190611f24565b60405180910390a36001905092915050565b60095481565b600b5481565b60085481565b6000611b08600160ff16610f00565b15611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f906122a9565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ba057600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6006602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c8157600080fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d0981611cd4565b8114611d1457600080fd5b50565b600081359050611d2681611d00565b92915050565b600060208284031215611d4257611d41611cca565b5b6000611d5084828501611d17565b91505092915050565b60008115159050919050565b611d6e81611d59565b82525050565b6000602082019050611d896000830184611d65565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611dc9578082015181840152602081019050611dae565b60008484015250505050565b6000601f19601f8301169050919050565b6000611df182611d8f565b611dfb8185611d9a565b9350611e0b818560208601611dab565b611e1481611dd5565b840191505092915050565b60006020820190508181036000830152611e398184611de6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e6c82611e41565b9050919050565b611e7c81611e61565b8114611e8757600080fd5b50565b600081359050611e9981611e73565b92915050565b6000819050919050565b611eb281611e9f565b8114611ebd57600080fd5b50565b600081359050611ecf81611ea9565b92915050565b60008060408385031215611eec57611eeb611cca565b5b6000611efa85828601611e8a565b9250506020611f0b85828601611ec0565b9150509250929050565b611f1e81611e9f565b82525050565b6000602082019050611f396000830184611f15565b92915050565b600080600060608486031215611f5857611f57611cca565b5b6000611f6686828701611e8a565b9350506020611f7786828701611e8a565b9250506040611f8886828701611ec0565b9150509250925092565b600060208284031215611fa857611fa7611cca565b5b6000611fb684828501611e8a565b91505092915050565b600060208284031215611fd557611fd4611cca565b5b6000611fe384828501611ec0565b91505092915050565b600060ff82169050919050565b61200281611fec565b82525050565b600060208201905061201d6000830184611ff9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261204857612047612023565b5b8235905067ffffffffffffffff81111561206557612064612028565b5b6020830191508360018202830111156120815761208061202d565b5b9250929050565b600080600080606085870312156120a2576120a1611cca565b5b60006120b087828801611e8a565b94505060206120c187828801611ec0565b935050604085013567ffffffffffffffff8111156120e2576120e1611ccf565b5b6120ee87828801612032565b925092505092959194509250565b61210581611e61565b82525050565b600060208201905061212060008301846120fc565b92915050565b6000806040838503121561213d5761213c611cca565b5b600061214b85828601611e8a565b925050602061215c85828601611e8a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806121ad57607f821691505b6020821081036121c0576121bf612166565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061220082611e9f565b915061220b83611e9f565b9250828203905081811115612223576122226121c6565b5b92915050565b600061223482611e9f565b915061223f83611e9f565b9250828201905080821115612257576122566121c6565b5b92915050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b6000612293600a83611d9a565b915061229e8261225d565b602082019050919050565b600060208201905081810360008301526122c281612286565b9050919050565b7f4552525f4558504952455f504153540000000000000000000000000000000000600082015250565b60006122ff600f83611d9a565b915061230a826122c9565b602082019050919050565b6000602082019050818103600083015261232e816122f2565b9050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b600061236b600a83611d9a565b915061237682612335565b602082019050919050565b6000602082019050818103600083015261239a8161235e565b9050919050565b7f4552525f46554e44530000000000000000000000000000000000000000000000600082015250565b60006123d7600983611d9a565b91506123e2826123a1565b602082019050919050565b60006020820190508181036000830152612406816123ca565b9050919050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b6000612443600783611d9a565b915061244e8261240d565b602082019050919050565b6000602082019050818103600083015261247281612436565b9050919050565b7f4552525f45585049524500000000000000000000000000000000000000000000600082015250565b60006124af600a83611d9a565b91506124ba82612479565b602082019050919050565b600060208201905081810360008301526124de816124a2565b9050919050565b7f4552525f4e4f545f53454c460000000000000000000000000000000000000000600082015250565b600061251b600c83611d9a565b9150612526826124e5565b602082019050919050565b6000602082019050818103600083015261254a8161250e565b9050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b6000612587601183611d9a565b915061259282612551565b602082019050919050565b600060208201905081810360008301526125b68161257a565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b60006125f3601283611d9a565b91506125fe826125bd565b602082019050919050565b60006020820190508181036000830152612622816125e6565b905091905056fea2646970667358221220ca76652a83e58a5301d98c1e8ae69838134851a998c4af0daf68c501c472c16364736f6c63430008130033 \ No newline at end of file +60806040523480156200001157600080fd5b5060405162002d2338038062002d23833981810160405281019062000037919062000290565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600290816200008891906200057b565b5081600390816200009a91906200057b565b5080600460006101000a81548160ff021916908360ff16021790555050505062000662565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200012882620000dd565b810181811067ffffffffffffffff821117156200014a5762000149620000ee565b5b80604052505050565b60006200015f620000bf565b90506200016d82826200011d565b919050565b600067ffffffffffffffff82111562000190576200018f620000ee565b5b6200019b82620000dd565b9050602081019050919050565b60005b83811015620001c8578082015181840152602081019050620001ab565b60008484015250505050565b6000620001eb620001e58462000172565b62000153565b9050828152602081018484840111156200020a5762000209620000d8565b5b62000217848285620001a8565b509392505050565b600082601f830112620002375762000236620000d3565b5b815162000249848260208601620001d4565b91505092915050565b600060ff82169050919050565b6200026a8162000252565b81146200027657600080fd5b50565b6000815190506200028a816200025f565b92915050565b600080600060608486031215620002ac57620002ab620000c9565b5b600084015167ffffffffffffffff811115620002cd57620002cc620000ce565b5b620002db868287016200021f565b935050602084015167ffffffffffffffff811115620002ff57620002fe620000ce565b5b6200030d868287016200021f565b9250506040620003208682870162000279565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200037d57607f821691505b60208210810362000393576200039262000335565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b60008160020a8302905092915050565b600060088302620004007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003be565b6200040c8683620003be565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000459620004536200044d8462000424565b6200042e565b62000424565b9050919050565b6000819050919050565b620004758362000438565b6200048d620004848262000460565b848454620003ce565b825550505050565b600090565b620004a462000495565b620004b18184846200046a565b505050565b5b81811015620004d957620004cd6000826200049a565b600181019050620004b7565b5050565b601f8211156200052857620004f28162000399565b620004fd84620003ae565b810160208510156200050d578190505b620005256200051c85620003ae565b830182620004b6565b50505b505050565b60008160020a8304905092915050565b600062000550600019846008026200052d565b1980831691505092915050565b60006200056b83836200053d565b9150826002028217905092915050565b62000586826200032a565b67ffffffffffffffff811115620005a257620005a1620000ee565b5b620005ae825462000364565b620005bb828285620004dd565b600060209050601f831160018114620005f35760008415620005de578287015190505b620005ea85826200055d565b8655506200065a565b601f198416620006038662000399565b60005b828110156200062d5784890151825560018201915060208501945060208101905062000606565b868310156200064d578489015162000649601f8916826200053d565b8355505b6001600288020188555050505b505050505050565b6126b180620006726000396000f3fe608060405234801561001057600080fd5b5060043610610202576000357c0100000000000000000000000000000000000000000000000000000000900480635ae06f7e1161012c578063a2309ff8116100bf578063d89135cd1161008e578063d89135cd146105ef578063da2824a81461060d578063dd62ed3e1461063d578063f2fde38b1461066d57610202565b8063a2309ff814610565578063a9059cbb14610583578063b1cb0db3146105b3578063d5abeb01146105d157610202565b806386fe212d116100fb57806386fe212d146104dd5780638da5cb5b1461050d57806394d008ef1461052b57806395d89b411461054757610202565b80635ae06f7e146104435780635f408c04146104735780636f8b44b01461049157806370a08231146104ad57610202565b80632c1758c1116101a457806342966c681161017357806342966c68146103a9578063449a52f8146103d957806344d171871461040957806344df8e701461042557610202565b80632c1758c114610321578063313ce5671461035157806331a5995d1461036f57806332c270521461038d57610202565b806318160ddd116101e057806318160ddd1461028557806318cbbcfc146102a357806323b872dd146102c15780632b29ba23146102f157610202565b806301ffc9a71461020757806306fdde0314610237578063095ea7b314610255575b600080fd5b610221600480360381019061021c9190611d7e565b61069d565b60405161022e9190611dc6565b60405180910390f35b61023f610939565b60405161024c9190611e71565b60405180910390f35b61026f600480360381019061026a9190611f27565b6109c7565b60405161027c9190611dc6565b60405180910390f35b61028d610b62565b60405161029a9190611f76565b60405180910390f35b6102ab610b79565b6040516102b89190611f76565b60405180910390f35b6102db60048036038101906102d69190611f91565b610b7e565b6040516102e89190611dc6565b60405180910390f35b61030b60048036038101906103069190611fe4565b610ea6565b6040516103189190611dc6565b60405180910390f35b61033b60048036038101906103369190612011565b610f52565b6040516103489190611dc6565b60405180910390f35b610359610f85565b604051610366919061205a565b60405180910390f35b610377610f98565b6040516103849190611f76565b60405180910390f35b6103a760048036038101906103a29190612011565b610f9e565b005b6103c360048036038101906103be9190612011565b611079565b6040516103d09190611dc6565b60405180910390f35b6103f360048036038101906103ee9190611f27565b61123b565b6040516104009190611dc6565b60405180910390f35b610423600480360381019061041e91906120da565b611477565b005b61042d6114f5565b60405161043a9190611dc6565b60405180910390f35b61045d60048036038101906104589190611fe4565b611544565b60405161046a9190611dc6565b60405180910390f35b61047b611682565b604051610488919061205a565b60405180910390f35b6104ab60048036038101906104a69190612011565b611720565b005b6104c760048036038101906104c29190611fe4565b6117e6565b6040516104d49190611f76565b60405180910390f35b6104f760048036038101906104f29190612011565b6117fe565b6040516105049190611f76565b60405180910390f35b6105156118f1565b604051610522919061215d565b60405180910390f35b610545600480360381019061054091906120da565b611915565b005b61054f611926565b60405161055c9190611e71565b60405180910390f35b61056d6119b4565b60405161057a9190611f76565b60405180910390f35b61059d60048036038101906105989190611f27565b6119ba565b6040516105aa9190611dc6565b60405180910390f35b6105bb611b39565b6040516105c89190611f76565b60405180910390f35b6105d9611b3f565b6040516105e69190611f76565b60405180910390f35b6105f7611b45565b6040516106049190611f76565b60405180910390f35b61062760048036038101906106229190611fe4565b611b4b565b6040516106349190611dc6565b60405180910390f35b61065760048036038101906106529190612178565b611c53565b6040516106649190611f76565b60405180910390f35b61068760048036038101906106829190611fe4565b611c78565b6040516106949190611dc6565b60405180910390f35b600063b61bc9417c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036106f15760019050610934565b63449a52f87c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036107435760019050610934565b6301ffc9a77c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036107955760019050610934565b639493f8b27c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036107e75760019050610934565b63abe1f1f57c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036108395760019050610934565b63b1110c1b7c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361088b5760019050610934565b63841a0e947c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036108dd5760019050610934565b63869f75947c010000000000000000000000000000000000000000000000000000000002827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361092f5760019050610934565b600090505b919050565b60028054610946906121e7565b80601f0160208091040260200160405190810160405280929190818152602001828054610972906121e7565b80156109bf5780601f10610994576101008083540402835291602001916109bf565b820191906000526020600020905b8154815290600101906020018083116109a257829003601f168201915b505050505081565b6000806109d2611682565b60ff16146109df57600080fd5b6000821115610a72576000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a7157600080fd5b5b81600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b509190611f76565b60405180910390a36001905092915050565b6000600854600754610b749190612247565b905090565b600f81565b600080610b89611682565b60ff1614610b9657600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c1f57600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c6b57600080fd5b81600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cf39190612247565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc29190612247565b9250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e18919061227b565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f5f7542858008eeb041631f30e6109ae94b83a58e9a58261dd2c42c508850f93985604051610e939190611f76565b60405180910390a4600190509392505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610f4b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000600f8210610f6157600080fd5b60008203610f7657600f600d54149050610f80565b81600d5483161490505b919050565b600460009054906101000a900460ff1681565b600d5481565b610fab600460ff16610f52565b15610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe2906122fb565b60405180910390fd5b42811161102d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102490612367565b60405180910390fd5b6000600954905081600981905550807ff5bd6cb27a0006b5ea8618058a0d84719695cb6d984f4840bc1a54ca12ae4b7c60095460405161106d9190611f76565b60405180910390a25050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461110a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611101906123d3565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561118c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111839061243f565b60405180910390fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111db9190612247565b9250508190555081600860008282546111f4919061227b565b925050819055507fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb8260405161122a9190611f76565b60405180910390a160019050919050565b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806112e0575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61131f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611316906124ab565b60405180910390fd5b6000611329611682565b60ff161461136c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136390612517565b60405180910390fd5b6000600b54111561139957600b5482611383610b62565b61138d919061227b565b111561139857600080fd5b5b81600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113e8919061227b565b925050819055508160076000828254611401919061227b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8846040516114659190611f76565b60405180910390a36001905092915050565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc90612583565b60405180910390fd5b6114ee83611079565b5050505050565b600061153f600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611079565b905090565b6000611553600160ff16610f52565b15611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a906122fb565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061161857508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61162157600080fd5b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60008060095403611696576000905061171d565b600a60009054906101000a900460ff16156116b4576001905061171d565b6009544210611718576001600a60006101000a81548160ff0219169083151502179055507ff80dbaea4785589e52984ca36a31de106adc77759539a5c7d92883bf49692fe9426040516117079190611f76565b60405180910390a16002905061171d565b600090505b90565b61172d600260ff16610f52565b1561173757600080fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178f57600080fd5b611797610b62565b81116117a257600080fd5b600b547f9722adea12ab7ef86fc45b88f0e0b567639e8dddaae60261e08c03d747fbbfe6826040516117d49190611f76565b60405180910390a280600b8190555050565b60056020528060005260406000206000915090505481565b60006001600f61180e919061227b565b821061184f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611846906125ef565b60405180910390fd5b6000600d54831614611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188d9061265b565b60405180910390fd5b81600d60008282541792505081905550600f600d541415157f6b7e2e653f93b645d4ed7292d6429f96637084363e477c8aaea1a43ed13c284e600d546040516118df9190611f76565b60405180910390a2600d549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61191f848461123b565b5050505050565b60038054611933906121e7565b80601f016020809104026020016040519081016040528092919081815260200182805461195f906121e7565b80156119ac5780601f10611981576101008083540402835291602001916119ac565b820191906000526020600020905b81548152906001019060200180831161198f57829003601f168201915b505050505081565b60075481565b6000806119c5611682565b60ff16146119d257600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a1e57600080fd5b81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a6d9190612247565b9250508190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ac3919061227b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b279190611f76565b60405180910390a36001905092915050565b60095481565b600b5481565b60085481565b6000611b5a600160ff16610f52565b15611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906122fb565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf257600080fd5b6001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6006602052816000526040600020602052806000526040600020600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cd357600080fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d5b81611d26565b8114611d6657600080fd5b50565b600081359050611d7881611d52565b92915050565b600060208284031215611d9457611d93611d1c565b5b6000611da284828501611d69565b91505092915050565b60008115159050919050565b611dc081611dab565b82525050565b6000602082019050611ddb6000830184611db7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e1b578082015181840152602081019050611e00565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e4382611de1565b611e4d8185611dec565b9350611e5d818560208601611dfd565b611e6681611e27565b840191505092915050565b60006020820190508181036000830152611e8b8184611e38565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ebe82611e93565b9050919050565b611ece81611eb3565b8114611ed957600080fd5b50565b600081359050611eeb81611ec5565b92915050565b6000819050919050565b611f0481611ef1565b8114611f0f57600080fd5b50565b600081359050611f2181611efb565b92915050565b60008060408385031215611f3e57611f3d611d1c565b5b6000611f4c85828601611edc565b9250506020611f5d85828601611f12565b9150509250929050565b611f7081611ef1565b82525050565b6000602082019050611f8b6000830184611f67565b92915050565b600080600060608486031215611faa57611fa9611d1c565b5b6000611fb886828701611edc565b9350506020611fc986828701611edc565b9250506040611fda86828701611f12565b9150509250925092565b600060208284031215611ffa57611ff9611d1c565b5b600061200884828501611edc565b91505092915050565b60006020828403121561202757612026611d1c565b5b600061203584828501611f12565b91505092915050565b600060ff82169050919050565b6120548161203e565b82525050565b600060208201905061206f600083018461204b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261209a57612099612075565b5b8235905067ffffffffffffffff8111156120b7576120b661207a565b5b6020830191508360018202830111156120d3576120d261207f565b5b9250929050565b600080600080606085870312156120f4576120f3611d1c565b5b600061210287828801611edc565b945050602061211387828801611f12565b935050604085013567ffffffffffffffff81111561213457612133611d21565b5b61214087828801612084565b925092505092959194509250565b61215781611eb3565b82525050565b6000602082019050612172600083018461214e565b92915050565b6000806040838503121561218f5761218e611d1c565b5b600061219d85828601611edc565b92505060206121ae85828601611edc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806121ff57607f821691505b602082108103612212576122116121b8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061225282611ef1565b915061225d83611ef1565b925082820390508181111561227557612274612218565b5b92915050565b600061228682611ef1565b915061229183611ef1565b92508282019050808211156122a9576122a8612218565b5b92915050565b7f4552525f5345414c454400000000000000000000000000000000000000000000600082015250565b60006122e5600a83611dec565b91506122f0826122af565b602082019050919050565b60006020820190508181036000830152612314816122d8565b9050919050565b7f4552525f4558504952455f504153540000000000000000000000000000000000600082015250565b6000612351600f83611dec565b915061235c8261231b565b602082019050919050565b6000602082019050818103600083015261238081612344565b9050919050565b7f4552525f41434345535300000000000000000000000000000000000000000000600082015250565b60006123bd600a83611dec565b91506123c882612387565b602082019050919050565b600060208201905081810360008301526123ec816123b0565b9050919050565b7f4552525f46554e44530000000000000000000000000000000000000000000000600082015250565b6000612429600983611dec565b9150612434826123f3565b602082019050919050565b600060208201905081810360008301526124588161241c565b9050919050565b7f4552525f41585800000000000000000000000000000000000000000000000000600082015250565b6000612495600783611dec565b91506124a08261245f565b602082019050919050565b600060208201905081810360008301526124c481612488565b9050919050565b7f4552525f45585049524500000000000000000000000000000000000000000000600082015250565b6000612501600a83611dec565b915061250c826124cb565b602082019050919050565b60006020820190508181036000830152612530816124f4565b9050919050565b7f4552525f4e4f545f53454c460000000000000000000000000000000000000000600082015250565b600061256d600c83611dec565b915061257882612537565b602082019050919050565b6000602082019050818103600083015261259c81612560565b9050919050565b7f4552525f494e56414c49445f5354415445000000000000000000000000000000600082015250565b60006125d9601183611dec565b91506125e4826125a3565b602082019050919050565b60006020820190508181036000830152612608816125cc565b9050919050565b7f4552525f414c52454144595f4c4f434b45440000000000000000000000000000600082015250565b6000612645601283611dec565b91506126508261260f565b602082019050919050565b6000602082019050818103600083015261267481612638565b905091905056fea26469706673582212204cf05f16fbd21609f8dd28bf11d1edc56d0abb5304bf2f5d2f2e90a6e6ef8b7864736f6c63430008130033 \ No newline at end of file diff --git a/python/ge_capped_token/data/CappedToken.metadata.json b/python/ge_capped_token/data/CappedToken.metadata.json index ebb6225..9a5895a 100644 --- a/python/ge_capped_token/data/CappedToken.metadata.json +++ b/python/ge_capped_token/data/CappedToken.metadata.json @@ -1 +1 @@ -{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"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":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"Cap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Expired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTimestamp","type":"uint256"}],"name":"ExpiryChange","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":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyExpiry","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"expires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","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":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setExpire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","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":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","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"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"CappedToken.sol":"CappedToken"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"CappedToken.sol":{"keccak256":"0x8df36e4a53a68fcb5ad34f1c6dac8331540ff8f4775c50d0870bf538c8472cdb","license":"AGPL-3.0-or-later","urls":["bzz-raw://13f0631a95c17c22106c3d4385f239248d5ede9bcd02d936f78d75044c99730d","dweb:/ipfs/QmZNLbk3eTSKTUo9Do45XrR78RUJZJMRGjqsRZZoZsdrSU"]}},"version":1} +{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"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":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newCap","type":"uint256"}],"name":"Cap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"Expired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_oldTimestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newTimestamp","type":"uint256"}],"name":"ExpiryChange","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":"bool","name":"_final","type":"bool"},{"indexed":false,"internalType":"uint256","name":"_sealState","type":"uint256"}],"name":"SealStateChange","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"TransferFrom","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyExpiry","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"expires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"isSealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"isWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","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":[{"internalType":"uint256","name":"_state","type":"uint256"}],"name":"seal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sealState","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"setExpire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cap","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","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":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","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"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"CappedToken.sol":"CappedToken"},"evmVersion":"byzantium","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":false,"runs":200},"remappings":[]},"sources":{"CappedToken.sol":{"keccak256":"0x513749607a4a628959be1dd468cd68d2dee0e2a53ba5304f0bdb574f47fb886d","license":"AGPL-3.0-or-later","urls":["bzz-raw://5322bd61060b7fec37b3791f9ab812ee36e0896e6e339e41c99cb82b1502f2d1","dweb:/ipfs/QmdZHxnQ9FYajnvhv6EYsnn9np7YXZEe9sA8ykZsGaYoQQ"]}},"version":1} diff --git a/python/test_requirements.txt b/python/test_requirements.txt index d2d97a3..19df72d 100644 --- a/python/test_requirements.txt +++ b/python/test_requirements.txt @@ -1,4 +1,5 @@ eth_tester==0.5.0b3 py-evm==0.3.0a20 pytest==6.0.1 -cic-contracts~=0.3.6 +cic-contracts~=0.3.8 +eth-interface~=0.1.2 diff --git a/python/tests/test_cic_burner.py b/python/tests/test_cic_burner.py index ddb74d4..d9ec6ee 100644 --- a/python/tests/test_cic_burner.py +++ b/python/tests/test_cic_burner.py @@ -9,6 +9,7 @@ from chainlib.eth.block import block_by_number from eth_burner.unittest import TestEthBurnerInterface from eth_burner.unittest.base import TestEthBurner from ge_capped_token.unittest import TestCappedToken +from cic_contracts import erc165_for logging.basicConfig(level=logging.DEBUG) logg = logging.getLogger() diff --git a/python/tests/test_erc165.py b/python/tests/test_erc165.py new file mode 100644 index 0000000..7690674 --- /dev/null +++ b/python/tests/test_erc165.py @@ -0,0 +1,34 @@ +# standard imports +import unittest +import logging + +# external imports +from cic_contracts import erc165_for +from eth_interface.unittest import TestERC165 + +# local imports +from ge_capped_token.unittest import TestCappedToken + +logging.basicConfig(level=logging.DEBUG) +logg = logging.getLogger() + + +class TestEthCappedBurner(TestCappedToken, TestERC165): + + def setUp(self): + super(TestEthCappedBurner, self).setUp() + for v in [ +# 'Minter', + 'Burner', + 'Capped', + 'Writer', + 'Expire', + 'ERC20', + ]: + ifc = erc165_for(v) + logg.debug('add interface check {} -> {}'.format(v, ifc)) + self.add_interface_check(ifc) + + +if __name__ == '__main__': + unittest.main() diff --git a/solidity/CappedToken.sol b/solidity/CappedToken.sol index 7a2b05d..c4dcf70 100644 --- a/solidity/CappedToken.sol +++ b/solidity/CappedToken.sol @@ -271,6 +271,9 @@ contract CappedToken { if (_sum == 0x841a0e94) { // Expire return true; } + if (_sum == 0x869f7594) { // Capped + return true; + } return false; } }