Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
1888081c
Commit
1888081c
authored
Jul 20, 2023
by
clabby
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor
parent
557071f0
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
127 additions
and
231 deletions
+127
-231
disputegamefactory.go
op-bindings/bindings/disputegamefactory.go
+1
-1
disputegamefactory_more.go
op-bindings/bindings/disputegamefactory_more.go
+1
-1
faultdisputegame.go
op-bindings/bindings/faultdisputegame.go
+0
-31
mips.go
op-bindings/bindings/mips.go
+1
-1
mips_more.go
op-bindings/bindings/mips_more.go
+2
-2
preimageoracle.go
op-bindings/bindings/preimageoracle.go
+12
-43
MIPS.sol
packages/contracts-bedrock/src/cannon/MIPS.sol
+5
-12
PreimageKeyLib.sol
packages/contracts-bedrock/src/cannon/PreimageKeyLib.sol
+55
-0
PreimageOracle.sol
packages/contracts-bedrock/src/cannon/PreimageOracle.sol
+26
-113
DisputeGameFactory.sol
...ages/contracts-bedrock/src/dispute/DisputeGameFactory.sol
+1
-3
FaultDisputeGame.sol
packages/contracts-bedrock/src/dispute/FaultDisputeGame.sol
+4
-10
IBigStepper.sol
.../contracts-bedrock/src/dispute/interfaces/IBigStepper.sol
+11
-3
IDisputeGame.sol
...contracts-bedrock/src/dispute/interfaces/IDisputeGame.sol
+1
-6
PreimageOracle.t.sol
packages/contracts-bedrock/test/PreimageOracle.t.sol
+7
-5
No files found.
op-bindings/bindings/disputegamefactory.go
View file @
1888081c
...
...
@@ -31,7 +31,7 @@ var (
// DisputeGameFactoryMetaData contains all meta data concerning the DisputeGameFactory contract.
var
DisputeGameFactoryMetaData
=
&
bind
.
MetaData
{
ABI
:
"[{
\"
inputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
constructor
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
Hash
\"
,
\"
name
\"
:
\"
uuid
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
GameAlreadyExists
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
NoImplementation
\"
,
\"
type
\"
:
\"
error
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
disputeProxy
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType
\"
,
\"
type
\"
:
\"
uint8
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
rootClaim
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
name
\"
:
\"
DisputeGameCreated
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
impl
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
ImplementationSet
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:false,
\"
internalType
\"
:
\"
uint8
\"
,
\"
name
\"
:
\"
version
\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
Initialized
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
anonymous
\"
:false,
\"
inputs
\"
:[{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
previousOwner
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
indexed
\"
:true,
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
newOwner
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
OwnershipTransferred
\"
,
\"
type
\"
:
\"
event
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType
\"
,
\"
type
\"
:
\"
uint8
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
rootClaim
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
extraData
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
create
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIDisputeGame
\"
,
\"
name
\"
:
\"
proxy
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
_index
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
name
\"
:
\"
gameAtIndex
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIDisputeGame
\"
,
\"
name
\"
:
\"
proxy_
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
timestamp_
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
gameCount
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
gameCount_
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint8
\"
}],
\"
name
\"
:
\"
gameImpls
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIDisputeGame
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
_gameType
\"
,
\"
type
\"
:
\"
uint8
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
_rootClaim
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
_extraData
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
games
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIDisputeGame
\"
,
\"
name
\"
:
\"
proxy_
\"
,
\"
type
\"
:
\"
address
\"
},{
\"
internalType
\"
:
\"
uint256
\"
,
\"
name
\"
:
\"
timestamp_
\"
,
\"
type
\"
:
\"
uint256
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType
\"
,
\"
type
\"
:
\"
uint8
\"
},{
\"
internalType
\"
:
\"
Claim
\"
,
\"
name
\"
:
\"
rootClaim
\"
,
\"
type
\"
:
\"
bytes32
\"
},{
\"
internalType
\"
:
\"
bytes
\"
,
\"
name
\"
:
\"
extraData
\"
,
\"
type
\"
:
\"
bytes
\"
}],
\"
name
\"
:
\"
getGameUUID
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
Hash
\"
,
\"
name
\"
:
\"
_uuid
\"
,
\"
type
\"
:
\"
bytes32
\"
}],
\"
stateMutability
\"
:
\"
pure
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
_owner
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
initialize
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
owner
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
address
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
renounceOwnership
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
GameType
\"
,
\"
name
\"
:
\"
gameType
\"
,
\"
type
\"
:
\"
uint8
\"
},{
\"
internalType
\"
:
\"
contractIDisputeGame
\"
,
\"
name
\"
:
\"
impl
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
setImplementation
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[{
\"
internalType
\"
:
\"
address
\"
,
\"
name
\"
:
\"
newOwner
\"
,
\"
type
\"
:
\"
address
\"
}],
\"
name
\"
:
\"
transferOwnership
\"
,
\"
outputs
\"
:[],
\"
stateMutability
\"
:
\"
nonpayable
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
version
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
string
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
string
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
}]"
,
Bin
:
"0x60e06040523480156200001157600080fd5b506000608081905260a0819052600260c0526200002e9062000034565b620002a2565b600054610100900460ff1615808015620000555750600054600160ff909116105b8062000085575062000072306200017260201b620009
811760201c565b15801562000085575060005460ff166001145b620000ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000112576000805461ff0019166101001790555b6200011c62000181565b6200012782620001e9565b80156200016e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001dd5760405162461bcd60e51b815260206004820152602b6024820152600080516020620015b983398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b620001e76200023b565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16620002975760405162461bcd60e51b815260206004820152602b6024820152600080516020620015b983398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b620001e733620001e9565b60805160a05160c0516112e7620002d26000396000610608015260006105df015260006105b601526112e76000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063c4d66de81161005b578063c4d66de81461026d578063dfa162d314610280578063f2fde38b146102b657600080fd5b80638da5cb5b146101fd578063bb8aa1fc1461021b578063c49d52711461025a57600080fd5b80634d1975b4116100b25780634d1975b4146101d857806354fd4d50146101e0578063715018a6146101f557600080fd5b806326daafbe146100d95780633142e55e1461018b57806345583b7a146101c3575b600080fd5b6101786100e7366004610e85565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086018051988652968352606087529451609f0190941683209190925291905291905290565b6040519081526020015b60405180910390f35b61019e610199366004610f6e565b6102c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610182565b6101d66101d1366004611017565b610528565b005b606754610178565b6101e86105af565b604051610182919061107e565b6101d6610652565b60335473ffffffffffffffffffffffffffffffffffffffff1661019e565b61022e6102293660046110cf565b610666565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610182565b61022e610268366004610f6e565b6106b0565b6101d661027b3660046110e8565b61072e565b61019e61028e36600461110c565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101d66102c43660046110e8565b6108ca565b60ff841660009081526065602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610333576040517f44265d6f00000000000000000000000000000000000000000000000000000000815260ff871660048201526024015b60405180910390fd5b6040516103999061034e908790869088908290602001611127565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905273ffffffffffffffffffffffffffffffffffffffff83169061099d565b91508173ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b50505050600061043e878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b6000818152606660205260409020549091501561048a576040517f014f6fe50000000000000000000000000000000000000000000000000000000081526004810182905260240161032a565b60004260a01b8417600083815260666020526040808220839055606780546001810182559083527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae0183905551919250889160ff8b169173ffffffffffffffffffffffffffffffffffffffff8816917ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec9190a4505050949350505050565b610530610ad1565b60ff821660008181526065602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917f623713f72f6e427a8044bb8b3bd6834357cf285decbaa21bcc73c1d0632c4d8491a35050565b60606105da7f0000000000000000000000000000000000000000000000000000000000000000610b52565b6106037f0000000000000000000000000000000000000000000000000000000000000000610b52565b61062c7f0000000000000000000000000000000000000000000000000000000000000000610b52565b60405160200161063e93929190611148565b604051602081830303815290604052905090565b61065a610ad1565b6106646000610c8f565b565b60008060006067848154811061067e5761067e6111be565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff81169560a09190911c945092505050565b60008060006106f6878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b60009081526066602052604090205473ffffffffffffffffffffffffffffffffffffffff81169860a09190911c975095505050505050565b600054610100900460ff161580801561074e5750600054600160ff909116105b806107685750303b158015610768575060005460ff166001145b6107f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161032a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561085257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61085a610d06565b61086382610c8f565b80156108c657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6108d2610ad1565b73ffffffffffffffffffffffffffffffffffffffff8116610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161032a565b61097e81610c8f565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b60208410610a5557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101610a18565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f0945084610ac2577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032a565b606081600003610b9557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610bbf5780610ba98161121c565b9150610bb89050600a83611283565b9150610b99565b60008167ffffffffffffffff811115610bda57610bda610e56565b6040519080825280601f01601f191660200182016040528015610c04576020820181803683370190505b5090505b8415610c8757610c19600183611297565b9150610c26600a866112ae565b610c319060306112c2565b60f81b818381518110610c4657610c466111be565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610c80600a86611283565b9450610c08565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b610664600054610100900460ff16610e37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b61066433610c8f565b803560ff81168114610e5157600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610e9a57600080fd5b610ea384610e40565b925060208401359150604084013567ffffffffffffffff80821115610ec757600080fd5b818601915086601f830112610edb57600080fd5b813581811115610eed57610eed610e56565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610f3357610f33610e56565b81604052828152896020848701011115610f4c57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060008060608587031215610f8457600080fd5b610f8d85610e40565b935060208501359250604085013567ffffffffffffffff80821115610fb157600080fd5b818701915087601f830112610fc557600080fd5b813581811115610fd457600080fd5b886020828501011115610fe657600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461097e57600080fd5b6000806040838503121561102a57600080fd5b61103383610e40565b9150602083013561104381610ff5565b809150509250929050565b60005b83811015611069578181015183820152602001611051565b83811115611078576000848401525b50505050565b602081526000825180602084015261109d81604085016020870161104e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000602082840312156110e157600080fd5b5035919050565b6000602082840312156110fa57600080fd5b813561110581610ff5565b9392505050565b60006020828403121561111e57600080fd5b61110582610e40565b84815283602082015281836040830137600091016040019081529392505050565b6000845161115a81846020890161104e565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611196816001850160208a0161104e565b600192019182015283516111b181600284016020880161104e565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361124d5761124d6111ed565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261129257611292611254565b500490565b6000828210156112a9576112a96111ed565b500390565b6000826112bd576112bd611254565b500690565b600082198211156112d5576112d56111ed
565b50019056fea164736f6c634300080f000a496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069"
,
Bin
:
"0x60e06040523480156200001157600080fd5b506000608081905260a0819052600260c0526200002e9062000034565b620002a2565b600054610100900460ff1615808015620000555750600054600160ff909116105b8062000085575062000072306200017260201b620009
7e1760201c565b15801562000085575060005460ff166001145b620000ee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000112576000805461ff0019166101001790555b6200011c62000181565b6200012782620001e9565b80156200016e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001dd5760405162461bcd60e51b815260206004820152602b6024820152600080516020620015af83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b620001e76200023b565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16620002975760405162461bcd60e51b815260206004820152602b6024820152600080516020620015af83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000e5565b620001e733620001e9565b60805160a05160c0516112dd620002d26000396000610605015260006105dc015260006105b301526112dd6000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063c4d66de81161005b578063c4d66de81461026d578063dfa162d314610280578063f2fde38b146102b657600080fd5b80638da5cb5b146101fd578063bb8aa1fc1461021b578063c49d52711461025a57600080fd5b80634d1975b4116100b25780634d1975b4146101d857806354fd4d50146101e0578063715018a6146101f557600080fd5b806326daafbe146100d95780633142e55e1461018b57806345583b7a146101c3575b600080fd5b6101786100e7366004610e82565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086018051988652968352606087529451609f0190941683209190925291905291905290565b6040519081526020015b60405180910390f35b61019e610199366004610f6b565b6102c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610182565b6101d66101d1366004611014565b610525565b005b606754610178565b6101e86105ac565b604051610182919061107b565b6101d661064f565b60335473ffffffffffffffffffffffffffffffffffffffff1661019e565b61022e6102293660046110cc565b610663565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610182565b61022e610268366004610f6b565b6106ad565b6101d661027b3660046110e5565b61072b565b61019e61028e366004611109565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101d66102c43660046110e5565b6108c7565b60ff841660009081526065602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610333576040517f44265d6f00000000000000000000000000000000000000000000000000000000815260ff871660048201526024015b60405180910390fd5b61039685858560405160200161034b93929190611124565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905273ffffffffffffffffffffffffffffffffffffffff83169061099a565b91508173ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103e057600080fd5b505af11580156103f4573d6000803e3d6000fd5b50505050600061043b878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b60008181526066602052604090205490915015610487576040517f014f6fe50000000000000000000000000000000000000000000000000000000081526004810182905260240161032a565b60004260a01b8417600083815260666020526040808220839055606780546001810182559083527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae0183905551919250889160ff8b169173ffffffffffffffffffffffffffffffffffffffff8816917ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec9190a4505050949350505050565b61052d610ace565b60ff821660008181526065602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917f623713f72f6e427a8044bb8b3bd6834357cf285decbaa21bcc73c1d0632c4d8491a35050565b60606105d77f0000000000000000000000000000000000000000000000000000000000000000610b4f565b6106007f0000000000000000000000000000000000000000000000000000000000000000610b4f565b6106297f0000000000000000000000000000000000000000000000000000000000000000610b4f565b60405160200161063b9392919061113e565b604051602081830303815290604052905090565b610657610ace565b6106616000610c8c565b565b60008060006067848154811061067b5761067b6111b4565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff81169560a09190911c945092505050565b60008060006106f3878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b60009081526066602052604090205473ffffffffffffffffffffffffffffffffffffffff81169860a09190911c975095505050505050565b600054610100900460ff161580801561074b5750600054600160ff909116105b806107655750303b158015610765575060005460ff166001145b6107f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161032a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561084f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610857610d03565b61086082610c8c565b80156108c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6108cf610ace565b73ffffffffffffffffffffffffffffffffffffffff8116610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161032a565b61097b81610c8c565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b60208410610a5257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101610a15565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f0945084610abf577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032a565b606081600003610b9257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610bbc5780610ba681611212565b9150610bb59050600a83611279565b9150610b96565b60008167ffffffffffffffff811115610bd757610bd7610e53565b6040519080825280601f01601f191660200182016040528015610c01576020820181803683370190505b5090505b8415610c8457610c1660018361128d565b9150610c23600a866112a4565b610c2e9060306112b8565b60f81b818381518110610c4357610c436111b4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610c7d600a86611279565b9450610c05565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610d9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b610661600054610100900460ff16610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b61066133610c8c565b803560ff81168114610e4e57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610e9757600080fd5b610ea084610e3d565b925060208401359150604084013567ffffffffffffffff80821115610ec457600080fd5b818601915086601f830112610ed857600080fd5b813581811115610eea57610eea610e53565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610f3057610f30610e53565b81604052828152896020848701011115610f4957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060008060608587031215610f8157600080fd5b610f8a85610e3d565b935060208501359250604085013567ffffffffffffffff80821115610fae57600080fd5b818701915087601f830112610fc257600080fd5b813581811115610fd157600080fd5b886020828501011115610fe357600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461097b57600080fd5b6000806040838503121561102757600080fd5b61103083610e3d565b9150602083013561104081610ff2565b809150509250929050565b60005b8381101561106657818101518382015260200161104e565b83811115611075576000848401525b50505050565b602081526000825180602084015261109a81604085016020870161104b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000602082840312156110de57600080fd5b5035919050565b6000602082840312156110f757600080fd5b813561110281610ff2565b9392505050565b60006020828403121561111b57600080fd5b61110282610e3d565b838152818360208301376000910160200190815292915050565b6000845161115081846020890161104b565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161118c816001850160208a0161104b565b600192019182015283516111a781600284016020880161104b565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611243576112436111e3565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826112885761128861124a565b500490565b60008282101561129f5761129f6111e3565b500390565b6000826112b3576112b361124a565b500690565b600082198211156112cb576112cb6111e3
565b50019056fea164736f6c634300080f000a496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069"
,
}
// DisputeGameFactoryABI is the input ABI used to generate the binding from.
...
...
op-bindings/bindings/disputegamefactory_more.go
View file @
1888081c
...
...
@@ -13,7 +13,7 @@ const DisputeGameFactoryStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"con
var
DisputeGameFactoryStorageLayout
=
new
(
solc
.
StorageLayout
)
var
DisputeGameFactoryDeployedBin
=
"0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063c4d66de81161005b578063c4d66de81461026d578063dfa162d314610280578063f2fde38b146102b657600080fd5b80638da5cb5b146101fd578063bb8aa1fc1461021b578063c49d52711461025a57600080fd5b80634d1975b4116100b25780634d1975b4146101d857806354fd4d50146101e0578063715018a6146101f557600080fd5b806326daafbe146100d95780633142e55e1461018b57806345583b7a146101c3575b600080fd5b6101786100e7366004610e8
5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086018051988652968352606087529451609f0190941683209190925291905291905290565b6040519081526020015b60405180910390f35b61019e610199366004610f6e565b6102c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610182565b6101d66101d1366004611017565b610528565b005b606754610178565b6101e86105af565b604051610182919061107e565b6101d6610652565b60335473ffffffffffffffffffffffffffffffffffffffff1661019e565b61022e6102293660046110cf565b610666565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610182565b61022e610268366004610f6e565b6106b0565b6101d661027b3660046110e8565b61072e565b61019e61028e36600461110c565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101d66102c43660046110e8565b6108ca565b60ff841660009081526065602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610333576040517f44265d6f00000000000000000000000000000000000000000000000000000000815260ff871660048201526024015b60405180910390fd5b6040516103999061034e908790869088908290602001611127565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905273ffffffffffffffffffffffffffffffffffffffff83169061099d565b91508173ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b50505050600061043e878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b6000818152606660205260409020549091501561048a576040517f014f6fe50000000000000000000000000000000000000000000000000000000081526004810182905260240161032a565b60004260a01b8417600083815260666020526040808220839055606780546001810182559083527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae0183905551919250889160ff8b169173ffffffffffffffffffffffffffffffffffffffff8816917ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec9190a4505050949350505050565b610530610ad1565b60ff821660008181526065602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917f623713f72f6e427a8044bb8b3bd6834357cf285decbaa21bcc73c1d0632c4d8491a35050565b60606105da7f0000000000000000000000000000000000000000000000000000000000000000610b52565b6106037f0000000000000000000000000000000000000000000000000000000000000000610b52565b61062c7f0000000000000000000000000000000000000000000000000000000000000000610b52565b60405160200161063e93929190611148565b604051602081830303815290604052905090565b61065a610ad1565b6106646000610c8f565b565b60008060006067848154811061067e5761067e6111be565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff81169560a09190911c945092505050565b60008060006106f6878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b60009081526066602052604090205473ffffffffffffffffffffffffffffffffffffffff81169860a09190911c975095505050505050565b600054610100900460ff161580801561074e5750600054600160ff909116105b806107685750303b158015610768575060005460ff166001145b6107f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161032a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561085257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61085a610d06565b61086382610c8f565b80156108c657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6108d2610ad1565b73ffffffffffffffffffffffffffffffffffffffff8116610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161032a565b61097e81610c8f565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b60208410610a5557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101610a18565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f0945084610ac2577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032a565b606081600003610b9557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610bbf5780610ba98161121c565b9150610bb89050600a83611283565b9150610b99565b60008167ffffffffffffffff811115610bda57610bda610e56565b6040519080825280601f01601f191660200182016040528015610c04576020820181803683370190505b5090505b8415610c8757610c19600183611297565b9150610c26600a866112ae565b610c319060306112c2565b60f81b818381518110610c4657610c466111be565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610c80600a86611283565b9450610c08565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b610664600054610100900460ff16610e37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b61066433610c8f565b803560ff81168114610e5157600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610e9a57600080fd5b610ea384610e40565b925060208401359150604084013567ffffffffffffffff80821115610ec757600080fd5b818601915086601f830112610edb57600080fd5b813581811115610eed57610eed610e56565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610f3357610f33610e56565b81604052828152896020848701011115610f4c57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060008060608587031215610f8457600080fd5b610f8d85610e40565b935060208501359250604085013567ffffffffffffffff80821115610fb157600080fd5b818701915087601f830112610fc557600080fd5b813581811115610fd457600080fd5b886020828501011115610fe657600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461097e57600080fd5b6000806040838503121561102a57600080fd5b61103383610e40565b9150602083013561104381610ff5565b809150509250929050565b60005b83811015611069578181015183820152602001611051565b83811115611078576000848401525b50505050565b602081526000825180602084015261109d81604085016020870161104e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000602082840312156110e157600080fd5b5035919050565b6000602082840312156110fa57600080fd5b813561110581610ff5565b9392505050565b60006020828403121561111e57600080fd5b61110582610e40565b84815283602082015281836040830137600091016040019081529392505050565b6000845161115a81846020890161104e565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551611196816001850160208a0161104e565b600192019182015283516111b181600284016020880161104e565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361124d5761124d6111ed565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261129257611292611254565b500490565b6000828210156112a9576112a96111ed565b500390565b6000826112bd576112bd611254565b500690565b600082198211156112d5576112d56111ed
565b50019056fea164736f6c634300080f000a"
var
DisputeGameFactoryDeployedBin
=
"0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638da5cb5b11610081578063c4d66de81161005b578063c4d66de81461026d578063dfa162d314610280578063f2fde38b146102b657600080fd5b80638da5cb5b146101fd578063bb8aa1fc1461021b578063c49d52711461025a57600080fd5b80634d1975b4116100b25780634d1975b4146101d857806354fd4d50146101e0578063715018a6146101f557600080fd5b806326daafbe146100d95780633142e55e1461018b57806345583b7a146101c3575b600080fd5b6101786100e7366004610e8
2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08086018051988652968352606087529451609f0190941683209190925291905291905290565b6040519081526020015b60405180910390f35b61019e610199366004610f6b565b6102c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610182565b6101d66101d1366004611014565b610525565b005b606754610178565b6101e86105ac565b604051610182919061107b565b6101d661064f565b60335473ffffffffffffffffffffffffffffffffffffffff1661019e565b61022e6102293660046110cc565b610663565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610182565b61022e610268366004610f6b565b6106ad565b6101d661027b3660046110e5565b61072b565b61019e61028e366004611109565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101d66102c43660046110e5565b6108c7565b60ff841660009081526065602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610333576040517f44265d6f00000000000000000000000000000000000000000000000000000000815260ff871660048201526024015b60405180910390fd5b61039685858560405160200161034b93929190611124565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905273ffffffffffffffffffffffffffffffffffffffff83169061099a565b91508173ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103e057600080fd5b505af11580156103f4573d6000803e3d6000fd5b50505050600061043b878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b60008181526066602052604090205490915015610487576040517f014f6fe50000000000000000000000000000000000000000000000000000000081526004810182905260240161032a565b60004260a01b8417600083815260666020526040808220839055606780546001810182559083527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae0183905551919250889160ff8b169173ffffffffffffffffffffffffffffffffffffffff8816917ffad0599ff449d8d9685eadecca8cb9e00924c5fd8367c1c09469824939e1ffec9190a4505050949350505050565b61052d610ace565b60ff821660008181526065602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917f623713f72f6e427a8044bb8b3bd6834357cf285decbaa21bcc73c1d0632c4d8491a35050565b60606105d77f0000000000000000000000000000000000000000000000000000000000000000610b4f565b6106007f0000000000000000000000000000000000000000000000000000000000000000610b4f565b6106297f0000000000000000000000000000000000000000000000000000000000000000610b4f565b60405160200161063b9392919061113e565b604051602081830303815290604052905090565b610657610ace565b6106616000610c8c565b565b60008060006067848154811061067b5761067b6111b4565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff81169560a09190911c945092505050565b60008060006106f3878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100e792505050565b60009081526066602052604090205473ffffffffffffffffffffffffffffffffffffffff81169860a09190911c975095505050505050565b600054610100900460ff161580801561074b5750600054600160ff909116105b806107655750303b158015610765575060005460ff166001145b6107f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161032a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561084f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610857610d03565b61086082610c8c565b80156108c357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6108cf610ace565b73ffffffffffffffffffffffffffffffffffffffff8116610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161032a565b61097b81610c8c565b50565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006002825101603f8101600a81036040518360581b8260e81b177f6100003d81600a3d39f3363d3d373d3d3d3d610000806035363936013d7300001781528660601b601e8201527f5af43d3d93803e603357fd5bf300000000000000000000000000000000000000603282015285519150603f8101602087015b60208410610a5257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09093019260209182019101610a15565b517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602085900360031b1b16815260f085901b9083015282816000f0945084610abf577febfef1880000000000000000000000000000000000000000000000000000000060005260206000fd5b90910160405250909392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161032a565b606081600003610b9257505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610bbc5780610ba681611212565b9150610bb59050600a83611279565b9150610b96565b60008167ffffffffffffffff811115610bd757610bd7610e53565b6040519080825280601f01601f191660200182016040528015610c01576020820181803683370190505b5090505b8415610c8457610c1660018361128d565b9150610c23600a866112a4565b610c2e9060306112b8565b60f81b818381518110610c4357610c436111b4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610c7d600a86611279565b9450610c05565b949350505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610d9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b610661600054610100900460ff16610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161032a565b61066133610c8c565b803560ff81168114610e4e57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600060608486031215610e9757600080fd5b610ea084610e3d565b925060208401359150604084013567ffffffffffffffff80821115610ec457600080fd5b818601915086601f830112610ed857600080fd5b813581811115610eea57610eea610e53565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610f3057610f30610e53565b81604052828152896020848701011115610f4957600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060008060608587031215610f8157600080fd5b610f8a85610e3d565b935060208501359250604085013567ffffffffffffffff80821115610fae57600080fd5b818701915087601f830112610fc257600080fd5b813581811115610fd157600080fd5b886020828501011115610fe357600080fd5b95989497505060200194505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461097b57600080fd5b6000806040838503121561102757600080fd5b61103083610e3d565b9150602083013561104081610ff2565b809150509250929050565b60005b8381101561106657818101518382015260200161104e565b83811115611075576000848401525b50505050565b602081526000825180602084015261109a81604085016020870161104b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000602082840312156110de57600080fd5b5035919050565b6000602082840312156110f757600080fd5b813561110281610ff2565b9392505050565b60006020828403121561111b57600080fd5b61110282610e3d565b838152818360208301376000910160200190815292915050565b6000845161115081846020890161104b565b80830190507f2e00000000000000000000000000000000000000000000000000000000000000808252855161118c816001850160208a0161104b565b600192019182015283516111a781600284016020880161104b565b0160020195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611243576112436111e3565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826112885761128861124a565b500490565b60008282101561129f5761129f6111e3565b500390565b6000826112b3576112b361124a565b500690565b600082198211156112cb576112cb6111e3
565b50019056fea164736f6c634300080f000a"
func
init
()
{
if
err
:=
json
.
Unmarshal
([]
byte
(
DisputeGameFactoryStorageLayoutJSON
),
DisputeGameFactoryStorageLayout
);
err
!=
nil
{
...
...
op-bindings/bindings/faultdisputegame.go
View file @
1888081c
...
...
@@ -509,37 +509,6 @@ func (_FaultDisputeGame *FaultDisputeGameCallerSession) ExtraData() ([]byte, err
return
_FaultDisputeGame
.
Contract
.
ExtraData
(
&
_FaultDisputeGame
.
CallOpts
)
}
// ExtraDataLen is a free data retrieval call binding the contract method 0x1f62d0c6.
//
// Solidity: function extraDataLen() pure returns(uint256 extraDataLen_)
func
(
_FaultDisputeGame
*
FaultDisputeGameCaller
)
ExtraDataLen
(
opts
*
bind
.
CallOpts
)
(
*
big
.
Int
,
error
)
{
var
out
[]
interface
{}
err
:=
_FaultDisputeGame
.
contract
.
Call
(
opts
,
&
out
,
"extraDataLen"
)
if
err
!=
nil
{
return
*
new
(
*
big
.
Int
),
err
}
out0
:=
*
abi
.
ConvertType
(
out
[
0
],
new
(
*
big
.
Int
))
.
(
**
big
.
Int
)
return
out0
,
err
}
// ExtraDataLen is a free data retrieval call binding the contract method 0x1f62d0c6.
//
// Solidity: function extraDataLen() pure returns(uint256 extraDataLen_)
func
(
_FaultDisputeGame
*
FaultDisputeGameSession
)
ExtraDataLen
()
(
*
big
.
Int
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
ExtraDataLen
(
&
_FaultDisputeGame
.
CallOpts
)
}
// ExtraDataLen is a free data retrieval call binding the contract method 0x1f62d0c6.
//
// Solidity: function extraDataLen() pure returns(uint256 extraDataLen_)
func
(
_FaultDisputeGame
*
FaultDisputeGameCallerSession
)
ExtraDataLen
()
(
*
big
.
Int
,
error
)
{
return
_FaultDisputeGame
.
Contract
.
ExtraDataLen
(
&
_FaultDisputeGame
.
CallOpts
)
}
// GameData is a free data retrieval call binding the contract method 0xfa24f743.
//
// Solidity: function gameData() pure returns(uint8 gameType_, bytes32 rootClaim_, bytes extraData_)
...
...
op-bindings/bindings/mips.go
View file @
1888081c
...
...
@@ -31,7 +31,7 @@ var (
// MIPSMetaData contains all meta data concerning the MIPS contract.
var
MIPSMetaData
=
&
bind
.
MetaData
{
ABI
:
"[{
\"
inputs
\"
:[],
\"
name
\"
:
\"
BRK_START
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
uint32
\"
,
\"
name
\"
:
\"\"
,
\"
type
\"
:
\"
uint32
\"
}],
\"
stateMutability
\"
:
\"
view
\"
,
\"
type
\"
:
\"
function
\"
},{
\"
inputs
\"
:[],
\"
name
\"
:
\"
oracle
\"
,
\"
outputs
\"
:[{
\"
internalType
\"
:
\"
contractIPreimageOracle
\"
,
\"
name
\"
:
\"\"
,
\"
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
:
"0x608060405234801561001057600080fd5b50611b8
5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d014610067578063f8e0cb9614610098575b600080fd5b61004e61016c565b6040805163ffffffff9092168252519081900360200190f35b61006f610174565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61015a600480360360408110156100ae57600080fd5b8101906020810181356401000000008111156100c957600080fd5b8201836020820111156100db57600080fd5b803590602001918460018302840111640100000000831117156100fd57600080fd5b91939092909160208101903564010000000081111561011b57600080fd5b82018360208201111561012d57600080fd5b8035906020019184600183028401116401000000008311171561014f57600080fd5b509092509050610190565b60408051918252519081900360200190f35b634000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600061019a611acb565b608081146101a757600080fd5b604051610600146101b757600080fd5b606486146101c457600080fd5b61016684146101d257600080fd5b6101ef565b8035602084810360031b9190911c8352920192910190565b8560806101fe602082846101d7565b9150915061020e602082846101d7565b9150915061021e600482846101d7565b9150915061022e600482846101d7565b9150915061023e600482846101d7565b9150915061024e600482846101d7565b9150915061025e600482846101d7565b9150915061026e600482846101d7565b9150915061027e600182846101d7565b9150915061028e600182846101d7565b9150915061029e600882846101d7565b6020810190819052909250905060005b60208110156102d0576102c3600483856101d7565b90935091506001016102ae565b505050806101200151156102ee576102e6610710565b915050610708565b6101408101805160010167ffffffffffffffff1690526060810151600090610316908261081e565b9050603f601a82901c16600281148061033557508063ffffffff166003145b15610382576103788163ffffffff1660021461035257601f610355565b60005b60ff16600261036b856303ffffff16601a6108e9565b63ffffffff16901b61095c565b9350505050610708565b6101608301516000908190601f601086901c81169190601587901c16602081106103a857fe5b602002015192508063ffffffff851615806103c957508463ffffffff16601c145b156103fa578661016001518263ffffffff16602081106103e557fe5b6020020151925050601f600b86901c166104b1565b60208563ffffffff16101561045d578463ffffffff16600c148061042457508463ffffffff16600d145b8061043557508463ffffffff16600e145b15610446578561ffff169250610458565b6104558661ffff1660106108e9565b92505b6104b1565b60288563ffffffff1610158061047957508463ffffffff166022145b8061048a57508463ffffffff166026145b156104b1578661016001518263ffffffff16602081106104a657fe5b602002015192508190505b60048563ffffffff16101580156104ce575060088563ffffffff16105b806104df57508463ffffffff166001145b156104fe576104f0858784876109c7565b975050505050505050610708565b63ffffffff60006020878316106105635761051e8861ffff1660106108e9565b9095019463fffffffc861661053481600161081e565b915060288863ffffffff161015801561055457508763ffffffff16603014155b1561056157809250600093505b505b600061057189888885610b50565b63ffffffff9081169150603f8a16908916158015610596575060088163ffffffff1610155b80156105a85750601c8163ffffffff16105b15610687578063ffffffff16600814806105c857508063ffffffff166009145b156105ff576105ed8163ffffffff166008146105e457856105e7565b60005b8961095c565b9b505050505050505050505050610708565b8063ffffffff16600a1415610620576105ed858963ffffffff8a1615611216565b8063ffffffff16600b1415610642576105ed858963ffffffff8a161515611216565b8063ffffffff16600c1415610659576105ed6112fb565b60108163ffffffff16101580156106765750601c8163ffffffff16105b15610687576105ed818989886117d9565b8863ffffffff1660381480156106a2575063ffffffff861615155b156106d15760018b61016001518763ffffffff16602081106106c057fe5b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146106ee576106ee846001846119bd565b6106fa85836001611216565b9b5050505050505050505050505b949350505050565b6000610728565b602083810382015183520192910190565b60806040518061073a60208285610717565b9150925061074a60208285610717565b9150925061075a60048285610717565b9150925061076a60048285610717565b9150925061077a60048285610717565b9150925061078a60048285610717565b9150925061079a60048285610717565b915092506107aa60048285610717565b915092506107ba60018285610717565b915092506107ca60018285610717565b915092506107da60088285610717565b60209091019350905060005b6020811015610808576107fb60048386610717565b90945091506001016107e6565b506000815281810382a081900390209150505b90565b60008061082a83611a59565b9050600384161561083a57600080fd5b602081019035610857565b60009081526020919091526040902090565b8460051c8160005b601b8110156108af5760208501943583821c60011680156108875760018114610898576108a5565b6108918285610845565b93506108a5565b6108a28483610845565b93505b505060010161085f565b5060805191508181146108ca57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b0182610946576000610948565b815b90861663ffffffff16179250505092915050565b6000610966611acb565b5060e08051610100805163ffffffff90811690935284831690526080918516156109b657806008018261016001518663ffffffff16602081106109a557fe5b63ffffffff90921660209290920201525b6109be610710565b95945050505050565b60006109d1611acb565b5060806000600463ffffffff881614806109f157508663ffffffff166005145b15610a675760008261016001518663ffffffff1660208110610a0f57fe5b602002015190508063ffffffff168563ffffffff16148015610a3757508763ffffffff166004145b80610a5f57508063ffffffff168563ffffffff1614158015610a5f57508763ffffffff166005145b915050610ae4565b8663ffffffff1660061415610a855760008460030b13159050610ae4565b8663ffffffff1660071415610aa25760008460030b139050610ae4565b8663ffffffff1660011415610ae457601f601087901c1680610ac85760008560030b1291505b8063ffffffff1660011415610ae25760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b2a576002610b0f8861ffff1660106108e9565b63ffffffff90811690911b8201600401166080840152610b3c565b60808301805160040163ffffffff1690525b610b44610710565b98975050505050505050565b6000603f601a86901c81169086166020821015610f245760088263ffffffff1610158015610b845750600f8263ffffffff16105b15610c2b578163ffffffff1660081415610ba057506020610c26565b8163ffffffff1660091415610bb757506021610c26565b8163ffffffff16600a1415610bce5750602a610c26565b8163ffffffff16600b1415610be55750602b610c26565b8163ffffffff16600c1415610bfc57506024610c26565b8163ffffffff16600d1415610c1357506025610c26565b8163ffffffff16600e1415610c26575060265b600091505b63ffffffff8216610e7457601f600688901c16602063ffffffff83161015610d485760088263ffffffff1610610c6657869350505050610708565b63ffffffff8216610c865763ffffffff86811691161b9250610708915050565b8163ffffffff1660021415610caa5763ffffffff86811691161c9250610708915050565b8163ffffffff1660031415610cd5576103788163ffffffff168763ffffffff16901c826020036108e9565b8163ffffffff1660041415610cf9575050505063ffffffff8216601f84161b610708565b8163ffffffff1660061415610d1d575050505063ffffffff8216601f84161c610708565b8163ffffffff1660071415610d48576103788763ffffffff168763ffffffff16901c886020036108e9565b8163ffffffff1660201480610d6357508163ffffffff166021145b15610d75578587019350505050610708565b8163ffffffff1660221480610d9057508163ffffffff166023145b15610da2578587039350505050610708565b8163ffffffff1660241415610dbe578587169350505050610708565b8163ffffffff1660251415610dda578587179350505050610708565b8163ffffffff1660261415610df6578587189350505050610708565b8163ffffffff1660271415610e12575050505082821719610708565b8163ffffffff16602a1415610e45578560030b8760030b12610e35576000610e38565b60015b60ff169350505050610708565b8163ffffffff16602b1415610e6e578563ffffffff168763ffffffff1610610e35576000610e38565b50610f1f565b8163ffffffff16600f1415610e975760108563ffffffff16901b92505050610708565b8163ffffffff16601c1415610f1f578063ffffffff1660021415610ec057505050828202610708565b8063ffffffff1660201480610edb57508063ffffffff166021145b15610f1f578063ffffffff1660201415610ef3579419945b60005b6380000000871615610f15576401fffffffe600197881b169601610ef6565b9250610708915050565b6111af565b60288263ffffffff16101561108e578163ffffffff1660201415610f7157610f688660031660080260180363ffffffff168563ffffffff16901c60ff1660086108e9565b92505050610708565b8163ffffffff1660211415610fa757610f688660021660080260100363ffffffff168563ffffffff16901c61ffff1660106108e9565b8163ffffffff1660221415610fd85750505063ffffffff60086003851602811681811b198416918316901b17610708565b8163ffffffff1660231415610ff1578392505050610708565b8163ffffffff1660241415611025578560031660080260180363ffffffff168463ffffffff16901c60ff1692505050610708565b8163ffffffff166025141561105a578560021660080260100363ffffffff168463ffffffff16901c61ffff1692505050610708565b8163ffffffff1660261415610f1f5750505063ffffffff60086003851602601803811681811c198416918316901c17610708565b8163ffffffff16602814156110c65750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610708565b8163ffffffff16602914156110ff5750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610708565b8163ffffffff16602a14156111305750505063ffffffff60086003851602811681811c198316918416901c17610708565b8163ffffffff16602b1415611149578492505050610708565b8163ffffffff16602e141561117d5750505063ffffffff60086003851602601803811681811b198316918416901b17610708565b8163ffffffff1660301415611196578392505050610708565b8163ffffffff16603814156111af578492505050610708565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015290519081900360640190fd5b6000611220611acb565b506080602063ffffffff86161061129857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff8516158015906112aa5750825b156112d857838161016001518663ffffffff16602081106112c757fe5b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526109be610710565b6000611305611acb565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa141561137d5781610fff81161561134f57610fff811661100003015b63ffffffff84166113735760e08801805163ffffffff838201169091529550611377565b8395505b5061178c565b8563ffffffff16610fcd1415611399576340000000945061178c565b8563ffffffff1661101814156113b2576001945061178c565b8563ffffffff1661109614156113ea57600161012088015260ff83166101008801526113dc610710565b97505050505050505061081b565b8563ffffffff16610fa3141561160a5763ffffffff831661140a57611605565b63ffffffff8316600514156115e257600061142c8363fffffffc16600161081e565b6020890151909150600081901a6001141561149257600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000175b6000805460208b01516040808d015181517fe03110e1000000000000000000000000000000000000000000000000000000008152600481019390935263ffffffff1660248301528051849373ffffffffffffffffffffffffffffffffffffffff169263e03110e1926044808301939192829003018186803b15801561151657600080fd5b505afa15801561152a573d6000803e3d6000fd5b505050506040513d604081101561154057600080fd5b508051602090910151909250905060038616600481900382811015611563578092505b5081861015611570578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506115c78663fffffffc166001866119bd565b60408b018051820163ffffffff169052975061160592505050565b63ffffffff8316600314156115f957809450611605565b63ffffffff9450600993505b61178c565b8563ffffffff16610fa414156116de5763ffffffff831660011480611635575063ffffffff83166002145b80611646575063ffffffff83166004145b1561165357809450611605565b63ffffffff8316600614156115f95760006116758363fffffffc16600161081e565b60208901519091506003841660040383811015611690578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b17602088015260006040880152935083611605565b8563ffffffff16610fd7141561178c578163ffffffff16600314156117805763ffffffff83161580611716575063ffffffff83166005145b80611727575063ffffffff83166003145b156117355760009450611605565b63ffffffff831660011480611750575063ffffffff83166002145b80611761575063ffffffff83166006145b80611772575063ffffffff83166004145b156115f95760019450611605565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526117cd610710565b97505050505050505090565b60006117e3611acb565b5060806000601063ffffffff88161415611802575060c081015161195a565b8663ffffffff16601114156118225763ffffffff861660c083015261195a565b8663ffffffff166012141561183c575060a081015161195a565b8663ffffffff166013141561185c5763ffffffff861660a083015261195a565b8663ffffffff16601814156118915763ffffffff600387810b9087900b02602081901c821660c08501521660a083015261195a565b8663ffffffff16601914156118c35763ffffffff86811681871602602081901c821660c08501521660a083015261195a565b8663ffffffff16601a141561190e578460030b8660030b816118e157fe5b0763ffffffff1660c0830152600385810b9087900b816118fd57fe5b0563ffffffff1660a083015261195a565b8663ffffffff16601b141561195a578463ffffffff168663ffffffff168161193257fe5b0663ffffffff90811660c08401528581169087168161194d57fe5b0463ffffffff1660a08301525b63ffffffff84161561198f57808261016001518563ffffffff166020811061197e57fe5b63ffffffff90921660209290920201525b60808201805163ffffffff808216606086015260049091011690526119b2610710565b979650505050505050565b60006119c883611a59565b905060038416156119d857600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a4e5760208401933582821c6001168015611a265760018114611a3757611a44565b611a308286610845565b9450611a44565b611a418583610845565b94505b50506001016119fe565b505060805250505050565b60ff81166103800261016681019036906104e601811015611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611b566023913960400191505060405180910390fd5b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b31611b36
565b905290565b604051806104000160405280602090602082028036833750919291505056fe636865636b207468617420746865726520697320656e6f7567682063616c6c64617461a164736f6c6343000706000a"
,
Bin
:
"0x608060405234801561001057600080fd5b50611b8
d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d014610067578063f8e0cb9614610098575b600080fd5b61004e61016c565b6040805163ffffffff9092168252519081900360200190f35b61006f610174565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61015a600480360360408110156100ae57600080fd5b8101906020810181356401000000008111156100c957600080fd5b8201836020820111156100db57600080fd5b803590602001918460018302840111640100000000831117156100fd57600080fd5b91939092909160208101903564010000000081111561011b57600080fd5b82018360208201111561012d57600080fd5b8035906020019184600183028401116401000000008311171561014f57600080fd5b509092509050610190565b60408051918252519081900360200190f35b634000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600061019a611ad3565b608081146101a757600080fd5b604051610600146101b757600080fd5b606486146101c457600080fd5b61016684146101d257600080fd5b6101ef565b8035602084810360031b9190911c8352920192910190565b8560806101fe602082846101d7565b9150915061020e602082846101d7565b9150915061021e600482846101d7565b9150915061022e600482846101d7565b9150915061023e600482846101d7565b9150915061024e600482846101d7565b9150915061025e600482846101d7565b9150915061026e600482846101d7565b9150915061027e600182846101d7565b9150915061028e600182846101d7565b9150915061029e600882846101d7565b6020810190819052909250905060005b60208110156102d0576102c3600483856101d7565b90935091506001016102ae565b505050806101200151156102ee576102e6610710565b915050610708565b6101408101805160010167ffffffffffffffff1690526060810151600090610316908261081e565b9050603f601a82901c16600281148061033557508063ffffffff166003145b15610382576103788163ffffffff1660021461035257601f610355565b60005b60ff16600261036b856303ffffff16601a6108e9565b63ffffffff16901b61095c565b9350505050610708565b6101608301516000908190601f601086901c81169190601587901c16602081106103a857fe5b602002015192508063ffffffff851615806103c957508463ffffffff16601c145b156103fa578661016001518263ffffffff16602081106103e557fe5b6020020151925050601f600b86901c166104b1565b60208563ffffffff16101561045d578463ffffffff16600c148061042457508463ffffffff16600d145b8061043557508463ffffffff16600e145b15610446578561ffff169250610458565b6104558661ffff1660106108e9565b92505b6104b1565b60288563ffffffff1610158061047957508463ffffffff166022145b8061048a57508463ffffffff166026145b156104b1578661016001518263ffffffff16602081106104a657fe5b602002015192508190505b60048563ffffffff16101580156104ce575060088563ffffffff16105b806104df57508463ffffffff166001145b156104fe576104f0858784876109c7565b975050505050505050610708565b63ffffffff60006020878316106105635761051e8861ffff1660106108e9565b9095019463fffffffc861661053481600161081e565b915060288863ffffffff161015801561055457508763ffffffff16603014155b1561056157809250600093505b505b600061057189888885610b50565b63ffffffff9081169150603f8a16908916158015610596575060088163ffffffff1610155b80156105a85750601c8163ffffffff16105b15610687578063ffffffff16600814806105c857508063ffffffff166009145b156105ff576105ed8163ffffffff166008146105e457856105e7565b60005b8961095c565b9b505050505050505050505050610708565b8063ffffffff16600a1415610620576105ed858963ffffffff8a1615611216565b8063ffffffff16600b1415610642576105ed858963ffffffff8a161515611216565b8063ffffffff16600c1415610659576105ed6112fb565b60108163ffffffff16101580156106765750601c8163ffffffff16105b15610687576105ed8189898861178e565b8863ffffffff1660381480156106a2575063ffffffff861615155b156106d15760018b61016001518763ffffffff16602081106106c057fe5b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146106ee576106ee84600184611972565b6106fa85836001611216565b9b5050505050505050505050505b949350505050565b6000610728565b602083810382015183520192910190565b60806040518061073a60208285610717565b9150925061074a60208285610717565b9150925061075a60048285610717565b9150925061076a60048285610717565b9150925061077a60048285610717565b9150925061078a60048285610717565b9150925061079a60048285610717565b915092506107aa60048285610717565b915092506107ba60018285610717565b915092506107ca60018285610717565b915092506107da60088285610717565b60209091019350905060005b6020811015610808576107fb60048386610717565b90945091506001016107e6565b506000815281810382a081900390209150505b90565b60008061082a83611a0e565b9050600384161561083a57600080fd5b602081019035610857565b60009081526020919091526040902090565b8460051c8160005b601b8110156108af5760208501943583821c60011680156108875760018114610898576108a5565b6108918285610845565b93506108a5565b6108a28483610845565b93505b505060010161085f565b5060805191508181146108ca57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b0182610946576000610948565b815b90861663ffffffff16179250505092915050565b6000610966611ad3565b5060e08051610100805163ffffffff90811690935284831690526080918516156109b657806008018261016001518663ffffffff16602081106109a557fe5b63ffffffff90921660209290920201525b6109be610710565b95945050505050565b60006109d1611ad3565b5060806000600463ffffffff881614806109f157508663ffffffff166005145b15610a675760008261016001518663ffffffff1660208110610a0f57fe5b602002015190508063ffffffff168563ffffffff16148015610a3757508763ffffffff166004145b80610a5f57508063ffffffff168563ffffffff1614158015610a5f57508763ffffffff166005145b915050610ae4565b8663ffffffff1660061415610a855760008460030b13159050610ae4565b8663ffffffff1660071415610aa25760008460030b139050610ae4565b8663ffffffff1660011415610ae457601f601087901c1680610ac85760008560030b1291505b8063ffffffff1660011415610ae25760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b2a576002610b0f8861ffff1660106108e9565b63ffffffff90811690911b8201600401166080840152610b3c565b60808301805160040163ffffffff1690525b610b44610710565b98975050505050505050565b6000603f601a86901c81169086166020821015610f245760088263ffffffff1610158015610b845750600f8263ffffffff16105b15610c2b578163ffffffff1660081415610ba057506020610c26565b8163ffffffff1660091415610bb757506021610c26565b8163ffffffff16600a1415610bce5750602a610c26565b8163ffffffff16600b1415610be55750602b610c26565b8163ffffffff16600c1415610bfc57506024610c26565b8163ffffffff16600d1415610c1357506025610c26565b8163ffffffff16600e1415610c26575060265b600091505b63ffffffff8216610e7457601f600688901c16602063ffffffff83161015610d485760088263ffffffff1610610c6657869350505050610708565b63ffffffff8216610c865763ffffffff86811691161b9250610708915050565b8163ffffffff1660021415610caa5763ffffffff86811691161c9250610708915050565b8163ffffffff1660031415610cd5576103788163ffffffff168763ffffffff16901c826020036108e9565b8163ffffffff1660041415610cf9575050505063ffffffff8216601f84161b610708565b8163ffffffff1660061415610d1d575050505063ffffffff8216601f84161c610708565b8163ffffffff1660071415610d48576103788763ffffffff168763ffffffff16901c886020036108e9565b8163ffffffff1660201480610d6357508163ffffffff166021145b15610d75578587019350505050610708565b8163ffffffff1660221480610d9057508163ffffffff166023145b15610da2578587039350505050610708565b8163ffffffff1660241415610dbe578587169350505050610708565b8163ffffffff1660251415610dda578587179350505050610708565b8163ffffffff1660261415610df6578587189350505050610708565b8163ffffffff1660271415610e12575050505082821719610708565b8163ffffffff16602a1415610e45578560030b8760030b12610e35576000610e38565b60015b60ff169350505050610708565b8163ffffffff16602b1415610e6e578563ffffffff168763ffffffff1610610e35576000610e38565b50610f1f565b8163ffffffff16600f1415610e975760108563ffffffff16901b92505050610708565b8163ffffffff16601c1415610f1f578063ffffffff1660021415610ec057505050828202610708565b8063ffffffff1660201480610edb57508063ffffffff166021145b15610f1f578063ffffffff1660201415610ef3579419945b60005b6380000000871615610f15576401fffffffe600197881b169601610ef6565b9250610708915050565b6111af565b60288263ffffffff16101561108e578163ffffffff1660201415610f7157610f688660031660080260180363ffffffff168563ffffffff16901c60ff1660086108e9565b92505050610708565b8163ffffffff1660211415610fa757610f688660021660080260100363ffffffff168563ffffffff16901c61ffff1660106108e9565b8163ffffffff1660221415610fd85750505063ffffffff60086003851602811681811b198416918316901b17610708565b8163ffffffff1660231415610ff1578392505050610708565b8163ffffffff1660241415611025578560031660080260180363ffffffff168463ffffffff16901c60ff1692505050610708565b8163ffffffff166025141561105a578560021660080260100363ffffffff168463ffffffff16901c61ffff1692505050610708565b8163ffffffff1660261415610f1f5750505063ffffffff60086003851602601803811681811c198416918316901c17610708565b8163ffffffff16602814156110c65750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610708565b8163ffffffff16602914156110ff5750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610708565b8163ffffffff16602a14156111305750505063ffffffff60086003851602811681811c198316918416901c17610708565b8163ffffffff16602b1415611149578492505050610708565b8163ffffffff16602e141561117d5750505063ffffffff60086003851602601803811681811b198316918416901b17610708565b8163ffffffff1660301415611196578392505050610708565b8163ffffffff16603814156111af578492505050610708565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015290519081900360640190fd5b6000611220611ad3565b506080602063ffffffff86161061129857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff8516158015906112aa5750825b156112d857838161016001518663ffffffff16602081106112c757fe5b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526109be610710565b6000611305611ad3565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa141561137d5781610fff81161561134f57610fff811661100003015b63ffffffff84166113735760e08801805163ffffffff838201169091529550611377565b8395505b50611741565b8563ffffffff16610fcd14156113995763400000009450611741565b8563ffffffff1661101814156113b25760019450611741565b8563ffffffff1661109614156113ea57600161012088015260ff83166101008801526113dc610710565b97505050505050505061081b565b8563ffffffff16610fa314156115bf5763ffffffff831661140a576115ba565b63ffffffff83166005141561159757600061142c8363fffffffc16600161081e565b60208901519091508060001a6001141561144c5761144981611a80565b90505b600080546040808c015181517fe03110e10000000000000000000000000000000000000000000000000000000081526004810186905263ffffffff90911660248201528151849373ffffffffffffffffffffffffffffffffffffffff169263e03110e19260448082019391829003018186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d60408110156114f557600080fd5b508051602090910151909250905060038616600481900382811015611518578092505b5081861015611525578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b0391508119811690508381198716179550505061157c8663fffffffc16600186611972565b60408b018051820163ffffffff16905297506115ba92505050565b63ffffffff8316600314156115ae578094506115ba565b63ffffffff9450600993505b611741565b8563ffffffff16610fa414156116935763ffffffff8316600114806115ea575063ffffffff83166002145b806115fb575063ffffffff83166004145b15611608578094506115ba565b63ffffffff8316600614156115ae57600061162a8363fffffffc16600161081e565b60208901519091506003841660040383811015611645578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836115ba565b8563ffffffff16610fd71415611741578163ffffffff16600314156117355763ffffffff831615806116cb575063ffffffff83166005145b806116dc575063ffffffff83166003145b156116ea57600094506115ba565b63ffffffff831660011480611705575063ffffffff83166002145b80611716575063ffffffff83166006145b80611727575063ffffffff83166004145b156115ae57600194506115ba565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b01526004019091169052611782610710565b97505050505050505090565b6000611798611ad3565b5060806000601063ffffffff881614156117b7575060c081015161190f565b8663ffffffff16601114156117d75763ffffffff861660c083015261190f565b8663ffffffff16601214156117f1575060a081015161190f565b8663ffffffff16601314156118115763ffffffff861660a083015261190f565b8663ffffffff16601814156118465763ffffffff600387810b9087900b02602081901c821660c08501521660a083015261190f565b8663ffffffff16601914156118785763ffffffff86811681871602602081901c821660c08501521660a083015261190f565b8663ffffffff16601a14156118c3578460030b8660030b8161189657fe5b0763ffffffff1660c0830152600385810b9087900b816118b257fe5b0563ffffffff1660a083015261190f565b8663ffffffff16601b141561190f578463ffffffff168663ffffffff16816118e757fe5b0663ffffffff90811660c08401528581169087168161190257fe5b0463ffffffff1660a08301525b63ffffffff84161561194457808261016001518563ffffffff166020811061193357fe5b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611967610710565b979650505050505050565b600061197d83611a0e565b9050600384161561198d57600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a035760208401933582821c60011680156119db57600181146119ec576119f9565b6119e58286610845565b94506119f9565b6119f68583610845565b94505b50506001016119b3565b505060805250505050565b60ff81166103800261016681019036906104e601811015611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611b5e6023913960400191505060405180910390fd5b50919050565b600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b39611b3e
565b905290565b604051806104000160405280602090602082028036833750919291505056fe636865636b207468617420746865726520697320656e6f7567682063616c6c64617461a164736f6c6343000706000a"
,
}
// MIPSABI is the input ABI used to generate the binding from.
...
...
op-bindings/bindings/mips_more.go
View file @
1888081c
...
...
@@ -13,9 +13,9 @@ const MIPSStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/
var
MIPSStorageLayout
=
new
(
solc
.
StorageLayout
)
var
MIPSDeployedBin
=
"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d014610067578063f8e0cb9614610098575b600080fd5b61004e61016c565b6040805163ffffffff9092168252519081900360200190f35b61006f610174565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61015a600480360360408110156100ae57600080fd5b8101906020810181356401000000008111156100c957600080fd5b8201836020820111156100db57600080fd5b803590602001918460018302840111640100000000831117156100fd57600080fd5b91939092909160208101903564010000000081111561011b57600080fd5b82018360208201111561012d57600080fd5b8035906020019184600183028401116401000000008311171561014f57600080fd5b509092509050610190565b60408051918252519081900360200190f35b634000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600061019a611a
cb565b608081146101a757600080fd5b604051610600146101b757600080fd5b606486146101c457600080fd5b61016684146101d257600080fd5b6101ef565b8035602084810360031b9190911c8352920192910190565b8560806101fe602082846101d7565b9150915061020e602082846101d7565b9150915061021e600482846101d7565b9150915061022e600482846101d7565b9150915061023e600482846101d7565b9150915061024e600482846101d7565b9150915061025e600482846101d7565b9150915061026e600482846101d7565b9150915061027e600182846101d7565b9150915061028e600182846101d7565b9150915061029e600882846101d7565b6020810190819052909250905060005b60208110156102d0576102c3600483856101d7565b90935091506001016102ae565b505050806101200151156102ee576102e6610710565b915050610708565b6101408101805160010167ffffffffffffffff1690526060810151600090610316908261081e565b9050603f601a82901c16600281148061033557508063ffffffff166003145b15610382576103788163ffffffff1660021461035257601f610355565b60005b60ff16600261036b856303ffffff16601a6108e9565b63ffffffff16901b61095c565b9350505050610708565b6101608301516000908190601f601086901c81169190601587901c16602081106103a857fe5b602002015192508063ffffffff851615806103c957508463ffffffff16601c145b156103fa578661016001518263ffffffff16602081106103e557fe5b6020020151925050601f600b86901c166104b1565b60208563ffffffff16101561045d578463ffffffff16600c148061042457508463ffffffff16600d145b8061043557508463ffffffff16600e145b15610446578561ffff169250610458565b6104558661ffff1660106108e9565b92505b6104b1565b60288563ffffffff1610158061047957508463ffffffff166022145b8061048a57508463ffffffff166026145b156104b1578661016001518263ffffffff16602081106104a657fe5b602002015192508190505b60048563ffffffff16101580156104ce575060088563ffffffff16105b806104df57508463ffffffff166001145b156104fe576104f0858784876109c7565b975050505050505050610708565b63ffffffff60006020878316106105635761051e8861ffff1660106108e9565b9095019463fffffffc861661053481600161081e565b915060288863ffffffff161015801561055457508763ffffffff16603014155b1561056157809250600093505b505b600061057189888885610b50565b63ffffffff9081169150603f8a16908916158015610596575060088163ffffffff1610155b80156105a85750601c8163ffffffff16105b15610687578063ffffffff16600814806105c857508063ffffffff166009145b156105ff576105ed8163ffffffff166008146105e457856105e7565b60005b8961095c565b9b505050505050505050505050610708565b8063ffffffff16600a1415610620576105ed858963ffffffff8a1615611216565b8063ffffffff16600b1415610642576105ed858963ffffffff8a161515611216565b8063ffffffff16600c1415610659576105ed6112fb565b60108163ffffffff16101580156106765750601c8163ffffffff16105b15610687576105ed818989886117d9565b8863ffffffff1660381480156106a2575063ffffffff861615155b156106d15760018b61016001518763ffffffff16602081106106c057fe5b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146106ee576106ee846001846119bd565b6106fa85836001611216565b9b5050505050505050505050505b949350505050565b6000610728565b602083810382015183520192910190565b60806040518061073a60208285610717565b9150925061074a60208285610717565b9150925061075a60048285610717565b9150925061076a60048285610717565b9150925061077a60048285610717565b9150925061078a60048285610717565b9150925061079a60048285610717565b915092506107aa60048285610717565b915092506107ba60018285610717565b915092506107ca60018285610717565b915092506107da60088285610717565b60209091019350905060005b6020811015610808576107fb60048386610717565b90945091506001016107e6565b506000815281810382a081900390209150505b90565b60008061082a83611a59565b9050600384161561083a57600080fd5b602081019035610857565b60009081526020919091526040902090565b8460051c8160005b601b8110156108af5760208501943583821c60011680156108875760018114610898576108a5565b6108918285610845565b93506108a5565b6108a28483610845565b93505b505060010161085f565b5060805191508181146108ca57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b0182610946576000610948565b815b90861663ffffffff16179250505092915050565b6000610966611acb565b5060e08051610100805163ffffffff90811690935284831690526080918516156109b657806008018261016001518663ffffffff16602081106109a557fe5b63ffffffff90921660209290920201525b6109be610710565b95945050505050565b60006109d1611acb565b5060806000600463ffffffff881614806109f157508663ffffffff166005145b15610a675760008261016001518663ffffffff1660208110610a0f57fe5b602002015190508063ffffffff168563ffffffff16148015610a3757508763ffffffff166004145b80610a5f57508063ffffffff168563ffffffff1614158015610a5f57508763ffffffff166005145b915050610ae4565b8663ffffffff1660061415610a855760008460030b13159050610ae4565b8663ffffffff1660071415610aa25760008460030b139050610ae4565b8663ffffffff1660011415610ae457601f601087901c1680610ac85760008560030b1291505b8063ffffffff1660011415610ae25760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b2a576002610b0f8861ffff1660106108e9565b63ffffffff90811690911b8201600401166080840152610b3c565b60808301805160040163ffffffff1690525b610b44610710565b98975050505050505050565b6000603f601a86901c81169086166020821015610f245760088263ffffffff1610158015610b845750600f8263ffffffff16105b15610c2b578163ffffffff1660081415610ba057506020610c26565b8163ffffffff1660091415610bb757506021610c26565b8163ffffffff16600a1415610bce5750602a610c26565b8163ffffffff16600b1415610be55750602b610c26565b8163ffffffff16600c1415610bfc57506024610c26565b8163ffffffff16600d1415610c1357506025610c26565b8163ffffffff16600e1415610c26575060265b600091505b63ffffffff8216610e7457601f600688901c16602063ffffffff83161015610d485760088263ffffffff1610610c6657869350505050610708565b63ffffffff8216610c865763ffffffff86811691161b9250610708915050565b8163ffffffff1660021415610caa5763ffffffff86811691161c9250610708915050565b8163ffffffff1660031415610cd5576103788163ffffffff168763ffffffff16901c826020036108e9565b8163ffffffff1660041415610cf9575050505063ffffffff8216601f84161b610708565b8163ffffffff1660061415610d1d575050505063ffffffff8216601f84161c610708565b8163ffffffff1660071415610d48576103788763ffffffff168763ffffffff16901c886020036108e9565b8163ffffffff1660201480610d6357508163ffffffff166021145b15610d75578587019350505050610708565b8163ffffffff1660221480610d9057508163ffffffff166023145b15610da2578587039350505050610708565b8163ffffffff1660241415610dbe578587169350505050610708565b8163ffffffff1660251415610dda578587179350505050610708565b8163ffffffff1660261415610df6578587189350505050610708565b8163ffffffff1660271415610e12575050505082821719610708565b8163ffffffff16602a1415610e45578560030b8760030b12610e35576000610e38565b60015b60ff169350505050610708565b8163ffffffff16602b1415610e6e578563ffffffff168763ffffffff1610610e35576000610e38565b50610f1f565b8163ffffffff16600f1415610e975760108563ffffffff16901b92505050610708565b8163ffffffff16601c1415610f1f578063ffffffff1660021415610ec057505050828202610708565b8063ffffffff1660201480610edb57508063ffffffff166021145b15610f1f578063ffffffff1660201415610ef3579419945b60005b6380000000871615610f15576401fffffffe600197881b169601610ef6565b9250610708915050565b6111af565b60288263ffffffff16101561108e578163ffffffff1660201415610f7157610f688660031660080260180363ffffffff168563ffffffff16901c60ff1660086108e9565b92505050610708565b8163ffffffff1660211415610fa757610f688660021660080260100363ffffffff168563ffffffff16901c61ffff1660106108e9565b8163ffffffff1660221415610fd85750505063ffffffff60086003851602811681811b198416918316901b17610708565b8163ffffffff1660231415610ff1578392505050610708565b8163ffffffff1660241415611025578560031660080260180363ffffffff168463ffffffff16901c60ff1692505050610708565b8163ffffffff166025141561105a578560021660080260100363ffffffff168463ffffffff16901c61ffff1692505050610708565b8163ffffffff1660261415610f1f5750505063ffffffff60086003851602601803811681811c198416918316901c17610708565b8163ffffffff16602814156110c65750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610708565b8163ffffffff16602914156110ff5750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610708565b8163ffffffff16602a14156111305750505063ffffffff60086003851602811681811c198316918416901c17610708565b8163ffffffff16602b1415611149578492505050610708565b8163ffffffff16602e141561117d5750505063ffffffff60086003851602601803811681811b198316918416901b17610708565b8163ffffffff1660301415611196578392505050610708565b8163ffffffff16603814156111af578492505050610708565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015290519081900360640190fd5b6000611220611acb565b506080602063ffffffff86161061129857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff8516158015906112aa5750825b156112d857838161016001518663ffffffff16602081106112c757fe5b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526109be610710565b6000611305611acb565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa141561137d5781610fff81161561134f57610fff811661100003015b63ffffffff84166113735760e08801805163ffffffff838201169091529550611377565b8395505b5061178c565b8563ffffffff16610fcd1415611399576340000000945061178c565b8563ffffffff1661101814156113b2576001945061178c565b8563ffffffff1661109614156113ea57600161012088015260ff83166101008801526113dc610710565b97505050505050505061081b565b8563ffffffff16610fa3141561160a5763ffffffff831661140a57611605565b63ffffffff8316600514156115e257600061142c8363fffffffc16600161081e565b6020890151909150600081901a6001141561149257600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0100000000000000000000000000000000000000000000000000000000000000175b6000805460208b01516040808d015181517fe03110e1000000000000000000000000000000000000000000000000000000008152600481019390935263ffffffff1660248301528051849373ffffffffffffffffffffffffffffffffffffffff169263e03110e1926044808301939192829003018186803b15801561151657600080fd5b505afa15801561152a573d6000803e3d6000fd5b505050506040513d604081101561154057600080fd5b508051602090910151909250905060038616600481900382811015611563578092505b5081861015611570578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506115c78663fffffffc166001866119bd565b60408b018051820163ffffffff169052975061160592505050565b63ffffffff8316600314156115f957809450611605565b63ffffffff9450600993505b61178c565b8563ffffffff16610fa414156116de5763ffffffff831660011480611635575063ffffffff83166002145b80611646575063ffffffff83166004145b1561165357809450611605565b63ffffffff8316600614156115f95760006116758363fffffffc16600161081e565b60208901519091506003841660040383811015611690578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b17602088015260006040880152935083611605565b8563ffffffff16610fd7141561178c578163ffffffff16600314156117805763ffffffff83161580611716575063ffffffff83166005145b80611727575063ffffffff83166003145b156117355760009450611605565b63ffffffff831660011480611750575063ffffffff83166002145b80611761575063ffffffff83166006145b80611772575063ffffffff83166004145b156115f95760019450611605565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526117cd610710565b97505050505050505090565b60006117e3611acb565b5060806000601063ffffffff88161415611802575060c081015161195a565b8663ffffffff16601114156118225763ffffffff861660c083015261195a565b8663ffffffff166012141561183c575060a081015161195a565b8663ffffffff166013141561185c5763ffffffff861660a083015261195a565b8663ffffffff16601814156118915763ffffffff600387810b9087900b02602081901c821660c08501521660a083015261195a565b8663ffffffff16601914156118c35763ffffffff86811681871602602081901c821660c08501521660a083015261195a565b8663ffffffff16601a141561190e578460030b8660030b816118e157fe5b0763ffffffff1660c0830152600385810b9087900b816118fd57fe5b0563ffffffff1660a083015261195a565b8663ffffffff16601b141561195a578463ffffffff168663ffffffff168161193257fe5b0663ffffffff90811660c08401528581169087168161194d57fe5b0463ffffffff1660a08301525b63ffffffff84161561198f57808261016001518563ffffffff166020811061197e57fe5b63ffffffff90921660209290920201525b60808201805163ffffffff808216606086015260049091011690526119b2610710565b979650505050505050565b60006119c883611a59565b905060038416156119d857600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a4e5760208401933582821c6001168015611a265760018114611a3757611a44565b611a308286610845565b9450611a44565b611a418583610845565b94505b50506001016119fe565b505060805250505050565b60ff81166103800261016681019036906104e601811015611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611b566023913960400191505060405180910390fd5b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b31611b36
565b905290565b604051806104000160405280602090602082028036833750919291505056fe636865636b207468617420746865726520697320656e6f7567682063616c6c64617461a164736f6c6343000706000a"
var
MIPSDeployedBin
=
"0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d014610067578063f8e0cb9614610098575b600080fd5b61004e61016c565b6040805163ffffffff9092168252519081900360200190f35b61006f610174565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61015a600480360360408110156100ae57600080fd5b8101906020810181356401000000008111156100c957600080fd5b8201836020820111156100db57600080fd5b803590602001918460018302840111640100000000831117156100fd57600080fd5b91939092909160208101903564010000000081111561011b57600080fd5b82018360208201111561012d57600080fd5b8035906020019184600183028401116401000000008311171561014f57600080fd5b509092509050610190565b60408051918252519081900360200190f35b634000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600061019a611a
d3565b608081146101a757600080fd5b604051610600146101b757600080fd5b606486146101c457600080fd5b61016684146101d257600080fd5b6101ef565b8035602084810360031b9190911c8352920192910190565b8560806101fe602082846101d7565b9150915061020e602082846101d7565b9150915061021e600482846101d7565b9150915061022e600482846101d7565b9150915061023e600482846101d7565b9150915061024e600482846101d7565b9150915061025e600482846101d7565b9150915061026e600482846101d7565b9150915061027e600182846101d7565b9150915061028e600182846101d7565b9150915061029e600882846101d7565b6020810190819052909250905060005b60208110156102d0576102c3600483856101d7565b90935091506001016102ae565b505050806101200151156102ee576102e6610710565b915050610708565b6101408101805160010167ffffffffffffffff1690526060810151600090610316908261081e565b9050603f601a82901c16600281148061033557508063ffffffff166003145b15610382576103788163ffffffff1660021461035257601f610355565b60005b60ff16600261036b856303ffffff16601a6108e9565b63ffffffff16901b61095c565b9350505050610708565b6101608301516000908190601f601086901c81169190601587901c16602081106103a857fe5b602002015192508063ffffffff851615806103c957508463ffffffff16601c145b156103fa578661016001518263ffffffff16602081106103e557fe5b6020020151925050601f600b86901c166104b1565b60208563ffffffff16101561045d578463ffffffff16600c148061042457508463ffffffff16600d145b8061043557508463ffffffff16600e145b15610446578561ffff169250610458565b6104558661ffff1660106108e9565b92505b6104b1565b60288563ffffffff1610158061047957508463ffffffff166022145b8061048a57508463ffffffff166026145b156104b1578661016001518263ffffffff16602081106104a657fe5b602002015192508190505b60048563ffffffff16101580156104ce575060088563ffffffff16105b806104df57508463ffffffff166001145b156104fe576104f0858784876109c7565b975050505050505050610708565b63ffffffff60006020878316106105635761051e8861ffff1660106108e9565b9095019463fffffffc861661053481600161081e565b915060288863ffffffff161015801561055457508763ffffffff16603014155b1561056157809250600093505b505b600061057189888885610b50565b63ffffffff9081169150603f8a16908916158015610596575060088163ffffffff1610155b80156105a85750601c8163ffffffff16105b15610687578063ffffffff16600814806105c857508063ffffffff166009145b156105ff576105ed8163ffffffff166008146105e457856105e7565b60005b8961095c565b9b505050505050505050505050610708565b8063ffffffff16600a1415610620576105ed858963ffffffff8a1615611216565b8063ffffffff16600b1415610642576105ed858963ffffffff8a161515611216565b8063ffffffff16600c1415610659576105ed6112fb565b60108163ffffffff16101580156106765750601c8163ffffffff16105b15610687576105ed8189898861178e565b8863ffffffff1660381480156106a2575063ffffffff861615155b156106d15760018b61016001518763ffffffff16602081106106c057fe5b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146106ee576106ee84600184611972565b6106fa85836001611216565b9b5050505050505050505050505b949350505050565b6000610728565b602083810382015183520192910190565b60806040518061073a60208285610717565b9150925061074a60208285610717565b9150925061075a60048285610717565b9150925061076a60048285610717565b9150925061077a60048285610717565b9150925061078a60048285610717565b9150925061079a60048285610717565b915092506107aa60048285610717565b915092506107ba60018285610717565b915092506107ca60018285610717565b915092506107da60088285610717565b60209091019350905060005b6020811015610808576107fb60048386610717565b90945091506001016107e6565b506000815281810382a081900390209150505b90565b60008061082a83611a0e565b9050600384161561083a57600080fd5b602081019035610857565b60009081526020919091526040902090565b8460051c8160005b601b8110156108af5760208501943583821c60011680156108875760018114610898576108a5565b6108918285610845565b93506108a5565b6108a28483610845565b93505b505060010161085f565b5060805191508181146108ca57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b0182610946576000610948565b815b90861663ffffffff16179250505092915050565b6000610966611ad3565b5060e08051610100805163ffffffff90811690935284831690526080918516156109b657806008018261016001518663ffffffff16602081106109a557fe5b63ffffffff90921660209290920201525b6109be610710565b95945050505050565b60006109d1611ad3565b5060806000600463ffffffff881614806109f157508663ffffffff166005145b15610a675760008261016001518663ffffffff1660208110610a0f57fe5b602002015190508063ffffffff168563ffffffff16148015610a3757508763ffffffff166004145b80610a5f57508063ffffffff168563ffffffff1614158015610a5f57508763ffffffff166005145b915050610ae4565b8663ffffffff1660061415610a855760008460030b13159050610ae4565b8663ffffffff1660071415610aa25760008460030b139050610ae4565b8663ffffffff1660011415610ae457601f601087901c1680610ac85760008560030b1291505b8063ffffffff1660011415610ae25760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b2a576002610b0f8861ffff1660106108e9565b63ffffffff90811690911b8201600401166080840152610b3c565b60808301805160040163ffffffff1690525b610b44610710565b98975050505050505050565b6000603f601a86901c81169086166020821015610f245760088263ffffffff1610158015610b845750600f8263ffffffff16105b15610c2b578163ffffffff1660081415610ba057506020610c26565b8163ffffffff1660091415610bb757506021610c26565b8163ffffffff16600a1415610bce5750602a610c26565b8163ffffffff16600b1415610be55750602b610c26565b8163ffffffff16600c1415610bfc57506024610c26565b8163ffffffff16600d1415610c1357506025610c26565b8163ffffffff16600e1415610c26575060265b600091505b63ffffffff8216610e7457601f600688901c16602063ffffffff83161015610d485760088263ffffffff1610610c6657869350505050610708565b63ffffffff8216610c865763ffffffff86811691161b9250610708915050565b8163ffffffff1660021415610caa5763ffffffff86811691161c9250610708915050565b8163ffffffff1660031415610cd5576103788163ffffffff168763ffffffff16901c826020036108e9565b8163ffffffff1660041415610cf9575050505063ffffffff8216601f84161b610708565b8163ffffffff1660061415610d1d575050505063ffffffff8216601f84161c610708565b8163ffffffff1660071415610d48576103788763ffffffff168763ffffffff16901c886020036108e9565b8163ffffffff1660201480610d6357508163ffffffff166021145b15610d75578587019350505050610708565b8163ffffffff1660221480610d9057508163ffffffff166023145b15610da2578587039350505050610708565b8163ffffffff1660241415610dbe578587169350505050610708565b8163ffffffff1660251415610dda578587179350505050610708565b8163ffffffff1660261415610df6578587189350505050610708565b8163ffffffff1660271415610e12575050505082821719610708565b8163ffffffff16602a1415610e45578560030b8760030b12610e35576000610e38565b60015b60ff169350505050610708565b8163ffffffff16602b1415610e6e578563ffffffff168763ffffffff1610610e35576000610e38565b50610f1f565b8163ffffffff16600f1415610e975760108563ffffffff16901b92505050610708565b8163ffffffff16601c1415610f1f578063ffffffff1660021415610ec057505050828202610708565b8063ffffffff1660201480610edb57508063ffffffff166021145b15610f1f578063ffffffff1660201415610ef3579419945b60005b6380000000871615610f15576401fffffffe600197881b169601610ef6565b9250610708915050565b6111af565b60288263ffffffff16101561108e578163ffffffff1660201415610f7157610f688660031660080260180363ffffffff168563ffffffff16901c60ff1660086108e9565b92505050610708565b8163ffffffff1660211415610fa757610f688660021660080260100363ffffffff168563ffffffff16901c61ffff1660106108e9565b8163ffffffff1660221415610fd85750505063ffffffff60086003851602811681811b198416918316901b17610708565b8163ffffffff1660231415610ff1578392505050610708565b8163ffffffff1660241415611025578560031660080260180363ffffffff168463ffffffff16901c60ff1692505050610708565b8163ffffffff166025141561105a578560021660080260100363ffffffff168463ffffffff16901c61ffff1692505050610708565b8163ffffffff1660261415610f1f5750505063ffffffff60086003851602601803811681811c198416918316901c17610708565b8163ffffffff16602814156110c65750505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610708565b8163ffffffff16602914156110ff5750505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610708565b8163ffffffff16602a14156111305750505063ffffffff60086003851602811681811c198316918416901c17610708565b8163ffffffff16602b1415611149578492505050610708565b8163ffffffff16602e141561117d5750505063ffffffff60086003851602601803811681811b198316918416901b17610708565b8163ffffffff1660301415611196578392505050610708565b8163ffffffff16603814156111af578492505050610708565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015290519081900360640190fd5b6000611220611ad3565b506080602063ffffffff86161061129857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff8516158015906112aa5750825b156112d857838161016001518663ffffffff16602081106112c757fe5b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526109be610710565b6000611305611ad3565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa141561137d5781610fff81161561134f57610fff811661100003015b63ffffffff84166113735760e08801805163ffffffff838201169091529550611377565b8395505b50611741565b8563ffffffff16610fcd14156113995763400000009450611741565b8563ffffffff1661101814156113b25760019450611741565b8563ffffffff1661109614156113ea57600161012088015260ff83166101008801526113dc610710565b97505050505050505061081b565b8563ffffffff16610fa314156115bf5763ffffffff831661140a576115ba565b63ffffffff83166005141561159757600061142c8363fffffffc16600161081e565b60208901519091508060001a6001141561144c5761144981611a80565b90505b600080546040808c015181517fe03110e10000000000000000000000000000000000000000000000000000000081526004810186905263ffffffff90911660248201528151849373ffffffffffffffffffffffffffffffffffffffff169263e03110e19260448082019391829003018186803b1580156114cb57600080fd5b505afa1580156114df573d6000803e3d6000fd5b505050506040513d60408110156114f557600080fd5b508051602090910151909250905060038616600481900382811015611518578092505b5081861015611525578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b0391508119811690508381198716179550505061157c8663fffffffc16600186611972565b60408b018051820163ffffffff16905297506115ba92505050565b63ffffffff8316600314156115ae578094506115ba565b63ffffffff9450600993505b611741565b8563ffffffff16610fa414156116935763ffffffff8316600114806115ea575063ffffffff83166002145b806115fb575063ffffffff83166004145b15611608578094506115ba565b63ffffffff8316600614156115ae57600061162a8363fffffffc16600161081e565b60208901519091506003841660040383811015611645578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836115ba565b8563ffffffff16610fd71415611741578163ffffffff16600314156117355763ffffffff831615806116cb575063ffffffff83166005145b806116dc575063ffffffff83166003145b156116ea57600094506115ba565b63ffffffff831660011480611705575063ffffffff83166002145b80611716575063ffffffff83166006145b80611727575063ffffffff83166004145b156115ae57600194506115ba565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b01526004019091169052611782610710565b97505050505050505090565b6000611798611ad3565b5060806000601063ffffffff881614156117b7575060c081015161190f565b8663ffffffff16601114156117d75763ffffffff861660c083015261190f565b8663ffffffff16601214156117f1575060a081015161190f565b8663ffffffff16601314156118115763ffffffff861660a083015261190f565b8663ffffffff16601814156118465763ffffffff600387810b9087900b02602081901c821660c08501521660a083015261190f565b8663ffffffff16601914156118785763ffffffff86811681871602602081901c821660c08501521660a083015261190f565b8663ffffffff16601a14156118c3578460030b8660030b8161189657fe5b0763ffffffff1660c0830152600385810b9087900b816118b257fe5b0563ffffffff1660a083015261190f565b8663ffffffff16601b141561190f578463ffffffff168663ffffffff16816118e757fe5b0663ffffffff90811660c08401528581169087168161190257fe5b0463ffffffff1660a08301525b63ffffffff84161561194457808261016001518563ffffffff166020811061193357fe5b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611967610710565b979650505050505050565b600061197d83611a0e565b9050600384161561198d57600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611a035760208401933582821c60011680156119db57600181146119ec576119f9565b6119e58286610845565b94506119f9565b6119f68583610845565b94505b50506001016119b3565b505060805250505050565b60ff81166103800261016681019036906104e601811015611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611b5e6023913960400191505060405180910390fd5b50919050565b600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611b39611b3e
565b905290565b604051806104000160405280602090602082028036833750919291505056fe636865636b207468617420746865726520697320656e6f7567682063616c6c64617461a164736f6c6343000706000a"
var
MIPSDeployedSourceMap
=
"1
075:34473:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1655:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2081:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23259:5721;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23259:5721:0;;-1:-1:-1;23259:5721:0;-1:-1:-1;23259:5721:0;:::i;:::-;;;;;;;;;;;;;;;;1655:45;1690:10;1655:45;:::o;2081:29::-;;;;;;:::o;23259:5721::-;23337:7;23356:18;;:::i;:::-;23491:4;23484:5;23481:15;23471:2;;23560:1;23558;23551:11;23471:2;23608:4;23602:11;23615;23599:28;23589:2;;23681:1;23679;23672:11;23589:2;23741:3;23723:16;23720:25;23710:2;;23815:1;23813;23806:11;23710:2;23871:3;23857:12;23854:21;23844:2;;23944:1;23942;23935:11;23844:2;23974:416;;;24208:24;;24196:2;24192:13;;;24189:1;24185:21;24181:52;;;;24250:20;;24304:21;;;24358:18;;;24052:338::o;:::-;24467:16;24525:4;24577:18;24592:2;24589:1;24586;24577:18;:::i;:::-;24569:26;;;;24627:18;24642:2;24639:1;24636;24627:18;:::i;:::-;24619:26;;;;24681:17;24696:1;24693;24690;24681:17;:::i;:::-;24673:25;;;;24738:17;24753:1;24750;24747;24738:17;:::i;:::-;24730:25;;;;24783:17;24798:1;24795;24792;24783:17;:::i;:::-;24775:25;;;;24832:17;24847:1;24844;24841;24832:17;:::i;:::-;24824:25;;;;24877:17;24892:1;24889;24886;24877:17;:::i;:::-;24869:25;;;;24922:17;24937:1;24934;24931;24922:17;:::i;:::-;24914:25;;;;24969:17;24984:1;24981;24978;24969:17;:::i;:::-;24961:25;;;;25020:17;25035:1;25032;25029;25020:17;:::i;:::-;25012:25;;;;25069:17;25084:1;25081;25078;25069:17;:::i;:::-;25178:2;25171:10;;25161:21;;;;25061:25;;-1:-1:-1;25171:10:0;-1:-1:-1;25266:1:0;25251:105;25276:2;25273:1;25270:9;25251:105;;;25325:17;25340:1;25337;25334;25325:17;:::i;:::-;25317:25;;-1:-1:-1;25317:25:0;-1:-1:-1;25294:1:0;25287:9;25251:105;;;25255:14;;;25422:5;:12;;;25418:63;;;25457:13;:11;:13::i;:::-;25450:20;;;;;25418:63;25491:10;;;:15;;25505:1;25491:15;;;;;25568:8;;;;-1:-1:-1;;25560:20:0;;-1:-1:-1;25560:7:0;:20::i;:::-;25546:34;-1:-1:-1;25606:10:0;25614:2;25606:10;;;;25675:1;25665:11;;;:26;;;25680:6;:11;;25690:1;25680:11;25665:26;25661:332;;;25918:64;25929:6;:11;;25939:1;25929:11;:20;;25947:2;25929:20;;;25943:1;25929:20;25918:64;;25980:1;25951:25;25954:4;25961:10;25954:17;25973:2;25951;:25::i;:::-;:30;;;;25918:10;:64::i;:::-;25911:71;;;;;;;25661:332;26218:15;;;;26029:9;;;;26158:4;26152:2;26144:10;;;26143:19;;;26218:15;26243:2;26235:10;;;26234:19;26218:36;;;;;;;;;;;;-1:-1:-1;26279:5:0;26299:11;;;;;:29;;;26314:6;:14;;26324:4;26314:14;26299:29;26295:756;;;26383:5;:15;;;26399:5;26383:22;;;;;;;;;;;;;;-1:-1:-1;;26442:4:0;26436:2;26428:10;;;26427:19;26295:756;;;26476:4;26467:6;:13;;;26463:588;;;26585:6;:13;;26595:3;26585:13;:30;;;;26602:6;:13;;26612:3;26602:13;26585:30;:47;;;;26619:6;:13;;26629:3;26619:13;26585:47;26581:229;;;26687:4;26694:6;26687:13;26682:18;;26581:229;;;26774:21;26777:4;26784:6;26777:13;26792:2;26774;:21::i;:::-;26769:26;;26581:229;26463:588;;;26840:4;26830:6;:14;;;;:32;;;;26848:6;:14;;26858:4;26848:14;26830:32;:50;;;;26866:6;:14;;26876:4;26866:14;26830:50;26826:225;;;26942:5;:15;;;26958:5;26942:22;;;;;;;;;;;;;26937:27;;27035:5;27027:13;;26826:225;27076:1;27066:6;:11;;;;:25;;;;;27090:1;27081:6;:10;;;27066:25;27065:42;;;;27096:6;:11;;27106:1;27096:11;27065:42;27061:117;;;27130:37;27143:6;27151:4;27157:5;27164:2;27130:12;:37::i;:::-;27123:44;;;;;;;;;;;27061:117;27207:13;27188:16;27343:4;27333:14;;;;27329:400;;27404:19;27407:4;27412:6;27407:11;27420:2;27404;:19::i;:::-;27398:25;;;;27456:10;27451:15;;27486:16;27451:15;27500:1;27486:7;:16::i;:::-;27480:22;;27530:4;27520:6;:14;;;;:32;;;;;27538:6;:14;;27548:4;27538:14;;27520:32;27516:203;;;27609:4;27597:16;;27703:1;27695:9;;27516:203;27329:400;;27754:10;27767:26;27775:4;27781:2;27785;27789:3;27767:7;:26::i;:::-;27796:10;27767:39;;;;-1:-1:-1;27888:4:0;27881:11;;;27916;;;:24;;;;;27939:1;27931:4;:9;;;;27916:24;:39;;;;;27951:4;27944;:11;;;27916:39;27912:711;;;27975:4;:9;;27983:1;27975:9;:22;;;;27988:4;:9;;27996:1;27988:9;27975:22;27971:116;;;28035:37;28046:4;:9;;28054:1;28046:9;:21;;28062:5;28046:21;;;28058:1;28046:21;28069:2;28035:10;:37::i;:::-;28028:44;;;;;;;;;;;;;;;27971:116;28105:4;:11;;28113:3;28105:11;28101:93;;;28151:28;28160:5;28167:2;28171:7;;;;28151:8;:28::i;28101:93::-;28211:4;:11;;28219:3;28211:11;28207:93;;;28257:28;28266:5;28273:2;28277:7;;;;;28257:8;:28::i;28207:93::-;28362:4;:11;;28370:3;28362:11;28358:72;;;28400:15;:13;:15::i;28358:72::-;28521:4;28513;:12;;;;:27;;;;;28536:4;28529;:11;;;28513:27;28509:104;;;28567:31;28578:4;28584:2;28588;28592:5;28567:10;:31::i;28509:104::-;28675:6;:14;;28685:4;28675:14;:28;;;;-1:-1:-1;28693:10:0;;;;;28675:28;28671:85;;;28744:1;28719:5;:15;;;28735:5;28719:22;;;;;;;;;:26;;;;:22;;;;;;:26;28671:85;28794:9;:26;;28807:13;28794:26;28790:84;;28836:27;28845:9;28856:1;28859:3;28836:8;:27::i;:::-;28947:26;28956:5;28963:3;28968:4;28947:8;:26::i;:::-;28940:33;;;;;;;;;;;;;23259:5721;;;;;;;:::o;2605:1791::-;2646:12;2791:206;;;2891:2;2887:13;;;2877:24;;2871:31;2860:43;;2931:13;;2970;;;2842:155::o;:::-;3068:4;3152;3146:11;3180:5;3252:21;3270:2;3266;3260:4;3252:21;:::i;:::-;3240:33;;;;3310:21;3328:2;3324;3318:4;3310:21;:::i;:::-;3298:33;;;;3372:20;3390:1;3386:2;3380:4;3372:20;:::i;:::-;3360:32;;;;3437:20;3455:1;3451:2;3445:4;3437:20;:::i;:::-;3425:32;;;;3490:20;3508:1;3504:2;3498:4;3490:20;:::i;:::-;3478:32;;;;3547:20;3565:1;3561:2;3555:4;3547:20;:::i;:::-;3535:32;;;;3600:20;3618:1;3614:2;3608:4;3600:20;:::i;:::-;3588:32;;;;3653:20;3671:1;3667:2;3661:4;3653:20;:::i;:::-;3641:32;;;;3708:20;3726:1;3722:2;3716:4;3708:20;:::i;:::-;3696:32;;;;3767:20;3785:1;3781:2;3775:4;3767:20;:::i;:::-;3755:32;;;;3824:20;3842:1;3838:2;3832:4;3824:20;:::i;:::-;3885:2;3875:13;;;;-1:-1:-1;3812:32:0;-1:-1:-1;3983:1:0;3968:112;3993:2;3990:1;3987:9;3968:112;;;4046:20;4064:1;4060:2;4054:4;4046:20;:::i;:::-;4034:32;;-1:-1:-1;4034:32:0;-1:-1:-1;4011:1:0;4004:9;3968:112;;;3972:14;4143:1;4139:2;4132:13;4238:5;4234:2;4230:14;4223:5;4218:27;4344:14;;;4327:32;;;-1:-1:-1;;2605:1791:0;;:::o;19474:1741::-;19547:11;19630:14;19647:24;19659:11;19647;:24::i;:::-;19630:41;;19767:1;19760:5;19756:13;19753:2;;;19798:1;19795;19788:12;19753:2;19931;19919:15;;;19876:20;20029:141;;;;20076:12;;;20112:2;20105:13;;;;20153:2;20140:16;;;20058:112::o;:::-;20325:5;20322:1;20318:13;20356:4;20388:1;20373:375;20398:2;20395:1;20392:9;20373:375;;;20513:2;20501:15;;;20454:20;20544:12;;;20558:1;20540:20;20577:78;;;;20661:1;20656:78;;;;20533:201;;20577:78;20614:23;20629:7;20623:4;20614:23;:::i;:::-;20606:31;;20577:78;;20656;20693:23;20711:4;20702:7;20693:23;:::i;:::-;20685:31;;20533:201;-1:-1:-1;;20416:1:0;20409:9;20373:375;;;20377:14;20850:4;20844:11;20829:26;;20928:7;20922:4;20919:17;20909:2;;20966:10;20963:1;20956:21;21004:2;21001:1;20994:13;20909:2;-1:-1:-1;;21140:2:0;21129:14;;;;21117:10;21113:31;21110:1;21106:39;21170:16;;;;21188:10;21166:33;;19691:1518;-1:-1:-1;;;19691:1518:0:o;2209:288::-;2270:6;2305:18;;;;2314:8;;;;2305:18;;;;;;2304:25;;;;;2321:1;2364:2;:9;;;2358:16;;;;;2357:22;;2356:32;;;;;;;2414:9;;2413:15;2304:25;2467:21;;2487:1;2467:21;;;2478:6;2467:21;2452:11;;;;;:37;;-1:-1:-1;;;2209:288:0;;;;:::o;16963:624::-;17032:12;17091:18;;:::i;:::-;-1:-1:-1;17246:8:0;;;17275:12;;;17264:23;;;;;;;17297:20;;;;;17151:4;;17421:13;;;17417:82;;17478:6;17487:1;17478:10;17450:5;:15;;;17466:8;17450:25;;;;;;;;;:38;;;;:25;;;;;;:38;17417:82;17567:13;:11;:13::i;:::-;17560:20;16963:624;-1:-1:-1;;;;;16963:624:0:o;12395:1713::-;12492:12;12550:18;;:::i;:::-;-1:-1:-1;12610:4:0;12634:17;12733:1;12722:12;;;;;:28;;;12738:7;:12;;12749:1;12738:12;12722:28;12718:859;;;12766:9;12778:5;:15;;;12794:6;12778:23;;;;;;;;;;;;;12766:35;;12838:2;12831:9;;:3;:9;;;:25;;;;;12844:7;:12;;12855:1;12844:12;12831:25;12830:58;;;;12869:2;12862:9;;:3;:9;;;;:25;;;;;12875:7;:12;;12886:1;12875:12;12862:25;12815:73;;12718:859;;;;12988:7;:12;;12999:1;12988:12;12984:593;;;13045:1;13037:3;13031:15;;;;13016:30;;12984:593;;;13137:7;:12;;13148:1;13137:12;13133:444;;;13193:1;13186:3;13180:14;;;13165:29;;13133:444;;;13302:7;:12;;13313:1;13302:12;13298:279;;;13382:4;13376:2;13367:11;;;13366:20;13405:8;13401:76;;13461:1;13454:3;13448:14;;;13433:29;;13401:76;13494:3;:8;;13501:1;13494:8;13490:77;;;13551:1;13543:3;13537:15;;;;13522:30;;13490:77;13298:279;;13645:8;;;;;13715:12;;;;13704:23;;;;;13859:162;;;;13946:1;13920:22;13923:5;13931:6;13923:14;13939:2;13920;:22::i;:::-;:27;;;;;;;13906:42;;13915:1;13906:42;13891:57;:12;;;:57;13859:162;;;13994:12;;;;;14009:1;13994:16;13979:31;;;;13859:162;14088:13;:11;:13::i;:::-;14081:20;12395:1713;-1:-1:-1;;;;;;;;12395:1713:0:o;29026:6520::-;29113:6;29147:10;29155:2;29147:10;;;;;;29194:11;;29298:4;29289:13;;29285:6215;;;29417:1;29407:6;:11;;;;:27;;;;;29431:3;29422:6;:12;;;29407:27;29403:532;;;29458:6;:11;;29468:1;29458:11;29454:431;;;-1:-1:-1;29480:4:0;29454:431;;;29528:6;:11;;29538:1;29528:11;29524:361;;;-1:-1:-1;29550:4:0;29524:361;;;29594:6;:13;;29604:3;29594:13;29590:295;;;-1:-1:-1;29618:4:0;29590:295;;;29659:6;:13;;29669:3;29659:13;29655:230;;;-1:-1:-1;29683:4:0;29655:230;;;29725:6;:13;;29735:3;29725:13;29721:164;;;-1:-1:-1;29749:4:0;29721:164;;;29790:6;:13;;29800:3;29790:13;29786:99;;;-1:-1:-1;29814:4:0;29786:99;;;29854:6;:13;;29864:3;29854:13;29850:35;;;-1:-1:-1;29878:4:0;29850:35;29919:1;29910:10;;29403:532;29988:11;;;29984:3190;;30048:4;30043:1;30035:9;;;30034:18;30081:4;30035:9;30074:11;;;30070:1203;;;30165:4;30157;:12;;;30153:1102;;30204:2;30197:9;;;;;;;30153:1102;30306:12;;;30302:953;;30353:11;;;;;;;;-1:-1:-1;30346:18:0;;-1:-1:-1;;30346:18:0;30302:953;30465:4;:12;;30473:4;30465:12;30461:794;;;30512:11;;;;;;;;-1:-1:-1;30505:18:0;;-1:-1:-1;;30505:18:0;30461:794;30627:4;:12;;30635:4;30627:12;30623:632;;;30674:27;30683:5;30677:11;;:2;:11;;;;30695:5;30690:2;:10;30674:2;:27::i;30623:632::-;30811:4;:12;;30819:4;30811:12;30807:448;;;-1:-1:-1;;;;30858:17:0;;;30870:4;30865:9;;30858:17;30851:24;;30807:448;30986:4;:12;;30994:4;30986:12;30982:273;;;-1:-1:-1;;;;31033:17:0;;;31045:4;31040:9;;31033:17;31026:24;;30982:273;31164:4;:12;;31172:4;31164:12;31160:95;;;31211:21;31220:2;31214:8;;:2;:8;;;;31229:2;31224;:7;31211:2;:21::i;31160:95::-;31417:4;:12;;31425:4;31417:12;:28;;;;31433:4;:12;;31441:4;31433:12;31417:28;31413:1025;;;31481:2;31476;:7;31469:14;;;;;;;31413:1025;31559:4;:12;;31567:4;31559:12;:28;;;;31575:4;:12;;31583:4;31575:12;31559:28;31555:883;;;31623:2;31618;:7;31611:14;;;;;;;31555:883;31693:4;:12;;31701:4;31693:12;31689:749;;;31741:2;31736;:7;31729:14;;;;;;;31689:749;31810:4;:12;;31818:4;31810:12;31806:632;;;31859:2;31854;:7;31846:16;;;;;;;31806:632;31930:4;:12;;31938:4;31930:12;31926:512;;;31979:2;31974;:7;31966:16;;;;;;;31926:512;32050:4;:12;;32058:4;32050:12;32046:392;;;-1:-1:-1;;;;32095:7:0;;;32093:10;32086:17;;32046:392;32194:4;:12;;32202:4;32194:12;32190:248;;;32253:2;32235:21;;32241:2;32235:21;;;:29;;32263:1;32235:29;;;32259:1;32235:29;32228:36;;;;;;;;;32190:248;32365:4;:12;;32373:4;32365:12;32361:77;;;32409:2;32406:5;;:2;:5;;;:13;;32418:1;32406:13;;32361:77;29984:3190;;;;32515:6;:13;;32525:3;32515:13;32511:663;;;32561:2;32555;:8;;;;32548:15;;;;;;32511:663;32624:6;:14;;32634:4;32624:14;32620:554;;;32685:4;:9;;32693:1;32685:9;32681:92;;;-1:-1:-1;;;32732:21:0;;;32718:36;;32681:92;32817:4;:12;;32825:4;32817:12;:28;;;;32833:4;:12;;32841:4;32833:12;32817:28;32813:347;;;32873:4;:12;;32881:4;32873:12;32869:75;;;32918:3;;;32869:75;32965:8;32999:113;33009:10;33006:13;;:18;32999:113;;33081:8;33052:3;33081:8;;;;;33052:3;32999:113;;;33140:1;-1:-1:-1;33133:8:0;;-1:-1:-1;;33133:8:0;32813:347;29285:6215;;;33211:4;33202:6;:13;;;33198:2302;;;33253:6;:14;;33263:4;33253:14;33249:1088;;;33294:42;33312:2;33317:1;33312:6;33322:1;33311:12;33306:2;:17;33298:26;;:3;:26;;;;33328:4;33297:35;33334:1;33294:2;:42::i;:::-;33287:49;;;;;;33249:1088;33391:6;:14;;33401:4;33391:14;33387:950;;;33432:45;33450:2;33455:1;33450:6;33460:1;33449:12;33444:2;:17;33436:26;;:3;:26;;;;33466:6;33435:37;33474:2;33432;:45::i;33387:950::-;33533:6;:14;;33543:4;33533:14;33529:808;;;-1:-1:-1;;;33580:21:0;33599:1;33594;33589:6;;33588:12;33580:21;;33633:36;;;33700:5;33695:10;;33580:21;;;;;33694:18;33687:25;;33529:808;33767:6;:14;;33777:4;33767:14;33763:574;;;33808:3;33801:10;;;;;;33763:574;33867:6;:14;;33877:4;33867:14;33863:474;;;33923:2;33928:1;33923:6;33933:1;33922:12;33917:2;:17;33909:26;;:3;:26;;;;33939:4;33908:35;33901:42;;;;;;33863:474;33999:6;:14;;34009:4;33999:14;33995:342;;;34055:2;34060:1;34055:6;34065:1;34054:12;34049:2;:17;34041:26;;:3;:26;;;;34071:6;34040:37;34033:44;;;;;;33995:342;34133:6;:14;;34143:4;34133:14;34129:208;;;-1:-1:-1;;;34180:26:0;34204:1;34199;34194:6;;34193:12;34188:2;:17;34180:26;;34238:41;;;34310:5;34305:10;;34180:26;;;;;34304:18;34297:25;;33198:2302;34379:6;:14;;34389:4;34379:14;34375:1125;;;-1:-1:-1;;;34428:4:0;34422:34;34454:1;34449;34444:6;;34443:12;34438:2;:17;34422:34;;34504:27;;;34484:48;;;34554:10;;34423:9;;;34422:34;;34553:18;34546:25;;34375:1125;34614:6;:14;;34624:4;34614:14;34610:890;;;-1:-1:-1;;;34663:6:0;34657:36;34691:1;34686;34681:6;;34680:12;34675:2;:17;34657:36;;34741:29;;;34721:50;;;34793:10;;34658:11;;;34657:36;;34792:18;34785:25;;34610:890;34854:6;:14;;34864:4;34854:14;34850:650;;;-1:-1:-1;;;34897:20:0;34915:1;34910;34905:6;;34904:12;34897:20;;34945:36;;;35009:5;35003:11;;34897:20;;;;;35002:19;34995:26;;34850:650;35064:6;:14;;35074:4;35064:14;35060:440;;;35101:2;35094:9;;;;;;35060:440;35147:6;:14;;35157:4;35147:14;35143:357;;;-1:-1:-1;;;35190:25:0;35213:1;35208;35203:6;;35202:12;35197:2;:17;35190:25;;35243:41;;;35312:5;35306:11;;35190:25;;;;;35305:19;35298:26;;35143:357;35367:6;:14;;35377:4;35367:14;35363:137;;;35404:3;35397:10;;;;;;35363:137;35450:6;:14;;35460:4;35450:14;35446:54;;;35487:2;35480:9;;;;;;35446:54;35510:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17868:688;17954:12;18013:18;;:::i;:::-;-1:-1:-1;18073:4:0;18168:2;18156:14;;;;18148:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18277:14;;;;;;;:30;;;18295:12;18277:30;18273:94;;;18352:4;18323:5;:15;;;18339:9;18323:26;;;;;;;;;:33;;;;:26;;;;;;:33;18273:94;18414:12;;;;;18403:23;;;;:8;;;:23;18466:1;18451:16;;;18436:31;;;18536:13;:11;:13::i;4437:7572::-;4480:12;4538:18;;:::i;:::-;-1:-1:-1;4696:15:0;;:18;;;;4598:4;4840:18;;;;4880;;;;4920;;;;;4598:4;;4676:17;;;;4840:18;4880;5002;;;5016:4;5002:18;4998:6739;;;5048:2;5071:4;5068:7;;:12;5064:112;;5156:4;5153:7;;5145:4;:16;5139:22;5064:112;5193:7;;;5189:141;;5225:10;;;;;5253:16;;;;;;;;5225:10;-1:-1:-1;5189:141:0;;;5313:2;5308:7;;5189:141;4998:6739;;;;5434:10;:18;;5448:4;5434:18;5430:6307;;;1690:10;5468:14;;5430:6307;;;5554:10;:18;;5568:4;5554:18;5550:6187;;;5593:1;5588:6;;5550:6187;;;5706:10;:18;;5720:4;5706:18;5702:6035;;;5755:4;5740:12;;;:19;5773:26;;;:14;;;:26;5820:13;:11;:13::i;:::-;5813:20;;;;;;;;;;;5702:6035;5947:10;:18;;5961:4;5947:18;5943:5794;;;6086:14;;;6082:3038;;;;;6240:22;;;1923:1;6240:22;6236:2884;;;6357:10;6370:27;6378:2;6383:10;6378:15;6395:1;6370:7;:27::i;:::-;6477:17;;;;6357:40;;-1:-1:-1;6455:19:0;6759:20;;;6781:1;6756:27;6753:2;;;6891:4;6884:25;;;6947:8;6941:4;6934:22;7182:4;7166:21;;7189:19;7162:47;7211:14;7159:67;6753:2;7284:11;7315:6;;7335:17;;;;7354:20;;;;;7315:60;;;;;;;;;;;;;;;;;;;;7284:11;;7315:6;;;:19;;:60;;;;;7354:20;;7315:60;;;;;:6;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7315:60:0;;;;;;;;;-1:-1:-1;7315:60:0;-1:-1:-1;7586:1:0;7578:10;;7676:1;7672:17;;;7747;;;7744:2;;;7777:5;7767:15;;7744:2;;7856:6;7852:2;7849:14;7846:2;;;7876;7866:12;;7846:2;7978:3;7973:1;7965:6;7961:14;7956:3;7952:24;7948:34;7941:41;;8074:3;8070:1;8058:9;8049:6;8046:1;8042:14;8038:30;8034:38;8030:48;8023:55;;8194:1;8190;8186;8174:9;8171:1;8167:17;8163:25;8159:33;8155:41;8317:1;8313;8309;8300:6;8288:9;8285:1;8281:17;8277:30;8273:38;8269:46;8265:54;8247:72;;8413:10;8409:15;8403:4;8399:26;8391:34;;8525:3;8517:4;8513:9;8508:3;8504:19;8501:28;8494:35;;;;8659:33;8668:2;8673:10;8668:15;8685:1;8688:3;8659:8;:33::i;:::-;8710:20;;;:38;;;;;;;;;-1:-1:-1;6236:2884:0;;-1:-1:-1;;;6236:2884:0;;8851:18;;;1842:1;8851:18;8847:273;;;9009:2;9004:7;;8847:273;;;9067:10;9062:15;;1998:3;9095:10;;8847:273;5943:5794;;;9237:10;:18;;9251:4;9237:18;9233:2504;;;9379:15;;;1769:1;9379:15;;:34;;-1:-1:-1;9398:15:0;;;1804:1;9398:15;9379:34;:57;;;-1:-1:-1;9417:19:0;;;1881:1;9417:19;9379:57;9375:1505;;;9461:2;9456:7;;9375:1505;;;9575:23;;;1966:1;9575:23;9571:1309;;;9618:10;9631:27;9639:2;9644:10;9639:15;9656:1;9631:7;:27::i;:::-;9730:17;;;;9618:40;;-1:-1:-1;9957:1:0;9949:10;;10047:1;10043:17;10118:13;;;10115:2;;;10140:5;10134:11;;10115:2;10414:14;;;10228:1;10410:22;;;10406:32;;;;10307:26;10331:1;10220:10;;;10311:18;;;10307:26;10402:43;10216:20;;10506:12;10622:17;;;:23;10686:1;10663:20;;;:24;10224:2;-1:-1:-1;10224:2:0;9571:1309;;9233:2504;11066:10;:18;;11080:4;11066:18;11062:675;;;11152:2;:7;;11158:1;11152:7;11148:579;;;11221:14;;;;;:40;;-1:-1:-1;11239:22:0;;;1923:1;11239:22;11221:40;:62;;;-1:-1:-1;11265:18:0;;;1842:1;11265:18;11221:62;11217:376;;;11312:1;11307:6;;11217:376;;;11354:15;;;1769:1;11354:15;;:34;;-1:-1:-1;11373:15:0;;;1804:1;11373:15;11354:34;:61;;;-1:-1:-1;11392:23:0;;;1966:1;11392:23;11354:61;:84;;;-1:-1:-1;11419:19:0;;;1881:1;11419:19;11354:84;11350:243;;;11467:1;11462:6;;11350:243;;11148:579;11636:10;11631:15;;2032:4;11664:11;;11148:579;11804:15;;;;;:23;;;;:18;;;;:23;;;;11837:15;;:23;;;:18;;;;:23;-1:-1:-1;11918:12:0;;;;11907:23;;;:8;;;:23;11970:1;11955:16;11940:31;;;;;11989:13;:11;:13::i;:::-;11982:20;;4437:7572;;;;;;;;:::o;14449:2222::-;14543:12;14601:18;;:::i;:::-;-1:-1:-1;14661:4:0;14685:10;14794:4;14785:13;;;;14781:1545;;;-1:-1:-1;14820:8:0;;;;14781:1545;;;14927:5;:13;;14936:4;14927:13;14923:1403;;;14956:14;;;:8;;;:14;14923:1403;;;15074:5;:13;;15083:4;15074:13;15070:1256;;;-1:-1:-1;15109:8:0;;;;15070:1256;;;15216:5;:13;;15225:4;15216:13;15212:1114;;;15245:14;;;:8;;;:14;15212:1114;;;15374:5;:13;;15383:4;15374:13;15370:956;;;15493:9;15443:17;15423;;;15443;;;;15423:37;15500:2;15493:9;;;;;15475:8;;;:28;15517:22;:8;;;:22;15370:956;;;15664:5;:13;;15673:4;15664:13;15660:666;;;15727:11;15713;;;15727;;;15713:25;15778:2;15771:9;;;;;15753:8;;;:28;15795:22;:8;;;:22;15660:666;;;15956:5;:13;;15965:4;15956:13;15952:374;;;16022:3;16003:23;;16009:3;16003:23;;;;;;;;15985:42;;:8;;;:42;16059:23;;;;;;;;;;;;;;16041:42;;:8;;;:42;15952:374;;;16232:5;:13;;16241:4;16232:13;16228:98;;;16278:3;16272:9;;:3;:9;;;;;;;;16261:20;;;;:8;;;:20;16306:9;;;;;;;;;;;;16295:20;;:8;;;:20;16228:98;16411:14;;;;16407:77;;16470:3;16441:5;:15;;;16457:9;16441:26;;;;;;;;;:32;;;;:26;;;;;;:32;16407:77;16530:12;;;;;16519:23;;;;:8;;;:23;16582:1;16567:16;;;16552:31;;;16651:13;:11;:13::i;:::-;16644:20;14449:2222;-1:-1:-1;;;;;;;14449:2222:0:o;21551:1584::-;21699:14;21716:24;21728:11;21716;:24::i;:::-;21699:41;;21836:1;21829:5;21825:13;21822:2;;;21867:1;21864;21857:12;21822:2;22006;22188:15;;;22025:2;22014:14;;22002:10;21998:31;21995:1;21991:39;22148:16;;;21945:20;;22133:10;22122:22;;;22118:27;22108:38;22105:60;22594:5;22591:1;22587:13;22657:1;22642:375;22667:2;22664:1;22661:9;22642:375;;;22782:2;22770:15;;;22723:20;22813:12;;;22827:1;22809:20;22846:78;;;;22930:1;22925:78;;;;22802:201;;22846:78;22883:23;22898:7;22892:4;22883:23;:::i;:::-;22875:31;;22846:78;;22925;22962:23;22980:4;22971:7;22962:23;:::i;:::-;22954:31;;22802:201;-1:-1:-1;;22685:1:0;22678:9;22642:375;;;-1:-1:-1;;23108:4:0;23101:18;-1:-1:-1;;;;21760:1369:0:o;18760:500::-;19050:20;;;19074:7;19050:32;19043:3;:40;;;19132:14;;19171:17;;19165:24;;;19157:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19239:14;18760:500;;;:
::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
var
MIPSDeployedSourceMap
=
"1
130:33933:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2136:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22774:5721;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22774:5721:15;;-1:-1:-1;22774:5721:15;-1:-1:-1;22774:5721:15;:::i;:::-;;;;;;;;;;;;;;;;1710:45;1745:10;1710:45;:::o;2136:29::-;;;;;;:::o;22774:5721::-;22852:7;22871:18;;:::i;:::-;23006:4;22999:5;22996:15;22986:2;;23075:1;23073;23066:11;22986:2;23123:4;23117:11;23130;23114:28;23104:2;;23196:1;23194;23187:11;23104:2;23256:3;23238:16;23235:25;23225:2;;23330:1;23328;23321:11;23225:2;23386:3;23372:12;23369:21;23359:2;;23459:1;23457;23450:11;23359:2;23489:416;;;23723:24;;23711:2;23707:13;;;23704:1;23700:21;23696:52;;;;23765:20;;23819:21;;;23873:18;;;23567:338::o;:::-;23982:16;24040:4;24092:18;24107:2;24104:1;24101;24092:18;:::i;:::-;24084:26;;;;24142:18;24157:2;24154:1;24151;24142:18;:::i;:::-;24134:26;;;;24196:17;24211:1;24208;24205;24196:17;:::i;:::-;24188:25;;;;24253:17;24268:1;24265;24262;24253:17;:::i;:::-;24245:25;;;;24298:17;24313:1;24310;24307;24298:17;:::i;:::-;24290:25;;;;24347:17;24362:1;24359;24356;24347:17;:::i;:::-;24339:25;;;;24392:17;24407:1;24404;24401;24392:17;:::i;:::-;24384:25;;;;24437:17;24452:1;24449;24446;24437:17;:::i;:::-;24429:25;;;;24484:17;24499:1;24496;24493;24484:17;:::i;:::-;24476:25;;;;24535:17;24550:1;24547;24544;24535:17;:::i;:::-;24527:25;;;;24584:17;24599:1;24596;24593;24584:17;:::i;:::-;24693:2;24686:10;;24676:21;;;;24576:25;;-1:-1:-1;24686:10:15;-1:-1:-1;24781:1:15;24766:105;24791:2;24788:1;24785:9;24766:105;;;24840:17;24855:1;24852;24849;24840:17;:::i;:::-;24832:25;;-1:-1:-1;24832:25:15;-1:-1:-1;24809:1:15;24802:9;24766:105;;;24770:14;;;24937:5;:12;;;24933:63;;;24972:13;:11;:13::i;:::-;24965:20;;;;;24933:63;25006:10;;;:15;;25020:1;25006:15;;;;;25083:8;;;;-1:-1:-1;;25075:20:15;;-1:-1:-1;25075:7:15;:20::i;:::-;25061:34;-1:-1:-1;25121:10:15;25129:2;25121:10;;;;25190:1;25180:11;;;:26;;;25195:6;:11;;25205:1;25195:11;25180:26;25176:332;;;25433:64;25444:6;:11;;25454:1;25444:11;:20;;25462:2;25444:20;;;25458:1;25444:20;25433:64;;25495:1;25466:25;25469:4;25476:10;25469:17;25488:2;25466;:25::i;:::-;:30;;;;25433:10;:64::i;:::-;25426:71;;;;;;;25176:332;25733:15;;;;25544:9;;;;25673:4;25667:2;25659:10;;;25658:19;;;25733:15;25758:2;25750:10;;;25749:19;25733:36;;;;;;;;;;;;-1:-1:-1;25794:5:15;25814:11;;;;;:29;;;25829:6;:14;;25839:4;25829:14;25814:29;25810:756;;;25898:5;:15;;;25914:5;25898:22;;;;;;;;;;;;;;-1:-1:-1;;25957:4:15;25951:2;25943:10;;;25942:19;25810:756;;;25991:4;25982:6;:13;;;25978:588;;;26100:6;:13;;26110:3;26100:13;:30;;;;26117:6;:13;;26127:3;26117:13;26100:30;:47;;;;26134:6;:13;;26144:3;26134:13;26100:47;26096:229;;;26202:4;26209:6;26202:13;26197:18;;26096:229;;;26289:21;26292:4;26299:6;26292:13;26307:2;26289;:21::i;:::-;26284:26;;26096:229;25978:588;;;26355:4;26345:6;:14;;;;:32;;;;26363:6;:14;;26373:4;26363:14;26345:32;:50;;;;26381:6;:14;;26391:4;26381:14;26345:50;26341:225;;;26457:5;:15;;;26473:5;26457:22;;;;;;;;;;;;;26452:27;;26550:5;26542:13;;26341:225;26591:1;26581:6;:11;;;;:25;;;;;26605:1;26596:6;:10;;;26581:25;26580:42;;;;26611:6;:11;;26621:1;26611:11;26580:42;26576:117;;;26645:37;26658:6;26666:4;26672:5;26679:2;26645:12;:37::i;:::-;26638:44;;;;;;;;;;;26576:117;26722:13;26703:16;26858:4;26848:14;;;;26844:400;;26919:19;26922:4;26927:6;26922:11;26935:2;26919;:19::i;:::-;26913:25;;;;26971:10;26966:15;;27001:16;26966:15;27015:1;27001:7;:16::i;:::-;26995:22;;27045:4;27035:6;:14;;;;:32;;;;;27053:6;:14;;27063:4;27053:14;;27035:32;27031:203;;;27124:4;27112:16;;27218:1;27210:9;;27031:203;26844:400;;27269:10;27282:26;27290:4;27296:2;27300;27304:3;27282:7;:26::i;:::-;27311:10;27282:39;;;;-1:-1:-1;27403:4:15;27396:11;;;27431;;;:24;;;;;27454:1;27446:4;:9;;;;27431:24;:39;;;;;27466:4;27459;:11;;;27431:39;27427:711;;;27490:4;:9;;27498:1;27490:9;:22;;;;27503:4;:9;;27511:1;27503:9;27490:22;27486:116;;;27550:37;27561:4;:9;;27569:1;27561:9;:21;;27577:5;27561:21;;;27573:1;27561:21;27584:2;27550:10;:37::i;:::-;27543:44;;;;;;;;;;;;;;;27486:116;27620:4;:11;;27628:3;27620:11;27616:93;;;27666:28;27675:5;27682:2;27686:7;;;;27666:8;:28::i;27616:93::-;27726:4;:11;;27734:3;27726:11;27722:93;;;27772:28;27781:5;27788:2;27792:7;;;;;27772:8;:28::i;27722:93::-;27877:4;:11;;27885:3;27877:11;27873:72;;;27915:15;:13;:15::i;27873:72::-;28036:4;28028;:12;;;;:27;;;;;28051:4;28044;:11;;;28028:27;28024:104;;;28082:31;28093:4;28099:2;28103;28107:5;28082:10;:31::i;28024:104::-;28190:6;:14;;28200:4;28190:14;:28;;;;-1:-1:-1;28208:10:15;;;;;28190:28;28186:85;;;28259:1;28234:5;:15;;;28250:5;28234:22;;;;;;;;;:26;;;;:22;;;;;;:26;28186:85;28309:9;:26;;28322:13;28309:26;28305:84;;28351:27;28360:9;28371:1;28374:3;28351:8;:27::i;:::-;28462:26;28471:5;28478:3;28483:4;28462:8;:26::i;:::-;28455:33;;;;;;;;;;;;;22774:5721;;;;;;;:::o;2660:1791::-;2701:12;2846:206;;;2946:2;2942:13;;;2932:24;;2926:31;2915:43;;2986:13;;3025;;;2897:155::o;:::-;3123:4;3207;3201:11;3235:5;3307:21;3325:2;3321;3315:4;3307:21;:::i;:::-;3295:33;;;;3365:21;3383:2;3379;3373:4;3365:21;:::i;:::-;3353:33;;;;3427:20;3445:1;3441:2;3435:4;3427:20;:::i;:::-;3415:32;;;;3492:20;3510:1;3506:2;3500:4;3492:20;:::i;:::-;3480:32;;;;3545:20;3563:1;3559:2;3553:4;3545:20;:::i;:::-;3533:32;;;;3602:20;3620:1;3616:2;3610:4;3602:20;:::i;:::-;3590:32;;;;3655:20;3673:1;3669:2;3663:4;3655:20;:::i;:::-;3643:32;;;;3708:20;3726:1;3722:2;3716:4;3708:20;:::i;:::-;3696:32;;;;3763:20;3781:1;3777:2;3771:4;3763:20;:::i;:::-;3751:32;;;;3822:20;3840:1;3836:2;3830:4;3822:20;:::i;:::-;3810:32;;;;3879:20;3897:1;3893:2;3887:4;3879:20;:::i;:::-;3940:2;3930:13;;;;-1:-1:-1;3867:32:15;-1:-1:-1;4038:1:15;4023:112;4048:2;4045:1;4042:9;4023:112;;;4101:20;4119:1;4115:2;4109:4;4101:20;:::i;:::-;4089:32;;-1:-1:-1;4089:32:15;-1:-1:-1;4066:1:15;4059:9;4023:112;;;4027:14;4198:1;4194:2;4187:13;4293:5;4289:2;4285:14;4278:5;4273:27;4399:14;;;4382:32;;;-1:-1:-1;;2660:1791:15;;:::o;18989:1741::-;19062:11;19145:14;19162:24;19174:11;19162;:24::i;:::-;19145:41;;19282:1;19275:5;19271:13;19268:2;;;19313:1;19310;19303:12;19268:2;19446;19434:15;;;19391:20;19544:141;;;;19591:12;;;19627:2;19620:13;;;;19668:2;19655:16;;;19573:112::o;:::-;19840:5;19837:1;19833:13;19871:4;19903:1;19888:375;19913:2;19910:1;19907:9;19888:375;;;20028:2;20016:15;;;19969:20;20059:12;;;20073:1;20055:20;20092:78;;;;20176:1;20171:78;;;;20048:201;;20092:78;20129:23;20144:7;20138:4;20129:23;:::i;:::-;20121:31;;20092:78;;20171;20208:23;20226:4;20217:7;20208:23;:::i;:::-;20200:31;;20048:201;-1:-1:-1;;19931:1:15;19924:9;19888:375;;;19892:14;20365:4;20359:11;20344:26;;20443:7;20437:4;20434:17;20424:2;;20481:10;20478:1;20471:21;20519:2;20516:1;20509:13;20424:2;-1:-1:-1;;20655:2:15;20644:14;;;;20632:10;20628:31;20625:1;20621:39;20685:16;;;;20703:10;20681:33;;19206:1518;-1:-1:-1;;;19206:1518:15:o;2264:288::-;2325:6;2360:18;;;;2369:8;;;;2360:18;;;;;;2359:25;;;;;2376:1;2419:2;:9;;;2413:16;;;;;2412:22;;2411:32;;;;;;;2469:9;;2468:15;2359:25;2522:21;;2542:1;2522:21;;;2533:6;2522:21;2507:11;;;;;:37;;-1:-1:-1;;;2264:288:15;;;;:::o;16478:624::-;16547:12;16606:18;;:::i;:::-;-1:-1:-1;16761:8:15;;;16790:12;;;16779:23;;;;;;;16812:20;;;;;16666:4;;16936:13;;;16932:82;;16993:6;17002:1;16993:10;16965:5;:15;;;16981:8;16965:25;;;;;;;;;:38;;;;:25;;;;;;:38;16932:82;17082:13;:11;:13::i;:::-;17075:20;16478:624;-1:-1:-1;;;;;16478:624:15:o;11910:1713::-;12007:12;12065:18;;:::i;:::-;-1:-1:-1;12125:4:15;12149:17;12248:1;12237:12;;;;;:28;;;12253:7;:12;;12264:1;12253:12;12237:28;12233:859;;;12281:9;12293:5;:15;;;12309:6;12293:23;;;;;;;;;;;;;12281:35;;12353:2;12346:9;;:3;:9;;;:25;;;;;12359:7;:12;;12370:1;12359:12;12346:25;12345:58;;;;12384:2;12377:9;;:3;:9;;;;:25;;;;;12390:7;:12;;12401:1;12390:12;12377:25;12330:73;;12233:859;;;;12503:7;:12;;12514:1;12503:12;12499:593;;;12560:1;12552:3;12546:15;;;;12531:30;;12499:593;;;12652:7;:12;;12663:1;12652:12;12648:444;;;12708:1;12701:3;12695:14;;;12680:29;;12648:444;;;12817:7;:12;;12828:1;12817:12;12813:279;;;12897:4;12891:2;12882:11;;;12881:20;12920:8;12916:76;;12976:1;12969:3;12963:14;;;12948:29;;12916:76;13009:3;:8;;13016:1;13009:8;13005:77;;;13066:1;13058:3;13052:15;;;;13037:30;;13005:77;12813:279;;13160:8;;;;;13230:12;;;;13219:23;;;;;13374:162;;;;13461:1;13435:22;13438:5;13446:6;13438:14;13454:2;13435;:22::i;:::-;:27;;;;;;;13421:42;;13430:1;13421:42;13406:57;:12;;;:57;13374:162;;;13509:12;;;;;13524:1;13509:16;13494:31;;;;13374:162;13603:13;:11;:13::i;:::-;13596:20;11910:1713;-1:-1:-1;;;;;;;;11910:1713:15:o;28541:6520::-;28628:6;28662:10;28670:2;28662:10;;;;;;28709:11;;28813:4;28804:13;;28800:6215;;;28932:1;28922:6;:11;;;;:27;;;;;28946:3;28937:6;:12;;;28922:27;28918:532;;;28973:6;:11;;28983:1;28973:11;28969:431;;;-1:-1:-1;28995:4:15;28969:431;;;29043:6;:11;;29053:1;29043:11;29039:361;;;-1:-1:-1;29065:4:15;29039:361;;;29109:6;:13;;29119:3;29109:13;29105:295;;;-1:-1:-1;29133:4:15;29105:295;;;29174:6;:13;;29184:3;29174:13;29170:230;;;-1:-1:-1;29198:4:15;29170:230;;;29240:6;:13;;29250:3;29240:13;29236:164;;;-1:-1:-1;29264:4:15;29236:164;;;29305:6;:13;;29315:3;29305:13;29301:99;;;-1:-1:-1;29329:4:15;29301:99;;;29369:6;:13;;29379:3;29369:13;29365:35;;;-1:-1:-1;29393:4:15;29365:35;29434:1;29425:10;;28918:532;29503:11;;;29499:3190;;29563:4;29558:1;29550:9;;;29549:18;29596:4;29550:9;29589:11;;;29585:1203;;;29680:4;29672;:12;;;29668:1102;;29719:2;29712:9;;;;;;;29668:1102;29821:12;;;29817:953;;29868:11;;;;;;;;-1:-1:-1;29861:18:15;;-1:-1:-1;;29861:18:15;29817:953;29980:4;:12;;29988:4;29980:12;29976:794;;;30027:11;;;;;;;;-1:-1:-1;30020:18:15;;-1:-1:-1;;30020:18:15;29976:794;30142:4;:12;;30150:4;30142:12;30138:632;;;30189:27;30198:5;30192:11;;:2;:11;;;;30210:5;30205:2;:10;30189:2;:27::i;30138:632::-;30326:4;:12;;30334:4;30326:12;30322:448;;;-1:-1:-1;;;;30373:17:15;;;30385:4;30380:9;;30373:17;30366:24;;30322:448;30501:4;:12;;30509:4;30501:12;30497:273;;;-1:-1:-1;;;;30548:17:15;;;30560:4;30555:9;;30548:17;30541:24;;30497:273;30679:4;:12;;30687:4;30679:12;30675:95;;;30726:21;30735:2;30729:8;;:2;:8;;;;30744:2;30739;:7;30726:2;:21::i;30675:95::-;30932:4;:12;;30940:4;30932:12;:28;;;;30948:4;:12;;30956:4;30948:12;30932:28;30928:1025;;;30996:2;30991;:7;30984:14;;;;;;;30928:1025;31074:4;:12;;31082:4;31074:12;:28;;;;31090:4;:12;;31098:4;31090:12;31074:28;31070:883;;;31138:2;31133;:7;31126:14;;;;;;;31070:883;31208:4;:12;;31216:4;31208:12;31204:749;;;31256:2;31251;:7;31244:14;;;;;;;31204:749;31325:4;:12;;31333:4;31325:12;31321:632;;;31374:2;31369;:7;31361:16;;;;;;;31321:632;31445:4;:12;;31453:4;31445:12;31441:512;;;31494:2;31489;:7;31481:16;;;;;;;31441:512;31565:4;:12;;31573:4;31565:12;31561:392;;;-1:-1:-1;;;;31610:7:15;;;31608:10;31601:17;;31561:392;31709:4;:12;;31717:4;31709:12;31705:248;;;31768:2;31750:21;;31756:2;31750:21;;;:29;;31778:1;31750:29;;;31774:1;31750:29;31743:36;;;;;;;;;31705:248;31880:4;:12;;31888:4;31880:12;31876:77;;;31924:2;31921:5;;:2;:5;;;:13;;31933:1;31921:13;;31876:77;29499:3190;;;;32030:6;:13;;32040:3;32030:13;32026:663;;;32076:2;32070;:8;;;;32063:15;;;;;;32026:663;32139:6;:14;;32149:4;32139:14;32135:554;;;32200:4;:9;;32208:1;32200:9;32196:92;;;-1:-1:-1;;;32247:21:15;;;32233:36;;32196:92;32332:4;:12;;32340:4;32332:12;:28;;;;32348:4;:12;;32356:4;32348:12;32332:28;32328:347;;;32388:4;:12;;32396:4;32388:12;32384:75;;;32433:3;;;32384:75;32480:8;32514:113;32524:10;32521:13;;:18;32514:113;;32596:8;32567:3;32596:8;;;;;32567:3;32514:113;;;32655:1;-1:-1:-1;32648:8:15;;-1:-1:-1;;32648:8:15;32328:347;28800:6215;;;32726:4;32717:6;:13;;;32713:2302;;;32768:6;:14;;32778:4;32768:14;32764:1088;;;32809:42;32827:2;32832:1;32827:6;32837:1;32826:12;32821:2;:17;32813:26;;:3;:26;;;;32843:4;32812:35;32849:1;32809:2;:42::i;:::-;32802:49;;;;;;32764:1088;32906:6;:14;;32916:4;32906:14;32902:950;;;32947:45;32965:2;32970:1;32965:6;32975:1;32964:12;32959:2;:17;32951:26;;:3;:26;;;;32981:6;32950:37;32989:2;32947;:45::i;32902:950::-;33048:6;:14;;33058:4;33048:14;33044:808;;;-1:-1:-1;;;33095:21:15;33114:1;33109;33104:6;;33103:12;33095:21;;33148:36;;;33215:5;33210:10;;33095:21;;;;;33209:18;33202:25;;33044:808;33282:6;:14;;33292:4;33282:14;33278:574;;;33323:3;33316:10;;;;;;33278:574;33382:6;:14;;33392:4;33382:14;33378:474;;;33438:2;33443:1;33438:6;33448:1;33437:12;33432:2;:17;33424:26;;:3;:26;;;;33454:4;33423:35;33416:42;;;;;;33378:474;33514:6;:14;;33524:4;33514:14;33510:342;;;33570:2;33575:1;33570:6;33580:1;33569:12;33564:2;:17;33556:26;;:3;:26;;;;33586:6;33555:37;33548:44;;;;;;33510:342;33648:6;:14;;33658:4;33648:14;33644:208;;;-1:-1:-1;;;33695:26:15;33719:1;33714;33709:6;;33708:12;33703:2;:17;33695:26;;33753:41;;;33825:5;33820:10;;33695:26;;;;;33819:18;33812:25;;32713:2302;33894:6;:14;;33904:4;33894:14;33890:1125;;;-1:-1:-1;;;33943:4:15;33937:34;33969:1;33964;33959:6;;33958:12;33953:2;:17;33937:34;;34019:27;;;33999:48;;;34069:10;;33938:9;;;33937:34;;34068:18;34061:25;;33890:1125;34129:6;:14;;34139:4;34129:14;34125:890;;;-1:-1:-1;;;34178:6:15;34172:36;34206:1;34201;34196:6;;34195:12;34190:2;:17;34172:36;;34256:29;;;34236:50;;;34308:10;;34173:11;;;34172:36;;34307:18;34300:25;;34125:890;34369:6;:14;;34379:4;34369:14;34365:650;;;-1:-1:-1;;;34412:20:15;34430:1;34425;34420:6;;34419:12;34412:20;;34460:36;;;34524:5;34518:11;;34412:20;;;;;34517:19;34510:26;;34365:650;34579:6;:14;;34589:4;34579:14;34575:440;;;34616:2;34609:9;;;;;;34575:440;34662:6;:14;;34672:4;34662:14;34658:357;;;-1:-1:-1;;;34705:25:15;34728:1;34723;34718:6;;34717:12;34712:2;:17;34705:25;;34758:41;;;34827:5;34821:11;;34705:25;;;;;34820:19;34813:26;;34658:357;34882:6;:14;;34892:4;34882:14;34878:137;;;34919:3;34912:10;;;;;;34878:137;34965:6;:14;;34975:4;34965:14;34961:54;;;35002:2;34995:9;;;;;;34961:54;35025:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17383:688;17469:12;17528:18;;:::i;:::-;-1:-1:-1;17588:4:15;17683:2;17671:14;;;;17663:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17792:14;;;;;;;:30;;;17810:12;17792:30;17788:94;;;17867:4;17838:5;:15;;;17854:9;17838:26;;;;;;;;;:33;;;;:26;;;;;;:33;17788:94;17929:12;;;;;17918:23;;;;:8;;;:23;17981:1;17966:16;;;17951:31;;;18051:13;:11;:13::i;4492:7032::-;4535:12;4593:18;;:::i;:::-;-1:-1:-1;4751:15:15;;:18;;;;4653:4;4895:18;;;;4935;;;;4975;;;;;4653:4;;4731:17;;;;4895:18;4935;5057;;;5071:4;5057:18;5053:6199;;;5103:2;5126:4;5123:7;;:12;5119:112;;5211:4;5208:7;;5200:4;:16;5194:22;5119:112;5248:7;;;5244:141;;5280:10;;;;;5308:16;;;;;;;;5280:10;-1:-1:-1;5244:141:15;;;5368:2;5363:7;;5244:141;5053:6199;;;;5489:10;:18;;5503:4;5489:18;5485:5767;;;1745:10;5523:14;;5485:5767;;;5609:10;:18;;5623:4;5609:18;5605:5647;;;5648:1;5643:6;;5605:5647;;;5761:10;:18;;5775:4;5761:18;5757:5495;;;5810:4;5795:12;;;:19;5828:26;;;:14;;;:26;5875:13;:11;:13::i;:::-;5868:20;;;;;;;;;;;5757:5495;6002:10;:18;;6016:4;6002:18;5998:5254;;;6141:14;;;6137:2498;;;;;6295:22;;;1978:1;6295:22;6291:2344;;;6412:10;6425:27;6433:2;6438:10;6433:15;6450:1;6425:7;:27::i;:::-;6532:17;;;;6412:40;;-1:-1:-1;6532:17:15;6510:19;6674:14;6693:1;6668:26;6664:123;;;6732:36;6756:11;6732:23;:36::i;:::-;6718:50;;6664:123;6805:11;6836:6;;6869:20;;;;;6836:54;;;;;;;;;;;;;;;;;;;;;6805:11;;6836:6;;;:19;;:54;;;;;;;;;;;:6;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6836:54:15;;;;;;;;;-1:-1:-1;6836:54:15;-1:-1:-1;7101:1:15;7093:10;;7191:1;7187:17;;;7262;;;7259:2;;;7292:5;7282:15;;7259:2;;7371:6;7367:2;7364:14;7361:2;;;7391;7381:12;;7361:2;7493:3;7488:1;7480:6;7476:14;7471:3;7467:24;7463:34;7456:41;;7589:3;7585:1;7573:9;7564:6;7561:1;7557:14;7553:30;7549:38;7545:48;7538:55;;7709:1;7705;7701;7689:9;7686:1;7682:17;7678:25;7674:33;7670:41;7832:1;7828;7824;7815:6;7803:9;7800:1;7796:17;7792:30;7788:38;7784:46;7780:54;7762:72;;7928:10;7924:15;7918:4;7914:26;7906:34;;8040:3;8032:4;8028:9;8023:3;8019:19;8016:28;8009:35;;;;8174:33;8183:2;8188:10;8183:15;8200:1;8203:3;8174:8;:33::i;:::-;8225:20;;;:38;;;;;;;;;-1:-1:-1;6291:2344:15;;-1:-1:-1;;;6291:2344:15;;8366:18;;;1897:1;8366:18;8362:273;;;8524:2;8519:7;;8362:273;;;8582:10;8577:15;;2053:3;8610:10;;8362:273;5998:5254;;;8752:10;:18;;8766:4;8752:18;8748:2504;;;8894:15;;;1824:1;8894:15;;:34;;-1:-1:-1;8913:15:15;;;1859:1;8913:15;8894:34;:57;;;-1:-1:-1;8932:19:15;;;1936:1;8932:19;8894:57;8890:1505;;;8976:2;8971:7;;8890:1505;;;9090:23;;;2021:1;9090:23;9086:1309;;;9133:10;9146:27;9154:2;9159:10;9154:15;9171:1;9146:7;:27::i;:::-;9245:17;;;;9133:40;;-1:-1:-1;9472:1:15;9464:10;;9562:1;9558:17;9633:13;;;9630:2;;;9655:5;9649:11;;9630:2;9929:14;;;9743:1;9925:22;;;9921:32;;;;9822:26;9846:1;9735:10;;;9826:18;;;9822:26;9917:43;9731:20;;10021:12;10137:17;;;:23;10201:1;10178:20;;;:24;9739:2;-1:-1:-1;9739:2:15;9086:1309;;8748:2504;10581:10;:18;;10595:4;10581:18;10577:675;;;10667:2;:7;;10673:1;10667:7;10663:579;;;10736:14;;;;;:40;;-1:-1:-1;10754:22:15;;;1978:1;10754:22;10736:40;:62;;;-1:-1:-1;10780:18:15;;;1897:1;10780:18;10736:62;10732:376;;;10827:1;10822:6;;10732:376;;;10869:15;;;1824:1;10869:15;;:34;;-1:-1:-1;10888:15:15;;;1859:1;10888:15;10869:34;:61;;;-1:-1:-1;10907:23:15;;;2021:1;10907:23;10869:61;:84;;;-1:-1:-1;10934:19:15;;;1936:1;10934:19;10869:84;10865:243;;;10982:1;10977:6;;10865:243;;10663:579;11151:10;11146:15;;2087:4;11179:11;;10663:579;11319:15;;;;;:23;;;;:18;;;;:23;;;;11352:15;;:23;;;:18;;;;:23;-1:-1:-1;11433:12:15;;;;11422:23;;;:8;;;:23;11485:1;11470:16;11455:31;;;;;11504:13;:11;:13::i;:::-;11497:20;;4492:7032;;;;;;;;:::o;13964:2222::-;14058:12;14116:18;;:::i;:::-;-1:-1:-1;14176:4:15;14200:10;14309:4;14300:13;;;;14296:1545;;;-1:-1:-1;14335:8:15;;;;14296:1545;;;14442:5;:13;;14451:4;14442:13;14438:1403;;;14471:14;;;:8;;;:14;14438:1403;;;14589:5;:13;;14598:4;14589:13;14585:1256;;;-1:-1:-1;14624:8:15;;;;14585:1256;;;14731:5;:13;;14740:4;14731:13;14727:1114;;;14760:14;;;:8;;;:14;14727:1114;;;14889:5;:13;;14898:4;14889:13;14885:956;;;15008:9;14958:17;14938;;;14958;;;;14938:37;15015:2;15008:9;;;;;14990:8;;;:28;15032:22;:8;;;:22;14885:956;;;15179:5;:13;;15188:4;15179:13;15175:666;;;15242:11;15228;;;15242;;;15228:25;15293:2;15286:9;;;;;15268:8;;;:28;15310:22;:8;;;:22;15175:666;;;15471:5;:13;;15480:4;15471:13;15467:374;;;15537:3;15518:23;;15524:3;15518:23;;;;;;;;15500:42;;:8;;;:42;15574:23;;;;;;;;;;;;;;15556:42;;:8;;;:42;15467:374;;;15747:5;:13;;15756:4;15747:13;15743:98;;;15793:3;15787:9;;:3;:9;;;;;;;;15776:20;;;;:8;;;:20;15821:9;;;;;;;;;;;;15810:20;;:8;;;:20;15743:98;15926:14;;;;15922:77;;15985:3;15956:5;:15;;;15972:9;15956:26;;;;;;;;;:32;;;;:26;;;;;;:32;15922:77;16045:12;;;;;16034:23;;;;:8;;;:23;16097:1;16082:16;;;16067:31;;;16166:13;:11;:13::i;:::-;16159:20;13964:2222;-1:-1:-1;;;;;;;13964:2222:15:o;21066:1584::-;21214:14;21231:24;21243:11;21231;:24::i;:::-;21214:41;;21351:1;21344:5;21340:13;21337:2;;;21382:1;21379;21372:12;21337:2;21521;21703:15;;;21540:2;21529:14;;21517:10;21513:31;21510:1;21506:39;21663:16;;;21460:20;;21648:10;21637:22;;;21633:27;21623:38;21620:60;22109:5;22106:1;22102:13;22172:1;22157:375;22182:2;22179:1;22176:9;22157:375;;;22297:2;22285:15;;;22238:20;22328:12;;;22342:1;22324:20;22361:78;;;;22445:1;22440:78;;;;22317:201;;22361:78;22398:23;22413:7;22407:4;22398:23;:::i;:::-;22390:31;;22361:78;;22440;22477:23;22495:4;22486:7;22477:23;:::i;:::-;22469:31;;22317:201;-1:-1:-1;;22200:1:15;22193:9;22157:375;;;-1:-1:-1;;22623:4:15;22616:18;-1:-1:-1;;;;21275:1369:15:o;18275:500::-;18565:20;;;18589:7;18565:32;18558:3;:40;;;18647:14;;18686:17;;18680:24;;;18672:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18754:14;18275:500;;;:::o;1222:430:16:-;1277:21;1426:15;;;1467:8;1461:4;1454:22;1595:4;1582:18;;1602:19;1578:44;1624:11;1575:61;;1319:327
::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
func
init
()
{
if
err
:=
json
.
Unmarshal
([]
byte
(
MIPSStorageLayoutJSON
),
MIPSStorageLayout
);
err
!=
nil
{
...
...
op-bindings/bindings/preimageoracle.go
View file @
1888081c
...
...
@@ -201,37 +201,6 @@ func (_PreimageOracle *PreimageOracleTransactorRaw) Transact(opts *bind.Transact
return
_PreimageOracle
.
Contract
.
contract
.
Transact
(
opts
,
method
,
params
...
)
}
// ComputeKeccak256PreimageKey is a free data retrieval call binding the contract method 0xdfb77667.
//
// Solidity: function computeKeccak256PreimageKey(bytes _preimage) pure returns(bytes32 key_)
func
(
_PreimageOracle
*
PreimageOracleCaller
)
ComputeKeccak256PreimageKey
(
opts
*
bind
.
CallOpts
,
_preimage
[]
byte
)
([
32
]
byte
,
error
)
{
var
out
[]
interface
{}
err
:=
_PreimageOracle
.
contract
.
Call
(
opts
,
&
out
,
"computeKeccak256PreimageKey"
,
_preimage
)
if
err
!=
nil
{
return
*
new
([
32
]
byte
),
err
}
out0
:=
*
abi
.
ConvertType
(
out
[
0
],
new
([
32
]
byte
))
.
(
*
[
32
]
byte
)
return
out0
,
err
}
// ComputeKeccak256PreimageKey is a free data retrieval call binding the contract method 0xdfb77667.
//
// Solidity: function computeKeccak256PreimageKey(bytes _preimage) pure returns(bytes32 key_)
func
(
_PreimageOracle
*
PreimageOracleSession
)
ComputeKeccak256PreimageKey
(
_preimage
[]
byte
)
([
32
]
byte
,
error
)
{
return
_PreimageOracle
.
Contract
.
ComputeKeccak256PreimageKey
(
&
_PreimageOracle
.
CallOpts
,
_preimage
)
}
// ComputeKeccak256PreimageKey is a free data retrieval call binding the contract method 0xdfb77667.
//
// Solidity: function computeKeccak256PreimageKey(bytes _preimage) pure returns(bytes32 key_)
func
(
_PreimageOracle
*
PreimageOracleCallerSession
)
ComputeKeccak256PreimageKey
(
_preimage
[]
byte
)
([
32
]
byte
,
error
)
{
return
_PreimageOracle
.
Contract
.
ComputeKeccak256PreimageKey
(
&
_PreimageOracle
.
CallOpts
,
_preimage
)
}
// PreimageLengths is a free data retrieval call binding the contract method 0xfef2b4ed.
//
// Solidity: function preimageLengths(bytes32 ) view returns(uint256)
...
...
@@ -412,23 +381,23 @@ func (_PreimageOracle *PreimageOracleTransactorSession) LoadKeccak256PreimagePar
return
_PreimageOracle
.
Contract
.
LoadKeccak256PreimagePart
(
&
_PreimageOracle
.
TransactOpts
,
_partOffset
,
_preimage
)
}
// LoadLocal
Data is a paid mutator transaction binding the contract method 0x3eba58ce
.
// LoadLocal
Part is a paid mutator transaction binding the contract method 0x90fbc1e2
.
//
// Solidity: function loadLocal
Data(bytes _bootInfo
) returns()
func
(
_PreimageOracle
*
PreimageOracleTransactor
)
LoadLocal
Data
(
opts
*
bind
.
TransactOpts
,
_bootInfo
[]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_PreimageOracle
.
contract
.
Transact
(
opts
,
"loadLocal
Data"
,
_bootInfo
)
// Solidity: function loadLocal
Part(uint256 _partOffset, uint256 _ident, bytes32 _part, uint256 _size
) returns()
func
(
_PreimageOracle
*
PreimageOracleTransactor
)
LoadLocal
Part
(
opts
*
bind
.
TransactOpts
,
_partOffset
*
big
.
Int
,
_ident
*
big
.
Int
,
_part
[
32
]
byte
,
_size
*
big
.
Int
)
(
*
types
.
Transaction
,
error
)
{
return
_PreimageOracle
.
contract
.
Transact
(
opts
,
"loadLocal
Part"
,
_partOffset
,
_ident
,
_part
,
_size
)
}
// LoadLocal
Data is a paid mutator transaction binding the contract method 0x3eba58ce
.
// LoadLocal
Part is a paid mutator transaction binding the contract method 0x90fbc1e2
.
//
// Solidity: function loadLocal
Data(bytes _bootInfo
) returns()
func
(
_PreimageOracle
*
PreimageOracleSession
)
LoadLocal
Data
(
_bootInfo
[]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_PreimageOracle
.
Contract
.
LoadLocal
Data
(
&
_PreimageOracle
.
TransactOpts
,
_bootInfo
)
// Solidity: function loadLocal
Part(uint256 _partOffset, uint256 _ident, bytes32 _part, uint256 _size
) returns()
func
(
_PreimageOracle
*
PreimageOracleSession
)
LoadLocal
Part
(
_partOffset
*
big
.
Int
,
_ident
*
big
.
Int
,
_part
[
32
]
byte
,
_size
*
big
.
Int
)
(
*
types
.
Transaction
,
error
)
{
return
_PreimageOracle
.
Contract
.
LoadLocal
Part
(
&
_PreimageOracle
.
TransactOpts
,
_partOffset
,
_ident
,
_part
,
_size
)
}
// LoadLocal
Data is a paid mutator transaction binding the contract method 0x3eba58ce
.
// LoadLocal
Part is a paid mutator transaction binding the contract method 0x90fbc1e2
.
//
// Solidity: function loadLocal
Data(bytes _bootInfo
) returns()
func
(
_PreimageOracle
*
PreimageOracleTransactorSession
)
LoadLocal
Data
(
_bootInfo
[]
byte
)
(
*
types
.
Transaction
,
error
)
{
return
_PreimageOracle
.
Contract
.
LoadLocal
Data
(
&
_PreimageOracle
.
TransactOpts
,
_bootInfo
)
// Solidity: function loadLocal
Part(uint256 _partOffset, uint256 _ident, bytes32 _part, uint256 _size
) returns()
func
(
_PreimageOracle
*
PreimageOracleTransactorSession
)
LoadLocal
Part
(
_partOffset
*
big
.
Int
,
_ident
*
big
.
Int
,
_part
[
32
]
byte
,
_size
*
big
.
Int
)
(
*
types
.
Transaction
,
error
)
{
return
_PreimageOracle
.
Contract
.
LoadLocal
Part
(
&
_PreimageOracle
.
TransactOpts
,
_partOffset
,
_ident
,
_part
,
_size
)
}
packages/contracts-bedrock/src/cannon/MIPS.sol
View file @
1888081c
...
...
@@ -2,6 +2,7 @@
pragma solidity 0.7.6;
import { IPreimageOracle } from "./interfaces/IPreimageOracle.sol";
import { PreimageKeyLib } from "./PreimageKeyLib.sol";
/// @title MIPS
/// @notice The MIPS contract emulates a single MIPS instruction.
...
...
@@ -169,19 +170,11 @@ contract MIPS {
// verify proof 1 is correct, and get the existing memory.
uint32 mem = readMem(a1 & 0xFFffFFfc, 1); // mask the addr to align it to 4 bytes
bytes32 preimageKey = state.preimageKey;
assembly {
// If the preimage key has a local data type, we need to hash it with the sender address
// (the dispute game) to get the context-specific key and re-set it's type byte.
if eq(byte(0, preimageKey), 1) {
// Store preimage key and caller in scratch space
mstore(0x00, preimageKey)
mstore(0x20, caller())
// Local key alteration for the sender's context:
// localize(k) = H(k .. sender) & ~(0xFF << 248) | (0x01 << 248)
preimageKey := or(and(keccak256(0x00, 0x40), not(shl(248, 0xFF))), shl(248, 0x01))
}
// If the preimage key is a local key, localize it in the context of the caller.
if (uint8(preimageKey[0]) == 1) {
preimageKey = PreimageKeyLib.localize(preimageKey);
}
(bytes32 dat, uint256 datLen) = oracle.readPreimage(
state.
preimageKey, state.preimageOffset);
(bytes32 dat, uint256 datLen) = oracle.readPreimage(preimageKey, state.preimageOffset);
// Transform data for writing to memory
// We use assembly for more precise ops, and no var count limit
...
...
packages/contracts-bedrock/src/cannon/PreimageKeyLib.sol
0 → 100644
View file @
1888081c
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;
/// @title PreimageKeyLib
/// @notice Shared utilities for localizing local keys in the preimage oracle.
library PreimageKeyLib {
/// @notice Generates a context-specific local key for the given local data identifier.
/// @dev See `localize` for a description of the localization operation.
/// @param _ident The identifier of the local data. [0, 32) bytes in size.
/// @return key_ The context-specific local key.
function localizeIdent(uint256 _ident) internal view returns (bytes32 key_) {
assembly {
// Set the type byte in the given identifier to `1` (Local). We only care about
// the [1, 32) bytes in this value.
key_ := or(shl(248, 1), and(_ident, not(shl(248, 0xFF))))
}
key_ = localize(key_);
}
/// @notice Localizes a given local data key for the caller's context.
/// @dev The localization operation is defined as:
/// localize(k) = H(k .. sender) & ~(0xFF << 248) | (0x01 << 248)
/// where H is the Keccak-256 hash function.
/// @param _key The local data key to localize.
/// @return localizedKey_ The localized local data key.
function localize(bytes32 _key) internal view returns (bytes32 localizedKey_) {
assembly {
// Store the local data key and caller next to each other in memory for hashing.
mstore(0, _key)
mstore(0x20, caller())
// Localize the key with the above `localize` operation.
localizedKey_ := or(and(keccak256(0, 0x40), not(shl(248, 0xFF))), shl(248, 1))
}
}
/// @notice Computes and returns the key for a global keccak pre-image.
/// @param _preimage The pre-image.
/// @return key_ The pre-image key.
function keccak256PreimageKey(bytes memory _preimage)
internal
pure
returns (bytes32 key_)
{
assembly {
// Grab the size of the `_preimage`
let size := mload(_preimage)
// Compute the pre-image keccak256 hash (aka the pre-image key)
let h := keccak256(add(_preimage, 0x20), size)
// Mask out prefix byte, replace with type 2 byte
key_ := or(and(h, not(shl(248, 0xFF))), shl(248, 2))
}
}
}
packages/contracts-bedrock/src/cannon/PreimageOracle.sol
View file @
1888081c
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
pragma solidity 0.7.6;
import { PreimageKeyLib } from "./PreimageKeyLib.sol";
/// @title PreimageOracle
/// @notice A contract for storing permissioned pre-images.
...
...
@@ -35,11 +37,11 @@ contract PreimageOracle {
dat_ = preimageParts[_key][_offset];
}
// TODO(CLI-4104):
// we need to mix-in the ID of the dispute for local-type keys to avoid collisions,
// and restrict local pre-image insertion to the dispute-managing contract.
// For now we permit anyone to write any pre-image unchecked, to make testing easy.
// This method is DANGEROUS. And NOT FOR PRODUCTION.
//
/
TODO(CLI-4104):
//
/
we need to mix-in the ID of the dispute for local-type keys to avoid collisions,
//
/
and restrict local pre-image insertion to the dispute-managing contract.
//
/
For now we permit anyone to write any pre-image unchecked, to make testing easy.
//
/
This method is DANGEROUS. And NOT FOR PRODUCTION.
function cheat(
uint256 partOffset,
bytes32 key,
...
...
@@ -51,88 +53,25 @@ contract PreimageOracle {
preimageLengths[key] = size;
}
/// @notice Loads local data into the pre-image oracle in the context of the caller.
/// @param _bootInfo The boot info struct encoded as a tuple of .
function loadLocalData(bytes memory _bootInfo) external {
(
bytes32 l1head,
bytes32 l2head,
bytes32 l2claim,
uint64 l2ClaimBlockNumber,
bytes memory l2ChainConfig,
bytes memory rollupConfig
) = abi.decode(_bootInfo, (bytes32, bytes32, bytes32, uint64, bytes, bytes));
assembly {
/// Store a value in a mapping
function storeInMapping(k, v, mappingSlot) {
// Value slot: `keccak256(k . mappingSlot)`
mstore(0x00, k)
mstore(0x20, mappingSlot)
sstore(keccak256(0x00, 0x40), v)
}
/// Store a value in a nested mapping
function storeInNestedMapping(ka, kb, v, mappingSlot) {
// Compute the slot of the nested mapping
mstore(0x00, ka)
mstore(0x20, mappingSlot)
let nestedSlot := keccak256(0x00, 0x40)
// Compute the slot of the value & store it
mstore(0x00, kb)
mstore(0x20, nestedSlot)
sstore(keccak256(0x00, 0x40), v)
}
/// Compute the context-specifc key for a given local data identifier
function contextKey(ident) -> key {
// Store the global key (1 << 248 | ident)
mstore(0, or(shl(248, 1), ident))
// Store the caller to add context to the local data's global key
mstore(0x20, caller())
// Hash the data to get the context-specific key
// localize(k) = H(k .. sender) & ~(0xFF << 248) | (1 << 248)
key := or(and(keccak256(0, 0x40), not(shl(248, 0xFF))), shl(248, 1))
}
/// Store a fixed-size piece of local data
function storeFixed(ident, offset, size, data) {
// Grab the context key for the given `ident`
let k := contextKey(ident)
// Store the fixed data
storeInNestedMapping(k, offset, true, preimagePartOk.slot)
storeInNestedMapping(k, offset, data, preimageParts.slot)
storeInMapping(k, size, preimageLengths.slot)
}
/// Store a dynamic-size piece of local data
function storeDyn(ident, dataOffset) {
// Grab the length of the data
let size := mload(dataOffset)
// Grab the context key for the given `ident`
let k := contextKey(ident)
// Store each component of the preimage key.
let dataStart := add(dataOffset, 0x20)
for { let i := 0 } lt(i, size) { i := add(i, 0x20) } {
// Load the part at the given offset
// TODO(clabby): Verify size.
let part := mload(add(dataStart, i))
storeInNestedMapping(k, i, true, preimagePartOk.slot)
storeInNestedMapping(k, i, part, preimageParts.slot)
storeInMapping(k, size, preimageLengths.slot)
}
}
/// @notice Loads a local data part into the preimage oracle.
/// @param _partOffset The offset of the local data part.
/// @param _ident The identifier of the local data.
/// @param _part The local data part.
/// @param _size The size of the local data.
/// @dev The local data part is loaded into the preimage oracle under the context
/// of the caller - no other account can write to the caller's context
/// specific data.
function loadLocalPart(
uint256 _partOffset,
uint256 _ident,
bytes32 _part,
uint256 _size
) external {
bytes32 key = PreimageKeyLib.localizeIdent(_ident);
// Store all components of the boot info.
storeFixed(0, 0, 32, l1head)
storeFixed(1, 0, 32, l2head)
storeFixed(2, 0, 32, l2claim)
storeFixed(3, 0, 32, l2ClaimBlockNumber)
storeDyn(4, l2ChainConfig)
storeDyn(5, rollupConfig)
}
preimagePartOk[key][_partOffset] = true;
preimageParts[key][_partOffset] = _part;
preimageLengths[key] = _size;
}
/// @notice Prepares a pre-image to be read by keccak256 key, starting at
...
...
@@ -170,30 +109,4 @@ contract PreimageOracle {
preimageParts[key][_partOffset] = part;
preimageLengths[key] = size;
}
/// @notice Computes and returns the key for a global keccak pre-image.
/// @param _preimage The pre-image.
/// @return key_ The pre-image key.
function computeKeccak256PreimageKey(bytes calldata _preimage) external pure returns (bytes32 key_) {
assembly {
let size := calldataload(0x24)
// Leave slots 0x40 and 0x60 untouched,
// and everything after as scratch-memory.
let ptr := 0x80
// Store size as a big-endian uint64 at the start of pre-image
mstore(ptr, shl(192, size))
ptr := add(ptr, 8)
// Copy preimage payload into memory so we can hash and read it.
calldatacopy(ptr, _preimage.offset, size)
// Compute the pre-image keccak256 hash (aka the pre-image key)
let h := keccak256(ptr, size)
// Mask out prefix byte, replace with type 2 byte
key_ := or(and(h, not(shl(248, 0xFF))), shl(248, 2))
}
}
}
packages/contracts-bedrock/src/dispute/DisputeGameFactory.sol
View file @
1888081c
...
...
@@ -93,9 +93,7 @@ contract DisputeGameFactory is OwnableUpgradeable, IDisputeGameFactory, Semver {
}
// Clone the implementation contract and initialize it with the given parameters.
proxy = IDisputeGame(
address(impl).clone(abi.encodePacked(rootClaim, extraData.length, extraData))
);
proxy = IDisputeGame(address(impl).clone(abi.encodePacked(rootClaim, extraData)));
proxy.initialize();
// Compute the unique identifier for the dispute game.
...
...
packages/contracts-bedrock/src/dispute/FaultDisputeGame.sol
View file @
1888081c
...
...
@@ -243,7 +243,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
/// @inheritdoc IFaultDisputeGame
function l2BlockNumber() public pure returns (uint256 l2BlockNumber_) {
l2BlockNumber_ = _getArgUint256(0x
2
0);
l2BlockNumber_ = _getArgUint256(0x
4
0);
}
////////////////////////////////////////////////////////////////
...
...
@@ -334,16 +334,11 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
rootClaim_ = Claim.wrap(_getArgFixedBytes(0x00));
}
/// @inheritdoc IDisputeGame
function extraDataLen() public pure returns (uint256 extraDataLen_) {
// The extra data length is in the second word of the cwia calldata.
extraDataLen_ = _getArgUint256(0x20);
}
/// @inheritdoc IDisputeGame
function extraData() public pure returns (bytes memory extraData_) {
// The extra data starts at the third word within the cwia calldata.
extraData_ = _getArgDynBytes(0x40, uint64(extraDataLen()));
// Account for the `l2BlockNumber` argument @ 0x40.
extraData_ = _getArgDynBytes(0x20, 0x20);
}
/// @inheritdoc IDisputeGame
...
...
@@ -383,8 +378,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
})
);
// Load the local data into the preimage oracle.
VM.oracle().loadLocalData(extraData());
// TODO(clabby): Load the local data into the preimage oracle.
}
/// @notice Returns the length of the `claimData` array.
...
...
packages/contracts-bedrock/src/dispute/interfaces/IBigStepper.sol
View file @
1888081c
...
...
@@ -39,7 +39,15 @@ interface IBigStepper {
/// @notice Temporary interface for the `IPreimageOracle`. Remove once we've upgraded
/// the cannon contracts to a newer version of solc.
interface IPreimageOracle {
/// @notice Loads local data into the pre-image oracle in the context of the caller.
/// @param _bootInfo The boot info struct encoded as a tuple of .
function loadLocalData(bytes memory _bootInfo) external;
/// @notice Loads a local data part into the preimage oracle.
/// @param _partOffset The offset of the local data part.
/// @param _ident The identifier of the local data.
/// @param _part The local data part.
/// @param _size The size of the local data.
function loadLocalPart(
uint256 _partOffset,
uint256 _ident,
bytes32 _part,
uint256 _size
) external;
}
packages/contracts-bedrock/src/dispute/interfaces/IDisputeGame.sol
View file @
1888081c
...
...
@@ -32,13 +32,8 @@ interface IDisputeGame is IInitializable {
/// @return rootClaim_ The root claim of the DisputeGame.
function rootClaim() external pure returns (Claim rootClaim_);
/// @notice Getter for the length of the extra data.
/// @dev `clones-with-immutable-args` argument #2
/// @return extraDataLen_ The length of the `extraData`
function extraDataLen() external pure returns (uint256 extraDataLen_);
/// @notice Getter for the extra data.
/// @dev `clones-with-immutable-args` argument #
3
/// @dev `clones-with-immutable-args` argument #
2
/// @return extraData_ Any extra data supplied to the dispute game contract by the creator.
function extraData() external pure returns (bytes memory extraData_);
...
...
packages/contracts-bedrock/test/PreimageOracle.t.sol
View file @
1888081c
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
pragma solidity 0.7.6;
pragma abicoder v2;
import { Test } from "forge-std/Test.sol";
import { PreimageOracle } from "../src/cannon/PreimageOracle.sol";
import { PreimageOracle } from "../cannon/PreimageOracle.sol";
import { PreimageKeyLib } from "../cannon/PreimageKeyLib.sol";
contract PreimageOracle_Test is Test {
PreimageOracle oracle;
...
...
@@ -15,9 +17,9 @@ contract PreimageOracle_Test is Test {
}
/// @notice Test the pre-image key computation with a known pre-image.
function test_
compute
PreimageKey_succeeds() public {
function test_
keccak256
PreimageKey_succeeds() public {
bytes memory preimage = hex"deadbeef";
bytes32 key =
oracle.computeK
eccak256PreimageKey(preimage);
bytes32 key =
PreimageKeyLib.k
eccak256PreimageKey(preimage);
bytes32 known = 0x02fd4e189132273036449fc9e11198c739161b4c0116a9a2dccdfa1c492006f1;
assertEq(key, known);
}
...
...
@@ -26,7 +28,7 @@ contract PreimageOracle_Test is Test {
function test_loadKeccak256PreimagePart_succeeds() public {
// Set the pre-image
bytes memory preimage = hex"deadbeef";
bytes32 key =
oracle.computeK
eccak256PreimageKey(preimage);
bytes32 key =
PreimageKeyLib.k
eccak256PreimageKey(preimage);
uint256 offset = 0;
oracle.loadKeccak256PreimagePart(offset, preimage);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment