Skip to content

Instantly share code, notes, and snippets.

@lushang
Created July 5, 2021 09:50
Show Gist options
  • Save lushang/b9bfd8acd8c1f4b78a18999c072ee36a to your computer and use it in GitHub Desktop.
Save lushang/b9bfd8acd8c1f4b78a18999c072ee36a to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.5.16+commit.9c3226ce.js&optimize=false&runs=200&gist=
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60606040526040805190810160405280600381526020017f312e3000000000000000000000000000000000000000000000000000000000008152506003908051906020019062000051929190620001c0565b5060006009556000600a55610271600b5534156200006e57600080fd5b60405160408062001e8f833981016040528080519060200190919080519060200190919050505b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908315150217905550600060068190555060006007819055506200012081620001af6401000000000262001bb4176401000000009004565b6008819055506200014862989680620001af6401000000000262001bb4176401000000009004565b600081905550600054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000546008541115620001a657600080fd5b5b50506200026f565b60006012600a0a820290505b919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020357805160ff191683800117855562000234565b8280016001018555821562000234579182015b828111156200023357825182559160200191906001019062000216565b5b50905062000243919062000247565b5090565b6200026c91905b80821115620002685760008160009055506001016200024e565b5090565b90565b611c10806200027f6000396000f30060606040523615610173576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610294578063095ea7b3146103235780630a9ffdb71461037d57806313b53153146103bf57806318160ddd146103ec57806323b872dd1461041557806326a215751461048e578063313ce567146104b757806332513ce5146104e05780634172d080146105355780634477c5da1461055e5780634a36df251461057357806354fd4d50146105ac5780636fe3a5671461063b57806370a0823114610664578063771282f6146106b1578063775c46cd146106da5780638fd3ab801461070657806395d89b411461071b57806398e52f9a146107aa578063a6f9dae1146107cd578063a81c3bdf14610806578063a9059cbb1461085b578063b921e163146108b5578063cb7b8673146108d8578063d648a647146108fb578063dd62ed3e14610924578063e28d717b14610990578063ff29507d146109a5575b6102925b6000600560149054906101000a900460ff16151561019457600080fd5b60003414156101a257600080fd5b6006544310156101b157600080fd5b6007544311156101c057600080fd5b6101cc34600b546109ce565b9050600854600954820111156101e157600080fd5b6101ed60095482610a02565b60098190555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f7ba26a0f068612fb882b3272004674d21fed286c2c8c795cf653044690b32db4826040518082815260200191505060405180910390a25b50565b005b341561029f57600080fd5b6102a7610a2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e85780820151818401525b6020810190506102cc565b50505050905090810190601f1680156103155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032e57600080fd5b610363600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a66565b604051808215151515815260200191505060405180910390f35b341561038857600080fd5b6103bd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b59565b005b34156103ca57600080fd5b6103d2610cdc565b604051808215151515815260200191505060405180910390f35b34156103f757600080fd5b6103ff610cef565b6040518082815260200191505060405180910390f35b341561042057600080fd5b610474600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cf5565b604051808215151515815260200191505060405180910390f35b341561049957600080fd5b6104a1610f76565b6040518082815260200191505060405180910390f35b34156104c257600080fd5b6104ca610f7c565b6040518082815260200191505060405180910390f35b34156104eb57600080fd5b6104f3610f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054057600080fd5b610548610fa7565b6040518082815260200191505060405180910390f35b341561056957600080fd5b610571610fad565b005b341561057e57600080fd5b6105aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611043565b005b34156105b757600080fd5b6105bf611140565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106005780820151818401525b6020810190506105e4565b50505050905090810190601f16801561062d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561064657600080fd5b61064e6111de565b6040518082815260200191505060405180910390f35b341561066f57600080fd5b61069b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111e4565b6040518082815260200191505060405180910390f35b34156106bc57600080fd5b6106c461122e565b6040518082815260200191505060405180910390f35b34156106e557600080fd5b6107046004808035906020019091908035906020019091905050611234565b005b341561071157600080fd5b6107196112f5565b005b341561072657600080fd5b61072e61155e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076f5780820151818401525b602081019050610753565b50505050905090810190601f16801561079c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107b557600080fd5b6107cb6004808035906020019091905050611597565b005b34156107d857600080fd5b610804600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611662565b005b341561081157600080fd5b61081961173e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561086657600080fd5b61089b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611764565b604051808215151515815260200191505060405180910390f35b34156108c057600080fd5b6108d660048080359060200190919050506118d2565b005b34156108e357600080fd5b6108f9600480803590602001909190505061199d565b005b341561090657600080fd5b61090e611a22565b6040518082815260200191505060405180910390f35b341561092f57600080fd5b61097a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a28565b6040518082815260200191505060405180910390f35b341561099b57600080fd5b6109a3611ab0565b005b34156109b057600080fd5b6109b8611bae565b6040518082815260200191505060405180910390f35b600080828402905060008414806109ef57508284828115156109ec57fe5b04145b15156109f757fe5b8091505b5092915050565b6000808284019050838110158015610a1a5750828110155b1515610a2257fe5b8091505b5092915050565b6040805190810160405280600681526020017f426c69426c69000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bb757600080fd5b6000821415610bc557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bff57600080fd5b610c13610c0b83611bb4565b600b546109ce565b905060085460095482011115610c2857600080fd5b610c3460095482610a02565b60098190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff167f1aee3ddc9eba03c98b273cd914e999b78162e1ddd1c022045394f635a469e105826040518082815260200191505060405180910390a25b5b505050565b600560149054906101000a900460ff1681565b60005481565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610dc2575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b8015610dce5750600082115b15610f655781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610f6f565b60009050610f6f565b5b9392505050565b60095481565b601281565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100957600080fd5b600560149054906101000a900460ff16151561102457600080fd5b6000600560146101000a81548160ff0219169083151502179055505b5b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109f57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110fa57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b505050505081565b600a5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561129057600080fd5b600560149054906101000a900460ff16156112aa57600080fd5b80821015156112b857600080fd5b81431015156112c657600080fd5b81600681905550806007819055506001600560146101000a81548160ff0219169083151502179055505b5b5050565b600080600560149054906101000a900460ff161561131257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561136e57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008214156113be57600080fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061140f600a5483610a02565b600a81905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663ad68ebf733846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156114e557600080fd5b6102c65a03f115156114f657600080fd5b50505060405180519050151561150b57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d836040518082815260200191505060405180910390a25b5050565b6040805190810160405280600581526020017f42436f696e00000000000000000000000000000000000000000000000000000081525081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115f557600080fd5b6115fe82611bb4565b90506008546009548201111561161357600080fd5b61161f60085482611bc5565b6008819055507f9ecdebfa921d6ab8cecf7259ef30327664ad0d45d32fa3641089b00b533f2eee816040518082815260200191505060405180910390a15b5b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116be57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116f857600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156117b55750600082115b156118c25781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506118cc565b600090506118cc565b5b92915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193057600080fd5b61193982611bb4565b90506000546008548201111561194e57600080fd5b61195a60085482610a02565b6008819055507ffaabf704b783af9e21c676de8e3e6e0c9c2260dce2ee299437ec9b70151ddaeb816040518082815260200191505060405180910390a15b5b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119f957600080fd5b6000811415611a0757600080fd5b600b54811415611a1657600080fd5b80600b819055505b5b50565b60065481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b0c57600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff16311415611b3157600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611baa57600080fd5b5b5b565b60075481565b60006012600a0a820290505b919050565b600080828410151515611bd457fe5b82840390508091505b50929150505600a165627a7a723058206da987959300be6276e322023dba35ea04a160863bedbea81cd76dd6b60f6f670029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x312E300000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x51 SWAP3 SWAP2 SWAP1 PUSH3 0x1C0 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x9 SSTORE PUSH1 0x0 PUSH1 0xA SSTORE PUSH2 0x271 PUSH1 0xB SSTORE CALLVALUE ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP1 PUSH3 0x1E8F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 MSTORE DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP JUMPDEST DUP2 PUSH1 0x4 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x7 DUP2 SWAP1 SSTORE POP PUSH3 0x120 DUP2 PUSH3 0x1AF PUSH5 0x100000000 MUL PUSH3 0x1BB4 OR PUSH5 0x100000000 SWAP1 DIV JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH3 0x148 PUSH3 0x989680 PUSH3 0x1AF PUSH5 0x100000000 MUL PUSH3 0x1BB4 OR PUSH5 0x100000000 SWAP1 DIV JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x0 SLOAD PUSH1 0x8 SLOAD GT ISZERO PUSH3 0x1A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST POP POP PUSH3 0x26F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 PUSH1 0xA EXP DUP3 MUL SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x203 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x234 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x234 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x233 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x216 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x243 SWAP2 SWAP1 PUSH3 0x247 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x26C SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x268 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x24E JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x1C10 DUP1 PUSH3 0x27F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0xA9FFDB7 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x13B53153 EQ PUSH2 0x3BF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x415 JUMPI DUP1 PUSH4 0x26A21575 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0x32513CE5 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0x4172D080 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4477C5DA EQ PUSH2 0x55E JUMPI DUP1 PUSH4 0x4A36DF25 EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x6FE3A567 EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0x771282F6 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0x775C46CD EQ PUSH2 0x6DA JUMPI DUP1 PUSH4 0x8FD3AB80 EQ PUSH2 0x706 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x71B JUMPI DUP1 PUSH4 0x98E52F9A EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0xA6F9DAE1 EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0xA81C3BDF EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x85B JUMPI DUP1 PUSH4 0xB921E163 EQ PUSH2 0x8B5 JUMPI DUP1 PUSH4 0xCB7B8673 EQ PUSH2 0x8D8 JUMPI DUP1 PUSH4 0xD648A647 EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x924 JUMPI DUP1 PUSH4 0xE28D717B EQ PUSH2 0x990 JUMPI DUP1 PUSH4 0xFF29507D EQ PUSH2 0x9A5 JUMPI JUMPDEST PUSH2 0x292 JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE EQ ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD NUMBER LT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD NUMBER GT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CC CALLVALUE PUSH1 0xB SLOAD PUSH2 0x9CE JUMP JUMPDEST SWAP1 POP PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD DUP3 ADD GT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1ED PUSH1 0x9 SLOAD DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7BA26A0F068612FB882B3272004674D21FED286C2C8C795CF653044690B32DB4 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A7 PUSH2 0xA2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2CC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x315 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x363 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BD PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xB59 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D2 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FF PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x474 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A1 PUSH2 0xF76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4CA PUSH2 0xF7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F3 PUSH2 0xF81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x548 PUSH2 0xFA7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x571 PUSH2 0xFAD JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AA PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1043 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x5B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5BF PUSH2 0x1140 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x600 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x62D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x69B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C4 PUSH2 0x122E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x704 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1234 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 PUSH2 0x12F5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72E PUSH2 0x155E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x76F JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x753 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x79C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7CB PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1597 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x7D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x804 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1662 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x819 PUSH2 0x173E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1764 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D6 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x18D2 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x8E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8F9 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x199D JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90E PUSH2 0x1A22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x92F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x97A PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1A28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x99B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9A3 PUSH2 0x1AB0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B8 PUSH2 0x1BAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 MUL SWAP1 POP PUSH1 0x0 DUP5 EQ DUP1 PUSH2 0x9EF JUMPI POP DUP3 DUP5 DUP3 DUP2 ISZERO ISZERO PUSH2 0x9EC JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO ISZERO PUSH2 0x9F7 JUMPI INVALID JUMPDEST DUP1 SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI POP DUP3 DUP2 LT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0xA22 JUMPI INVALID JUMPDEST DUP1 SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x426C69426C690000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xBFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC13 PUSH2 0xC0B DUP4 PUSH2 0x1BB4 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH2 0x9CE JUMP JUMPDEST SWAP1 POP PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD DUP3 ADD GT ISZERO PUSH2 0xC28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC34 PUSH1 0x9 SLOAD DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1AEE3DDC9EBA03C98B273CD914E999B78162E1DDD1C022045394F635A469E105 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0xDC2 JUMPI POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xDCE JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0xF65 JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0xF6F JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0xF6F JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x1024 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x109F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x10FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x11D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11AB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11D6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x11B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x12AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 LT ISZERO ISZERO PUSH2 0x12B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 NUMBER LT ISZERO ISZERO PUSH2 0x12C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x6 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x136E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x13BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x140F PUSH1 0xA SLOAD DUP4 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD68EBF7 CALLER DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO ISZERO PUSH2 0x14E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 GAS SUB CALL ISZERO ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD DUP1 MLOAD SWAP1 POP ISZERO ISZERO PUSH2 0x150B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA59785389B00CBD19745AFBE8D59B28E3161395C6B1E3525861A2B0DEDE0B90D DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x42436F696E000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x15F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15FE DUP3 PUSH2 0x1BB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD DUP3 ADD GT ISZERO PUSH2 0x1613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x161F PUSH1 0x8 SLOAD DUP3 PUSH2 0x1BC5 JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH32 0x9ECDEBFA921D6AB8CECF7259EF30327664AD0D45D32FA3641089B00B533F2EEE DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x16BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x16F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x4 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x17B5 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x18C2 JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0x18CC JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0x18CC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1939 DUP3 PUSH2 0x1BB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SLOAD PUSH1 0x8 SLOAD DUP3 ADD GT ISZERO PUSH2 0x194E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x195A PUSH1 0x8 SLOAD DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH32 0xFAABF704B783AF9E21C676DE8E3E6E0C9C2260DCE2EE299437EC9B70151DDAEB DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x19F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO PUSH2 0x1A07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xB SLOAD DUP2 EQ ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1B0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE EQ ISZERO PUSH2 0x1B31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO ISZERO PUSH2 0x1BAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST JUMPDEST JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 PUSH1 0xA EXP DUP3 MUL SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT ISZERO ISZERO ISZERO PUSH2 0x1BD4 JUMPI INVALID JUMPDEST DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH14 0xA987959300BE6276E322023DBA35 0xea DIV LOG1 PUSH1 0x86 EXTCODESIZE 0xed 0xbe 0xa8 0x1c 0xd7 PUSH14 0xD6B60F6F67002900000000000000 ",
"sourceMap": "2791:5706:0:-;;;3003:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3480:1;3451:30;;3554:1;3523:32;;3632:3;3597:38;;4200:501;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4322:15;4305:14;;:32;;;;;;;;;;;;;;;;;;4363:5;4351:9;;:17;;;;;;;;;;;;;;;;;;4459:1;4439:17;:21;;;;4490:1;4471:16;:20;;;;4521:30;4536:14;4521;;;;;:30;;;:::i;:::-;4505:13;:46;;;;4576:24;4591:8;4576:14;;;;;:24;;;:::i;:::-;4562:11;:38;;;;4634:11;;4611:8;:20;4620:10;4611:20;;;;;;;;;;;;;;;:34;;;;4675:11;;4659:13;;:27;4656:37;;;4688:5;;;4656:37;4200:501;;;2791:5706;;4054:117;4112:7;2994:2;4149;:14;4140:6;:23;4133:30;;4054:117;;;;:::o;2791:5706::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "60606040523615610173576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610294578063095ea7b3146103235780630a9ffdb71461037d57806313b53153146103bf57806318160ddd146103ec57806323b872dd1461041557806326a215751461048e578063313ce567146104b757806332513ce5146104e05780634172d080146105355780634477c5da1461055e5780634a36df251461057357806354fd4d50146105ac5780636fe3a5671461063b57806370a0823114610664578063771282f6146106b1578063775c46cd146106da5780638fd3ab801461070657806395d89b411461071b57806398e52f9a146107aa578063a6f9dae1146107cd578063a81c3bdf14610806578063a9059cbb1461085b578063b921e163146108b5578063cb7b8673146108d8578063d648a647146108fb578063dd62ed3e14610924578063e28d717b14610990578063ff29507d146109a5575b6102925b6000600560149054906101000a900460ff16151561019457600080fd5b60003414156101a257600080fd5b6006544310156101b157600080fd5b6007544311156101c057600080fd5b6101cc34600b546109ce565b9050600854600954820111156101e157600080fd5b6101ed60095482610a02565b60098190555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f7ba26a0f068612fb882b3272004674d21fed286c2c8c795cf653044690b32db4826040518082815260200191505060405180910390a25b50565b005b341561029f57600080fd5b6102a7610a2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e85780820151818401525b6020810190506102cc565b50505050905090810190601f1680156103155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032e57600080fd5b610363600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a66565b604051808215151515815260200191505060405180910390f35b341561038857600080fd5b6103bd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b59565b005b34156103ca57600080fd5b6103d2610cdc565b604051808215151515815260200191505060405180910390f35b34156103f757600080fd5b6103ff610cef565b6040518082815260200191505060405180910390f35b341561042057600080fd5b610474600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cf5565b604051808215151515815260200191505060405180910390f35b341561049957600080fd5b6104a1610f76565b6040518082815260200191505060405180910390f35b34156104c257600080fd5b6104ca610f7c565b6040518082815260200191505060405180910390f35b34156104eb57600080fd5b6104f3610f81565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561054057600080fd5b610548610fa7565b6040518082815260200191505060405180910390f35b341561056957600080fd5b610571610fad565b005b341561057e57600080fd5b6105aa600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611043565b005b34156105b757600080fd5b6105bf611140565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106005780820151818401525b6020810190506105e4565b50505050905090810190601f16801561062d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561064657600080fd5b61064e6111de565b6040518082815260200191505060405180910390f35b341561066f57600080fd5b61069b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111e4565b6040518082815260200191505060405180910390f35b34156106bc57600080fd5b6106c461122e565b6040518082815260200191505060405180910390f35b34156106e557600080fd5b6107046004808035906020019091908035906020019091905050611234565b005b341561071157600080fd5b6107196112f5565b005b341561072657600080fd5b61072e61155e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561076f5780820151818401525b602081019050610753565b50505050905090810190601f16801561079c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107b557600080fd5b6107cb6004808035906020019091905050611597565b005b34156107d857600080fd5b610804600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611662565b005b341561081157600080fd5b61081961173e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561086657600080fd5b61089b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611764565b604051808215151515815260200191505060405180910390f35b34156108c057600080fd5b6108d660048080359060200190919050506118d2565b005b34156108e357600080fd5b6108f9600480803590602001909190505061199d565b005b341561090657600080fd5b61090e611a22565b6040518082815260200191505060405180910390f35b341561092f57600080fd5b61097a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a28565b6040518082815260200191505060405180910390f35b341561099b57600080fd5b6109a3611ab0565b005b34156109b057600080fd5b6109b8611bae565b6040518082815260200191505060405180910390f35b600080828402905060008414806109ef57508284828115156109ec57fe5b04145b15156109f757fe5b8091505b5092915050565b6000808284019050838110158015610a1a5750828110155b1515610a2257fe5b8091505b5092915050565b6040805190810160405280600681526020017f426c69426c69000000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bb757600080fd5b6000821415610bc557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bff57600080fd5b610c13610c0b83611bb4565b600b546109ce565b905060085460095482011115610c2857600080fd5b610c3460095482610a02565b60098190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff167f1aee3ddc9eba03c98b273cd914e999b78162e1ddd1c022045394f635a469e105826040518082815260200191505060405180910390a25b5b505050565b600560149054906101000a900460ff1681565b60005481565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610dc2575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b8015610dce5750600082115b15610f655781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050610f6f565b60009050610f6f565b5b9392505050565b60095481565b601281565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561100957600080fd5b600560149054906101000a900460ff16151561102457600080fd5b6000600560146101000a81548160ff0219169083151502179055505b5b565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561109f57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110fa57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111d65780601f106111ab576101008083540402835291602001916111d6565b820191906000526020600020905b8154815290600101906020018083116111b957829003601f168201915b505050505081565b600a5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561129057600080fd5b600560149054906101000a900460ff16156112aa57600080fd5b80821015156112b857600080fd5b81431015156112c657600080fd5b81600681905550806007819055506001600560146101000a81548160ff0219169083151502179055505b5b5050565b600080600560149054906101000a900460ff161561131257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561136e57600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008214156113be57600080fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061140f600a5483610a02565b600a81905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663ad68ebf733846000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156114e557600080fd5b6102c65a03f115156114f657600080fd5b50505060405180519050151561150b57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d836040518082815260200191505060405180910390a25b5050565b6040805190810160405280600581526020017f42436f696e00000000000000000000000000000000000000000000000000000081525081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115f557600080fd5b6115fe82611bb4565b90506008546009548201111561161357600080fd5b61161f60085482611bc5565b6008819055507f9ecdebfa921d6ab8cecf7259ef30327664ad0d45d32fa3641089b00b533f2eee816040518082815260200191505060405180910390a15b5b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116be57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116f857600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156117b55750600082115b156118c25781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506118cc565b600090506118cc565b5b92915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561193057600080fd5b61193982611bb4565b90506000546008548201111561194e57600080fd5b61195a60085482610a02565b6008819055507ffaabf704b783af9e21c676de8e3e6e0c9c2260dce2ee299437ec9b70151ddaeb816040518082815260200191505060405180910390a15b5b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119f957600080fd5b6000811415611a0757600080fd5b600b54811415611a1657600080fd5b80600b819055505b5b50565b60065481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b92915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b0c57600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff16311415611b3157600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611baa57600080fd5b5b5b565b60075481565b60006012600a0a820290505b919050565b600080828410151515611bd457fe5b82840390508091505b50929150505600a165627a7a723058206da987959300be6276e322023dba35ea04a160863bedbea81cd76dd6b60f6f670029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x323 JUMPI DUP1 PUSH4 0xA9FFDB7 EQ PUSH2 0x37D JUMPI DUP1 PUSH4 0x13B53153 EQ PUSH2 0x3BF JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x415 JUMPI DUP1 PUSH4 0x26A21575 EQ PUSH2 0x48E JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x4B7 JUMPI DUP1 PUSH4 0x32513CE5 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0x4172D080 EQ PUSH2 0x535 JUMPI DUP1 PUSH4 0x4477C5DA EQ PUSH2 0x55E JUMPI DUP1 PUSH4 0x4A36DF25 EQ PUSH2 0x573 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0x6FE3A567 EQ PUSH2 0x63B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x664 JUMPI DUP1 PUSH4 0x771282F6 EQ PUSH2 0x6B1 JUMPI DUP1 PUSH4 0x775C46CD EQ PUSH2 0x6DA JUMPI DUP1 PUSH4 0x8FD3AB80 EQ PUSH2 0x706 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x71B JUMPI DUP1 PUSH4 0x98E52F9A EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0xA6F9DAE1 EQ PUSH2 0x7CD JUMPI DUP1 PUSH4 0xA81C3BDF EQ PUSH2 0x806 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x85B JUMPI DUP1 PUSH4 0xB921E163 EQ PUSH2 0x8B5 JUMPI DUP1 PUSH4 0xCB7B8673 EQ PUSH2 0x8D8 JUMPI DUP1 PUSH4 0xD648A647 EQ PUSH2 0x8FB JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x924 JUMPI DUP1 PUSH4 0xE28D717B EQ PUSH2 0x990 JUMPI DUP1 PUSH4 0xFF29507D EQ PUSH2 0x9A5 JUMPI JUMPDEST PUSH2 0x292 JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x194 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 CALLVALUE EQ ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x6 SLOAD NUMBER LT ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x7 SLOAD NUMBER GT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CC CALLVALUE PUSH1 0xB SLOAD PUSH2 0x9CE JUMP JUMPDEST SWAP1 POP PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD DUP3 ADD GT ISZERO PUSH2 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1ED PUSH1 0x9 SLOAD DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7BA26A0F068612FB882B3272004674D21FED286C2C8C795CF653044690B32DB4 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x29F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A7 PUSH2 0xA2D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E8 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2CC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x315 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x363 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xA66 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BD PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xB59 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x3CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D2 PUSH2 0xCDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FF PUSH2 0xCEF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x474 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0xCF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x499 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A1 PUSH2 0xF76 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4CA PUSH2 0xF7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F3 PUSH2 0xF81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x548 PUSH2 0xFA7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x571 PUSH2 0xFAD JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AA PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1043 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x5B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5BF PUSH2 0x1140 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x600 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x5E4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x62D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64E PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x69B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x11E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6C4 PUSH2 0x122E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x704 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1234 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x719 PUSH2 0x12F5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72E PUSH2 0x155E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x76F JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE JUMPDEST PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x753 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x79C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x7B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7CB PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1597 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x7D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x804 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1662 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x811 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x819 PUSH2 0x173E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x89B PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1764 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8D6 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x18D2 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x8E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8F9 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x199D JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90E PUSH2 0x1A22 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x92F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x97A PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x1A28 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x99B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9A3 PUSH2 0x1AB0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE ISZERO PUSH2 0x9B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B8 PUSH2 0x1BAE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 MUL SWAP1 POP PUSH1 0x0 DUP5 EQ DUP1 PUSH2 0x9EF JUMPI POP DUP3 DUP5 DUP3 DUP2 ISZERO ISZERO PUSH2 0x9EC JUMPI INVALID JUMPDEST DIV EQ JUMPDEST ISZERO ISZERO PUSH2 0x9F7 JUMPI INVALID JUMPDEST DUP1 SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO DUP1 ISZERO PUSH2 0xA1A JUMPI POP DUP3 DUP2 LT ISZERO JUMPDEST ISZERO ISZERO PUSH2 0xA22 JUMPI INVALID JUMPDEST DUP1 SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x426C69426C690000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0xBC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xBFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC13 PUSH2 0xC0B DUP4 PUSH2 0x1BB4 JUMP JUMPDEST PUSH1 0xB SLOAD PUSH2 0x9CE JUMP JUMPDEST SWAP1 POP PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD DUP3 ADD GT ISZERO PUSH2 0xC28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC34 PUSH1 0x9 SLOAD DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1AEE3DDC9EBA03C98B273CD914E999B78162E1DDD1C022045394F635A469E105 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0xDC2 JUMPI POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xDCE JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0xF65 JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0xF6F JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0xF6F JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1009 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH2 0x1024 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x109F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x10FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x11D6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11AB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11D6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x11B9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x12AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 LT ISZERO ISZERO PUSH2 0x12B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 NUMBER LT ISZERO ISZERO PUSH2 0x12C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x6 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x5 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x5 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x136E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x13BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x140F PUSH1 0xA SLOAD DUP4 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0xA DUP2 SWAP1 SSTORE POP PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAD68EBF7 CALLER DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO ISZERO PUSH2 0x14E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2C6 GAS SUB CALL ISZERO ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP PUSH1 0x40 MLOAD DUP1 MLOAD SWAP1 POP ISZERO ISZERO PUSH2 0x150B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA59785389B00CBD19745AFBE8D59B28E3161395C6B1E3525861A2B0DEDE0B90D DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x42436F696E000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x15F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15FE DUP3 PUSH2 0x1BB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD DUP3 ADD GT ISZERO PUSH2 0x1613 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x161F PUSH1 0x8 SLOAD DUP3 PUSH2 0x1BC5 JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH32 0x9ECDEBFA921D6AB8CECF7259EF30327664AD0D45D32FA3641089B00B533F2EEE DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x16BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x16F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x4 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x17B5 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x18C2 JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0x18CC JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0x18CC JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1939 DUP3 PUSH2 0x1BB4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 SLOAD PUSH1 0x8 SLOAD DUP3 ADD GT ISZERO PUSH2 0x194E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x195A PUSH1 0x8 SLOAD DUP3 PUSH2 0xA02 JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH32 0xFAABF704B783AF9E21C676DE8E3E6E0C9C2260DCE2EE299437EC9B70151DDAEB DUP2 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x19F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO PUSH2 0x1A07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xB SLOAD DUP2 EQ ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO ISZERO PUSH2 0x1B0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE EQ ISZERO PUSH2 0x1B31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO ISZERO PUSH2 0x1BAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST JUMPDEST JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 PUSH1 0xA EXP DUP3 MUL SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT ISZERO ISZERO ISZERO PUSH2 0x1BD4 JUMPI INVALID JUMPDEST DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 PUSH14 0xA987959300BE6276E322023DBA35 0xea DIV LOG1 PUSH1 0x86 EXTCODESIZE 0xed 0xbe 0xa8 0x1c 0xd7 PUSH14 0xD6B60F6F67002900000000000000 ",
"sourceMap": "2791:5706:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8004:490;8216:14;8040:9;;;;;;;;;;;8039:10;8035:21;;;8051:5;;;8035:21;8084:1;8071:9;:14;8067:25;;;8087:5;;;8067:25;8125:17;;8110:12;:32;8106:43;;;8144:5;;;8106:43;8179:16;;8164:12;:31;8160:42;;;8197:5;;;8160:42;8233:38;8242:9;8253:17;;8233:8;:38::i;:::-;8216:55;;8309:13;;8295:11;;8286:6;:20;:36;8282:47;;;8324:5;;;8282:47;8357:28;8365:11;;8378:6;8357:7;:28::i;:::-;8343:11;:42;;;;8420:6;8396:8;:20;8405:10;8396:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;8451:10;8440:30;;;8463:6;8440:30;;;;;;;;;;;;;;;;;;8004:490;;:::o;2791:5706::-;;2866:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2320:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7528:446;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3223:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;690:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1743:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3451:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2959:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3125:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3597:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6138:108;;;;;;;;;;;;;;6329:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;3003:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3523:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2199:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3372:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5717:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6769:506;;;;;;;;;;;;;;2912:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5395:268:0;;;;;;;;;;;;;;;;;;;;;;;;;;6556:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;3061:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1382:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5094:260;;;;;;;;;;;;;;;;;;;;;;;;;;4812:241;;;;;;;;;;;;;;;;;;;;;;;;;;3292:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2531:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7321:143;;;;;;;;;;;;;;3331:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;497:160;554:7;574:9;590:1;586;:5;574:17;;615:1;610;:6;609:20;;;;627:1;622;620;:3;;;;;;;;:8;609:20;602:28;;;;;;648:1;641:8;;497:160;;;;;;:::o;170:159::-;226:7;246:9;262:1;258;:5;246:17;;287:1;282;:6;;281:20;;;;;299:1;294;:6;;281:20;274:28;;;;;;320:1;313:8;;170:159;;;;;;:::o;2866:39::-;;;;;;;;;;;;;;;;;;;;:::o;2320:202::-;2380:12;2437:6;2405:7;:19;2413:10;2405:19;;;;;;;;;;;;;;;:29;2425:8;2405:29;;;;;;;;;;;;;;;:38;;;;2475:8;2454:38;;2463:10;2454:38;;;2485:6;2454:38;;;;;;;;;;;;;;;;;;2510:4;2503:11;;2320:202;;;;;:::o;7528:446::-;7686:14;4754;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;7621:1;7613:4;:9;7609:20;;;7624:5;;;7609:20;7661:3;7644:21;;:5;:21;;;7640:32;;;7667:5;;;7640:32;7703:49;7712:20;7727:4;7712:14;:20::i;:::-;7734:17;;7703:8;:49::i;:::-;7686:66;;7790:13;;7776:11;;7767:6;:20;:36;7763:47;;;7805:5;;;7763:47;7838:28;7846:11;;7859:6;7838:7;:28::i;:::-;7824:11;:42;;;;7896:6;7877:8;:15;7886:5;7877:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;7930:5;7916:28;;;7937:6;7916:28;;;;;;;;;;;;;;;;;;4771:1;7528:446;;;;:::o;3223:24::-;;;;;;;;;;;;;:::o;690:26::-;;;;:::o;1743:447::-;1818:12;1866:6;1847:8;:15;1856:5;1847:15;;;;;;;;;;;;;;;;:25;;:65;;;;;1906:6;1876:7;:14;1884:5;1876:14;;;;;;;;;;;;;;;:26;1891:10;1876:26;;;;;;;;;;;;;;;;:36;;1847:65;:79;;;;;1925:1;1916:6;:10;1847:79;1843:340;;;1960:6;1943:8;:13;1952:3;1943:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;2000:6;1981:8;:15;1990:5;1981:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;2051:6;2021:7;:14;2029:5;2021:14;;;;;;;;;;;;;;;:26;2036:10;2021:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;2088:3;2072:28;;2081:5;2072:28;;;2093:6;2072:28;;;;;;;;;;;;;;;;;;2122:4;2115:11;;;;1843:340;2166:5;2159:12;;;;1843:340;1743:447;;;;;;:::o;3451:30::-;;;;:::o;2959:37::-;2994:2;2959:37;:::o;3125:30::-;;;;;;;;;;;;;:::o;3597:38::-;;;;:::o;6138:108::-;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;6194:9;;;;;;;;;;;6193:10;6189:21;;;6205:5;;;6189:21;6233:5;6221:9;;:17;;;;;;;;;;;;;;;;;;4771:1;6138:108;:::o;6329:181::-;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;6435:15;;;;;;;;;;;6415:35;;:16;:35;;;6411:46;;;6452:5;;;6411:46;6486:16;6468:15;;:34;;;;;;;;;;;;;;;;;;4771:1;6329:181;;:::o;3003:30::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3523:32::-;;;;:::o;2199:112::-;2252:15;2287:8;:16;2296:6;2287:16;;;;;;;;;;;;;;;;2280:23;;2199:112;;;;:::o;3372:28::-;;;;:::o;5717:377::-;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;5827:9;;;;;;;;;;;5823:20;;;5838:5;;;5823:20;5880:17;5858:18;:39;;5854:50;;;5899:5;;;5854:50;5935:18;5919:12;:34;;5915:45;;;5955:5;;;5915:45;5994:18;5974:17;:38;;;;6042:17;6023:16;:36;;;;6082:4;6070:9;;:16;;;;;;;;;;;;;;;;;;4771:1;5717:377;;;:::o;6769:506::-;6893:14;7072:30;6811:9;;;;;;;;;;;6808:19;;;6822:5;;;6808:19;6868:3;6841:31;;:15;;;;;;;;;;;:31;;;6838:41;;;6874:5;;;6838:41;6910:8;:20;6919:10;6910:20;;;;;;;;;;;;;;;;6893:37;;6955:1;6945:6;:11;6941:22;;;6958:5;;;6941:22;7000:1;6977:8;:20;6986:10;6977:20;;;;;;;;;;;;;;;:24;;;;7028:30;7036:13;;7051:6;7028:7;:30::i;:::-;7012:13;:46;;;;7124:15;;;;;;;;;;;7072:68;;7156:11;:19;;;7176:10;7188:6;7156:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7155:40;7151:51;;;7197:5;;;7151:51;7224:10;7216:27;;;7236:6;7216:27;;;;;;;;;;;;;;;;;;6769:506;;;:::o;2912:40::-;;;;;;;;;;;;;;;;;;;;:::o;5395:268::-;5464:13;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;5480:22;5495:6;5480:14;:22::i;:::-;5464:38;;5539:13;;5525:11;;5517:5;:19;:35;5513:46;;;5554:5;;;5513:46;5589:34;5602:13;;5617:5;5589:12;:34::i;:::-;5573:13;:50;;;;5634:21;5649:5;5634:21;;;;;;;;;;;;;;;;;;4771:1;5395:268;;;:::o;6556:169::-;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;6663:3;6636:31;;:15;:31;;;6632:42;;;6669:5;;;6632:42;6702:15;6685:14;;:32;;;;;;;;;;;;;;;;;;4771:1;6556:169;;:::o;3061:29::-;;;;;;;;;;;;;:::o;1382:352::-;1438:12;1491:6;1467:8;:20;1476:10;1467:20;;;;;;;;;;;;;;;;:30;;:44;;;;;1510:1;1501:6;:10;1467:44;1463:264;;;1552:6;1528:8;:20;1537:10;1528:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;1590:6;1573:8;:13;1582:3;1573:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;1632:3;1611:33;;1620:10;1611:33;;;1637:6;1611:33;;;;;;;;;;;;;;;;;;1666:4;1659:11;;;;1463:264;1710:5;1703:12;;;;1463:264;1382:352;;;;;:::o;5094:260::-;5163:13;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;5179:22;5194:6;5179:14;:22::i;:::-;5163:38;;5240:11;;5224:13;;5216:5;:21;:35;5212:46;;;5253:5;;;5212:46;5285:29;5293:13;;5308:5;5285:7;:29::i;:::-;5269:13;:45;;;;5325:21;5340:5;5325:21;;;;;;;;;;;;;;;;;;4771:1;5094:260;;;:::o;4812:241::-;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;4924:1;4902:18;:23;4898:34;;;4927:5;;;4898:34;4969:17;;4947:18;:39;4943:50;;;4988:5;;;4943:50;5027:18;5007:17;:38;;;;4771:1;4812:241;;:::o;3292:32::-;;;;:::o;2531:141::-;2602:17;2639:7;:15;2647:6;2639:15;;;;;;;;;;;;;;;:25;2655:8;2639:25;;;;;;;;;;;;;;;;2632:32;;2531:141;;;;;:::o;7321:143::-;4754:14;;;;;;;;;;;4740:28;;:10;:28;;;4732:37;;;;;;;;7392:1;7376:4;:12;;;:17;7372:28;;;7395:5;;;7372:28;7416:14;;;;;;;;;;;:19;;:33;7436:4;:12;;;7416:33;;;;;;;;;;;;;;;;;;;;;;;7415:34;7411:45;;;7451:5;;;7411:45;4771:1;7321:143;:::o;3331:31::-;;;;:::o;4054:117::-;4112:7;2994:2;4149;:14;4140:6;:23;4133:30;;4054:117;;;;:::o;338:150::-;399:7;444:9;431:1;426;:6;;419:14;;;;;;460:1;456;:5;444:17;;479:1;472:8;;338:150;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "1436800",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"": "44415",
"allocateToken(address,uint256)": "43754",
"allowance(address,address)": "43754",
"approve(address,uint256)": "43754",
"balanceOf(address)": "43754",
"changeOwner(address)": "43754",
"currentSupply()": "43754",
"decimals()": "43754",
"decreaseSupply(uint256)": "43754",
"ethFundDeposit()": "43754",
"fundingStartBlock()": "43754",
"fundingStopBlock()": "43754",
"increaseSupply(uint256)": "43754",
"isFunding()": "43754",
"migrate()": "infinite",
"name()": "infinite",
"newContractAddr()": "43754",
"setMigrateContract(address)": "43754",
"setTokenExchangeRate(uint256)": "43754",
"startFunding(uint256,uint256)": "61525",
"stopFunding()": "43754",
"symbol()": "infinite",
"tokenExchangeRate()": "43754",
"tokenMigrated()": "43754",
"tokenRaised()": "43754",
"totalSupply()": "43754",
"transfer(address,uint256)": "43754",
"transferETH()": "infinite",
"transferFrom(address,address,uint256)": "64077",
"version()": "infinite"
},
"internal": {
"formatDecimals(uint256)": "100"
}
},
"methodIdentifiers": {
"allocateToken(address,uint256)": "0a9ffdb7",
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"changeOwner(address)": "a6f9dae1",
"currentSupply()": "771282f6",
"decimals()": "313ce567",
"decreaseSupply(uint256)": "98e52f9a",
"ethFundDeposit()": "a81c3bdf",
"fundingStartBlock()": "d648a647",
"fundingStopBlock()": "ff29507d",
"increaseSupply(uint256)": "b921e163",
"isFunding()": "13b53153",
"migrate()": "8fd3ab80",
"name()": "06fdde03",
"newContractAddr()": "32513ce5",
"setMigrateContract(address)": "4a36df25",
"setTokenExchangeRate(uint256)": "cb7b8673",
"startFunding(uint256,uint256)": "775c46cd",
"stopFunding()": "4477c5da",
"symbol()": "95d89b41",
"tokenExchangeRate()": "4172d080",
"tokenMigrated()": "6fe3a567",
"tokenRaised()": "26a21575",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferETH()": "e28d717b",
"transferFrom(address,address,uint256)": "23b872dd",
"version()": "54fd4d50"
}
},
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": false,
"inputs": [
{
"name": "_addr",
"type": "address"
},
{
"name": "_eth",
"type": "uint256"
}
],
"name": "allocateToken",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "isFunding",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "tokenRaised",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [],
"name": "newContractAddr",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [],
"name": "tokenExchangeRate",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [],
"name": "stopFunding",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": false,
"inputs": [
{
"name": "_newContractAddr",
"type": "address"
}
],
"name": "setMigrateContract",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "version",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [],
"name": "tokenMigrated",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [],
"name": "currentSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_fundingStartBlock",
"type": "uint256"
},
{
"name": "_fundingStopBlock",
"type": "uint256"
}
],
"name": "startFunding",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": false,
"inputs": [],
"name": "migrate",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_value",
"type": "uint256"
}
],
"name": "decreaseSupply",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": false,
"inputs": [
{
"name": "_newFundDeposit",
"type": "address"
}
],
"name": "changeOwner",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "ethFundDeposit",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": false,
"inputs": [
{
"name": "_value",
"type": "uint256"
}
],
"name": "increaseSupply",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": false,
"inputs": [
{
"name": "_tokenExchangeRate",
"type": "uint256"
}
],
"name": "setTokenExchangeRate",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "fundingStartBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [],
"name": "transferETH",
"outputs": [],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "fundingStopBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"inputs": [
{
"name": "_ethFundDeposit",
"type": "address"
},
{
"name": "_currentSupply",
"type": "uint256"
}
],
"payable": false,
"type": "constructor",
"stateMutability": "nonpayable"
},
{
"payable": true,
"type": "fallback",
"stateMutability": "payable"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "AllocateToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "IssueToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "IncreaseSupply",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "DecreaseSupply",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Migrate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
]
}
{
"compiler": {
"version": "0.4.12+commit.194ff033"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_addr",
"type": "address"
},
{
"name": "_eth",
"type": "uint256"
}
],
"name": "allocateToken",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isFunding",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "tokenRaised",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "newContractAddr",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "tokenExchangeRate",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "stopFunding",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newContractAddr",
"type": "address"
}
],
"name": "setMigrateContract",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "version",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "tokenMigrated",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "currentSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_fundingStartBlock",
"type": "uint256"
},
{
"name": "_fundingStopBlock",
"type": "uint256"
}
],
"name": "startFunding",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "migrate",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_value",
"type": "uint256"
}
],
"name": "decreaseSupply",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newFundDeposit",
"type": "address"
}
],
"name": "changeOwner",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ethFundDeposit",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_value",
"type": "uint256"
}
],
"name": "increaseSupply",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_tokenExchangeRate",
"type": "uint256"
}
],
"name": "setTokenExchangeRate",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "fundingStartBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "transferETH",
"outputs": [],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "fundingStopBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"inputs": [
{
"name": "_ethFundDeposit",
"type": "address"
},
{
"name": "_currentSupply",
"type": "uint256"
}
],
"payable": false,
"type": "constructor"
},
{
"payable": true,
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "AllocateToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "IssueToken",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "IncreaseSupply",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "DecreaseSupply",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Migrate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
],
"devdoc": {
"methods": {
"decreaseSupply(uint256)": {
"details": "被盗token处理\r"
},
"increaseSupply(uint256)": {
"details": "超发token处理\r"
}
}
},
"userdoc": {
"methods": {
"allocateToken(address,uint256)": {
"notice": "将BILIBILI token分配到预处理地址。\r"
},
"changeOwner(address)": {
"notice": "设置新的所有者地址\r"
},
"migrate()": {
"notice": "转移token到新的合约\r"
},
"setMigrateContract(address)": {
"notice": "开发了一个新的合同来接收token(或者更新token)\r"
},
"setTokenExchangeRate(uint256)": {
"notice": "设置token汇率\r"
},
"startFunding(uint256,uint256)": {
"notice": "启动区块检测 异常的处理\r"
},
"stopFunding()": {
"notice": "关闭区块异常处理\r"
},
"transferETH()": {
"notice": "转账ETH 到BILIBILI团队\r"
}
}
}
},
"settings": {
"compilationTarget": {
"contract_1.sol": "BliBliToken"
},
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contract_1.sol": {
"keccak256": "0x368250a1a3e0d781519bbe63ccef021ca0c4965b8775e6bb3b8eb5e858acbcfe",
"urls": [
"bzzr://2d171fa9201b8b18776d7399f316758c7b11212673e0dc1dd3282bc302a036c2"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"migrate(address,uint256)": "ad68ebf7"
}
},
"abi": [
{
"constant": false,
"inputs": [
{
"name": "addr",
"type": "address"
},
{
"name": "nas",
"type": "uint256"
}
],
"name": "migrate",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
}
]
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60606040523415600e57600080fd5b5b603680601c6000396000f30060606040525b600080fd00a165627a7a723058203fa10285f2eaa3d9d0c8905d033d6ff312fab28748396b194bd9dabb2ceec5d80029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE CALLVALUE ISZERO PUSH1 0xE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST PUSH1 0x36 DUP1 PUSH1 0x1C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE JUMPDEST PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x3f LOG1 MUL DUP6 CALLCODE 0xea LOG3 0xd9 0xd0 0xc8 SWAP1 0x5d SUB RETURNDATASIZE PUSH16 0xF312FAB28748396B194BD9DABB2CEEC5 0xd8 STOP 0x29 ",
"sourceMap": "139:524:0:-;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "60606040525b600080fd00a165627a7a723058203fa10285f2eaa3d9d0c8905d033d6ff312fab28748396b194bd9dabb2ceec5d80029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE JUMPDEST PUSH1 0x0 DUP1 REVERT STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0x3f LOG1 MUL DUP6 CALLCODE 0xea LOG3 0xd9 0xd0 0xc8 SWAP1 0x5d SUB RETURNDATASIZE PUSH16 0xF312FAB28748396B194BD9DABB2CEEC5 0xd8 STOP 0x29 ",
"sourceMap": "139:524:0:-;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "10800",
"executionCost": "62",
"totalCost": "10862"
},
"internal": {
"safeAdd(uint256,uint256)": "infinite",
"safeMult(uint256,uint256)": "infinite",
"safeSubtract(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.4.12+commit.194ff033"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contract_1.sol": "SafeMath"
},
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contract_1.sol": {
"keccak256": "0x368250a1a3e0d781519bbe63ccef021ca0c4965b8775e6bb3b8eb5e858acbcfe",
"urls": [
"bzzr://2d171fa9201b8b18776d7399f316758c7b11212673e0dc1dd3282bc302a036c2"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "6060604052341561000f57600080fd5b5b6108708061001f6000396000f30060606040523615610076576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007b57806318160ddd146100d557806323b872dd146100fe57806370a0823114610177578063a9059cbb146101c4578063dd62ed3e1461021e575b600080fd5b341561008657600080fd5b6100bb600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061028a565b604051808215151515815260200191505060405180910390f35b34156100e057600080fd5b6100e861037d565b6040518082815260200191505060405180910390f35b341561010957600080fd5b61015d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610383565b604051808215151515815260200191505060405180910390f35b341561018257600080fd5b6101ae600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610604565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b610204600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061064e565b604051808215151515815260200191505060405180910390f35b341561022957600080fd5b610274600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107bc565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60005481565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610450575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561045c5750600082115b156105f35781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105fd565b600090506105fd565b5b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561069f5750600082115b156107ac5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506107b6565b600090506107b6565b5b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b929150505600a165627a7a72305820defbf0f10e81f5d0744b1ce68342e29d5746d8f54ddbfc89ad2a37b8140f33820029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE CALLVALUE ISZERO PUSH2 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST PUSH2 0x870 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x21E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE8 PUSH2 0x37D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15D PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x204 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x64E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x7BC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x450 JUMPI POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x45C JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x5F3 JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0x5FD JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x69F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x7AC JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0x7B6 JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0x7B6 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xde CREATE2 CREATE CALL 0xe DUP2 0xf5 0xd0 PUSH21 0x4B1CE68342E29D5746D8F54DDBFC89AD2A37B8140F CALLER DUP3 STOP 0x29 ",
"sourceMap": "1340:1446:0:-;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "60606040523615610076576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063095ea7b31461007b57806318160ddd146100d557806323b872dd146100fe57806370a0823114610177578063a9059cbb146101c4578063dd62ed3e1461021e575b600080fd5b341561008657600080fd5b6100bb600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061028a565b604051808215151515815260200191505060405180910390f35b34156100e057600080fd5b6100e861037d565b6040518082815260200191505060405180910390f35b341561010957600080fd5b61015d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610383565b604051808215151515815260200191505060405180910390f35b341561018257600080fd5b6101ae600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610604565b6040518082815260200191505060405180910390f35b34156101cf57600080fd5b610204600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061064e565b604051808215151515815260200191505060405180910390f35b341561022957600080fd5b610274600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506107bc565b6040518082815260200191505060405180910390f35b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190505b92915050565b60005481565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015610450575081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561045c5750600082115b156105f35781600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506105fd565b600090506105fd565b5b9392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015801561069f5750600082115b156107ac5781600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190506107b6565b600090506107b6565b5b92915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b929150505600a165627a7a72305820defbf0f10e81f5d0744b1ce68342e29d5746d8f54ddbfc89ad2a37b8140f33820029",
"opcodes": "PUSH1 0x60 PUSH1 0x40 MSTORE CALLDATASIZE ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x7B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xFE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1C4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x21E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x28A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE8 PUSH2 0x37D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15D PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x383 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1AE PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x604 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x204 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x64E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x274 PUSH1 0x4 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP2 SWAP1 POP POP PUSH2 0x7BC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x450 JUMPI POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x45C JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x5F3 JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0x5FD JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0x5FD JUMP JUMPDEST JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO DUP1 ISZERO PUSH2 0x69F JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST ISZERO PUSH2 0x7AC JUMPI DUP2 PUSH1 0x1 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP PUSH2 0x7B6 JUMP JUMPDEST PUSH1 0x0 SWAP1 POP PUSH2 0x7B6 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xde CREATE2 CREATE CALL 0xe DUP2 0xf5 0xd0 PUSH21 0x4B1CE68342E29D5746D8F54DDBFC89AD2A37B8140F CALLER DUP3 STOP 0x29 ",
"sourceMap": "1340:1446:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2320:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;690:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1743:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2199:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1382:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2531:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2320:202;2380:12;2437:6;2405:7;:19;2413:10;2405:19;;;;;;;;;;;;;;;:29;2425:8;2405:29;;;;;;;;;;;;;;;:38;;;;2475:8;2454:38;;2463:10;2454:38;;;2485:6;2454:38;;;;;;;;;;;;;;;;;;2510:4;2503:11;;2320:202;;;;;:::o;690:26::-;;;;:::o;1743:447::-;1818:12;1866:6;1847:8;:15;1856:5;1847:15;;;;;;;;;;;;;;;;:25;;:65;;;;;1906:6;1876:7;:14;1884:5;1876:14;;;;;;;;;;;;;;;:26;1891:10;1876:26;;;;;;;;;;;;;;;;:36;;1847:65;:79;;;;;1925:1;1916:6;:10;1847:79;1843:340;;;1960:6;1943:8;:13;1952:3;1943:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;2000:6;1981:8;:15;1990:5;1981:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;2051:6;2021:7;:14;2029:5;2021:14;;;;;;;;;;;;;;;:26;2036:10;2021:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;2088:3;2072:28;;2081:5;2072:28;;;2093:6;2072:28;;;;;;;;;;;;;;;;;;2122:4;2115:11;;;;1843:340;2166:5;2159:12;;;;1843:340;1743:447;;;;;;:::o;2199:112::-;2252:15;2287:8;:16;2296:6;2287:16;;;;;;;;;;;;;;;;2280:23;;2199:112;;;;:::o;1382:352::-;1438:12;1491:6;1467:8;:20;1476:10;1467:20;;;;;;;;;;;;;;;;:30;;:44;;;;;1510:1;1501:6;:10;1467:44;1463:264;;;1552:6;1528:8;:20;1537:10;1528:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;1590:6;1573:8;:13;1582:3;1573:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;1632:3;1611:33;;1620:10;1611:33;;;1637:6;1611:33;;;;;;;;;;;;;;;;;;1666:4;1659:11;;;;1463:264;1710:5;1703:12;;;;1463:264;1382:352;;;;;:::o;2531:141::-;2602:17;2639:7;:15;2647:6;2639:15;;;;;;;;;;;;;;;:25;2655:8;2639:25;;;;;;;;;;;;;;;;2632:32;;2531:141;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "432000",
"executionCost": "464",
"totalCost": "432464"
},
"external": {
"allowance(address,address)": "759",
"approve(address,uint256)": "22296",
"balanceOf(address)": "593",
"totalSupply()": "405",
"transfer(address,uint256)": "43195",
"transferFrom(address,address,uint256)": "64011"
}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
]
}
{
"compiler": {
"version": "0.4.12+commit.194ff033"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contract_1.sol": "StandardToken"
},
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contract_1.sol": {
"keccak256": "0x368250a1a3e0d781519bbe63ccef021ca0c4965b8775e6bb3b8eb5e858acbcfe",
"urls": [
"bzzr://2d171fa9201b8b18776d7399f316758c7b11212673e0dc1dd3282bc302a036c2"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"abi": [
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"type": "function",
"stateMutability": "nonpayable"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"type": "function",
"stateMutability": "view"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_owner",
"type": "address"
},
{
"indexed": true,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "_value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
}
]
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Storage
* @dev Store & retrieve value in a variable
*/
contract Storage {
uint256 number;
/**
* @dev Store value in variable
* @param num value to store
*/
function store(uint256 num) public {
number = num;
}
/**
* @dev Return value
* @return value of 'number'
*/
function retrieve() public view returns (uint256){
return number;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Owner
* @dev Set & change owner
*/
contract Owner {
address private owner;
// event for EVM logging
event OwnerSet(address indexed oldOwner, address indexed newOwner);
// modifier to check if caller is owner
modifier isOwner() {
// If the first argument of 'require' evaluates to 'false', execution terminates and all
// changes to the state and to Ether balances are reverted.
// This used to consume all gas in old EVM versions, but not anymore.
// It is often a good idea to use 'require' to check if functions are called correctly.
// As a second argument, you can also provide an explanation about what went wrong.
require(msg.sender == owner, "Caller is not owner");
_;
}
/**
* @dev Set contract deployer as owner
*/
constructor() {
owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor
emit OwnerSet(address(0), owner);
}
/**
* @dev Change owner
* @param newOwner address of new owner
*/
function changeOwner(address newOwner) public isOwner {
emit OwnerSet(owner, newOwner);
owner = newOwner;
}
/**
* @dev Return owner address
* @return address of owner
*/
function getOwner() external view returns (address) {
return owner;
}
}
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Ballot
* @dev Implements voting process along with vote delegation
*/
contract Ballot {
struct Voter {
uint weight; // weight is accumulated by delegation
bool voted; // if true, that person already voted
address delegate; // person delegated to
uint vote; // index of the voted proposal
}
struct Proposal {
// If you can limit the length to a certain number of bytes,
// always use one of bytes1 to bytes32 because they are much cheaper
bytes32 name; // short name (up to 32 bytes)
uint voteCount; // number of accumulated votes
}
address public chairperson;
mapping(address => Voter) public voters;
Proposal[] public proposals;
/**
* @dev Create a new ballot to choose one of 'proposalNames'.
* @param proposalNames names of proposals
*/
constructor(bytes32[] memory proposalNames) {
chairperson = msg.sender;
voters[chairperson].weight = 1;
for (uint i = 0; i < proposalNames.length; i++) {
// 'Proposal({...})' creates a temporary
// Proposal object and 'proposals.push(...)'
// appends it to the end of 'proposals'.
proposals.push(Proposal({
name: proposalNames[i],
voteCount: 0
}));
}
}
/**
* @dev Give 'voter' the right to vote on this ballot. May only be called by 'chairperson'.
* @param voter address of voter
*/
function giveRightToVote(address voter) public {
require(
msg.sender == chairperson,
"Only chairperson can give right to vote."
);
require(
!voters[voter].voted,
"The voter already voted."
);
require(voters[voter].weight == 0);
voters[voter].weight = 1;
}
/**
* @dev Delegate your vote to the voter 'to'.
* @param to address to which vote is delegated
*/
function delegate(address to) public {
Voter storage sender = voters[msg.sender];
require(!sender.voted, "You already voted.");
require(to != msg.sender, "Self-delegation is disallowed.");
while (voters[to].delegate != address(0)) {
to = voters[to].delegate;
// We found a loop in the delegation, not allowed.
require(to != msg.sender, "Found loop in delegation.");
}
sender.voted = true;
sender.delegate = to;
Voter storage delegate_ = voters[to];
if (delegate_.voted) {
// If the delegate already voted,
// directly add to the number of votes
proposals[delegate_.vote].voteCount += sender.weight;
} else {
// If the delegate did not vote yet,
// add to her weight.
delegate_.weight += sender.weight;
}
}
/**
* @dev Give your vote (including votes delegated to you) to proposal 'proposals[proposal].name'.
* @param proposal index of proposal in the proposals array
*/
function vote(uint proposal) public {
Voter storage sender = voters[msg.sender];
require(sender.weight != 0, "Has no right to vote");
require(!sender.voted, "Already voted.");
sender.voted = true;
sender.vote = proposal;
// If 'proposal' is out of the range of the array,
// this will throw automatically and revert all
// changes.
proposals[proposal].voteCount += sender.weight;
}
/**
* @dev Computes the winning proposal taking all previous votes into account.
* @return winningProposal_ index of winning proposal in the proposals array
*/
function winningProposal() public view
returns (uint winningProposal_)
{
uint winningVoteCount = 0;
for (uint p = 0; p < proposals.length; p++) {
if (proposals[p].voteCount > winningVoteCount) {
winningVoteCount = proposals[p].voteCount;
winningProposal_ = p;
}
}
}
/**
* @dev Calls winningProposal() function to get the index of the winner contained in the proposals array and then
* @return winnerName_ the name of the winner
*/
function winnerName() public view
returns (bytes32 winnerName_)
{
winnerName_ = proposals[winningProposal()].name;
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50604051620035d7380380620035d7833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919050505067fffffffffffffffe8167ffffffffffffffff161115620001e257600080fd5b8260009080519060200190620001fa92919062000905565b5081600190805190602001906200021392919062000905565b5060008167ffffffffffffffff1614156200022e57620004ee565b6200024560013360018401620004f760201b60201c565b8067400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600067800000000000000081106200038557fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff1660028190555080600360006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd9600180850185604051808481526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a35b505050620009b4565b600067400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005c557828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8167ffffffffffffffff168160000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200062557818160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b620006388483866200063e60201b60201c565b50505050565b6200066360018367ffffffffffffffff166200084760201b620016bf1790919060201c565b91508167ffffffffffffffff168367ffffffffffffffff161415620006da578060048467ffffffffffffffff16680100000000000000008110620006a357fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062000842565b8060048367ffffffffffffffff16680100000000000000008110620006fb57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000601090505b6001156200084057808367ffffffffffffffff16101562000755575062000842565b6000620007948262000780848767ffffffffffffffff166200087c60201b62002b961790919060201c565b620008a460201b620023051790919060201c565b9050620007b1601083620008a460201b620023051790919060201c565b91506000620007cf8383620008e260201b6200233f1790919060201c565b1415620007dd575062000733565b8467ffffffffffffffff168111156200083957826004826801000000000000000081106200080757fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5062000733565b505b505050565b60008267ffffffffffffffff168267ffffffffffffffff1611156200086b57600080fd5b600082840390508091505092915050565b60008082116200088b57600080fd5b60008284816200089757fe5b0490508091505092915050565b600080831415620008b95760009050620008dc565b6000828402905082848281620008cb57fe5b0414620008d757600080fd5b809150505b92915050565b600080821415620008f257600080fd5b818381620008fc57fe5b06905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200094857805160ff191683800117855562000979565b8280016001018555821562000979579182015b82811115620009785782518255916020019190600101906200095b565b5b5090506200098891906200098c565b5090565b620009b191905b80821115620009ad57600081600090555060010162000993565b5090565b90565b612c1380620009c46000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461032457806395d89b411461037c578063a9059cbb146103ff578063cac2f67214610465578063cc364f48146104e9578063dd62ed3e1461058d576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063287112fb14610246578063313ce56714610300575b600080fd5b6100c1610605565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106a3565b604051808215151515815260200191505060405180910390f35b6101aa61079c565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107a2565b604051808215151515815260200191505060405180910390f35b6102886004803603602081101561025c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108d7565b60405180806020018281038252838181518152602001915080516000925b818410156102ef5782846020026020010151600260200280838360005b838110156102de5780820151818401526020810190506102c3565b5050505090500192600101926102a6565b925050509250505060405180910390f35b610308610b56565b604051808260ff1660ff16815260200191505060405180910390f35b6103666004803603602081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5b565b6040518082815260200191505060405180910390f35b610384610bcc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c45780820151818401526020810190506103a9565b50505050905090810190601f1680156103f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61044b6004803603604081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6a565b604051808215151515815260200191505060405180910390f35b6104cf6004803603606081101561047b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c81565b604051808215151515815260200191505060405180910390f35b610515600480360360208110156104ff57600080fd5b8101908080359060200190929190505050611088565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390f35b6105ef600480360360408110156105a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611120565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561069b5780601f106106705761010080835404028352916020019161069b565b820191906000526020600020905b81548152906001019060200180831161067e57829003601f168201915b505050505081565b60008167400000000000000660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600061083a8267400000000000000660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ae90919063ffffffff16565b67400000000000000660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108cc8484846111ce565b600190509392505050565b6060600067400000000000000560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050606067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166040519080825280602002602001820160405280156109c657816020015b6109b3612bbc565b8152602001906001900390816109ab5790505b50905060005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16811015610b4b57604051806040016040528084600101836780000000000000008110610a5c57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152602001674000000000000004600086600101856780000000000000008110610ab657fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250828281518110610b3357fe5b602002602001018190525080806001019150506109cc565b508092505050919050565b600081565b600067400000000000000560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b505050505081565b6000610c773384846111ce565b6001905092915050565b6000610c968367ffffffffffffffff16611682565b610cc6610cb760018467ffffffffffffffff166116bf90919063ffffffff16565b67ffffffffffffffff16611682565b8167ffffffffffffffff168367ffffffffffffffff1610610ce657600080fd5b6000610d18610d0960018567ffffffffffffffff166116bf90919063ffffffff16565b67ffffffffffffffff166116f3565b90508367ffffffffffffffff168167ffffffffffffffff161115610d3b57600080fd5b6000610d5a858567ffffffffffffffff166116bf90919063ffffffff16565b905067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de557600080fd5b610e5f8167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166116bf90919063ffffffff16565b67400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610f488167400000000000000560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661181890919063ffffffff16565b67400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a38573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561106c575060008167ffffffffffffffff16115b1561107f5761107e823388888861184b565b5b50509392505050565b600080600061109684611682565b61109f846116f3565b9150600067400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838260000160149054906101000a900467ffffffffffffffff16935093509350509193909250565b600067400000000000000660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211156111bd57600080fd5b600082840390508091505092915050565b67fffffffffffffffe8111156111e357600080fd5b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905060008290506112af8167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166116bf90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506113988167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661181890919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806114a65750600083145b156114b257505061167d565b5b600067400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115611678576000826000678000000000000000811061153957fe5b600491828204019190066008029054906101000a900467ffffffffffffffff169050600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16905060006115c4838367ffffffffffffffff166116bf90919063ffffffff16565b90508067ffffffffffffffff168467ffffffffffffffff1610156116265761161b611602858367ffffffffffffffff166116bf90919063ffffffff16565b8367ffffffffffffffff166116bf90919063ffffffff16565b915060009350611646565b611643818567ffffffffffffffff166116bf90919063ffffffff16565b93505b611653838989868661184b565b60008467ffffffffffffffff16141561167057505050505061167d565b5050506114b3565b600080fd5b505050565b600081141580156116b35750600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168111155b6116bc57600080fd5b50565b60008267ffffffffffffffff168267ffffffffffffffff1611156116e257600080fd5b600082840390508091505092915050565b600080600190505b60011561181157600060048468010000000000000000811061171957fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff16146117855760048368010000000000000000811061175d57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff16915050611813565b60006117ad61179e60108461230590919063ffffffff16565b8561233f90919063ffffffff16565b14156117f7576117c760108261230590919063ffffffff16565b9050600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156117f657600080fd5b5b61180a818461236090919063ffffffff16565b92506116fb565b505b919050565b60008082840190508367ffffffffffffffff168167ffffffffffffffff16101561184157600080fd5b8091505092915050565b600067400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160000160149054906101000a900467ffffffffffffffff169050600060046118bc60018767ffffffffffffffff166116bf90919063ffffffff16565b67ffffffffffffffff166801000000000000000081106118d857fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1690508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd98787898903604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a38467ffffffffffffffff168867ffffffffffffffff1614156120a7578367ffffffffffffffff168267ffffffffffffffff161415611f59576119d38786600061237f565b60008673ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905060008773ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905081158015611ae7575080155b15611b4557611af88860008961237f565b878560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506122fe565b611b518a87600061287f565b80611c365767400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508567400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611c2c83878561287f565b50505050506122fe565b81611d1357611c4688878961237f565b611c968a8967400000000000000460008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16612a59565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505050505050506122fe565b611d1f8887600061237f565b67400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505067400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611e3b8388600061287f565b611e8c8667400000000000000460008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16600061287f565b611edc8367400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff168561287f565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505050505050506122fe565b611f658583600061287f565b611f70848884612a59565b611f7b87868661237f565b67400000000000000460008967ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120875761207f8186600061287f565b809450612094565b6120938660008761237f565b5b61209f858786612a59565b5050506122fe565b6120b38883600061287f565b848360000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506120e988868a61287f565b8367ffffffffffffffff168267ffffffffffffffff1614156122cc578573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122ac5761219586858761237f565b6121e68467400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16600061287f565b600067400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16905067400000000000000460008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff02191690555050809450506122b9565b6122b88660008761237f565b5b6122c4858786612a59565b5050506122fe565b6122d88660008761237f565b6122e3858786612a59565b6122ef8760008661237f565b6122fa848884612a59565b5050505b5050505050565b6000808314156123185760009050612339565b600082840290508284828161232957fe5b041461233457600080fd5b809150505b92915050565b60008082141561234e57600080fd5b81838161235757fe5b06905092915050565b60008082840190508381101561237557600080fd5b8091505092915050565b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905060008367ffffffffffffffff16141561257b57818167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16678000000000000000811061245a57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612506600167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1661181890919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505061287a565b60005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168111612874578367ffffffffffffffff168282678000000000000000811061260a57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1614156128675760008367ffffffffffffffff16111561269757828282678000000000000000811061266157fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612860565b612712600167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166116bf90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667800000000000000081106127fb57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff168282678000000000000000811061282e57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b505061287a565b808060010191505061257e565b50600080fd5b505050565b61289d60018367ffffffffffffffff166116bf90919063ffffffff16565b91508167ffffffffffffffff168367ffffffffffffffff161415612911578060048467ffffffffffffffff166801000000000000000081106128db57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612a54565b8060048367ffffffffffffffff1668010000000000000000811061293157fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000601090505b600115612a5257808367ffffffffffffffff1610156129885750612a54565b60006129b9826129ab848767ffffffffffffffff16612b9690919063ffffffff16565b61230590919063ffffffff16565b90506129cf60108361230590919063ffffffff16565b915060006129e6838361233f90919063ffffffff16565b14156129f25750612969565b8467ffffffffffffffff16811115612a4c5782600482680100000000000000008110612a1a57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b50612969565b505b505050565b600067400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2657828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8167ffffffffffffffff168160000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1614612b8557818160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b612b9084838661287f565b50505050565b6000808211612ba457600080fd5b6000828481612baf57fe5b0490508091505092915050565b604051806040016040528060029060208202803883398082019150509050509056fea265627a7a7231582027daf11b7ea5e28a7ce5e8f674eed9ce7eaaa44a3f1f377f6a127a5c170ba62a64736f6c63430005100032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x35D7 CODESIZE SUB DUP1 PUSH3 0x35D7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x1 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP3 POP POP POP SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC3 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0xA6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x1 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP3 POP POP POP SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x180 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x163 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x1AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH8 0xFFFFFFFFFFFFFFFE DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x1FA SWAP3 SWAP2 SWAP1 PUSH3 0x905 JUMP JUMPDEST POP DUP2 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x213 SWAP3 SWAP2 SWAP1 PUSH3 0x905 JUMP JUMPDEST POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x22E JUMPI PUSH3 0x4EE JUMP JUMPDEST PUSH3 0x245 PUSH1 0x1 CALLER PUSH1 0x1 DUP5 ADD PUSH3 0x4F7 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH8 0x8000000000000000 DUP2 LT PUSH3 0x385 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x2 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 PUSH1 0x1 DUP1 DUP6 ADD DUP6 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP PUSH3 0x9B4 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x5C5 JUMPI DUP3 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH3 0x625 JUMPI DUP2 DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH3 0x638 DUP5 DUP4 DUP7 PUSH3 0x63E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0x663 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH3 0x847 PUSH1 0x20 SHL PUSH3 0x16BF OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST SWAP2 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x6DA JUMPI DUP1 PUSH1 0x4 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH3 0x6A3 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x842 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH3 0x6FB JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x10 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH3 0x840 JUMPI DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH3 0x755 JUMPI POP PUSH3 0x842 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x794 DUP3 PUSH3 0x780 DUP5 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH3 0x87C PUSH1 0x20 SHL PUSH3 0x2B96 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x8A4 PUSH1 0x20 SHL PUSH3 0x2305 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH3 0x7B1 PUSH1 0x10 DUP4 PUSH3 0x8A4 PUSH1 0x20 SHL PUSH3 0x2305 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH3 0x7CF DUP4 DUP4 PUSH3 0x8E2 PUSH1 0x20 SHL PUSH3 0x233F OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST EQ ISZERO PUSH3 0x7DD JUMPI POP PUSH3 0x733 JUMP JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH3 0x839 JUMPI DUP3 PUSH1 0x4 DUP3 PUSH9 0x10000000000000000 DUP2 LT PUSH3 0x807 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP PUSH3 0x733 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x86B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH3 0x88B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH3 0x897 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH3 0x8B9 JUMPI PUSH1 0x0 SWAP1 POP PUSH3 0x8DC JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH3 0x8CB JUMPI INVALID JUMPDEST DIV EQ PUSH3 0x8D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ ISZERO PUSH3 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH3 0x8FC JUMPI INVALID JUMPDEST MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x948 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x979 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x979 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x978 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x95B JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x988 SWAP2 SWAP1 PUSH3 0x98C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x9B1 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x9AD JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x993 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x2C13 DUP1 PUSH3 0x9C4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x37C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0xCAC2F672 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0xCC364F48 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x58D JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x287112FB EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x300 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x101 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AA PUSH2 0x79C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD PUSH1 0x0 SWAP3 JUMPDEST DUP2 DUP5 LT ISZERO PUSH2 0x2EF JUMPI DUP3 DUP5 PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2C3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 PUSH1 0x1 ADD SWAP3 PUSH2 0x2A6 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x308 PUSH2 0xB56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x366 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x384 PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3C4 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3A9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC6A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x515 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1120 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x69B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x670 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x69B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x67E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0x4000000000000006 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83A DUP3 PUSH8 0x4000000000000006 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x11AE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000006 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x8CC DUP5 DUP5 DUP5 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x60 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9C6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x9B3 PUSH2 0x2BBC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x9AB JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 LT ISZERO PUSH2 0xB4B JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x1 ADD DUP4 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xA5C JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH1 0x1 ADD DUP6 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xAB6 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB33 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x9CC JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xC62 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC37 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC62 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC45 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC77 CALLER DUP5 DUP5 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC96 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1682 JUMP JUMPDEST PUSH2 0xCC6 PUSH2 0xCB7 PUSH1 0x1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1682 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT PUSH2 0xCE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD18 PUSH2 0xD09 PUSH1 0x1 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16F3 JUMP JUMPDEST SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD5A DUP6 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5F DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0xF48 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1818 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x106C JUMPI POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x107F JUMPI PUSH2 0x107E DUP3 CALLER DUP9 DUP9 DUP9 PUSH2 0x184B JUMP JUMPDEST JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1096 DUP5 PUSH2 0x1682 JUMP JUMPDEST PUSH2 0x109F DUP5 PUSH2 0x16F3 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000006 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE DUP2 GT ISZERO PUSH2 0x11E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH2 0x12AF DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1398 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1818 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x14A6 JUMPI POP PUSH1 0x0 DUP4 EQ JUMPDEST ISZERO PUSH2 0x14B2 JUMPI POP POP PUSH2 0x167D JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1678 JUMPI PUSH1 0x0 DUP3 PUSH1 0x0 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x1539 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x15C4 DUP4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1626 JUMPI PUSH2 0x161B PUSH2 0x1602 DUP6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP4 POP PUSH2 0x1646 JUMP JUMPDEST PUSH2 0x1643 DUP2 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP JUMPDEST PUSH2 0x1653 DUP4 DUP10 DUP10 DUP7 DUP7 PUSH2 0x184B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1670 JUMPI POP POP POP POP POP PUSH2 0x167D JUMP JUMPDEST POP POP POP PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO DUP1 ISZERO PUSH2 0x16B3 JUMPI POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO JUMPDEST PUSH2 0x16BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1811 JUMPI PUSH1 0x0 PUSH1 0x4 DUP5 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x1719 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1785 JUMPI PUSH1 0x4 DUP4 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x175D JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP POP PUSH2 0x1813 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17AD PUSH2 0x179E PUSH1 0x10 DUP5 PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH2 0x233F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x17F7 JUMPI PUSH2 0x17C7 PUSH1 0x10 DUP3 PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 GT ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST PUSH2 0x180A DUP2 DUP5 PUSH2 0x2360 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP PUSH2 0x16FB JUMP JUMPDEST POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH2 0x18BC PUSH1 0x1 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x18D8 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP8 DUP8 DUP10 DUP10 SUB PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x20A7 JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F59 JUMPI PUSH2 0x19D3 DUP8 DUP7 PUSH1 0x0 PUSH2 0x237F JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1AE7 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1B45 JUMPI PUSH2 0x1AF8 DUP9 PUSH1 0x0 DUP10 PUSH2 0x237F JUMP JUMPDEST DUP8 DUP6 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x1B51 DUP11 DUP8 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST DUP1 PUSH2 0x1C36 JUMPI PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1C2C DUP4 DUP8 DUP6 PUSH2 0x287F JUMP JUMPDEST POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST DUP2 PUSH2 0x1D13 JUMPI PUSH2 0x1C46 DUP9 DUP8 DUP10 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x1C96 DUP11 DUP10 PUSH8 0x4000000000000004 PUSH1 0x0 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2A59 JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x1D1F DUP9 DUP8 PUSH1 0x0 PUSH2 0x237F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1E3B DUP4 DUP9 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH2 0x1E8C DUP7 PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH2 0x1EDC DUP4 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x287F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x1F65 DUP6 DUP4 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH2 0x1F70 DUP5 DUP9 DUP5 PUSH2 0x2A59 JUMP JUMPDEST PUSH2 0x1F7B DUP8 DUP7 DUP7 PUSH2 0x237F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2087 JUMPI PUSH2 0x207F DUP2 DUP7 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST DUP1 SWAP5 POP PUSH2 0x2094 JUMP JUMPDEST PUSH2 0x2093 DUP7 PUSH1 0x0 DUP8 PUSH2 0x237F JUMP JUMPDEST JUMPDEST PUSH2 0x209F DUP6 DUP8 DUP7 PUSH2 0x2A59 JUMP JUMPDEST POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x20B3 DUP9 DUP4 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST DUP5 DUP4 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x20E9 DUP9 DUP7 DUP11 PUSH2 0x287F JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x22CC JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x22AC JUMPI PUSH2 0x2195 DUP7 DUP6 DUP8 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x21E6 DUP5 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP1 SWAP5 POP POP PUSH2 0x22B9 JUMP JUMPDEST PUSH2 0x22B8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x237F JUMP JUMPDEST JUMPDEST PUSH2 0x22C4 DUP6 DUP8 DUP7 PUSH2 0x2A59 JUMP JUMPDEST POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x22D8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x22E3 DUP6 DUP8 DUP7 PUSH2 0x2A59 JUMP JUMPDEST PUSH2 0x22EF DUP8 PUSH1 0x0 DUP7 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x22FA DUP5 DUP9 DUP5 PUSH2 0x2A59 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x2318 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x2339 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x2329 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ ISZERO PUSH2 0x234E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x2357 JUMPI INVALID JUMPDEST MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x2375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x257B JUMPI DUP2 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x245A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2506 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1818 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x287A JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT PUSH2 0x2874 JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x260A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2867 JUMPI PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2697 JUMPI DUP3 DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2661 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2860 JUMP JUMPDEST PUSH2 0x2712 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x27FB JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x282E JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP PUSH2 0x287A JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x257E JUMP JUMPDEST POP PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x289D PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2911 JUMPI DUP1 PUSH1 0x4 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x28DB JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2A54 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2931 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x10 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x2A52 JUMPI DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x2988 JUMPI POP PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B9 DUP3 PUSH2 0x29AB DUP5 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2B96 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x29CF PUSH1 0x10 DUP4 PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x29E6 DUP4 DUP4 PUSH2 0x233F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x29F2 JUMPI POP PUSH2 0x2969 JUMP JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH2 0x2A4C JUMPI DUP3 PUSH1 0x4 DUP3 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2A1A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP PUSH2 0x2969 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B26 JUMPI DUP3 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B85 JUMPI DUP2 DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x2B90 DUP5 DUP4 DUP7 PUSH2 0x287F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x2BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x2BAF JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x27 0xDA CALL SHL PUSH31 0xA5E28A7CE5E8F674EED9CE7EAAA44A3F1F377F6A127A5C170BA62A64736F6C PUSH4 0x43000510 STOP ORIGIN ",
"sourceMap": "359:15249:1:-;;;1825:650;8:9:-1;5:2;;;30:1;27;20:12;5:2;1825:650:1;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1825:650:1;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;1825:650:1;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1825:650:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;1825:650:1;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1825:650:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;507:11;1928:12;:31;;;;1920:40;;;;;;1978:5;1971:4;:12;;;;;;;;;;;;:::i;:::-;;2003:7;1994:6;:16;;;;;;;;;;;;:::i;:::-;;2041:1;2025:12;:17;;;2021:30;;;2044:7;;2021:30;2061:40;2071:1;2074:10;2099:1;2086:12;:14;2061:9;;;:40;;:::i;:::-;2143:12;2112:8;:20;2121:10;2112:20;;;;;;;;;;;;;;;:28;;;:43;;;;;;;;;;;;;;;;;;2196:1;2166:8;:20;2175:10;2166:20;;;;;;;;;;;;;;;:27;;;:31;;;;;;;;;;;;;;;;;;2241:1;2208:8;:20;2217:10;2208:20;;;;;;;;;;;;;;;:27;;2236:1;2208:30;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2267:12;2253:26;;:11;:26;;;;2303:12;2290:10;;:25;;;;;;;;;;;;;;;;;;2354:10;2331:48;;565:1;2331:48;;;2366:12;2331:48;;;;;;;;;;;;;;;;;;;;2423:10;2395:72;;565:1;2395:72;;;2435:1;2451;2438:12;:14;2454:12;2395:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1825:650;;;;359:15249;;12623:281;12709:15;12727:8;:18;12736:8;12727:18;;;;;;;;;;;;;;;12709:36;;12771:6;12760:17;;:1;:7;;;;;;;;;;;;:17;;;12756:39;;12789:6;12779:1;:7;;;:16;;;;;;;;;;;;;;;;;;12756:39;12820:5;12810:15;;:1;:6;;;;;;;;;;;;:15;;;12806:35;;12836:5;12827:1;:6;;;:14;;;;;;;;;;;;;;;;;;12806:35;12852:44;12870:8;12880:5;12887:8;12852:17;;;:44;;:::i;:::-;12623:281;;;;:::o;14259:614::-;14358:12;14368:1;14358:5;:9;;;;;;;;:12;;;;:::i;:::-;14350:20;;14395:5;14385:15;;:6;:15;;;14381:92;;;14434:6;14417;14424;14417:14;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14455:7;;14381:92;14499:6;14483;14490:5;14483:13;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14516:17;702:2;14516:38;;14565:301;14572:4;14565:301;;;14605:9;14597:5;:17;;;14593:30;;;14616:7;;;14593:30;14637:9;14649:44;14683:9;14649:29;14668:9;14657:5;14649:14;;:18;;;;;;:29;;;;:::i;:::-;:33;;;;;;:44;;;;:::i;:::-;14637:56;;14722:33;702:2;14722:9;:13;;;;;;:33;;;;:::i;:::-;14710:45;;14794:1;14774:16;14780:9;14774:1;:5;;;;;;:16;;;;:::i;:::-;:21;14770:35;;;14797:8;;;14770:35;14828:6;14824:10;;:1;:10;14820:34;;;14848:6;14836;14843:1;14836:9;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;14820:34;14565:301;;;;14259:614;;;;;:::o;1356:170:2:-;1414:6;1447:2;1441:8;;:2;:8;;;;1433:17;;;;;;1479:8;1495:2;1490;:7;1479:18;;1517:1;1510:8;;;1356:170;;;;:::o;284:154::-;344:7;377:1;372:2;:6;364:15;;;;;;390:9;407:2;402;:7;;;;;;390:19;;429:1;422:8;;;284:154;;;;:::o;56:220::-;116:7;146:1;140:2;:7;136:48;;;171:1;164:8;;;;136:48;196:9;213:2;208;:7;196:19;;244:2;238;234:1;:6;;;;;;:12;226:21;;;;;;267:1;260:8;;;56:220;;;;;:::o;808:129::-;868:7;902:1;896:2;:7;;888:16;;;;;;927:2;922;:7;;;;;;915:14;;808:129;;;;:::o;359:15249:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c806370a082311161007157806370a082311461032457806395d89b411461037c578063a9059cbb146103ff578063cac2f67214610465578063cc364f48146104e9578063dd62ed3e1461058d576100b4565b806306fdde03146100b9578063095ea7b31461013c57806318160ddd146101a257806323b872dd146101c0578063287112fb14610246578063313ce56714610300575b600080fd5b6100c1610605565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101015780820151818401526020810190506100e6565b50505050905090810190601f16801561012e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101886004803603604081101561015257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506106a3565b604051808215151515815260200191505060405180910390f35b6101aa61079c565b6040518082815260200191505060405180910390f35b61022c600480360360608110156101d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107a2565b604051808215151515815260200191505060405180910390f35b6102886004803603602081101561025c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108d7565b60405180806020018281038252838181518152602001915080516000925b818410156102ef5782846020026020010151600260200280838360005b838110156102de5780820151818401526020810190506102c3565b5050505090500192600101926102a6565b925050509250505060405180910390f35b610308610b56565b604051808260ff1660ff16815260200191505060405180910390f35b6103666004803603602081101561033a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5b565b6040518082815260200191505060405180910390f35b610384610bcc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c45780820151818401526020810190506103a9565b50505050905090810190601f1680156103f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61044b6004803603604081101561041557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c6a565b604051808215151515815260200191505060405180910390f35b6104cf6004803603606081101561047b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c81565b604051808215151515815260200191505060405180910390f35b610515600480360360208110156104ff57600080fd5b8101908080359060200190929190505050611088565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390f35b6105ef600480360360408110156105a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611120565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561069b5780601f106106705761010080835404028352916020019161069b565b820191906000526020600020905b81548152906001019060200180831161067e57829003601f168201915b505050505081565b60008167400000000000000660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b600061083a8267400000000000000660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ae90919063ffffffff16565b67400000000000000660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506108cc8484846111ce565b600190509392505050565b6060600067400000000000000560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050606067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166040519080825280602002602001820160405280156109c657816020015b6109b3612bbc565b8152602001906001900390816109ab5790505b50905060005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16811015610b4b57604051806040016040528084600101836780000000000000008110610a5c57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152602001674000000000000004600086600101856780000000000000008110610ab657fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250828281518110610b3357fe5b602002602001018190525080806001019150506109cc565b508092505050919050565b600081565b600067400000000000000560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b505050505081565b6000610c773384846111ce565b6001905092915050565b6000610c968367ffffffffffffffff16611682565b610cc6610cb760018467ffffffffffffffff166116bf90919063ffffffff16565b67ffffffffffffffff16611682565b8167ffffffffffffffff168367ffffffffffffffff1610610ce657600080fd5b6000610d18610d0960018567ffffffffffffffff166116bf90919063ffffffff16565b67ffffffffffffffff166116f3565b90508367ffffffffffffffff168167ffffffffffffffff161115610d3b57600080fd5b6000610d5a858567ffffffffffffffff166116bf90919063ffffffff16565b905067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610de557600080fd5b610e5f8167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166116bf90919063ffffffff16565b67400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550610f488167400000000000000560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661181890919063ffffffff16565b67400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a38573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561106c575060008167ffffffffffffffff16115b1561107f5761107e823388888861184b565b5b50509392505050565b600080600061109684611682565b61109f846116f3565b9150600067400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838260000160149054906101000a900467ffffffffffffffff16935093509350509193909250565b600067400000000000000660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000828211156111bd57600080fd5b600082840390508091505092915050565b67fffffffffffffffe8111156111e357600080fd5b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905060008290506112af8167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff166116bf90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506113988167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661181890919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806114a65750600083145b156114b257505061167d565b5b600067400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115611678576000826000678000000000000000811061153957fe5b600491828204019190066008029054906101000a900467ffffffffffffffff169050600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16905060006115c4838367ffffffffffffffff166116bf90919063ffffffff16565b90508067ffffffffffffffff168467ffffffffffffffff1610156116265761161b611602858367ffffffffffffffff166116bf90919063ffffffff16565b8367ffffffffffffffff166116bf90919063ffffffff16565b915060009350611646565b611643818567ffffffffffffffff166116bf90919063ffffffff16565b93505b611653838989868661184b565b60008467ffffffffffffffff16141561167057505050505061167d565b5050506114b3565b600080fd5b505050565b600081141580156116b35750600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168111155b6116bc57600080fd5b50565b60008267ffffffffffffffff168267ffffffffffffffff1611156116e257600080fd5b600082840390508091505092915050565b600080600190505b60011561181157600060048468010000000000000000811061171957fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff16146117855760048368010000000000000000811061175d57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff16915050611813565b60006117ad61179e60108461230590919063ffffffff16565b8561233f90919063ffffffff16565b14156117f7576117c760108261230590919063ffffffff16565b9050600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156117f657600080fd5b5b61180a818461236090919063ffffffff16565b92506116fb565b505b919050565b60008082840190508367ffffffffffffffff168167ffffffffffffffff16101561184157600080fd5b8091505092915050565b600067400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160000160149054906101000a900467ffffffffffffffff169050600060046118bc60018767ffffffffffffffff166116bf90919063ffffffff16565b67ffffffffffffffff166801000000000000000081106118d857fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1690508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd98787898903604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a38467ffffffffffffffff168867ffffffffffffffff1614156120a7578367ffffffffffffffff168267ffffffffffffffff161415611f59576119d38786600061237f565b60008673ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905060008773ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905081158015611ae7575080155b15611b4557611af88860008961237f565b878560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050506122fe565b611b518a87600061287f565b80611c365767400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508567400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611c2c83878561287f565b50505050506122fe565b81611d1357611c4688878961237f565b611c968a8967400000000000000460008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16612a59565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505050505050506122fe565b611d1f8887600061237f565b67400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505067400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611e3b8388600061287f565b611e8c8667400000000000000460008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16600061287f565b611edc8367400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff168561287f565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505050505050506122fe565b611f658583600061287f565b611f70848884612a59565b611f7b87868661237f565b67400000000000000460008967ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156120875761207f8186600061287f565b809450612094565b6120938660008761237f565b5b61209f858786612a59565b5050506122fe565b6120b38883600061287f565b848360000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506120e988868a61287f565b8367ffffffffffffffff168267ffffffffffffffff1614156122cc578573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122ac5761219586858761237f565b6121e68467400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16600061287f565b600067400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16905067400000000000000460008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff02191690555050809450506122b9565b6122b88660008761237f565b5b6122c4858786612a59565b5050506122fe565b6122d88660008761237f565b6122e3858786612a59565b6122ef8760008661237f565b6122fa848884612a59565b5050505b5050505050565b6000808314156123185760009050612339565b600082840290508284828161232957fe5b041461233457600080fd5b809150505b92915050565b60008082141561234e57600080fd5b81838161235757fe5b06905092915050565b60008082840190508381101561237557600080fd5b8091505092915050565b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905060008367ffffffffffffffff16141561257b57818167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16678000000000000000811061245a57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612506600167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1661181890919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505061287a565b60005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168111612874578367ffffffffffffffff168282678000000000000000811061260a57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1614156128675760008367ffffffffffffffff16111561269757828282678000000000000000811061266157fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612860565b612712600167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166116bf90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667800000000000000081106127fb57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff168282678000000000000000811061282e57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b505061287a565b808060010191505061257e565b50600080fd5b505050565b61289d60018367ffffffffffffffff166116bf90919063ffffffff16565b91508167ffffffffffffffff168367ffffffffffffffff161415612911578060048467ffffffffffffffff166801000000000000000081106128db57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612a54565b8060048367ffffffffffffffff1668010000000000000000811061293157fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000601090505b600115612a5257808367ffffffffffffffff1610156129885750612a54565b60006129b9826129ab848767ffffffffffffffff16612b9690919063ffffffff16565b61230590919063ffffffff16565b90506129cf60108361230590919063ffffffff16565b915060006129e6838361233f90919063ffffffff16565b14156129f25750612969565b8467ffffffffffffffff16811115612a4c5782600482680100000000000000008110612a1a57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b50612969565b505b505050565b600067400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2657828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8167ffffffffffffffff168160000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1614612b8557818160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b612b9084838661287f565b50505050565b6000808211612ba457600080fd5b6000828481612baf57fe5b0490508091505092915050565b604051806040016040528060029060208202803883398082019150509050509056fea265627a7a7231582027daf11b7ea5e28a7ce5e8f674eed9ce7eaaa44a3f1f377f6a127a5c170ba62a64736f6c63430005100032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x37C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0xCAC2F672 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0xCC364F48 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x58D JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x287112FB EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x300 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0x605 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x101 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x12E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x188 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x6A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AA PUSH2 0x79C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x288 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD PUSH1 0x0 SWAP3 JUMPDEST DUP2 DUP5 LT ISZERO PUSH2 0x2EF JUMPI DUP3 DUP5 PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2DE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2C3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 PUSH1 0x1 ADD SWAP3 PUSH2 0x2A6 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x308 PUSH2 0xB56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x366 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x384 PUSH2 0xBCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3C4 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3A9 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3F1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x44B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC6A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x47B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC81 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x515 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5EF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1120 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x69B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x670 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x69B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x67E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0x4000000000000006 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x83A DUP3 PUSH8 0x4000000000000006 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x11AE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000006 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x8CC DUP5 DUP5 DUP5 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x60 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9C6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x9B3 PUSH2 0x2BBC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x9AB JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 LT ISZERO PUSH2 0xB4B JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x1 ADD DUP4 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xA5C JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH1 0x1 ADD DUP6 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xAB6 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB33 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x9CC JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0xC62 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC37 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC62 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC45 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC77 CALLER DUP5 DUP5 PUSH2 0x11CE JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC96 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1682 JUMP JUMPDEST PUSH2 0xCC6 PUSH2 0xCB7 PUSH1 0x1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1682 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT PUSH2 0xCE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD18 PUSH2 0xD09 PUSH1 0x1 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16F3 JUMP JUMPDEST SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xD3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD5A DUP6 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5F DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0xF48 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1818 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x106C JUMPI POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x107F JUMPI PUSH2 0x107E DUP3 CALLER DUP9 DUP9 DUP9 PUSH2 0x184B JUMP JUMPDEST JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1096 DUP5 PUSH2 0x1682 JUMP JUMPDEST PUSH2 0x109F DUP5 PUSH2 0x16F3 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000006 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x11BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE DUP2 GT ISZERO PUSH2 0x11E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH2 0x12AF DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1398 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1818 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x14A6 JUMPI POP PUSH1 0x0 DUP4 EQ JUMPDEST ISZERO PUSH2 0x14B2 JUMPI POP POP PUSH2 0x167D JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1678 JUMPI PUSH1 0x0 DUP3 PUSH1 0x0 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x1539 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x15C4 DUP4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1626 JUMPI PUSH2 0x161B PUSH2 0x1602 DUP6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP4 POP PUSH2 0x1646 JUMP JUMPDEST PUSH2 0x1643 DUP2 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP JUMPDEST PUSH2 0x1653 DUP4 DUP10 DUP10 DUP7 DUP7 PUSH2 0x184B JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1670 JUMPI POP POP POP POP POP PUSH2 0x167D JUMP JUMPDEST POP POP POP PUSH2 0x14B3 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO DUP1 ISZERO PUSH2 0x16B3 JUMPI POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO JUMPDEST PUSH2 0x16BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x1811 JUMPI PUSH1 0x0 PUSH1 0x4 DUP5 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x1719 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1785 JUMPI PUSH1 0x4 DUP4 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x175D JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP POP PUSH2 0x1813 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17AD PUSH2 0x179E PUSH1 0x10 DUP5 PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH2 0x233F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x17F7 JUMPI PUSH2 0x17C7 PUSH1 0x10 DUP3 PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 GT ISZERO PUSH2 0x17F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST PUSH2 0x180A DUP2 DUP5 PUSH2 0x2360 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP PUSH2 0x16FB JUMP JUMPDEST POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH2 0x18BC PUSH1 0x1 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x18D8 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP8 DUP8 DUP10 DUP10 SUB PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x20A7 JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F59 JUMPI PUSH2 0x19D3 DUP8 DUP7 PUSH1 0x0 PUSH2 0x237F JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1AE7 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1B45 JUMPI PUSH2 0x1AF8 DUP9 PUSH1 0x0 DUP10 PUSH2 0x237F JUMP JUMPDEST DUP8 DUP6 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x1B51 DUP11 DUP8 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST DUP1 PUSH2 0x1C36 JUMPI PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1C2C DUP4 DUP8 DUP6 PUSH2 0x287F JUMP JUMPDEST POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST DUP2 PUSH2 0x1D13 JUMPI PUSH2 0x1C46 DUP9 DUP8 DUP10 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x1C96 DUP11 DUP10 PUSH8 0x4000000000000004 PUSH1 0x0 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2A59 JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x1D1F DUP9 DUP8 PUSH1 0x0 PUSH2 0x237F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1E3B DUP4 DUP9 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH2 0x1E8C DUP7 PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH2 0x1EDC DUP4 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x287F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x1F65 DUP6 DUP4 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH2 0x1F70 DUP5 DUP9 DUP5 PUSH2 0x2A59 JUMP JUMPDEST PUSH2 0x1F7B DUP8 DUP7 DUP7 PUSH2 0x237F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2087 JUMPI PUSH2 0x207F DUP2 DUP7 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST DUP1 SWAP5 POP PUSH2 0x2094 JUMP JUMPDEST PUSH2 0x2093 DUP7 PUSH1 0x0 DUP8 PUSH2 0x237F JUMP JUMPDEST JUMPDEST PUSH2 0x209F DUP6 DUP8 DUP7 PUSH2 0x2A59 JUMP JUMPDEST POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x20B3 DUP9 DUP4 PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST DUP5 DUP4 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x20E9 DUP9 DUP7 DUP11 PUSH2 0x287F JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x22CC JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x22AC JUMPI PUSH2 0x2195 DUP7 DUP6 DUP8 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x21E6 DUP5 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x287F JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP1 SWAP5 POP POP PUSH2 0x22B9 JUMP JUMPDEST PUSH2 0x22B8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x237F JUMP JUMPDEST JUMPDEST PUSH2 0x22C4 DUP6 DUP8 DUP7 PUSH2 0x2A59 JUMP JUMPDEST POP POP POP PUSH2 0x22FE JUMP JUMPDEST PUSH2 0x22D8 DUP7 PUSH1 0x0 DUP8 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x22E3 DUP6 DUP8 DUP7 PUSH2 0x2A59 JUMP JUMPDEST PUSH2 0x22EF DUP8 PUSH1 0x0 DUP7 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x22FA DUP5 DUP9 DUP5 PUSH2 0x2A59 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x2318 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x2339 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x2329 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ ISZERO PUSH2 0x234E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x2357 JUMPI INVALID JUMPDEST MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x2375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x257B JUMPI DUP2 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x245A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2506 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1818 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x287A JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT PUSH2 0x2874 JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x260A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2867 JUMPI PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2697 JUMPI DUP3 DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2661 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2860 JUMP JUMPDEST PUSH2 0x2712 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x27FB JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x282E JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP PUSH2 0x287A JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x257E JUMP JUMPDEST POP PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x289D PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x16BF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2911 JUMPI DUP1 PUSH1 0x4 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x28DB JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2A54 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2931 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x10 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x2A52 JUMPI DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x2988 JUMPI POP PUSH2 0x2A54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29B9 DUP3 PUSH2 0x29AB DUP5 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2B96 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x29CF PUSH1 0x10 DUP4 PUSH2 0x2305 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x29E6 DUP4 DUP4 PUSH2 0x233F SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x29F2 JUMPI POP PUSH2 0x2969 JUMP JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH2 0x2A4C JUMPI DUP3 PUSH1 0x4 DUP3 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2A1A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP PUSH2 0x2969 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B26 JUMPI DUP3 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B85 JUMPI DUP2 DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x2B90 DUP5 DUP4 DUP7 PUSH2 0x287F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x2BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x2BAF JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 0x27 0xDA CALL SHL PUSH31 0xA5E28A7CE5E8F674EED9CE7EAAA44A3F1F377F6A127A5C170BA62A64736F6C PUSH4 0x43000510 STOP ORIGIN ",
"sourceMap": "359:15249:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;359:15249:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;801:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;801:18:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4629:208:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;853:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5454:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5454:295:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4042:378;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4042:378:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4042:378:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;760:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3202:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3202:117:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;826:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;826:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5012:146;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5012:146:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5990:868;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5990:868:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3511:360;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3511:360:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2864:194;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2864:194:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;801:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4629:208::-;4698:4;4747:6;4715:7;:19;4723:10;4715:19;;;;;;;;;;;;;;;:29;4735:8;4715:29;;;;;;;;;;;;;;;:38;;;;4790:8;4769:38;;4778:10;4769:38;;;4800:6;4769:38;;;;;;;;;;;;;;;;;;4825:4;4818:11;;4629:208;;;;:::o;853:26::-;;;;:::o;5454:295::-;5590:4;5641:38;5672:6;5641:7;:14;5649:5;5641:14;;;;;;;;;;;;;;;:26;5656:10;5641:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;5612:7;:14;5620:5;5612:14;;;;;;;;;;;;;;;:26;5627:10;5612:26;;;;;;;;;;;;;;;:67;;;;5690:29;5700:5;5707:3;5712:6;5690:9;:29::i;:::-;5737:4;5730:11;;5454:295;;;;;:::o;4042:378::-;4099:18;4130:17;4150:8;:16;4159:6;4150:16;;;;;;;;;;;;;;;4130:36;;4177:26;4222:8;:16;4231:6;4222:16;;;;;;;;;;;;;;;:23;;;;;;;;;;;;4206:40;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4177:69;;4262:9;4257:131;4277:8;:16;4286:6;4277:16;;;;;;;;;;;;;;;:23;;;;;;;;;;;;4273:27;;:1;:27;4257:131;;;4322:54;;;;;;;;4336:1;:8;;4345:1;4336:11;;;;;;;;;;;;;;;;;;;;;;;;;;;4322:54;;;;;;;;4349:8;:21;4358:1;:8;;4367:1;4358:11;;;;;;;;;;;;;;;;;;;;;;;;;;;4349:21;;;;;;;;;;;;;;;:26;;;;;;;;;;;;4322:54;;;;;;;:7;4330:1;4322:10;;;;;;;;;;;;;:54;;;;4302:3;;;;;;;4257:131;;;;4405:7;4398:14;;;;4042:378;;;:::o;760:34::-;793:1;760:34;:::o;3202:117::-;3260:7;3287:8;:16;3296:6;3287:16;;;;;;;;;;;;;;;:24;;;;;;;;;;;;3280:31;;;;3202:117;;;:::o;826:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5012:146::-;5077:4;5094:34;5104:10;5116:3;5121:6;5094:9;:34::i;:::-;5146:4;5139:11;;5012:146;;;;:::o;5990:868::-;6125:4;6147:20;6160:6;6147:20;;:12;:20::i;:::-;6178:26;6191:12;6201:1;6191:5;:9;;;;:12;;;;:::i;:::-;6178:26;;:12;:26::i;:::-;6232:5;6223:14;;:6;:14;;;6215:23;;;;;;6270:15;6288:25;6300:12;6310:1;6300:5;:9;;;;:12;;;;:::i;:::-;6288:25;;:11;:25::i;:::-;6270:43;;6344:6;6332:18;;:8;:18;;;;6324:27;;;;;;6388:13;6404:17;6414:6;6404:5;:9;;;;:17;;;;:::i;:::-;6388:33;;6456:8;:18;6465:8;6456:18;;;;;;;;;;;;;;;:24;;;;;;;;;;;;6442:38;;:10;:38;;;6434:47;;;;;;6553:40;6586:6;6553:8;:20;6562:10;6553:20;;;;;;;;;;;;;;;:28;;;;;;;;;;;;:32;;;;:40;;;;:::i;:::-;6522:8;:20;6531:10;6522:20;;;;;;;;;;;;;;;:28;;;:71;;;;;;;;;;;;;;;;;;6628:33;6654:6;6628:8;:13;6637:3;6628:13;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:25;;;;:33;;;;:::i;:::-;6604:8;:13;6613:3;6604:13;;;;;;;;;;;;;;;:21;;;:57;;;;;;;;;;;;;;;;;;6700:3;6679:33;;6688:10;6679:33;;;6705:6;6679:33;;;;;;;;;;;;;;;;;;;;6741:3;6727:17;;:10;:17;;;;:31;;;;;6757:1;6748:6;:10;;;6727:31;6723:126;;;6775:62;6796:8;6806:10;6818:3;6823:6;6831:5;6775:20;:62::i;:::-;6723:126;5990:868;;;;;;;:::o;3511:360::-;3623:14;3652:13;3680:12;3720:18;3733:4;3720:12;:18::i;:::-;3758:17;3770:4;3758:11;:17::i;:::-;3749:26;;3786:15;3804:8;:16;3813:6;3804:16;;;;;;;;;;;;;;;3786:34;;3839:1;:7;;;;;;;;;;;;3848:6;3856:1;:6;;;;;;;;;;;;3831:32;;;;;;;3511:360;;;;;:::o;2864:194::-;2993:7;3025;:15;3033:6;3025:15;;;;;;;;;;;;;;;:25;3041:8;3025:25;;;;;;;;;;;;;;;;3018:32;;2864:194;;;;:::o;446:174:2:-;506:7;540:2;534;:8;;526:17;;;;;;572:9;589:2;584;:7;572:19;;611:1;604:8;;;446:174;;;;:::o;7108:1137:1:-;507:11;7202:9;:28;;7194:37;;;;;;7268;7308:8;:15;7317:5;7308:15;;;;;;;;;;;;;;;:22;;7268:62;;7341:13;7364:9;7341:33;;7413:35;7441:6;7413:8;:15;7422:5;7413:15;;;;;;;;;;;;;;;:23;;;;;;;;;;;;:27;;;;:35;;;;:::i;:::-;7387:8;:15;7396:5;7387:15;;;;;;;;;;;;;;;:23;;;:61;;;;;;;;;;;;;;;;;;7483:33;7509:6;7483:8;:13;7492:3;7483:13;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:25;;;;:33;;;;:::i;:::-;7459:8;:13;7468:3;7459:13;;;;;;;;;;;;;;;:21;;;:57;;;;;;;;;;;;;;;;;;7550:3;7534:31;;7543:5;7534:31;;;7555:9;7534:31;;;;;;;;;;;;;;;;;;7589:3;7580:12;;:5;:12;;;:30;;;;7609:1;7596:9;:14;7580:30;7576:69;;;7627:7;;;;7576:69;7655:544;7687:1;7662:8;:15;7671:5;7662:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:26;;;7655:544;;;7705:13;7721:1;7723;7721:4;;;;;;;;;;;;;;;;;;;;;;;;;;;7705:20;;7740:12;7755:8;:16;7764:6;7755:16;;;;;;;;;;;;;;;:21;;;;;;;;;;;;7740:36;;7791:14;7808:17;7818:6;7808:5;:9;;;;:17;;;;:::i;:::-;7791:34;;7853:7;7844:16;;:6;:16;;;7840:206;;;7889:30;7899:19;7911:6;7899:7;:11;;;;:19;;;;:::i;:::-;7889:5;:9;;;;:30;;;;:::i;:::-;7881:38;;7947:1;7938:10;;7840:206;;;8011:19;8022:7;8011:6;:10;;;;:19;;;;:::i;:::-;8002:28;;7840:206;8060:55;8081:6;8089:5;8096:3;8101:6;8109:5;8060:20;:55::i;:::-;8144:1;8134:6;:11;;;8130:58;;;8166:7;;;;;;;8130:58;7655:544;;;;;;8209:8;;;7108:1137;;;;:::o;2544:137::-;2621:1;2613:4;:9;;:31;;;;;2634:10;;;;;;;;;;;2626:18;;:4;:18;;2613:31;2605:40;;;;;;2544:137;:::o;1356:170:2:-;1414:6;1447:2;1441:8;;:2;:8;;;;1433:17;;;;;;1479:8;1495:2;1490;:7;1479:18;;1517:1;1510:8;;;1356:170;;;;:::o;15139:466:1:-;15197:6;15216:18;15237:1;15216:22;;15249:349;15256:4;15249:349;;;15297:1;15281:6;15288:4;15281:12;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;15277:42;;15307:6;15314:4;15307:12;;;;;;;;;;;;;;;;;;;;;;;;;;;15300:19;;;;;15277:42;15386:1;15338:44;15347:34;702:2;15347:10;:14;;:34;;;;:::i;:::-;15338:4;:8;;:44;;;;:::i;:::-;:49;15334:211;;;15421:34;702:2;15421:10;:14;;:34;;;;:::i;:::-;15408:47;;15490:10;;;;;;;;;;;15482:18;;:4;:18;;15474:27;;;;;;15334:211;15566:20;15575:10;15566:4;:8;;:20;;;;:::i;:::-;15559:27;;15249:349;;;15139:466;;;;;:::o;1534:168:2:-;1592:6;1611:8;1627:2;1622;:7;1611:18;;1653:2;1648:7;;:1;:7;;;;1640:16;;;;;;1693:1;1686:8;;;1534:168;;;;:::o;8552:3775:1:-;8742:15;8760:8;:18;8769:8;8760:18;;;;;;;;;;;;;;;8742:36;;8789:17;8809:1;:6;;;;;;;;;;;;8789:26;;8826:12;8841:6;8848:13;8859:1;8848:6;:10;;;;:13;;;;:::i;:::-;8841:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8826:36;;8899:3;8878:54;;8892:5;8878:54;;;8904:6;8912:5;8925:6;8919:5;:12;8878:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8961:6;8949:18;;:8;:18;;;8945:2319;;;9055:5;9041:19;;:10;:19;;;9037:1591;;;9081:40;9104:5;9111:6;9119:1;9081:22;:40::i;:::-;9140:10;9179:3;9154:28;;:8;:15;9163:5;9154:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;9140:43;;9202:11;9242:3;9217:28;;:8;:15;9226:5;9217:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;9202:44;;9327:5;9326:6;:17;;;;;9337:6;9336:7;9326:17;9322:169;;;9368:38;9391:3;9396:1;9399:6;9368:22;:38::i;:::-;9439:3;9429:1;:7;;;:13;;;;;;;;;;;;;;;;;;9465:7;;;;;;;9322:169;9509:37;9527:8;9537:5;9544:1;9509:17;:37::i;:::-;9621:6;9616:222;;9659:8;:18;9668:8;9659:18;;;;;;;;;;;;;;;;9652:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9723:5;9700:8;:15;9709:5;9700:15;;;;;;;;;;;;;;;:20;;;:28;;;;;;;;;;;;;;;;;;9751:38;9769:5;9776;9783;9751:17;:38::i;:::-;9812:7;;;;;;;9616:222;9908:5;9903:240;;9938:42;9961:3;9966:5;9973:6;9938:22;:42::i;:::-;10003:46;10013:8;10023:3;10028:8;:15;10037:5;10028:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10003:9;:46::i;:::-;10079:8;:15;10088:5;10079:15;;;;;;;;;;;;;;;;10072:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10117:7;;;;;;;9903:240;10209:37;10232:3;10237:5;10244:1;10209:22;:37::i;:::-;10272:8;:18;10281:8;10272:18;;;;;;;;;;;;;;;;10265:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10332:8;:15;10341:5;10332:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10309:8;:15;10318:5;10309:15;;;;;;;;;;;;;;;:20;;;:43;;;;;;;;;;;;;;;;;;10371:35;10389:5;10396:6;10404:1;10371:17;:35::i;:::-;10425:49;10443:5;10450:8;:15;10459:5;10450:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10472:1;10425:17;:49::i;:::-;10493:53;10511:5;10518:8;:15;10527:5;10518:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10540:5;10493:17;:53::i;:::-;10572:8;:15;10581:5;10572:15;;;;;;;;;;;;;;;;10565:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10606:7;;;;;;;9037:1591;10719:40;10737:6;10745:10;10757:1;10719:17;:40::i;:::-;10774:35;10784:5;10791;10798:10;10774:9;:35::i;:::-;10824:44;10847:5;10854:6;10862:5;10824:22;:44::i;:::-;10890:8;:18;10899:8;10890:18;;;;;;;;;;;;;;;;10883:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11001:3;10976:28;;:8;:15;10985:5;10976:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;10972:216;;;11025:35;11043:5;11050:6;11058:1;11025:17;:35::i;:::-;11088:5;11079:14;;10972:216;;;11134:38;11157:3;11162:1;11165:6;11134:22;:38::i;:::-;10972:216;11202:29;11212:6;11220:3;11225:5;11202:9;:29::i;:::-;11246:7;;;;;8945:2319;11327:42;11345:8;11355:10;11367:1;11327:17;:42::i;:::-;11389:6;11380:1;:6;;;:15;;;;;;;;;;;;;;;;;;11406:45;11424:8;11434:6;11442:8;11406:17;:45::i;:::-;11545:5;11531:19;;:10;:19;;;11527:544;;;11639:3;11614:28;;:8;:15;11623:5;11614:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;11610:385;;;11663:42;11686:3;11691:5;11698:6;11663:22;:42::i;:::-;11724:49;11742:5;11749:8;:15;11758:5;11749:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;11771:1;11724:17;:49::i;:::-;11792:12;11807:8;:15;11816:5;11807:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;11792:35;;11853:8;:15;11862:5;11853:15;;;;;;;;;;;;;;;;11846:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11895:5;11887:13;;11610:385;;;;11941:38;11964:3;11969:1;11972:6;11941:22;:38::i;:::-;11610:385;12009:29;12019:6;12027:3;12032:5;12009:9;:29::i;:::-;12053:7;;;;;11527:544;12145:38;12168:3;12173:1;12176:6;12145:22;:38::i;:::-;12194:29;12204:6;12212:3;12217:5;12194:9;:29::i;:::-;12234:39;12257:5;12264:1;12267:5;12234:22;:39::i;:::-;12284:35;12294:5;12301;12308:10;12284:9;:35::i;:::-;8552:3775;;;;;;;;;:::o;56:220:2:-;116:7;146:1;140:2;:7;136:48;;;171:1;164:8;;;;136:48;196:9;213:2;208;:7;196:19;;244:2;238;234:1;:6;;;;;;:12;226:21;;;;;;267:1;260:8;;;56:220;;;;;:::o;808:129::-;868:7;902:1;896:2;:7;;888:16;;;;;;927:2;922;:7;;;;;;915:14;;808:129;;;;:::o;628:172::-;688:7;708:9;725:2;720;:7;708:19;;751:2;746:1;:7;;738:16;;;;;;791:1;784:8;;;628:172;;;;:::o;13101:957:1:-;13242:37;13282:8;:15;13291:5;13282:15;;;;;;;;;;;;;;;:22;;13242:62;;13327:1;13319:4;:9;;;13315:209;;;13418:4;13390:1;13392:8;:15;13401:5;13392:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;13390:25;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13462:29;13489:1;13462:8;:15;13471:5;13462:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:26;;;;:29;;;;:::i;:::-;13437:8;:15;13446:5;13437:15;;;;;;;;;;;;;;;:22;;;:54;;;;;;;;;;;;;;;;;;13506:7;;;13315:209;13539:9;13534:478;13555:8;:15;13564:5;13555:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;13550:27;;:1;:27;13534:478;;13611:4;13603:12;;:1;13605;13603:4;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;;;13599:402;;;13647:1;13640:4;:8;;;13636:325;;;13730:4;13723:1;13725;13723:4;;;;;;;;;;;;;;;;;;:11;;;;;;;;;;;;;;;;;;13636:325;;;13857:29;13884:1;13857:8;:15;13866:5;13857:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:26;;;;:29;;;;:::i;:::-;13832:8;:15;13841:5;13832:15;;;;;;;;;;;;;;;:22;;;:54;;;;;;;;;;;;;;;;;;13916:1;13918:8;:15;13927:5;13918:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;13916:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13909:1;13911;13909:4;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13636:325;13979:7;;;;13599:402;13579:3;;;;;;;13534:478;;;;14022:8;;;13101:957;;;;:::o;14259:614::-;14358:12;14368:1;14358:5;:9;;;;:12;;;;:::i;:::-;14350:20;;14395:5;14385:15;;:6;:15;;;14381:92;;;14434:6;14417;14424;14417:14;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14455:7;;14381:92;14499:6;14483;14490:5;14483:13;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14516:17;702:2;14516:38;;14565:301;14572:4;14565:301;;;14605:9;14597:5;:17;;;14593:30;;;14616:7;;;14593:30;14637:9;14649:44;14683:9;14649:29;14668:9;14657:5;14649:14;;:18;;:29;;;;:::i;:::-;:33;;:44;;;;:::i;:::-;14637:56;;14722:33;702:2;14722:9;:13;;:33;;;;:::i;:::-;14710:45;;14794:1;14774:16;14780:9;14774:1;:5;;:16;;;;:::i;:::-;:21;14770:35;;;14797:8;;;14770:35;14828:6;14824:10;;:1;:10;14820:34;;;14848:6;14836;14843:1;14836:9;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;14820:34;14565:301;;;;14259:614;;;;;:::o;12623:281::-;12709:15;12727:8;:18;12736:8;12727:18;;;;;;;;;;;;;;;12709:36;;12771:6;12760:17;;:1;:7;;;;;;;;;;;;:17;;;12756:39;;12789:6;12779:1;:7;;;:16;;;;;;;;;;;;;;;;;;12756:39;12820:5;12810:15;;:1;:6;;;;;;;;;;;;:15;;;12806:35;;12836:5;12827:1;:6;;;:14;;;;;;;;;;;;;;;;;;12806:35;12852:44;12870:8;12880:5;12887:8;12852:17;:44::i;:::-;12623:281;;;;:::o;284:154:2:-;344:7;377:1;372:2;:6;364:15;;;;;;390:9;407:2;402;:7;;;;;;390:19;;429:1;422:8;;;284:154;;;;:::o;359:15249:1:-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;359:15249:1;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2256600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"allowance(address,address)": "1431",
"approve(address,uint256)": "22391",
"balanceOf(address)": "1244",
"decimals()": "328",
"getRange(uint256)": "infinite",
"name()": "infinite",
"rangesOf(address)": "infinite",
"symbol()": "infinite",
"totalSupply()": "1050",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"transferRange(address,uint64,uint64)": "infinite"
},
"internal": {
"_checkBounds(uint256)": "913",
"_getPointer(uint256)": "infinite",
"_replaceInBalanceRange(address,uint64,uint64)": "infinite",
"_setRange(uint64,address,uint64)": "infinite",
"_setRangePointers(uint64,uint64,uint64)": "infinite",
"_transfer(address,address,uint256)": "infinite",
"_transferSingleRange(uint64,address,address,uint64,uint64)": "infinite"
}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"decimals()": "313ce567",
"getRange(uint256)": "cc364f48",
"name()": "06fdde03",
"rangesOf(address)": "287112fb",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferRange(address,uint64,uint64)": "cac2f672"
}
},
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint64",
"name": "_totalSupply",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "start",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stop",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TransferRange",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_idx",
"type": "uint256"
}
],
"name": "getRange",
"outputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "rangesOf",
"outputs": [
{
"internalType": "uint64[2][]",
"name": "",
"type": "uint64[2][]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"name": "transferRange",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.5.16+commit.9c3226ce"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint64",
"name": "_totalSupply",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "start",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stop",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TransferRange",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_idx",
"type": "uint256"
}
],
"name": "getRange",
"outputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "rangesOf",
"outputs": [
{
"internalType": "uint64[2][]",
"name": "",
"type": "uint64[2][]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"name": "transferRange",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"author": "Ben Hauser - @iamdefinitelyahumanwith guidance from Gabriel Shapiro - @lex-node",
"details": "Expands upon the ERC20 token standard https://theethereum.wiki/w/index.php/ERC20_Token_Standard",
"methods": {
"allowance(address,address)": {
"params": {
"_owner": "Owner of the tokens",
"_spender": "Spender of the tokens"
},
"return": "integer"
},
"approve(address,uint256)": {
"params": {
"_spender": "Address approved to transfer tokens",
"_value": "Amount approved for transfer"
},
"return": "bool success"
},
"balanceOf(address)": {
"params": {
"_owner": "Address of balance to query"
},
"return": "integer"
},
"constructor": {
"params": {
"_name": "Token Name",
"_symbol": "Token symbol",
"_totalSupply": "Total supply (assigned to msg.sender)"
}
},
"getRange(uint256)": {
"params": {
"_idx": "Token index number"
},
"return": "owner, start of range, stop of range, time restriction, tag"
},
"rangesOf(address)": {
"params": {
"_owner": "Address to query"
},
"return": "Array of [(start, stop),..]"
},
"transfer(address,uint256)": {
"params": {
"_to": "Recipient",
"_value": "Amount being transferred"
},
"return": "bool success"
},
"transferFrom(address,address,uint256)": {
"details": "This will transfer tokens starting from balance.ranges[0]",
"params": {
"_from": "Sender address",
"_to": "Recipient address",
"_value": "Number of tokens to send"
},
"return": "bool success"
},
"transferRange(address,uint64,uint64)": {
"params": {
"_start": "Transfer start index",
"_stop": "Transfer stop index",
"_to": "Recipient address"
},
"return": "bool success"
}
},
"title": "Non-Fungible ERC20"
},
"userdoc": {
"methods": {
"allowance(address,address)": {
"notice": "ERC20 allowance standard"
},
"approve(address,uint256)": {
"notice": "ERC20 approve standard"
},
"balanceOf(address)": {
"notice": "ERC20 balanceOf standard"
},
"constructor": "constructor method",
"getRange(uint256)": {
"notice": "Fetch information about a range"
},
"rangesOf(address)": {
"notice": "Fetch the token ranges owned by an address"
},
"transfer(address,uint256)": {
"notice": "ERC20 transfer standard"
},
"transferFrom(address,address,uint256)": {
"notice": "ERC20 transferFrom standard"
},
"transferRange(address,uint64,uint64)": {
"notice": "transfer tokens with a specific index range"
}
}
}
},
"settings": {
"compilationTarget": {
"contracts/NFToken.sol": "NFToken"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ERC20Interface.sol": {
"keccak256": "0x1c16d32da2453f516a2cab3f711d41fb8e5bb85e4ef199aa09f810e1468beb9c",
"urls": [
"bzz-raw://47823620d41acb2325dd4b9fab5225273186b57c4825474bd7da12b3575455b3",
"dweb:/ipfs/QmZQVZJw5M8Mg6h2uwDDZuH8Zm1oTPVZShX1f6Dvg8hU3u"
]
},
"contracts/NFToken.sol": {
"keccak256": "0xc072e9a6ef928b44f3b0f19cb74e533e0cb96052834c3cf50efd1ca27aa03af2",
"urls": [
"bzz-raw://d81c700765440980fa68e0c1cb79d2c3c8976e0332b5388e65eaaf0f1051dfce",
"dweb:/ipfs/QmVBSa3yobfNXedeedPYx6nmb3EXp7n8naXDQjuYyp2W3A"
]
},
"contracts/SafeMath.sol": {
"keccak256": "0xaa30e53591ae085179e467d7f55d37e82d36549a12e246e1c576117b45af8130",
"urls": [
"bzz-raw://b4395ae1dda7a74dbd351232c08d34661c59d9c1b7ca2ada6d2c8705f9653597",
"dweb:/ipfs/QmXZyNSLvDMj9SCNwNreN3J6TZh3F8Fts6CFeBGKsQUdA7"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60806040523480156200001157600080fd5b50604051620043fc380380620043fc833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919050505082828267fffffffffffffffe8167ffffffffffffffff161115620001e557600080fd5b8260009080519060200190620001fd92919062000953565b5081600190805190602001906200021692919062000953565b5060008167ffffffffffffffff1614156200023157620004f1565b62000248600133600184016200054560201b60201c565b8067400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600067800000000000000081106200038857fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508067ffffffffffffffff1660028190555080600360006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a33373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd9600180850185604051808481526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a35b5050503367400000000000000760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000a02565b600067400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200061357828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8167ffffffffffffffff168160000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200067357818160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b620006868483866200068c60201b60201c565b50505050565b620006b160018367ffffffffffffffff166200089560201b62002c0d1790919060201c565b91508167ffffffffffffffff168367ffffffffffffffff16141562000728578060048467ffffffffffffffff16680100000000000000008110620006f157fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555062000890565b8060048367ffffffffffffffff166801000000000000000081106200074957fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000601090505b6001156200088e57808367ffffffffffffffff161015620007a3575062000890565b6000620007e282620007ce848767ffffffffffffffff16620008ca60201b6200396d1790919060201c565b620008f260201b620039121790919060201c565b9050620007ff601083620008f260201b620039121790919060201c565b915060006200081d83836200093060201b6200394c1790919060201c565b14156200082b575062000781565b8467ffffffffffffffff168111156200088757826004826801000000000000000081106200085557fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5062000781565b505b505050565b60008267ffffffffffffffff168267ffffffffffffffff161115620008b957600080fd5b600082840390508091505092915050565b6000808211620008d957600080fd5b6000828481620008e557fe5b0490508091505092915050565b6000808314156200090757600090506200092a565b60008284029050828482816200091957fe5b04146200092557600080fd5b809150505b92915050565b6000808214156200094057600080fd5b8183816200094a57fe5b06905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200099657805160ff1916838001178555620009c7565b82800160010185558215620009c7579182015b82811115620009c6578251825591602001919060010190620009a9565b5b509050620009d69190620009da565b5090565b620009ff91905b80821115620009fb576000816000905550600101620009e1565b5090565b90565b6139ea8062000a126000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb14610509578063cac2f6721461056f578063cc364f48146105f3578063dd62ed3e14610697576100ea565b806370a08231146103ca578063713b39091461042257806395d89b4114610486576100ea565b806323b872dd116100c857806323b872dd146101f6578063287112fb1461027c5780632893c5b014610336578063313ce567146103a6576100ea565b806306fdde03146100ef578063095ea7b31461017257806318160ddd146101d8575b600080fd5b6100f761070f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013757808201518184015260208101905061011c565b50505050905090810190601f1680156101645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101be6004803603604081101561018857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107ad565b604051808215151515815260200191505060405180910390f35b6101e06108a6565b6040518082815260200191505060405180910390f35b6102626004803603606081101561020c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ac565b604051808215151515815260200191505060405180910390f35b6102be6004803603602081101561029257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e1565b60405180806020018281038252838181518152602001915080516000925b818410156103255782846020026020010151600260200280838360005b838110156103145780820151818401526020810190506102f9565b5050505090500192600101926102dc565b925050509250505060405180910390f35b61038c6004803603604081101561034c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c60565b604051808215151515815260200191505060405180910390f35b6103ae61135d565b604051808260ff1660ff16815260200191505060405180910390f35b61040c600480360360208110156103e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611362565b6040518082815260200191505060405180910390f35b61046c6004803603604081101561043857600080fd5b81019080803567ffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506113d3565b604051808215151515815260200191505060405180910390f35b61048e611896565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ce5780820151818401526020810190506104b3565b50505050905090810190601f1680156104fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105556004803603604081101561051f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611934565b604051808215151515815260200191505060405180910390f35b6105d96004803603606081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff16906020019092919050505061194b565b604051808215151515815260200191505060405180910390f35b61061f6004803603602081101561060957600080fd5b8101908080359060200190929190505050611d52565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390f35b6106f9600480360360408110156106ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b505050505081565b60008167400000000000000660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b60006109448267400000000000000660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7890919063ffffffff16565b67400000000000000660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109d6848484611e98565b600190509392505050565b6060600067400000000000000560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050606067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16604051908082528060200260200182016040528015610ad057816020015b610abd613993565b815260200190600190039081610ab55790505b50905060005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16811015610c5557604051806040016040528084600101836780000000000000008110610b6657fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152602001674000000000000004600086600101856780000000000000008110610bc057fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250828281518110610c3d57fe5b60200260200101819052508080600101915050610ad6565b508092505050919050565b600067400000000000000760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc357600080fd5b60008267ffffffffffffffff1611610cda57600080fd5b67fffffffffffffffe610d1683600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67ffffffffffffffff161115610d2b57600080fd5b6000610d616001600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b9050600083820190508473ffffffffffffffffffffffffffffffffffffffff1667400000000000000460006004600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff16680100000000000000008110610dc157fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610efa5760006004600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff16680100000000000000008110610e7a57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1690508167400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550506110e4565b610f0582868361237f565b8167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166780000000000000008110610fc857fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611074600167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b61115e8467400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506111ec8467ffffffffffffffff166002546124bc90919063ffffffff16565b60028190555061122584600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b600360006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051808267ffffffffffffffff16815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd9848488604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a360019250505092915050565b600081565b600067400000000000000560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b600067400000000000000760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461143657600080fd5b8267ffffffffffffffff168267ffffffffffffffff161161145657600080fd5b600061146e6001840367ffffffffffffffff166124db565b90508367ffffffffffffffff168167ffffffffffffffff16111561149157600080fd5b600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905067400000000000000760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461154857600080fd5b8367ffffffffffffffff1667400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1611156115b3576115b284612600565b5b8467ffffffffffffffff168267ffffffffffffffff1610156115d9576115d885612600565b5b6115e58186600061270d565b6000611604868667ffffffffffffffff16612c0d90919063ffffffff16565b90506116258167ffffffffffffffff16600254611e7890919063ffffffff16565b6002819055506116a58167400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd9888885604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a3600067400000000000000460008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001935050505092915050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561192c5780601f106119015761010080835404028352916020019161192c565b820191906000526020600020905b81548152906001019060200180831161190f57829003601f168201915b505050505081565b6000611941338484611e98565b6001905092915050565b60006119608367ffffffffffffffff16612c41565b61199061198160018467ffffffffffffffff16612c0d90919063ffffffff16565b67ffffffffffffffff16612c41565b8167ffffffffffffffff168367ffffffffffffffff16106119b057600080fd5b60006119e26119d360018567ffffffffffffffff16612c0d90919063ffffffff16565b67ffffffffffffffff166124db565b90508367ffffffffffffffff168167ffffffffffffffff161115611a0557600080fd5b6000611a24858567ffffffffffffffff16612c0d90919063ffffffff16565b905067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aaf57600080fd5b611b298167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611c128167400000000000000560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a38573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d36575060008167ffffffffffffffff16115b15611d4957611d488233888888612c7e565b5b50509392505050565b6000806000611d6084612c41565b611d69846124db565b9150600067400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838260000160149054906101000a900467ffffffffffffffff16935093509350509193909250565b600067400000000000000660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082821115611e8757600080fd5b600082840390508091505092915050565b67fffffffffffffffe811115611ead57600080fd5b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010190506000829050611f798167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506120628167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806121705750600083145b1561217c575050612347565b5b600067400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115612342576000826000678000000000000000811061220357fe5b600491828204019190066008029054906101000a900467ffffffffffffffff169050600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff169050600061228e838367ffffffffffffffff16612c0d90919063ffffffff16565b90508067ffffffffffffffff168467ffffffffffffffff1610156122f0576122e56122cc858367ffffffffffffffff16612c0d90919063ffffffff16565b8367ffffffffffffffff16612c0d90919063ffffffff16565b915060009350612310565b61230d818567ffffffffffffffff16612c0d90919063ffffffff16565b93505b61231d8389898686612c7e565b60008467ffffffffffffffff16141561233a575050505050612347565b50505061217d565b600080fd5b505050565b60008082840190508367ffffffffffffffff168167ffffffffffffffff16101561237557600080fd5b8091505092915050565b600067400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461244c57828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8167ffffffffffffffff168160000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff16146124ab57818160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b6124b6848386613738565b50505050565b6000808284019050838110156124d157600080fd5b8091505092915050565b600080600190505b6001156125f957600060048468010000000000000000811061250157fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff161461256d5760048368010000000000000000811061254557fe5b600491828204019190066008029054906101000a900467ffffffffffffffff169150506125fb565b600061259561258660108461391290919063ffffffff16565b8561394c90919063ffffffff16565b14156125df576125af60108261391290919063ffffffff16565b9050600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156125de57600080fd5b5b6125f281846124bc90919063ffffffff16565b92506124e3565b505b919050565b60006126158267ffffffffffffffff166124db565b9050600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160000160149054906101000a900467ffffffffffffffff169050838260000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506126c18260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008661270d565b6126cd83826000613738565b6126d8838585613738565b612707848360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361237f565b50505050565b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905060008367ffffffffffffffff16141561290957818167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667800000000000000081106127e857fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612894600167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050612c08565b60005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168111612c02578367ffffffffffffffff168282678000000000000000811061299857fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff161415612bf55760008367ffffffffffffffff161115612a255782828267800000000000000081106129ef57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612bee565b612aa0600167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166780000000000000008110612b8957fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1682826780000000000000008110612bbc57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5050612c08565b808060010191505061290c565b50600080fd5b505050565b60008267ffffffffffffffff168267ffffffffffffffff161115612c3057600080fd5b600082840390508091505092915050565b60008114158015612c725750600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168111155b612c7b57600080fd5b50565b600067400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160000160149054906101000a900467ffffffffffffffff16905060006004612cef60018767ffffffffffffffff16612c0d90919063ffffffff16565b67ffffffffffffffff16680100000000000000008110612d0b57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1690508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd98787898903604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a38467ffffffffffffffff168867ffffffffffffffff1614156134da578367ffffffffffffffff168267ffffffffffffffff16141561338c57612e068786600061270d565b60008673ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905060008773ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905081158015612f1a575080155b15612f7857612f2b8860008961270d565b878560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050613731565b612f848a876000613738565b806130695767400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508567400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061305f838785613738565b5050505050613731565b816131465761307988878961270d565b6130c98a8967400000000000000460008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1661237f565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550505050505050613731565b6131528887600061270d565b67400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505067400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061326e83886000613738565b6132bf8667400000000000000460008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff166000613738565b61330f8367400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1685613738565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550505050505050613731565b61339885836000613738565b6133a384888461237f565b6133ae87868661270d565b67400000000000000460008967ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156134ba576134b281866000613738565b8094506134c7565b6134c68660008761270d565b5b6134d285878661237f565b505050613731565b6134e688836000613738565b848360000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061351c88868a613738565b8367ffffffffffffffff168267ffffffffffffffff1614156136ff578573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156136df576135c886858761270d565b6136198467400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff166000613738565b600067400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16905067400000000000000460008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff02191690555050809450506136ec565b6136eb8660008761270d565b5b6136f785878661237f565b505050613731565b61370b8660008761270d565b61371685878661237f565b6137228760008661270d565b61372d84888461237f565b5050505b5050505050565b61375660018367ffffffffffffffff16612c0d90919063ffffffff16565b91508167ffffffffffffffff168367ffffffffffffffff1614156137ca578060048467ffffffffffffffff1668010000000000000000811061379457fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061390d565b8060048367ffffffffffffffff166801000000000000000081106137ea57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000601090505b60011561390b57808367ffffffffffffffff161015613841575061390d565b600061387282613864848767ffffffffffffffff1661396d90919063ffffffff16565b61391290919063ffffffff16565b905061388860108361391290919063ffffffff16565b9150600061389f838361394c90919063ffffffff16565b14156138ab5750613822565b8467ffffffffffffffff1681111561390557826004826801000000000000000081106138d357fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b50613822565b505b505050565b6000808314156139255760009050613946565b600082840290508284828161393657fe5b041461394157600080fd5b809150505b92915050565b60008082141561395b57600080fd5b81838161396457fe5b06905092915050565b600080821161397b57600080fd5b600082848161398657fe5b0490508091505092915050565b604051806040016040528060029060208202803883398082019150509050509056fea265627a7a7231582034613274c9202ca631da7a6e644eb9d953b8efb02b10d32d5f1ec924995e62df64736f6c63430005100032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x43FC CODESIZE SUB DUP1 PUSH3 0x43FC DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x1 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP3 POP POP POP SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC3 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0xA6 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x1 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP3 POP POP POP SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x180 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x163 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x1AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP DUP3 DUP3 DUP3 PUSH8 0xFFFFFFFFFFFFFFFE DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x1E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x0 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x1FD SWAP3 SWAP2 SWAP1 PUSH3 0x953 JUMP JUMPDEST POP DUP2 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x216 SWAP3 SWAP2 SWAP1 PUSH3 0x953 JUMP JUMPDEST POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x231 JUMPI PUSH3 0x4F1 JUMP JUMPDEST PUSH3 0x248 PUSH1 0x1 CALLER PUSH1 0x1 DUP5 ADD PUSH3 0x545 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH8 0x8000000000000000 DUP2 LT PUSH3 0x388 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x2 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 PUSH1 0x1 DUP1 DUP6 ADD DUP6 PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST POP POP POP CALLER PUSH8 0x4000000000000007 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP PUSH3 0xA02 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x613 JUMPI DUP3 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH3 0x673 JUMPI DUP2 DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH3 0x686 DUP5 DUP4 DUP7 PUSH3 0x68C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH3 0x6B1 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH3 0x895 PUSH1 0x20 SHL PUSH3 0x2C0D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST SWAP2 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x728 JUMPI DUP1 PUSH1 0x4 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH3 0x6F1 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH3 0x890 JUMP JUMPDEST DUP1 PUSH1 0x4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH3 0x749 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x10 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH3 0x88E JUMPI DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH3 0x7A3 JUMPI POP PUSH3 0x890 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x7E2 DUP3 PUSH3 0x7CE DUP5 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH3 0x8CA PUSH1 0x20 SHL PUSH3 0x396D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x8F2 PUSH1 0x20 SHL PUSH3 0x3912 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH3 0x7FF PUSH1 0x10 DUP4 PUSH3 0x8F2 PUSH1 0x20 SHL PUSH3 0x3912 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH3 0x81D DUP4 DUP4 PUSH3 0x930 PUSH1 0x20 SHL PUSH3 0x394C OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST EQ ISZERO PUSH3 0x82B JUMPI POP PUSH3 0x781 JUMP JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH3 0x887 JUMPI DUP3 PUSH1 0x4 DUP3 PUSH9 0x10000000000000000 DUP2 LT PUSH3 0x855 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP PUSH3 0x781 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH3 0x8D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH3 0x8E5 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH3 0x907 JUMPI PUSH1 0x0 SWAP1 POP PUSH3 0x92A JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH3 0x919 JUMPI INVALID JUMPDEST DIV EQ PUSH3 0x925 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ ISZERO PUSH3 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH3 0x94A JUMPI INVALID JUMPDEST MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x996 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x9C7 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x9C7 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x9C6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x9A9 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x9D6 SWAP2 SWAP1 PUSH3 0x9DA JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x9FF SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x9FB JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x9E1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x39EA DUP1 PUSH3 0xA12 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x509 JUMPI DUP1 PUSH4 0xCAC2F672 EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0xCC364F48 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x697 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0x713B3909 EQ PUSH2 0x422 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x486 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x287112FB EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x2893C5B0 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3A6 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1D8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x70F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x137 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x164 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E0 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x262 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD PUSH1 0x0 SWAP3 JUMPDEST DUP2 DUP5 LT ISZERO PUSH2 0x325 JUMPI DUP3 DUP5 PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x314 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2F9 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 PUSH1 0x1 ADD SWAP3 PUSH2 0x2DC JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC60 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AE PUSH2 0x135D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1362 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x48E PUSH2 0x1896 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4B3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4FB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x555 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1934 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x194B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1D52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1DEA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x7A5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x77A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x788 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0x4000000000000006 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x944 DUP3 PUSH8 0x4000000000000006 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1E78 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000006 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x9D6 DUP5 DUP5 DUP5 PUSH2 0x1E98 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x60 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xAD0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xABD PUSH2 0x3993 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAB5 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 LT ISZERO PUSH2 0xC55 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x1 ADD DUP4 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xB66 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH1 0x1 ADD DUP6 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xBC0 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC3D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xAD6 JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000007 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE PUSH2 0xD16 DUP4 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD61 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 ADD SWAP1 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 PUSH1 0x4 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0xDC1 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 PUSH1 0x4 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0xE7A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x10E4 JUMP JUMPDEST PUSH2 0xF05 DUP3 DUP7 DUP4 PUSH2 0x237F JUMP JUMPDEST DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xFC8 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1074 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x115E DUP5 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x11EC DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x2 SLOAD PUSH2 0x24BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH2 0x1225 DUP5 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP5 DUP5 DUP9 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000007 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT PUSH2 0x1456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x146E PUSH1 0x1 DUP5 SUB PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH8 0x4000000000000007 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x15B3 JUMPI PUSH2 0x15B2 DUP5 PUSH2 0x2600 JUMP JUMPDEST JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x15D9 JUMPI PUSH2 0x15D8 DUP6 PUSH2 0x2600 JUMP JUMPDEST JUMPDEST PUSH2 0x15E5 DUP2 DUP7 PUSH1 0x0 PUSH2 0x270D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1604 DUP7 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1625 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x2 SLOAD PUSH2 0x1E78 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH2 0x16A5 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP9 DUP9 DUP6 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x192C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1901 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x192C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x190F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1941 CALLER DUP5 DUP5 PUSH2 0x1E98 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1960 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1990 PUSH2 0x1981 PUSH1 0x1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C41 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT PUSH2 0x19B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19E2 PUSH2 0x19D3 PUSH1 0x1 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1A05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A24 DUP6 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B29 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1C12 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x1D36 JUMPI POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x1D49 JUMPI PUSH2 0x1D48 DUP3 CALLER DUP9 DUP9 DUP9 PUSH2 0x2C7E JUMP JUMPDEST JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D60 DUP5 PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1D69 DUP5 PUSH2 0x24DB JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000006 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1E87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE DUP2 GT ISZERO PUSH2 0x1EAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH2 0x1F79 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2062 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x2170 JUMPI POP PUSH1 0x0 DUP4 EQ JUMPDEST ISZERO PUSH2 0x217C JUMPI POP POP PUSH2 0x2347 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2342 JUMPI PUSH1 0x0 DUP3 PUSH1 0x0 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2203 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x228E DUP4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x22F0 JUMPI PUSH2 0x22E5 PUSH2 0x22CC DUP6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP4 POP PUSH2 0x2310 JUMP JUMPDEST PUSH2 0x230D DUP2 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP JUMPDEST PUSH2 0x231D DUP4 DUP10 DUP10 DUP7 DUP7 PUSH2 0x2C7E JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x233A JUMPI POP POP POP POP POP PUSH2 0x2347 JUMP JUMPDEST POP POP POP PUSH2 0x217D JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x2375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x244C JUMPI DUP3 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24AB JUMPI DUP2 DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x24B6 DUP5 DUP4 DUP7 PUSH2 0x3738 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x24D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x25F9 JUMPI PUSH1 0x0 PUSH1 0x4 DUP5 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2501 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x256D JUMPI PUSH1 0x4 DUP4 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2545 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP POP PUSH2 0x25FB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2595 PUSH2 0x2586 PUSH1 0x10 DUP5 PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH2 0x394C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x25DF JUMPI PUSH2 0x25AF PUSH1 0x10 DUP3 PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 GT ISZERO PUSH2 0x25DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST PUSH2 0x25F2 DUP2 DUP5 PUSH2 0x24BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP PUSH2 0x24E3 JUMP JUMPDEST POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2615 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP4 DUP3 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x26C1 DUP3 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP7 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x26CD DUP4 DUP3 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x26D8 DUP4 DUP6 DUP6 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x2707 DUP5 DUP4 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x237F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2909 JUMPI DUP2 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x27E8 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2894 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x2C08 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT PUSH2 0x2C02 JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2998 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2BF5 JUMPI PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2A25 JUMPI DUP3 DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x29EF JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2BEE JUMP JUMPDEST PUSH2 0x2AA0 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2B89 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2BBC JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP PUSH2 0x2C08 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x290C JUMP JUMPDEST POP PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2C30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO DUP1 ISZERO PUSH2 0x2C72 JUMPI POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO JUMPDEST PUSH2 0x2C7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH2 0x2CEF PUSH1 0x1 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2D0B JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP8 DUP8 DUP10 DUP10 SUB PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x34DA JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x338C JUMPI PUSH2 0x2E06 DUP8 DUP7 PUSH1 0x0 PUSH2 0x270D JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x2F1A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x2F78 JUMPI PUSH2 0x2F2B DUP9 PUSH1 0x0 DUP10 PUSH2 0x270D JUMP JUMPDEST DUP8 DUP6 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x2F84 DUP11 DUP8 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST DUP1 PUSH2 0x3069 JUMPI PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x305F DUP4 DUP8 DUP6 PUSH2 0x3738 JUMP JUMPDEST POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST DUP2 PUSH2 0x3146 JUMPI PUSH2 0x3079 DUP9 DUP8 DUP10 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x30C9 DUP11 DUP10 PUSH8 0x4000000000000004 PUSH1 0x0 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x237F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x3152 DUP9 DUP8 PUSH1 0x0 PUSH2 0x270D JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x326E DUP4 DUP9 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x32BF DUP7 PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x330F DUP4 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x3738 JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x3398 DUP6 DUP4 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x33A3 DUP5 DUP9 DUP5 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x33AE DUP8 DUP7 DUP7 PUSH2 0x270D JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x34BA JUMPI PUSH2 0x34B2 DUP2 DUP7 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST DUP1 SWAP5 POP PUSH2 0x34C7 JUMP JUMPDEST PUSH2 0x34C6 DUP7 PUSH1 0x0 DUP8 PUSH2 0x270D JUMP JUMPDEST JUMPDEST PUSH2 0x34D2 DUP6 DUP8 DUP7 PUSH2 0x237F JUMP JUMPDEST POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x34E6 DUP9 DUP4 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST DUP5 DUP4 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x351C DUP9 DUP7 DUP11 PUSH2 0x3738 JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x36FF JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x36DF JUMPI PUSH2 0x35C8 DUP7 DUP6 DUP8 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x3619 DUP5 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP1 SWAP5 POP POP PUSH2 0x36EC JUMP JUMPDEST PUSH2 0x36EB DUP7 PUSH1 0x0 DUP8 PUSH2 0x270D JUMP JUMPDEST JUMPDEST PUSH2 0x36F7 DUP6 DUP8 DUP7 PUSH2 0x237F JUMP JUMPDEST POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x370B DUP7 PUSH1 0x0 DUP8 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x3716 DUP6 DUP8 DUP7 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x3722 DUP8 PUSH1 0x0 DUP7 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x372D DUP5 DUP9 DUP5 PUSH2 0x237F JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3756 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x37CA JUMPI DUP1 PUSH1 0x4 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x3794 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x390D JUMP JUMPDEST DUP1 PUSH1 0x4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x37EA JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x10 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x390B JUMPI DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3841 JUMPI POP PUSH2 0x390D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3872 DUP3 PUSH2 0x3864 DUP5 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x396D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3888 PUSH1 0x10 DUP4 PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x389F DUP4 DUP4 PUSH2 0x394C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x38AB JUMPI POP PUSH2 0x3822 JUMP JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH2 0x3905 JUMPI DUP3 PUSH1 0x4 DUP3 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x38D3 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP PUSH2 0x3822 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x3925 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x3946 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x3936 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x3941 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ ISZERO PUSH2 0x395B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x3964 JUMPI INVALID JUMPDEST MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x397B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3986 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLVALUE PUSH2 0x3274 0xC9 KECCAK256 0x2C 0xA6 BALANCE 0xDA PUSH27 0x6E644EB9D953B8EFB02B10D32D5F1EC924995E62DF64736F6C6343 STOP SDIV LT STOP ORIGIN ",
"sourceMap": "344:3749:2:-;;;602:216;8:9:-1;5:2;;;30:1;27;20:12;5:2;602:216:2;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;602:216:2;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;602:216:2;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;602:216:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;330:9;325:1;311:12;307:20;289:16;285:43;282:58;261:11;247:12;244:29;233:115;230:2;;;361:1;358;351:12;230:2;384:12;379:3;372:25;420:4;415:3;411:14;404:21;;0:432;;602:216:2;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;602:216:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;746:5;753:7;762:12;507:11:1;1928:12;:31;;;;1920:40;;;;;;1978:5;1971:4;:12;;;;;;;;;;;;:::i;:::-;;2003:7;1994:6;:16;;;;;;;;;;;;:::i;:::-;;2041:1;2025:12;:17;;;2021:30;;;2044:7;;2021:30;2061:40;2071:1;2074:10;2099:1;2086:12;:14;2061:9;;;:40;;:::i;:::-;2143:12;2112:8;:20;2121:10;2112:20;;;;;;;;;;;;;;;:28;;;:43;;;;;;;;;;;;;;;;;;2196:1;2166:8;:20;2175:10;2166:20;;;;;;;;;;;;;;;:27;;;:31;;;;;;;;;;;;;;;;;;2241:1;2208:8;:20;2217:10;2208:20;;;;;;;;;;;;;;;:27;;2236:1;2208:30;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2267:12;2253:26;;:11;:26;;;;2303:12;2290:10;;:25;;;;;;;;;;;;;;;;;;2354:10;2331:48;;565:1;2331:48;;;2366:12;2331:48;;;;;;;;;;;;;;;;;;;;2423:10;2395:72;;565:1;2395:72;;;2435:1;2451;2438:12;:14;2454:12;2395:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1825:650;;;;800:10:2;792:5;;:18;;;;;;;;;;;;;;;;;;602:216;;;344:3749;;12623:281:1;12709:15;12727:8;:18;12736:8;12727:18;;;;;;;;;;;;;;;12709:36;;12771:6;12760:17;;:1;:7;;;;;;;;;;;;:17;;;12756:39;;12789:6;12779:1;:7;;;:16;;;;;;;;;;;;;;;;;;12756:39;12820:5;12810:15;;:1;:6;;;;;;;;;;;;:15;;;12806:35;;12836:5;12827:1;:6;;;:14;;;;;;;;;;;;;;;;;;12806:35;12852:44;12870:8;12880:5;12887:8;12852:17;;;:44;;:::i;:::-;12623:281;;;;:::o;14259:614::-;14358:12;14368:1;14358:5;:9;;;;;;;;:12;;;;:::i;:::-;14350:20;;14395:5;14385:15;;:6;:15;;;14381:92;;;14434:6;14417;14424;14417:14;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14455:7;;14381:92;14499:6;14483;14490:5;14483:13;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14516:17;702:2;14516:38;;14565:301;14572:4;14565:301;;;14605:9;14597:5;:17;;;14593:30;;;14616:7;;;14593:30;14637:9;14649:44;14683:9;14649:29;14668:9;14657:5;14649:14;;:18;;;;;;:29;;;;:::i;:::-;:33;;;;;;:44;;;;:::i;:::-;14637:56;;14722:33;702:2;14722:9;:13;;;;;;:33;;;;:::i;:::-;14710:45;;14794:1;14774:16;14780:9;14774:1;:5;;;;;;:16;;;;:::i;:::-;:21;14770:35;;;14797:8;;;14770:35;14828:6;14824:10;;:1;:10;14820:34;;;14848:6;14836;14843:1;14836:9;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;14820:34;14565:301;;;;14259:614;;;;;:::o;1356:170:3:-;1414:6;1447:2;1441:8;;:2;:8;;;;1433:17;;;;;;1479:8;1495:2;1490;:7;1479:18;;1517:1;1510:8;;;1356:170;;;;:::o;284:154::-;344:7;377:1;372:2;:6;364:15;;;;;;390:9;407:2;402;:7;;;;;;390:19;;429:1;422:8;;;284:154;;;;:::o;56:220::-;116:7;146:1;140:2;:7;136:48;;;171:1;164:8;;;;136:48;196:9;213:2;208;:7;196:19;;244:2;238;234:1;:6;;;;;;:12;226:21;;;;;;267:1;260:8;;;56:220;;;;;:::o;808:129::-;868:7;902:1;896:2;:7;;888:16;;;;;;927:2;922;:7;;;;;;915:14;;808:129;;;;:::o;344:3749:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb14610509578063cac2f6721461056f578063cc364f48146105f3578063dd62ed3e14610697576100ea565b806370a08231146103ca578063713b39091461042257806395d89b4114610486576100ea565b806323b872dd116100c857806323b872dd146101f6578063287112fb1461027c5780632893c5b014610336578063313ce567146103a6576100ea565b806306fdde03146100ef578063095ea7b31461017257806318160ddd146101d8575b600080fd5b6100f761070f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561013757808201518184015260208101905061011c565b50505050905090810190601f1680156101645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101be6004803603604081101561018857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506107ad565b604051808215151515815260200191505060405180910390f35b6101e06108a6565b6040518082815260200191505060405180910390f35b6102626004803603606081101561020c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108ac565b604051808215151515815260200191505060405180910390f35b6102be6004803603602081101561029257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109e1565b60405180806020018281038252838181518152602001915080516000925b818410156103255782846020026020010151600260200280838360005b838110156103145780820151818401526020810190506102f9565b5050505090500192600101926102dc565b925050509250505060405180910390f35b61038c6004803603604081101561034c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c60565b604051808215151515815260200191505060405180910390f35b6103ae61135d565b604051808260ff1660ff16815260200191505060405180910390f35b61040c600480360360208110156103e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611362565b6040518082815260200191505060405180910390f35b61046c6004803603604081101561043857600080fd5b81019080803567ffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506113d3565b604051808215151515815260200191505060405180910390f35b61048e611896565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ce5780820151818401526020810190506104b3565b50505050905090810190601f1680156104fb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105556004803603604081101561051f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611934565b604051808215151515815260200191505060405180910390f35b6105d96004803603606081101561058557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803567ffffffffffffffff16906020019092919050505061194b565b604051808215151515815260200191505060405180910390f35b61061f6004803603602081101561060957600080fd5b8101908080359060200190929190505050611d52565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390f35b6106f9600480360360408110156106ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107a55780601f1061077a576101008083540402835291602001916107a5565b820191906000526020600020905b81548152906001019060200180831161078857829003601f168201915b505050505081565b60008167400000000000000660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60025481565b60006109448267400000000000000660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7890919063ffffffff16565b67400000000000000660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109d6848484611e98565b600190509392505050565b6060600067400000000000000560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050606067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16604051908082528060200260200182016040528015610ad057816020015b610abd613993565b815260200190600190039081610ab55790505b50905060005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16811015610c5557604051806040016040528084600101836780000000000000008110610b6657fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152602001674000000000000004600086600101856780000000000000008110610bc057fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250828281518110610c3d57fe5b60200260200101819052508080600101915050610ad6565b508092505050919050565b600067400000000000000760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc357600080fd5b60008267ffffffffffffffff1611610cda57600080fd5b67fffffffffffffffe610d1683600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67ffffffffffffffff161115610d2b57600080fd5b6000610d616001600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b9050600083820190508473ffffffffffffffffffffffffffffffffffffffff1667400000000000000460006004600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff16680100000000000000008110610dc157fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610efa5760006004600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff16680100000000000000008110610e7a57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1690508167400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550506110e4565b610f0582868361237f565b8167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166780000000000000008110610fc857fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611074600167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b61115e8467400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506111ec8467ffffffffffffffff166002546124bc90919063ffffffff16565b60028190555061122584600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b600360006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051808267ffffffffffffffff16815260200191505060405180910390a38473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd9848488604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a360019250505092915050565b600081565b600067400000000000000560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b600067400000000000000760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461143657600080fd5b8267ffffffffffffffff168267ffffffffffffffff161161145657600080fd5b600061146e6001840367ffffffffffffffff166124db565b90508367ffffffffffffffff168167ffffffffffffffff16111561149157600080fd5b600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905067400000000000000760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461154857600080fd5b8367ffffffffffffffff1667400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1611156115b3576115b284612600565b5b8467ffffffffffffffff168267ffffffffffffffff1610156115d9576115d885612600565b5b6115e58186600061270d565b6000611604868667ffffffffffffffff16612c0d90919063ffffffff16565b90506116258167ffffffffffffffff16600254611e7890919063ffffffff16565b6002819055506116a58167400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd9888885604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a3600067400000000000000460008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001935050505092915050565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561192c5780601f106119015761010080835404028352916020019161192c565b820191906000526020600020905b81548152906001019060200180831161190f57829003601f168201915b505050505081565b6000611941338484611e98565b6001905092915050565b60006119608367ffffffffffffffff16612c41565b61199061198160018467ffffffffffffffff16612c0d90919063ffffffff16565b67ffffffffffffffff16612c41565b8167ffffffffffffffff168367ffffffffffffffff16106119b057600080fd5b60006119e26119d360018567ffffffffffffffff16612c0d90919063ffffffff16565b67ffffffffffffffff166124db565b90508367ffffffffffffffff168167ffffffffffffffff161115611a0557600080fd5b6000611a24858567ffffffffffffffff16612c0d90919063ffffffff16565b905067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aaf57600080fd5b611b298167400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611c128167400000000000000560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051808267ffffffffffffffff16815260200191505060405180910390a38573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d36575060008167ffffffffffffffff16115b15611d4957611d488233888888612c7e565b5b50509392505050565b6000806000611d6084612c41565b611d69846124db565b9150600067400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838260000160149054906101000a900467ffffffffffffffff16935093509350509193909250565b600067400000000000000660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082821115611e8757600080fd5b600082840390508091505092915050565b67fffffffffffffffe811115611ead57600080fd5b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010190506000829050611f798167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506120628167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806121705750600083145b1561217c575050612347565b5b600067400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115612342576000826000678000000000000000811061220357fe5b600491828204019190066008029054906101000a900467ffffffffffffffff169050600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff169050600061228e838367ffffffffffffffff16612c0d90919063ffffffff16565b90508067ffffffffffffffff168467ffffffffffffffff1610156122f0576122e56122cc858367ffffffffffffffff16612c0d90919063ffffffff16565b8367ffffffffffffffff16612c0d90919063ffffffff16565b915060009350612310565b61230d818567ffffffffffffffff16612c0d90919063ffffffff16565b93505b61231d8389898686612c7e565b60008467ffffffffffffffff16141561233a575050505050612347565b50505061217d565b600080fd5b505050565b60008082840190508367ffffffffffffffff168167ffffffffffffffff16101561237557600080fd5b8091505092915050565b600067400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002090508273ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461244c57828160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8167ffffffffffffffff168160000160149054906101000a900467ffffffffffffffff1667ffffffffffffffff16146124ab57818160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b6124b6848386613738565b50505050565b6000808284019050838110156124d157600080fd5b8091505092915050565b600080600190505b6001156125f957600060048468010000000000000000811061250157fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff161461256d5760048368010000000000000000811061254557fe5b600491828204019190066008029054906101000a900467ffffffffffffffff169150506125fb565b600061259561258660108461391290919063ffffffff16565b8561394c90919063ffffffff16565b14156125df576125af60108261391290919063ffffffff16565b9050600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168311156125de57600080fd5b5b6125f281846124bc90919063ffffffff16565b92506124e3565b505b919050565b60006126158267ffffffffffffffff166124db565b9050600067400000000000000460008367ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160000160149054906101000a900467ffffffffffffffff169050838260000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506126c18260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008661270d565b6126cd83826000613738565b6126d8838585613738565b612707848360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361237f565b50505050565b600067400000000000000560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101905060008367ffffffffffffffff16141561290957818167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667800000000000000081106127e857fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612894600167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1661234c90919063ffffffff16565b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050612c08565b60005b67400000000000000560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168111612c02578367ffffffffffffffff168282678000000000000000811061299857fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1667ffffffffffffffff161415612bf55760008367ffffffffffffffff161115612a255782828267800000000000000081106129ef57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550612bee565b612aa0600167400000000000000560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff16612c0d90919063ffffffff16565b67400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508167400000000000000560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff166780000000000000008110612b8957fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1682826780000000000000008110612bbc57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5050612c08565b808060010191505061290c565b50600080fd5b505050565b60008267ffffffffffffffff168267ffffffffffffffff161115612c3057600080fd5b600082840390508091505092915050565b60008114158015612c725750600360009054906101000a900467ffffffffffffffff1667ffffffffffffffff168111155b612c7b57600080fd5b50565b600067400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020905060008160000160149054906101000a900467ffffffffffffffff16905060006004612cef60018767ffffffffffffffff16612c0d90919063ffffffff16565b67ffffffffffffffff16680100000000000000008110612d0b57fe5b600491828204019190066008029054906101000a900467ffffffffffffffff1690508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd043dca46a790b728584c945c971ba64c4e39bdf18b700f0c5e034f11d7acdd98787898903604051808467ffffffffffffffff1681526020018367ffffffffffffffff1681526020018267ffffffffffffffff168152602001935050505060405180910390a38467ffffffffffffffff168867ffffffffffffffff1614156134da578367ffffffffffffffff168267ffffffffffffffff16141561338c57612e068786600061270d565b60008673ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905060008773ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008867ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905081158015612f1a575080155b15612f7857612f2b8860008961270d565b878560000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050613731565b612f848a876000613738565b806130695767400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508567400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061305f838785613738565b5050505050613731565b816131465761307988878961270d565b6130c98a8967400000000000000460008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1661237f565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550505050505050613731565b6131528887600061270d565b67400000000000000460008b67ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff0219169055505067400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1667400000000000000460008567ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061326e83886000613738565b6132bf8667400000000000000460008967ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff166000613738565b61330f8367400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff1685613738565b67400000000000000460008767ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550505050505050613731565b61339885836000613738565b6133a384888461237f565b6133ae87868661270d565b67400000000000000460008967ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff021916905550508573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156134ba576134b281866000613738565b8094506134c7565b6134c68660008761270d565b5b6134d285878661237f565b505050613731565b6134e688836000613738565b848360000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061351c88868a613738565b8367ffffffffffffffff168267ffffffffffffffff1614156136ff578573ffffffffffffffffffffffffffffffffffffffff1667400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156136df576135c886858761270d565b6136198467400000000000000460008767ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff166000613738565b600067400000000000000460008667ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060000160149054906101000a900467ffffffffffffffff16905067400000000000000460008667ffffffffffffffff1667ffffffffffffffff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a81549067ffffffffffffffff02191690555050809450506136ec565b6136eb8660008761270d565b5b6136f785878661237f565b505050613731565b61370b8660008761270d565b61371685878661237f565b6137228760008661270d565b61372d84888461237f565b5050505b5050505050565b61375660018367ffffffffffffffff16612c0d90919063ffffffff16565b91508167ffffffffffffffff168367ffffffffffffffff1614156137ca578060048467ffffffffffffffff1668010000000000000000811061379457fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555061390d565b8060048367ffffffffffffffff166801000000000000000081106137ea57fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000601090505b60011561390b57808367ffffffffffffffff161015613841575061390d565b600061387282613864848767ffffffffffffffff1661396d90919063ffffffff16565b61391290919063ffffffff16565b905061388860108361391290919063ffffffff16565b9150600061389f838361394c90919063ffffffff16565b14156138ab5750613822565b8467ffffffffffffffff1681111561390557826004826801000000000000000081106138d357fe5b600491828204019190066008026101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b50613822565b505b505050565b6000808314156139255760009050613946565b600082840290508284828161393657fe5b041461394157600080fd5b809150505b92915050565b60008082141561395b57600080fd5b81838161396457fe5b06905092915050565b600080821161397b57600080fd5b600082848161398657fe5b0490508091505092915050565b604051806040016040528060029060208202803883398082019150509050509056fea265627a7a7231582034613274c9202ca631da7a6e644eb9d953b8efb02b10d32d5f1ec924995e62df64736f6c63430005100032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x509 JUMPI DUP1 PUSH4 0xCAC2F672 EQ PUSH2 0x56F JUMPI DUP1 PUSH4 0xCC364F48 EQ PUSH2 0x5F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x697 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3CA JUMPI DUP1 PUSH4 0x713B3909 EQ PUSH2 0x422 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x486 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1F6 JUMPI DUP1 PUSH4 0x287112FB EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x2893C5B0 EQ PUSH2 0x336 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3A6 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x172 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1D8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x70F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x137 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x11C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x164 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x7AD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E0 PUSH2 0x8A6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x262 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x8AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2BE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x9E1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD PUSH1 0x0 SWAP3 JUMPDEST DUP2 DUP5 LT ISZERO PUSH2 0x325 JUMPI DUP3 DUP5 PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x314 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2F9 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 PUSH1 0x1 ADD SWAP3 PUSH2 0x2DC JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x38C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC60 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3AE PUSH2 0x135D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x40C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1362 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x46C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x13D3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x48E PUSH2 0x1896 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4CE JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x4B3 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x4FB JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x555 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1934 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5D9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x194B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x61F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1D52 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6F9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1DEA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x7A5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x77A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7A5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x788 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0x4000000000000006 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x944 DUP3 PUSH8 0x4000000000000006 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1E78 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000006 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x9D6 DUP5 DUP5 DUP5 PUSH2 0x1E98 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x60 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xAD0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xABD PUSH2 0x3993 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAB5 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 LT ISZERO PUSH2 0xC55 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH1 0x1 ADD DUP4 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xB66 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH1 0x1 ADD DUP6 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xBC0 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC3D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xAD6 JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000007 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xCC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT PUSH2 0xCDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE PUSH2 0xD16 DUP4 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD61 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 ADD SWAP1 POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 PUSH1 0x4 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0xDC1 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xEFA JUMPI PUSH1 0x0 PUSH1 0x4 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0xE7A JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x10E4 JUMP JUMPDEST PUSH2 0xF05 DUP3 DUP7 DUP4 PUSH2 0x237F JUMP JUMPDEST DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0xFC8 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1074 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x115E DUP5 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x11EC DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x2 SLOAD PUSH2 0x24BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH2 0x1225 DUP5 PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP7 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP5 DUP5 DUP9 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000007 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT PUSH2 0x1456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x146E PUSH1 0x1 DUP5 SUB PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH8 0x4000000000000007 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x15B3 JUMPI PUSH2 0x15B2 DUP5 PUSH2 0x2600 JUMP JUMPDEST JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x15D9 JUMPI PUSH2 0x15D8 DUP6 PUSH2 0x2600 JUMP JUMPDEST JUMPDEST PUSH2 0x15E5 DUP2 DUP7 PUSH1 0x0 PUSH2 0x270D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1604 DUP7 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x1625 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x2 SLOAD PUSH2 0x1E78 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH2 0x16A5 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP9 DUP9 DUP6 PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x192C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1901 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x192C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x190F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1941 CALLER DUP5 DUP5 PUSH2 0x1E98 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1960 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1990 PUSH2 0x1981 PUSH1 0x1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C41 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT PUSH2 0x19B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19E2 PUSH2 0x19D3 PUSH1 0x1 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1A05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A24 DUP6 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B29 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1C12 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x1D36 JUMPI POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND GT JUMPDEST ISZERO PUSH2 0x1D49 JUMPI PUSH2 0x1D48 DUP3 CALLER DUP9 DUP9 DUP9 PUSH2 0x2C7E JUMP JUMPDEST JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D60 DUP5 PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1D69 DUP5 PUSH2 0x24DB JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000006 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1E87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFE DUP2 GT ISZERO PUSH2 0x1EAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP3 SWAP1 POP PUSH2 0x1F79 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2062 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x2170 JUMPI POP PUSH1 0x0 DUP4 EQ JUMPDEST ISZERO PUSH2 0x217C JUMPI POP POP PUSH2 0x2347 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2342 JUMPI PUSH1 0x0 DUP3 PUSH1 0x0 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2203 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x228E DUP4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x22F0 JUMPI PUSH2 0x22E5 PUSH2 0x22CC DUP6 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 SWAP4 POP PUSH2 0x2310 JUMP JUMPDEST PUSH2 0x230D DUP2 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP4 POP JUMPDEST PUSH2 0x231D DUP4 DUP10 DUP10 DUP7 DUP7 PUSH2 0x2C7E JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x233A JUMPI POP POP POP POP POP PUSH2 0x2347 JUMP JUMPDEST POP POP POP PUSH2 0x217D JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x2375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x244C JUMPI DUP3 DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x24AB JUMPI DUP2 DUP2 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH2 0x24B6 DUP5 DUP4 DUP7 PUSH2 0x3738 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x24D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x25F9 JUMPI PUSH1 0x0 PUSH1 0x4 DUP5 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2501 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ PUSH2 0x256D JUMPI PUSH1 0x4 DUP4 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2545 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP POP PUSH2 0x25FB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2595 PUSH2 0x2586 PUSH1 0x10 DUP5 PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH2 0x394C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x25DF JUMPI PUSH2 0x25AF PUSH1 0x10 DUP3 PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 GT ISZERO PUSH2 0x25DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMPDEST PUSH2 0x25F2 DUP2 DUP5 PUSH2 0x24BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 POP PUSH2 0x24E3 JUMP JUMPDEST POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2615 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP4 DUP3 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x26C1 DUP3 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP7 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x26CD DUP4 DUP3 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x26D8 DUP4 DUP6 DUP6 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x2707 DUP5 DUP4 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x237F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000005 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2909 JUMPI DUP2 DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x27E8 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2894 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x234C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x2C08 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT PUSH2 0x2C02 JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2998 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2BF5 JUMPI PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2A25 JUMPI DUP3 DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x29EF JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2BEE JUMP JUMPDEST PUSH2 0x2AA0 PUSH1 0x1 PUSH8 0x4000000000000005 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 PUSH8 0x4000000000000005 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x8 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2B89 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 DUP3 PUSH8 0x8000000000000000 DUP2 LT PUSH2 0x2BBC JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP POP PUSH2 0x2C08 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x290C JUMP JUMPDEST POP PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2C30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EQ ISZERO DUP1 ISZERO PUSH2 0x2C72 JUMPI POP PUSH1 0x3 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO JUMPDEST PUSH2 0x2C7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x4 PUSH2 0x2CEF PUSH1 0x1 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x2D0B JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD043DCA46A790B728584C945C971BA64C4E39BDF18B700F0C5E034F11D7ACDD9 DUP8 DUP8 DUP10 DUP10 SUB PUSH1 0x40 MLOAD DUP1 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x34DA JUMPI DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x338C JUMPI PUSH2 0x2E06 DUP8 DUP7 PUSH1 0x0 PUSH2 0x270D JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP9 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x2F1A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x2F78 JUMPI PUSH2 0x2F2B DUP9 PUSH1 0x0 DUP10 PUSH2 0x270D JUMP JUMPDEST DUP8 DUP6 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x2F84 DUP11 DUP8 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST DUP1 PUSH2 0x3069 JUMPI PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x305F DUP4 DUP8 DUP6 PUSH2 0x3738 JUMP JUMPDEST POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST DUP2 PUSH2 0x3146 JUMPI PUSH2 0x3079 DUP9 DUP8 DUP10 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x30C9 DUP11 DUP10 PUSH8 0x4000000000000004 PUSH1 0x0 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x237F JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x3152 DUP9 DUP8 PUSH1 0x0 PUSH2 0x270D JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP12 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x326E DUP4 DUP9 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x32BF DUP7 PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x330F DUP4 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x3738 JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP POP POP POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x3398 DUP6 DUP4 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH2 0x33A3 DUP5 DUP9 DUP5 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x33AE DUP8 DUP7 DUP7 PUSH2 0x270D JUMP JUMPDEST PUSH8 0x4000000000000004 PUSH1 0x0 DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x34BA JUMPI PUSH2 0x34B2 DUP2 DUP7 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST DUP1 SWAP5 POP PUSH2 0x34C7 JUMP JUMPDEST PUSH2 0x34C6 DUP7 PUSH1 0x0 DUP8 PUSH2 0x270D JUMP JUMPDEST JUMPDEST PUSH2 0x34D2 DUP6 DUP8 DUP7 PUSH2 0x237F JUMP JUMPDEST POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x34E6 DUP9 DUP4 PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST DUP5 DUP4 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x351C DUP9 DUP7 DUP11 PUSH2 0x3738 JUMP JUMPDEST DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x36FF JUMPI DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x36DF JUMPI PUSH2 0x35C8 DUP7 DUP6 DUP8 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x3619 DUP5 PUSH8 0x4000000000000004 PUSH1 0x0 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3738 JUMP JUMPDEST PUSH1 0x0 PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH8 0x4000000000000004 PUSH1 0x0 DUP7 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP DUP1 SWAP5 POP POP PUSH2 0x36EC JUMP JUMPDEST PUSH2 0x36EB DUP7 PUSH1 0x0 DUP8 PUSH2 0x270D JUMP JUMPDEST JUMPDEST PUSH2 0x36F7 DUP6 DUP8 DUP7 PUSH2 0x237F JUMP JUMPDEST POP POP POP PUSH2 0x3731 JUMP JUMPDEST PUSH2 0x370B DUP7 PUSH1 0x0 DUP8 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x3716 DUP6 DUP8 DUP7 PUSH2 0x237F JUMP JUMPDEST PUSH2 0x3722 DUP8 PUSH1 0x0 DUP7 PUSH2 0x270D JUMP JUMPDEST PUSH2 0x372D DUP5 DUP9 DUP5 PUSH2 0x237F JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3756 PUSH1 0x1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x2C0D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x37CA JUMPI DUP1 PUSH1 0x4 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x3794 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x390D JUMP JUMPDEST DUP1 PUSH1 0x4 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x37EA JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x10 SWAP1 POP JUMPDEST PUSH1 0x1 ISZERO PUSH2 0x390B JUMPI DUP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x3841 JUMPI POP PUSH2 0x390D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3872 DUP3 PUSH2 0x3864 DUP5 DUP8 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x396D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3888 PUSH1 0x10 DUP4 PUSH2 0x3912 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x389F DUP4 DUP4 PUSH2 0x394C SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST EQ ISZERO PUSH2 0x38AB JUMPI POP PUSH2 0x3822 JUMP JUMPDEST DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 GT ISZERO PUSH2 0x3905 JUMPI DUP3 PUSH1 0x4 DUP3 PUSH9 0x10000000000000000 DUP2 LT PUSH2 0x38D3 JUMPI INVALID JUMPDEST PUSH1 0x4 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x8 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH8 0xFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST POP PUSH2 0x3822 JUMP JUMPDEST POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x3925 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x3946 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x3936 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x3941 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EQ ISZERO PUSH2 0x395B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0x3964 JUMPI INVALID JUMPDEST MOD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x397B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x3986 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP INVALID LOG2 PUSH6 0x627A7A723158 KECCAK256 CALLVALUE PUSH2 0x3274 0xC9 KECCAK256 0x2C 0xA6 BALANCE 0xDA PUSH27 0x6E644EB9D953B8EFB02B10D32D5F1EC924995E62DF64736F6C6343 STOP SDIV LT STOP ORIGIN ",
"sourceMap": "344:3749:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:3749:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;801:18:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;801:18:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4629:208:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;853:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5454:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5454:295:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4042:378;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4042:378:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4042:378:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1057:1133:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1057:1133:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;760:34:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3202:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3202:117:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2557:1000:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2557:1000:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;826:20:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;826:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5012:146;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5012:146:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5990:868;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5990:868:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3511:360;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3511:360:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2864:194;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2864:194:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;801:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4629:208::-;4698:4;4747:6;4715:7;:19;4723:10;4715:19;;;;;;;;;;;;;;;:29;4735:8;4715:29;;;;;;;;;;;;;;;:38;;;;4790:8;4769:38;;4778:10;4769:38;;;4800:6;4769:38;;;;;;;;;;;;;;;;;;4825:4;4818:11;;4629:208;;;;:::o;853:26::-;;;;:::o;5454:295::-;5590:4;5641:38;5672:6;5641:7;:14;5649:5;5641:14;;;;;;;;;;;;;;;:26;5656:10;5641:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;5612:7;:14;5620:5;5612:14;;;;;;;;;;;;;;;:26;5627:10;5612:26;;;;;;;;;;;;;;;:67;;;;5690:29;5700:5;5707:3;5712:6;5690:9;:29::i;:::-;5737:4;5730:11;;5454:295;;;;;:::o;4042:378::-;4099:18;4130:17;4150:8;:16;4159:6;4150:16;;;;;;;;;;;;;;;4130:36;;4177:26;4222:8;:16;4231:6;4222:16;;;;;;;;;;;;;;;:23;;;;;;;;;;;;4206:40;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4177:69;;4262:9;4257:131;4277:8;:16;4286:6;4277:16;;;;;;;;;;;;;;;:23;;;;;;;;;;;;4273:27;;:1;:27;4257:131;;;4322:54;;;;;;;;4336:1;:8;;4345:1;4336:11;;;;;;;;;;;;;;;;;;;;;;;;;;;4322:54;;;;;;;;4349:8;:21;4358:1;:8;;4367:1;4358:11;;;;;;;;;;;;;;;;;;;;;;;;;;;4349:21;;;;;;;;;;;;;;;:26;;;;;;;;;;;;4322:54;;;;;;;:7;4330:1;4322:10;;;;;;;;;;;;;:54;;;;4302:3;;;;;;;4257:131;;;;4405:7;4398:14;;;;4042:378;;;:::o;1057:1133:2:-;1121:4;1160:5;;;;;;;;;;;1146:19;;:10;:19;;;1138:28;;;;;;1213:1;1204:6;:10;;;1196:19;;;;;;507:11:1;1249:22:2;1264:6;1249:10;;;;;;;;;;;:14;;;;:22;;;;:::i;:::-;:41;;;;1241:50;;;;;;1322:13;1338:17;1353:1;1338:10;;;;;;;;;;;:14;;;;:17;;;;:::i;:::-;1322:33;;1366:12;1390:6;1381;:15;1366:30;;1449:7;1411:45;;:8;:28;1420:6;1427:10;;;;;;;;;;;1420:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1411:28;;;;;;;;;;;;;;;:34;;;;;;;;;;;;:45;;;1407:454;;;1518:15;1536:6;1543:10;;;;;;;;;;;1536:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1518:36;;1595:5;1569:8;:18;1578:8;1569:18;;;;;;;;;;;;;;;:23;;;:31;;;;;;;;;;;;;;;;;;1407:454;;;;1669:33;1679:6;1687:7;1696:5;1669:9;:33::i;:::-;1770:6;1717:8;:17;1726:7;1717:17;;;;;;;;;;;;;;;:24;;1742:8;:17;1751:7;1742:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;1717:50;;;;;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;1818:31;1847:1;1818:8;:17;1827:7;1818:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;:28;;;;:31;;;;:::i;:::-;1791:8;:17;1800:7;1791:17;;;;;;;;;;;;;;;:24;;;:58;;;;;;;;;;;;;;;;;;1407:454;1899:37;1929:6;1899:8;:17;1908:7;1899:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;:29;;;;:37;;;;:::i;:::-;1871:8;:17;1880:7;1871:17;;;;;;;;;;;;;;;:25;;;:65;;;;;;;;;;;;;;;;;;1961:23;1977:6;1961:23;;:11;;:15;;:23;;;;:::i;:::-;1947:11;:37;;;;2008:22;2023:6;2008:10;;;;;;;;;;;:14;;;;:22;;;;:::i;:::-;1995:10;;:35;;;;;;;;;;;;;;;;;;2069:7;2046:39;;565:1:1;2046:39:2;;;2078:6;2046:39;;;;;;;;;;;;;;;;;;;;2129:7;2101:59;;565:1:1;2101:59:2;;;2138:6;2146:5;2153:6;2101:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2178:4;2171:11;;;;1057:1133;;;;:::o;760:34:1:-;793:1;760:34;:::o;3202:117::-;3260:7;3287:8;:16;3296:6;3287:16;;;;;;;;;;;;;;;:24;;;;;;;;;;;;3280:31;;;;3202:117;;;:::o;2557:1000:2:-;2618:4;2657:5;;;;;;;;;;;2643:19;;:10;:19;;;2635:28;;;;;;2709:6;2701:14;;:5;:14;;;2693:23;;;;;;2742:15;2760:20;2778:1;2772:5;:7;2760:20;;:11;:20::i;:::-;2742:38;;2811:6;2799:18;;:8;:18;;;;2791:27;;;;;;2853:15;2871:8;:18;2880:8;2871:18;;;;;;;;;;;;;;;:24;;;;;;;;;;;;2853:42;;2925:5;;;;;;;;;;;2914:16;;:7;:16;;;2906:25;;;;;;2998:5;2972:31;;:8;:18;2981:8;2972:18;;;;;;;;;;;;;;;:23;;;;;;;;;;;;:31;;;2968:82;;;3020:18;3032:5;3020:11;:18::i;:::-;2968:82;3075:6;3064:17;;:8;:17;;;3060:69;;;3098:19;3110:6;3098:11;:19::i;:::-;3060:69;3139:42;3162:7;3171:6;3179:1;3139:22;:42::i;:::-;3192:13;3208:17;3218:6;3208:5;:9;;;;:17;;;;:::i;:::-;3192:33;;3250:23;3266:6;3250:23;;:11;;:15;;:23;;;;:::i;:::-;3236:11;:37;;;;3312;3342:6;3312:8;:17;3321:7;3312:17;;;;;;;;;;;;;;;:25;;;;;;;;;;;;:29;;;;:37;;;;:::i;:::-;3284:8;:17;3293:7;3284:17;;;;;;;;;;;;;;;:25;;;:65;;;;;;;;;;;;;;;;;;565:1:1;3365:39:2;;3374:7;3365:39;;;3397:6;3365:39;;;;;;;;;;;;;;;;;;;;565:1:1;3420:59:2;;3434:7;3420:59;;;3457:6;3465:5;3472:6;3420:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;565:1:1;3490:8:2;:16;3499:6;3490:16;;;;;;;;;;;;;;;:22;;;:37;;;;;;;;;;;;;;;;;;3545:4;3538:11;;;;;2557:1000;;;;:::o;826:20:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5012:146::-;5077:4;5094:34;5104:10;5116:3;5121:6;5094:9;:34::i;:::-;5146:4;5139:11;;5012:146;;;;:::o;5990:868::-;6125:4;6147:20;6160:6;6147:20;;:12;:20::i;:::-;6178:26;6191:12;6201:1;6191:5;:9;;;;:12;;;;:::i;:::-;6178:26;;:12;:26::i;:::-;6232:5;6223:14;;:6;:14;;;6215:23;;;;;;6270:15;6288:25;6300:12;6310:1;6300:5;:9;;;;:12;;;;:::i;:::-;6288:25;;:11;:25::i;:::-;6270:43;;6344:6;6332:18;;:8;:18;;;;6324:27;;;;;;6388:13;6404:17;6414:6;6404:5;:9;;;;:17;;;;:::i;:::-;6388:33;;6456:8;:18;6465:8;6456:18;;;;;;;;;;;;;;;:24;;;;;;;;;;;;6442:38;;:10;:38;;;6434:47;;;;;;6553:40;6586:6;6553:8;:20;6562:10;6553:20;;;;;;;;;;;;;;;:28;;;;;;;;;;;;:32;;;;:40;;;;:::i;:::-;6522:8;:20;6531:10;6522:20;;;;;;;;;;;;;;;:28;;;:71;;;;;;;;;;;;;;;;;;6628:33;6654:6;6628:8;:13;6637:3;6628:13;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:25;;;;:33;;;;:::i;:::-;6604:8;:13;6613:3;6604:13;;;;;;;;;;;;;;;:21;;;:57;;;;;;;;;;;;;;;;;;6700:3;6679:33;;6688:10;6679:33;;;6705:6;6679:33;;;;;;;;;;;;;;;;;;;;6741:3;6727:17;;:10;:17;;;;:31;;;;;6757:1;6748:6;:10;;;6727:31;6723:126;;;6775:62;6796:8;6806:10;6818:3;6823:6;6831:5;6775:20;:62::i;:::-;6723:126;5990:868;;;;;;;:::o;3511:360::-;3623:14;3652:13;3680:12;3720:18;3733:4;3720:12;:18::i;:::-;3758:17;3770:4;3758:11;:17::i;:::-;3749:26;;3786:15;3804:8;:16;3813:6;3804:16;;;;;;;;;;;;;;;3786:34;;3839:1;:7;;;;;;;;;;;;3848:6;3856:1;:6;;;;;;;;;;;;3831:32;;;;;;;3511:360;;;;;:::o;2864:194::-;2993:7;3025;:15;3033:6;3025:15;;;;;;;;;;;;;;;:25;3041:8;3025:25;;;;;;;;;;;;;;;;3018:32;;2864:194;;;;:::o;446:174:3:-;506:7;540:2;534;:8;;526:17;;;;;;572:9;589:2;584;:7;572:19;;611:1;604:8;;;446:174;;;;:::o;7108:1137:1:-;507:11;7202:9;:28;;7194:37;;;;;;7268;7308:8;:15;7317:5;7308:15;;;;;;;;;;;;;;;:22;;7268:62;;7341:13;7364:9;7341:33;;7413:35;7441:6;7413:8;:15;7422:5;7413:15;;;;;;;;;;;;;;;:23;;;;;;;;;;;;:27;;;;:35;;;;:::i;:::-;7387:8;:15;7396:5;7387:15;;;;;;;;;;;;;;;:23;;;:61;;;;;;;;;;;;;;;;;;7483:33;7509:6;7483:8;:13;7492:3;7483:13;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:25;;;;:33;;;;:::i;:::-;7459:8;:13;7468:3;7459:13;;;;;;;;;;;;;;;:21;;;:57;;;;;;;;;;;;;;;;;;7550:3;7534:31;;7543:5;7534:31;;;7555:9;7534:31;;;;;;;;;;;;;;;;;;7589:3;7580:12;;:5;:12;;;:30;;;;7609:1;7596:9;:14;7580:30;7576:69;;;7627:7;;;;7576:69;7655:544;7687:1;7662:8;:15;7671:5;7662:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:26;;;7655:544;;;7705:13;7721:1;7723;7721:4;;;;;;;;;;;;;;;;;;;;;;;;;;;7705:20;;7740:12;7755:8;:16;7764:6;7755:16;;;;;;;;;;;;;;;:21;;;;;;;;;;;;7740:36;;7791:14;7808:17;7818:6;7808:5;:9;;;;:17;;;;:::i;:::-;7791:34;;7853:7;7844:16;;:6;:16;;;7840:206;;;7889:30;7899:19;7911:6;7899:7;:11;;;;:19;;;;:::i;:::-;7889:5;:9;;;;:30;;;;:::i;:::-;7881:38;;7947:1;7938:10;;7840:206;;;8011:19;8022:7;8011:6;:10;;;;:19;;;;:::i;:::-;8002:28;;7840:206;8060:55;8081:6;8089:5;8096:3;8101:6;8109:5;8060:20;:55::i;:::-;8144:1;8134:6;:11;;;8130:58;;;8166:7;;;;;;;8130:58;7655:544;;;;;;8209:8;;;7108:1137;;;;:::o;1534:168:3:-;1592:6;1611:8;1627:2;1622;:7;1611:18;;1653:2;1648:7;;:1;:7;;;;1640:16;;;;;;1693:1;1686:8;;;1534:168;;;;:::o;12623:281:1:-;12709:15;12727:8;:18;12736:8;12727:18;;;;;;;;;;;;;;;12709:36;;12771:6;12760:17;;:1;:7;;;;;;;;;;;;:17;;;12756:39;;12789:6;12779:1;:7;;;:16;;;;;;;;;;;;;;;;;;12756:39;12820:5;12810:15;;:1;:6;;;;;;;;;;;;:15;;;12806:35;;12836:5;12827:1;:6;;;:14;;;;;;;;;;;;;;;;;;12806:35;12852:44;12870:8;12880:5;12887:8;12852:17;:44::i;:::-;12623:281;;;;:::o;628:172:3:-;688:7;708:9;725:2;720;:7;708:19;;751:2;746:1;:7;;738:16;;;;;;791:1;784:8;;;628:172;;;;:::o;15139:466:1:-;15197:6;15216:18;15237:1;15216:22;;15249:349;15256:4;15249:349;;;15297:1;15281:6;15288:4;15281:12;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;15277:42;;15307:6;15314:4;15307:12;;;;;;;;;;;;;;;;;;;;;;;;;;;15300:19;;;;;15277:42;15386:1;15338:44;15347:34;702:2;15347:10;:14;;:34;;;;:::i;:::-;15338:4;:8;;:44;;;;:::i;:::-;:49;15334:211;;;15421:34;702:2;15421:10;:14;;:34;;;;:::i;:::-;15408:47;;15490:10;;;;;;;;;;;15482:18;;:4;:18;;15474:27;;;;;;15334:211;15566:20;15575:10;15566:4;:8;;:20;;;;:::i;:::-;15559:27;;15249:349;;;15139:466;;;;;:::o;3681:407:2:-;3737:15;3755:19;3767:6;3755:19;;:11;:19::i;:::-;3737:37;;3785:15;3803:8;:18;3812:8;3803:18;;;;;;;;;;;;;;;3785:36;;3832:12;3847:1;:6;;;;;;;;;;;;3832:21;;3873:6;3864:1;:6;;;:15;;;;;;;;;;;;;;;;;;3890:42;3913:1;:7;;;;;;;;;;;;3922:1;3925:6;3890:22;:42::i;:::-;3943:37;3961:8;3971:5;3978:1;3943:17;:37::i;:::-;3991:45;4009:8;4019:6;4027:8;3991:17;:45::i;:::-;4047:33;4057:6;4065:1;:7;;;;;;;;;;;;4074:5;4047:9;:33::i;:::-;3681:407;;;;:::o;13101:957:1:-;13242:37;13282:8;:15;13291:5;13282:15;;;;;;;;;;;;;;;:22;;13242:62;;13327:1;13319:4;:9;;;13315:209;;;13418:4;13390:1;13392:8;:15;13401:5;13392:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;13390:25;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13462:29;13489:1;13462:8;:15;13471:5;13462:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:26;;;;:29;;;;:::i;:::-;13437:8;:15;13446:5;13437:15;;;;;;;;;;;;;;;:22;;;:54;;;;;;;;;;;;;;;;;;13506:7;;;13315:209;13539:9;13534:478;13555:8;:15;13564:5;13555:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;13550:27;;:1;:27;13534:478;;13611:4;13603:12;;:1;13605;13603:4;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;;;13599:402;;;13647:1;13640:4;:8;;;13636:325;;;13730:4;13723:1;13725;13723:4;;;;;;;;;;;;;;;;;;:11;;;;;;;;;;;;;;;;;;13636:325;;;13857:29;13884:1;13857:8;:15;13866:5;13857:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;:26;;;;:29;;;;:::i;:::-;13832:8;:15;13841:5;13832:15;;;;;;;;;;;;;;;:22;;;:54;;;;;;;;;;;;;;;;;;13916:1;13918:8;:15;13927:5;13918:15;;;;;;;;;;;;;;;:22;;;;;;;;;;;;13916:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13909:1;13911;13909:4;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13636:325;13979:7;;;;13599:402;13579:3;;;;;;;13534:478;;;;14022:8;;;13101:957;;;;:::o;1356:170:3:-;1414:6;1447:2;1441:8;;:2;:8;;;;1433:17;;;;;;1479:8;1495:2;1490;:7;1479:18;;1517:1;1510:8;;;1356:170;;;;:::o;2544:137:1:-;2621:1;2613:4;:9;;:31;;;;;2634:10;;;;;;;;;;;2626:18;;:4;:18;;2613:31;2605:40;;;;;;2544:137;:::o;8552:3775::-;8742:15;8760:8;:18;8769:8;8760:18;;;;;;;;;;;;;;;8742:36;;8789:17;8809:1;:6;;;;;;;;;;;;8789:26;;8826:12;8841:6;8848:13;8859:1;8848:6;:10;;;;:13;;;;:::i;:::-;8841:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8826:36;;8899:3;8878:54;;8892:5;8878:54;;;8904:6;8912:5;8925:6;8919:5;:12;8878:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8961:6;8949:18;;:8;:18;;;8945:2319;;;9055:5;9041:19;;:10;:19;;;9037:1591;;;9081:40;9104:5;9111:6;9119:1;9081:22;:40::i;:::-;9140:10;9179:3;9154:28;;:8;:15;9163:5;9154:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;9140:43;;9202:11;9242:3;9217:28;;:8;:15;9226:5;9217:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;9202:44;;9327:5;9326:6;:17;;;;;9337:6;9336:7;9326:17;9322:169;;;9368:38;9391:3;9396:1;9399:6;9368:22;:38::i;:::-;9439:3;9429:1;:7;;;:13;;;;;;;;;;;;;;;;;;9465:7;;;;;;;9322:169;9509:37;9527:8;9537:5;9544:1;9509:17;:37::i;:::-;9621:6;9616:222;;9659:8;:18;9668:8;9659:18;;;;;;;;;;;;;;;;9652:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9723:5;9700:8;:15;9709:5;9700:15;;;;;;;;;;;;;;;:20;;;:28;;;;;;;;;;;;;;;;;;9751:38;9769:5;9776;9783;9751:17;:38::i;:::-;9812:7;;;;;;;9616:222;9908:5;9903:240;;9938:42;9961:3;9966:5;9973:6;9938:22;:42::i;:::-;10003:46;10013:8;10023:3;10028:8;:15;10037:5;10028:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10003:9;:46::i;:::-;10079:8;:15;10088:5;10079:15;;;;;;;;;;;;;;;;10072:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10117:7;;;;;;;9903:240;10209:37;10232:3;10237:5;10244:1;10209:22;:37::i;:::-;10272:8;:18;10281:8;10272:18;;;;;;;;;;;;;;;;10265:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10332:8;:15;10341:5;10332:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10309:8;:15;10318:5;10309:15;;;;;;;;;;;;;;;:20;;;:43;;;;;;;;;;;;;;;;;;10371:35;10389:5;10396:6;10404:1;10371:17;:35::i;:::-;10425:49;10443:5;10450:8;:15;10459:5;10450:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10472:1;10425:17;:49::i;:::-;10493:53;10511:5;10518:8;:15;10527:5;10518:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;10540:5;10493:17;:53::i;:::-;10572:8;:15;10581:5;10572:15;;;;;;;;;;;;;;;;10565:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10606:7;;;;;;;9037:1591;10719:40;10737:6;10745:10;10757:1;10719:17;:40::i;:::-;10774:35;10784:5;10791;10798:10;10774:9;:35::i;:::-;10824:44;10847:5;10854:6;10862:5;10824:22;:44::i;:::-;10890:8;:18;10899:8;10890:18;;;;;;;;;;;;;;;;10883:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11001:3;10976:28;;:8;:15;10985:5;10976:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;10972:216;;;11025:35;11043:5;11050:6;11058:1;11025:17;:35::i;:::-;11088:5;11079:14;;10972:216;;;11134:38;11157:3;11162:1;11165:6;11134:22;:38::i;:::-;10972:216;11202:29;11212:6;11220:3;11225:5;11202:9;:29::i;:::-;11246:7;;;;;8945:2319;11327:42;11345:8;11355:10;11367:1;11327:17;:42::i;:::-;11389:6;11380:1;:6;;;:15;;;;;;;;;;;;;;;;;;11406:45;11424:8;11434:6;11442:8;11406:17;:45::i;:::-;11545:5;11531:19;;:10;:19;;;11527:544;;;11639:3;11614:28;;:8;:15;11623:5;11614:15;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:28;;;11610:385;;;11663:42;11686:3;11691:5;11698:6;11663:22;:42::i;:::-;11724:49;11742:5;11749:8;:15;11758:5;11749:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;11771:1;11724:17;:49::i;:::-;11792:12;11807:8;:15;11816:5;11807:15;;;;;;;;;;;;;;;:20;;;;;;;;;;;;11792:35;;11853:8;:15;11862:5;11853:15;;;;;;;;;;;;;;;;11846:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11895:5;11887:13;;11610:385;;;;11941:38;11964:3;11969:1;11972:6;11941:22;:38::i;:::-;11610:385;12009:29;12019:6;12027:3;12032:5;12009:9;:29::i;:::-;12053:7;;;;;11527:544;12145:38;12168:3;12173:1;12176:6;12145:22;:38::i;:::-;12194:29;12204:6;12212:3;12217:5;12194:9;:29::i;:::-;12234:39;12257:5;12264:1;12267:5;12234:22;:39::i;:::-;12284:35;12294:5;12301;12308:10;12284:9;:35::i;:::-;8552:3775;;;;;;;;;:::o;14259:614::-;14358:12;14368:1;14358:5;:9;;;;:12;;;;:::i;:::-;14350:20;;14395:5;14385:15;;:6;:15;;;14381:92;;;14434:6;14417;14424;14417:14;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14455:7;;14381:92;14499:6;14483;14490:5;14483:13;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14516:17;702:2;14516:38;;14565:301;14572:4;14565:301;;;14605:9;14597:5;:17;;;14593:30;;;14616:7;;;14593:30;14637:9;14649:44;14683:9;14649:29;14668:9;14657:5;14649:14;;:18;;:29;;;;:::i;:::-;:33;;:44;;;;:::i;:::-;14637:56;;14722:33;702:2;14722:9;:13;;:33;;;;:::i;:::-;14710:45;;14794:1;14774:16;14780:9;14774:1;:5;;:16;;;;:::i;:::-;:21;14770:35;;;14797:8;;;14770:35;14828:6;14824:10;;:1;:10;14820:34;;;14848:6;14836;14843:1;14836:9;;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;14820:34;14565:301;;;;14259:614;;;;;:::o;56:220:3:-;116:7;146:1;140:2;:7;136:48;;;171:1;164:8;;;;136:48;196:9;213:2;208;:7;196:19;;244:2;238;234:1;:6;;;;;;:12;226:21;;;;;;267:1;260:8;;;56:220;;;;;:::o;808:129::-;868:7;902:1;896:2;:7;;888:16;;;;;;927:2;922;:7;;;;;;915:14;;808:129;;;;:::o;284:154::-;344:7;377:1;372:2;:6;364:15;;;;;;390:9;407:2;402;:7;;;;;;390:19;;429:1;422:8;;;284:154;;;;:::o;344:3749:2:-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;344:3749:2;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2965200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"allowance(address,address)": "1409",
"approve(address,uint256)": "22414",
"balanceOf(address)": "1267",
"burn(uint64,uint64)": "infinite",
"decimals()": "306",
"getRange(uint256)": "infinite",
"mint(address,uint64)": "infinite",
"name()": "infinite",
"rangesOf(address)": "infinite",
"symbol()": "infinite",
"totalSupply()": "1073",
"transfer(address,uint256)": "infinite",
"transferFrom(address,address,uint256)": "infinite",
"transferRange(address,uint64,uint64)": "infinite"
},
"internal": {
"_splitRange(uint64)": "infinite"
}
},
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"burn(uint64,uint64)": "713b3909",
"decimals()": "313ce567",
"getRange(uint256)": "cc364f48",
"mint(address,uint64)": "2893c5b0",
"name()": "06fdde03",
"rangesOf(address)": "287112fb",
"symbol()": "95d89b41",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd",
"transferRange(address,uint64,uint64)": "cac2f672"
}
},
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint64",
"name": "_totalSupply",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "start",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stop",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TransferRange",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"name": "burn",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_idx",
"type": "uint256"
}
],
"name": "getRange",
"outputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint64",
"name": "_value",
"type": "uint64"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "rangesOf",
"outputs": [
{
"internalType": "uint64[2][]",
"name": "",
"type": "uint64[2][]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"name": "transferRange",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.5.16+commit.9c3226ce"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
},
{
"internalType": "uint64",
"name": "_totalSupply",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "start",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stop",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TransferRange",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"name": "burn",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "_idx",
"type": "uint256"
}
],
"name": "getRange",
"outputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint64",
"name": "_value",
"type": "uint64"
}
],
"name": "mint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "rangesOf",
"outputs": [
{
"internalType": "uint64[2][]",
"name": "",
"type": "uint64[2][]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_from",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint64",
"name": "_start",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_stop",
"type": "uint64"
}
],
"name": "transferRange",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"author": "Ben Hauser - @iamdefinitelyahumanwith guidance from Gabriel Shapiro - @lex-node",
"details": "Expands upon the ERC20 token standard https://theethereum.wiki/w/index.php/ERC20_Token_Standard",
"methods": {
"allowance(address,address)": {
"params": {
"_owner": "Owner of the tokens",
"_spender": "Spender of the tokens"
},
"return": "integer"
},
"approve(address,uint256)": {
"params": {
"_spender": "Address approved to transfer tokens",
"_value": "Amount approved for transfer"
},
"return": "bool success"
},
"balanceOf(address)": {
"params": {
"_owner": "Address of balance to query"
},
"return": "integer"
},
"burn(uint64,uint64)": {
"details": "Only the owner can burn tokens Only tokens held by the owner can be burned Cannot burn multiple ranges in a single call",
"params": {
"_start": "Start index of range to burn",
"_stop": "Stop index of range to burn"
},
"return": "Bool success"
},
"constructor": {
"params": {
"_name": "Token Name",
"_symbol": "Token symbol",
"_totalSupply": "Total supply (assigned to msg.sender)"
}
},
"getRange(uint256)": {
"params": {
"_idx": "Token index number"
},
"return": "owner, start of range, stop of range, time restriction, tag"
},
"mint(address,uint64)": {
"details": "Only the owner can mint tokens",
"params": {
"_target": "Address to assign new tokens to",
"_value": "Number of tokens to mint"
},
"return": "Bool success"
},
"rangesOf(address)": {
"params": {
"_owner": "Address to query"
},
"return": "Array of [(start, stop),..]"
},
"transfer(address,uint256)": {
"params": {
"_to": "Recipient",
"_value": "Amount being transferred"
},
"return": "bool success"
},
"transferFrom(address,address,uint256)": {
"details": "This will transfer tokens starting from balance.ranges[0]",
"params": {
"_from": "Sender address",
"_to": "Recipient address",
"_value": "Number of tokens to send"
},
"return": "bool success"
},
"transferRange(address,uint64,uint64)": {
"params": {
"_start": "Transfer start index",
"_stop": "Transfer stop index",
"_to": "Recipient address"
},
"return": "bool success"
}
},
"title": "Mintable/Burnable Non-Fungible ERC20"
},
"userdoc": {
"methods": {
"allowance(address,address)": {
"notice": "ERC20 allowance standard"
},
"approve(address,uint256)": {
"notice": "ERC20 approve standard"
},
"balanceOf(address)": {
"notice": "ERC20 balanceOf standard"
},
"burn(uint64,uint64)": {
"notice": "Burns tokens"
},
"constructor": "constructor method",
"getRange(uint256)": {
"notice": "Fetch information about a range"
},
"mint(address,uint64)": {
"notice": "Mints new tokens"
},
"rangesOf(address)": {
"notice": "Fetch the token ranges owned by an address"
},
"transfer(address,uint256)": {
"notice": "ERC20 transfer standard"
},
"transferFrom(address,address,uint256)": {
"notice": "ERC20 transferFrom standard"
},
"transferRange(address,uint64,uint64)": {
"notice": "transfer tokens with a specific index range"
}
}
}
},
"settings": {
"compilationTarget": {
"contracts/NFTokenMintable.sol": "NFTokenMintable"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ERC20Interface.sol": {
"keccak256": "0x1c16d32da2453f516a2cab3f711d41fb8e5bb85e4ef199aa09f810e1468beb9c",
"urls": [
"bzz-raw://47823620d41acb2325dd4b9fab5225273186b57c4825474bd7da12b3575455b3",
"dweb:/ipfs/QmZQVZJw5M8Mg6h2uwDDZuH8Zm1oTPVZShX1f6Dvg8hU3u"
]
},
"contracts/NFToken.sol": {
"keccak256": "0xc072e9a6ef928b44f3b0f19cb74e533e0cb96052834c3cf50efd1ca27aa03af2",
"urls": [
"bzz-raw://d81c700765440980fa68e0c1cb79d2c3c8976e0332b5388e65eaaf0f1051dfce",
"dweb:/ipfs/QmVBSa3yobfNXedeedPYx6nmb3EXp7n8naXDQjuYyp2W3A"
]
},
"contracts/NFTokenMintable.sol": {
"keccak256": "0x5f7d9130bc25ad99cc984cf8d230758a95d0a54566e685a8a92a0055a94b3d83",
"urls": [
"bzz-raw://161ccb7c0739af9e8f51b76ace788240e85e086e8c7a37954dbb11b1e3d18e4b",
"dweb:/ipfs/QmQvD2ho1q2fy7uiP9d348A9hUWiteYojqsyeF6YUTfbT9"
]
},
"contracts/SafeMath.sol": {
"keccak256": "0xaa30e53591ae085179e467d7f55d37e82d36549a12e246e1c576117b45af8130",
"urls": [
"bzz-raw://b4395ae1dda7a74dbd351232c08d34661c59d9c1b7ca2ada6d2c8705f9653597",
"dweb:/ipfs/QmXZyNSLvDMj9SCNwNreN3J6TZh3F8Fts6CFeBGKsQUdA7"
]
}
},
"version": 1
}
pragma solidity 0.5.16;
/**
@title ERC Token Standard #20 Interface
@notice https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
*/
interface ERC20Interface {
function totalSupply() external view returns (uint);
function balanceOf(address tokenOwner) external view returns (uint balance);
function allowance(address tokenOwner, address spender) external view returns (uint remaining);
function transfer(address to, uint tokens) external returns (bool success);
function approve(address spender, uint tokens) external returns (bool success);
function transferFrom(address from, address to, uint tokens) external returns (bool success);
event Transfer(address indexed from, address indexed to, uint tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}
pragma solidity 0.5.16;
import "./SafeMath.sol";
import "./ERC20Interface.sol";
/**
@title Non-Fungible ERC20
@author Ben Hauser - @iamdefinitelyahuman
@author with guidance from Gabriel Shapiro - @lex-node
@dev
Expands upon the ERC20 token standard
https://theethereum.wiki/w/index.php/ERC20_Token_Standard
*/
contract NFToken is ERC20Interface {
using SafeMath for uint256;
using SafeMath64 for uint64;
uint256 constant MAX_UPPER_BOUND = (2**64) - 2;
address constant ZERO_ADDRESS = address(0);
/** depending on the intended totalSupply, you may wish to adjust this constant */
uint256 constant SCOPING_MULTIPLIER = 16;
/** cannot fractionalize non-fungibles */
uint8 public constant decimals = 0;
string public name;
string public symbol;
uint256 public totalSupply;
uint64 upperBound;
uint64[18446744073709551616] tokens;
mapping (uint64 => Range) rangeMap;
mapping (address => Balance) balances;
mapping (address => mapping (address => uint256)) allowed;
struct Balance {
uint64 balance;
uint64 length;
uint64[9223372036854775808] ranges;
}
struct Range {
address owner;
uint64 stop;
}
event Approval(address indexed owner, address indexed spender, uint256 amount);
event Transfer(address indexed from, address indexed to, uint256 amount);
event TransferRange(
address indexed from,
address indexed to,
uint256 start,
uint256 stop,
uint256 amount
);
/**
@notice constructor method
@param _name Token Name
@param _symbol Token symbol
@param _totalSupply Total supply (assigned to msg.sender)
*/
constructor(string memory _name, string memory _symbol, uint64 _totalSupply) public {
require(_totalSupply <= MAX_UPPER_BOUND);
name = _name;
symbol = _symbol;
if (_totalSupply == 0) return;
_setRange(1, msg.sender, _totalSupply+1);
balances[msg.sender].balance = _totalSupply;
balances[msg.sender].length = 1;
balances[msg.sender].ranges[0] = 1;
totalSupply = _totalSupply;
upperBound = _totalSupply;
emit Transfer(ZERO_ADDRESS, msg.sender, _totalSupply);
emit TransferRange(ZERO_ADDRESS, msg.sender, 1, _totalSupply+1, _totalSupply);
}
/* modifier to ensure a range index is within bounds */
function _checkBounds(uint256 _idx) internal view {
require(_idx != 0 && _idx <= upperBound); // dev: index out of bounds
}
/**
@notice ERC20 allowance standard
@param _owner Owner of the tokens
@param _spender Spender of the tokens
@return integer
*/
function allowance(
address _owner,
address _spender
)
external
view
returns (uint256)
{
return allowed[_owner][_spender];
}
/**
@notice ERC20 balanceOf standard
@param _owner Address of balance to query
@return integer
*/
function balanceOf(address _owner) external view returns (uint256) {
return balances[_owner].balance;
}
/**
@notice Fetch information about a range
@param _idx Token index number
@return owner, start of range, stop of range, time restriction, tag
*/
function getRange(
uint256 _idx
)
external
view
returns (
address _owner,
uint64 _start,
uint64 _stop
)
{
_checkBounds(_idx);
_start = _getPointer(_idx);
Range storage r = rangeMap[_start];
return (r.owner, _start, r.stop);
}
/**
@notice Fetch the token ranges owned by an address
@param _owner Address to query
@return Array of [(start, stop),..]
*/
function rangesOf(address _owner) external view returns (uint64[2][] memory) {
Balance storage b = balances[_owner];
uint64[2][] memory _ranges = new uint64[2][](balances[_owner].length);
for (uint256 i; i < balances[_owner].length; i++) {
_ranges[i] = [b.ranges[i], rangeMap[b.ranges[i]].stop];
}
return _ranges;
}
/**
@notice ERC20 approve standard
@param _spender Address approved to transfer tokens
@param _value Amount approved for transfer
@return bool success
*/
function approve(address _spender, uint256 _value) external returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
/**
@notice ERC20 transfer standard
@param _to Recipient
@param _value Amount being transferred
@return bool success
*/
function transfer(address _to, uint256 _value) external returns (bool) {
_transfer(msg.sender, _to, _value);
return true;
}
/**
@notice ERC20 transferFrom standard
@dev This will transfer tokens starting from balance.ranges[0]
@param _from Sender address
@param _to Recipient address
@param _value Number of tokens to send
@return bool success
*/
function transferFrom(
address _from,
address _to,
uint256 _value
)
external
returns (bool)
{
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
_transfer(_from, _to, _value);
return true;
}
/**
@notice transfer tokens with a specific index range
@param _to Recipient address
@param _start Transfer start index
@param _stop Transfer stop index
@return bool success
*/
function transferRange(
address _to,
uint64 _start,
uint64 _stop
)
external
returns (bool)
{
_checkBounds(_start);
_checkBounds(_stop.sub(1));
require(_start < _stop); // dev: stop < start
uint64 _pointer = _getPointer(_stop.sub(1));
require(_pointer <= _start); // dev: multiple ranges
uint64 _value = _stop.sub(_start);
require(msg.sender == rangeMap[_pointer].owner); // dev: sender does not own
balances[msg.sender].balance = balances[msg.sender].balance.sub(_value);
balances[_to].balance = balances[_to].balance.add(_value);
emit Transfer(msg.sender, _to, _value);
if (msg.sender != _to && _value > 0) {
_transferSingleRange(_pointer, msg.sender, _to, _start, _stop);
}
}
/**
@notice Internal transfer function
@dev common logic for transfer() and transferFrom()
@param _from Sender address
@param _to Receiver address
@param _bigValue Amount to transfer
*/
function _transfer(address _from, address _to, uint256 _bigValue) internal {
require(_bigValue <= MAX_UPPER_BOUND); // dev: uint64 overflow
uint64[9223372036854775808] storage r = balances[_from].ranges;
uint64 _value = uint64(_bigValue);
balances[_from].balance = balances[_from].balance.sub(_value);
balances[_to].balance = balances[_to].balance.add(_value);
emit Transfer(_from, _to, _bigValue);
if (_from == _to || _bigValue == 0) {
return;
}
while (balances[_from].length > 0) {
uint64 _start = r[0];
uint64 _stop = rangeMap[_start].stop;
uint64 _amount = _stop.sub(_start);
if (_value < _amount) {
_stop = _stop.sub(_amount.sub(_value));
_value = 0;
}
else {
_value = _value.sub(_amount);
}
_transferSingleRange(_start, _from, _to, _start, _stop);
if (_value == 0) {
return;
}
}
revert(); // dev: unreachable
}
/**
@notice internal - transfer ownership of a single range of tokens
@param _pointer Range array pointer
@param _from Sender address
@param _to Recipient address
@param _start Start index of range
@param _stop Stop index of range
*/
function _transferSingleRange(
uint64 _pointer,
address _from,
address _to,
uint64 _start,
uint64 _stop
)
internal
{
Range storage r = rangeMap[_pointer];
uint64 _rangeStop = r.stop;
uint64 _prev = tokens[_start.sub(1)];
emit TransferRange(_from, _to, _start, _stop, _stop-_start);
if (_pointer == _start) {
/* entire range is being transferred */
if (_rangeStop == _stop) {
_replaceInBalanceRange(_from, _start, 0);
bool _left = (rangeMap[_prev].owner == _to);
bool _right = (rangeMap[_stop].owner == _to);
/* no merges with surrounding ranges */
if (!_left && !_right) {
_replaceInBalanceRange(_to, 0, _start);
r.owner = _to;
return;
}
_setRangePointers(_pointer, _stop, 0);
/* merging with previous range */
if (!_right) {
delete rangeMap[_pointer];
rangeMap[_prev].stop = _stop;
_setRangePointers(_prev, _stop, _prev);
return;
}
/* merging with next range */
if (!_left) {
_replaceInBalanceRange(_to, _stop, _start);
_setRange(_pointer, _to, rangeMap[_stop].stop);
delete rangeMap[_stop];
return;
}
/* merging with both ranges */
_replaceInBalanceRange(_to, _stop, 0);
delete rangeMap[_pointer];
rangeMap[_prev].stop = rangeMap[_stop].stop;
_setRangePointers(_prev, _start, 0);
_setRangePointers(_stop, rangeMap[_stop].stop, 0);
_setRangePointers(_prev, rangeMap[_prev].stop, _prev);
delete rangeMap[_stop];
return;
}
/* range to transfer starts at beginning of existing range */
_setRangePointers(_start, _rangeStop, 0);
_setRange(_stop, _from, _rangeStop);
_replaceInBalanceRange(_from, _start, _stop);
delete rangeMap[_pointer];
/* merging with previous range */
if (rangeMap[_prev].owner == _to) {
_setRangePointers(_prev, _start, 0);
_start = _prev;
} else {
_replaceInBalanceRange(_to, 0, _start);
}
_setRange(_start, _to, _stop);
return;
}
/* shared logic - inside / ends at end */
_setRangePointers(_pointer, _rangeStop, 0);
r.stop = _start;
_setRangePointers(_pointer, _start, _pointer);
/* range to transfer ends at end of existing range */
if (_rangeStop == _stop) {
/* merging with next range */
if (rangeMap[_stop].owner == _to) {
_replaceInBalanceRange(_to, _stop, _start);
_setRangePointers(_stop, rangeMap[_stop].stop, 0);
uint64 _next = rangeMap[_stop].stop;
delete rangeMap[_stop];
_stop = _next;
} else {
_replaceInBalanceRange(_to, 0, _start);
}
_setRange(_start, _to, _stop);
return;
}
/* range to transfer is inside the existing range */
_replaceInBalanceRange(_to, 0, _start);
_setRange(_start, _to, _stop);
_replaceInBalanceRange(_from, 0, _stop);
_setRange(_stop, _from, _rangeStop);
}
/**
@notice sets a Range struct and associated pointers
@dev keeping this as a seperate method reduces gas costs from SSTORE
@param _pointer Range pointer to set
@param _owner Address of range owner
@param _stop Range stop index
*/
function _setRange(uint64 _pointer, address _owner, uint64 _stop) internal {
Range storage r = rangeMap[_pointer];
if (r.owner != _owner) r.owner = _owner;
if (r.stop != _stop) r.stop = _stop;
_setRangePointers(_pointer, _stop, _pointer);
}
/**
@notice modifies the balance range array
@param _addr Balance address
@param _old Token index to remove
@param _new Token index to add
*/
function _replaceInBalanceRange(
address _addr,
uint64 _old,
uint64 _new
)
internal
{
uint64[9223372036854775808] storage r = balances[_addr].ranges;
if (_old == 0) {
// add a new range to the array
r[balances[_addr].length] = _new;
balances[_addr].length = balances[_addr].length.add(1);
return;
}
for (uint256 i; i <= balances[_addr].length; i++) {
if (r[i] == _old) {
if (_new > 0) {
// replace an existing range
r[i] = _new;
} else {
// delete an existing range
balances[_addr].length = balances[_addr].length.sub(1);
r[i] = r[balances[_addr].length];
}
return;
}
}
revert(); // dev: unreachable
}
/**
@notice Modify pointers in the token range
@param _start Start index of range
@param _stop Stop index of range
@param _value Pointer value
*/
function _setRangePointers(uint64 _start, uint64 _stop, uint64 _value) internal {
_stop = _stop.sub(1);
if (_start == _stop) {
tokens[_start] = _value;
return;
}
tokens[_stop] = _value;
uint256 _interval = SCOPING_MULTIPLIER;
while (true) {
if (_stop < _interval) return;
uint256 i = uint256(_stop).div(_interval).mul(_interval);
_interval = _interval.mul(SCOPING_MULTIPLIER);
if (i.mod(_interval) == 0) continue;
if (i > _start) tokens[i] = _value;
}
}
/**
@notice Find an array range pointer
@dev
Given a token index, this will iterate through the range
and return the mapping pointer that the index is present within.
@param _idx Token index
*/
function _getPointer(uint256 _idx) internal view returns (uint64) {
uint256 _increment = 1;
while (true) {
if (tokens[_idx] != 0) return tokens[_idx];
if (_idx.mod(_increment.mul(SCOPING_MULTIPLIER)) == 0) {
_increment = _increment.mul(SCOPING_MULTIPLIER);
require(_idx <= upperBound); // dev: exceeds upper bound
}
_idx = _idx.add(_increment);
}
}
}
pragma solidity 0.5.16;
import "./NFToken.sol";
/**
@title Mintable/Burnable Non-Fungible ERC20
@author Ben Hauser - @iamdefinitelyahuman
@author with guidance from Gabriel Shapiro - @lex-node
@dev
Expands upon the ERC20 token standard
https://theethereum.wiki/w/index.php/ERC20_Token_Standard
*/
contract NFTokenMintable is NFToken {
address owner;
/**
@notice constructor method
@param _name Token Name
@param _symbol Token symbol
@param _totalSupply Total supply (assigned to msg.sender)
*/
constructor(
string memory _name,
string memory _symbol,
uint64 _totalSupply
)
public
NFToken(_name, _symbol, _totalSupply)
{
owner = msg.sender;
}
/**
@notice Mints new tokens
@dev Only the owner can mint tokens
@param _target Address to assign new tokens to
@param _value Number of tokens to mint
@return Bool success
*/
function mint(address _target, uint64 _value) external returns (bool) {
require(msg.sender == owner); // dev: only owner
require(_value > 0); // dev: mint 0
require(upperBound.add(_value) <= MAX_UPPER_BOUND); // dev: upper bound
uint64 _start = upperBound.add(1);
uint64 _stop = _start + _value;
if (rangeMap[tokens[upperBound]].owner == _target) {
/* merge with previous range */
uint64 _pointer = tokens[upperBound];
rangeMap[_pointer].stop = _stop;
} else {
/* create new range */
_setRange(_start, _target, _stop);
balances[_target].ranges[balances[_target].length] = _start;
balances[_target].length = balances[_target].length.add(1);
}
balances[_target].balance = balances[_target].balance.add(_value);
totalSupply = totalSupply.add(_value);
upperBound = upperBound.add(_value);
emit Transfer(ZERO_ADDRESS, _target, _value);
emit TransferRange(ZERO_ADDRESS, _target, _start, _stop, _value);
return true;
}
/**
@notice Burns tokens
@dev
* Only the owner can burn tokens
* Only tokens held by the owner can be burned
* Cannot burn multiple ranges in a single call
@param _start Start index of range to burn
@param _stop Stop index of range to burn
@return Bool success
*/
function burn(uint64 _start, uint64 _stop) external returns (bool) {
require(msg.sender == owner); // dev: only owner
require(_stop > _start); // dev: burn 0
uint64 _pointer = _getPointer(_stop-1);
require(_pointer <= _start); // dev: multiple ranges
address _target = rangeMap[_pointer].owner;
require(_target == owner); // dev: only owner tokens
if (rangeMap[_pointer].stop > _stop) {
_splitRange(_stop);
}
if (_pointer < _start) {
_splitRange(_start);
}
_replaceInBalanceRange(_target, _start, 0);
uint64 _value = _stop.sub(_start);
totalSupply = totalSupply.sub(_value);
balances[_target].balance = balances[_target].balance.sub(_value);
emit Transfer(_target, ZERO_ADDRESS, _value);
emit TransferRange(_target, ZERO_ADDRESS, _start, _stop, _value);
rangeMap[_start].owner = ZERO_ADDRESS;
return true;
}
/**
@notice Splits a range during burning
@param _split Index to split the range at
*/
function _splitRange(uint64 _split) internal {
uint64 _pointer = _getPointer(_split);
Range storage r = rangeMap[_pointer];
uint64 _stop = r.stop;
r.stop = _split;
_replaceInBalanceRange(r.owner, 0, _split);
_setRangePointers(_pointer, _stop, 0);
_setRangePointers(_pointer, _split, _pointer);
_setRange(_split, r.owner, _stop);
}
}
pragma solidity ^0.5.11;
library SafeMath {
function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
if (_a == 0) {
return 0;
}
uint256 c = _a * _b;
require(c / _a == _b);
return c;
}
function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
require(_b > 0);
uint256 c = _a / _b;
return c;
}
function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
require(_b <= _a); // dev: underflow
uint256 c = _a - _b;
return c;
}
function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
uint256 c = _a + _b;
require(c >= _a); // dev: overflow
return c;
}
function mod(uint256 _a, uint256 _b) internal pure returns (uint256) {
require(_b != 0);
return _a % _b;
}
}
library SafeMath64 {
function mul(uint64 _a, uint64 _b) internal pure returns (uint64) {
if (_a == 0) {
return 0;
}
uint64 c = _a * _b;
require(c / _a == _b);
return c;
}
function div(uint64 _a, uint64 _b) internal pure returns (uint64) {
require(_b > 0);
uint64 c = _a / _b;
return c;
}
function sub(uint64 _a, uint64 _b) internal pure returns (uint64) {
require(_b <= _a); // dev: underflow
uint64 c = _a - _b;
return c;
}
function add(uint64 _a, uint64 _b) internal pure returns (uint64) {
uint64 c = _a + _b;
require(c >= _a); // dev: overflow
return c;
}
function mod(uint64 _a, uint64 _b) internal pure returns (uint64) {
require(_b != 0);
return _a % _b;
}
}
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithWeb3 script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
const accounts = await web3.eth.getAccounts()
let contract = new web3.eth.Contract(metadata.abi)
contract = contract.deploy({
data: metadata.data.bytecode.object,
arguments: constructorArgs
})
const newContractInstance = await contract.send({
from: accounts[0],
gas: 1500000,
gasPrice: '30000000000'
})
console.log('Contract deployed at address: ', newContractInstance.options.address)
} catch (e) {
console.log(e.message)
}
})()
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
import "../contracts/3_Ballot.sol";
contract BallotTest {
bytes32[] proposalNames;
Ballot ballotToTest;
function beforeAll () public {
proposalNames.push(bytes32("candidate1"));
ballotToTest = new Ballot(proposalNames);
}
function checkWinningProposal () public {
ballotToTest.vote(0);
Assert.equal(ballotToTest.winningProposal(), uint(0), "proposal at index 0 should be the winning proposal");
Assert.equal(ballotToTest.winnerName(), bytes32("candidate1"), "candidate1 should be the winner name");
}
function checkWinninProposalWithReturnValue () public view returns (bool) {
return ballotToTest.winningProposal() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment