Commit 98bfbd81 authored by clabby's avatar clabby

Fix first `MIPS` tests

parent e4b9e3b8
......@@ -37,8 +37,8 @@ type IFaultDisputeGameOutputProposal struct {
// FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract.
var FaultDisputeGameMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"},{\"internalType\":\"contractBlockOracle\",\"name\":\"_blockOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotDefendRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockTimeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameDepthExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameNotInProgress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrestate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1HeadTooOld\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidStep\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimant\",\"type\":\"address\"}],\"name\":\"Move\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumGameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_PRESTATE\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLOCK_ORACLE\",\"outputs\":[{\"internalType\":\"contractBlockOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_GAME_DEPTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VM\",\"outputs\":[{\"internalType\":\"contractIBigStepper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondManager\",\"outputs\":[{\"internalType\":\"contractIBondManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimData\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"parentIndex\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"countered\",\"type\":\"bool\"},{\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"internalType\":\"Position\",\"name\":\"position\",\"type\":\"uint128\"},{\"internalType\":\"Clock\",\"name\":\"clock\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDataLen\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"len_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"defend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extraData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameData\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameType\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"}],\"name\":\"move\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposals\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"starting\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"disputed\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootClaim\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
Bin: "0x6101c06040523480156200001257600080fd5b5060405162002cb338038062002cb38339810160408190526200003591620000a1565b6000608081905260a052600860c05260ff9096166101a05260e094909452610100929092526001600160401b0316610120526001600160a01b039081166101405290811661016052166101805262000145565b6001600160a01b03811681146200009e57600080fd5b50565b600080600080600080600060e0888a031215620000bd57600080fd5b875160ff81168114620000cf57600080fd5b602089015160408a015160608b015192995090975095506001600160401b0381168114620000fc57600080fd5b60808901519094506200010f8162000088565b60a0890151909350620001228162000088565b60c0890151909250620001358162000088565b8091505092959891949750929550565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051612a976200021c600039600081816105220152611e5d01526000818161035e01526116e701526000818161059b015281816114b40152818161158801526116610152600081816104ec015281816107450152611bdc0152600081816105cf01528181610ab7015261109801526000818161032a015281816109bf01528181610ed701526119e30152600081816102210152611b3f01526000610d3401526000610d0b01526000610ce20152612a976000f3fe6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c1461061d578063cf09e0d014610681578063d8cc1a3c146106a2578063fa24f743146106c257600080fd5b8063c0c3a09214610589578063c31b29ce146105bd578063c55cd0c71461060a57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461054c57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d501461038057806355ef20e6146103a2578063609d333414610432578063632247ea1461044757600080fd5b8063363cc427146102b95780634778efe814610318578063529184c91461034c57600080fd5b80632810e1d61161018a5780632810e1d614610251578063298c90051461026657806335fef567146102a657600080fd5b80631e27052a146101b1578063200d2ed2146101d3578063266198f91461020f575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004612338565b6106e6565b005b3480156101df57600080fd5b506000546101f99068010000000000000000900460ff1681565b6040516102069190612389565b60405180910390f35b34801561021b57600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b34801561025d57600080fd5b506101f96108a5565b34801561027257600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610243565b6101d16102b4366004612338565b610ccb565b3480156102c557600080fd5b506000546102f3906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610206565b34801561032457600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b34801561035857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561038c57600080fd5b50610395610cdb565b6040516102069190612440565b3480156103ae57600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104249182565b60405161020692919061245a565b34801561043e57600080fd5b50610395610d7e565b6101d16104553660046124c3565b610d8c565b34801561046657600080fd5b5061024360015481565b34801561047c57600080fd5b506101d1611360565b34801561049157600080fd5b50600254610243565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610243565b3480156104e657600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610206565b34801561055857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610243565b34801561059557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c957600080fd5b506105f17f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610206565b6101d1610618366004612338565b6118bd565b34801561062957600080fd5b5061063d6106383660046124f8565b6118c9565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b34801561068d57600080fd5b506000546105f19067ffffffffffffffff1681565b3480156106ae57600080fd5b506101d16106bd36600461255a565b61193a565b3480156106ce57600080fd5b506106d7611e5b565b604051610206939291906125e4565b6000805468010000000000000000900460ff16600281111561070a5761070a61235a565b14610741576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d2919061260f565b7f9a1f5e7f00000000000000000000000000000000000000000000000000000000601c8190526020859052909150600084600181146108395760028114610843576003811461084d576004811461085757600581146108675763ff137e656000526004601cfd5b600154915061086e565b600454915061086e565b600654915061086e565b60035460801c60c01b915061086e565b4660c01b91505b50604052600160038511811b6005031b60605260808390526000806084601c82865af161089f573d6000803e3d6000fd5b50505050565b60008060005468010000000000000000900460ff1660028111156108cb576108cb61235a565b14610902576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460009061091490600190612674565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156109fe5760006002828154811061094e5761094e61268b565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff640100000000909104161561099f5750610929565b60028101546000906109e3906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611eb8565b9050838110156109f7578093508260010194505b5050610929565b50600060028381548110610a1457610a1461268b565b600091825260208220600390910201805490925063ffffffff90811691908214610a7e5760028281548110610a4b57610a4b61268b565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610aaa565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610aee67ffffffffffffffff831642612674565b610b0a836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610b1e91906126ba565b11610b55576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610bf7906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610c019190612701565b67ffffffffffffffff16158015610c2857506fffffffffffffffffffffffffffffffff8414155b15610c365760029550610c3b565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610c8057610c8061235a565b021790556002811115610c9557610c9561235a565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610cd782826000610d8c565b5050565b6060610d067f0000000000000000000000000000000000000000000000000000000000000000611f6d565b610d2f7f0000000000000000000000000000000000000000000000000000000000000000611f6d565b610d587f0000000000000000000000000000000000000000000000000000000000000000611f6d565b604051602001610d6a93929190612728565b604051602081830303815290604052905090565b6060610cc6602060406120aa565b6000805468010000000000000000900460ff166002811115610db057610db061235a565b14610de7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610df3575080155b15610e2a576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610e3f57610e3f61268b565b600091825260208083206040805160a081018252600394909402909101805463ffffffff808216865264010000000090910460ff16151593850193909352600181015491840191909152600201546fffffffffffffffffffffffffffffffff80821660608501819052700100000000000000000000000000000000909204166080840152919350610ed39190859061214116565b90507f0000000000000000000000000000000000000000000000000000000000000000610f92826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610fd4576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611034576002836000015163ffffffff16815481106110035761100361268b565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff164261106d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661108191906126ba565b61108b9190612674565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff821611156110fe576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061111f888660009182526020526040902090565b60008181526007602052604090205490915060ff161561116b576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581529281018d81526fffffffffffffffffffffffffffffffff808c16606084019081528982166080850190815260028054808801825599819052945160039099027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805498511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009099169a909916999099179690961790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8701559351925184167001000000000000000000000000000000000292909316919091177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad09093019290925580548b9081106112e3576112e361268b565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560405133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016113e57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061150e60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161152c91815260200190565b602060405180830381865afa158015611549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156d919061279e565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576115b8600185612674565b6040518263ffffffff1660e01b81526004016115d691815260200190565b606060405180830381865afa1580156115f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116179190612806565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156116a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cc9190612806565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161175891815260200190565b6040805180830381865afa158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190612892565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff16116117f7576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252908190810180611812600189612674565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610cd782826001610d8c565b600281815481106118d957600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff16600281111561195e5761195e61235a565b14611995576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600287815481106119aa576119aa61268b565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611a097f000000000000000000000000000000000000000000000000000000000000000060016126ba565b611aa5826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611ae6576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611b6957611b0a836fffffffffffffffffffffffffffffffff16612149565b67ffffffffffffffff1615611b3d57611b34611b27600186612919565b865463ffffffff166121ef565b60010154611b5f565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050611b83565b84600101549150611b80846001611b27919061294a565b90505b818989604051611b9492919061297e565b604051809103902014611bd3576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611c3994939291906129d7565b6020604051808303816000875af1158015611c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c919061279e565b600284810154929091149250600091611d27906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611dc3886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611dcd9190612a09565b611dd79190612701565b67ffffffffffffffff161590508115158103611e1f576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611eb1610d7e565b9050909192565b600080611f45847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611fb057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611fda5780611fc481612a2a565b9150611fd39050600a83612a62565b9150611fb4565b60008167ffffffffffffffff811115611ff557611ff56127b7565b6040519080825280601f01601f19166020018201604052801561201f576020820181803683370190505b5090505b84156120a257612034600183612674565b9150612041600a86612a76565b61204c9060306126ba565b60f81b8183815181106120615761206161268b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061209b600a86612a62565b9450612023565b949350505050565b606060006120e184367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036126ba565b90508267ffffffffffffffff1667ffffffffffffffff811115612106576121066127b7565b6040519080825280601f01601f191660200182016040528015612130576020820181803683370190505b509150828160208401375092915050565b151760011b90565b6000806121d6837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b60008061220d846fffffffffffffffffffffffffffffffff1661228c565b9050600283815481106122225761222261268b565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461228557815460028054909163ffffffff169081106122705761227061268b565b90600052602060002090600302019150612233565b5092915050565b60008119600183011681612320827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b6000806040838503121561234b57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106123c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156123e55781810151838201526020016123cd565b8381111561089f5750506000910152565b6000815180845261240e8160208601602086016123ca565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061245360208301846123f6565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c08101612453565b803580151581146124be57600080fd5b919050565b6000806000606084860312156124d857600080fd5b83359250602084013591506124ef604085016124ae565b90509250925092565b60006020828403121561250a57600080fd5b5035919050565b60008083601f84011261252357600080fd5b50813567ffffffffffffffff81111561253b57600080fd5b60208301915083602082850101111561255357600080fd5b9250929050565b6000806000806000806080878903121561257357600080fd5b86359550612583602088016124ae565b9450604087013567ffffffffffffffff808211156125a057600080fd5b6125ac8a838b01612511565b909650945060608901359150808211156125c557600080fd5b506125d289828a01612511565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061260660608301846123f6565b95945050505050565b60006020828403121561262157600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461245357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561268657612686612645565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156126cd576126cd612645565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061271c5761271c6126d2565b92169190910692915050565b6000845161273a8184602089016123ca565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612776816001850160208a016123ca565b600192019182015283516127918160028401602088016123ca565b0160020195945050505050565b6000602082840312156127b057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146124be57600080fd5b60006060828403121561281857600080fd5b6040516060810181811067ffffffffffffffff82111715612862577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612875602084016127e6565b6020820152612886604084016127e6565b60408201529392505050565b6000604082840312156128a457600080fd5b6040516040810167ffffffffffffffff82821081831117156128ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b816040528451835260208501519150808216821461290c57600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561294257612942612645565b039392505050565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561297557612975612645565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006129eb60408301868861298e565b82810360208401526129fe81858761298e565b979650505050505050565b600067ffffffffffffffff8381169083168181101561294257612942612645565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a5b57612a5b612645565b5060010190565b600082612a7157612a716126d2565b500490565b600082612a8557612a856126d2565b50069056fea164736f6c634300080f000a",
ABI: "[{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"},{\"internalType\":\"contractBlockOracle\",\"name\":\"_blockOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotDefendRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockTimeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameDepthExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameNotInProgress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrestate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1HeadTooOld\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim\",\"type\":\"bytes32\"}],\"name\":\"UnexpectedRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidStep\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimant\",\"type\":\"address\"}],\"name\":\"Move\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumGameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_PRESTATE\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLOCK_ORACLE\",\"outputs\":[{\"internalType\":\"contractBlockOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_GAME_DEPTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VM\",\"outputs\":[{\"internalType\":\"contractIBigStepper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondManager\",\"outputs\":[{\"internalType\":\"contractIBondManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimData\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"parentIndex\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"countered\",\"type\":\"bool\"},{\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"internalType\":\"Position\",\"name\":\"position\",\"type\":\"uint128\"},{\"internalType\":\"Clock\",\"name\":\"clock\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDataLen\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"len_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"defend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extraData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameData\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameType\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"}],\"name\":\"move\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposals\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"starting\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"disputed\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootClaim\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
Bin: "0x6101c06040523480156200001257600080fd5b5060405162002d4a38038062002d4a8339810160408190526200003591620000a1565b6000608081905260a052600860c05260ff9096166101a05260e094909452610100929092526001600160401b0316610120526001600160a01b039081166101405290811661016052166101805262000145565b6001600160a01b03811681146200009e57600080fd5b50565b600080600080600080600060e0888a031215620000bd57600080fd5b875160ff81168114620000cf57600080fd5b602089015160408a015160608b015192995090975095506001600160401b0381168114620000fc57600080fd5b60808901519094506200010f8162000088565b60a0890151909350620001228162000088565b60c0890151909250620001358162000088565b8091505092959891949750929550565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051612b2e6200021c600039600081816105220152611ef401526000818161035e015261177e01526000818161059b0152818161154b0152818161161f01526116f80152600081816104ec015281816107450152611c730152600081816105cf01528181610ab7015261109801526000818161032a015281816109bf01528181610ed70152611a7a0152600081816102210152611bd601526000610d3401526000610d0b01526000610ce20152612b2e6000f3fe6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c1461061d578063cf09e0d014610681578063d8cc1a3c146106a2578063fa24f743146106c257600080fd5b8063c0c3a09214610589578063c31b29ce146105bd578063c55cd0c71461060a57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461054c57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d501461038057806355ef20e6146103a2578063609d333414610432578063632247ea1461044757600080fd5b8063363cc427146102b95780634778efe814610318578063529184c91461034c57600080fd5b80632810e1d61161018a5780632810e1d614610251578063298c90051461026657806335fef567146102a657600080fd5b80631e27052a146101b1578063200d2ed2146101d3578063266198f91461020f575b600080fd5b3480156101bd57600080fd5b506101d16101cc3660046123cf565b6106e6565b005b3480156101df57600080fd5b506000546101f99068010000000000000000900460ff1681565b6040516102069190612420565b60405180910390f35b34801561021b57600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b34801561025d57600080fd5b506101f96108a5565b34801561027257600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610243565b6101d16102b43660046123cf565b610ccb565b3480156102c557600080fd5b506000546102f3906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610206565b34801561032457600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b34801561035857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561038c57600080fd5b50610395610cdb565b60405161020691906124d7565b3480156103ae57600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104249182565b6040516102069291906124f1565b34801561043e57600080fd5b50610395610d7e565b6101d161045536600461255a565b610d8c565b34801561046657600080fd5b5061024360015481565b34801561047c57600080fd5b506101d1611360565b34801561049157600080fd5b50600254610243565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610243565b3480156104e657600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610206565b34801561055857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610243565b34801561059557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c957600080fd5b506105f17f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610206565b6101d16106183660046123cf565b611954565b34801561062957600080fd5b5061063d61063836600461258f565b611960565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b34801561068d57600080fd5b506000546105f19067ffffffffffffffff1681565b3480156106ae57600080fd5b506101d16106bd3660046125f1565b6119d1565b3480156106ce57600080fd5b506106d7611ef2565b6040516102069392919061267b565b6000805468010000000000000000900460ff16600281111561070a5761070a6123f1565b14610741576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d291906126a6565b7f9a1f5e7f00000000000000000000000000000000000000000000000000000000601c8190526020859052909150600084600181146108395760028114610843576003811461084d576004811461085757600581146108675763ff137e656000526004601cfd5b600154915061086e565b600454915061086e565b600654915061086e565b60035460801c60c01b915061086e565b4660c01b91505b50604052600160038511811b6005031b60605260808390526000806084601c82865af161089f573d6000803e3d6000fd5b50505050565b60008060005468010000000000000000900460ff1660028111156108cb576108cb6123f1565b14610902576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906109149060019061270b565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156109fe5760006002828154811061094e5761094e612722565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff640100000000909104161561099f5750610929565b60028101546000906109e3906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611f4f565b9050838110156109f7578093508260010194505b5050610929565b50600060028381548110610a1457610a14612722565b600091825260208220600390910201805490925063ffffffff90811691908214610a7e5760028281548110610a4b57610a4b612722565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610aaa565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610aee67ffffffffffffffff83164261270b565b610b0a836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610b1e9190612751565b11610b55576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610bf7906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610c019190612798565b67ffffffffffffffff16158015610c2857506fffffffffffffffffffffffffffffffff8414155b15610c365760029550610c3b565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610c8057610c806123f1565b021790556002811115610c9557610c956123f1565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610cd782826000610d8c565b5050565b6060610d067f0000000000000000000000000000000000000000000000000000000000000000612004565b610d2f7f0000000000000000000000000000000000000000000000000000000000000000612004565b610d587f0000000000000000000000000000000000000000000000000000000000000000612004565b604051602001610d6a939291906127bf565b604051602081830303815290604052905090565b6060610cc660206040612141565b6000805468010000000000000000900460ff166002811115610db057610db06123f1565b14610de7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610df3575080155b15610e2a576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610e3f57610e3f612722565b600091825260208083206040805160a081018252600394909402909101805463ffffffff808216865264010000000090910460ff16151593850193909352600181015491840191909152600201546fffffffffffffffffffffffffffffffff80821660608501819052700100000000000000000000000000000000909204166080840152919350610ed3919085906121d816565b90507f0000000000000000000000000000000000000000000000000000000000000000610f92826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610fd4576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611034576002836000015163ffffffff168154811061100357611003612722565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff164261106d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166110819190612751565b61108b919061270b565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff821611156110fe576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061111f888660009182526020526040902090565b60008181526007602052604090205490915060ff161561116b576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581529281018d81526fffffffffffffffffffffffffffffffff808c16606084019081528982166080850190815260028054808801825599819052945160039099027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805498511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009099169a909916999099179690961790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8701559351925184167001000000000000000000000000000000000292909316919091177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad09093019290925580548b9081106112e3576112e3612722565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560405133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560001a6001146113f7576040517ff40239db000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335600482015260240160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff8152602081019290925260029190810161147c7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f0064206115a560207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b81526004016115c391815260200190565b602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116049190612835565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761164f60018561270b565b6040518263ffffffff1660e01b815260040161166d91815260200190565b606060405180830381865afa15801561168a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ae919061289d565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611763919061289d565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b81526004016117ef91815260200190565b6040805180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190612929565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff161161188e576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182529081908101806118a960018961270b565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610cd782826001610d8c565b6002818154811061197057600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156119f5576119f56123f1565b14611a2c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611a4157611a41612722565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611aa07f00000000000000000000000000000000000000000000000000000000000000006001612751565b611b3c826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611b7d576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611c0057611ba1836fffffffffffffffffffffffffffffffff166121e0565b67ffffffffffffffff1615611bd457611bcb611bbe6001866129b0565b865463ffffffff16612286565b60010154611bf6565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050611c1a565b84600101549150611c17846001611bbe91906129e1565b90505b818989604051611c2b929190612a15565b604051809103902014611c6a576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611cd09493929190612a6e565b6020604051808303816000875af1158015611cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d139190612835565b600284810154929091149250600091611dbe906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611e5a886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611e649190612aa0565b611e6e9190612798565b67ffffffffffffffff161590508115158103611eb6576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611f48610d7e565b9050909192565b600080611fdc847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361204757505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612071578061205b81612ac1565b915061206a9050600a83612af9565b915061204b565b60008167ffffffffffffffff81111561208c5761208c61284e565b6040519080825280601f01601f1916602001820160405280156120b6576020820181803683370190505b5090505b8415612139576120cb60018361270b565b91506120d8600a86612b0d565b6120e3906030612751565b60f81b8183815181106120f8576120f8612722565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612132600a86612af9565b94506120ba565b949350505050565b6060600061217884367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612751565b90508267ffffffffffffffff1667ffffffffffffffff81111561219d5761219d61284e565b6040519080825280601f01601f1916602001820160405280156121c7576020820181803683370190505b509150828160208401375092915050565b151760011b90565b60008061226d837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806122a4846fffffffffffffffffffffffffffffffff16612323565b9050600283815481106122b9576122b9612722565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461231c57815460028054909163ffffffff1690811061230757612307612722565b906000526020600020906003020191506122ca565b5092915050565b600081196001830116816123b7827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b600080604083850312156123e257600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061245b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b8381101561247c578181015183820152602001612464565b8381111561089f5750506000910152565b600081518084526124a5816020860160208601612461565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006124ea602083018461248d565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c081016124ea565b8035801515811461255557600080fd5b919050565b60008060006060848603121561256f57600080fd5b833592506020840135915061258660408501612545565b90509250925092565b6000602082840312156125a157600080fd5b5035919050565b60008083601f8401126125ba57600080fd5b50813567ffffffffffffffff8111156125d257600080fd5b6020830191508360208285010111156125ea57600080fd5b9250929050565b6000806000806000806080878903121561260a57600080fd5b8635955061261a60208801612545565b9450604087013567ffffffffffffffff8082111561263757600080fd5b6126438a838b016125a8565b9096509450606089013591508082111561265c57600080fd5b5061266989828a016125a8565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061269d606083018461248d565b95945050505050565b6000602082840312156126b857600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146124ea57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561271d5761271d6126dc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115612764576127646126dc565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806127b3576127b3612769565b92169190910692915050565b600084516127d1818460208901612461565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161280d816001850160208a01612461565b60019201918201528351612828816002840160208801612461565b0160020195945050505050565b60006020828403121561284757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461255557600080fd5b6000606082840312156128af57600080fd5b6040516060810181811067ffffffffffffffff821117156128f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251815261290c6020840161287d565b602082015261291d6040840161287d565b60408201529392505050565b60006040828403121561293b57600080fd5b6040516040810167ffffffffffffffff8282108183111715612986577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b81604052845183526020850151915080821682146129a357600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff838116908316818110156129d9576129d96126dc565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612a0c57612a0c6126dc565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612a82604083018688612a25565b8281036020840152612a95818587612a25565b979650505050505050565b600067ffffffffffffffff838116908316818110156129d9576129d96126dc565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612af257612af26126dc565b5060010190565b600082612b0857612b08612769565b500490565b600082612b1c57612b1c612769565b50069056fea164736f6c634300080f000a",
}
// FaultDisputeGameABI is the input ABI used to generate the binding from.
......
......@@ -13,7 +13,7 @@ const FaultDisputeGameStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contr
var FaultDisputeGameStorageLayout = new(solc.StorageLayout)
var FaultDisputeGameDeployedBin = "0x6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c1461061d578063cf09e0d014610681578063d8cc1a3c146106a2578063fa24f743146106c257600080fd5b8063c0c3a09214610589578063c31b29ce146105bd578063c55cd0c71461060a57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461054c57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d501461038057806355ef20e6146103a2578063609d333414610432578063632247ea1461044757600080fd5b8063363cc427146102b95780634778efe814610318578063529184c91461034c57600080fd5b80632810e1d61161018a5780632810e1d614610251578063298c90051461026657806335fef567146102a657600080fd5b80631e27052a146101b1578063200d2ed2146101d3578063266198f91461020f575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004612338565b6106e6565b005b3480156101df57600080fd5b506000546101f99068010000000000000000900460ff1681565b6040516102069190612389565b60405180910390f35b34801561021b57600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b34801561025d57600080fd5b506101f96108a5565b34801561027257600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610243565b6101d16102b4366004612338565b610ccb565b3480156102c557600080fd5b506000546102f3906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610206565b34801561032457600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b34801561035857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561038c57600080fd5b50610395610cdb565b6040516102069190612440565b3480156103ae57600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104249182565b60405161020692919061245a565b34801561043e57600080fd5b50610395610d7e565b6101d16104553660046124c3565b610d8c565b34801561046657600080fd5b5061024360015481565b34801561047c57600080fd5b506101d1611360565b34801561049157600080fd5b50600254610243565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610243565b3480156104e657600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610206565b34801561055857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610243565b34801561059557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c957600080fd5b506105f17f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610206565b6101d1610618366004612338565b6118bd565b34801561062957600080fd5b5061063d6106383660046124f8565b6118c9565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b34801561068d57600080fd5b506000546105f19067ffffffffffffffff1681565b3480156106ae57600080fd5b506101d16106bd36600461255a565b61193a565b3480156106ce57600080fd5b506106d7611e5b565b604051610206939291906125e4565b6000805468010000000000000000900460ff16600281111561070a5761070a61235a565b14610741576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d2919061260f565b7f9a1f5e7f00000000000000000000000000000000000000000000000000000000601c8190526020859052909150600084600181146108395760028114610843576003811461084d576004811461085757600581146108675763ff137e656000526004601cfd5b600154915061086e565b600454915061086e565b600654915061086e565b60035460801c60c01b915061086e565b4660c01b91505b50604052600160038511811b6005031b60605260808390526000806084601c82865af161089f573d6000803e3d6000fd5b50505050565b60008060005468010000000000000000900460ff1660028111156108cb576108cb61235a565b14610902576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460009061091490600190612674565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156109fe5760006002828154811061094e5761094e61268b565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff640100000000909104161561099f5750610929565b60028101546000906109e3906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611eb8565b9050838110156109f7578093508260010194505b5050610929565b50600060028381548110610a1457610a1461268b565b600091825260208220600390910201805490925063ffffffff90811691908214610a7e5760028281548110610a4b57610a4b61268b565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610aaa565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610aee67ffffffffffffffff831642612674565b610b0a836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610b1e91906126ba565b11610b55576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610bf7906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610c019190612701565b67ffffffffffffffff16158015610c2857506fffffffffffffffffffffffffffffffff8414155b15610c365760029550610c3b565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610c8057610c8061235a565b021790556002811115610c9557610c9561235a565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610cd782826000610d8c565b5050565b6060610d067f0000000000000000000000000000000000000000000000000000000000000000611f6d565b610d2f7f0000000000000000000000000000000000000000000000000000000000000000611f6d565b610d587f0000000000000000000000000000000000000000000000000000000000000000611f6d565b604051602001610d6a93929190612728565b604051602081830303815290604052905090565b6060610cc6602060406120aa565b6000805468010000000000000000900460ff166002811115610db057610db061235a565b14610de7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610df3575080155b15610e2a576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610e3f57610e3f61268b565b600091825260208083206040805160a081018252600394909402909101805463ffffffff808216865264010000000090910460ff16151593850193909352600181015491840191909152600201546fffffffffffffffffffffffffffffffff80821660608501819052700100000000000000000000000000000000909204166080840152919350610ed39190859061214116565b90507f0000000000000000000000000000000000000000000000000000000000000000610f92826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610fd4576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611034576002836000015163ffffffff16815481106110035761100361268b565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff164261106d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff1661108191906126ba565b61108b9190612674565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff821611156110fe576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061111f888660009182526020526040902090565b60008181526007602052604090205490915060ff161561116b576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581529281018d81526fffffffffffffffffffffffffffffffff808c16606084019081528982166080850190815260028054808801825599819052945160039099027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805498511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009099169a909916999099179690961790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8701559351925184167001000000000000000000000000000000000292909316919091177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad09093019290925580548b9081106112e3576112e361268b565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560405133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff815260208101929092526002919081016113e57ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f00642061150e60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b815260040161152c91815260200190565b602060405180830381865afa158015611549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156d919061279e565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae5576115b8600185612674565b6040518263ffffffff1660e01b81526004016115d691815260200190565b606060405180830381865afa1580156115f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116179190612806565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa1580156116a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cc9190612806565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b815260040161175891815260200190565b6040805180830381865afa158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190612892565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff16116117f7576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a081018252908190810180611812600189612674565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610cd782826001610d8c565b600281815481106118d957600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff16600281111561195e5761195e61235a565b14611995576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600287815481106119aa576119aa61268b565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611a097f000000000000000000000000000000000000000000000000000000000000000060016126ba565b611aa5826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611ae6576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611b6957611b0a836fffffffffffffffffffffffffffffffff16612149565b67ffffffffffffffff1615611b3d57611b34611b27600186612919565b865463ffffffff166121ef565b60010154611b5f565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050611b83565b84600101549150611b80846001611b27919061294a565b90505b818989604051611b9492919061297e565b604051809103902014611bd3576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611c3994939291906129d7565b6020604051808303816000875af1158015611c58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7c919061279e565b600284810154929091149250600091611d27906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611dc3886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611dcd9190612a09565b611dd79190612701565b67ffffffffffffffff161590508115158103611e1f576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611eb1610d7e565b9050909192565b600080611f45847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b606081600003611fb057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611fda5780611fc481612a2a565b9150611fd39050600a83612a62565b9150611fb4565b60008167ffffffffffffffff811115611ff557611ff56127b7565b6040519080825280601f01601f19166020018201604052801561201f576020820181803683370190505b5090505b84156120a257612034600183612674565b9150612041600a86612a76565b61204c9060306126ba565b60f81b8183815181106120615761206161268b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061209b600a86612a62565b9450612023565b949350505050565b606060006120e184367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90036126ba565b90508267ffffffffffffffff1667ffffffffffffffff811115612106576121066127b7565b6040519080825280601f01601f191660200182016040528015612130576020820181803683370190505b509150828160208401375092915050565b151760011b90565b6000806121d6837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b60008061220d846fffffffffffffffffffffffffffffffff1661228c565b9050600283815481106122225761222261268b565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461228557815460028054909163ffffffff169081106122705761227061268b565b90600052602060002090600302019150612233565b5092915050565b60008119600183011681612320827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b6000806040838503121561234b57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106123c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156123e55781810151838201526020016123cd565b8381111561089f5750506000910152565b6000815180845261240e8160208601602086016123ca565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061245360208301846123f6565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c08101612453565b803580151581146124be57600080fd5b919050565b6000806000606084860312156124d857600080fd5b83359250602084013591506124ef604085016124ae565b90509250925092565b60006020828403121561250a57600080fd5b5035919050565b60008083601f84011261252357600080fd5b50813567ffffffffffffffff81111561253b57600080fd5b60208301915083602082850101111561255357600080fd5b9250929050565b6000806000806000806080878903121561257357600080fd5b86359550612583602088016124ae565b9450604087013567ffffffffffffffff808211156125a057600080fd5b6125ac8a838b01612511565b909650945060608901359150808211156125c557600080fd5b506125d289828a01612511565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061260660608301846123f6565b95945050505050565b60006020828403121561262157600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461245357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561268657612686612645565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156126cd576126cd612645565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff8084168061271c5761271c6126d2565b92169190910692915050565b6000845161273a8184602089016123ca565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612776816001850160208a016123ca565b600192019182015283516127918160028401602088016123ca565b0160020195945050505050565b6000602082840312156127b057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146124be57600080fd5b60006060828403121561281857600080fd5b6040516060810181811067ffffffffffffffff82111715612862577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612875602084016127e6565b6020820152612886604084016127e6565b60408201529392505050565b6000604082840312156128a457600080fd5b6040516040810167ffffffffffffffff82821081831117156128ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b816040528451835260208501519150808216821461290c57600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff8381169083168181101561294257612942612645565b039392505050565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561297557612975612645565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006129eb60408301868861298e565b82810360208401526129fe81858761298e565b979650505050505050565b600067ffffffffffffffff8381169083168181101561294257612942612645565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a5b57612a5b612645565b5060010190565b600082612a7157612a716126d2565b500490565b600082612a8557612a856126d2565b50069056fea164736f6c634300080f000a"
var FaultDisputeGameDeployedBin = "0x6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c1461061d578063cf09e0d014610681578063d8cc1a3c146106a2578063fa24f743146106c257600080fd5b8063c0c3a09214610589578063c31b29ce146105bd578063c55cd0c71461060a57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461054c57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d501461038057806355ef20e6146103a2578063609d333414610432578063632247ea1461044757600080fd5b8063363cc427146102b95780634778efe814610318578063529184c91461034c57600080fd5b80632810e1d61161018a5780632810e1d614610251578063298c90051461026657806335fef567146102a657600080fd5b80631e27052a146101b1578063200d2ed2146101d3578063266198f91461020f575b600080fd5b3480156101bd57600080fd5b506101d16101cc3660046123cf565b6106e6565b005b3480156101df57600080fd5b506000546101f99068010000000000000000900460ff1681565b6040516102069190612420565b60405180910390f35b34801561021b57600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b34801561025d57600080fd5b506101f96108a5565b34801561027257600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610243565b6101d16102b43660046123cf565b610ccb565b3480156102c557600080fd5b506000546102f3906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610206565b34801561032457600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b34801561035857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561038c57600080fd5b50610395610cdb565b60405161020691906124d7565b3480156103ae57600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104249182565b6040516102069291906124f1565b34801561043e57600080fd5b50610395610d7e565b6101d161045536600461255a565b610d8c565b34801561046657600080fd5b5061024360015481565b34801561047c57600080fd5b506101d1611360565b34801561049157600080fd5b50600254610243565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610243565b3480156104e657600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610206565b34801561055857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610243565b34801561059557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c957600080fd5b506105f17f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610206565b6101d16106183660046123cf565b611954565b34801561062957600080fd5b5061063d61063836600461258f565b611960565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b34801561068d57600080fd5b506000546105f19067ffffffffffffffff1681565b3480156106ae57600080fd5b506101d16106bd3660046125f1565b6119d1565b3480156106ce57600080fd5b506106d7611ef2565b6040516102069392919061267b565b6000805468010000000000000000900460ff16600281111561070a5761070a6123f1565b14610741576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d291906126a6565b7f9a1f5e7f00000000000000000000000000000000000000000000000000000000601c8190526020859052909150600084600181146108395760028114610843576003811461084d576004811461085757600581146108675763ff137e656000526004601cfd5b600154915061086e565b600454915061086e565b600654915061086e565b60035460801c60c01b915061086e565b4660c01b91505b50604052600160038511811b6005031b60605260808390526000806084601c82865af161089f573d6000803e3d6000fd5b50505050565b60008060005468010000000000000000900460ff1660028111156108cb576108cb6123f1565b14610902576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906109149060019061270b565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156109fe5760006002828154811061094e5761094e612722565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff640100000000909104161561099f5750610929565b60028101546000906109e3906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611f4f565b9050838110156109f7578093508260010194505b5050610929565b50600060028381548110610a1457610a14612722565b600091825260208220600390910201805490925063ffffffff90811691908214610a7e5760028281548110610a4b57610a4b612722565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610aaa565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610aee67ffffffffffffffff83164261270b565b610b0a836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610b1e9190612751565b11610b55576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610bf7906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610c019190612798565b67ffffffffffffffff16158015610c2857506fffffffffffffffffffffffffffffffff8414155b15610c365760029550610c3b565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610c8057610c806123f1565b021790556002811115610c9557610c956123f1565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610cd782826000610d8c565b5050565b6060610d067f0000000000000000000000000000000000000000000000000000000000000000612004565b610d2f7f0000000000000000000000000000000000000000000000000000000000000000612004565b610d587f0000000000000000000000000000000000000000000000000000000000000000612004565b604051602001610d6a939291906127bf565b604051602081830303815290604052905090565b6060610cc660206040612141565b6000805468010000000000000000900460ff166002811115610db057610db06123f1565b14610de7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610df3575080155b15610e2a576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610e3f57610e3f612722565b600091825260208083206040805160a081018252600394909402909101805463ffffffff808216865264010000000090910460ff16151593850193909352600181015491840191909152600201546fffffffffffffffffffffffffffffffff80821660608501819052700100000000000000000000000000000000909204166080840152919350610ed3919085906121d816565b90507f0000000000000000000000000000000000000000000000000000000000000000610f92826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610fd4576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611034576002836000015163ffffffff168154811061100357611003612722565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff164261106d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166110819190612751565b61108b919061270b565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff821611156110fe576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061111f888660009182526020526040902090565b60008181526007602052604090205490915060ff161561116b576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581529281018d81526fffffffffffffffffffffffffffffffff808c16606084019081528982166080850190815260028054808801825599819052945160039099027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805498511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009099169a909916999099179690961790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8701559351925184167001000000000000000000000000000000000292909316919091177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad09093019290925580548b9081106112e3576112e3612722565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560405133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560001a6001146113f7576040517ff40239db000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335600482015260240160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff8152602081019290925260029190810161147c7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f0064206115a560207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b81526004016115c391815260200190565b602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116049190612835565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761164f60018561270b565b6040518263ffffffff1660e01b815260040161166d91815260200190565b606060405180830381865afa15801561168a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ae919061289d565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611763919061289d565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b81526004016117ef91815260200190565b6040805180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190612929565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff161161188e576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182529081908101806118a960018961270b565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610cd782826001610d8c565b6002818154811061197057600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156119f5576119f56123f1565b14611a2c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611a4157611a41612722565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611aa07f00000000000000000000000000000000000000000000000000000000000000006001612751565b611b3c826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611b7d576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611c0057611ba1836fffffffffffffffffffffffffffffffff166121e0565b67ffffffffffffffff1615611bd457611bcb611bbe6001866129b0565b865463ffffffff16612286565b60010154611bf6565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050611c1a565b84600101549150611c17846001611bbe91906129e1565b90505b818989604051611c2b929190612a15565b604051809103902014611c6a576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611cd09493929190612a6e565b6020604051808303816000875af1158015611cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d139190612835565b600284810154929091149250600091611dbe906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611e5a886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611e649190612aa0565b611e6e9190612798565b67ffffffffffffffff161590508115158103611eb6576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611f48610d7e565b9050909192565b600080611fdc847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361204757505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612071578061205b81612ac1565b915061206a9050600a83612af9565b915061204b565b60008167ffffffffffffffff81111561208c5761208c61284e565b6040519080825280601f01601f1916602001820160405280156120b6576020820181803683370190505b5090505b8415612139576120cb60018361270b565b91506120d8600a86612b0d565b6120e3906030612751565b60f81b8183815181106120f8576120f8612722565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612132600a86612af9565b94506120ba565b949350505050565b6060600061217884367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612751565b90508267ffffffffffffffff1667ffffffffffffffff81111561219d5761219d61284e565b6040519080825280601f01601f1916602001820160405280156121c7576020820181803683370190505b509150828160208401375092915050565b151760011b90565b60008061226d837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806122a4846fffffffffffffffffffffffffffffffff16612323565b9050600283815481106122b9576122b9612722565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461231c57815460028054909163ffffffff1690811061230757612307612722565b906000526020600020906003020191506122ca565b5092915050565b600081196001830116816123b7827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b600080604083850312156123e257600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b602081016003831061245b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b8381101561247c578181015183820152602001612464565b8381111561089f5750506000910152565b600081518084526124a5816020860160208601612461565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006124ea602083018461248d565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c081016124ea565b8035801515811461255557600080fd5b919050565b60008060006060848603121561256f57600080fd5b833592506020840135915061258660408501612545565b90509250925092565b6000602082840312156125a157600080fd5b5035919050565b60008083601f8401126125ba57600080fd5b50813567ffffffffffffffff8111156125d257600080fd5b6020830191508360208285010111156125ea57600080fd5b9250929050565b6000806000806000806080878903121561260a57600080fd5b8635955061261a60208801612545565b9450604087013567ffffffffffffffff8082111561263757600080fd5b6126438a838b016125a8565b9096509450606089013591508082111561265c57600080fd5b5061266989828a016125a8565b979a9699509497509295939492505050565b60ff8416815282602082015260606040820152600061269d606083018461248d565b95945050505050565b6000602082840312156126b857600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146124ea57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561271d5761271d6126dc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115612764576127646126dc565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806127b3576127b3612769565b92169190910692915050565b600084516127d1818460208901612461565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161280d816001850160208a01612461565b60019201918201528351612828816002840160208801612461565b0160020195945050505050565b60006020828403121561284757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461255557600080fd5b6000606082840312156128af57600080fd5b6040516060810181811067ffffffffffffffff821117156128f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251815261290c6020840161287d565b602082015261291d6040840161287d565b60408201529392505050565b60006040828403121561293b57600080fd5b6040516040810167ffffffffffffffff8282108183111715612986577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b81604052845183526020850151915080821682146129a357600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff838116908316818110156129d9576129d96126dc565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612a0c57612a0c6126dc565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612a82604083018688612a25565b8281036020840152612a95818587612a25565b979650505050505050565b600067ffffffffffffffff838116908316818110156129d9576129d96126dc565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612af257612af26126dc565b5060010190565b600082612b0857612b08612769565b500490565b600082612b1c57612b1c612769565b50069056fea164736f6c634300080f000a"
func init() {
if err := json.Unmarshal([]byte(FaultDisputeGameStorageLayoutJSON), FaultDisputeGameStorageLayout); err != nil {
......
......@@ -31,7 +31,7 @@ var (
// MIPSMetaData contains all meta data concerning the MIPS contract.
var MIPSMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"contractIPreimageOracle\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BRK_START\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contractIPreimageOracle\",\"name\":\"oracle_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
Bin: "0x60a060405234801561001057600080fd5b50604051611e3e380380611e3e83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611dad61009160003960008181608501526115730152611dad6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611cb2565b6100d0565b604051908152602001610062565b60006100da611bdf565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff169052606081015160009061020390826106c1565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff168261077d565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611d1e565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611d1e565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff166010610877565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611d1e565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f6858784876108ea565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff166010610877565b9095019463fffffffc861661043a8160016106c1565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610afa565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b8961077d565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a161561127e565b8063ffffffff16600b03610546576104f3858963ffffffff8a16151561127e565b8063ffffffff16600c0361055c576104f3611364565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f381898988611898565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611d1e565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611a92565b6106038583600161127e565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c51605482015261019f5160588201526101bf5160598201526101d851605a8201526000906102009060628101835b60208110156106ac57601c8401518252602090930192600490910190600101610688565b506000815281810382a0819003902092915050565b6000806106cd83611b36565b905060038416156106dd57600080fd5b6020810190358460051c8160005b601b8110156107435760208501943583821c6001168015610713576001811461072857610739565b60008481526020839052604090209350610739565b600082815260208590526040902093505b50506001016106eb565b50608051915081811461075e57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b6000610787611bdf565b60809050806060015160040163ffffffff16816080015163ffffffff1614610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff90811690935285831690529085161561086657806008018261016001518663ffffffff166020811061085557610855611d1e565b63ffffffff90921660209290920201525b61086e610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b01826108d45760006108d6565b815b90861663ffffffff16179250505092915050565b60006108f4611bdf565b608090506000816060015160040163ffffffff16826080015163ffffffff161461097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610807565b8663ffffffff166004148061099557508663ffffffff166005145b15610a115760008261016001518663ffffffff16602081106109b9576109b9611d1e565b602002015190508063ffffffff168563ffffffff161480156109e157508763ffffffff166004145b80610a0957508063ffffffff168563ffffffff1614158015610a0957508763ffffffff166005145b915050610a8e565b8663ffffffff16600603610a2e5760008460030b13159050610a8e565b8663ffffffff16600703610a4a5760008460030b139050610a8e565b8663ffffffff16600103610a8e57601f601087901c166000819003610a735760008560030b1291505b8063ffffffff16600103610a8c5760008560030b121591505b505b606082018051608084015163ffffffff169091528115610ad4576002610ab98861ffff166010610877565b63ffffffff90811690911b8201600401166080840152610ae6565b60808301805160040163ffffffff1690525b610aee610619565b98975050505050505050565b6000603f601a86901c16801580610b29575060088163ffffffff1610158015610b295750600f8163ffffffff16105b15610f7f57603f86168160088114610b705760098114610b7957600a8114610b8257600b8114610b8b57600c8114610b9457600d8114610b9d57600e8114610ba657610bab565b60209150610bab565b60219150610bab565b602a9150610bab565b602b9150610bab565b60249150610bab565b60259150610bab565b602691505b508063ffffffff16600003610bd25750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610bf85750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610c2e57601f600688901c16610c2463ffffffff8716821c6020839003610877565b9350505050610611565b8063ffffffff16600403610c505750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610c725750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610ca557610c9c8663ffffffff168663ffffffff16901c87602003610877565b92505050610611565b8063ffffffff16600803610cbd578592505050610611565b8063ffffffff16600903610cd5578592505050610611565b8063ffffffff16600a03610ced578592505050610611565b8063ffffffff16600b03610d05578592505050610611565b8063ffffffff16600c03610d1d578592505050610611565b8063ffffffff16600f03610d35578592505050610611565b8063ffffffff16601003610d4d578592505050610611565b8063ffffffff16601103610d65578592505050610611565b8063ffffffff16601203610d7d578592505050610611565b8063ffffffff16601303610d95578592505050610611565b8063ffffffff16601803610dad578592505050610611565b8063ffffffff16601903610dc5578592505050610611565b8063ffffffff16601a03610ddd578592505050610611565b8063ffffffff16601b03610df5578592505050610611565b8063ffffffff16602003610e0e57505050828201610611565b8063ffffffff16602103610e2757505050828201610611565b8063ffffffff16602203610e4057505050818303610611565b8063ffffffff16602303610e5957505050818303610611565b8063ffffffff16602403610e7257505050828216610611565b8063ffffffff16602503610e8b57505050828217610611565b8063ffffffff16602603610ea457505050828218610611565b8063ffffffff16602703610ebe5750505082821719610611565b8063ffffffff16602a03610eef578460030b8660030b12610ee0576000610ee3565b60015b60ff1692505050610611565b8063ffffffff16602b03610f17578463ffffffff168663ffffffff1610610ee0576000610ee3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610807565b50610f17565b8063ffffffff16601c0361100357603f86166002819003610fa557505050828202610611565b8063ffffffff1660201480610fc057508063ffffffff166021145b15610f79578063ffffffff16602003610fd7579419945b60005b6380000000871615610ff9576401fffffffe600197881b169601610fda565b9250610611915050565b8063ffffffff16600f0361102557505065ffffffff0000601083901b16610611565b8063ffffffff16602003611059576101d38560031660080260180363ffffffff168463ffffffff16901c60ff166008610877565b8063ffffffff1660210361108e576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff166010610877565b8063ffffffff166022036110bd57505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036110d45782915050610611565b8063ffffffff16602403611106578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff16602503611139578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff1660260361116b57505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff166028036111a157505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff166029036111d857505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361120757505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b0361121e5783915050610611565b8063ffffffff16602e0361125057505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112675782915050610611565b8063ffffffff16603803610f175783915050610611565b6000611288611bdf565b506080602063ffffffff8616106112fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610807565b63ffffffff85161580159061130d5750825b1561134157838161016001518663ffffffff166020811061133057611330611d1e565b63ffffffff90921660209290920201525b60808101805163ffffffff8082166060850152600490910116905261086e610619565b600061136e611bdf565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036113e85781610fff8116156113b757610fff811661100003015b8363ffffffff166000036113de5760e08801805163ffffffff8382011690915295506113e2565b8395505b50611857565b8563ffffffff16610fcd036114035763400000009450611857565b8563ffffffff166110180361141b5760019450611857565b8563ffffffff166110960361145057600161012088015260ff8316610100880152611444610619565b97505050505050505090565b8563ffffffff16610fa3036116ba5763ffffffff831615611857577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff8416016116745760006114ab8363fffffffc1660016106c1565b60208901519091508060001a6001036115185761151581600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd9190611d4d565b915091506003861680600403828110156115f5578092505b5081861015611602578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116598663fffffffc16600186611a92565b60408b018051820163ffffffff16905297506116b592505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff8416016116a957809450611857565b63ffffffff9450600993505b611857565b8563ffffffff16610fa4036117ab5763ffffffff8316600114806116e4575063ffffffff83166002145b806116f5575063ffffffff83166004145b1561170257809450611857565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016116a95760006117428363fffffffc1660016106c1565b6020890151909150600384166004038381101561175d578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b17602088015260006040880152935083611857565b8563ffffffff16610fd703611857578163ffffffff1660030361184b5763ffffffff831615806117e1575063ffffffff83166005145b806117f2575063ffffffff83166003145b156118005760009450611857565b63ffffffff83166001148061181b575063ffffffff83166002145b8061182c575063ffffffff83166006145b8061183d575063ffffffff83166004145b156116a95760019450611857565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b01526004019091169052611444610619565b60006118a2611bdf565b506080600063ffffffff87166010036118c0575060c0810151611a29565b8663ffffffff166011036118df5763ffffffff861660c0830152611a29565b8663ffffffff166012036118f8575060a0810151611a29565b8663ffffffff166013036119175763ffffffff861660a0830152611a29565b8663ffffffff1660180361194b5763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611a29565b8663ffffffff1660190361197c5763ffffffff86811681871602602081901c821660c08501521660a0830152611a29565b8663ffffffff16601a036119d2578460030b8660030b8161199f5761199f611d71565b0763ffffffff1660c0830152600385810b9087900b816119c1576119c1611d71565b0563ffffffff1660a0830152611a29565b8663ffffffff16601b03611a29578463ffffffff168663ffffffff16816119fb576119fb611d71565b0663ffffffff90811660c084015285811690871681611a1c57611a1c611d71565b0463ffffffff1660a08301525b63ffffffff841615611a6457808261016001518563ffffffff1660208110611a5357611a53611d1e565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611a87610619565b979650505050505050565b6000611a9d83611b36565b90506003841615611aad57600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611b2b5760208401933582821c6001168015611afb5760018114611b1057611b21565b60008581526020839052604090209450611b21565b600082815260208690526040902094505b5050600101611ad3565b505060805250505050565b60ff811661038002610184810190369061050401811015611bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610807565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611c45611c4a565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611c7b57600080fd5b50813567ffffffffffffffff811115611c9357600080fd5b602083019150836020828501011115611cab57600080fd5b9250929050565b60008060008060408587031215611cc857600080fd5b843567ffffffffffffffff80821115611ce057600080fd5b611cec88838901611c69565b90965094506020870135915080821115611d0557600080fd5b50611d1287828801611c69565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611d6057600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a",
Bin: "0x60a060405234801561001057600080fd5b50604051611ed2380380611ed283398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611e4161009160003960008181608501526116070152611e416000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611d46565b6100d0565b604051908152602001610062565b60006100da611c73565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff16905260608101516000906102039082610755565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff1682610811565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611db2565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611db2565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff16601061090b565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611db2565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f68587848761097e565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff16601061090b565b9095019463fffffffc861661043a816001610755565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610b8e565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b89610811565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a1615611312565b8063ffffffff16600b03610546576104f3858963ffffffff8a161515611312565b8063ffffffff16600c0361055c576104f36113f8565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f38189898861192c565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611db2565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611b26565b61060385836001611312565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c5160548201526101805161019f5160588301526101a0516101bf5160598401526101d851605a840152600092610200929091606283019160f890811c91901c855b60208110156106bf57601c860151845260209095019460049093019260010161069b565b506000835283830384a0610711565b600081600181146106e2576003915061070a565b8380156106fa57600181146107035760029250610708565b60009250610708565b600192505b505b5092915050565b61071b82826106ce565b928490039093207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f89290921b91909117949350505050565b60008061076183611bca565b9050600384161561077157600080fd5b6020810190358460051c8160005b601b8110156107d75760208501943583821c60011680156107a757600181146107bc576107cd565b600084815260208390526040902093506107cd565b600082815260208590526040902093505b505060010161077f565b5060805191508181146107f257630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600061081b611c73565b60809050806060015160040163ffffffff16816080015163ffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108fa57806008018261016001518663ffffffff16602081106108e9576108e9611db2565b63ffffffff90921660209290920201525b610902610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b018261096857600061096a565b815b90861663ffffffff16179250505092915050565b6000610988611c73565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f74000000000000000000000000604482015260640161089b565b8663ffffffff1660041480610a2957508663ffffffff166005145b15610aa55760008261016001518663ffffffff1660208110610a4d57610a4d611db2565b602002015190508063ffffffff168563ffffffff16148015610a7557508763ffffffff166004145b80610a9d57508063ffffffff168563ffffffff1614158015610a9d57508763ffffffff166005145b915050610b22565b8663ffffffff16600603610ac25760008460030b13159050610b22565b8663ffffffff16600703610ade5760008460030b139050610b22565b8663ffffffff16600103610b2257601f601087901c166000819003610b075760008560030b1291505b8063ffffffff16600103610b205760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b68576002610b4d8861ffff16601061090b565b63ffffffff90811690911b8201600401166080840152610b7a565b60808301805160040163ffffffff1690525b610b82610619565b98975050505050505050565b6000603f601a86901c16801580610bbd575060088163ffffffff1610158015610bbd5750600f8163ffffffff16105b1561101357603f86168160088114610c045760098114610c0d57600a8114610c1657600b8114610c1f57600c8114610c2857600d8114610c3157600e8114610c3a57610c3f565b60209150610c3f565b60219150610c3f565b602a9150610c3f565b602b9150610c3f565b60249150610c3f565b60259150610c3f565b602691505b508063ffffffff16600003610c665750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610c8c5750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610cc257601f600688901c16610cb863ffffffff8716821c602083900361090b565b9350505050610611565b8063ffffffff16600403610ce45750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610d065750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610d3957610d308663ffffffff168663ffffffff16901c8760200361090b565b92505050610611565b8063ffffffff16600803610d51578592505050610611565b8063ffffffff16600903610d69578592505050610611565b8063ffffffff16600a03610d81578592505050610611565b8063ffffffff16600b03610d99578592505050610611565b8063ffffffff16600c03610db1578592505050610611565b8063ffffffff16600f03610dc9578592505050610611565b8063ffffffff16601003610de1578592505050610611565b8063ffffffff16601103610df9578592505050610611565b8063ffffffff16601203610e11578592505050610611565b8063ffffffff16601303610e29578592505050610611565b8063ffffffff16601803610e41578592505050610611565b8063ffffffff16601903610e59578592505050610611565b8063ffffffff16601a03610e71578592505050610611565b8063ffffffff16601b03610e89578592505050610611565b8063ffffffff16602003610ea257505050828201610611565b8063ffffffff16602103610ebb57505050828201610611565b8063ffffffff16602203610ed457505050818303610611565b8063ffffffff16602303610eed57505050818303610611565b8063ffffffff16602403610f0657505050828216610611565b8063ffffffff16602503610f1f57505050828217610611565b8063ffffffff16602603610f3857505050828218610611565b8063ffffffff16602703610f525750505082821719610611565b8063ffffffff16602a03610f83578460030b8660030b12610f74576000610f77565b60015b60ff1692505050610611565b8063ffffffff16602b03610fab578463ffffffff168663ffffffff1610610f74576000610f77565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015260640161089b565b50610fab565b8063ffffffff16601c0361109757603f8616600281900361103957505050828202610611565b8063ffffffff166020148061105457508063ffffffff166021145b1561100d578063ffffffff1660200361106b579419945b60005b638000000087161561108d576401fffffffe600197881b16960161106e565b9250610611915050565b8063ffffffff16600f036110b957505065ffffffff0000601083901b16610611565b8063ffffffff166020036110ed576101d38560031660080260180363ffffffff168463ffffffff16901c60ff16600861090b565b8063ffffffff16602103611122576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff16601061090b565b8063ffffffff1660220361115157505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036111685782915050610611565b8063ffffffff1660240361119a578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff166025036111cd578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff166026036111ff57505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff1660280361123557505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff1660290361126c57505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361129b57505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b036112b25783915050610611565b8063ffffffff16602e036112e457505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112fb5782915050610611565b8063ffffffff16603803610fab5783915050610611565b600061131c611c73565b506080602063ffffffff86161061138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015260640161089b565b63ffffffff8516158015906113a15750825b156113d557838161016001518663ffffffff16602081106113c4576113c4611db2565b63ffffffff90921660209290920201525b60808101805163ffffffff80821660608501526004909101169052610902610619565b6000611402611c73565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa0361147c5781610fff81161561144b57610fff811661100003015b8363ffffffff166000036114725760e08801805163ffffffff838201169091529550611476565b8395505b506118eb565b8563ffffffff16610fcd0361149757634000000094506118eb565b8563ffffffff16611018036114af57600194506118eb565b8563ffffffff16611096036114e457600161012088015260ff83166101008801526114d8610619565b97505050505050505090565b8563ffffffff16610fa30361174e5763ffffffff8316156118eb577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff84160161170857600061153f8363fffffffc166001610755565b60208901519091508060001a6001036115ac576115a981600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa15801561164d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116719190611de1565b91509150600386168060040382811015611689578092505b5081861015611696578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116ed8663fffffffc16600186611b26565b60408b018051820163ffffffff169052975061174992505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff84160161173d578094506118eb565b63ffffffff9450600993505b6118eb565b8563ffffffff16610fa40361183f5763ffffffff831660011480611778575063ffffffff83166002145b80611789575063ffffffff83166004145b15611796578094506118eb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff84160161173d5760006117d68363fffffffc166001610755565b602089015190915060038416600403838110156117f1578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836118eb565b8563ffffffff16610fd7036118eb578163ffffffff166003036118df5763ffffffff83161580611875575063ffffffff83166005145b80611886575063ffffffff83166003145b1561189457600094506118eb565b63ffffffff8316600114806118af575063ffffffff83166002145b806118c0575063ffffffff83166006145b806118d1575063ffffffff83166004145b1561173d57600194506118eb565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526114d8610619565b6000611936611c73565b506080600063ffffffff8716601003611954575060c0810151611abd565b8663ffffffff166011036119735763ffffffff861660c0830152611abd565b8663ffffffff1660120361198c575060a0810151611abd565b8663ffffffff166013036119ab5763ffffffff861660a0830152611abd565b8663ffffffff166018036119df5763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611abd565b8663ffffffff16601903611a105763ffffffff86811681871602602081901c821660c08501521660a0830152611abd565b8663ffffffff16601a03611a66578460030b8660030b81611a3357611a33611e05565b0763ffffffff1660c0830152600385810b9087900b81611a5557611a55611e05565b0563ffffffff1660a0830152611abd565b8663ffffffff16601b03611abd578463ffffffff168663ffffffff1681611a8f57611a8f611e05565b0663ffffffff90811660c084015285811690871681611ab057611ab0611e05565b0463ffffffff1660a08301525b63ffffffff841615611af857808261016001518563ffffffff1660208110611ae757611ae7611db2565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611b1b610619565b979650505050505050565b6000611b3183611bca565b90506003841615611b4157600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611bbf5760208401933582821c6001168015611b8f5760018114611ba457611bb5565b60008581526020839052604090209450611bb5565b600082815260208690526040902094505b5050600101611b67565b505060805250505050565b60ff811661038002610184810190369061050401811015611c6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f6174610000000000000000000000000000000000000000000000000000000000606482015260840161089b565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611cd9611cde565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611d0f57600080fd5b50813567ffffffffffffffff811115611d2757600080fd5b602083019150836020828501011115611d3f57600080fd5b9250929050565b60008060008060408587031215611d5c57600080fd5b843567ffffffffffffffff80821115611d7457600080fd5b611d8088838901611cfd565b90965094506020870135915080821115611d9957600080fd5b50611da687828801611cfd565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611df457600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a",
}
// MIPSABI is the input ABI used to generate the binding from.
......
......@@ -13,9 +13,9 @@ const MIPSStorageLayoutJSON = "{\"storage\":null,\"types\":{}}"
var MIPSStorageLayout = new(solc.StorageLayout)
var MIPSDeployedBin = "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611cb2565b6100d0565b604051908152602001610062565b60006100da611bdf565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff169052606081015160009061020390826106c1565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff168261077d565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611d1e565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611d1e565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff166010610877565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611d1e565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f6858784876108ea565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff166010610877565b9095019463fffffffc861661043a8160016106c1565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610afa565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b8961077d565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a161561127e565b8063ffffffff16600b03610546576104f3858963ffffffff8a16151561127e565b8063ffffffff16600c0361055c576104f3611364565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f381898988611898565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611d1e565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611a92565b6106038583600161127e565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c51605482015261019f5160588201526101bf5160598201526101d851605a8201526000906102009060628101835b60208110156106ac57601c8401518252602090930192600490910190600101610688565b506000815281810382a0819003902092915050565b6000806106cd83611b36565b905060038416156106dd57600080fd5b6020810190358460051c8160005b601b8110156107435760208501943583821c6001168015610713576001811461072857610739565b60008481526020839052604090209350610739565b600082815260208590526040902093505b50506001016106eb565b50608051915081811461075e57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b6000610787611bdf565b60809050806060015160040163ffffffff16816080015163ffffffff1614610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff90811690935285831690529085161561086657806008018261016001518663ffffffff166020811061085557610855611d1e565b63ffffffff90921660209290920201525b61086e610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b01826108d45760006108d6565b815b90861663ffffffff16179250505092915050565b60006108f4611bdf565b608090506000816060015160040163ffffffff16826080015163ffffffff161461097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610807565b8663ffffffff166004148061099557508663ffffffff166005145b15610a115760008261016001518663ffffffff16602081106109b9576109b9611d1e565b602002015190508063ffffffff168563ffffffff161480156109e157508763ffffffff166004145b80610a0957508063ffffffff168563ffffffff1614158015610a0957508763ffffffff166005145b915050610a8e565b8663ffffffff16600603610a2e5760008460030b13159050610a8e565b8663ffffffff16600703610a4a5760008460030b139050610a8e565b8663ffffffff16600103610a8e57601f601087901c166000819003610a735760008560030b1291505b8063ffffffff16600103610a8c5760008560030b121591505b505b606082018051608084015163ffffffff169091528115610ad4576002610ab98861ffff166010610877565b63ffffffff90811690911b8201600401166080840152610ae6565b60808301805160040163ffffffff1690525b610aee610619565b98975050505050505050565b6000603f601a86901c16801580610b29575060088163ffffffff1610158015610b295750600f8163ffffffff16105b15610f7f57603f86168160088114610b705760098114610b7957600a8114610b8257600b8114610b8b57600c8114610b9457600d8114610b9d57600e8114610ba657610bab565b60209150610bab565b60219150610bab565b602a9150610bab565b602b9150610bab565b60249150610bab565b60259150610bab565b602691505b508063ffffffff16600003610bd25750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610bf85750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610c2e57601f600688901c16610c2463ffffffff8716821c6020839003610877565b9350505050610611565b8063ffffffff16600403610c505750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610c725750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610ca557610c9c8663ffffffff168663ffffffff16901c87602003610877565b92505050610611565b8063ffffffff16600803610cbd578592505050610611565b8063ffffffff16600903610cd5578592505050610611565b8063ffffffff16600a03610ced578592505050610611565b8063ffffffff16600b03610d05578592505050610611565b8063ffffffff16600c03610d1d578592505050610611565b8063ffffffff16600f03610d35578592505050610611565b8063ffffffff16601003610d4d578592505050610611565b8063ffffffff16601103610d65578592505050610611565b8063ffffffff16601203610d7d578592505050610611565b8063ffffffff16601303610d95578592505050610611565b8063ffffffff16601803610dad578592505050610611565b8063ffffffff16601903610dc5578592505050610611565b8063ffffffff16601a03610ddd578592505050610611565b8063ffffffff16601b03610df5578592505050610611565b8063ffffffff16602003610e0e57505050828201610611565b8063ffffffff16602103610e2757505050828201610611565b8063ffffffff16602203610e4057505050818303610611565b8063ffffffff16602303610e5957505050818303610611565b8063ffffffff16602403610e7257505050828216610611565b8063ffffffff16602503610e8b57505050828217610611565b8063ffffffff16602603610ea457505050828218610611565b8063ffffffff16602703610ebe5750505082821719610611565b8063ffffffff16602a03610eef578460030b8660030b12610ee0576000610ee3565b60015b60ff1692505050610611565b8063ffffffff16602b03610f17578463ffffffff168663ffffffff1610610ee0576000610ee3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610807565b50610f17565b8063ffffffff16601c0361100357603f86166002819003610fa557505050828202610611565b8063ffffffff1660201480610fc057508063ffffffff166021145b15610f79578063ffffffff16602003610fd7579419945b60005b6380000000871615610ff9576401fffffffe600197881b169601610fda565b9250610611915050565b8063ffffffff16600f0361102557505065ffffffff0000601083901b16610611565b8063ffffffff16602003611059576101d38560031660080260180363ffffffff168463ffffffff16901c60ff166008610877565b8063ffffffff1660210361108e576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff166010610877565b8063ffffffff166022036110bd57505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036110d45782915050610611565b8063ffffffff16602403611106578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff16602503611139578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff1660260361116b57505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff166028036111a157505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff166029036111d857505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361120757505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b0361121e5783915050610611565b8063ffffffff16602e0361125057505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112675782915050610611565b8063ffffffff16603803610f175783915050610611565b6000611288611bdf565b506080602063ffffffff8616106112fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610807565b63ffffffff85161580159061130d5750825b1561134157838161016001518663ffffffff166020811061133057611330611d1e565b63ffffffff90921660209290920201525b60808101805163ffffffff8082166060850152600490910116905261086e610619565b600061136e611bdf565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036113e85781610fff8116156113b757610fff811661100003015b8363ffffffff166000036113de5760e08801805163ffffffff8382011690915295506113e2565b8395505b50611857565b8563ffffffff16610fcd036114035763400000009450611857565b8563ffffffff166110180361141b5760019450611857565b8563ffffffff166110960361145057600161012088015260ff8316610100880152611444610619565b97505050505050505090565b8563ffffffff16610fa3036116ba5763ffffffff831615611857577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff8416016116745760006114ab8363fffffffc1660016106c1565b60208901519091508060001a6001036115185761151581600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa1580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd9190611d4d565b915091506003861680600403828110156115f5578092505b5081861015611602578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116598663fffffffc16600186611a92565b60408b018051820163ffffffff16905297506116b592505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff8416016116a957809450611857565b63ffffffff9450600993505b611857565b8563ffffffff16610fa4036117ab5763ffffffff8316600114806116e4575063ffffffff83166002145b806116f5575063ffffffff83166004145b1561170257809450611857565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016116a95760006117428363fffffffc1660016106c1565b6020890151909150600384166004038381101561175d578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b17602088015260006040880152935083611857565b8563ffffffff16610fd703611857578163ffffffff1660030361184b5763ffffffff831615806117e1575063ffffffff83166005145b806117f2575063ffffffff83166003145b156118005760009450611857565b63ffffffff83166001148061181b575063ffffffff83166002145b8061182c575063ffffffff83166006145b8061183d575063ffffffff83166004145b156116a95760019450611857565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b01526004019091169052611444610619565b60006118a2611bdf565b506080600063ffffffff87166010036118c0575060c0810151611a29565b8663ffffffff166011036118df5763ffffffff861660c0830152611a29565b8663ffffffff166012036118f8575060a0810151611a29565b8663ffffffff166013036119175763ffffffff861660a0830152611a29565b8663ffffffff1660180361194b5763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611a29565b8663ffffffff1660190361197c5763ffffffff86811681871602602081901c821660c08501521660a0830152611a29565b8663ffffffff16601a036119d2578460030b8660030b8161199f5761199f611d71565b0763ffffffff1660c0830152600385810b9087900b816119c1576119c1611d71565b0563ffffffff1660a0830152611a29565b8663ffffffff16601b03611a29578463ffffffff168663ffffffff16816119fb576119fb611d71565b0663ffffffff90811660c084015285811690871681611a1c57611a1c611d71565b0463ffffffff1660a08301525b63ffffffff841615611a6457808261016001518563ffffffff1660208110611a5357611a53611d1e565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611a87610619565b979650505050505050565b6000611a9d83611b36565b90506003841615611aad57600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611b2b5760208401933582821c6001168015611afb5760018114611b1057611b21565b60008581526020839052604090209450611b21565b600082815260208690526040902094505b5050600101611ad3565b505060805250505050565b60ff811661038002610184810190369061050401811015611bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610807565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611c45611c4a565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611c7b57600080fd5b50813567ffffffffffffffff811115611c9357600080fd5b602083019150836020828501011115611cab57600080fd5b9250929050565b60008060008060408587031215611cc857600080fd5b843567ffffffffffffffff80821115611ce057600080fd5b611cec88838901611c69565b90965094506020870135915080821115611d0557600080fd5b50611d1287828801611c69565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611d6057600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
var MIPSDeployedBin = "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611d46565b6100d0565b604051908152602001610062565b60006100da611c73565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff16905260608101516000906102039082610755565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff1682610811565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611db2565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611db2565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff16601061090b565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611db2565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f68587848761097e565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff16601061090b565b9095019463fffffffc861661043a816001610755565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610b8e565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b89610811565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a1615611312565b8063ffffffff16600b03610546576104f3858963ffffffff8a161515611312565b8063ffffffff16600c0361055c576104f36113f8565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f38189898861192c565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611db2565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611b26565b61060385836001611312565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c5160548201526101805161019f5160588301526101a0516101bf5160598401526101d851605a840152600092610200929091606283019160f890811c91901c855b60208110156106bf57601c860151845260209095019460049093019260010161069b565b506000835283830384a0610711565b600081600181146106e2576003915061070a565b8380156106fa57600181146107035760029250610708565b60009250610708565b600192505b505b5092915050565b61071b82826106ce565b928490039093207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f89290921b91909117949350505050565b60008061076183611bca565b9050600384161561077157600080fd5b6020810190358460051c8160005b601b8110156107d75760208501943583821c60011680156107a757600181146107bc576107cd565b600084815260208390526040902093506107cd565b600082815260208590526040902093505b505060010161077f565b5060805191508181146107f257630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600061081b611c73565b60809050806060015160040163ffffffff16816080015163ffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108fa57806008018261016001518663ffffffff16602081106108e9576108e9611db2565b63ffffffff90921660209290920201525b610902610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b018261096857600061096a565b815b90861663ffffffff16179250505092915050565b6000610988611c73565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f74000000000000000000000000604482015260640161089b565b8663ffffffff1660041480610a2957508663ffffffff166005145b15610aa55760008261016001518663ffffffff1660208110610a4d57610a4d611db2565b602002015190508063ffffffff168563ffffffff16148015610a7557508763ffffffff166004145b80610a9d57508063ffffffff168563ffffffff1614158015610a9d57508763ffffffff166005145b915050610b22565b8663ffffffff16600603610ac25760008460030b13159050610b22565b8663ffffffff16600703610ade5760008460030b139050610b22565b8663ffffffff16600103610b2257601f601087901c166000819003610b075760008560030b1291505b8063ffffffff16600103610b205760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b68576002610b4d8861ffff16601061090b565b63ffffffff90811690911b8201600401166080840152610b7a565b60808301805160040163ffffffff1690525b610b82610619565b98975050505050505050565b6000603f601a86901c16801580610bbd575060088163ffffffff1610158015610bbd5750600f8163ffffffff16105b1561101357603f86168160088114610c045760098114610c0d57600a8114610c1657600b8114610c1f57600c8114610c2857600d8114610c3157600e8114610c3a57610c3f565b60209150610c3f565b60219150610c3f565b602a9150610c3f565b602b9150610c3f565b60249150610c3f565b60259150610c3f565b602691505b508063ffffffff16600003610c665750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610c8c5750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610cc257601f600688901c16610cb863ffffffff8716821c602083900361090b565b9350505050610611565b8063ffffffff16600403610ce45750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610d065750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610d3957610d308663ffffffff168663ffffffff16901c8760200361090b565b92505050610611565b8063ffffffff16600803610d51578592505050610611565b8063ffffffff16600903610d69578592505050610611565b8063ffffffff16600a03610d81578592505050610611565b8063ffffffff16600b03610d99578592505050610611565b8063ffffffff16600c03610db1578592505050610611565b8063ffffffff16600f03610dc9578592505050610611565b8063ffffffff16601003610de1578592505050610611565b8063ffffffff16601103610df9578592505050610611565b8063ffffffff16601203610e11578592505050610611565b8063ffffffff16601303610e29578592505050610611565b8063ffffffff16601803610e41578592505050610611565b8063ffffffff16601903610e59578592505050610611565b8063ffffffff16601a03610e71578592505050610611565b8063ffffffff16601b03610e89578592505050610611565b8063ffffffff16602003610ea257505050828201610611565b8063ffffffff16602103610ebb57505050828201610611565b8063ffffffff16602203610ed457505050818303610611565b8063ffffffff16602303610eed57505050818303610611565b8063ffffffff16602403610f0657505050828216610611565b8063ffffffff16602503610f1f57505050828217610611565b8063ffffffff16602603610f3857505050828218610611565b8063ffffffff16602703610f525750505082821719610611565b8063ffffffff16602a03610f83578460030b8660030b12610f74576000610f77565b60015b60ff1692505050610611565b8063ffffffff16602b03610fab578463ffffffff168663ffffffff1610610f74576000610f77565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015260640161089b565b50610fab565b8063ffffffff16601c0361109757603f8616600281900361103957505050828202610611565b8063ffffffff166020148061105457508063ffffffff166021145b1561100d578063ffffffff1660200361106b579419945b60005b638000000087161561108d576401fffffffe600197881b16960161106e565b9250610611915050565b8063ffffffff16600f036110b957505065ffffffff0000601083901b16610611565b8063ffffffff166020036110ed576101d38560031660080260180363ffffffff168463ffffffff16901c60ff16600861090b565b8063ffffffff16602103611122576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff16601061090b565b8063ffffffff1660220361115157505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036111685782915050610611565b8063ffffffff1660240361119a578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff166025036111cd578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff166026036111ff57505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff1660280361123557505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff1660290361126c57505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361129b57505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b036112b25783915050610611565b8063ffffffff16602e036112e457505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112fb5782915050610611565b8063ffffffff16603803610fab5783915050610611565b600061131c611c73565b506080602063ffffffff86161061138f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015260640161089b565b63ffffffff8516158015906113a15750825b156113d557838161016001518663ffffffff16602081106113c4576113c4611db2565b63ffffffff90921660209290920201525b60808101805163ffffffff80821660608501526004909101169052610902610619565b6000611402611c73565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa0361147c5781610fff81161561144b57610fff811661100003015b8363ffffffff166000036114725760e08801805163ffffffff838201169091529550611476565b8395505b506118eb565b8563ffffffff16610fcd0361149757634000000094506118eb565b8563ffffffff16611018036114af57600194506118eb565b8563ffffffff16611096036114e457600161012088015260ff83166101008801526114d8610619565b97505050505050505090565b8563ffffffff16610fa30361174e5763ffffffff8316156118eb577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff84160161170857600061153f8363fffffffc166001610755565b60208901519091508060001a6001036115ac576115a981600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa15801561164d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116719190611de1565b91509150600386168060040382811015611689578092505b5081861015611696578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116ed8663fffffffc16600186611b26565b60408b018051820163ffffffff169052975061174992505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff84160161173d578094506118eb565b63ffffffff9450600993505b6118eb565b8563ffffffff16610fa40361183f5763ffffffff831660011480611778575063ffffffff83166002145b80611789575063ffffffff83166004145b15611796578094506118eb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff84160161173d5760006117d68363fffffffc166001610755565b602089015190915060038416600403838110156117f1578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836118eb565b8563ffffffff16610fd7036118eb578163ffffffff166003036118df5763ffffffff83161580611875575063ffffffff83166005145b80611886575063ffffffff83166003145b1561189457600094506118eb565b63ffffffff8316600114806118af575063ffffffff83166002145b806118c0575063ffffffff83166006145b806118d1575063ffffffff83166004145b1561173d57600194506118eb565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526114d8610619565b6000611936611c73565b506080600063ffffffff8716601003611954575060c0810151611abd565b8663ffffffff166011036119735763ffffffff861660c0830152611abd565b8663ffffffff1660120361198c575060a0810151611abd565b8663ffffffff166013036119ab5763ffffffff861660a0830152611abd565b8663ffffffff166018036119df5763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611abd565b8663ffffffff16601903611a105763ffffffff86811681871602602081901c821660c08501521660a0830152611abd565b8663ffffffff16601a03611a66578460030b8660030b81611a3357611a33611e05565b0763ffffffff1660c0830152600385810b9087900b81611a5557611a55611e05565b0563ffffffff1660a0830152611abd565b8663ffffffff16601b03611abd578463ffffffff168663ffffffff1681611a8f57611a8f611e05565b0663ffffffff90811660c084015285811690871681611ab057611ab0611e05565b0463ffffffff1660a08301525b63ffffffff841615611af857808261016001518563ffffffff1660208110611ae757611ae7611db2565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611b1b610619565b979650505050505050565b6000611b3183611bca565b90506003841615611b4157600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611bbf5760208401933582821c6001168015611b8f5760018114611ba457611bb5565b60008581526020839052604090209450611bb5565b600082815260208690526040902094505b5050600101611b67565b505060805250505050565b60ff811661038002610184810190369061050401811015611c6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f6174610000000000000000000000000000000000000000000000000000000000606482015260840161089b565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611cd9611cde565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611d0f57600080fd5b50813567ffffffffffffffff811115611d2757600080fd5b602083019150836020828501011115611d3f57600080fd5b9250929050565b60008060008060408587031215611d5c57600080fd5b843567ffffffffffffffff80821115611d7457600080fd5b611d8088838901611cfd565b90965094506020870135915080821115611d9957600080fd5b50611da687828801611cfd565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611df457600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
var MIPSDeployedSourceMap = "1131:38919:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:45;;1745:10;1710:45;;;;;188:10:257;176:23;;;158:42;;146:2;131:18;1710:45:105;;;;;;;;2448:99;;;412:42:257;2534:6:105;400:55:257;382:74;;370:2;355:18;2448:99:105;211:251:257;24930:6339:105;;;;;;:::i;:::-;;:::i;:::-;;;1687:25:257;;;1675:2;1660:18;24930:6339:105;1541:177:257;24930:6339:105;25008:7;25051:18;;:::i;:::-;25198:4;25191:5;25188:15;25178:134;;25292:1;25289;25282:12;25178:134;25348:4;25342:11;25355;25339:28;25329:137;;25446:1;25443;25436:12;25329:137;25514:3;25496:16;25493:25;25483:150;;25613:1;25610;25603:12;25483:150;25677:3;25663:12;25660:21;25650:145;;25775:1;25772;25765:12;25650:145;26055:24;;26399:4;26101:20;26457:2;26159:21;;26055:24;26217:18;26101:20;26159:21;;;26055:24;26032:21;26028:52;;;26217:18;26101:20;;;26159:21;;;26055:24;26028:52;;26101:20;;26159:21;;;26055:24;26028:52;;26217:18;26101:20;26159:21;;;26055:24;26028:52;;26217:18;26101:20;26159:21;;;26055:24;26028:52;;26217:18;26101:20;26159:21;;;26055:24;26028:52;;;26217:18;26101:20;26159:21;;;26055:24;26032:21;26028:52;;;26217:18;26101:20;26159:21;;;26055:24;26028:52;;26217:18;26101:20;26159:21;;;26055:24;26028:52;;26217:18;26101:20;27075:10;26217:18;27065:21;;;26159;;;;27173:1;27158:77;27183:2;27180:1;27177:9;27158:77;;;26055:24;;26032:21;26028:52;26101:20;;27231:1;26159:21;;;;26043:2;26217:18;;;;27201:1;27194:9;27158:77;;;27162:14;;;27313:5;:12;;;27309:71;;;27352:13;:11;:13::i;:::-;27345:20;;;;;27309:71;27394:10;;;:15;;27408:1;27394:15;;;;;27479:8;;;;-1:-1:-1;;27471:20:105;;-1:-1:-1;27471:7:105;:20::i;:::-;27457:34;-1:-1:-1;27521:10:105;27529:2;27521:10;;;;27598:1;27588:11;;;:26;;;27603:6;:11;;27613:1;27603:11;27588:26;27584:310;;;27744:13;27813:1;27791:4;27798:10;27791:17;27790:24;;;;27761:5;:12;;;27776:10;27761:25;27760:54;27744:70;;27839:40;27850:6;:11;;27860:1;27850:11;:20;;27868:2;27850:20;;;27864:1;27850:20;27839:40;;27872:6;27839:10;:40::i;:::-;27832:47;;;;;;;;27584:310;28143:15;;;;27938:9;;;;28075:4;28069:2;28061:10;;;28060:19;;;28143:15;28168:2;28160:10;;;28159:19;28143:36;;;;;;;:::i;:::-;;;;;;-1:-1:-1;28208:5:105;28232:11;;;;;:29;;;28247:6;:14;;28257:4;28247:14;28232:29;28228:832;;;28324:5;:15;;;28340:5;28324:22;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;28387:4:105;28381:2;28373:10;;;28372:19;28228:832;;;28425:4;28416:6;:13;;;28412:648;;;28546:6;:13;;28556:3;28546:13;:30;;;;28563:6;:13;;28573:3;28563:13;28546:30;:47;;;;28580:6;:13;;28590:3;28580:13;28546:47;28542:253;;;28656:4;28663:6;28656:13;28651:18;;28412:648;;28542:253;28755:21;28758:4;28765:6;28758:13;28773:2;28755;:21::i;:::-;28750:26;;28412:648;;;28829:4;28819:6;:14;;;;:32;;;;28837:6;:14;;28847:4;28837:14;28819:32;:50;;;;28855:6;:14;;28865:4;28855:14;28819:50;28815:245;;;28939:5;:15;;;28955:5;28939:22;;;;;;;;;:::i;:::-;;;;;28934:27;;29040:5;29032:13;;28815:245;29089:1;29079:6;:11;;;;:25;;;;;29103:1;29094:6;:10;;;29079:25;29078:42;;;;29109:6;:11;;29119:1;29109:11;29078:42;29074:125;;;29147:37;29160:6;29168:4;29174:5;29181:2;29147:12;:37::i;:::-;29140:44;;;;;;;;;;;29074:125;29232:13;29213:16;29384:4;29374:14;;;;29370:446;;29453:21;29456:4;29463:6;29456:13;29471:2;29453;:21::i;:::-;29447:27;;;;29511:10;29506:15;;29545:16;29506:15;29559:1;29545:7;:16::i;:::-;29539:22;;29593:4;29583:6;:14;;;;:32;;;;;29601:6;:14;;29611:4;29601:14;;29583:32;29579:223;;;29680:4;29668:16;;29782:1;29774:9;;29579:223;29390:426;29370:446;29849:10;29862:26;29870:4;29876:2;29880;29884:3;29862:7;:26::i;:::-;29891:10;29862:39;;;;-1:-1:-1;29987:4:105;29980:11;;;30019;;;:24;;;;;30042:1;30034:4;:9;;;;30019:24;:39;;;;;30054:4;30047;:11;;;30019:39;30015:847;;;30082:4;:9;;30090:1;30082:9;:22;;;;30095:4;:9;;30103:1;30095:9;30082:22;30078:144;;;30166:37;30177:4;:9;;30185:1;30177:9;:21;;30193:5;30177:21;;;30189:1;30177:21;30200:2;30166:10;:37::i;:::-;30159:44;;;;;;;;;;;;;;;30078:144;30244:4;:11;;30252:3;30244:11;30240:121;;30314:28;30323:5;30330:2;30334:7;;;;30314:8;:28::i;30240:121::-;30382:4;:11;;30390:3;30382:11;30378:121;;30452:28;30461:5;30468:2;30472:7;;;;;30452:8;:28::i;30378:121::-;30569:4;:11;;30577:3;30569:11;30565:80;;30611:15;:13;:15::i;30565:80::-;30748:4;30740;:12;;;;:27;;;;;30763:4;30756;:11;;;30740:27;30736:112;;;30798:31;30809:4;30815:2;30819;30823:5;30798:10;:31::i;30736:112::-;30922:6;:14;;30932:4;30922:14;:28;;;;-1:-1:-1;30940:10:105;;;;;30922:28;30918:93;;;30995:1;30970:5;:15;;;30986:5;30970:22;;;;;;;;;:::i;:::-;:26;;;;:22;;;;;;:26;30918:93;31057:9;:26;;31070:13;31057:26;31053:92;;31103:27;31112:9;31123:1;31126:3;31103:8;:27::i;:::-;31226:26;31235:5;31242:3;31247:4;31226:8;:26::i;:::-;31219:33;;;;;;;;;;;;;24930:6339;;;;;;;:::o;3092:1709::-;3639:4;3633:11;;3555:4;3358:31;3347:43;;3418:13;3358:31;3757:2;3457:13;;3347:43;3364:24;3358:31;3457:13;;;3347:43;;;;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3133:12;;4342:13;;3457;;;3133:12;4422:84;4447:2;4444:1;4441:9;4422:84;;;3374:13;3364:24;;3358:31;3347:43;;3378:2;3418:13;;;;4502:1;3457:13;;;;4465:1;4458:9;4422:84;;;4426:14;4569:1;4565:2;4558:13;4664:5;4660:2;4656:14;4649:5;4644:27;4770:14;;;4753:32;;;3092:1709;-1:-1:-1;;3092:1709:105:o;20985:1831::-;21058:11;21169:14;21186:24;21198:11;21186;:24::i;:::-;21169:41;;21318:1;21311:5;21307:13;21304:33;;;21333:1;21330;21323:12;21304:33;21466:2;21454:15;;;21407:20;21896:5;21893:1;21889:13;21931:4;21967:1;21952:343;21977:2;21974:1;21971:9;21952:343;;;22100:2;22088:15;;;22037:20;22135:12;;;22149:1;22131:20;22172:42;;;;22240:1;22235:42;;;;22124:153;;22172:42;21630:1;21623:12;;;21663:2;21656:13;;;21708:2;21695:16;;22181:31;;22172:42;;22235;21630:1;21623:12;;;21663:2;21656:13;;;21708:2;21695:16;;22244:31;;22124:153;-1:-1:-1;;21995:1:105;21988:9;21952:343;;;21956:14;22405:4;22399:11;22384:26;;22491:7;22485:4;22482:17;22472:124;;22533:10;22530:1;22523:21;22575:2;22572:1;22565:13;22472:124;-1:-1:-1;;22723:2:105;22712:14;;;;22700:10;22696:31;22693:1;22689:39;22757:16;;;;22775:10;22753:33;;20985:1831;-1:-1:-1;;;20985:1831:105:o;18095:823::-;18164:12;18251:18;;:::i;:::-;18319:4;18310:13;;18371:5;:8;;;18382:1;18371:12;18355:28;;:5;:12;;;:28;;;18351:95;;18403:28;;;;;2114:2:257;18403:28:105;;;2096:21:257;2153:2;2133:18;;;2126:30;2192:20;2172:18;;;2165:48;2230:18;;18403:28:105;;;;;;;;18351:95;18535:8;;;;;18568:12;;;;;18557:23;;;;;;;18594:20;;;;;18535:8;18726:13;;;18722:90;;18787:6;18796:1;18787:10;18759:5;:15;;;18775:8;18759:25;;;;;;;;;:::i;:::-;:38;;;;:25;;;;;;:38;18722:90;18888:13;:11;:13::i;:::-;18881:20;18095:823;-1:-1:-1;;;;;18095:823:105:o;2645:339::-;2706:11;2770:18;;;;2779:8;;;;2770:18;;;;;;2769:25;;;;;2786:1;2833:2;:9;;;2827:16;;;;;2826:22;;2825:32;;;;;;;2887:9;;2886:15;2769:25;2944:21;;2964:1;2944:21;;;2955:6;2944:21;2929:11;;;;;:37;;-1:-1:-1;;;2645:339:105;;;;:::o;12956:2026::-;13053:12;13139:18;;:::i;:::-;13207:4;13198:13;;13239:17;13299:5;:8;;;13310:1;13299:12;13283:28;;:5;:12;;;:28;;;13279:97;;13331:30;;;;;2461:2:257;13331:30:105;;;2443:21:257;2500:2;2480:18;;;2473:30;2539:22;2519:18;;;2512:50;2579:18;;13331:30:105;2259:344:257;13279:97:105;13446:7;:12;;13457:1;13446:12;:28;;;;13462:7;:12;;13473:1;13462:12;13446:28;13442:947;;;13494:9;13506:5;:15;;;13522:6;13506:23;;;;;;;;;:::i;:::-;;;;;13494:35;;13570:2;13563:9;;:3;:9;;;:25;;;;;13576:7;:12;;13587:1;13576:12;13563:25;13562:58;;;;13601:2;13594:9;;:3;:9;;;;:25;;;;;13607:7;:12;;13618:1;13607:12;13594:25;13547:73;;13476:159;13442:947;;;13732:7;:12;;13743:1;13732:12;13728:661;;13793:1;13785:3;13779:15;;;;13764:30;;13728:661;;;13897:7;:12;;13908:1;13897:12;13893:496;;13957:1;13950:3;13944:14;;;13929:29;;13893:496;;;14078:7;:12;;14089:1;14078:12;14074:315;;14166:4;14160:2;14151:11;;;14150:20;14136:10;14193:8;;;14189:84;;14253:1;14246:3;14240:14;;;14225:29;;14189:84;14294:3;:8;;14301:1;14294:8;14290:85;;14355:1;14347:3;14341:15;;;;14326:30;;14290:85;14092:297;14074:315;14465:8;;;;;14543:12;;;;14532:23;;;;;14699:178;;;;14790:1;14764:22;14767:5;14775:6;14767:14;14783:2;14764;:22::i;:::-;:27;;;;;;;14750:42;;14759:1;14750:42;14735:57;:12;;;:57;14699:178;;;14846:12;;;;;14861:1;14846:16;14831:31;;;;14699:178;14952:13;:11;:13::i;:::-;14945:20;12956:2026;-1:-1:-1;;;;;;;;12956:2026:105:o;31315:8733::-;31402:10;31464;31472:2;31464:10;;;;31503:11;;;:44;;;31529:1;31519:6;:11;;;;:27;;;;;31543:3;31534:6;:12;;;31519:27;31499:8490;;;31588:4;31581:11;;31712:6;31772:3;31767:25;;;;31847:3;31842:25;;;;31921:3;31916:25;;;;31996:3;31991:25;;;;32070:3;32065:25;;;;32143:3;32138:25;;;;32217:3;32212:25;;;;31705:532;;31767:25;31786:4;31778:12;;31767:25;;31842;31861:4;31853:12;;31842:25;;31916;31935:4;31927:12;;31916:25;;31991;32010:4;32002:12;;31991:25;;32065;32084:4;32076:12;;32065:25;;32138;32157:4;32149:12;;32138:25;;32212;32231:4;32223:12;;31705:532;;32300:4;:12;;32308:4;32300:12;32296:4023;;-1:-1:-1;;;32351:9:105;32343:26;;32364:4;32359:1;32351:9;;;32350:18;32343:26;32336:33;;32296:4023;32437:4;:12;;32445:4;32437:12;32433:3886;;-1:-1:-1;;;32488:9:105;32480:26;;32501:4;32496:1;32488:9;;;32487:18;32480:26;32473:33;;32433:3886;32574:4;:12;;32582:4;32574:12;32570:3749;;32639:4;32634:1;32626:9;;;32625:18;32672:27;32626:9;32675:11;;;;32688:2;:10;;;32672:2;:27::i;:::-;32665:34;;;;;;;32570:3749;32768:4;:12;;32776:4;32768:12;32764:3555;;-1:-1:-1;;;32811:17:105;;;32823:4;32818:9;;32811:17;32804:24;;32764:3555;32897:4;:11;;32905:3;32897:11;32893:3426;;-1:-1:-1;;;32939:17:105;;;32951:4;32946:9;;32939:17;32932:24;;32893:3426;33025:4;:12;;33033:4;33025:12;33021:3298;;33068:21;33077:2;33071:8;;:2;:8;;;;33086:2;33081;:7;33068:2;:21::i;:::-;33061:28;;;;;;33021:3298;33338:4;:12;;33346:4;33338:12;33334:2985;;33381:2;33374:9;;;;;;33334:2985;33452:4;:12;;33460:4;33452:12;33448:2871;;33495:2;33488:9;;;;;;33448:2871;33566:4;:12;;33574:4;33566:12;33562:2757;;33609:2;33602:9;;;;;;33562:2757;33680:4;:12;;33688:4;33680:12;33676:2643;;33723:2;33716:9;;;;;;33676:2643;33797:4;:12;;33805:4;33797:12;33793:2526;;33840:2;33833:9;;;;;;33793:2526;33957:4;:12;;33965:4;33957:12;33953:2366;;34000:2;33993:9;;;;;;33953:2366;34071:4;:12;;34079:4;34071:12;34067:2252;;34114:2;34107:9;;;;;;34067:2252;34185:4;:12;;34193:4;34185:12;34181:2138;;34228:2;34221:9;;;;;;34181:2138;34299:4;:12;;34307:4;34299:12;34295:2024;;34342:2;34335:9;;;;;;34295:2024;34413:4;:12;;34421:4;34413:12;34409:1910;;34456:2;34449:9;;;;;;34409:1910;34527:4;:12;;34535:4;34527:12;34523:1796;;34570:2;34563:9;;;;;;34523:1796;34642:4;:12;;34650:4;34642:12;34638:1681;;34685:2;34678:9;;;;;;34638:1681;34755:4;:12;;34763:4;34755:12;34751:1568;;34798:2;34791:9;;;;;;34751:1568;34869:4;:12;;34877:4;34869:12;34865:1454;;34912:2;34905:9;;;;;;34865:1454;35061:4;:12;;35069:4;35061:12;35057:1262;;-1:-1:-1;;;35105:7:105;;;35097:16;;35057:1262;35182:4;:12;;35190:4;35182:12;35178:1141;;-1:-1:-1;;;35226:7:105;;;35218:16;;35178:1141;35302:4;:12;;35310:4;35302:12;35298:1021;;-1:-1:-1;;;35346:7:105;;;35338:16;;35298:1021;35423:4;:12;;35431:4;35423:12;35419:900;;-1:-1:-1;;;35467:7:105;;;35459:16;;35419:900;35543:4;:12;;35551:4;35543:12;35539:780;;-1:-1:-1;;;35587:7:105;;;35579:16;;35539:780;35662:4;:12;;35670:4;35662:12;35658:661;;-1:-1:-1;;;35706:7:105;;;35698:16;;35658:661;35782:4;:12;;35790:4;35782:12;35778:541;;-1:-1:-1;;;35826:7:105;;;35818:16;;35778:541;35902:4;:12;;35910:4;35902:12;35898:421;;-1:-1:-1;;;35947:7:105;;;35945:10;35938:17;;35898:421;36024:4;:12;;36032:4;36024:12;36020:299;;36085:2;36067:21;;36073:2;36067:21;;;:29;;36095:1;36067:29;;;36091:1;36067:29;36060:36;;;;;;;;36020:299;36166:4;:12;;36174:4;36166:12;36162:157;;36214:2;36209:7;;:2;:7;;;:15;;36223:1;36209:15;;36162:157;36271:29;;;;;2810:2:257;36271:29:105;;;2792:21:257;2849:2;2829:18;;;2822:30;2888:21;2868:18;;;2861:49;2927:18;;36271:29:105;2608:343:257;36162:157:105;31549:4784;31499:8490;;;36389:6;:14;;36399:4;36389:14;36385:3590;;36448:4;36441:11;;36523:3;36515:11;;;36511:549;;-1:-1:-1;;;36568:21:105;;;36554:36;;36511:549;36675:4;:12;;36683:4;36675:12;:28;;;;36691:4;:12;;36699:4;36691:12;36675:28;36671:389;;;36735:4;:12;;36743:4;36735:12;36731:83;;36784:3;;;36731:83;36839:8;36877:127;36889:10;36884:15;;:20;36877:127;;36969:8;36936:3;36969:8;;;;;36936:3;36877:127;;;37036:1;-1:-1:-1;37029:8:105;;-1:-1:-1;;37029:8:105;36385:3590;37127:6;:14;;37137:4;37127:14;37123:2852;;-1:-1:-1;;37172:8:105;37178:2;37172:8;;;;37165:15;;37123:2852;37247:6;:14;;37257:4;37247:14;37243:2732;;37292:42;37310:2;37315:1;37310:6;37320:1;37309:12;37304:2;:17;37296:26;;:3;:26;;;;37326:4;37295:35;37332:1;37292:2;:42::i;37243:2732::-;37401:6;:14;;37411:4;37401:14;37397:2578;;37446:45;37464:2;37469:1;37464:6;37474:1;37463:12;37458:2;:17;37450:26;;:3;:26;;;;37480:6;37449:37;37488:2;37446;:45::i;37397:2578::-;37559:6;:14;;37569:4;37559:14;37555:2420;;-1:-1:-1;;37610:21:105;37629:1;37624;37619:6;;37618:12;37610:21;;37667:36;;;37738:5;37733:10;;37610:21;;;;;37732:18;37725:25;;37555:2420;37817:6;:14;;37827:4;37817:14;37813:2162;;37862:3;37855:10;;;;;37813:2162;37933:6;:14;;37943:4;37933:14;37929:2046;;37993:2;37998:1;37993:6;38003:1;37992:12;37987:2;:17;37979:26;;:3;:26;;;;38009:4;37978:35;37971:42;;;;;37929:2046;38082:6;:14;;38092:4;38082:14;38078:1897;;38142:2;38147:1;38142:6;38152:1;38141:12;38136:2;:17;38128:26;;:3;:26;;;;38158:6;38127:37;38120:44;;;;;38078:1897;38233:6;:14;;38243:4;38233:14;38229:1746;;-1:-1:-1;;38284:26:105;38308:1;38303;38298:6;;38297:12;38292:2;:17;38284:26;;38346:41;;;38422:5;38417:10;;38284:26;;;;;38416:18;38409:25;;38229:1746;38502:6;:14;;38512:4;38502:14;38498:1477;;-1:-1:-1;;38559:4:105;38553:34;38585:1;38580;38575:6;;38574:12;38569:2;:17;38553:34;;38643:27;;;38623:48;;;38701:10;;38554:9;;;38553:34;;38700:18;38693:25;;38498:1477;38786:6;:14;;38796:4;38786:14;38782:1193;;-1:-1:-1;;38843:6:105;38837:36;38871:1;38866;38861:6;;38860:12;38855:2;:17;38837:36;;38929:29;;;38909:50;;;38989:10;;38838:11;;;38837:36;;38988:18;38981:25;;38782:1193;39075:6;:14;;39085:4;39075:14;39071:904;;-1:-1:-1;;39126:20:105;39144:1;39139;39134:6;;39133:12;39126:20;;39182:36;;;39254:5;39248:11;;39126:20;;;;;39247:19;39240:26;;39071:904;39334:6;:14;;39344:4;39334:14;39330:645;;39379:2;39372:9;;;;;39330:645;39450:6;:14;;39460:4;39450:14;39446:529;;-1:-1:-1;;39501:25:105;39524:1;39519;39514:6;;39513:12;39508:2;:17;39501:25;;39562:41;;;39639:5;39633:11;;39501:25;;;;;39632:19;39625:26;;39446:529;39718:6;:14;;39728:4;39718:14;39714:261;;39763:3;39756:10;;;;;39714:261;39833:6;:14;;39843:4;39833:14;39829:146;;39878:2;39871:9;;;;;19199:782;19285:12;19372:18;;:::i;:::-;-1:-1:-1;19440:4:105;19547:2;19535:14;;;;19527:41;;;;;;;3158:2:257;19527:41:105;;;3140:21:257;3197:2;3177:18;;;3170:30;3236:16;3216:18;;;3209:44;3270:18;;19527:41:105;2956:338:257;19527:41:105;19664:14;;;;;;;:30;;;19682:12;19664:30;19660:102;;;19743:4;19714:5;:15;;;19730:9;19714:26;;;;;;;;;:::i;:::-;:33;;;;:26;;;;;;:33;19660:102;19817:12;;;;;19806:23;;;;:8;;;:23;19873:1;19858:16;;;19843:31;;;19951:13;:11;:13::i;4842:7728::-;4885:12;4971:18;;:::i;:::-;-1:-1:-1;5149:15:105;;:18;;;;5039:4;5309:18;;;;5353;;;;5397;;;;;5039:4;;5129:17;;;;5309:18;5353;5487;;;5501:4;5487:18;5483:6777;;5537:2;5566:4;5561:9;;:14;5557:144;;5677:4;5672:9;;5664:4;:18;5658:24;5557:144;5722:2;:7;;5728:1;5722:7;5718:161;;5758:10;;;;;5790:16;;;;;;;;5758:10;-1:-1:-1;5718:161:105;;;5858:2;5853:7;;5718:161;5507:386;5483:6777;;;5995:10;:18;;6009:4;5995:18;5991:6269;;1745:10;6033:14;;5991:6269;;;6131:10;:18;;6145:4;6131:18;6127:6133;;6174:1;6169:6;;6127:6133;;;6299:10;:18;;6313:4;6299:18;6295:5965;;6352:4;6337:12;;;:19;6374:26;;;:14;;;:26;6425:13;:11;:13::i;:::-;6418:20;;;;;;;;;4842:7728;:::o;6295:5965::-;6564:10;:18;;6578:4;6564:18;6560:5700;;6715:14;;;6711:2708;6560:5700;6711:2708;6885:22;;;;;6881:2538;;7010:10;7023:27;7031:2;7036:10;7031:15;7048:1;7023:7;:27::i;:::-;7134:17;;;;7010:40;;-1:-1:-1;7134:17:105;7112:19;7284:14;7303:1;7278:26;7274:131;;7346:36;7370:11;1277:21:106;1426:15;;;1467:8;1461:4;1454:22;1595:4;1582:18;;1602:19;1578:44;1624:11;1575:61;;1222:430;7346:36:105;7332:50;;7274:131;7491:20;;;;;7458:54;;;;;;;;3472:25:257;;;7458:54:105;3533:23:257;;;3513:18;;;3506:51;7427:11:105;;;;7458:19;:6;:19;;;;3445:18:257;;7458:54:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7426:86;;;;7739:1;7735:2;7731:10;7836:9;7833:1;7829:17;7918:6;7911:5;7908:17;7905:40;;;7938:5;7928:15;;7905:40;;8021:6;8017:2;8014:14;8011:34;;;8041:2;8031:12;;8011:34;8147:3;8142:1;8134:6;8130:14;8125:3;8121:24;8117:34;8110:41;;8247:3;8243:1;8231:9;8222:6;8219:1;8215:14;8211:30;8207:38;8203:48;8196:55;;8402:1;8398;8394;8382:9;8379:1;8375:17;8371:25;8367:33;8363:41;8529:1;8525;8521;8512:6;8500:9;8497:1;8493:17;8489:30;8485:38;8481:46;8477:54;8459:72;;8660:10;8656:15;8650:4;8646:26;8638:34;;8776:3;8768:4;8764:9;8759:3;8755:19;8752:28;8745:35;;;;8922:33;8931:2;8936:10;8931:15;8948:1;8951:3;8922:8;:33::i;:::-;8977:20;;;:38;;;;;;;;;-1:-1:-1;6881:2538:105;;-1:-1:-1;;;6881:2538:105;;9134:18;;;;;9130:289;;9304:2;9299:7;;6560:5700;;9130:289;9358:10;9353:15;;2053:3;9390:10;;9130:289;6560:5700;;;9548:10;:18;;9562:4;9548:18;9544:2716;;9702:15;;;1824:1;9702:15;;:34;;-1:-1:-1;9721:15:105;;;1859:1;9721:15;9702:34;:57;;;-1:-1:-1;9740:19:105;;;1936:1;9740:19;9702:57;9698:1593;;;9788:2;9783:7;;9544:2716;;9698:1593;9914:23;;;;;9910:1381;;9961:10;9974:27;9982:2;9987:10;9982:15;9999:1;9974:7;:27::i;:::-;10077:17;;;;9961:40;;-1:-1:-1;10320:1:105;10312:10;;10414:1;10410:17;10489:13;;;10486:32;;;10511:5;10505:11;;10486:32;10797:14;;;10603:1;10793:22;;;10789:32;;;;10686:26;10710:1;10595:10;;;10690:18;;;10686:26;10785:43;10591:20;;10893:12;11021:17;;;:23;11089:1;11066:20;;;:24;10599:2;-1:-1:-1;10599:2:105;6560:5700;;9544:2716;11493:10;:18;;11507:4;11493:18;11489:771;;11603:2;:7;;11609:1;11603:7;11599:647;;11696:14;;;;;:40;;-1:-1:-1;11714:22:105;;;1978:1;11714:22;11696:40;:62;;;-1:-1:-1;11740:18:105;;;1897:1;11740:18;11696:62;11692:404;;;11791:1;11786:6;;11599:647;;11692:404;11837:15;;;1824:1;11837:15;;:34;;-1:-1:-1;11856:15:105;;;1859:1;11856:15;11837:34;:61;;;-1:-1:-1;11875:23:105;;;2021:1;11875:23;11837:61;:84;;;-1:-1:-1;11902:19:105;;;1936:1;11902:19;11837:84;11833:263;;;11954:1;11949:6;;6560:5700;;11599:647;12147:10;12142:15;;2087:4;12179:11;;11599:647;12335:15;;;;;:23;;;;:18;;;;:23;;;;12372:15;;:23;;;:18;;;;:23;-1:-1:-1;12461:12:105;;;;12450:23;;;:8;;;:23;12517:1;12502:16;12487:31;;;;;12540:13;:11;:13::i;15323:2480::-;15417:12;15503:18;;:::i;:::-;-1:-1:-1;15571:4:105;15603:10;15711:13;;;15720:4;15711:13;15707:1705;;-1:-1:-1;15750:8:105;;;;15707:1705;;;15869:5;:13;;15878:4;15869:13;15865:1547;;15902:14;;;:8;;;:14;15865:1547;;;16032:5;:13;;16041:4;16032:13;16028:1384;;-1:-1:-1;16071:8:105;;;;16028:1384;;;16190:5;:13;;16199:4;16190:13;16186:1226;;16223:14;;;:8;;;:14;16186:1226;;;16364:5;:13;;16373:4;16364:13;16360:1052;;16491:9;16437:17;16417;;;16437;;;;16417:37;16498:2;16491:9;;;;;16473:8;;;:28;16519:22;:8;;;:22;16360:1052;;;16678:5;:13;;16687:4;16678:13;16674:738;;16745:11;16731;;;16745;;;16731:25;16800:2;16793:9;;;;;16775:8;;;:28;16821:22;:8;;;:22;16674:738;;;17002:5;:13;;17011:4;17002:13;16998:414;;17072:3;17053:23;;17059:3;17053:23;;;;;;;:::i;:::-;;17035:42;;:8;;;:42;17113:23;;;;;;;;;;;;;:::i;:::-;;17095:42;;:8;;;:42;16998:414;;;17306:5;:13;;17315:4;17306:13;17302:110;;17356:3;17350:9;;:3;:9;;;;;;;:::i;:::-;;17339:20;;;;:8;;;:20;17388:9;;;;;;;;;;;:::i;:::-;;17377:20;;:8;;;:20;17302:110;17505:14;;;;17501:85;;17568:3;17539:5;:15;;;17555:9;17539:26;;;;;;;;;:::i;:::-;:32;;;;:26;;;;;;:32;17501:85;17640:12;;;;;17629:23;;;;:8;;;:23;17696:1;17681:16;;;17666:31;;;17773:13;:11;:13::i;:::-;17766:20;15323:2480;-1:-1:-1;;;;;;;15323:2480:105:o;23152:1654::-;23328:14;23345:24;23357:11;23345;:24::i;:::-;23328:41;;23477:1;23470:5;23466:13;23463:33;;;23492:1;23489;23482:12;23463:33;23631:2;23825:15;;;23650:2;23639:14;;23627:10;23623:31;23620:1;23616:39;23781:16;;;23566:20;;23766:10;23755:22;;;23751:27;23741:38;23738:60;24267:5;24264:1;24260:13;24338:1;24323:343;24348:2;24345:1;24342:9;24323:343;;;24471:2;24459:15;;;24408:20;24506:12;;;24520:1;24502:20;24543:42;;;;24611:1;24606:42;;;;24495:153;;24543:42;21630:1;21623:12;;;21663:2;21656:13;;;21708:2;21695:16;;24552:31;;24543:42;;24606;21630:1;21623:12;;;21663:2;21656:13;;;21708:2;21695:16;;24615:31;;24495:153;-1:-1:-1;;24366:1:105;24359:9;24323:343;;;-1:-1:-1;;24765:4:105;24758:18;-1:-1:-1;;;;23152:1654:105:o;20185:586::-;20507:20;;;20531:7;20507:32;20500:3;:40;;;20613:14;;20668:17;;20662:24;;;20654:72;;;;;;;4209:2:257;20654:72:105;;;4191:21:257;4248:2;4228:18;;;4221:30;4287:34;4267:18;;;4260:62;4358:5;4338:18;;;4331:33;4381:19;;20654:72:105;4007:399:257;20654:72:105;20740:14;20185:586;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;467:347:257:-;518:8;528:6;582:3;575:4;567:6;563:17;559:27;549:55;;600:1;597;590:12;549:55;-1:-1:-1;623:20:257;;666:18;655:30;;652:50;;;698:1;695;688:12;652:50;735:4;727:6;723:17;711:29;;787:3;780:4;771:6;763;759:19;755:30;752:39;749:59;;;804:1;801;794:12;749:59;467:347;;;;;:::o;819:717::-;909:6;917;925;933;986:2;974:9;965:7;961:23;957:32;954:52;;;1002:1;999;992:12;954:52;1042:9;1029:23;1071:18;1112:2;1104:6;1101:14;1098:34;;;1128:1;1125;1118:12;1098:34;1167:58;1217:7;1208:6;1197:9;1193:22;1167:58;:::i;:::-;1244:8;;-1:-1:-1;1141:84:257;-1:-1:-1;1332:2:257;1317:18;;1304:32;;-1:-1:-1;1348:16:257;;;1345:36;;;1377:1;1374;1367:12;1345:36;;1416:60;1468:7;1457:8;1446:9;1442:24;1416:60;:::i;:::-;819:717;;;;-1:-1:-1;1495:8:257;-1:-1:-1;;;;819:717:257:o;1723:184::-;1775:77;1772:1;1765:88;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;3568:245;3647:6;3655;3708:2;3696:9;3687:7;3683:23;3679:32;3676:52;;;3724:1;3721;3714:12;3676:52;-1:-1:-1;;3747:16:257;;3803:2;3788:18;;;3782:25;3747:16;;3782:25;;-1:-1:-1;3568:245:257:o;3818:184::-;3870:77;3867:1;3860:88;3967:4;3964:1;3957:15;3991:4;3988:1;3981:15"
var MIPSDeployedSourceMap = "1131:39657:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:45;;1745:10;1710:45;;;;;188:10:257;176:23;;;158:42;;146:2;131:18;1710:45:105;;;;;;;;2448:99;;;412:42:257;2534:6:105;400:55:257;382:74;;370:2;355:18;2448:99:105;211:251:257;25668:6339:105;;;;;;:::i;:::-;;:::i;:::-;;;1687:25:257;;;1675:2;1660:18;25668:6339:105;1541:177:257;25668:6339:105;25746:7;25789:18;;:::i;:::-;25936:4;25929:5;25926:15;25916:134;;26030:1;26027;26020:12;25916:134;26086:4;26080:11;26093;26077:28;26067:137;;26184:1;26181;26174:12;26067:137;26252:3;26234:16;26231:25;26221:150;;26351:1;26348;26341:12;26221:150;26415:3;26401:12;26398:21;26388:145;;26513:1;26510;26503:12;26388:145;26793:24;;27137:4;26839:20;27195:2;26897:21;;26793:24;26955:18;26839:20;26897:21;;;26793:24;26770:21;26766:52;;;26955:18;26839:20;;;26897:21;;;26793:24;26766:52;;26839:20;;26897:21;;;26793:24;26766:52;;26955:18;26839:20;26897:21;;;26793:24;26766:52;;26955:18;26839:20;26897:21;;;26793:24;26766:52;;26955:18;26839:20;26897:21;;;26793:24;26766:52;;;26955:18;26839:20;26897:21;;;26793:24;26770:21;26766:52;;;26955:18;26839:20;26897:21;;;26793:24;26766:52;;26955:18;26839:20;26897:21;;;26793:24;26766:52;;26955:18;26839:20;27813:10;26955:18;27803:21;;;26897;;;;27911:1;27896:77;27921:2;27918:1;27915:9;27896:77;;;26793:24;;26770:21;26766:52;26839:20;;27969:1;26897:21;;;;26781:2;26955:18;;;;27939:1;27932:9;27896:77;;;27900:14;;;28051:5;:12;;;28047:71;;;28090:13;:11;:13::i;:::-;28083:20;;;;;28047:71;28132:10;;;:15;;28146:1;28132:15;;;;;28217:8;;;;-1:-1:-1;;28209:20:105;;-1:-1:-1;28209:7:105;:20::i;:::-;28195:34;-1:-1:-1;28259:10:105;28267:2;28259:10;;;;28336:1;28326:11;;;:26;;;28341:6;:11;;28351:1;28341:11;28326:26;28322:310;;;28482:13;28551:1;28529:4;28536:10;28529:17;28528:24;;;;28499:5;:12;;;28514:10;28499:25;28498:54;28482:70;;28577:40;28588:6;:11;;28598:1;28588:11;:20;;28606:2;28588:20;;;28602:1;28588:20;28577:40;;28610:6;28577:10;:40::i;:::-;28570:47;;;;;;;;28322:310;28881:15;;;;28676:9;;;;28813:4;28807:2;28799:10;;;28798:19;;;28881:15;28906:2;28898:10;;;28897:19;28881:36;;;;;;;:::i;:::-;;;;;;-1:-1:-1;28946:5:105;28970:11;;;;;:29;;;28985:6;:14;;28995:4;28985:14;28970:29;28966:832;;;29062:5;:15;;;29078:5;29062:22;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;29125:4:105;29119:2;29111:10;;;29110:19;28966:832;;;29163:4;29154:6;:13;;;29150:648;;;29284:6;:13;;29294:3;29284:13;:30;;;;29301:6;:13;;29311:3;29301:13;29284:30;:47;;;;29318:6;:13;;29328:3;29318:13;29284:47;29280:253;;;29394:4;29401:6;29394:13;29389:18;;29150:648;;29280:253;29493:21;29496:4;29503:6;29496:13;29511:2;29493;:21::i;:::-;29488:26;;29150:648;;;29567:4;29557:6;:14;;;;:32;;;;29575:6;:14;;29585:4;29575:14;29557:32;:50;;;;29593:6;:14;;29603:4;29593:14;29557:50;29553:245;;;29677:5;:15;;;29693:5;29677:22;;;;;;;;;:::i;:::-;;;;;29672:27;;29778:5;29770:13;;29553:245;29827:1;29817:6;:11;;;;:25;;;;;29841:1;29832:6;:10;;;29817:25;29816:42;;;;29847:6;:11;;29857:1;29847:11;29816:42;29812:125;;;29885:37;29898:6;29906:4;29912:5;29919:2;29885:12;:37::i;:::-;29878:44;;;;;;;;;;;29812:125;29970:13;29951:16;30122:4;30112:14;;;;30108:446;;30191:21;30194:4;30201:6;30194:13;30209:2;30191;:21::i;:::-;30185:27;;;;30249:10;30244:15;;30283:16;30244:15;30297:1;30283:7;:16::i;:::-;30277:22;;30331:4;30321:6;:14;;;;:32;;;;;30339:6;:14;;30349:4;30339:14;;30321:32;30317:223;;;30418:4;30406:16;;30520:1;30512:9;;30317:223;30128:426;30108:446;30587:10;30600:26;30608:4;30614:2;30618;30622:3;30600:7;:26::i;:::-;30629:10;30600:39;;;;-1:-1:-1;30725:4:105;30718:11;;;30757;;;:24;;;;;30780:1;30772:4;:9;;;;30757:24;:39;;;;;30792:4;30785;:11;;;30757:39;30753:847;;;30820:4;:9;;30828:1;30820:9;:22;;;;30833:4;:9;;30841:1;30833:9;30820:22;30816:144;;;30904:37;30915:4;:9;;30923:1;30915:9;:21;;30931:5;30915:21;;;30927:1;30915:21;30938:2;30904:10;:37::i;:::-;30897:44;;;;;;;;;;;;;;;30816:144;30982:4;:11;;30990:3;30982:11;30978:121;;31052:28;31061:5;31068:2;31072:7;;;;31052:8;:28::i;30978:121::-;31120:4;:11;;31128:3;31120:11;31116:121;;31190:28;31199:5;31206:2;31210:7;;;;;31190:8;:28::i;31116:121::-;31307:4;:11;;31315:3;31307:11;31303:80;;31349:15;:13;:15::i;31303:80::-;31486:4;31478;:12;;;;:27;;;;;31501:4;31494;:11;;;31478:27;31474:112;;;31536:31;31547:4;31553:2;31557;31561:5;31536:10;:31::i;31474:112::-;31660:6;:14;;31670:4;31660:14;:28;;;;-1:-1:-1;31678:10:105;;;;;31660:28;31656:93;;;31733:1;31708:5;:15;;;31724:5;31708:22;;;;;;;;;:::i;:::-;:26;;;;:22;;;;;;:26;31656:93;31795:9;:26;;31808:13;31795:26;31791:92;;31841:27;31850:9;31861:1;31864:3;31841:8;:27::i;:::-;31964:26;31973:5;31980:3;31985:4;31964:8;:26::i;:::-;31957:33;;;;;;;;;;;;;25668:6339;;;;;;;:::o;3092:2447::-;3639:4;3633:11;;3555:4;3358:31;3347:43;;3418:13;3358:31;3757:2;3457:13;;3347:43;3364:24;3358:31;3457:13;;;3347:43;;;;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3418:13;4194:11;3364:24;3358:31;3457:13;;;3347:43;3418:13;4299:11;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3133:12;;4440:13;;3633:11;;3457:13;;;;4189:3;4185:21;;;;4290;;3133:12;4520:84;4545:2;4542:1;4539:9;4520:84;;;3374:13;3364:24;;3358:31;3347:43;;3378:2;3418:13;;;;4600:1;3457:13;;;;4563:1;4556:9;4520:84;;;4524:14;4667:1;4663:2;4656:13;4762:5;4758:2;4754:14;4747:5;4742:27;4783:500;;;4824:7;4857;4886:1;4881:309;;;;5266:1;5255:12;;4850:419;;4881:309;4917:9;4984:23;;;;5072:1;5067:23;;;;5169:1;5158:12;;4910:262;;4984:23;5004:1;4993:12;;4984:23;;5067;5087:1;5076:12;;4910:262;;4850:419;;4783:500;;;;:::o;:::-;5310:26;5327:8;5319:6;5310:26;:::i;:::-;5435:14;;;;5418:32;;;5496:19;5492:30;5504:3;5474:16;;;;5471:52;;;;;;-1:-1:-1;;;;3092:2447:105:o;21723:1831::-;21796:11;21907:14;21924:24;21936:11;21924;:24::i;:::-;21907:41;;22056:1;22049:5;22045:13;22042:33;;;22071:1;22068;22061:12;22042:33;22204:2;22192:15;;;22145:20;22634:5;22631:1;22627:13;22669:4;22705:1;22690:343;22715:2;22712:1;22709:9;22690:343;;;22838:2;22826:15;;;22775:20;22873:12;;;22887:1;22869:20;22910:42;;;;22978:1;22973:42;;;;22862:153;;22910:42;22368:1;22361:12;;;22401:2;22394:13;;;22446:2;22433:16;;22919:31;;22910:42;;22973;22368:1;22361:12;;;22401:2;22394:13;;;22446:2;22433:16;;22982:31;;22862:153;-1:-1:-1;;22733:1:105;22726:9;22690:343;;;22694:14;23143:4;23137:11;23122:26;;23229:7;23223:4;23220:17;23210:124;;23271:10;23268:1;23261:21;23313:2;23310:1;23303:13;23210:124;-1:-1:-1;;23461:2:105;23450:14;;;;23438:10;23434:31;23431:1;23427:39;23495:16;;;;23513:10;23491:33;;21723:1831;-1:-1:-1;;;21723:1831:105:o;18833:823::-;18902:12;18989:18;;:::i;:::-;19057:4;19048:13;;19109:5;:8;;;19120:1;19109:12;19093:28;;:5;:12;;;:28;;;19089:95;;19141:28;;;;;2114:2:257;19141:28:105;;;2096:21:257;2153:2;2133:18;;;2126:30;2192:20;2172:18;;;2165:48;2230:18;;19141:28:105;;;;;;;;19089:95;19273:8;;;;;19306:12;;;;;19295:23;;;;;;;19332:20;;;;;19273:8;19464:13;;;19460:90;;19525:6;19534:1;19525:10;19497:5;:15;;;19513:8;19497:25;;;;;;;;;:::i;:::-;:38;;;;:25;;;;;;:38;19460:90;19626:13;:11;:13::i;:::-;19619:20;18833:823;-1:-1:-1;;;;;18833:823:105:o;2645:339::-;2706:11;2770:18;;;;2779:8;;;;2770:18;;;;;;2769:25;;;;;2786:1;2833:2;:9;;;2827:16;;;;;2826:22;;2825:32;;;;;;;2887:9;;2886:15;2769:25;2944:21;;2964:1;2944:21;;;2955:6;2944:21;2929:11;;;;;:37;;-1:-1:-1;;;2645:339:105;;;;:::o;13694:2026::-;13791:12;13877:18;;:::i;:::-;13945:4;13936:13;;13977:17;14037:5;:8;;;14048:1;14037:12;14021:28;;:5;:12;;;:28;;;14017:97;;14069:30;;;;;2461:2:257;14069:30:105;;;2443:21:257;2500:2;2480:18;;;2473:30;2539:22;2519:18;;;2512:50;2579:18;;14069:30:105;2259:344:257;14017:97:105;14184:7;:12;;14195:1;14184:12;:28;;;;14200:7;:12;;14211:1;14200:12;14184:28;14180:947;;;14232:9;14244:5;:15;;;14260:6;14244:23;;;;;;;;;:::i;:::-;;;;;14232:35;;14308:2;14301:9;;:3;:9;;;:25;;;;;14314:7;:12;;14325:1;14314:12;14301:25;14300:58;;;;14339:2;14332:9;;:3;:9;;;;:25;;;;;14345:7;:12;;14356:1;14345:12;14332:25;14285:73;;14214:159;14180:947;;;14470:7;:12;;14481:1;14470:12;14466:661;;14531:1;14523:3;14517:15;;;;14502:30;;14466:661;;;14635:7;:12;;14646:1;14635:12;14631:496;;14695:1;14688:3;14682:14;;;14667:29;;14631:496;;;14816:7;:12;;14827:1;14816:12;14812:315;;14904:4;14898:2;14889:11;;;14888:20;14874:10;14931:8;;;14927:84;;14991:1;14984:3;14978:14;;;14963:29;;14927:84;15032:3;:8;;15039:1;15032:8;15028:85;;15093:1;15085:3;15079:15;;;;15064:30;;15028:85;14830:297;14812:315;15203:8;;;;;15281:12;;;;15270:23;;;;;15437:178;;;;15528:1;15502:22;15505:5;15513:6;15505:14;15521:2;15502;:22::i;:::-;:27;;;;;;;15488:42;;15497:1;15488:42;15473:57;:12;;;:57;15437:178;;;15584:12;;;;;15599:1;15584:16;15569:31;;;;15437:178;15690:13;:11;:13::i;:::-;15683:20;13694:2026;-1:-1:-1;;;;;;;;13694:2026:105:o;32053:8733::-;32140:10;32202;32210:2;32202:10;;;;32241:11;;;:44;;;32267:1;32257:6;:11;;;;:27;;;;;32281:3;32272:6;:12;;;32257:27;32237:8490;;;32326:4;32319:11;;32450:6;32510:3;32505:25;;;;32585:3;32580:25;;;;32659:3;32654:25;;;;32734:3;32729:25;;;;32808:3;32803:25;;;;32881:3;32876:25;;;;32955:3;32950:25;;;;32443:532;;32505:25;32524:4;32516:12;;32505:25;;32580;32599:4;32591:12;;32580:25;;32654;32673:4;32665:12;;32654:25;;32729;32748:4;32740:12;;32729:25;;32803;32822:4;32814:12;;32803:25;;32876;32895:4;32887:12;;32876:25;;32950;32969:4;32961:12;;32443:532;;33038:4;:12;;33046:4;33038:12;33034:4023;;-1:-1:-1;;;33089:9:105;33081:26;;33102:4;33097:1;33089:9;;;33088:18;33081:26;33074:33;;33034:4023;33175:4;:12;;33183:4;33175:12;33171:3886;;-1:-1:-1;;;33226:9:105;33218:26;;33239:4;33234:1;33226:9;;;33225:18;33218:26;33211:33;;33171:3886;33312:4;:12;;33320:4;33312:12;33308:3749;;33377:4;33372:1;33364:9;;;33363:18;33410:27;33364:9;33413:11;;;;33426:2;:10;;;33410:2;:27::i;:::-;33403:34;;;;;;;33308:3749;33506:4;:12;;33514:4;33506:12;33502:3555;;-1:-1:-1;;;33549:17:105;;;33561:4;33556:9;;33549:17;33542:24;;33502:3555;33635:4;:11;;33643:3;33635:11;33631:3426;;-1:-1:-1;;;33677:17:105;;;33689:4;33684:9;;33677:17;33670:24;;33631:3426;33763:4;:12;;33771:4;33763:12;33759:3298;;33806:21;33815:2;33809:8;;:2;:8;;;;33824:2;33819;:7;33806:2;:21::i;:::-;33799:28;;;;;;33759:3298;34076:4;:12;;34084:4;34076:12;34072:2985;;34119:2;34112:9;;;;;;34072:2985;34190:4;:12;;34198:4;34190:12;34186:2871;;34233:2;34226:9;;;;;;34186:2871;34304:4;:12;;34312:4;34304:12;34300:2757;;34347:2;34340:9;;;;;;34300:2757;34418:4;:12;;34426:4;34418:12;34414:2643;;34461:2;34454:9;;;;;;34414:2643;34535:4;:12;;34543:4;34535:12;34531:2526;;34578:2;34571:9;;;;;;34531:2526;34695:4;:12;;34703:4;34695:12;34691:2366;;34738:2;34731:9;;;;;;34691:2366;34809:4;:12;;34817:4;34809:12;34805:2252;;34852:2;34845:9;;;;;;34805:2252;34923:4;:12;;34931:4;34923:12;34919:2138;;34966:2;34959:9;;;;;;34919:2138;35037:4;:12;;35045:4;35037:12;35033:2024;;35080:2;35073:9;;;;;;35033:2024;35151:4;:12;;35159:4;35151:12;35147:1910;;35194:2;35187:9;;;;;;35147:1910;35265:4;:12;;35273:4;35265:12;35261:1796;;35308:2;35301:9;;;;;;35261:1796;35380:4;:12;;35388:4;35380:12;35376:1681;;35423:2;35416:9;;;;;;35376:1681;35493:4;:12;;35501:4;35493:12;35489:1568;;35536:2;35529:9;;;;;;35489:1568;35607:4;:12;;35615:4;35607:12;35603:1454;;35650:2;35643:9;;;;;;35603:1454;35799:4;:12;;35807:4;35799:12;35795:1262;;-1:-1:-1;;;35843:7:105;;;35835:16;;35795:1262;35920:4;:12;;35928:4;35920:12;35916:1141;;-1:-1:-1;;;35964:7:105;;;35956:16;;35916:1141;36040:4;:12;;36048:4;36040:12;36036:1021;;-1:-1:-1;;;36084:7:105;;;36076:16;;36036:1021;36161:4;:12;;36169:4;36161:12;36157:900;;-1:-1:-1;;;36205:7:105;;;36197:16;;36157:900;36281:4;:12;;36289:4;36281:12;36277:780;;-1:-1:-1;;;36325:7:105;;;36317:16;;36277:780;36400:4;:12;;36408:4;36400:12;36396:661;;-1:-1:-1;;;36444:7:105;;;36436:16;;36396:661;36520:4;:12;;36528:4;36520:12;36516:541;;-1:-1:-1;;;36564:7:105;;;36556:16;;36516:541;36640:4;:12;;36648:4;36640:12;36636:421;;-1:-1:-1;;;36685:7:105;;;36683:10;36676:17;;36636:421;36762:4;:12;;36770:4;36762:12;36758:299;;36823:2;36805:21;;36811:2;36805:21;;;:29;;36833:1;36805:29;;;36829:1;36805:29;36798:36;;;;;;;;36758:299;36904:4;:12;;36912:4;36904:12;36900:157;;36952:2;36947:7;;:2;:7;;;:15;;36961:1;36947:15;;36900:157;37009:29;;;;;2810:2:257;37009:29:105;;;2792:21:257;2849:2;2829:18;;;2822:30;2888:21;2868:18;;;2861:49;2927:18;;37009:29:105;2608:343:257;36900:157:105;32287:4784;32237:8490;;;37127:6;:14;;37137:4;37127:14;37123:3590;;37186:4;37179:11;;37261:3;37253:11;;;37249:549;;-1:-1:-1;;;37306:21:105;;;37292:36;;37249:549;37413:4;:12;;37421:4;37413:12;:28;;;;37429:4;:12;;37437:4;37429:12;37413:28;37409:389;;;37473:4;:12;;37481:4;37473:12;37469:83;;37522:3;;;37469:83;37577:8;37615:127;37627:10;37622:15;;:20;37615:127;;37707:8;37674:3;37707:8;;;;;37674:3;37615:127;;;37774:1;-1:-1:-1;37767:8:105;;-1:-1:-1;;37767:8:105;37123:3590;37865:6;:14;;37875:4;37865:14;37861:2852;;-1:-1:-1;;37910:8:105;37916:2;37910:8;;;;37903:15;;37861:2852;37985:6;:14;;37995:4;37985:14;37981:2732;;38030:42;38048:2;38053:1;38048:6;38058:1;38047:12;38042:2;:17;38034:26;;:3;:26;;;;38064:4;38033:35;38070:1;38030:2;:42::i;37981:2732::-;38139:6;:14;;38149:4;38139:14;38135:2578;;38184:45;38202:2;38207:1;38202:6;38212:1;38201:12;38196:2;:17;38188:26;;:3;:26;;;;38218:6;38187:37;38226:2;38184;:45::i;38135:2578::-;38297:6;:14;;38307:4;38297:14;38293:2420;;-1:-1:-1;;38348:21:105;38367:1;38362;38357:6;;38356:12;38348:21;;38405:36;;;38476:5;38471:10;;38348:21;;;;;38470:18;38463:25;;38293:2420;38555:6;:14;;38565:4;38555:14;38551:2162;;38600:3;38593:10;;;;;38551:2162;38671:6;:14;;38681:4;38671:14;38667:2046;;38731:2;38736:1;38731:6;38741:1;38730:12;38725:2;:17;38717:26;;:3;:26;;;;38747:4;38716:35;38709:42;;;;;38667:2046;38820:6;:14;;38830:4;38820:14;38816:1897;;38880:2;38885:1;38880:6;38890:1;38879:12;38874:2;:17;38866:26;;:3;:26;;;;38896:6;38865:37;38858:44;;;;;38816:1897;38971:6;:14;;38981:4;38971:14;38967:1746;;-1:-1:-1;;39022:26:105;39046:1;39041;39036:6;;39035:12;39030:2;:17;39022:26;;39084:41;;;39160:5;39155:10;;39022:26;;;;;39154:18;39147:25;;38967:1746;39240:6;:14;;39250:4;39240:14;39236:1477;;-1:-1:-1;;39297:4:105;39291:34;39323:1;39318;39313:6;;39312:12;39307:2;:17;39291:34;;39381:27;;;39361:48;;;39439:10;;39292:9;;;39291:34;;39438:18;39431:25;;39236:1477;39524:6;:14;;39534:4;39524:14;39520:1193;;-1:-1:-1;;39581:6:105;39575:36;39609:1;39604;39599:6;;39598:12;39593:2;:17;39575:36;;39667:29;;;39647:50;;;39727:10;;39576:11;;;39575:36;;39726:18;39719:25;;39520:1193;39813:6;:14;;39823:4;39813:14;39809:904;;-1:-1:-1;;39864:20:105;39882:1;39877;39872:6;;39871:12;39864:20;;39920:36;;;39992:5;39986:11;;39864:20;;;;;39985:19;39978:26;;39809:904;40072:6;:14;;40082:4;40072:14;40068:645;;40117:2;40110:9;;;;;40068:645;40188:6;:14;;40198:4;40188:14;40184:529;;-1:-1:-1;;40239:25:105;40262:1;40257;40252:6;;40251:12;40246:2;:17;40239:25;;40300:41;;;40377:5;40371:11;;40239:25;;;;;40370:19;40363:26;;40184:529;40456:6;:14;;40466:4;40456:14;40452:261;;40501:3;40494:10;;;;;40452:261;40571:6;:14;;40581:4;40571:14;40567:146;;40616:2;40609:9;;;;;19937:782;20023:12;20110:18;;:::i;:::-;-1:-1:-1;20178:4:105;20285:2;20273:14;;;;20265:41;;;;;;;3158:2:257;20265:41:105;;;3140:21:257;3197:2;3177:18;;;3170:30;3236:16;3216:18;;;3209:44;3270:18;;20265:41:105;2956:338:257;20265:41:105;20402:14;;;;;;;:30;;;20420:12;20402:30;20398:102;;;20481:4;20452:5;:15;;;20468:9;20452:26;;;;;;;;;:::i;:::-;:33;;;;:26;;;;;;:33;20398:102;20555:12;;;;;20544:23;;;;:8;;;:23;20611:1;20596:16;;;20581:31;;;20689:13;:11;:13::i;5580:7728::-;5623:12;5709:18;;:::i;:::-;-1:-1:-1;5887:15:105;;:18;;;;5777:4;6047:18;;;;6091;;;;6135;;;;;5777:4;;5867:17;;;;6047:18;6091;6225;;;6239:4;6225:18;6221:6777;;6275:2;6304:4;6299:9;;:14;6295:144;;6415:4;6410:9;;6402:4;:18;6396:24;6295:144;6460:2;:7;;6466:1;6460:7;6456:161;;6496:10;;;;;6528:16;;;;;;;;6496:10;-1:-1:-1;6456:161:105;;;6596:2;6591:7;;6456:161;6245:386;6221:6777;;;6733:10;:18;;6747:4;6733:18;6729:6269;;1745:10;6771:14;;6729:6269;;;6869:10;:18;;6883:4;6869:18;6865:6133;;6912:1;6907:6;;6865:6133;;;7037:10;:18;;7051:4;7037:18;7033:5965;;7090:4;7075:12;;;:19;7112:26;;;:14;;;:26;7163:13;:11;:13::i;:::-;7156:20;;;;;;;;;5580:7728;:::o;7033:5965::-;7302:10;:18;;7316:4;7302:18;7298:5700;;7453:14;;;7449:2708;7298:5700;7449:2708;7623:22;;;;;7619:2538;;7748:10;7761:27;7769:2;7774:10;7769:15;7786:1;7761:7;:27::i;:::-;7872:17;;;;7748:40;;-1:-1:-1;7872:17:105;7850:19;8022:14;8041:1;8016:26;8012:131;;8084:36;8108:11;1277:21:106;1426:15;;;1467:8;1461:4;1454:22;1595:4;1582:18;;1602:19;1578:44;1624:11;1575:61;;1222:430;8084:36:105;8070:50;;8012:131;8229:20;;;;;8196:54;;;;;;;;3472:25:257;;;8196:54:105;3533:23:257;;;3513:18;;;3506:51;8165:11:105;;;;8196:19;:6;:19;;;;3445:18:257;;8196:54:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8164:86;;;;8477:1;8473:2;8469:10;8574:9;8571:1;8567:17;8656:6;8649:5;8646:17;8643:40;;;8676:5;8666:15;;8643:40;;8759:6;8755:2;8752:14;8749:34;;;8779:2;8769:12;;8749:34;8885:3;8880:1;8872:6;8868:14;8863:3;8859:24;8855:34;8848:41;;8985:3;8981:1;8969:9;8960:6;8957:1;8953:14;8949:30;8945:38;8941:48;8934:55;;9140:1;9136;9132;9120:9;9117:1;9113:17;9109:25;9105:33;9101:41;9267:1;9263;9259;9250:6;9238:9;9235:1;9231:17;9227:30;9223:38;9219:46;9215:54;9197:72;;9398:10;9394:15;9388:4;9384:26;9376:34;;9514:3;9506:4;9502:9;9497:3;9493:19;9490:28;9483:35;;;;9660:33;9669:2;9674:10;9669:15;9686:1;9689:3;9660:8;:33::i;:::-;9715:20;;;:38;;;;;;;;;-1:-1:-1;7619:2538:105;;-1:-1:-1;;;7619:2538:105;;9872:18;;;;;9868:289;;10042:2;10037:7;;7298:5700;;9868:289;10096:10;10091:15;;2053:3;10128:10;;9868:289;7298:5700;;;10286:10;:18;;10300:4;10286:18;10282:2716;;10440:15;;;1824:1;10440:15;;:34;;-1:-1:-1;10459:15:105;;;1859:1;10459:15;10440:34;:57;;;-1:-1:-1;10478:19:105;;;1936:1;10478:19;10440:57;10436:1593;;;10526:2;10521:7;;10282:2716;;10436:1593;10652:23;;;;;10648:1381;;10699:10;10712:27;10720:2;10725:10;10720:15;10737:1;10712:7;:27::i;:::-;10815:17;;;;10699:40;;-1:-1:-1;11058:1:105;11050:10;;11152:1;11148:17;11227:13;;;11224:32;;;11249:5;11243:11;;11224:32;11535:14;;;11341:1;11531:22;;;11527:32;;;;11424:26;11448:1;11333:10;;;11428:18;;;11424:26;11523:43;11329:20;;11631:12;11759:17;;;:23;11827:1;11804:20;;;:24;11337:2;-1:-1:-1;11337:2:105;7298:5700;;10282:2716;12231:10;:18;;12245:4;12231:18;12227:771;;12341:2;:7;;12347:1;12341:7;12337:647;;12434:14;;;;;:40;;-1:-1:-1;12452:22:105;;;1978:1;12452:22;12434:40;:62;;;-1:-1:-1;12478:18:105;;;1897:1;12478:18;12434:62;12430:404;;;12529:1;12524:6;;12337:647;;12430:404;12575:15;;;1824:1;12575:15;;:34;;-1:-1:-1;12594:15:105;;;1859:1;12594:15;12575:34;:61;;;-1:-1:-1;12613:23:105;;;2021:1;12613:23;12575:61;:84;;;-1:-1:-1;12640:19:105;;;1936:1;12640:19;12575:84;12571:263;;;12692:1;12687:6;;7298:5700;;12337:647;12885:10;12880:15;;2087:4;12917:11;;12337:647;13073:15;;;;;:23;;;;:18;;;;:23;;;;13110:15;;:23;;;:18;;;;:23;-1:-1:-1;13199:12:105;;;;13188:23;;;:8;;;:23;13255:1;13240:16;13225:31;;;;;13278:13;:11;:13::i;16061:2480::-;16155:12;16241:18;;:::i;:::-;-1:-1:-1;16309:4:105;16341:10;16449:13;;;16458:4;16449:13;16445:1705;;-1:-1:-1;16488:8:105;;;;16445:1705;;;16607:5;:13;;16616:4;16607:13;16603:1547;;16640:14;;;:8;;;:14;16603:1547;;;16770:5;:13;;16779:4;16770:13;16766:1384;;-1:-1:-1;16809:8:105;;;;16766:1384;;;16928:5;:13;;16937:4;16928:13;16924:1226;;16961:14;;;:8;;;:14;16924:1226;;;17102:5;:13;;17111:4;17102:13;17098:1052;;17229:9;17175:17;17155;;;17175;;;;17155:37;17236:2;17229:9;;;;;17211:8;;;:28;17257:22;:8;;;:22;17098:1052;;;17416:5;:13;;17425:4;17416:13;17412:738;;17483:11;17469;;;17483;;;17469:25;17538:2;17531:9;;;;;17513:8;;;:28;17559:22;:8;;;:22;17412:738;;;17740:5;:13;;17749:4;17740:13;17736:414;;17810:3;17791:23;;17797:3;17791:23;;;;;;;:::i;:::-;;17773:42;;:8;;;:42;17851:23;;;;;;;;;;;;;:::i;:::-;;17833:42;;:8;;;:42;17736:414;;;18044:5;:13;;18053:4;18044:13;18040:110;;18094:3;18088:9;;:3;:9;;;;;;;:::i;:::-;;18077:20;;;;:8;;;:20;18126:9;;;;;;;;;;;:::i;:::-;;18115:20;;:8;;;:20;18040:110;18243:14;;;;18239:85;;18306:3;18277:5;:15;;;18293:9;18277:26;;;;;;;;;:::i;:::-;:32;;;;:26;;;;;;:32;18239:85;18378:12;;;;;18367:23;;;;:8;;;:23;18434:1;18419:16;;;18404:31;;;18511:13;:11;:13::i;:::-;18504:20;16061:2480;-1:-1:-1;;;;;;;16061:2480:105:o;23890:1654::-;24066:14;24083:24;24095:11;24083;:24::i;:::-;24066:41;;24215:1;24208:5;24204:13;24201:33;;;24230:1;24227;24220:12;24201:33;24369:2;24563:15;;;24388:2;24377:14;;24365:10;24361:31;24358:1;24354:39;24519:16;;;24304:20;;24504:10;24493:22;;;24489:27;24479:38;24476:60;25005:5;25002:1;24998:13;25076:1;25061:343;25086:2;25083:1;25080:9;25061:343;;;25209:2;25197:15;;;25146:20;25244:12;;;25258:1;25240:20;25281:42;;;;25349:1;25344:42;;;;25233:153;;25281:42;22368:1;22361:12;;;22401:2;22394:13;;;22446:2;22433:16;;25290:31;;25281:42;;25344;22368:1;22361:12;;;22401:2;22394:13;;;22446:2;22433:16;;25353:31;;25233:153;-1:-1:-1;;25104:1:105;25097:9;25061:343;;;-1:-1:-1;;25503:4:105;25496:18;-1:-1:-1;;;;23890:1654:105:o;20923:586::-;21245:20;;;21269:7;21245:32;21238:3;:40;;;21351:14;;21406:17;;21400:24;;;21392:72;;;;;;;4209:2:257;21392:72:105;;;4191:21:257;4248:2;4228:18;;;4221:30;4287:34;4267:18;;;4260:62;4358:5;4338:18;;;4331:33;4381:19;;21392:72:105;4007:399:257;21392:72:105;21478:14;20923:586;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;467:347:257:-;518:8;528:6;582:3;575:4;567:6;563:17;559:27;549:55;;600:1;597;590:12;549:55;-1:-1:-1;623:20:257;;666:18;655:30;;652:50;;;698:1;695;688:12;652:50;735:4;727:6;723:17;711:29;;787:3;780:4;771:6;763;759:19;755:30;752:39;749:59;;;804:1;801;794:12;749:59;467:347;;;;;:::o;819:717::-;909:6;917;925;933;986:2;974:9;965:7;961:23;957:32;954:52;;;1002:1;999;992:12;954:52;1042:9;1029:23;1071:18;1112:2;1104:6;1101:14;1098:34;;;1128:1;1125;1118:12;1098:34;1167:58;1217:7;1208:6;1197:9;1193:22;1167:58;:::i;:::-;1244:8;;-1:-1:-1;1141:84:257;-1:-1:-1;1332:2:257;1317:18;;1304:32;;-1:-1:-1;1348:16:257;;;1345:36;;;1377:1;1374;1367:12;1345:36;;1416:60;1468:7;1457:8;1446:9;1442:24;1416:60;:::i;:::-;819:717;;;;-1:-1:-1;1495:8:257;-1:-1:-1;;;;819:717:257:o;1723:184::-;1775:77;1772:1;1765:88;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;3568:245;3647:6;3655;3708:2;3696:9;3687:7;3683:23;3679:32;3676:52;;;3724:1;3721;3714:12;3676:52;-1:-1:-1;;3747:16:257;;3803:2;3788:18;;;3782:25;3747:16;;3782:25;;-1:-1:-1;3568:245:257:o;3818:184::-;3870:77;3867:1;3860:88;3967:4;3964:1;3957:15;3991:4;3988:1;3981:15"
func init() {
if err := json.Unmarshal([]byte(MIPSStorageLayoutJSON), MIPSStorageLayout); err != nil {
......
......@@ -123,10 +123,15 @@ contract MIPS {
switch _exited
case 1 {
switch _exitCode
case 0 { status_ := 0 } // VMStatusValid
case 1 { status_ := 1 } // VMStatusInvalid
default { status_ := 2 } // VMStatusPanic
} default { status_ := 3 } // VMStatusUnfinished
// VMStatusValid
case 0 { status_ := 0 }
// VMStatusInvalid
case 1 { status_ := 1 }
// VMStatusPanic
default { status_ := 2 }
}
// VMStatusUnfinished
default { status_ := 3 }
}
let status := vmStatus(exited, exitCode)
......
......@@ -91,10 +91,6 @@ contract DisputeGameFactory is OwnableUpgradeable, IDisputeGameFactory, Semver {
// If there is no implementation to clone for the given `GameType`, revert.
if (address(impl) == address(0)) revert NoImplementation(_gameType);
// The VMStatus must indicate (1) 'invalid', to argue that disputed thing is invalid.
// Games that agree with the existing outcome are not allowed.
if (uint8(Claim.unwrap(_rootClaim)[0]) != 1) revert UnexpectedRootClaim(_rootClaim);
// Clone the implementation contract and initialize it with the given parameters.
proxy_ = IDisputeGame(address(impl).clone(abi.encodePacked(_rootClaim, _extraData)));
proxy_.initialize();
......
......@@ -437,6 +437,10 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// Implicit assumptions:
// - The `gameStatus` state variable defaults to 0, which is `GameStatus.IN_PROGRESS`
// The VMStatus must indicate (1) 'invalid', to argue that disputed thing is invalid.
// Games that agree with the existing outcome are not allowed.
if (uint8(Claim.unwrap(rootClaim())[0]) != 1) revert UnexpectedRootClaim(rootClaim());
// Set the game's starting timestamp
createdAt = Timestamp.wrap(uint64(block.timestamp));
......
......@@ -36,12 +36,6 @@ contract DisputeGameFactory_Init is L2OutputOracle_Initializer {
}
contract DisputeGameFactory_Create_Test is DisputeGameFactory_Init {
function changeClaimStatus(Claim claim, uint8 status) public pure returns (Claim _out) {
bytes32 hash = Claim.unwrap(claim);
hash = bytes32((uint256(hash) & (~(uint256(0xff) << 248))) | (uint256(status) << 248));
return Claim.wrap(hash);
}
/// @dev Tests that the `create` function succeeds when creating a new dispute game
/// with a `GameType` that has an implementation set.
function testFuzz_create_succeeds(uint8 gameType, Claim rootClaim, bytes calldata extraData) public {
......@@ -83,17 +77,6 @@ contract DisputeGameFactory_Create_Test is DisputeGameFactory_Init {
factory.create(gt, rootClaim, extraData);
}
/// @dev Tests that the `create` function reverts when the rootClaim does not disagree with the outcome.
function testFuzz_create_badRootStatus_reverts(uint8 gameType, Claim rootClaim, bytes calldata extraData) public {
// Ensure that the `gameType` is within the bounds of the `GameType` enum's possible values.
GameType gt = GameType.wrap(uint8(bound(gameType, 0, 2)));
// Ensure the root claim does not have the correct VM status
if (uint8(Claim.unwrap(rootClaim)[0]) == 1) rootClaim = changeClaimStatus(rootClaim, 0);
vm.expectRevert(abi.encodeWithSelector(UnexpectedRootClaim.selector, rootClaim));
factory.create(gt, rootClaim, extraData);
}
/// @dev Tests that the `create` function reverts when there exists a dispute game with the same UUID.
function testFuzz_create_sameUUID_reverts(uint8 gameType, Claim rootClaim, bytes calldata extraData) public {
// Ensure that the `gameType` is within the bounds of the `GameType` enum's possible values.
......@@ -122,6 +105,12 @@ contract DisputeGameFactory_Create_Test is DisputeGameFactory_Init {
);
factory.create(gt, rootClaim, extraData);
}
function changeClaimStatus(Claim claim, uint8 status) public pure returns (Claim _out) {
bytes32 hash = Claim.unwrap(claim);
hash = bytes32((uint256(hash) & (~(uint256(0xff) << 248))) | (uint256(status) << 248));
return Claim.wrap(hash);
}
}
contract DisputeGameFactory_SetImplementation_Test is DisputeGameFactory_Init {
......
......@@ -143,6 +143,16 @@ contract FaultDisputeGame_Test is FaultDisputeGame_Init {
factory.create(GAME_TYPE, ROOT_CLAIM, abi.encode(1800, block.number - 1));
}
/// @dev Tests that the `create` function reverts when the rootClaim does not disagree with the outcome.
function testFuzz_initialize_badRootStatus_reverts(Claim rootClaim, bytes calldata extraData) public {
// Ensure that the `gameType` is within the bounds of the `GameType` enum's possible values.
// Ensure the root claim does not have the correct VM status
if (uint8(Claim.unwrap(rootClaim)[0]) == 1) rootClaim = changeClaimStatus(rootClaim, 0);
vm.expectRevert(abi.encodeWithSelector(UnexpectedRootClaim.selector, rootClaim));
factory.create(GameTypes.FAULT, rootClaim, extraData);
}
/// @dev Tests that the game is initialized with the correct data.
function test_initialize_correctData_succeeds() public {
// Starting
......@@ -449,6 +459,12 @@ contract FaultDisputeGame_Test is FaultDisputeGame_Init {
bytes32 h = keccak256(abi.encode(_ident | (1 << 248), address(gameProxy)));
return bytes32((uint256(h) & ~uint256(0xFF << 248)) | (1 << 248));
}
function changeClaimStatus(Claim claim, uint8 status) public pure returns (Claim _out) {
bytes32 hash = Claim.unwrap(claim);
hash = bytes32((uint256(hash) & (~(uint256(0xff) << 248))) | (uint256(status) << 248));
return Claim.wrap(hash);
}
}
/// @notice A generic game player actor with a configurable trace.
......
......@@ -1553,10 +1553,31 @@ contract MIPS_Test is CommonTest {
);
}
/// @dev MIPS VM status codes:
/// 0. Exited with success (Valid)
/// 1. Exited with success (Invalid)
/// 2. Exited with failure (Panic)
/// 3. Unfinished
function vmStatus(MIPS.State memory state) internal pure returns (uint8 out_) {
if (state.exited) {
if (state.exitCode == 0) {
return 0;
} else if (state.exitCode == 1) {
return 1;
} else {
return 2;
}
} else {
return 3;
}
}
function outputState(MIPS.State memory state) internal pure returns (bytes32 out_) {
bytes memory enc = encodeState(state);
uint8 status = vmStatus(state);
assembly {
out_ := keccak256(add(enc, 0x20), 226)
out_ := or(and(not(shl(248, 0xFF)), out_), shl(248, status))
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment